From 9b1d2f869bb0b1e3336012beda51fe58bbccb08e Mon Sep 17 00:00:00 2001 From: lutovich Date: Thu, 16 Mar 2017 14:44:07 +0100 Subject: [PATCH] JS driver v1.2.0-rc1: Checking in transpiled files for bower --- lib/browser/neo4j-web.js | 321 ++++++++++++++++++---------- lib/browser/neo4j-web.min.js | 24 +-- lib/browser/neo4j-web.test.js | 381 +++++++++++++++++++++------------- lib/v1/session.js | 4 +- 4 files changed, 462 insertions(+), 268 deletions(-) diff --git a/lib/browser/neo4j-web.js b/lib/browser/neo4j-web.js index 14e151587..41dad4203 100644 --- a/lib/browser/neo4j-web.js +++ b/lib/browser/neo4j-web.js @@ -72,7 +72,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":1,"inherits":223,"vm":269}],3:[function(require,module,exports){ +},{"../asn1":1,"inherits":223,"vm":270}],3:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -6776,7 +6776,7 @@ function getr(priv) { } }).call(this,require("buffer").Buffer) -},{"bn.js":36,"buffer":66,"randombytes":245}],58:[function(require,module,exports){ +},{"bn.js":36,"buffer":66,"randombytes":246}],58:[function(require,module,exports){ (function (Buffer){ 'use strict' exports['RSA-SHA224'] = exports.sha224WithRSAEncryption = { @@ -6959,7 +6959,7 @@ module.exports = { } }).call(this,require("buffer").Buffer) -},{"./algos":58,"./sign":61,"./verify":62,"buffer":66,"create-hash":181,"inherits":223,"stream":266}],60:[function(require,module,exports){ +},{"./algos":58,"./sign":61,"./verify":62,"buffer":66,"create-hash":181,"inherits":223,"stream":267}],60:[function(require,module,exports){ 'use strict' exports['1.3.132.0.10'] = 'secp256k1' @@ -7162,7 +7162,7 @@ module.exports.getKey = getKey module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":60,"bn.js":36,"browserify-rsa":57,"buffer":66,"create-hmac":184,"elliptic":196,"parse-asn1":233}],62:[function(require,module,exports){ +},{"./curves":60,"bn.js":36,"browserify-rsa":57,"buffer":66,"create-hmac":184,"elliptic":196,"parse-asn1":234}],62:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var curves = require('./curves') @@ -7269,7 +7269,7 @@ function checkValue (b, q) { module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":60,"bn.js":36,"buffer":66,"elliptic":196,"parse-asn1":233}],63:[function(require,module,exports){ +},{"./curves":60,"bn.js":36,"buffer":66,"elliptic":196,"parse-asn1":234}],63:[function(require,module,exports){ arguments[4][38][0].apply(exports,arguments) },{"dup":38}],64:[function(require,module,exports){ (function (global){ @@ -9284,7 +9284,7 @@ CipherBase.prototype._toString = function (value, enc, fin) { } }).call(this,require("buffer").Buffer) -},{"buffer":66,"inherits":223,"stream":266,"string_decoder":267}],68:[function(require,module,exports){ +},{"buffer":66,"inherits":223,"stream":267,"string_decoder":268}],68:[function(require,module,exports){ require('../../modules/es6.string.iterator'); require('../../modules/es6.array.from'); module.exports = require('../../modules/_core').Array.from; @@ -11693,7 +11693,7 @@ module.exports = function createHash (alg) { } }).call(this,require("buffer").Buffer) -},{"./md5":183,"buffer":66,"cipher-base":67,"inherits":223,"ripemd160":257,"sha.js":259}],182:[function(require,module,exports){ +},{"./md5":183,"buffer":66,"cipher-base":67,"inherits":223,"ripemd160":258,"sha.js":260}],182:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -11959,7 +11959,7 @@ module.exports = function createHmac(alg, key) { } }).call(this,require("buffer").Buffer) -},{"buffer":66,"create-hash/browser":181,"inherits":223,"stream":266}],185:[function(require,module,exports){ +},{"buffer":66,"create-hash/browser":181,"inherits":223,"stream":267}],185:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -12038,7 +12038,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":54,"browserify-sign":59,"browserify-sign/algos":58,"create-ecdh":180,"create-hash":181,"create-hmac":184,"diffie-hellman":192,"pbkdf2":235,"public-encrypt":239,"randombytes":245}],186:[function(require,module,exports){ +},{"browserify-cipher":54,"browserify-sign":59,"browserify-sign/algos":58,"create-ecdh":180,"create-hash":181,"create-hmac":184,"diffie-hellman":192,"pbkdf2":236,"public-encrypt":240,"randombytes":246}],186:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -12931,7 +12931,7 @@ function formatReturnValue(bn, enc) { } }).call(this,require("buffer").Buffer) -},{"./generatePrime":194,"bn.js":36,"buffer":66,"miller-rabin":226,"randombytes":245}],194:[function(require,module,exports){ +},{"./generatePrime":194,"bn.js":36,"buffer":66,"miller-rabin":226,"randombytes":246}],194:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -13038,7 +13038,7 @@ function findPrime(bits, gen) { } -},{"bn.js":36,"miller-rabin":226,"randombytes":245}],195:[function(require,module,exports){ +},{"bn.js":36,"miller-rabin":226,"randombytes":246}],195:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -19080,9 +19080,12 @@ module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", },{}],231:[function(require,module,exports){ // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js // Fedor, you are amazing. +'use strict' var asn1 = require('asn1.js') +exports.certificate = require('./certificate') + var RSAPrivateKey = asn1.define('RSAPrivateKey', function () { this.seq().obj( this.key('version').int(), @@ -19174,6 +19177,7 @@ exports.DSAPrivateKey = DSAPrivateKey exports.DSAparam = asn1.define('DSAparam', function () { this.int() }) + var ECPrivateKey = asn1.define('ECPrivateKey', function () { this.seq().obj( this.key('version').int(), @@ -19183,6 +19187,7 @@ var ECPrivateKey = asn1.define('ECPrivateKey', function () { ) }) exports.ECPrivateKey = ECPrivateKey + var ECParameters = asn1.define('ECParameters', function () { this.choice({ namedCurve: this.objid() @@ -19196,12 +19201,102 @@ exports.signature = asn1.define('signature', function () { ) }) -},{"asn1.js":1}],232:[function(require,module,exports){ +},{"./certificate":232,"asn1.js":1}],232:[function(require,module,exports){ +// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js +// thanks to @Rantanen + +'use strict' + +var asn = require('asn1.js') + +var Time = asn.define('Time', function () { + this.choice({ + utcTime: this.utctime(), + generalTime: this.gentime() + }) +}) + +var AttributeTypeValue = asn.define('AttributeTypeValue', function () { + this.seq().obj( + this.key('type').objid(), + this.key('value').any() + ) +}) + +var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () { + this.seq().obj( + this.key('algorithm').objid(), + this.key('parameters').optional() + ) +}) + +var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () { + this.seq().obj( + this.key('algorithm').use(AlgorithmIdentifier), + this.key('subjectPublicKey').bitstr() + ) +}) + +var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () { + this.setof(AttributeTypeValue) +}) + +var RDNSequence = asn.define('RDNSequence', function () { + this.seqof(RelativeDistinguishedName) +}) + +var Name = asn.define('Name', function () { + this.choice({ + rdnSequence: this.use(RDNSequence) + }) +}) + +var Validity = asn.define('Validity', function () { + this.seq().obj( + this.key('notBefore').use(Time), + this.key('notAfter').use(Time) + ) +}) + +var Extension = asn.define('Extension', function () { + this.seq().obj( + this.key('extnID').objid(), + this.key('critical').bool().def(false), + this.key('extnValue').octstr() + ) +}) + +var TBSCertificate = asn.define('TBSCertificate', function () { + this.seq().obj( + this.key('version').explicit(0).int(), + this.key('serialNumber').int(), + this.key('signature').use(AlgorithmIdentifier), + this.key('issuer').use(Name), + this.key('validity').use(Validity), + this.key('subject').use(Name), + this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), + this.key('issuerUniqueID').implicit(1).bitstr().optional(), + this.key('subjectUniqueID').implicit(2).bitstr().optional(), + this.key('extensions').explicit(3).seqof(Extension).optional() + ) +}) + +var X509Certificate = asn.define('X509Certificate', function () { + this.seq().obj( + this.key('tbsCertificate').use(TBSCertificate), + this.key('signatureAlgorithm').use(AlgorithmIdentifier), + this.key('signatureValue').bitstr() + ) +}) + +module.exports = X509Certificate + +},{"asn1.js":1}],233:[function(require,module,exports){ (function (Buffer){ // adapted from https://github.com/apatil/pemstrip -var findProc = /Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m -var startRegex = /^-----BEGIN (.*) KEY-----\r?\n/m -var fullRegex = /^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m +var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m +var startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n/m +var fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?-----END \1-----$/m var evp = require('evp_bytestokey') var ciphers = require('browserify-aes') module.exports = function (okey, password) { @@ -19222,7 +19317,7 @@ module.exports = function (okey, password) { out.push(cipher.final()) decrypted = Buffer.concat(out) } - var tag = key.match(startRegex)[1] + ' KEY' + var tag = key.match(startRegex)[1] return { tag: tag, data: decrypted @@ -19230,7 +19325,7 @@ module.exports = function (okey, password) { } }).call(this,require("buffer").Buffer) -},{"browserify-aes":41,"buffer":66,"evp_bytestokey":213}],233:[function(require,module,exports){ +},{"browserify-aes":41,"buffer":66,"evp_bytestokey":213}],234:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -19255,8 +19350,13 @@ function parseKeys (buffer) { var data = stripped.data var subtype, ndata switch (type) { + case 'CERTIFICATE': + ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo + // falls through case 'PUBLIC KEY': - ndata = asn1.PublicKey.decode(data, 'der') + if (!ndata) { + ndata = asn1.PublicKey.decode(data, 'der') + } subtype = ndata.algorithm.algorithm.join('.') switch (subtype) { case '1.2.840.113549.1.1.1': @@ -19335,7 +19435,7 @@ function decrypt (data, password) { } }).call(this,require("buffer").Buffer) -},{"./aesid.json":230,"./asn1":231,"./fixProc":232,"browserify-aes":41,"buffer":66,"pbkdf2":235}],234:[function(require,module,exports){ +},{"./aesid.json":230,"./asn1":231,"./fixProc":233,"browserify-aes":41,"buffer":66,"pbkdf2":236}],235:[function(require,module,exports){ (function (process){ // Copyright Joyent, Inc. and other Node contributors. // @@ -19563,7 +19663,7 @@ var substr = 'ab'.substr(-1) === 'b' ; }).call(this,require('_process')) -},{"_process":238}],235:[function(require,module,exports){ +},{"_process":239}],236:[function(require,module,exports){ (function (process,Buffer){ var createHmac = require('create-hmac') var checkParameters = require('./precondition') @@ -19635,7 +19735,7 @@ exports.pbkdf2Sync = function (password, salt, iterations, keylen, digest) { } }).call(this,require('_process'),require("buffer").Buffer) -},{"./precondition":236,"_process":238,"buffer":66,"create-hmac":184}],236:[function(require,module,exports){ +},{"./precondition":237,"_process":239,"buffer":66,"create-hmac":184}],237:[function(require,module,exports){ var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs module.exports = function (iterations, keylen) { if (typeof iterations !== 'number') { @@ -19655,7 +19755,7 @@ module.exports = function (iterations, keylen) { } } -},{}],237:[function(require,module,exports){ +},{}],238:[function(require,module,exports){ (function (process){ 'use strict'; @@ -19702,7 +19802,7 @@ function nextTick(fn, arg1, arg2, arg3) { } }).call(this,require('_process')) -},{"_process":238}],238:[function(require,module,exports){ +},{"_process":239}],239:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -19884,7 +19984,7 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],239:[function(require,module,exports){ +},{}],240:[function(require,module,exports){ exports.publicEncrypt = require('./publicEncrypt'); exports.privateDecrypt = require('./privateDecrypt'); @@ -19895,7 +19995,7 @@ exports.privateEncrypt = function privateEncrypt(key, buf) { exports.publicDecrypt = function publicDecrypt(key, buf) { return exports.privateDecrypt(key, buf, true); }; -},{"./privateDecrypt":241,"./publicEncrypt":242}],240:[function(require,module,exports){ +},{"./privateDecrypt":242,"./publicEncrypt":243}],241:[function(require,module,exports){ (function (Buffer){ var createHash = require('create-hash'); module.exports = function (seed, len) { @@ -19914,7 +20014,7 @@ function i2ops(c) { return out; } }).call(this,require("buffer").Buffer) -},{"buffer":66,"create-hash":181}],241:[function(require,module,exports){ +},{"buffer":66,"create-hash":181}],242:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -20025,7 +20125,7 @@ function compare(a, b){ return dif; } }).call(this,require("buffer").Buffer) -},{"./mgf":240,"./withPublic":243,"./xor":244,"bn.js":36,"browserify-rsa":57,"buffer":66,"create-hash":181,"parse-asn1":233}],242:[function(require,module,exports){ +},{"./mgf":241,"./withPublic":244,"./xor":245,"bn.js":36,"browserify-rsa":57,"buffer":66,"create-hash":181,"parse-asn1":234}],243:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -20123,7 +20223,7 @@ function nonZero(len, crypto) { return out; } }).call(this,require("buffer").Buffer) -},{"./mgf":240,"./withPublic":243,"./xor":244,"bn.js":36,"browserify-rsa":57,"buffer":66,"create-hash":181,"parse-asn1":233,"randombytes":245}],243:[function(require,module,exports){ +},{"./mgf":241,"./withPublic":244,"./xor":245,"bn.js":36,"browserify-rsa":57,"buffer":66,"create-hash":181,"parse-asn1":234,"randombytes":246}],244:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -20136,7 +20236,7 @@ function withPublic(paddedMsg, key) { module.exports = withPublic; }).call(this,require("buffer").Buffer) -},{"bn.js":36,"buffer":66}],244:[function(require,module,exports){ +},{"bn.js":36,"buffer":66}],245:[function(require,module,exports){ module.exports = function xor(a, b) { var len = a.length; var i = -1; @@ -20145,7 +20245,7 @@ module.exports = function xor(a, b) { } return a }; -},{}],245:[function(require,module,exports){ +},{}],246:[function(require,module,exports){ (function (process,global,Buffer){ 'use strict' @@ -20185,10 +20285,10 @@ function randomBytes (size, cb) { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"_process":238,"buffer":66}],246:[function(require,module,exports){ +},{"_process":239,"buffer":66}],247:[function(require,module,exports){ module.exports = require("./lib/_stream_duplex.js") -},{"./lib/_stream_duplex.js":247}],247:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":248}],248:[function(require,module,exports){ // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from @@ -20264,7 +20364,7 @@ function forEach(xs, f) { f(xs[i], i); } } -},{"./_stream_readable":249,"./_stream_writable":251,"core-util-is":179,"inherits":223,"process-nextick-args":237}],248:[function(require,module,exports){ +},{"./_stream_readable":250,"./_stream_writable":252,"core-util-is":179,"inherits":223,"process-nextick-args":238}],249:[function(require,module,exports){ // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. @@ -20291,7 +20391,7 @@ function PassThrough(options) { PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; -},{"./_stream_transform":250,"core-util-is":179,"inherits":223}],249:[function(require,module,exports){ +},{"./_stream_transform":251,"core-util-is":179,"inherits":223}],250:[function(require,module,exports){ (function (process){ 'use strict'; @@ -20387,7 +20487,7 @@ function ReadableState(options, stream) { this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + this.highWaterMark = ~~this.highWaterMark; // A linked list is used to store data chunks instead of an array because the // linked list can remove elements from the beginning faster than @@ -21235,7 +21335,7 @@ function indexOf(xs, x) { return -1; } }).call(this,require('_process')) -},{"./_stream_duplex":247,"./internal/streams/BufferList":252,"_process":238,"buffer":66,"buffer-shims":64,"core-util-is":179,"events":212,"inherits":223,"isarray":225,"process-nextick-args":237,"string_decoder/":267,"util":38}],250:[function(require,module,exports){ +},{"./_stream_duplex":248,"./internal/streams/BufferList":253,"_process":239,"buffer":66,"buffer-shims":64,"core-util-is":179,"events":212,"inherits":223,"isarray":225,"process-nextick-args":238,"string_decoder/":268,"util":38}],251:[function(require,module,exports){ // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -21418,7 +21518,7 @@ function done(stream, er, data) { return stream.push(null); } -},{"./_stream_duplex":247,"core-util-is":179,"inherits":223}],251:[function(require,module,exports){ +},{"./_stream_duplex":248,"core-util-is":179,"inherits":223}],252:[function(require,module,exports){ (function (process){ // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all @@ -21499,7 +21599,7 @@ function WritableState(options, stream) { this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + this.highWaterMark = ~~this.highWaterMark; // drain event flag. this.needDrain = false; @@ -21654,20 +21754,16 @@ function writeAfterEnd(stream, cb) { processNextTick(cb, er); } -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. function validChunk(stream, state, chunk, cb) { var valid = true; var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. + if (chunk === null) { er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { er = new TypeError('Invalid non-string/buffer chunk'); } if (er) { @@ -21681,19 +21777,20 @@ function validChunk(stream, state, chunk, cb) { Writable.prototype.write = function (chunk, encoding, cb) { var state = this._writableState; var ret = false; + var isBuf = Buffer.isBuffer(chunk); if (typeof encoding === 'function') { cb = encoding; encoding = null; } - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; if (typeof cb !== 'function') cb = nop; - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); } return ret; @@ -21733,10 +21830,11 @@ function decodeChunk(state, chunk, encoding) { // if we're already writing something, then just put this // in the queue, and wait our turn. Otherwise, call _write // If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + chunk = decodeChunk(state, chunk, encoding); + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + } var len = state.objectMode ? 1 : chunk.length; state.length += len; @@ -21805,8 +21903,8 @@ function onwrite(stream, er) { asyncWrite(afterWrite, stream, state, finished, cb); /**/ } else { - afterWrite(stream, state, finished, cb); - } + afterWrite(stream, state, finished, cb); + } } } @@ -21957,7 +22055,6 @@ function CorkedRequest(state) { this.next = null; this.entry = null; - this.finish = function (err) { var entry = _this.entry; _this.entry = null; @@ -21975,7 +22072,7 @@ function CorkedRequest(state) { }; } }).call(this,require('_process')) -},{"./_stream_duplex":247,"_process":238,"buffer":66,"buffer-shims":64,"core-util-is":179,"events":212,"inherits":223,"process-nextick-args":237,"util-deprecate":268}],252:[function(require,module,exports){ +},{"./_stream_duplex":248,"_process":239,"buffer":66,"buffer-shims":64,"core-util-is":179,"events":212,"inherits":223,"process-nextick-args":238,"util-deprecate":269}],253:[function(require,module,exports){ 'use strict'; var Buffer = require('buffer').Buffer; @@ -22040,10 +22137,10 @@ BufferList.prototype.concat = function (n) { } return ret; }; -},{"buffer":66,"buffer-shims":64}],253:[function(require,module,exports){ +},{"buffer":66,"buffer-shims":64}],254:[function(require,module,exports){ module.exports = require("./lib/_stream_passthrough.js") -},{"./lib/_stream_passthrough.js":248}],254:[function(require,module,exports){ +},{"./lib/_stream_passthrough.js":249}],255:[function(require,module,exports){ (function (process){ var Stream = (function (){ try { @@ -22063,13 +22160,13 @@ if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { } }).call(this,require('_process')) -},{"./lib/_stream_duplex.js":247,"./lib/_stream_passthrough.js":248,"./lib/_stream_readable.js":249,"./lib/_stream_transform.js":250,"./lib/_stream_writable.js":251,"_process":238}],255:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":248,"./lib/_stream_passthrough.js":249,"./lib/_stream_readable.js":250,"./lib/_stream_transform.js":251,"./lib/_stream_writable.js":252,"_process":239}],256:[function(require,module,exports){ module.exports = require("./lib/_stream_transform.js") -},{"./lib/_stream_transform.js":250}],256:[function(require,module,exports){ +},{"./lib/_stream_transform.js":251}],257:[function(require,module,exports){ module.exports = require("./lib/_stream_writable.js") -},{"./lib/_stream_writable.js":251}],257:[function(require,module,exports){ +},{"./lib/_stream_writable.js":252}],258:[function(require,module,exports){ (function (Buffer){ /* CryptoJS v3.1.2 @@ -22283,7 +22380,7 @@ function ripemd160 (message) { module.exports = ripemd160 }).call(this,require("buffer").Buffer) -},{"buffer":66}],258:[function(require,module,exports){ +},{"buffer":66}],259:[function(require,module,exports){ (function (Buffer){ // prototype class for hash functions function Hash (blockSize, finalSize) { @@ -22356,7 +22453,7 @@ Hash.prototype._update = function () { module.exports = Hash }).call(this,require("buffer").Buffer) -},{"buffer":66}],259:[function(require,module,exports){ +},{"buffer":66}],260:[function(require,module,exports){ var exports = module.exports = function SHA (algorithm) { algorithm = algorithm.toLowerCase() @@ -22373,7 +22470,7 @@ exports.sha256 = require('./sha256') exports.sha384 = require('./sha384') exports.sha512 = require('./sha512') -},{"./sha":260,"./sha1":261,"./sha224":262,"./sha256":263,"./sha384":264,"./sha512":265}],260:[function(require,module,exports){ +},{"./sha":261,"./sha1":262,"./sha224":263,"./sha256":264,"./sha384":265,"./sha512":266}],261:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined @@ -22470,7 +22567,7 @@ Sha.prototype._hash = function () { module.exports = Sha }).call(this,require("buffer").Buffer) -},{"./hash":258,"buffer":66,"inherits":223}],261:[function(require,module,exports){ +},{"./hash":259,"buffer":66,"inherits":223}],262:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined @@ -22572,7 +22669,7 @@ Sha1.prototype._hash = function () { module.exports = Sha1 }).call(this,require("buffer").Buffer) -},{"./hash":258,"buffer":66,"inherits":223}],262:[function(require,module,exports){ +},{"./hash":259,"buffer":66,"inherits":223}],263:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -22628,7 +22725,7 @@ Sha224.prototype._hash = function () { module.exports = Sha224 }).call(this,require("buffer").Buffer) -},{"./hash":258,"./sha256":263,"buffer":66,"inherits":223}],263:[function(require,module,exports){ +},{"./hash":259,"./sha256":264,"buffer":66,"inherits":223}],264:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -22766,7 +22863,7 @@ Sha256.prototype._hash = function () { module.exports = Sha256 }).call(this,require("buffer").Buffer) -},{"./hash":258,"buffer":66,"inherits":223}],264:[function(require,module,exports){ +},{"./hash":259,"buffer":66,"inherits":223}],265:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var SHA512 = require('./sha512') @@ -22826,7 +22923,7 @@ Sha384.prototype._hash = function () { module.exports = Sha384 }).call(this,require("buffer").Buffer) -},{"./hash":258,"./sha512":265,"buffer":66,"inherits":223}],265:[function(require,module,exports){ +},{"./hash":259,"./sha512":266,"buffer":66,"inherits":223}],266:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var Hash = require('./hash') @@ -23089,7 +23186,7 @@ Sha512.prototype._hash = function () { module.exports = Sha512 }).call(this,require("buffer").Buffer) -},{"./hash":258,"buffer":66,"inherits":223}],266:[function(require,module,exports){ +},{"./hash":259,"buffer":66,"inherits":223}],267:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -23218,7 +23315,7 @@ Stream.prototype.pipe = function(dest, options) { return dest; }; -},{"events":212,"inherits":223,"readable-stream/duplex.js":246,"readable-stream/passthrough.js":253,"readable-stream/readable.js":254,"readable-stream/transform.js":255,"readable-stream/writable.js":256}],267:[function(require,module,exports){ +},{"events":212,"inherits":223,"readable-stream/duplex.js":247,"readable-stream/passthrough.js":254,"readable-stream/readable.js":255,"readable-stream/transform.js":256,"readable-stream/writable.js":257}],268:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -23441,7 +23538,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":66}],268:[function(require,module,exports){ +},{"buffer":66}],269:[function(require,module,exports){ (function (global){ /** @@ -23512,7 +23609,7 @@ function config (name) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],269:[function(require,module,exports){ +},{}],270:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -23652,7 +23749,7 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":222}],270:[function(require,module,exports){ +},{"indexof":222}],271:[function(require,module,exports){ // This is free and unencumbered software released into the public domain. // See LICENSE.md for more information. @@ -23663,7 +23760,7 @@ module.exports = { TextDecoder: encoding.TextDecoder, }; -},{"./lib/encoding.js":272}],271:[function(require,module,exports){ +},{"./lib/encoding.js":273}],272:[function(require,module,exports){ (function(global) { 'use strict'; global["encoding-indexes"] = { @@ -23703,7 +23800,7 @@ module.exports = { }; }(this)); -},{}],272:[function(require,module,exports){ +},{}],273:[function(require,module,exports){ // This is free and unencumbered software released into the public domain. // See LICENSE.md for more information. @@ -26800,7 +26897,7 @@ if (typeof module !== "undefined" && module.exports) { global['TextDecoder'] = TextDecoder; }(this)); -},{"./encoding-indexes.js":271}],273:[function(require,module,exports){ +},{"./encoding-indexes.js":272}],274:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -26835,7 +26932,7 @@ exports.v1 = v1; /** exports.default = v1; -},{"./v1/index":277}],274:[function(require,module,exports){ +},{"./v1/index":278}],275:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27118,7 +27215,7 @@ exports.READ = READ; exports.WRITE = WRITE; exports.default = Driver; -},{"./error":275,"./internal/connection-providers":284,"./internal/connector":285,"./internal/pool":289,"./internal/stream-observer":293,"./session":301,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],275:[function(require,module,exports){ +},{"./error":276,"./internal/connection-providers":285,"./internal/connector":286,"./internal/pool":290,"./internal/stream-observer":294,"./session":302,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],276:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27201,7 +27298,7 @@ exports.SERVICE_UNAVAILABLE = SERVICE_UNAVAILABLE; exports.SESSION_EXPIRED = SESSION_EXPIRED; exports.PROTOCOL_ERROR = PROTOCOL_ERROR; -},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],276:[function(require,module,exports){ +},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],277:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -27432,7 +27529,7 @@ exports.UnboundRelationship = UnboundRelationship; exports.Path = Path; exports.PathSegment = PathSegment; -},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],277:[function(require,module,exports){ +},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],278:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -27646,7 +27743,7 @@ exports.session = session; exports.error = error; exports.default = forExport; -},{"../version":303,"./driver":274,"./error":275,"./graph-types":276,"./integer":278,"./internal/connector":285,"./internal/util":296,"./record":297,"./result":299,"./result-summary":298,"./routing-driver":300}],278:[function(require,module,exports){ +},{"../version":304,"./driver":275,"./error":276,"./graph-types":277,"./integer":279,"./internal/connector":286,"./internal/util":297,"./record":298,"./result":300,"./result-summary":299,"./routing-driver":301}],279:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -28627,7 +28724,7 @@ exports.toNumber = toNumber; exports.toString = toString; exports.default = Integer; -},{"./error":275,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],279:[function(require,module,exports){ +},{"./error":276,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],280:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -29415,7 +29512,7 @@ exports.CombinedBuffer = CombinedBuffer; exports.NodeBuffer = NodeBuffer; exports.alloc = alloc; -},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"buffer":66}],280:[function(require,module,exports){ +},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"buffer":66}],281:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -29812,7 +29909,7 @@ try { exports.default = _nodeChannelModule; -},{"./../error":275,"./buf":279,"./util":296,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"crypto":185,"fs":63,"net":63,"os":229,"path":234,"readline":63,"tls":63}],281:[function(require,module,exports){ +},{"./../error":276,"./buf":280,"./util":297,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"crypto":185,"fs":63,"net":63,"os":229,"path":235,"readline":63,"tls":63}],282:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -29977,7 +30074,7 @@ var _websocketChannelModule = { channel: WebSocketChannel, available: available exports.default = _websocketChannelModule; -},{"./../error":275,"./buf":279,"./util":296,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],282:[function(require,module,exports){ +},{"./../error":276,"./buf":280,"./util":297,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],283:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -30244,7 +30341,7 @@ var Dechunker = function () { exports.Chunker = Chunker; exports.Dechunker = Dechunker; -},{"./buf":279,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],283:[function(require,module,exports){ +},{"./buf":280,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],284:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -30450,7 +30547,7 @@ var EmptyConnectionHolder = function (_ConnectionHolder) { var EMPTY_CONNECTION_HOLDER = exports.EMPTY_CONNECTION_HOLDER = new EmptyConnectionHolder(); -},{"../error":275,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],284:[function(require,module,exports){ +},{"../error":276,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],285:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -30734,7 +30831,7 @@ var SingleConnectionProvider = exports.SingleConnectionProvider = function (_Con return SingleConnectionProvider; }(ConnectionProvider); -},{"../driver":274,"../error":275,"../session":301,"./rediscovery":290,"./round-robin-array":291,"./routing-table":292,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],285:[function(require,module,exports){ +},{"../driver":275,"../error":276,"../session":302,"./rediscovery":291,"./round-robin-array":292,"./routing-table":293,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],286:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -31352,7 +31449,7 @@ exports.parseScheme = parseScheme; exports.parseUrl = parseUrl; exports.Connection = Connection; -},{"../graph-types":276,"./../error":275,"./buf":279,"./ch-node":280,"./ch-websocket":281,"./chunking":282,"./features":286,"./packstream":288,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],286:[function(require,module,exports){ +},{"../graph-types":277,"./../error":276,"./buf":280,"./ch-node":281,"./ch-websocket":282,"./chunking":283,"./features":287,"./packstream":289,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],287:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -31409,7 +31506,7 @@ function hasFeature(name) { exports.default = hasFeature; -},{"tls":63}],287:[function(require,module,exports){ +},{"tls":63}],288:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -31537,7 +31634,7 @@ var GetServersUtil = function () { exports.default = GetServersUtil; -},{"../error":275,"../integer":278,"./round-robin-array":291,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],288:[function(require,module,exports){ +},{"../error":276,"../integer":279,"./round-robin-array":292,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],289:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -32001,7 +32098,7 @@ exports.Packer = Packer; exports.Unpacker = Unpacker; exports.Structure = Structure; -},{"../integer":278,"./../error":275,"./utf8":295,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/typeof":34}],289:[function(require,module,exports){ +},{"../integer":279,"./../error":276,"./utf8":296,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/typeof":34}],290:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -32134,7 +32231,7 @@ var Pool = function () { exports.default = Pool; -},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],290:[function(require,module,exports){ +},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],291:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -32234,7 +32331,7 @@ var Rediscovery = function () { exports.default = Rediscovery; -},{"../error":275,"./get-servers-util":287,"./routing-table":292,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],291:[function(require,module,exports){ +},{"../error":276,"./get-servers-util":288,"./routing-table":293,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],292:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -32328,7 +32425,7 @@ var RoundRobinArray = function () { exports.default = RoundRobinArray; -},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],292:[function(require,module,exports){ +},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],293:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -32438,7 +32535,7 @@ var RoutingTable = function () { exports.default = RoutingTable; -},{"../integer":278,"./round-robin-array":291,"babel-runtime/core-js/array/from":15,"babel-runtime/core-js/set":25,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/toConsumableArray":33}],293:[function(require,module,exports){ +},{"../integer":279,"./round-robin-array":292,"babel-runtime/core-js/array/from":15,"babel-runtime/core-js/set":25,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/toConsumableArray":33}],294:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -32612,7 +32709,7 @@ var StreamObserver = function () { exports.default = StreamObserver; -},{"../record":297,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],294:[function(require,module,exports){ +},{"../record":298,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],295:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -32801,7 +32898,7 @@ function _valueOrDefault(value, defaultValue) { return defaultValue; } -},{"../error":275,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],295:[function(require,module,exports){ +},{"../error":276,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],296:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -32918,7 +33015,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports.default = platformObj; -},{"../../external/text-encoding/index":270,"./../error":275,"./buf":279,"buffer":66,"string_decoder":267}],296:[function(require,module,exports){ +},{"../../external/text-encoding/index":271,"./../error":276,"./buf":280,"buffer":66,"string_decoder":268}],297:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -33001,7 +33098,7 @@ exports.assertString = assertString; exports.ENCRYPTION_ON = ENCRYPTION_ON; exports.ENCRYPTION_OFF = ENCRYPTION_OFF; -},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/typeof":34}],297:[function(require,module,exports){ +},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/typeof":34}],298:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -33173,7 +33270,7 @@ var Record = function () { exports.default = Record; -},{"./error":275,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],298:[function(require,module,exports){ +},{"./error":276,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],299:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33562,7 +33659,7 @@ var statementType = { exports.statementType = statementType; exports.default = ResultSummary; -},{"./integer":278,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],299:[function(require,module,exports){ +},{"./integer":279,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],300:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33754,7 +33851,7 @@ var Result = function () { exports.default = Result; -},{"./internal/connection-holder":283,"./result-summary":298,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],300:[function(require,module,exports){ +},{"./internal/connection-holder":284,"./result-summary":299,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],301:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -33890,7 +33987,7 @@ var RoutingSession = function (_Session) { exports.default = RoutingDriver; -},{"./driver":274,"./error":275,"./internal/connection-providers":284,"./session":301,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],301:[function(require,module,exports){ +},{"./driver":275,"./error":276,"./internal/connection-providers":285,"./session":302,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],302:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -34106,7 +34203,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -34126,7 +34223,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -34248,7 +34345,7 @@ function _createTransactionExecutor(config) { exports.default = Session; -},{"./driver":274,"./error":275,"./internal/connection-holder":283,"./internal/stream-observer":293,"./internal/transaction-executor":294,"./internal/util":296,"./result":299,"./transaction":302,"babel-runtime/core-js/object/assign":17,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],302:[function(require,module,exports){ +},{"./driver":275,"./error":276,"./internal/connection-holder":284,"./internal/stream-observer":294,"./internal/transaction-executor":295,"./internal/util":297,"./result":300,"./transaction":303,"babel-runtime/core-js/object/assign":17,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],303:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -34632,7 +34729,7 @@ function emptyMetadataSupplier() { exports.default = Transaction; -},{"./internal/connection-holder":283,"./internal/stream-observer":293,"./internal/util":296,"./result":299,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],303:[function(require,module,exports){ +},{"./internal/connection-holder":284,"./internal/stream-observer":294,"./internal/util":297,"./result":300,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],304:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -34666,5 +34763,5 @@ Object.defineProperty(exports, "__esModule", { // system to control version names at packaging time. exports.default = "0.0.0-dev"; -},{}]},{},[273])(273) +},{}]},{},[274])(274) }); \ No newline at end of file diff --git a/lib/browser/neo4j-web.min.js b/lib/browser/neo4j-web.min.js index e1e67ab9c..61b24dc78 100644 --- a/lib/browser/neo4j-web.min.js +++ b/lib/browser/neo4j-web.min.js @@ -1,19 +1,19 @@ -!function(l){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=l();else if("function"==typeof define&&define.amd)define([],l);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.neo4j=l()}}(function(){var define,module,exports;return function l(n,e,u){function t(i,o){if(!e[i]){if(!n[i]){var s="function"==typeof require&&require;if(!o&&s)return s(i,!0);if(r)return r(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var f=e[i]={exports:{}};n[i][0].call(f.exports,function(l){var e=n[i][1][l];return t(e?e:l)},f,f.exports,l,n,e,u)}return e[i].exports}for(var r="function"==typeof require&&require,i=0;i>6],t=0===(32&e);if(31===(31&e)){var r=e;for(e=0;128===(128&r);){if(r=l.readUInt8(n),l.isError(r))return r;e<<=7,e|=127&r}}else e&=31;var i=c.tag[e];return{cls:u,primitive:t,tag:e,tagStr:i}}function i(l,n,e){var u=l.readUInt8(e);if(l.isError(u))return u;if(!n&&128===u)return null;if(0===(128&u))return u;var t=127&u;if(t>4)return l.error("length octect is too long");u=0;for(var r=0;r=31?u.error("Multi-octet tag encoding unsupported"):(n||(t|=32),t|=c.tagClassByName[e||"universal"]<<6)}var o=l("inherits"),s=l("buffer").Buffer,a=l("../../asn1"),f=a.base,c=a.constants.der;n.exports=u,u.prototype.encode=function(l,n){return this.tree._encode(l,n).join()},o(t,f.Node),t.prototype._encodeComposite=function(l,n,e,u){var t=i(l,n,e,this.reporter);if(u.length<128){var r=new s(2);return r[0]=t,r[1]=u.length,this._createEncoderBuffer([r,u])}for(var o=1,a=u.length;a>=256;a>>=8)o++;var r=new s(2+o);r[0]=t,r[1]=128|o;for(var a=1+o,f=u.length;f>0;a--,f>>=8)r[a]=255&f;return this._createEncoderBuffer([r,u])},t.prototype._encodeStr=function(l,n){if("bitstr"===n)return this._createEncoderBuffer([0|l.unused,l.data]);if("bmpstr"===n){for(var e=new s(2*l.length),u=0;u=40)return this.reporter.error("Second objid identifier OOB");l.splice(0,2,40*l[0]+l[1])}for(var t=0,u=0;u=128;r>>=7)t++}for(var i=new s(t),o=i.length-1,u=l.length-1;u>=0;u--){var r=l[u];for(i[o--]=127&r;(r>>=7)>0;)i[o--]=128|127&r}return this._createEncoderBuffer(i)},t.prototype._encodeTime=function(l,n){var e,u=new Date(l);return"gentime"===n?e=[r(u.getFullYear()),r(u.getUTCMonth()+1),r(u.getUTCDate()),r(u.getUTCHours()),r(u.getUTCMinutes()),r(u.getUTCSeconds()),"Z"].join(""):"utctime"===n?e=[r(u.getFullYear()%100),r(u.getUTCMonth()+1),r(u.getUTCDate()),r(u.getUTCHours()),r(u.getUTCMinutes()),r(u.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+n+" time is not supported yet"),this._encodeStr(e,"octstr")},t.prototype._encodeNull=function(){return this._createEncoderBuffer("")},t.prototype._encodeInt=function(l,n){if("string"==typeof l){if(!n)return this.reporter.error("String int or enum given, but no values map");if(!n.hasOwnProperty(l))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(l));l=n[l]}if("number"!=typeof l&&!s.isBuffer(l)){var e=l.toArray();!l.sign&&128&e[0]&&e.unshift(0),l=new s(e)}if(s.isBuffer(l)){var u=l.length;0===l.length&&u++;var t=new s(u);return l.copy(t),0===l.length&&(t[0]=0),this._createEncoderBuffer(t)}if(l<128)return this._createEncoderBuffer(l);if(l<256)return this._createEncoderBuffer([0,l]);for(var u=1,r=l;r>=256;r>>=8)u++;for(var t=new Array(u),r=t.length-1;r>=0;r--)t[r]=255&l,l>>=8;return 128&t[0]&&t.unshift(0),this._createEncoderBuffer(new s(t))},t.prototype._encodeBool=function(l){return this._createEncoderBuffer(l?255:0)},t.prototype._use=function(l,n){return"function"==typeof l&&(l=l(n)),l._getEncoder("der").tree},t.prototype._skipDefault=function(l,n,e){var u,t=this._baseState;if(null===t["default"])return!1;var r=l.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t["default"],n,e).join()),r.length!==t.defaultBuffer.length)return!1;for(u=0;u0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===l[n-2]?2:"="===l[n-1]?1:0}function t(l){return 3*l.length/4-u(l)}function r(l){var n,e,t,r,i,o,s=l.length;i=u(l),o=new c(3*s/4-i),t=i>0?s-4:s;var a=0;for(n=0,e=0;n>16&255,o[a++]=r>>8&255,o[a++]=255&r;return 2===i?(r=f[l.charCodeAt(n)]<<2|f[l.charCodeAt(n+1)]>>4,o[a++]=255&r):1===i&&(r=f[l.charCodeAt(n)]<<10|f[l.charCodeAt(n+1)]<<4|f[l.charCodeAt(n+2)]>>2,o[a++]=r>>8&255,o[a++]=255&r),o}function i(l){return a[l>>18&63]+a[l>>12&63]+a[l>>6&63]+a[63&l]}function o(l,n,e){for(var u,t=[],r=n;rf?f:s+i));return 1===u?(n=l[e-1],t+=a[n>>2],t+=a[n<<4&63],t+="=="):2===u&&(n=(l[e-2]<<8)+l[e-1],t+=a[n>>10],t+=a[n>>4&63],t+=a[n<<2&63],t+="="),r.push(t),r.join("")}e.byteLength=t,e.toByteArray=r,e.fromByteArray=s;for(var a=[],f=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,p=h.length;d=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return u}function o(l,n,e,u){for(var t=0,r=Math.min(l.length,e),i=n;i=49?o-49+10:o>=17?o-17+10:o}return t}function s(l){for(var n=new Array(l.bitLength()),e=0;e>>t}return n}function a(l,n,e){e.negative=n.negative^l.negative;var u=l.length+n.length|0;e.length=u,u=u-1|0;var t=0|l.words[0],r=0|n.words[0],i=t*r,o=67108863&i,s=i/67108864|0;e.words[0]=o;for(var a=1;a>>26,c=67108863&s,h=Math.min(a,n.length-1),d=Math.max(0,a-l.length+1);d<=h;d++){var p=a-d|0;t=0|l.words[p],r=0|n.words[d],i=t*r+c,f+=i/67108864|0,c=67108863&i}e.words[a]=0|c,s=0|f}return 0!==s?e.words[a]=0|s:e.length--,e.strip()}function f(l,n,e){e.negative=n.negative^l.negative,e.length=l.length+n.length;for(var u=0,t=0,r=0;r>>26)|0,t+=i>>>26,i&=67108863}e.words[r]=o,u=i,i=t}return 0!==u?e.words[r]=u:e.length--,e.strip()}function c(l,n,e){var u=new h;return u.mulp(l,n,e)}function h(l,n){this.x=l,this.y=n}function d(l,n){this.name=l,this.p=new r(n,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){d.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){d.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){d.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function _(){d.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function y(l){if("string"==typeof l){var n=r._prime(l);this.m=n.p,this.prime=n}else u(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}function m(l){y.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof n?n.exports=r:e.BN=r,r.BN=r,r.wordSize=26;var g;try{g=l("buffer").Buffer}catch(w){}r.isBN=function(l){return l instanceof r||null!==l&&"object"==typeof l&&l.constructor.wordSize===r.wordSize&&Array.isArray(l.words)},r.max=function(l,n){return l.cmp(n)>0?l:n},r.min=function(l,n){return l.cmp(n)<0?l:n},r.prototype._init=function(l,n,e){if("number"==typeof l)return this._initNumber(l,n,e);if("object"==typeof l)return this._initArray(l,n,e);"hex"===n&&(n=16),u(n===(0|n)&&n>=2&&n<=36),l=l.toString().replace(/\s+/g,"");var t=0;"-"===l[0]&&t++,16===n?this._parseHex(l,t):this._parseBase(l,n,t),"-"===l[0]&&(this.negative=1),this.strip(),"le"===e&&this._initArray(this.toArray(),n,e)},r.prototype._initNumber=function(l,n,e){l<0&&(this.negative=1,l=-l),l<67108864?(this.words=[67108863&l],this.length=1):l<4503599627370496?(this.words=[67108863&l,l/67108864&67108863],this.length=2):(u(l<9007199254740992),this.words=[67108863&l,l/67108864&67108863,1],this.length=3),"le"===e&&this._initArray(this.toArray(),n,e)},r.prototype._initArray=function(l,n,e){if(u("number"==typeof l.length),l.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(l.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)i=l[t]|l[t-1]<<8|l[t-2]<<16,this.words[r]|=i<>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);else if("le"===e)for(t=0,r=0;t>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);return this.strip()},r.prototype._parseHex=function(l,n){this.length=Math.ceil((l.length-n)/6),this.words=new Array(this.length);for(var e=0;e=n;e-=6)t=i(l,e,e+6),this.words[u]|=t<>>26-r&4194303,r+=24,r>=26&&(r-=26,u++);e+6!==n&&(t=i(l,n,e+6),this.words[u]|=t<>>26-r&4194303),this.strip()},r.prototype._parseBase=function(l,n,e){this.words=[0],this.length=1;for(var u=0,t=1;t<=67108863;t*=n)u++;u--,t=t/n|0;for(var r=l.length-e,i=r%u,s=Math.min(r,r-i)+e,a=0,f=e;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},r.prototype.inspect=function(){return(this.red?""};var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];r.prototype.toString=function(l,n){l=l||10,n=0|n||1;var e;if(16===l||"hex"===l){e="";for(var t=0,r=0,i=0;i>>24-t&16777215,e=0!==r||i!==this.length-1?k[6-s.length]+s+e:s+e,t+=2,t>=26&&(t-=26,i--)}for(0!==r&&(e=r.toString(16)+e);e.length%n!==0;)e="0"+e;return 0!==this.negative&&(e="-"+e),e}if(l===(0|l)&&l>=2&&l<=36){var a=S[l],f=E[l];e="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(l);c=c.idivn(f),e=c.isZero()?h+e:k[a-h.length]+h+e}for(this.isZero()&&(e="0"+e);e.length%n!==0;)e="0"+e;return 0!==this.negative&&(e="-"+e),e}u(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var l=this.words[0];return 2===this.length?l+=67108864*this.words[1]:3===this.length&&1===this.words[2]?l+=4503599627370496+67108864*this.words[1]:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-l:l},r.prototype.toJSON=function(){return this.toString(16)},r.prototype.toBuffer=function(l,n){return u("undefined"!=typeof g),this.toArrayLike(g,l,n)},r.prototype.toArray=function(l,n){return this.toArrayLike(Array,l,n)},r.prototype.toArrayLike=function(l,n,e){var t=this.byteLength(),r=e||Math.max(1,t);u(t<=r,"byte array longer than desired length"),u(r>0,"Requested array length <= 0"),this.strip();var i,o,s="le"===n,a=new l(r),f=this.clone();if(s){for(o=0;!f.isZero();o++)i=f.andln(255),f.iushrn(8),a[o]=i;for(;o=4096&&(e+=13,n>>>=13),n>=64&&(e+=7,n>>>=7),n>=8&&(e+=4,n>>>=4),n>=2&&(e+=2,n>>>=2),e+n},r.prototype._zeroBits=function(l){if(0===l)return 26;var n=l,e=0;return 0===(8191&n)&&(e+=13,n>>>=13),0===(127&n)&&(e+=7,n>>>=7),0===(15&n)&&(e+=4,n>>>=4),0===(3&n)&&(e+=2,n>>>=2),0===(1&n)&&e++,e},r.prototype.bitLength=function(){var l=this.words[this.length-1],n=this._countBits(l);return 26*(this.length-1)+n},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,n=0;nl.length?this.clone().ior(l):l.clone().ior(this)},r.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},r.prototype.iuand=function(l){var n;n=this.length>l.length?l:this;for(var e=0;el.length?this.clone().iand(l):l.clone().iand(this)},r.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},r.prototype.iuxor=function(l){var n,e;this.length>l.length?(n=this,e=l):(n=l,e=this);for(var u=0;ul.length?this.clone().ixor(l):l.clone().ixor(this)},r.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},r.prototype.inotn=function(l){u("number"==typeof l&&l>=0);var n=0|Math.ceil(l/26),e=l%26;this._expand(n),e>0&&n--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-e),this.strip()},r.prototype.notn=function(l){return this.clone().inotn(l)},r.prototype.setn=function(l,n){u("number"==typeof l&&l>=0);var e=l/26|0,t=l%26;return this._expand(e+1),n?this.words[e]=this.words[e]|1<l.length?(e=this,u=l):(e=l,u=this);for(var t=0,r=0;r>>26;for(;0!==t&&r>>26;if(this.length=e.length,0!==t)this.words[this.length]=t,this.length++;else if(e!==this)for(;rl.length?this.clone().iadd(l):l.clone().iadd(this)},r.prototype.isub=function(l){if(0!==l.negative){l.negative=0;var n=this.iadd(l);return l.negative=1,n._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var e=this.cmp(l);if(0===e)return this.negative=0,this.length=1,this.words[0]=0,this;var u,t;e>0?(u=this,t=l):(u=l,t=this);for(var r=0,i=0;i>26,this.words[i]=67108863&n;for(;0!==r&&i>26,this.words[i]=67108863&n;if(0===r&&i>>13,d=0|i[1],p=8191&d,b=d>>>13,v=0|i[2],_=8191&v,y=v>>>13,m=0|i[3],g=8191&m,w=m>>>13,k=0|i[4],S=8191&k,E=k>>>13,M=0|i[5],I=8191&M,j=M>>>13,A=0|i[6],x=8191&A,C=A>>>13,R=0|i[7],B=8191&R,O=R>>>13,T=0|i[8],P=8191&T,U=T>>>13,N=0|i[9],L=8191&N,D=N>>>13,F=0|o[0],q=8191&F,z=F>>>13,K=0|o[1],H=8191&K,V=K>>>13,Y=0|o[2],W=8191&Y,X=Y>>>13,G=0|o[3],Z=8191&G,J=G>>>13,$=0|o[4],Q=8191&$,ll=$>>>13,nl=0|o[5],el=8191&nl,ul=nl>>>13,tl=0|o[6],rl=8191&tl,il=tl>>>13,ol=0|o[7],sl=8191&ol,al=ol>>>13,fl=0|o[8],cl=8191&fl,hl=fl>>>13,dl=0|o[9],pl=8191&dl,bl=dl>>>13;e.negative=l.negative^n.negative,e.length=19,u=Math.imul(c,q),t=Math.imul(c,z),t=t+Math.imul(h,q)|0,r=Math.imul(h,z);var vl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(vl>>>26)|0,vl&=67108863,u=Math.imul(p,q),t=Math.imul(p,z),t=t+Math.imul(b,q)|0,r=Math.imul(b,z),u=u+Math.imul(c,H)|0,t=t+Math.imul(c,V)|0,t=t+Math.imul(h,H)|0,r=r+Math.imul(h,V)|0;var _l=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(_l>>>26)|0,_l&=67108863,u=Math.imul(_,q),t=Math.imul(_,z),t=t+Math.imul(y,q)|0,r=Math.imul(y,z),u=u+Math.imul(p,H)|0,t=t+Math.imul(p,V)|0,t=t+Math.imul(b,H)|0,r=r+Math.imul(b,V)|0,u=u+Math.imul(c,W)|0,t=t+Math.imul(c,X)|0,t=t+Math.imul(h,W)|0,r=r+Math.imul(h,X)|0;var yl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(yl>>>26)|0,yl&=67108863,u=Math.imul(g,q),t=Math.imul(g,z),t=t+Math.imul(w,q)|0,r=Math.imul(w,z),u=u+Math.imul(_,H)|0,t=t+Math.imul(_,V)|0,t=t+Math.imul(y,H)|0,r=r+Math.imul(y,V)|0,u=u+Math.imul(p,W)|0,t=t+Math.imul(p,X)|0,t=t+Math.imul(b,W)|0,r=r+Math.imul(b,X)|0,u=u+Math.imul(c,Z)|0,t=t+Math.imul(c,J)|0,t=t+Math.imul(h,Z)|0,r=r+Math.imul(h,J)|0;var ml=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(ml>>>26)|0,ml&=67108863,u=Math.imul(S,q),t=Math.imul(S,z),t=t+Math.imul(E,q)|0,r=Math.imul(E,z),u=u+Math.imul(g,H)|0,t=t+Math.imul(g,V)|0,t=t+Math.imul(w,H)|0,r=r+Math.imul(w,V)|0,u=u+Math.imul(_,W)|0,t=t+Math.imul(_,X)|0,t=t+Math.imul(y,W)|0,r=r+Math.imul(y,X)|0,u=u+Math.imul(p,Z)|0,t=t+Math.imul(p,J)|0,t=t+Math.imul(b,Z)|0,r=r+Math.imul(b,J)|0,u=u+Math.imul(c,Q)|0,t=t+Math.imul(c,ll)|0,t=t+Math.imul(h,Q)|0,r=r+Math.imul(h,ll)|0;var gl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(gl>>>26)|0,gl&=67108863,u=Math.imul(I,q),t=Math.imul(I,z),t=t+Math.imul(j,q)|0,r=Math.imul(j,z),u=u+Math.imul(S,H)|0,t=t+Math.imul(S,V)|0,t=t+Math.imul(E,H)|0,r=r+Math.imul(E,V)|0,u=u+Math.imul(g,W)|0,t=t+Math.imul(g,X)|0,t=t+Math.imul(w,W)|0,r=r+Math.imul(w,X)|0,u=u+Math.imul(_,Z)|0,t=t+Math.imul(_,J)|0,t=t+Math.imul(y,Z)|0,r=r+Math.imul(y,J)|0,u=u+Math.imul(p,Q)|0,t=t+Math.imul(p,ll)|0,t=t+Math.imul(b,Q)|0,r=r+Math.imul(b,ll)|0,u=u+Math.imul(c,el)|0,t=t+Math.imul(c,ul)|0,t=t+Math.imul(h,el)|0,r=r+Math.imul(h,ul)|0;var wl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(wl>>>26)|0,wl&=67108863,u=Math.imul(x,q),t=Math.imul(x,z),t=t+Math.imul(C,q)|0,r=Math.imul(C,z),u=u+Math.imul(I,H)|0,t=t+Math.imul(I,V)|0,t=t+Math.imul(j,H)|0,r=r+Math.imul(j,V)|0,u=u+Math.imul(S,W)|0,t=t+Math.imul(S,X)|0,t=t+Math.imul(E,W)|0,r=r+Math.imul(E,X)|0,u=u+Math.imul(g,Z)|0,t=t+Math.imul(g,J)|0,t=t+Math.imul(w,Z)|0,r=r+Math.imul(w,J)|0,u=u+Math.imul(_,Q)|0,t=t+Math.imul(_,ll)|0,t=t+Math.imul(y,Q)|0,r=r+Math.imul(y,ll)|0,u=u+Math.imul(p,el)|0,t=t+Math.imul(p,ul)|0,t=t+Math.imul(b,el)|0,r=r+Math.imul(b,ul)|0,u=u+Math.imul(c,rl)|0,t=t+Math.imul(c,il)|0,t=t+Math.imul(h,rl)|0,r=r+Math.imul(h,il)|0;var kl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(kl>>>26)|0,kl&=67108863,u=Math.imul(B,q),t=Math.imul(B,z),t=t+Math.imul(O,q)|0,r=Math.imul(O,z),u=u+Math.imul(x,H)|0,t=t+Math.imul(x,V)|0,t=t+Math.imul(C,H)|0,r=r+Math.imul(C,V)|0,u=u+Math.imul(I,W)|0,t=t+Math.imul(I,X)|0,t=t+Math.imul(j,W)|0,r=r+Math.imul(j,X)|0,u=u+Math.imul(S,Z)|0,t=t+Math.imul(S,J)|0,t=t+Math.imul(E,Z)|0,r=r+Math.imul(E,J)|0,u=u+Math.imul(g,Q)|0,t=t+Math.imul(g,ll)|0,t=t+Math.imul(w,Q)|0,r=r+Math.imul(w,ll)|0,u=u+Math.imul(_,el)|0,t=t+Math.imul(_,ul)|0,t=t+Math.imul(y,el)|0,r=r+Math.imul(y,ul)|0,u=u+Math.imul(p,rl)|0,t=t+Math.imul(p,il)|0,t=t+Math.imul(b,rl)|0,r=r+Math.imul(b,il)|0,u=u+Math.imul(c,sl)|0,t=t+Math.imul(c,al)|0,t=t+Math.imul(h,sl)|0,r=r+Math.imul(h,al)|0;var Sl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Sl>>>26)|0,Sl&=67108863,u=Math.imul(P,q),t=Math.imul(P,z),t=t+Math.imul(U,q)|0,r=Math.imul(U,z),u=u+Math.imul(B,H)|0,t=t+Math.imul(B,V)|0,t=t+Math.imul(O,H)|0,r=r+Math.imul(O,V)|0,u=u+Math.imul(x,W)|0,t=t+Math.imul(x,X)|0,t=t+Math.imul(C,W)|0,r=r+Math.imul(C,X)|0,u=u+Math.imul(I,Z)|0,t=t+Math.imul(I,J)|0,t=t+Math.imul(j,Z)|0,r=r+Math.imul(j,J)|0,u=u+Math.imul(S,Q)|0,t=t+Math.imul(S,ll)|0,t=t+Math.imul(E,Q)|0,r=r+Math.imul(E,ll)|0,u=u+Math.imul(g,el)|0,t=t+Math.imul(g,ul)|0,t=t+Math.imul(w,el)|0,r=r+Math.imul(w,ul)|0,u=u+Math.imul(_,rl)|0,t=t+Math.imul(_,il)|0,t=t+Math.imul(y,rl)|0,r=r+Math.imul(y,il)|0,u=u+Math.imul(p,sl)|0,t=t+Math.imul(p,al)|0,t=t+Math.imul(b,sl)|0,r=r+Math.imul(b,al)|0,u=u+Math.imul(c,cl)|0,t=t+Math.imul(c,hl)|0,t=t+Math.imul(h,cl)|0,r=r+Math.imul(h,hl)|0;var El=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(El>>>26)|0,El&=67108863,u=Math.imul(L,q),t=Math.imul(L,z),t=t+Math.imul(D,q)|0,r=Math.imul(D,z),u=u+Math.imul(P,H)|0,t=t+Math.imul(P,V)|0,t=t+Math.imul(U,H)|0,r=r+Math.imul(U,V)|0,u=u+Math.imul(B,W)|0,t=t+Math.imul(B,X)|0,t=t+Math.imul(O,W)|0,r=r+Math.imul(O,X)|0,u=u+Math.imul(x,Z)|0,t=t+Math.imul(x,J)|0,t=t+Math.imul(C,Z)|0,r=r+Math.imul(C,J)|0,u=u+Math.imul(I,Q)|0,t=t+Math.imul(I,ll)|0,t=t+Math.imul(j,Q)|0,r=r+Math.imul(j,ll)|0,u=u+Math.imul(S,el)|0,t=t+Math.imul(S,ul)|0,t=t+Math.imul(E,el)|0,r=r+Math.imul(E,ul)|0,u=u+Math.imul(g,rl)|0,t=t+Math.imul(g,il)|0,t=t+Math.imul(w,rl)|0,r=r+Math.imul(w,il)|0,u=u+Math.imul(_,sl)|0,t=t+Math.imul(_,al)|0,t=t+Math.imul(y,sl)|0,r=r+Math.imul(y,al)|0,u=u+Math.imul(p,cl)|0,t=t+Math.imul(p,hl)|0,t=t+Math.imul(b,cl)|0,r=r+Math.imul(b,hl)|0,u=u+Math.imul(c,pl)|0,t=t+Math.imul(c,bl)|0,t=t+Math.imul(h,pl)|0,r=r+Math.imul(h,bl)|0;var Ml=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Ml>>>26)|0,Ml&=67108863,u=Math.imul(L,H),t=Math.imul(L,V),t=t+Math.imul(D,H)|0,r=Math.imul(D,V),u=u+Math.imul(P,W)|0,t=t+Math.imul(P,X)|0,t=t+Math.imul(U,W)|0,r=r+Math.imul(U,X)|0,u=u+Math.imul(B,Z)|0,t=t+Math.imul(B,J)|0,t=t+Math.imul(O,Z)|0,r=r+Math.imul(O,J)|0,u=u+Math.imul(x,Q)|0,t=t+Math.imul(x,ll)|0,t=t+Math.imul(C,Q)|0,r=r+Math.imul(C,ll)|0,u=u+Math.imul(I,el)|0,t=t+Math.imul(I,ul)|0,t=t+Math.imul(j,el)|0,r=r+Math.imul(j,ul)|0,u=u+Math.imul(S,rl)|0,t=t+Math.imul(S,il)|0,t=t+Math.imul(E,rl)|0,r=r+Math.imul(E,il)|0,u=u+Math.imul(g,sl)|0,t=t+Math.imul(g,al)|0,t=t+Math.imul(w,sl)|0,r=r+Math.imul(w,al)|0,u=u+Math.imul(_,cl)|0,t=t+Math.imul(_,hl)|0,t=t+Math.imul(y,cl)|0,r=r+Math.imul(y,hl)|0,u=u+Math.imul(p,pl)|0,t=t+Math.imul(p,bl)|0,t=t+Math.imul(b,pl)|0,r=r+Math.imul(b,bl)|0;var Il=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Il>>>26)|0,Il&=67108863,u=Math.imul(L,W),t=Math.imul(L,X),t=t+Math.imul(D,W)|0,r=Math.imul(D,X),u=u+Math.imul(P,Z)|0,t=t+Math.imul(P,J)|0,t=t+Math.imul(U,Z)|0,r=r+Math.imul(U,J)|0,u=u+Math.imul(B,Q)|0,t=t+Math.imul(B,ll)|0,t=t+Math.imul(O,Q)|0,r=r+Math.imul(O,ll)|0,u=u+Math.imul(x,el)|0,t=t+Math.imul(x,ul)|0,t=t+Math.imul(C,el)|0,r=r+Math.imul(C,ul)|0,u=u+Math.imul(I,rl)|0,t=t+Math.imul(I,il)|0,t=t+Math.imul(j,rl)|0,r=r+Math.imul(j,il)|0,u=u+Math.imul(S,sl)|0,t=t+Math.imul(S,al)|0,t=t+Math.imul(E,sl)|0,r=r+Math.imul(E,al)|0,u=u+Math.imul(g,cl)|0,t=t+Math.imul(g,hl)|0,t=t+Math.imul(w,cl)|0,r=r+Math.imul(w,hl)|0,u=u+Math.imul(_,pl)|0,t=t+Math.imul(_,bl)|0,t=t+Math.imul(y,pl)|0,r=r+Math.imul(y,bl)|0;var jl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(jl>>>26)|0,jl&=67108863,u=Math.imul(L,Z),t=Math.imul(L,J),t=t+Math.imul(D,Z)|0,r=Math.imul(D,J),u=u+Math.imul(P,Q)|0,t=t+Math.imul(P,ll)|0,t=t+Math.imul(U,Q)|0,r=r+Math.imul(U,ll)|0,u=u+Math.imul(B,el)|0,t=t+Math.imul(B,ul)|0,t=t+Math.imul(O,el)|0,r=r+Math.imul(O,ul)|0,u=u+Math.imul(x,rl)|0,t=t+Math.imul(x,il)|0,t=t+Math.imul(C,rl)|0,r=r+Math.imul(C,il)|0,u=u+Math.imul(I,sl)|0,t=t+Math.imul(I,al)|0,t=t+Math.imul(j,sl)|0,r=r+Math.imul(j,al)|0,u=u+Math.imul(S,cl)|0,t=t+Math.imul(S,hl)|0,t=t+Math.imul(E,cl)|0,r=r+Math.imul(E,hl)|0,u=u+Math.imul(g,pl)|0,t=t+Math.imul(g,bl)|0,t=t+Math.imul(w,pl)|0,r=r+Math.imul(w,bl)|0;var Al=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Al>>>26)|0,Al&=67108863,u=Math.imul(L,Q),t=Math.imul(L,ll),t=t+Math.imul(D,Q)|0,r=Math.imul(D,ll),u=u+Math.imul(P,el)|0,t=t+Math.imul(P,ul)|0,t=t+Math.imul(U,el)|0,r=r+Math.imul(U,ul)|0,u=u+Math.imul(B,rl)|0,t=t+Math.imul(B,il)|0,t=t+Math.imul(O,rl)|0,r=r+Math.imul(O,il)|0,u=u+Math.imul(x,sl)|0,t=t+Math.imul(x,al)|0,t=t+Math.imul(C,sl)|0,r=r+Math.imul(C,al)|0,u=u+Math.imul(I,cl)|0,t=t+Math.imul(I,hl)|0,t=t+Math.imul(j,cl)|0,r=r+Math.imul(j,hl)|0,u=u+Math.imul(S,pl)|0,t=t+Math.imul(S,bl)|0,t=t+Math.imul(E,pl)|0,r=r+Math.imul(E,bl)|0;var xl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(xl>>>26)|0,xl&=67108863,u=Math.imul(L,el),t=Math.imul(L,ul),t=t+Math.imul(D,el)|0,r=Math.imul(D,ul),u=u+Math.imul(P,rl)|0,t=t+Math.imul(P,il)|0,t=t+Math.imul(U,rl)|0,r=r+Math.imul(U,il)|0,u=u+Math.imul(B,sl)|0,t=t+Math.imul(B,al)|0,t=t+Math.imul(O,sl)|0,r=r+Math.imul(O,al)|0,u=u+Math.imul(x,cl)|0,t=t+Math.imul(x,hl)|0,t=t+Math.imul(C,cl)|0,r=r+Math.imul(C,hl)|0,u=u+Math.imul(I,pl)|0,t=t+Math.imul(I,bl)|0,t=t+Math.imul(j,pl)|0,r=r+Math.imul(j,bl)|0;var Cl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Cl>>>26)|0,Cl&=67108863,u=Math.imul(L,rl),t=Math.imul(L,il),t=t+Math.imul(D,rl)|0,r=Math.imul(D,il),u=u+Math.imul(P,sl)|0,t=t+Math.imul(P,al)|0,t=t+Math.imul(U,sl)|0,r=r+Math.imul(U,al)|0,u=u+Math.imul(B,cl)|0,t=t+Math.imul(B,hl)|0,t=t+Math.imul(O,cl)|0,r=r+Math.imul(O,hl)|0,u=u+Math.imul(x,pl)|0,t=t+Math.imul(x,bl)|0,t=t+Math.imul(C,pl)|0,r=r+Math.imul(C,bl)|0;var Rl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Rl>>>26)|0,Rl&=67108863,u=Math.imul(L,sl),t=Math.imul(L,al),t=t+Math.imul(D,sl)|0,r=Math.imul(D,al),u=u+Math.imul(P,cl)|0,t=t+Math.imul(P,hl)|0,t=t+Math.imul(U,cl)|0,r=r+Math.imul(U,hl)|0,u=u+Math.imul(B,pl)|0,t=t+Math.imul(B,bl)|0,t=t+Math.imul(O,pl)|0,r=r+Math.imul(O,bl)|0;var Bl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Bl>>>26)|0,Bl&=67108863,u=Math.imul(L,cl),t=Math.imul(L,hl),t=t+Math.imul(D,cl)|0,r=Math.imul(D,hl),u=u+Math.imul(P,pl)|0,t=t+Math.imul(P,bl)|0,t=t+Math.imul(U,pl)|0,r=r+Math.imul(U,bl)|0;var Ol=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Ol>>>26)|0,Ol&=67108863,u=Math.imul(L,pl),t=Math.imul(L,bl),t=t+Math.imul(D,pl)|0,r=Math.imul(D,bl);var Tl=(a+u|0)+((8191&t)<<13)|0;return a=(r+(t>>>13)|0)+(Tl>>>26)|0,Tl&=67108863,s[0]=vl,s[1]=_l,s[2]=yl,s[3]=ml,s[4]=gl,s[5]=wl,s[6]=kl,s[7]=Sl,s[8]=El,s[9]=Ml,s[10]=Il,s[11]=jl,s[12]=Al,s[13]=xl,s[14]=Cl,s[15]=Rl,s[16]=Bl,s[17]=Ol,s[18]=Tl,0!==a&&(s[19]=a,e.length++),e};Math.imul||(M=a),r.prototype.mulTo=function(l,n){var e,u=this.length+l.length;return e=10===this.length&&10===l.length?M(this,l,n):u<63?a(this,l,n):u<1024?f(this,l,n):c(this,l,n)},h.prototype.makeRBT=function(l){for(var n=new Array(l),e=r.prototype._countBits(l)-1,u=0;u>=1;return u},h.prototype.permute=function(l,n,e,u,t,r){for(var i=0;i>>=1)t++;return 1<>>=13,e[2*i+1]=8191&r,r>>>=13;for(i=2*n;i>=26,n+=t/67108864|0,n+=r>>>26,this.words[e]=67108863&r}return 0!==n&&(this.words[e]=n,this.length++),this},r.prototype.muln=function(l){return this.clone().imuln(l)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(l){var n=s(l);if(0===n.length)return new r(1);for(var e=this,u=0;u=0);var n,e=l%26,t=(l-e)/26,r=67108863>>>26-e<<26-e;if(0!==e){var i=0;for(n=0;n>>26-e}i&&(this.words[n]=i,this.length++)}if(0!==t){for(n=this.length-1;n>=0;n--)this.words[n+t]=this.words[n];for(n=0;n=0);var t;t=n?(n-n%26)/26:0;var r=l%26,i=Math.min((l-r)/26,this.length),o=67108863^67108863>>>r<i)for(this.length-=i,a=0;a=0&&(0!==f||a>=t);a--){var c=0|this.words[a];this.words[a]=f<<26-r|c>>>r,f=c&o}return s&&0!==f&&(s.words[s.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},r.prototype.ishrn=function(l,n,e){return u(0===this.negative),this.iushrn(l,n,e)},r.prototype.shln=function(l){return this.clone().ishln(l)},r.prototype.ushln=function(l){return this.clone().iushln(l)},r.prototype.shrn=function(l){return this.clone().ishrn(l)},r.prototype.ushrn=function(l){return this.clone().iushrn(l)},r.prototype.testn=function(l){u("number"==typeof l&&l>=0);var n=l%26,e=(l-n)/26,t=1<=0);var n=l%26,e=(l-n)/26;if(u(0===this.negative,"imaskn works only with positive numbers"),this.length<=e)return this;if(0!==n&&e++,this.length=Math.min(e,this.length),0!==n){var t=67108863^67108863>>>n<=67108864;n++)this.words[n]-=67108864,n===this.length-1?this.words[n+1]=1:this.words[n+1]++;return this.length=Math.max(this.length,n+1),this},r.prototype.isubn=function(l){if(u("number"==typeof l),u(l<67108864),l<0)return this.iaddn(-l);if(0!==this.negative)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var n=0;n>26)-(s/67108864|0),this.words[t+e]=67108863&i}for(;t>26,this.words[t+e]=67108863&i;if(0===o)return this.strip();for(u(o===-1),o=0,t=0;t>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},r.prototype._wordDiv=function(l,n){var e=this.length-l.length,u=this.clone(),t=l,i=0|t.words[t.length-1],o=this._countBits(i);e=26-o,0!==e&&(t=t.ushln(e),u.iushln(e),i=0|t.words[t.length-1]);var s,a=u.length-t.length;if("mod"!==n){s=new r(null),s.length=a+1,s.words=new Array(s.length);for(var f=0;f=0;h--){var d=67108864*(0|u.words[t.length+h])+(0|u.words[t.length+h-1]);for(d=Math.min(d/i|0,67108863),u._ishlnsubmul(t,d,h);0!==u.negative;)d--,u.negative=0,u._ishlnsubmul(t,1,h),u.isZero()||(u.negative^=1);s&&(s.words[h]=d)}return s&&s.strip(),u.strip(),"div"!==n&&0!==e&&u.iushrn(e),{div:s||null,mod:u}},r.prototype.divmod=function(l,n,e){if(u(!l.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var t,i,o;return 0!==this.negative&&0===l.negative?(o=this.neg().divmod(l,n),"mod"!==n&&(t=o.div.neg()),"div"!==n&&(i=o.mod.neg(),e&&0!==i.negative&&i.iadd(l)),{div:t,mod:i}):0===this.negative&&0!==l.negative?(o=this.divmod(l.neg(),n),"mod"!==n&&(t=o.div.neg()),{div:t,mod:o.mod}):0!==(this.negative&l.negative)?(o=this.neg().divmod(l.neg(),n),"div"!==n&&(i=o.mod.neg(),e&&0!==i.negative&&i.isub(l)),{div:o.div,mod:i}):l.length>this.length||this.cmp(l)<0?{div:new r(0),mod:this}:1===l.length?"div"===n?{div:this.divn(l.words[0]),mod:null}:"mod"===n?{div:null,mod:new r(this.modn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new r(this.modn(l.words[0]))}:this._wordDiv(l,n)},r.prototype.div=function(l){return this.divmod(l,"div",!1).div},r.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},r.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},r.prototype.divRound=function(l){var n=this.divmod(l);if(n.mod.isZero())return n.div;var e=0!==n.div.negative?n.mod.isub(l):n.mod,u=l.ushrn(1),t=l.andln(1),r=e.cmp(u);return r<0||1===t&&0===r?n.div:0!==n.div.negative?n.div.isubn(1):n.div.iaddn(1)},r.prototype.modn=function(l){u(l<=67108863);for(var n=(1<<26)%l,e=0,t=this.length-1;t>=0;t--)e=(n*e+(0|this.words[t]))%l;return e},r.prototype.idivn=function(l){u(l<=67108863);for(var n=0,e=this.length-1;e>=0;e--){var t=(0|this.words[e])+67108864*n;this.words[e]=t/l|0,n=t%l}return this.strip(); -},r.prototype.divn=function(l){return this.clone().idivn(l)},r.prototype.egcd=function(l){u(0===l.negative),u(!l.isZero());var n=this,e=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=new r(0),s=new r(1),a=0;n.isEven()&&e.isEven();)n.iushrn(1),e.iushrn(1),++a;for(var f=e.clone(),c=n.clone();!n.isZero();){for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(t.isOdd()||i.isOdd())&&(t.iadd(f),i.isub(c)),t.iushrn(1),i.iushrn(1);for(var p=0,b=1;0===(e.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(e.iushrn(p);p-- >0;)(o.isOdd()||s.isOdd())&&(o.iadd(f),s.isub(c)),o.iushrn(1),s.iushrn(1);n.cmp(e)>=0?(n.isub(e),t.isub(o),i.isub(s)):(e.isub(n),o.isub(t),s.isub(i))}return{a:o,b:s,gcd:e.iushln(a)}},r.prototype._invmp=function(l){u(0===l.negative),u(!l.isZero());var n=this,e=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=e.clone();n.cmpn(1)>0&&e.cmpn(1)>0;){for(var s=0,a=1;0===(n.words[0]&a)&&s<26;++s,a<<=1);if(s>0)for(n.iushrn(s);s-- >0;)t.isOdd()&&t.iadd(o),t.iushrn(1);for(var f=0,c=1;0===(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)i.isOdd()&&i.iadd(o),i.iushrn(1);n.cmp(e)>=0?(n.isub(e),t.isub(i)):(e.isub(n),i.isub(t))}var h;return h=0===n.cmpn(1)?t:i,h.cmpn(0)<0&&h.iadd(l),h},r.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var n=this.clone(),e=l.clone();n.negative=0,e.negative=0;for(var u=0;n.isEven()&&e.isEven();u++)n.iushrn(1),e.iushrn(1);for(;;){for(;n.isEven();)n.iushrn(1);for(;e.isEven();)e.iushrn(1);var t=n.cmp(e);if(t<0){var r=n;n=e,e=r}else if(0===t||0===e.cmpn(1))break;n.isub(e)}return e.iushln(u)},r.prototype.invm=function(l){return this.egcd(l).a.umod(l)},r.prototype.isEven=function(){return 0===(1&this.words[0])},r.prototype.isOdd=function(){return 1===(1&this.words[0])},r.prototype.andln=function(l){return this.words[0]&l},r.prototype.bincn=function(l){u("number"==typeof l);var n=l%26,e=(l-n)/26,t=1<>>26,o&=67108863,this.words[i]=o}return 0!==r&&(this.words[i]=r,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(l){var n=l<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;this.strip();var e;if(this.length>1)e=1;else{n&&(l=-l),u(l<=67108863,"Number is too big");var t=0|this.words[0];e=t===l?0:tl.length)return 1;if(this.length=0;e--){var u=0|this.words[e],t=0|l.words[e];if(u!==t){ut&&(n=1);break}}return n},r.prototype.gtn=function(l){return 1===this.cmpn(l)},r.prototype.gt=function(l){return 1===this.cmp(l)},r.prototype.gten=function(l){return this.cmpn(l)>=0},r.prototype.gte=function(l){return this.cmp(l)>=0},r.prototype.ltn=function(l){return this.cmpn(l)===-1},r.prototype.lt=function(l){return this.cmp(l)===-1},r.prototype.lten=function(l){return this.cmpn(l)<=0},r.prototype.lte=function(l){return this.cmp(l)<=0},r.prototype.eqn=function(l){return 0===this.cmpn(l)},r.prototype.eq=function(l){return 0===this.cmp(l)},r.red=function(l){return new y(l)},r.prototype.toRed=function(l){return u(!this.red,"Already a number in reduction context"),u(0===this.negative,"red works only with positives"),l.convertTo(this)._forceRed(l)},r.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(l){return this.red=l,this},r.prototype.forceRed=function(l){return u(!this.red,"Already a number in reduction context"),this._forceRed(l)},r.prototype.redAdd=function(l){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},r.prototype.redIAdd=function(l){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},r.prototype.redSub=function(l){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},r.prototype.redISub=function(l){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},r.prototype.redShl=function(l){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},r.prototype.redMul=function(l){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},r.prototype.redIMul=function(l){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},r.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(l){return u(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var I={k256:null,p224:null,p192:null,p25519:null};d.prototype._tmp=function(){var l=new r(null);return l.words=new Array(Math.ceil(this.n/13)),l},d.prototype.ireduce=function(l){var n,e=l;do this.split(e,this.tmp),e=this.imulK(e),e=e.iadd(this.tmp),n=e.bitLength();while(n>this.n);var u=n0?e.isub(this.p):e.strip(),e},d.prototype.split=function(l,n){l.iushrn(this.n,0,n)},d.prototype.imulK=function(l){return l.imul(this.k)},t(p,d),p.prototype.split=function(l,n){for(var e=4194303,u=Math.min(l.length,9),t=0;t>>22,r=i}r>>>=22,l.words[t-10]=r,0===r&&l.length>10?l.length-=10:l.length-=9},p.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var n=0,e=0;e>>=26,l.words[e]=t,n=u}return 0!==n&&(l.words[l.length++]=n),l},r._prime=function j(l){if(I[l])return I[l];var j;if("k256"===l)j=new p;else if("p224"===l)j=new b;else if("p192"===l)j=new v;else{if("p25519"!==l)throw new Error("Unknown prime "+l);j=new _}return I[l]=j,j},y.prototype._verify1=function(l){u(0===l.negative,"red works only with positives"),u(l.red,"red works only with red numbers")},y.prototype._verify2=function(l,n){u(0===(l.negative|n.negative),"red works only with positives"),u(l.red&&l.red===n.red,"red works only with red numbers")},y.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):l.umod(this.m)._forceRed(this)},y.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},y.prototype.add=function(l,n){this._verify2(l,n);var e=l.add(n);return e.cmp(this.m)>=0&&e.isub(this.m),e._forceRed(this)},y.prototype.iadd=function(l,n){this._verify2(l,n);var e=l.iadd(n);return e.cmp(this.m)>=0&&e.isub(this.m),e},y.prototype.sub=function(l,n){this._verify2(l,n);var e=l.sub(n);return e.cmpn(0)<0&&e.iadd(this.m),e._forceRed(this)},y.prototype.isub=function(l,n){this._verify2(l,n);var e=l.isub(n);return e.cmpn(0)<0&&e.iadd(this.m),e},y.prototype.shl=function(l,n){return this._verify1(l),this.imod(l.ushln(n))},y.prototype.imul=function(l,n){return this._verify2(l,n),this.imod(l.imul(n))},y.prototype.mul=function(l,n){return this._verify2(l,n),this.imod(l.mul(n))},y.prototype.isqr=function(l){return this.imul(l,l.clone())},y.prototype.sqr=function(l){return this.mul(l,l)},y.prototype.sqrt=function(l){if(l.isZero())return l.clone();var n=this.m.andln(3);if(u(n%2===1),3===n){var e=this.m.add(new r(1)).iushrn(2);return this.pow(l,e)}for(var t=this.m.subn(1),i=0;!t.isZero()&&0===t.andln(1);)i++,t.iushrn(1);u(!t.isZero());var o=new r(1).toRed(this),s=o.redNeg(),a=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);0!==this.pow(f,a).cmp(s);)f.redIAdd(s);for(var c=this.pow(f,t),h=this.pow(l,t.addn(1).iushrn(1)),d=this.pow(l,t),p=i;0!==d.cmp(o);){for(var b=d,v=0;0!==b.cmp(o);v++)b=b.redSqr();u(v=0;t--){for(var f=n.words[t],c=a-1;c>=0;c--){var h=f>>c&1;i!==u[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,s++,(s===e||0===t&&0===c)&&(i=this.mul(i,u[o]),s=0,o=0)):s=0}a=26}return i},y.prototype.convertTo=function(l){var n=l.umod(this.m);return n===l?n.clone():n},y.prototype.convertFrom=function(l){var n=l.clone();return n.red=null,n},r.mont=function(l){return new m(l)},t(m,y),m.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},m.prototype.convertFrom=function(l){var n=this.imod(l.mul(this.rinv));return n.red=null,n},m.prototype.imul=function(l,n){if(l.isZero()||n.isZero())return l.words[0]=0,l.length=1,l;var e=l.imul(n),u=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=e.isub(u).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},m.prototype.mul=function(l,n){if(l.isZero()||n.isZero())return new r(0)._forceRed(this);var e=l.mul(n),u=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=e.isub(u).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},m.prototype.invm=function(l){var n=this.imod(l._invmp(this.m).mul(this.r2));return n._forceRed(this)}}("undefined"==typeof n||n,this)},{}],37:[function(l,n,e){function u(l){this.rand=l}var t;if(n.exports=function(l){return t||(t=new u(null)),t.generate(l)},n.exports.Rand=u,u.prototype.generate=function(l){return this._rand(l)},u.prototype._rand=function(l){if(this.rand.getBytes)return this.rand.getBytes(l);for(var n=new Uint8Array(l),e=0;eo||l<0?(e=Math.abs(l)%o,l<0?o-e:e):l}function u(l){for(var n=0;n>>8^255&e^99,this.SBOX[t]=e,this.INV_SBOX[e]=t,r=l[t],i=l[r],o=l[i],u=257*l[e]^16843008*e,this.SUB_MIX[0][t]=u<<24|u>>>8,this.SUB_MIX[1][t]=u<<16|u>>>16,this.SUB_MIX[2][t]=u<<8|u>>>24,this.SUB_MIX[3][t]=u,u=16843009*o^65537*i^257*r^16843008*t,this.INV_SUB_MIX[0][e]=u<<24|u>>>8,this.INV_SUB_MIX[1][e]=u<<16|u>>>16,this.INV_SUB_MIX[2][e]=u<<8|u>>>24,this.INV_SUB_MIX[3][e]=u,0===t?t=s=1:(t=r^l[l[l[o^r]]],s^=l[l[s]]);return!0};var s=new t;i.blockSize=16,i.prototype.blockSize=i.blockSize,i.keySize=32,i.prototype.keySize=i.keySize,i.prototype._doReset=function(){var l,n,e,u,t,r;for(e=this._key,n=e.length,this._nRounds=n+6,t=4*(this._nRounds+1),this._keySchedule=[],u=0;u>>24,r=s.SBOX[r>>>24]<<24|s.SBOX[r>>>16&255]<<16|s.SBOX[r>>>8&255]<<8|s.SBOX[255&r],r^=s.RCON[u/n|0]<<24):n>6&&u%n===4?r=s.SBOX[r>>>24]<<24|s.SBOX[r>>>16&255]<<16|s.SBOX[r>>>8&255]<<8|s.SBOX[255&r]:void 0,this._keySchedule[u-n]^r);for(this._invKeySchedule=[],l=0;l>>24]]^s.INV_SUB_MIX[1][s.SBOX[r>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[r>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&r]];return!0},i.prototype.encryptBlock=function(n){n=r(new l(n));var e=this._doCryptBlock(n,this._keySchedule,s.SUB_MIX,s.SBOX),u=new l(16);return u.writeUInt32BE(e[0],0),u.writeUInt32BE(e[1],4),u.writeUInt32BE(e[2],8),u.writeUInt32BE(e[3],12),u},i.prototype.decryptBlock=function(n){n=r(new l(n));var e=[n[3],n[1]];n[1]=e[0],n[3]=e[1];var u=this._doCryptBlock(n,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),t=new l(16);return t.writeUInt32BE(u[0],0),t.writeUInt32BE(u[3],4),t.writeUInt32BE(u[2],8),t.writeUInt32BE(u[1],12),t},i.prototype.scrub=function(){u(this._keySchedule),u(this._invKeySchedule),u(this._key)},i.prototype._doCryptBlock=function(l,e,u,t){var r,i,o,s,a,f,c,h,d;i=l[0]^e[0],o=l[1]^e[1],s=l[2]^e[2],a=l[3]^e[3],r=4;for(var p=1;p>>24]^u[1][o>>>16&255]^u[2][s>>>8&255]^u[3][255&a]^e[r++],c=u[0][o>>>24]^u[1][s>>>16&255]^u[2][a>>>8&255]^u[3][255&i]^e[r++],h=u[0][s>>>24]^u[1][a>>>16&255]^u[2][i>>>8&255]^u[3][255&o]^e[r++],d=u[0][a>>>24]^u[1][i>>>16&255]^u[2][o>>>8&255]^u[3][255&s]^e[r++],i=f,o=c,s=h,a=d;return f=(t[i>>>24]<<24|t[o>>>16&255]<<16|t[s>>>8&255]<<8|t[255&a])^e[r++],c=(t[o>>>24]<<24|t[s>>>16&255]<<16|t[a>>>8&255]<<8|t[255&i])^e[r++],h=(t[s>>>24]<<24|t[a>>>16&255]<<16|t[i>>>8&255]<<8|t[255&o])^e[r++],d=(t[a>>>24]<<24|t[i>>>16&255]<<16|t[o>>>8&255]<<8|t[255&s])^e[r++],[n(f),n(c),n(h),n(d)]},e.AES=i}).call(this,l("buffer").Buffer)},{buffer:66}],40:[function(l,n,e){(function(e){function u(l,n,t,o){if(!(this instanceof u))return new u(l,n,t);i.call(this),this._finID=e.concat([t,new e([0,0,0,1])]),t=e.concat([t,new e([0,0,0,2])]),this._cipher=new r.AES(n),this._prev=new e(t.length),this._cache=new e(""),this._secCache=new e(""),this._decrypt=o,this._alen=0,this._len=0,t.copy(this._prev),this._mode=l;var a=new e(4);a.fill(0),this._ghash=new s(this._cipher.encryptBlock(a)),this._authTag=null,this._called=!1}function t(l,n){var e=0;l.length!==n.length&&e++;for(var u=Math.min(l.length,n.length),t=-1;++t16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n}else if(this.cache.length>=16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n;return null},t.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:l("./modes/ecb"),CBC:l("./modes/cbc"),CFB:l("./modes/cfb"),CFB8:l("./modes/cfb8"),CFB1:l("./modes/cfb1"),OFB:l("./modes/ofb"),CTR:l("./modes/ctr"),GCM:l("./modes/ctr")};e.createDecipher=o,e.createDecipheriv=i}).call(this,l("buffer").Buffer)},{"./aes":39,"./authCipher":40,"./modes":45,"./modes/cbc":46,"./modes/cfb":47,"./modes/cfb1":48,"./modes/cfb8":49,"./modes/ctr":50,"./modes/ecb":51,"./modes/ofb":52,"./streamCipher":53,buffer:66,"cipher-base":67,evp_bytestokey:213,inherits:223}],43:[function(l,n,e){(function(n){function u(l,e,r){return this instanceof u?(s.call(this),this._cache=new t,this._cipher=new o.AES(e),this._prev=new n(r.length),r.copy(this._prev),this._mode=l,void(this._autopadding=!0)):new u(l,e,r)}function t(){return this instanceof t?void(this.cache=new n("")):new t}function r(l,e,t){var r=f[l.toLowerCase()];if(!r)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=new n(t)),"string"==typeof e&&(e=new n(e)),e.length!==r.key/8)throw new TypeError("invalid key length "+e.length);if(t.length!==r.iv)throw new TypeError("invalid iv length "+t.length);return"stream"===r.type?new h(p[r.mode],e,t):"auth"===r.type?new d(p[r.mode],e,t):new u(p[r.mode],e,t)}function i(l,n){var e=f[l.toLowerCase()];if(!e)throw new TypeError("invalid suite type");var u=c(n,!1,e.key,e.iv);return r(l,u.key,u.iv)}var o=l("./aes"),s=l("cipher-base"),a=l("inherits"),f=l("./modes"),c=l("evp_bytestokey"),h=l("./streamCipher"),d=l("./authCipher");a(u,s),u.prototype._update=function(l){this._cache.add(l);for(var e,u,t=[];e=this._cache.get();)u=this._mode.encrypt(this,e),t.push(u);return n.concat(t)},u.prototype._final=function(){var l=this._cache.flush();if(this._autopadding)return l=this._mode.encrypt(this,l),this._cipher.scrub(),l;if("10101010101010101010101010101010"!==l.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},u.prototype.setAutoPadding=function(l){return this._autopadding=!!l,this},t.prototype.add=function(l){this.cache=n.concat([this.cache,l])},t.prototype.get=function(){if(this.cache.length>15){var l=this.cache.slice(0,16);return this.cache=this.cache.slice(16),l}return null},t.prototype.flush=function(){for(var l=16-this.cache.length,e=new n(l),u=-1;++us||l<0?(e=Math.abs(l)%s,l<0?s-e:e):l}function i(l,n){return[l[0]^n[0],l[1]^n[1],l[2]^n[2],l[3]^n[3]]}var o=new l(16);o.fill(0),n.exports=e,e.prototype.ghash=function(l){for(var n=-1;++n0;l--)r[l]=r[l]>>>1|(1&r[l-1])<<31;r[0]=r[0]>>>1,e&&(r[0]=r[0]^225<<24)}this.state=t(o)},e.prototype.update=function(n){this.cache=l.concat([this.cache,n]);for(var e;this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},e.prototype["final"]=function(n,e){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(t([0,n,0,e])),this.state};var s=Math.pow(2,32)}).call(this,l("buffer").Buffer)},{buffer:66}],45:[function(l,n,e){e["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},e["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},e["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},e["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},e["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},e["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},e.aes128=e["aes-128-cbc"],e.aes192=e["aes-192-cbc"],e.aes256=e["aes-256-cbc"],e["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},e["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},e["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},e["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},e["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},e["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},e["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},e["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},e["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},e["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},e["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},e["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},e["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},e["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},e["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},e["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},e["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},e["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],46:[function(l,n,e){var u=l("buffer-xor");e.encrypt=function(l,n){var e=u(n,l._prev);return l._prev=l._cipher.encryptBlock(e),l._prev},e.decrypt=function(l,n){var e=l._prev;l._prev=n;var t=l._cipher.decryptBlock(n);return u(t,e)}},{"buffer-xor":65}],47:[function(l,n,e){(function(n){function u(l,e,u){var r=e.length,i=t(e,l._cache);return l._cache=l._cache.slice(r),l._prev=n.concat([l._prev,u?e:i]),i}var t=l("buffer-xor");e.encrypt=function(l,e,t){for(var r,i=new n("");e.length;){if(0===l._cache.length&&(l._cache=l._cipher.encryptBlock(l._prev),l._prev=new n("")),!(l._cache.length<=e.length)){i=n.concat([i,u(l,e,t)]);break}r=l._cache.length,i=n.concat([i,u(l,e.slice(0,r),t)]),e=e.slice(r)}return i}}).call(this,l("buffer").Buffer)},{buffer:66,"buffer-xor":65}],48:[function(l,n,e){(function(l){function n(l,n,e){for(var t,r,i,o=-1,s=8,a=0;++o>o%8,l._prev=u(l._prev,e?r:i);return a}function u(n,e){var u=n.length,t=-1,r=new l(n.length);for(n=l.concat([n,new l([e])]);++t>7;return r}e.encrypt=function(e,u,t){for(var r=u.length,i=new l(r),o=-1;++o=0||!e.umod(l.prime1)||!e.umod(l.prime2);)e=new i(o(n));return e}var i=l("bn.js"),o=l("randombytes");n.exports=t,t.getr=r}).call(this,l("buffer").Buffer)},{"bn.js":36,buffer:66,randombytes:245}],58:[function(l,n,e){(function(l){"use strict";e["RSA-SHA224"]=e.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new l("302d300d06096086480165030402040500041c","hex")},e["RSA-SHA256"]=e.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new l("3031300d060960864801650304020105000420","hex")},e["RSA-SHA384"]=e.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new l("3041300d060960864801650304020205000430","hex")},e["RSA-SHA512"]=e.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new l("3051300d060960864801650304020305000440","hex")},e["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new l("3021300906052b0e03021a05000414","hex")},e["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new l("","hex")},e.DSA=e["DSA-SHA1"]=e["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new l("","hex")},e["DSA-SHA224"]=e["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224", -id:new l("","hex")},e["DSA-SHA256"]=e["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new l("","hex")},e["DSA-SHA384"]=e["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new l("","hex")},e["DSA-SHA512"]=e["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new l("","hex")},e["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new l("","hex")},e["RSA-RIPEMD160"]=e.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new l("3021300906052b2403020105000414","hex")},e["RSA-MD5"]=e.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new l("3020300c06082a864886f70d020505000410","hex")}}).call(this,l("buffer").Buffer)},{buffer:66}],59:[function(l,n,e){(function(e){function u(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hashType=n.hash,this._hash=s(n.hash),this._tag=n.id,this._signType=n.sign}function t(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hash=s(n.hash),this._tag=n.id,this._signType=n.sign}function r(l){return new u(l)}function i(l){return new t(l)}var o=l("./algos"),s=l("create-hash"),a=l("inherits"),f=l("./sign"),c=l("stream"),h=l("./verify"),d={};Object.keys(o).forEach(function(l){d[l]=d[l.toLowerCase()]=o[l]}),a(u,c.Writable),u.prototype._write=function(l,n,e){this._hash.update(l),e()},u.prototype.update=function(l,n){return"string"==typeof l&&(l=new e(l,n)),this._hash.update(l),this},u.prototype.sign=function(l,n){this.end();var u=this._hash.digest(),t=f(e.concat([this._tag,u]),l,this._hashType,this._signType);return n?t.toString(n):t},a(t,c.Writable),t.prototype._write=function(l,n,e){this._hash.update(l),e()},t.prototype.update=function(l,n){return"string"==typeof l&&(l=new e(l,n)),this._hash.update(l),this},t.prototype.verify=function(l,n,u){"string"==typeof n&&(n=new e(n,u)),this.end();var t=this._hash.digest();return h(n,e.concat([this._tag,t]),l,this._signType)},n.exports={Sign:r,Verify:i,createSign:r,createVerify:i}}).call(this,l("buffer").Buffer)},{"./algos":58,"./sign":61,"./verify":62,buffer:66,"create-hash":181,inherits:223,stream:266}],60:[function(l,n,e){"use strict";e["1.3.132.0.10"]="secp256k1",e["1.3.132.0.33"]="p224",e["1.2.840.10045.3.1.1"]="p192",e["1.2.840.10045.3.1.7"]="p256",e["1.3.132.0.34"]="p384",e["1.3.132.0.35"]="p521"},{}],61:[function(l,n,e){(function(e){function u(l,n,e,u){var i=v(n);if(i.curve){if("ecdsa"!==u)throw new Error("wrong private key type");return t(l,i)}if("dsa"===i.type){if("dsa"!==u)throw new Error("wrong private key type");return r(l,i,e)}if("rsa"!==u)throw new Error("wrong private key type");for(var o=i.modulus.byteLength(),s=[0,1];l.length+s.length+10&&e.ishrn(u),e}function a(l,n){l=s(l,n),l=l.mod(n);var u=new e(l.toArray());if(u.length=n)throw new Error("invalid sig")}var o=l("./curves"),s=l("elliptic"),a=l("parse-asn1"),f=l("bn.js"),c=s.ec;n.exports=u}).call(this,l("buffer").Buffer)},{"./curves":60,"bn.js":36,buffer:66,elliptic:196,"parse-asn1":233}],63:[function(l,n,e){arguments[4][38][0].apply(e,arguments)},{dup:38}],64:[function(l,n,e){(function(n){"use strict";var u=l("buffer"),t=u.Buffer,r=u.SlowBuffer,i=u.kMaxLength||2147483647;e.alloc=function(l,n,e){if("function"==typeof t.alloc)return t.alloc(l,n,e);if("number"==typeof e)throw new TypeError("encoding must not be number");if("number"!=typeof l)throw new TypeError("size must be a number");if(l>i)throw new RangeError("size is too large");var u=e,r=n;void 0===r&&(u=void 0,r=0);var o=new t(l);if("string"==typeof r)for(var s=new t(r,u),a=s.length,f=-1;++fi)throw new RangeError("size is too large");return new t(l)},e.from=function(l,e,u){if("function"==typeof t.from&&(!n.Uint8Array||Uint8Array.from!==t.from))return t.from(l,e,u);if("number"==typeof l)throw new TypeError('"value" argument must not be a number');if("string"==typeof l)return new t(l,e);if("undefined"!=typeof ArrayBuffer&&l instanceof ArrayBuffer){var r=e;if(1===arguments.length)return new t(l);"undefined"==typeof r&&(r=0);var i=u;if("undefined"==typeof i&&(i=l.byteLength-r),r>=l.byteLength)throw new RangeError("'offset' is out of bounds");if(i>l.byteLength-r)throw new RangeError("'length' is out of bounds");return new t(l.slice(r,r+i))}if(t.isBuffer(l)){var o=new t(l.length);return l.copy(o,0,0,l.length),o}if(l){if(Array.isArray(l)||"undefined"!=typeof ArrayBuffer&&l.buffer instanceof ArrayBuffer||"length"in l)return new t(l);if("Buffer"===l.type&&Array.isArray(l.data))return new t(l.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},e.allocUnsafeSlow=function(l){if("function"==typeof t.allocUnsafeSlow)return t.allocUnsafeSlow(l);if("number"!=typeof l)throw new TypeError("size must be a number");if(l>=i)throw new RangeError("size is too large");return new r(l)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:66}],65:[function(l,n,e){(function(l){n.exports=function(n,e){for(var u=Math.min(n.length,e.length),t=new l(u),r=0;r=t())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t().toString(16)+" bytes");return 0|l}function v(l){return+l!=l&&(l=0),i.alloc(+l)}function _(l,n){if(i.isBuffer(l))return l.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(l)||l instanceof ArrayBuffer))return l.byteLength;"string"!=typeof l&&(l=""+l);var e=l.length;if(0===e)return 0;for(var u=!1;;)switch(n){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return V(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return X(l).length;default:if(u)return V(l).length;n=(""+n).toLowerCase(),u=!0}}function y(l,n,e){var u=!1;if((void 0===n||n<0)&&(n=0),n>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if(e>>>=0,n>>>=0,e<=n)return"";for(l||(l="utf8");;)switch(l){case"hex":return O(this,n,e);case"utf8":case"utf-8":return x(this,n,e);case"ascii":return R(this,n,e);case"latin1":case"binary":return B(this,n,e);case"base64":return A(this,n,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,n,e);default:if(u)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),u=!0}}function m(l,n,e){var u=l[n];l[n]=l[e],l[e]=u}function g(l,n,e,u,t){if(0===l.length)return-1;if("string"==typeof e?(u=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=t?0:l.length-1),e<0&&(e=l.length+e),e>=l.length){if(t)return-1;e=l.length-1}else if(e<0){if(!t)return-1;e=0}if("string"==typeof n&&(n=i.from(n,u)),i.isBuffer(n))return 0===n.length?-1:w(l,n,e,u,t);if("number"==typeof n)return n=255&n,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?t?Uint8Array.prototype.indexOf.call(l,n,e):Uint8Array.prototype.lastIndexOf.call(l,n,e):w(l,[n],e,u,t);throw new TypeError("val must be string, number or Buffer")}function w(l,n,e,u,t){function r(l,n){return 1===i?l[n]:l.readUInt16BE(n*i)}var i=1,o=l.length,s=n.length;if(void 0!==u&&(u=String(u).toLowerCase(),"ucs2"===u||"ucs-2"===u||"utf16le"===u||"utf-16le"===u)){if(l.length<2||n.length<2)return-1;i=2,o/=2,s/=2,e/=2}var a;if(t){var f=-1;for(a=e;ao&&(e=o-s),a=e;a>=0;a--){for(var c=!0,h=0;ht&&(u=t)):u=t;var r=n.length;if(r%2!==0)throw new TypeError("Invalid hex string");u>r/2&&(u=r/2);for(var i=0;i239?4:r>223?3:r>191?2:1;if(t+o<=e){var s,a,f,c;switch(o){case 1:r<128&&(i=r);break;case 2:s=l[t+1],128===(192&s)&&(c=(31&r)<<6|63&s,c>127&&(i=c));break;case 3:s=l[t+1],a=l[t+2],128===(192&s)&&128===(192&a)&&(c=(15&r)<<12|(63&s)<<6|63&a,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:s=l[t+1],a=l[t+2],f=l[t+3],128===(192&s)&&128===(192&a)&&128===(192&f)&&(c=(15&r)<<18|(63&s)<<12|(63&a)<<6|63&f,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,u.push(i>>>10&1023|55296),i=56320|1023&i),u.push(i),t+=o}return C(u)}function C(l){var n=l.length;if(n<=ll)return String.fromCharCode.apply(String,l);for(var e="",u=0;uu)&&(e=u);for(var t="",r=n;re)throw new RangeError("Trying to access beyond buffer length")}function U(l,n,e,u,t,r){if(!i.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>t||nl.length)throw new RangeError("Index out of range")}function N(l,n,e,u){n<0&&(n=65535+n+1);for(var t=0,r=Math.min(l.length-e,2);t>>8*(u?t:1-t)}function L(l,n,e,u){n<0&&(n=4294967295+n+1);for(var t=0,r=Math.min(l.length-e,4);t>>8*(u?t:3-t)&255}function D(l,n,e,u,t,r){if(e+u>l.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function F(l,n,e,u,t){return t||D(l,n,e,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(l,n,e,u,23,4),e+4}function q(l,n,e,u,t){return t||D(l,n,e,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(l,n,e,u,52,8),e+8}function z(l){if(l=K(l).replace(nl,""),l.length<2)return"";for(;l.length%4!==0;)l+="=";return l}function K(l){return l.trim?l.trim():l.replace(/^\s+|\s+$/g,"")}function H(l){return l<16?"0"+l.toString(16):l.toString(16)}function V(l,n){n=n||1/0;for(var e,u=l.length,t=null,r=[],i=0;i55295&&e<57344){if(!t){if(e>56319){(n-=3)>-1&&r.push(239,191,189);continue}if(i+1===u){(n-=3)>-1&&r.push(239,191,189);continue}t=e;continue}if(e<56320){(n-=3)>-1&&r.push(239,191,189),t=e;continue}e=(t-55296<<10|e-56320)+65536}else t&&(n-=3)>-1&&r.push(239,191,189);if(t=null,e<128){if((n-=1)<0)break;r.push(e)}else if(e<2048){if((n-=2)<0)break;r.push(e>>6|192,63&e|128)}else if(e<65536){if((n-=3)<0)break;r.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;r.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return r}function Y(l){for(var n=[],e=0;e>8,t=e%256,r.push(t),r.push(u);return r}function X(l){return J.toByteArray(z(l))}function G(l,n,e,u){for(var t=0;t=n.length||t>=l.length);++t)n[t+e]=l[t];return t}function Z(l){return l!==l}var J=l("base64-js"),$=l("ieee754"),Q=l("isarray");e.Buffer=i,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,i.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:u(),e.kMaxLength=t(),i.poolSize=8192,i._augment=function(l){return l.__proto__=i.prototype,l},i.from=function(l,n,e){return o(null,l,n,e)},i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0})),i.alloc=function(l,n,e){return a(null,l,n,e)},i.allocUnsafe=function(l){return f(null,l)},i.allocUnsafeSlow=function(l){return f(null,l)},i.isBuffer=function(l){return!(null==l||!l._isBuffer)},i.compare=function(l,n){if(!i.isBuffer(l)||!i.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(l===n)return 0;for(var e=l.length,u=n.length,t=0,r=Math.min(e,u);t0&&(l=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(l+=" ... ")),""},i.prototype.compare=function(l,n,e,u,t){if(!i.isBuffer(l))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===e&&(e=l?l.length:0),void 0===u&&(u=0),void 0===t&&(t=this.length),n<0||e>l.length||u<0||t>this.length)throw new RangeError("out of range index");if(u>=t&&n>=e)return 0;if(u>=t)return-1;if(n>=e)return 1;if(n>>>=0,e>>>=0,u>>>=0,t>>>=0,this===l)return 0;for(var r=t-u,o=e-n,s=Math.min(r,o),a=this.slice(u,t),f=l.slice(n,e),c=0;ct)&&(e=t),l.length>0&&(e<0||n<0)||n>this.length)throw new RangeError("Attempt to write outside buffer bounds");u||(u="utf8");for(var r=!1;;)switch(u){case"hex":return k(this,l,n,e);case"utf8":case"utf-8":return S(this,l,n,e);case"ascii":return E(this,l,n,e);case"latin1":case"binary":return M(this,l,n,e);case"base64":return I(this,l,n,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,l,n,e);default:if(r)throw new TypeError("Unknown encoding: "+u);u=(""+u).toLowerCase(),r=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ll=4096;i.prototype.slice=function(l,n){var e=this.length;l=~~l,n=void 0===n?e:~~n,l<0?(l+=e,l<0&&(l=0)):l>e&&(l=e),n<0?(n+=e,n<0&&(n=0)):n>e&&(n=e),n0&&(t*=256);)u+=this[l+--n]*t;return u},i.prototype.readUInt8=function(l,n){return n||P(l,1,this.length),this[l]},i.prototype.readUInt16LE=function(l,n){return n||P(l,2,this.length),this[l]|this[l+1]<<8},i.prototype.readUInt16BE=function(l,n){return n||P(l,2,this.length),this[l]<<8|this[l+1]},i.prototype.readUInt32LE=function(l,n){return n||P(l,4,this.length),(this[l]|this[l+1]<<8|this[l+2]<<16)+16777216*this[l+3]},i.prototype.readUInt32BE=function(l,n){return n||P(l,4,this.length),16777216*this[l]+(this[l+1]<<16|this[l+2]<<8|this[l+3])},i.prototype.readIntLE=function(l,n,e){l=0|l,n=0|n,e||P(l,n,this.length);for(var u=this[l],t=1,r=0;++r=t&&(u-=Math.pow(2,8*n)),u},i.prototype.readIntBE=function(l,n,e){l=0|l,n=0|n,e||P(l,n,this.length);for(var u=n,t=1,r=this[l+--u];u>0&&(t*=256);)r+=this[l+--u]*t;return t*=128,r>=t&&(r-=Math.pow(2,8*n)),r},i.prototype.readInt8=function(l,n){return n||P(l,1,this.length),128&this[l]?(255-this[l]+1)*-1:this[l]},i.prototype.readInt16LE=function(l,n){n||P(l,2,this.length);var e=this[l]|this[l+1]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt16BE=function(l,n){n||P(l,2,this.length);var e=this[l+1]|this[l]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt32LE=function(l,n){return n||P(l,4,this.length),this[l]|this[l+1]<<8|this[l+2]<<16|this[l+3]<<24},i.prototype.readInt32BE=function(l,n){return n||P(l,4,this.length),this[l]<<24|this[l+1]<<16|this[l+2]<<8|this[l+3]},i.prototype.readFloatLE=function(l,n){return n||P(l,4,this.length),$.read(this,l,!0,23,4)},i.prototype.readFloatBE=function(l,n){return n||P(l,4,this.length),$.read(this,l,!1,23,4)},i.prototype.readDoubleLE=function(l,n){return n||P(l,8,this.length),$.read(this,l,!0,52,8)},i.prototype.readDoubleBE=function(l,n){return n||P(l,8,this.length),$.read(this,l,!1,52,8)},i.prototype.writeUIntLE=function(l,n,e,u){if(l=+l,n=0|n,e=0|e,!u){var t=Math.pow(2,8*e)-1;U(this,l,n,e,t,0)}var r=1,i=0;for(this[n]=255&l;++i=0&&(i*=256);)this[n+r]=l/i&255;return n+e},i.prototype.writeUInt8=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,1,255,0),i.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),this[n]=255&l,n+1},i.prototype.writeUInt16LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):N(this,l,n,!0),n+2},i.prototype.writeUInt16BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):N(this,l,n,!1),n+2},i.prototype.writeUInt32LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[n+3]=l>>>24,this[n+2]=l>>>16,this[n+1]=l>>>8,this[n]=255&l):L(this,l,n,!0),n+4},i.prototype.writeUInt32BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):L(this,l,n,!1),n+4},i.prototype.writeIntLE=function(l,n,e,u){if(l=+l,n=0|n,!u){var t=Math.pow(2,8*e-1);U(this,l,n,e,t-1,-t)}var r=0,i=1,o=0;for(this[n]=255&l;++r>0)-o&255;return n+e},i.prototype.writeIntBE=function(l,n,e,u){if(l=+l,n=0|n,!u){var t=Math.pow(2,8*e-1);U(this,l,n,e,t-1,-t)}var r=e-1,i=1,o=0;for(this[n+r]=255&l;--r>=0&&(i*=256);)l<0&&0===o&&0!==this[n+r+1]&&(o=1),this[n+r]=(l/i>>0)-o&255;return n+e},i.prototype.writeInt8=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,1,127,-128),i.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),l<0&&(l=255+l+1),this[n]=255&l,n+1},i.prototype.writeInt16LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):N(this,l,n,!0),n+2},i.prototype.writeInt16BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):N(this,l,n,!1),n+2},i.prototype.writeInt32LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8,this[n+2]=l>>>16,this[n+3]=l>>>24):L(this,l,n,!0),n+4},i.prototype.writeInt32BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,2147483647,-2147483648),l<0&&(l=4294967295+l+1),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):L(this,l,n,!1),n+4},i.prototype.writeFloatLE=function(l,n,e){return F(this,l,n,!0,e)},i.prototype.writeFloatBE=function(l,n,e){return F(this,l,n,!1,e)},i.prototype.writeDoubleLE=function(l,n,e){return q(this,l,n,!0,e)},i.prototype.writeDoubleBE=function(l,n,e){return q(this,l,n,!1,e)},i.prototype.copy=function(l,n,e,u){if(e||(e=0),u||0===u||(u=this.length),n>=l.length&&(n=l.length),n||(n=0),u>0&&u=this.length)throw new RangeError("sourceStart out of bounds");if(u<0)throw new RangeError("sourceEnd out of bounds");u>this.length&&(u=this.length),l.length-n=0;--t)l[t+n]=this[t+e];else if(r<1e3||!i.TYPED_ARRAY_SUPPORT)for(t=0;t>>=0,e=void 0===e?this.length:e>>>0,l||(l=0);var r;if("number"==typeof l)for(r=n;r>6],t=0===(32&e);if(31===(31&e)){var r=e;for(e=0;128===(128&r);){if(r=l.readUInt8(n),l.isError(r))return r;e<<=7,e|=127&r}}else e&=31;var i=c.tag[e];return{cls:u,primitive:t,tag:e,tagStr:i}}function i(l,n,e){var u=l.readUInt8(e);if(l.isError(u))return u;if(!n&&128===u)return null;if(0===(128&u))return u;var t=127&u;if(t>4)return l.error("length octect is too long");u=0;for(var r=0;r=31?u.error("Multi-octet tag encoding unsupported"):(n||(t|=32),t|=c.tagClassByName[e||"universal"]<<6)}var o=l("inherits"),s=l("buffer").Buffer,a=l("../../asn1"),f=a.base,c=a.constants.der;n.exports=u,u.prototype.encode=function(l,n){return this.tree._encode(l,n).join()},o(t,f.Node),t.prototype._encodeComposite=function(l,n,e,u){var t=i(l,n,e,this.reporter);if(u.length<128){var r=new s(2);return r[0]=t,r[1]=u.length,this._createEncoderBuffer([r,u])}for(var o=1,a=u.length;a>=256;a>>=8)o++;var r=new s(2+o);r[0]=t,r[1]=128|o;for(var a=1+o,f=u.length;f>0;a--,f>>=8)r[a]=255&f;return this._createEncoderBuffer([r,u])},t.prototype._encodeStr=function(l,n){if("bitstr"===n)return this._createEncoderBuffer([0|l.unused,l.data]);if("bmpstr"===n){for(var e=new s(2*l.length),u=0;u=40)return this.reporter.error("Second objid identifier OOB");l.splice(0,2,40*l[0]+l[1])}for(var t=0,u=0;u=128;r>>=7)t++}for(var i=new s(t),o=i.length-1,u=l.length-1;u>=0;u--){var r=l[u];for(i[o--]=127&r;(r>>=7)>0;)i[o--]=128|127&r}return this._createEncoderBuffer(i)},t.prototype._encodeTime=function(l,n){var e,u=new Date(l);return"gentime"===n?e=[r(u.getFullYear()),r(u.getUTCMonth()+1),r(u.getUTCDate()),r(u.getUTCHours()),r(u.getUTCMinutes()),r(u.getUTCSeconds()),"Z"].join(""):"utctime"===n?e=[r(u.getFullYear()%100),r(u.getUTCMonth()+1),r(u.getUTCDate()),r(u.getUTCHours()),r(u.getUTCMinutes()),r(u.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+n+" time is not supported yet"),this._encodeStr(e,"octstr")},t.prototype._encodeNull=function(){return this._createEncoderBuffer("")},t.prototype._encodeInt=function(l,n){if("string"==typeof l){if(!n)return this.reporter.error("String int or enum given, but no values map");if(!n.hasOwnProperty(l))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(l));l=n[l]}if("number"!=typeof l&&!s.isBuffer(l)){var e=l.toArray();!l.sign&&128&e[0]&&e.unshift(0),l=new s(e)}if(s.isBuffer(l)){var u=l.length;0===l.length&&u++;var t=new s(u);return l.copy(t),0===l.length&&(t[0]=0),this._createEncoderBuffer(t)}if(l<128)return this._createEncoderBuffer(l);if(l<256)return this._createEncoderBuffer([0,l]);for(var u=1,r=l;r>=256;r>>=8)u++;for(var t=new Array(u),r=t.length-1;r>=0;r--)t[r]=255&l,l>>=8;return 128&t[0]&&t.unshift(0),this._createEncoderBuffer(new s(t))},t.prototype._encodeBool=function(l){return this._createEncoderBuffer(l?255:0)},t.prototype._use=function(l,n){return"function"==typeof l&&(l=l(n)),l._getEncoder("der").tree},t.prototype._skipDefault=function(l,n,e){var u,t=this._baseState;if(null===t["default"])return!1;var r=l.join();if(void 0===t.defaultBuffer&&(t.defaultBuffer=this._encodeValue(t["default"],n,e).join()),r.length!==t.defaultBuffer.length)return!1;for(u=0;u0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===l[n-2]?2:"="===l[n-1]?1:0}function t(l){return 3*l.length/4-u(l)}function r(l){var n,e,t,r,i,o,s=l.length;i=u(l),o=new c(3*s/4-i),t=i>0?s-4:s;var a=0;for(n=0,e=0;n>16&255,o[a++]=r>>8&255,o[a++]=255&r;return 2===i?(r=f[l.charCodeAt(n)]<<2|f[l.charCodeAt(n+1)]>>4,o[a++]=255&r):1===i&&(r=f[l.charCodeAt(n)]<<10|f[l.charCodeAt(n+1)]<<4|f[l.charCodeAt(n+2)]>>2,o[a++]=r>>8&255,o[a++]=255&r),o}function i(l){return a[l>>18&63]+a[l>>12&63]+a[l>>6&63]+a[63&l]}function o(l,n,e){for(var u,t=[],r=n;rf?f:s+i));return 1===u?(n=l[e-1],t+=a[n>>2],t+=a[n<<4&63],t+="=="):2===u&&(n=(l[e-2]<<8)+l[e-1],t+=a[n>>10],t+=a[n>>4&63],t+=a[n<<2&63],t+="="),r.push(t),r.join("")}e.byteLength=t,e.toByteArray=r,e.fromByteArray=s;for(var a=[],f=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,p=h.length;d=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return u}function o(l,n,e,u){for(var t=0,r=Math.min(l.length,e),i=n;i=49?o-49+10:o>=17?o-17+10:o}return t}function s(l){for(var n=new Array(l.bitLength()),e=0;e>>t}return n}function a(l,n,e){e.negative=n.negative^l.negative;var u=l.length+n.length|0;e.length=u,u=u-1|0;var t=0|l.words[0],r=0|n.words[0],i=t*r,o=67108863&i,s=i/67108864|0;e.words[0]=o;for(var a=1;a>>26,c=67108863&s,h=Math.min(a,n.length-1),d=Math.max(0,a-l.length+1);d<=h;d++){var p=a-d|0;t=0|l.words[p],r=0|n.words[d],i=t*r+c,f+=i/67108864|0,c=67108863&i}e.words[a]=0|c,s=0|f}return 0!==s?e.words[a]=0|s:e.length--,e.strip()}function f(l,n,e){e.negative=n.negative^l.negative,e.length=l.length+n.length;for(var u=0,t=0,r=0;r>>26)|0,t+=i>>>26,i&=67108863}e.words[r]=o,u=i,i=t}return 0!==u?e.words[r]=u:e.length--,e.strip()}function c(l,n,e){var u=new h;return u.mulp(l,n,e)}function h(l,n){this.x=l,this.y=n}function d(l,n){this.name=l,this.p=new r(n,16),this.n=this.p.bitLength(),this.k=new r(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){d.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){d.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){d.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function _(){d.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function y(l){if("string"==typeof l){var n=r._prime(l);this.m=n.p,this.prime=n}else u(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}function m(l){y.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new r(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof n?n.exports=r:e.BN=r,r.BN=r,r.wordSize=26;var g;try{g=l("buffer").Buffer}catch(w){}r.isBN=function(l){return l instanceof r||null!==l&&"object"==typeof l&&l.constructor.wordSize===r.wordSize&&Array.isArray(l.words)},r.max=function(l,n){return l.cmp(n)>0?l:n},r.min=function(l,n){return l.cmp(n)<0?l:n},r.prototype._init=function(l,n,e){if("number"==typeof l)return this._initNumber(l,n,e);if("object"==typeof l)return this._initArray(l,n,e);"hex"===n&&(n=16),u(n===(0|n)&&n>=2&&n<=36),l=l.toString().replace(/\s+/g,"");var t=0;"-"===l[0]&&t++,16===n?this._parseHex(l,t):this._parseBase(l,n,t),"-"===l[0]&&(this.negative=1),this.strip(),"le"===e&&this._initArray(this.toArray(),n,e)},r.prototype._initNumber=function(l,n,e){l<0&&(this.negative=1,l=-l),l<67108864?(this.words=[67108863&l],this.length=1):l<4503599627370496?(this.words=[67108863&l,l/67108864&67108863],this.length=2):(u(l<9007199254740992),this.words=[67108863&l,l/67108864&67108863,1],this.length=3),"le"===e&&this._initArray(this.toArray(),n,e)},r.prototype._initArray=function(l,n,e){if(u("number"==typeof l.length),l.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(l.length/3),this.words=new Array(this.length);for(var t=0;t=0;t-=3)i=l[t]|l[t-1]<<8|l[t-2]<<16,this.words[r]|=i<>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);else if("le"===e)for(t=0,r=0;t>>26-o&67108863,o+=24,o>=26&&(o-=26,r++);return this.strip()},r.prototype._parseHex=function(l,n){this.length=Math.ceil((l.length-n)/6),this.words=new Array(this.length);for(var e=0;e=n;e-=6)t=i(l,e,e+6),this.words[u]|=t<>>26-r&4194303,r+=24,r>=26&&(r-=26,u++);e+6!==n&&(t=i(l,n,e+6),this.words[u]|=t<>>26-r&4194303),this.strip()},r.prototype._parseBase=function(l,n,e){this.words=[0],this.length=1;for(var u=0,t=1;t<=67108863;t*=n)u++;u--,t=t/n|0;for(var r=l.length-e,i=r%u,s=Math.min(r,r-i)+e,a=0,f=e;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},r.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},r.prototype.inspect=function(){return(this.red?""};var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],S=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];r.prototype.toString=function(l,n){l=l||10,n=0|n||1;var e;if(16===l||"hex"===l){e="";for(var t=0,r=0,i=0;i>>24-t&16777215,e=0!==r||i!==this.length-1?k[6-s.length]+s+e:s+e,t+=2,t>=26&&(t-=26,i--)}for(0!==r&&(e=r.toString(16)+e);e.length%n!==0;)e="0"+e;return 0!==this.negative&&(e="-"+e),e}if(l===(0|l)&&l>=2&&l<=36){var a=S[l],f=E[l];e="";var c=this.clone();for(c.negative=0;!c.isZero();){var h=c.modn(f).toString(l);c=c.idivn(f),e=c.isZero()?h+e:k[a-h.length]+h+e}for(this.isZero()&&(e="0"+e);e.length%n!==0;)e="0"+e;return 0!==this.negative&&(e="-"+e),e}u(!1,"Base should be between 2 and 36")},r.prototype.toNumber=function(){var l=this.words[0];return 2===this.length?l+=67108864*this.words[1]:3===this.length&&1===this.words[2]?l+=4503599627370496+67108864*this.words[1]:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-l:l},r.prototype.toJSON=function(){return this.toString(16)},r.prototype.toBuffer=function(l,n){return u("undefined"!=typeof g),this.toArrayLike(g,l,n)},r.prototype.toArray=function(l,n){return this.toArrayLike(Array,l,n)},r.prototype.toArrayLike=function(l,n,e){var t=this.byteLength(),r=e||Math.max(1,t);u(t<=r,"byte array longer than desired length"),u(r>0,"Requested array length <= 0"),this.strip();var i,o,s="le"===n,a=new l(r),f=this.clone();if(s){for(o=0;!f.isZero();o++)i=f.andln(255),f.iushrn(8),a[o]=i;for(;o=4096&&(e+=13,n>>>=13),n>=64&&(e+=7,n>>>=7),n>=8&&(e+=4,n>>>=4),n>=2&&(e+=2,n>>>=2),e+n},r.prototype._zeroBits=function(l){if(0===l)return 26;var n=l,e=0;return 0===(8191&n)&&(e+=13,n>>>=13),0===(127&n)&&(e+=7,n>>>=7),0===(15&n)&&(e+=4,n>>>=4),0===(3&n)&&(e+=2,n>>>=2),0===(1&n)&&e++,e},r.prototype.bitLength=function(){var l=this.words[this.length-1],n=this._countBits(l);return 26*(this.length-1)+n},r.prototype.zeroBits=function(){if(this.isZero())return 0;for(var l=0,n=0;nl.length?this.clone().ior(l):l.clone().ior(this)},r.prototype.uor=function(l){return this.length>l.length?this.clone().iuor(l):l.clone().iuor(this)},r.prototype.iuand=function(l){var n;n=this.length>l.length?l:this;for(var e=0;el.length?this.clone().iand(l):l.clone().iand(this)},r.prototype.uand=function(l){return this.length>l.length?this.clone().iuand(l):l.clone().iuand(this)},r.prototype.iuxor=function(l){var n,e;this.length>l.length?(n=this,e=l):(n=l,e=this);for(var u=0;ul.length?this.clone().ixor(l):l.clone().ixor(this)},r.prototype.uxor=function(l){return this.length>l.length?this.clone().iuxor(l):l.clone().iuxor(this)},r.prototype.inotn=function(l){u("number"==typeof l&&l>=0);var n=0|Math.ceil(l/26),e=l%26;this._expand(n),e>0&&n--;for(var t=0;t0&&(this.words[t]=~this.words[t]&67108863>>26-e),this.strip()},r.prototype.notn=function(l){return this.clone().inotn(l)},r.prototype.setn=function(l,n){u("number"==typeof l&&l>=0);var e=l/26|0,t=l%26;return this._expand(e+1),n?this.words[e]=this.words[e]|1<l.length?(e=this,u=l):(e=l,u=this);for(var t=0,r=0;r>>26;for(;0!==t&&r>>26;if(this.length=e.length,0!==t)this.words[this.length]=t,this.length++;else if(e!==this)for(;rl.length?this.clone().iadd(l):l.clone().iadd(this)},r.prototype.isub=function(l){if(0!==l.negative){l.negative=0;var n=this.iadd(l);return l.negative=1,n._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(l),this.negative=1,this._normSign();var e=this.cmp(l);if(0===e)return this.negative=0,this.length=1,this.words[0]=0,this;var u,t;e>0?(u=this,t=l):(u=l,t=this);for(var r=0,i=0;i>26,this.words[i]=67108863&n;for(;0!==r&&i>26,this.words[i]=67108863&n;if(0===r&&i>>13,d=0|i[1],p=8191&d,b=d>>>13,v=0|i[2],_=8191&v,y=v>>>13,m=0|i[3],g=8191&m,w=m>>>13,k=0|i[4],S=8191&k,E=k>>>13,M=0|i[5],I=8191&M,j=M>>>13,A=0|i[6],x=8191&A,C=A>>>13,R=0|i[7],B=8191&R,O=R>>>13,T=0|i[8],P=8191&T,U=T>>>13,N=0|i[9],L=8191&N,D=N>>>13,q=0|o[0],F=8191&q,z=q>>>13,K=0|o[1],H=8191&K,V=K>>>13,Y=0|o[2],W=8191&Y,X=Y>>>13,G=0|o[3],Z=8191&G,J=G>>>13,$=0|o[4],Q=8191&$,ll=$>>>13,nl=0|o[5],el=8191&nl,ul=nl>>>13,tl=0|o[6],rl=8191&tl,il=tl>>>13,ol=0|o[7],sl=8191&ol,al=ol>>>13,fl=0|o[8],cl=8191&fl,hl=fl>>>13,dl=0|o[9],pl=8191&dl,bl=dl>>>13;e.negative=l.negative^n.negative,e.length=19,u=Math.imul(c,F),t=Math.imul(c,z),t=t+Math.imul(h,F)|0,r=Math.imul(h,z);var vl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(vl>>>26)|0,vl&=67108863,u=Math.imul(p,F),t=Math.imul(p,z),t=t+Math.imul(b,F)|0,r=Math.imul(b,z),u=u+Math.imul(c,H)|0,t=t+Math.imul(c,V)|0,t=t+Math.imul(h,H)|0,r=r+Math.imul(h,V)|0;var _l=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(_l>>>26)|0,_l&=67108863,u=Math.imul(_,F),t=Math.imul(_,z),t=t+Math.imul(y,F)|0,r=Math.imul(y,z),u=u+Math.imul(p,H)|0,t=t+Math.imul(p,V)|0,t=t+Math.imul(b,H)|0,r=r+Math.imul(b,V)|0,u=u+Math.imul(c,W)|0,t=t+Math.imul(c,X)|0,t=t+Math.imul(h,W)|0,r=r+Math.imul(h,X)|0;var yl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(yl>>>26)|0,yl&=67108863,u=Math.imul(g,F),t=Math.imul(g,z),t=t+Math.imul(w,F)|0,r=Math.imul(w,z),u=u+Math.imul(_,H)|0,t=t+Math.imul(_,V)|0,t=t+Math.imul(y,H)|0,r=r+Math.imul(y,V)|0,u=u+Math.imul(p,W)|0,t=t+Math.imul(p,X)|0,t=t+Math.imul(b,W)|0,r=r+Math.imul(b,X)|0,u=u+Math.imul(c,Z)|0,t=t+Math.imul(c,J)|0,t=t+Math.imul(h,Z)|0,r=r+Math.imul(h,J)|0;var ml=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(ml>>>26)|0,ml&=67108863,u=Math.imul(S,F),t=Math.imul(S,z),t=t+Math.imul(E,F)|0,r=Math.imul(E,z),u=u+Math.imul(g,H)|0,t=t+Math.imul(g,V)|0,t=t+Math.imul(w,H)|0,r=r+Math.imul(w,V)|0,u=u+Math.imul(_,W)|0,t=t+Math.imul(_,X)|0,t=t+Math.imul(y,W)|0,r=r+Math.imul(y,X)|0,u=u+Math.imul(p,Z)|0,t=t+Math.imul(p,J)|0,t=t+Math.imul(b,Z)|0,r=r+Math.imul(b,J)|0,u=u+Math.imul(c,Q)|0,t=t+Math.imul(c,ll)|0,t=t+Math.imul(h,Q)|0,r=r+Math.imul(h,ll)|0;var gl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(gl>>>26)|0,gl&=67108863,u=Math.imul(I,F),t=Math.imul(I,z),t=t+Math.imul(j,F)|0,r=Math.imul(j,z),u=u+Math.imul(S,H)|0,t=t+Math.imul(S,V)|0,t=t+Math.imul(E,H)|0,r=r+Math.imul(E,V)|0,u=u+Math.imul(g,W)|0,t=t+Math.imul(g,X)|0,t=t+Math.imul(w,W)|0,r=r+Math.imul(w,X)|0,u=u+Math.imul(_,Z)|0,t=t+Math.imul(_,J)|0,t=t+Math.imul(y,Z)|0,r=r+Math.imul(y,J)|0,u=u+Math.imul(p,Q)|0,t=t+Math.imul(p,ll)|0,t=t+Math.imul(b,Q)|0,r=r+Math.imul(b,ll)|0,u=u+Math.imul(c,el)|0,t=t+Math.imul(c,ul)|0,t=t+Math.imul(h,el)|0,r=r+Math.imul(h,ul)|0;var wl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(wl>>>26)|0,wl&=67108863,u=Math.imul(x,F),t=Math.imul(x,z),t=t+Math.imul(C,F)|0,r=Math.imul(C,z),u=u+Math.imul(I,H)|0,t=t+Math.imul(I,V)|0,t=t+Math.imul(j,H)|0,r=r+Math.imul(j,V)|0,u=u+Math.imul(S,W)|0,t=t+Math.imul(S,X)|0,t=t+Math.imul(E,W)|0,r=r+Math.imul(E,X)|0,u=u+Math.imul(g,Z)|0,t=t+Math.imul(g,J)|0,t=t+Math.imul(w,Z)|0,r=r+Math.imul(w,J)|0,u=u+Math.imul(_,Q)|0,t=t+Math.imul(_,ll)|0,t=t+Math.imul(y,Q)|0,r=r+Math.imul(y,ll)|0,u=u+Math.imul(p,el)|0,t=t+Math.imul(p,ul)|0,t=t+Math.imul(b,el)|0,r=r+Math.imul(b,ul)|0,u=u+Math.imul(c,rl)|0,t=t+Math.imul(c,il)|0,t=t+Math.imul(h,rl)|0,r=r+Math.imul(h,il)|0;var kl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(kl>>>26)|0,kl&=67108863,u=Math.imul(B,F),t=Math.imul(B,z),t=t+Math.imul(O,F)|0,r=Math.imul(O,z),u=u+Math.imul(x,H)|0,t=t+Math.imul(x,V)|0,t=t+Math.imul(C,H)|0,r=r+Math.imul(C,V)|0,u=u+Math.imul(I,W)|0,t=t+Math.imul(I,X)|0,t=t+Math.imul(j,W)|0,r=r+Math.imul(j,X)|0,u=u+Math.imul(S,Z)|0,t=t+Math.imul(S,J)|0,t=t+Math.imul(E,Z)|0,r=r+Math.imul(E,J)|0,u=u+Math.imul(g,Q)|0,t=t+Math.imul(g,ll)|0,t=t+Math.imul(w,Q)|0,r=r+Math.imul(w,ll)|0,u=u+Math.imul(_,el)|0,t=t+Math.imul(_,ul)|0,t=t+Math.imul(y,el)|0,r=r+Math.imul(y,ul)|0,u=u+Math.imul(p,rl)|0,t=t+Math.imul(p,il)|0,t=t+Math.imul(b,rl)|0,r=r+Math.imul(b,il)|0,u=u+Math.imul(c,sl)|0,t=t+Math.imul(c,al)|0,t=t+Math.imul(h,sl)|0,r=r+Math.imul(h,al)|0;var Sl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Sl>>>26)|0,Sl&=67108863,u=Math.imul(P,F),t=Math.imul(P,z),t=t+Math.imul(U,F)|0,r=Math.imul(U,z),u=u+Math.imul(B,H)|0,t=t+Math.imul(B,V)|0,t=t+Math.imul(O,H)|0,r=r+Math.imul(O,V)|0,u=u+Math.imul(x,W)|0,t=t+Math.imul(x,X)|0,t=t+Math.imul(C,W)|0,r=r+Math.imul(C,X)|0,u=u+Math.imul(I,Z)|0,t=t+Math.imul(I,J)|0,t=t+Math.imul(j,Z)|0,r=r+Math.imul(j,J)|0,u=u+Math.imul(S,Q)|0,t=t+Math.imul(S,ll)|0,t=t+Math.imul(E,Q)|0,r=r+Math.imul(E,ll)|0,u=u+Math.imul(g,el)|0,t=t+Math.imul(g,ul)|0,t=t+Math.imul(w,el)|0,r=r+Math.imul(w,ul)|0,u=u+Math.imul(_,rl)|0,t=t+Math.imul(_,il)|0,t=t+Math.imul(y,rl)|0,r=r+Math.imul(y,il)|0,u=u+Math.imul(p,sl)|0,t=t+Math.imul(p,al)|0,t=t+Math.imul(b,sl)|0,r=r+Math.imul(b,al)|0,u=u+Math.imul(c,cl)|0,t=t+Math.imul(c,hl)|0,t=t+Math.imul(h,cl)|0,r=r+Math.imul(h,hl)|0;var El=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(El>>>26)|0,El&=67108863,u=Math.imul(L,F),t=Math.imul(L,z),t=t+Math.imul(D,F)|0,r=Math.imul(D,z),u=u+Math.imul(P,H)|0,t=t+Math.imul(P,V)|0,t=t+Math.imul(U,H)|0,r=r+Math.imul(U,V)|0,u=u+Math.imul(B,W)|0,t=t+Math.imul(B,X)|0,t=t+Math.imul(O,W)|0,r=r+Math.imul(O,X)|0,u=u+Math.imul(x,Z)|0,t=t+Math.imul(x,J)|0,t=t+Math.imul(C,Z)|0,r=r+Math.imul(C,J)|0,u=u+Math.imul(I,Q)|0,t=t+Math.imul(I,ll)|0,t=t+Math.imul(j,Q)|0,r=r+Math.imul(j,ll)|0,u=u+Math.imul(S,el)|0,t=t+Math.imul(S,ul)|0,t=t+Math.imul(E,el)|0,r=r+Math.imul(E,ul)|0,u=u+Math.imul(g,rl)|0,t=t+Math.imul(g,il)|0,t=t+Math.imul(w,rl)|0,r=r+Math.imul(w,il)|0,u=u+Math.imul(_,sl)|0,t=t+Math.imul(_,al)|0,t=t+Math.imul(y,sl)|0,r=r+Math.imul(y,al)|0,u=u+Math.imul(p,cl)|0,t=t+Math.imul(p,hl)|0,t=t+Math.imul(b,cl)|0,r=r+Math.imul(b,hl)|0,u=u+Math.imul(c,pl)|0,t=t+Math.imul(c,bl)|0,t=t+Math.imul(h,pl)|0,r=r+Math.imul(h,bl)|0;var Ml=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Ml>>>26)|0,Ml&=67108863,u=Math.imul(L,H),t=Math.imul(L,V),t=t+Math.imul(D,H)|0,r=Math.imul(D,V),u=u+Math.imul(P,W)|0,t=t+Math.imul(P,X)|0,t=t+Math.imul(U,W)|0,r=r+Math.imul(U,X)|0,u=u+Math.imul(B,Z)|0,t=t+Math.imul(B,J)|0,t=t+Math.imul(O,Z)|0,r=r+Math.imul(O,J)|0,u=u+Math.imul(x,Q)|0,t=t+Math.imul(x,ll)|0,t=t+Math.imul(C,Q)|0,r=r+Math.imul(C,ll)|0,u=u+Math.imul(I,el)|0,t=t+Math.imul(I,ul)|0,t=t+Math.imul(j,el)|0,r=r+Math.imul(j,ul)|0,u=u+Math.imul(S,rl)|0,t=t+Math.imul(S,il)|0,t=t+Math.imul(E,rl)|0,r=r+Math.imul(E,il)|0,u=u+Math.imul(g,sl)|0,t=t+Math.imul(g,al)|0,t=t+Math.imul(w,sl)|0,r=r+Math.imul(w,al)|0,u=u+Math.imul(_,cl)|0,t=t+Math.imul(_,hl)|0,t=t+Math.imul(y,cl)|0,r=r+Math.imul(y,hl)|0,u=u+Math.imul(p,pl)|0,t=t+Math.imul(p,bl)|0,t=t+Math.imul(b,pl)|0,r=r+Math.imul(b,bl)|0;var Il=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Il>>>26)|0,Il&=67108863,u=Math.imul(L,W),t=Math.imul(L,X),t=t+Math.imul(D,W)|0,r=Math.imul(D,X),u=u+Math.imul(P,Z)|0,t=t+Math.imul(P,J)|0,t=t+Math.imul(U,Z)|0,r=r+Math.imul(U,J)|0,u=u+Math.imul(B,Q)|0,t=t+Math.imul(B,ll)|0,t=t+Math.imul(O,Q)|0,r=r+Math.imul(O,ll)|0,u=u+Math.imul(x,el)|0,t=t+Math.imul(x,ul)|0,t=t+Math.imul(C,el)|0,r=r+Math.imul(C,ul)|0,u=u+Math.imul(I,rl)|0,t=t+Math.imul(I,il)|0,t=t+Math.imul(j,rl)|0,r=r+Math.imul(j,il)|0,u=u+Math.imul(S,sl)|0,t=t+Math.imul(S,al)|0,t=t+Math.imul(E,sl)|0,r=r+Math.imul(E,al)|0,u=u+Math.imul(g,cl)|0,t=t+Math.imul(g,hl)|0,t=t+Math.imul(w,cl)|0,r=r+Math.imul(w,hl)|0,u=u+Math.imul(_,pl)|0,t=t+Math.imul(_,bl)|0,t=t+Math.imul(y,pl)|0,r=r+Math.imul(y,bl)|0;var jl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(jl>>>26)|0,jl&=67108863,u=Math.imul(L,Z),t=Math.imul(L,J),t=t+Math.imul(D,Z)|0,r=Math.imul(D,J),u=u+Math.imul(P,Q)|0,t=t+Math.imul(P,ll)|0,t=t+Math.imul(U,Q)|0,r=r+Math.imul(U,ll)|0,u=u+Math.imul(B,el)|0,t=t+Math.imul(B,ul)|0,t=t+Math.imul(O,el)|0,r=r+Math.imul(O,ul)|0,u=u+Math.imul(x,rl)|0,t=t+Math.imul(x,il)|0,t=t+Math.imul(C,rl)|0,r=r+Math.imul(C,il)|0,u=u+Math.imul(I,sl)|0,t=t+Math.imul(I,al)|0,t=t+Math.imul(j,sl)|0,r=r+Math.imul(j,al)|0,u=u+Math.imul(S,cl)|0,t=t+Math.imul(S,hl)|0,t=t+Math.imul(E,cl)|0,r=r+Math.imul(E,hl)|0,u=u+Math.imul(g,pl)|0,t=t+Math.imul(g,bl)|0,t=t+Math.imul(w,pl)|0,r=r+Math.imul(w,bl)|0;var Al=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Al>>>26)|0,Al&=67108863,u=Math.imul(L,Q),t=Math.imul(L,ll),t=t+Math.imul(D,Q)|0,r=Math.imul(D,ll),u=u+Math.imul(P,el)|0,t=t+Math.imul(P,ul)|0,t=t+Math.imul(U,el)|0,r=r+Math.imul(U,ul)|0,u=u+Math.imul(B,rl)|0,t=t+Math.imul(B,il)|0,t=t+Math.imul(O,rl)|0,r=r+Math.imul(O,il)|0,u=u+Math.imul(x,sl)|0,t=t+Math.imul(x,al)|0,t=t+Math.imul(C,sl)|0,r=r+Math.imul(C,al)|0,u=u+Math.imul(I,cl)|0,t=t+Math.imul(I,hl)|0,t=t+Math.imul(j,cl)|0,r=r+Math.imul(j,hl)|0,u=u+Math.imul(S,pl)|0,t=t+Math.imul(S,bl)|0,t=t+Math.imul(E,pl)|0,r=r+Math.imul(E,bl)|0;var xl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(xl>>>26)|0,xl&=67108863,u=Math.imul(L,el),t=Math.imul(L,ul),t=t+Math.imul(D,el)|0,r=Math.imul(D,ul),u=u+Math.imul(P,rl)|0,t=t+Math.imul(P,il)|0,t=t+Math.imul(U,rl)|0,r=r+Math.imul(U,il)|0,u=u+Math.imul(B,sl)|0,t=t+Math.imul(B,al)|0,t=t+Math.imul(O,sl)|0,r=r+Math.imul(O,al)|0,u=u+Math.imul(x,cl)|0,t=t+Math.imul(x,hl)|0,t=t+Math.imul(C,cl)|0,r=r+Math.imul(C,hl)|0,u=u+Math.imul(I,pl)|0,t=t+Math.imul(I,bl)|0,t=t+Math.imul(j,pl)|0,r=r+Math.imul(j,bl)|0;var Cl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Cl>>>26)|0,Cl&=67108863,u=Math.imul(L,rl),t=Math.imul(L,il),t=t+Math.imul(D,rl)|0,r=Math.imul(D,il),u=u+Math.imul(P,sl)|0,t=t+Math.imul(P,al)|0,t=t+Math.imul(U,sl)|0,r=r+Math.imul(U,al)|0,u=u+Math.imul(B,cl)|0,t=t+Math.imul(B,hl)|0,t=t+Math.imul(O,cl)|0,r=r+Math.imul(O,hl)|0,u=u+Math.imul(x,pl)|0,t=t+Math.imul(x,bl)|0,t=t+Math.imul(C,pl)|0,r=r+Math.imul(C,bl)|0;var Rl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Rl>>>26)|0,Rl&=67108863,u=Math.imul(L,sl),t=Math.imul(L,al),t=t+Math.imul(D,sl)|0,r=Math.imul(D,al),u=u+Math.imul(P,cl)|0,t=t+Math.imul(P,hl)|0,t=t+Math.imul(U,cl)|0,r=r+Math.imul(U,hl)|0,u=u+Math.imul(B,pl)|0,t=t+Math.imul(B,bl)|0,t=t+Math.imul(O,pl)|0,r=r+Math.imul(O,bl)|0;var Bl=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Bl>>>26)|0,Bl&=67108863,u=Math.imul(L,cl),t=Math.imul(L,hl),t=t+Math.imul(D,cl)|0,r=Math.imul(D,hl),u=u+Math.imul(P,pl)|0,t=t+Math.imul(P,bl)|0,t=t+Math.imul(U,pl)|0,r=r+Math.imul(U,bl)|0;var Ol=(a+u|0)+((8191&t)<<13)|0;a=(r+(t>>>13)|0)+(Ol>>>26)|0,Ol&=67108863,u=Math.imul(L,pl),t=Math.imul(L,bl),t=t+Math.imul(D,pl)|0,r=Math.imul(D,bl);var Tl=(a+u|0)+((8191&t)<<13)|0;return a=(r+(t>>>13)|0)+(Tl>>>26)|0,Tl&=67108863,s[0]=vl,s[1]=_l,s[2]=yl,s[3]=ml,s[4]=gl,s[5]=wl,s[6]=kl,s[7]=Sl,s[8]=El,s[9]=Ml,s[10]=Il,s[11]=jl,s[12]=Al,s[13]=xl,s[14]=Cl,s[15]=Rl,s[16]=Bl,s[17]=Ol,s[18]=Tl,0!==a&&(s[19]=a,e.length++),e};Math.imul||(M=a),r.prototype.mulTo=function(l,n){var e,u=this.length+l.length;return e=10===this.length&&10===l.length?M(this,l,n):u<63?a(this,l,n):u<1024?f(this,l,n):c(this,l,n)},h.prototype.makeRBT=function(l){for(var n=new Array(l),e=r.prototype._countBits(l)-1,u=0;u>=1;return u},h.prototype.permute=function(l,n,e,u,t,r){for(var i=0;i>>=1)t++;return 1<>>=13,e[2*i+1]=8191&r,r>>>=13;for(i=2*n;i>=26,n+=t/67108864|0,n+=r>>>26,this.words[e]=67108863&r}return 0!==n&&(this.words[e]=n,this.length++),this},r.prototype.muln=function(l){return this.clone().imuln(l)},r.prototype.sqr=function(){return this.mul(this)},r.prototype.isqr=function(){return this.imul(this.clone())},r.prototype.pow=function(l){var n=s(l);if(0===n.length)return new r(1);for(var e=this,u=0;u=0);var n,e=l%26,t=(l-e)/26,r=67108863>>>26-e<<26-e;if(0!==e){var i=0;for(n=0;n>>26-e}i&&(this.words[n]=i,this.length++)}if(0!==t){for(n=this.length-1;n>=0;n--)this.words[n+t]=this.words[n];for(n=0;n=0);var t;t=n?(n-n%26)/26:0;var r=l%26,i=Math.min((l-r)/26,this.length),o=67108863^67108863>>>r<i)for(this.length-=i,a=0;a=0&&(0!==f||a>=t);a--){var c=0|this.words[a];this.words[a]=f<<26-r|c>>>r,f=c&o}return s&&0!==f&&(s.words[s.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},r.prototype.ishrn=function(l,n,e){return u(0===this.negative),this.iushrn(l,n,e)},r.prototype.shln=function(l){return this.clone().ishln(l)},r.prototype.ushln=function(l){return this.clone().iushln(l)},r.prototype.shrn=function(l){return this.clone().ishrn(l)},r.prototype.ushrn=function(l){return this.clone().iushrn(l)},r.prototype.testn=function(l){u("number"==typeof l&&l>=0);var n=l%26,e=(l-n)/26,t=1<=0);var n=l%26,e=(l-n)/26;if(u(0===this.negative,"imaskn works only with positive numbers"),this.length<=e)return this;if(0!==n&&e++,this.length=Math.min(e,this.length),0!==n){var t=67108863^67108863>>>n<=67108864;n++)this.words[n]-=67108864,n===this.length-1?this.words[n+1]=1:this.words[n+1]++;return this.length=Math.max(this.length,n+1),this},r.prototype.isubn=function(l){if(u("number"==typeof l),u(l<67108864),l<0)return this.iaddn(-l);if(0!==this.negative)return this.negative=0,this.iaddn(l),this.negative=1,this;if(this.words[0]-=l,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var n=0;n>26)-(s/67108864|0),this.words[t+e]=67108863&i}for(;t>26,this.words[t+e]=67108863&i;if(0===o)return this.strip();for(u(o===-1),o=0,t=0;t>26,this.words[t]=67108863&i;return this.negative=1,this.strip()},r.prototype._wordDiv=function(l,n){var e=this.length-l.length,u=this.clone(),t=l,i=0|t.words[t.length-1],o=this._countBits(i);e=26-o,0!==e&&(t=t.ushln(e),u.iushln(e),i=0|t.words[t.length-1]);var s,a=u.length-t.length;if("mod"!==n){s=new r(null),s.length=a+1,s.words=new Array(s.length);for(var f=0;f=0;h--){var d=67108864*(0|u.words[t.length+h])+(0|u.words[t.length+h-1]);for(d=Math.min(d/i|0,67108863),u._ishlnsubmul(t,d,h);0!==u.negative;)d--,u.negative=0,u._ishlnsubmul(t,1,h),u.isZero()||(u.negative^=1);s&&(s.words[h]=d)}return s&&s.strip(),u.strip(),"div"!==n&&0!==e&&u.iushrn(e),{div:s||null,mod:u}},r.prototype.divmod=function(l,n,e){if(u(!l.isZero()),this.isZero())return{div:new r(0),mod:new r(0)};var t,i,o;return 0!==this.negative&&0===l.negative?(o=this.neg().divmod(l,n),"mod"!==n&&(t=o.div.neg()),"div"!==n&&(i=o.mod.neg(),e&&0!==i.negative&&i.iadd(l)),{div:t,mod:i}):0===this.negative&&0!==l.negative?(o=this.divmod(l.neg(),n),"mod"!==n&&(t=o.div.neg()),{div:t,mod:o.mod}):0!==(this.negative&l.negative)?(o=this.neg().divmod(l.neg(),n),"div"!==n&&(i=o.mod.neg(),e&&0!==i.negative&&i.isub(l)),{div:o.div,mod:i}):l.length>this.length||this.cmp(l)<0?{div:new r(0),mod:this}:1===l.length?"div"===n?{div:this.divn(l.words[0]),mod:null}:"mod"===n?{div:null,mod:new r(this.modn(l.words[0]))}:{div:this.divn(l.words[0]),mod:new r(this.modn(l.words[0]))}:this._wordDiv(l,n)},r.prototype.div=function(l){return this.divmod(l,"div",!1).div},r.prototype.mod=function(l){return this.divmod(l,"mod",!1).mod},r.prototype.umod=function(l){return this.divmod(l,"mod",!0).mod},r.prototype.divRound=function(l){var n=this.divmod(l);if(n.mod.isZero())return n.div;var e=0!==n.div.negative?n.mod.isub(l):n.mod,u=l.ushrn(1),t=l.andln(1),r=e.cmp(u);return r<0||1===t&&0===r?n.div:0!==n.div.negative?n.div.isubn(1):n.div.iaddn(1)},r.prototype.modn=function(l){u(l<=67108863);for(var n=(1<<26)%l,e=0,t=this.length-1;t>=0;t--)e=(n*e+(0|this.words[t]))%l;return e},r.prototype.idivn=function(l){u(l<=67108863);for(var n=0,e=this.length-1;e>=0;e--){var t=(0|this.words[e])+67108864*n;this.words[e]=t/l|0,n=t%l}return this.strip(); +},r.prototype.divn=function(l){return this.clone().idivn(l)},r.prototype.egcd=function(l){u(0===l.negative),u(!l.isZero());var n=this,e=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=new r(0),s=new r(1),a=0;n.isEven()&&e.isEven();)n.iushrn(1),e.iushrn(1),++a;for(var f=e.clone(),c=n.clone();!n.isZero();){for(var h=0,d=1;0===(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(t.isOdd()||i.isOdd())&&(t.iadd(f),i.isub(c)),t.iushrn(1),i.iushrn(1);for(var p=0,b=1;0===(e.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(e.iushrn(p);p-- >0;)(o.isOdd()||s.isOdd())&&(o.iadd(f),s.isub(c)),o.iushrn(1),s.iushrn(1);n.cmp(e)>=0?(n.isub(e),t.isub(o),i.isub(s)):(e.isub(n),o.isub(t),s.isub(i))}return{a:o,b:s,gcd:e.iushln(a)}},r.prototype._invmp=function(l){u(0===l.negative),u(!l.isZero());var n=this,e=l.clone();n=0!==n.negative?n.umod(l):n.clone();for(var t=new r(1),i=new r(0),o=e.clone();n.cmpn(1)>0&&e.cmpn(1)>0;){for(var s=0,a=1;0===(n.words[0]&a)&&s<26;++s,a<<=1);if(s>0)for(n.iushrn(s);s-- >0;)t.isOdd()&&t.iadd(o),t.iushrn(1);for(var f=0,c=1;0===(e.words[0]&c)&&f<26;++f,c<<=1);if(f>0)for(e.iushrn(f);f-- >0;)i.isOdd()&&i.iadd(o),i.iushrn(1);n.cmp(e)>=0?(n.isub(e),t.isub(i)):(e.isub(n),i.isub(t))}var h;return h=0===n.cmpn(1)?t:i,h.cmpn(0)<0&&h.iadd(l),h},r.prototype.gcd=function(l){if(this.isZero())return l.abs();if(l.isZero())return this.abs();var n=this.clone(),e=l.clone();n.negative=0,e.negative=0;for(var u=0;n.isEven()&&e.isEven();u++)n.iushrn(1),e.iushrn(1);for(;;){for(;n.isEven();)n.iushrn(1);for(;e.isEven();)e.iushrn(1);var t=n.cmp(e);if(t<0){var r=n;n=e,e=r}else if(0===t||0===e.cmpn(1))break;n.isub(e)}return e.iushln(u)},r.prototype.invm=function(l){return this.egcd(l).a.umod(l)},r.prototype.isEven=function(){return 0===(1&this.words[0])},r.prototype.isOdd=function(){return 1===(1&this.words[0])},r.prototype.andln=function(l){return this.words[0]&l},r.prototype.bincn=function(l){u("number"==typeof l);var n=l%26,e=(l-n)/26,t=1<>>26,o&=67108863,this.words[i]=o}return 0!==r&&(this.words[i]=r,this.length++),this},r.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},r.prototype.cmpn=function(l){var n=l<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;this.strip();var e;if(this.length>1)e=1;else{n&&(l=-l),u(l<=67108863,"Number is too big");var t=0|this.words[0];e=t===l?0:tl.length)return 1;if(this.length=0;e--){var u=0|this.words[e],t=0|l.words[e];if(u!==t){ut&&(n=1);break}}return n},r.prototype.gtn=function(l){return 1===this.cmpn(l)},r.prototype.gt=function(l){return 1===this.cmp(l)},r.prototype.gten=function(l){return this.cmpn(l)>=0},r.prototype.gte=function(l){return this.cmp(l)>=0},r.prototype.ltn=function(l){return this.cmpn(l)===-1},r.prototype.lt=function(l){return this.cmp(l)===-1},r.prototype.lten=function(l){return this.cmpn(l)<=0},r.prototype.lte=function(l){return this.cmp(l)<=0},r.prototype.eqn=function(l){return 0===this.cmpn(l)},r.prototype.eq=function(l){return 0===this.cmp(l)},r.red=function(l){return new y(l)},r.prototype.toRed=function(l){return u(!this.red,"Already a number in reduction context"),u(0===this.negative,"red works only with positives"),l.convertTo(this)._forceRed(l)},r.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},r.prototype._forceRed=function(l){return this.red=l,this},r.prototype.forceRed=function(l){return u(!this.red,"Already a number in reduction context"),this._forceRed(l)},r.prototype.redAdd=function(l){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,l)},r.prototype.redIAdd=function(l){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,l)},r.prototype.redSub=function(l){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,l)},r.prototype.redISub=function(l){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,l)},r.prototype.redShl=function(l){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,l)},r.prototype.redMul=function(l){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.mul(this,l)},r.prototype.redIMul=function(l){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,l),this.red.imul(this,l)},r.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},r.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},r.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},r.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},r.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},r.prototype.redPow=function(l){return u(this.red&&!l.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,l)};var I={k256:null,p224:null,p192:null,p25519:null};d.prototype._tmp=function(){var l=new r(null);return l.words=new Array(Math.ceil(this.n/13)),l},d.prototype.ireduce=function(l){var n,e=l;do this.split(e,this.tmp),e=this.imulK(e),e=e.iadd(this.tmp),n=e.bitLength();while(n>this.n);var u=n0?e.isub(this.p):e.strip(),e},d.prototype.split=function(l,n){l.iushrn(this.n,0,n)},d.prototype.imulK=function(l){return l.imul(this.k)},t(p,d),p.prototype.split=function(l,n){for(var e=4194303,u=Math.min(l.length,9),t=0;t>>22,r=i}r>>>=22,l.words[t-10]=r,0===r&&l.length>10?l.length-=10:l.length-=9},p.prototype.imulK=function(l){l.words[l.length]=0,l.words[l.length+1]=0,l.length+=2;for(var n=0,e=0;e>>=26,l.words[e]=t,n=u}return 0!==n&&(l.words[l.length++]=n),l},r._prime=function j(l){if(I[l])return I[l];var j;if("k256"===l)j=new p;else if("p224"===l)j=new b;else if("p192"===l)j=new v;else{if("p25519"!==l)throw new Error("Unknown prime "+l);j=new _}return I[l]=j,j},y.prototype._verify1=function(l){u(0===l.negative,"red works only with positives"),u(l.red,"red works only with red numbers")},y.prototype._verify2=function(l,n){u(0===(l.negative|n.negative),"red works only with positives"),u(l.red&&l.red===n.red,"red works only with red numbers")},y.prototype.imod=function(l){return this.prime?this.prime.ireduce(l)._forceRed(this):l.umod(this.m)._forceRed(this)},y.prototype.neg=function(l){return l.isZero()?l.clone():this.m.sub(l)._forceRed(this)},y.prototype.add=function(l,n){this._verify2(l,n);var e=l.add(n);return e.cmp(this.m)>=0&&e.isub(this.m),e._forceRed(this)},y.prototype.iadd=function(l,n){this._verify2(l,n);var e=l.iadd(n);return e.cmp(this.m)>=0&&e.isub(this.m),e},y.prototype.sub=function(l,n){this._verify2(l,n);var e=l.sub(n);return e.cmpn(0)<0&&e.iadd(this.m),e._forceRed(this)},y.prototype.isub=function(l,n){this._verify2(l,n);var e=l.isub(n);return e.cmpn(0)<0&&e.iadd(this.m),e},y.prototype.shl=function(l,n){return this._verify1(l),this.imod(l.ushln(n))},y.prototype.imul=function(l,n){return this._verify2(l,n),this.imod(l.imul(n))},y.prototype.mul=function(l,n){return this._verify2(l,n),this.imod(l.mul(n))},y.prototype.isqr=function(l){return this.imul(l,l.clone())},y.prototype.sqr=function(l){return this.mul(l,l)},y.prototype.sqrt=function(l){if(l.isZero())return l.clone();var n=this.m.andln(3);if(u(n%2===1),3===n){var e=this.m.add(new r(1)).iushrn(2);return this.pow(l,e)}for(var t=this.m.subn(1),i=0;!t.isZero()&&0===t.andln(1);)i++,t.iushrn(1);u(!t.isZero());var o=new r(1).toRed(this),s=o.redNeg(),a=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new r(2*f*f).toRed(this);0!==this.pow(f,a).cmp(s);)f.redIAdd(s);for(var c=this.pow(f,t),h=this.pow(l,t.addn(1).iushrn(1)),d=this.pow(l,t),p=i;0!==d.cmp(o);){for(var b=d,v=0;0!==b.cmp(o);v++)b=b.redSqr();u(v=0;t--){for(var f=n.words[t],c=a-1;c>=0;c--){var h=f>>c&1;i!==u[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,s++,(s===e||0===t&&0===c)&&(i=this.mul(i,u[o]),s=0,o=0)):s=0}a=26}return i},y.prototype.convertTo=function(l){var n=l.umod(this.m);return n===l?n.clone():n},y.prototype.convertFrom=function(l){var n=l.clone();return n.red=null,n},r.mont=function(l){return new m(l)},t(m,y),m.prototype.convertTo=function(l){return this.imod(l.ushln(this.shift))},m.prototype.convertFrom=function(l){var n=this.imod(l.mul(this.rinv));return n.red=null,n},m.prototype.imul=function(l,n){if(l.isZero()||n.isZero())return l.words[0]=0,l.length=1,l;var e=l.imul(n),u=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=e.isub(u).iushrn(this.shift),r=t;return t.cmp(this.m)>=0?r=t.isub(this.m):t.cmpn(0)<0&&(r=t.iadd(this.m)),r._forceRed(this)},m.prototype.mul=function(l,n){if(l.isZero()||n.isZero())return new r(0)._forceRed(this);var e=l.mul(n),u=e.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),t=e.isub(u).iushrn(this.shift),i=t;return t.cmp(this.m)>=0?i=t.isub(this.m):t.cmpn(0)<0&&(i=t.iadd(this.m)),i._forceRed(this)},m.prototype.invm=function(l){var n=this.imod(l._invmp(this.m).mul(this.r2));return n._forceRed(this)}}("undefined"==typeof n||n,this)},{}],37:[function(l,n,e){function u(l){this.rand=l}var t;if(n.exports=function(l){return t||(t=new u(null)),t.generate(l)},n.exports.Rand=u,u.prototype.generate=function(l){return this._rand(l)},u.prototype._rand=function(l){if(this.rand.getBytes)return this.rand.getBytes(l);for(var n=new Uint8Array(l),e=0;eo||l<0?(e=Math.abs(l)%o,l<0?o-e:e):l}function u(l){for(var n=0;n>>8^255&e^99,this.SBOX[t]=e,this.INV_SBOX[e]=t,r=l[t],i=l[r],o=l[i],u=257*l[e]^16843008*e,this.SUB_MIX[0][t]=u<<24|u>>>8,this.SUB_MIX[1][t]=u<<16|u>>>16,this.SUB_MIX[2][t]=u<<8|u>>>24,this.SUB_MIX[3][t]=u,u=16843009*o^65537*i^257*r^16843008*t,this.INV_SUB_MIX[0][e]=u<<24|u>>>8,this.INV_SUB_MIX[1][e]=u<<16|u>>>16,this.INV_SUB_MIX[2][e]=u<<8|u>>>24,this.INV_SUB_MIX[3][e]=u,0===t?t=s=1:(t=r^l[l[l[o^r]]],s^=l[l[s]]);return!0};var s=new t;i.blockSize=16,i.prototype.blockSize=i.blockSize,i.keySize=32,i.prototype.keySize=i.keySize,i.prototype._doReset=function(){var l,n,e,u,t,r;for(e=this._key,n=e.length,this._nRounds=n+6,t=4*(this._nRounds+1),this._keySchedule=[],u=0;u>>24,r=s.SBOX[r>>>24]<<24|s.SBOX[r>>>16&255]<<16|s.SBOX[r>>>8&255]<<8|s.SBOX[255&r],r^=s.RCON[u/n|0]<<24):n>6&&u%n===4?r=s.SBOX[r>>>24]<<24|s.SBOX[r>>>16&255]<<16|s.SBOX[r>>>8&255]<<8|s.SBOX[255&r]:void 0,this._keySchedule[u-n]^r);for(this._invKeySchedule=[],l=0;l>>24]]^s.INV_SUB_MIX[1][s.SBOX[r>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[r>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&r]];return!0},i.prototype.encryptBlock=function(n){n=r(new l(n));var e=this._doCryptBlock(n,this._keySchedule,s.SUB_MIX,s.SBOX),u=new l(16);return u.writeUInt32BE(e[0],0),u.writeUInt32BE(e[1],4),u.writeUInt32BE(e[2],8),u.writeUInt32BE(e[3],12),u},i.prototype.decryptBlock=function(n){n=r(new l(n));var e=[n[3],n[1]];n[1]=e[0],n[3]=e[1];var u=this._doCryptBlock(n,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),t=new l(16);return t.writeUInt32BE(u[0],0),t.writeUInt32BE(u[3],4),t.writeUInt32BE(u[2],8),t.writeUInt32BE(u[1],12),t},i.prototype.scrub=function(){u(this._keySchedule),u(this._invKeySchedule),u(this._key)},i.prototype._doCryptBlock=function(l,e,u,t){var r,i,o,s,a,f,c,h,d;i=l[0]^e[0],o=l[1]^e[1],s=l[2]^e[2],a=l[3]^e[3],r=4;for(var p=1;p>>24]^u[1][o>>>16&255]^u[2][s>>>8&255]^u[3][255&a]^e[r++],c=u[0][o>>>24]^u[1][s>>>16&255]^u[2][a>>>8&255]^u[3][255&i]^e[r++],h=u[0][s>>>24]^u[1][a>>>16&255]^u[2][i>>>8&255]^u[3][255&o]^e[r++],d=u[0][a>>>24]^u[1][i>>>16&255]^u[2][o>>>8&255]^u[3][255&s]^e[r++],i=f,o=c,s=h,a=d;return f=(t[i>>>24]<<24|t[o>>>16&255]<<16|t[s>>>8&255]<<8|t[255&a])^e[r++],c=(t[o>>>24]<<24|t[s>>>16&255]<<16|t[a>>>8&255]<<8|t[255&i])^e[r++],h=(t[s>>>24]<<24|t[a>>>16&255]<<16|t[i>>>8&255]<<8|t[255&o])^e[r++],d=(t[a>>>24]<<24|t[i>>>16&255]<<16|t[o>>>8&255]<<8|t[255&s])^e[r++],[n(f),n(c),n(h),n(d)]},e.AES=i}).call(this,l("buffer").Buffer)},{buffer:66}],40:[function(l,n,e){(function(e){function u(l,n,t,o){if(!(this instanceof u))return new u(l,n,t);i.call(this),this._finID=e.concat([t,new e([0,0,0,1])]),t=e.concat([t,new e([0,0,0,2])]),this._cipher=new r.AES(n),this._prev=new e(t.length),this._cache=new e(""),this._secCache=new e(""),this._decrypt=o,this._alen=0,this._len=0,t.copy(this._prev),this._mode=l;var a=new e(4);a.fill(0),this._ghash=new s(this._cipher.encryptBlock(a)),this._authTag=null,this._called=!1}function t(l,n){var e=0;l.length!==n.length&&e++;for(var u=Math.min(l.length,n.length),t=-1;++t16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n}else if(this.cache.length>=16)return n=this.cache.slice(0,16),this.cache=this.cache.slice(16),n;return null},t.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:l("./modes/ecb"),CBC:l("./modes/cbc"),CFB:l("./modes/cfb"),CFB8:l("./modes/cfb8"),CFB1:l("./modes/cfb1"),OFB:l("./modes/ofb"),CTR:l("./modes/ctr"),GCM:l("./modes/ctr")};e.createDecipher=o,e.createDecipheriv=i}).call(this,l("buffer").Buffer)},{"./aes":39,"./authCipher":40,"./modes":45,"./modes/cbc":46,"./modes/cfb":47,"./modes/cfb1":48,"./modes/cfb8":49,"./modes/ctr":50,"./modes/ecb":51,"./modes/ofb":52,"./streamCipher":53,buffer:66,"cipher-base":67,evp_bytestokey:213,inherits:223}],43:[function(l,n,e){(function(n){function u(l,e,r){return this instanceof u?(s.call(this),this._cache=new t,this._cipher=new o.AES(e),this._prev=new n(r.length),r.copy(this._prev),this._mode=l,void(this._autopadding=!0)):new u(l,e,r)}function t(){return this instanceof t?void(this.cache=new n("")):new t}function r(l,e,t){var r=f[l.toLowerCase()];if(!r)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=new n(t)),"string"==typeof e&&(e=new n(e)),e.length!==r.key/8)throw new TypeError("invalid key length "+e.length);if(t.length!==r.iv)throw new TypeError("invalid iv length "+t.length);return"stream"===r.type?new h(p[r.mode],e,t):"auth"===r.type?new d(p[r.mode],e,t):new u(p[r.mode],e,t)}function i(l,n){var e=f[l.toLowerCase()];if(!e)throw new TypeError("invalid suite type");var u=c(n,!1,e.key,e.iv);return r(l,u.key,u.iv)}var o=l("./aes"),s=l("cipher-base"),a=l("inherits"),f=l("./modes"),c=l("evp_bytestokey"),h=l("./streamCipher"),d=l("./authCipher");a(u,s),u.prototype._update=function(l){this._cache.add(l);for(var e,u,t=[];e=this._cache.get();)u=this._mode.encrypt(this,e),t.push(u);return n.concat(t)},u.prototype._final=function(){var l=this._cache.flush();if(this._autopadding)return l=this._mode.encrypt(this,l),this._cipher.scrub(),l;if("10101010101010101010101010101010"!==l.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},u.prototype.setAutoPadding=function(l){return this._autopadding=!!l,this},t.prototype.add=function(l){this.cache=n.concat([this.cache,l])},t.prototype.get=function(){if(this.cache.length>15){var l=this.cache.slice(0,16);return this.cache=this.cache.slice(16),l}return null},t.prototype.flush=function(){for(var l=16-this.cache.length,e=new n(l),u=-1;++us||l<0?(e=Math.abs(l)%s,l<0?s-e:e):l}function i(l,n){return[l[0]^n[0],l[1]^n[1],l[2]^n[2],l[3]^n[3]]}var o=new l(16);o.fill(0),n.exports=e,e.prototype.ghash=function(l){for(var n=-1;++n0;l--)r[l]=r[l]>>>1|(1&r[l-1])<<31;r[0]=r[0]>>>1,e&&(r[0]=r[0]^225<<24)}this.state=t(o)},e.prototype.update=function(n){this.cache=l.concat([this.cache,n]);for(var e;this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},e.prototype["final"]=function(n,e){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(t([0,n,0,e])),this.state};var s=Math.pow(2,32)}).call(this,l("buffer").Buffer)},{buffer:66}],45:[function(l,n,e){e["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},e["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},e["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},e["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},e["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},e["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},e.aes128=e["aes-128-cbc"],e.aes192=e["aes-192-cbc"],e.aes256=e["aes-256-cbc"],e["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},e["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},e["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},e["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},e["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},e["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},e["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},e["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},e["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},e["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},e["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},e["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},e["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},e["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},e["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},e["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},e["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},e["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},{}],46:[function(l,n,e){var u=l("buffer-xor");e.encrypt=function(l,n){var e=u(n,l._prev);return l._prev=l._cipher.encryptBlock(e),l._prev},e.decrypt=function(l,n){var e=l._prev;l._prev=n;var t=l._cipher.decryptBlock(n);return u(t,e)}},{"buffer-xor":65}],47:[function(l,n,e){(function(n){function u(l,e,u){var r=e.length,i=t(e,l._cache);return l._cache=l._cache.slice(r),l._prev=n.concat([l._prev,u?e:i]),i}var t=l("buffer-xor");e.encrypt=function(l,e,t){for(var r,i=new n("");e.length;){if(0===l._cache.length&&(l._cache=l._cipher.encryptBlock(l._prev),l._prev=new n("")),!(l._cache.length<=e.length)){i=n.concat([i,u(l,e,t)]);break}r=l._cache.length,i=n.concat([i,u(l,e.slice(0,r),t)]),e=e.slice(r)}return i}}).call(this,l("buffer").Buffer)},{buffer:66,"buffer-xor":65}],48:[function(l,n,e){(function(l){function n(l,n,e){for(var t,r,i,o=-1,s=8,a=0;++o>o%8,l._prev=u(l._prev,e?r:i);return a}function u(n,e){var u=n.length,t=-1,r=new l(n.length);for(n=l.concat([n,new l([e])]);++t>7;return r}e.encrypt=function(e,u,t){for(var r=u.length,i=new l(r),o=-1;++o=0||!e.umod(l.prime1)||!e.umod(l.prime2);)e=new i(o(n));return e}var i=l("bn.js"),o=l("randombytes");n.exports=t,t.getr=r}).call(this,l("buffer").Buffer)},{"bn.js":36,buffer:66,randombytes:246}],58:[function(l,n,e){(function(l){"use strict";e["RSA-SHA224"]=e.sha224WithRSAEncryption={sign:"rsa",hash:"sha224",id:new l("302d300d06096086480165030402040500041c","hex")},e["RSA-SHA256"]=e.sha256WithRSAEncryption={sign:"rsa",hash:"sha256",id:new l("3031300d060960864801650304020105000420","hex")},e["RSA-SHA384"]=e.sha384WithRSAEncryption={sign:"rsa",hash:"sha384",id:new l("3041300d060960864801650304020205000430","hex")},e["RSA-SHA512"]=e.sha512WithRSAEncryption={sign:"rsa",hash:"sha512",id:new l("3051300d060960864801650304020305000440","hex")},e["RSA-SHA1"]={sign:"rsa",hash:"sha1",id:new l("3021300906052b0e03021a05000414","hex")},e["ecdsa-with-SHA1"]={sign:"ecdsa",hash:"sha1",id:new l("","hex")},e.DSA=e["DSA-SHA1"]=e["DSA-SHA"]={sign:"dsa",hash:"sha1",id:new l("","hex")},e["DSA-SHA224"]=e["DSA-WITH-SHA224"]={sign:"dsa",hash:"sha224", +id:new l("","hex")},e["DSA-SHA256"]=e["DSA-WITH-SHA256"]={sign:"dsa",hash:"sha256",id:new l("","hex")},e["DSA-SHA384"]=e["DSA-WITH-SHA384"]={sign:"dsa",hash:"sha384",id:new l("","hex")},e["DSA-SHA512"]=e["DSA-WITH-SHA512"]={sign:"dsa",hash:"sha512",id:new l("","hex")},e["DSA-RIPEMD160"]={sign:"dsa",hash:"rmd160",id:new l("","hex")},e["RSA-RIPEMD160"]=e.ripemd160WithRSA={sign:"rsa",hash:"rmd160",id:new l("3021300906052b2403020105000414","hex")},e["RSA-MD5"]=e.md5WithRSAEncryption={sign:"rsa",hash:"md5",id:new l("3020300c06082a864886f70d020505000410","hex")}}).call(this,l("buffer").Buffer)},{buffer:66}],59:[function(l,n,e){(function(e){function u(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hashType=n.hash,this._hash=s(n.hash),this._tag=n.id,this._signType=n.sign}function t(l){c.Writable.call(this);var n=d[l];if(!n)throw new Error("Unknown message digest");this._hash=s(n.hash),this._tag=n.id,this._signType=n.sign}function r(l){return new u(l)}function i(l){return new t(l)}var o=l("./algos"),s=l("create-hash"),a=l("inherits"),f=l("./sign"),c=l("stream"),h=l("./verify"),d={};Object.keys(o).forEach(function(l){d[l]=d[l.toLowerCase()]=o[l]}),a(u,c.Writable),u.prototype._write=function(l,n,e){this._hash.update(l),e()},u.prototype.update=function(l,n){return"string"==typeof l&&(l=new e(l,n)),this._hash.update(l),this},u.prototype.sign=function(l,n){this.end();var u=this._hash.digest(),t=f(e.concat([this._tag,u]),l,this._hashType,this._signType);return n?t.toString(n):t},a(t,c.Writable),t.prototype._write=function(l,n,e){this._hash.update(l),e()},t.prototype.update=function(l,n){return"string"==typeof l&&(l=new e(l,n)),this._hash.update(l),this},t.prototype.verify=function(l,n,u){"string"==typeof n&&(n=new e(n,u)),this.end();var t=this._hash.digest();return h(n,e.concat([this._tag,t]),l,this._signType)},n.exports={Sign:r,Verify:i,createSign:r,createVerify:i}}).call(this,l("buffer").Buffer)},{"./algos":58,"./sign":61,"./verify":62,buffer:66,"create-hash":181,inherits:223,stream:267}],60:[function(l,n,e){"use strict";e["1.3.132.0.10"]="secp256k1",e["1.3.132.0.33"]="p224",e["1.2.840.10045.3.1.1"]="p192",e["1.2.840.10045.3.1.7"]="p256",e["1.3.132.0.34"]="p384",e["1.3.132.0.35"]="p521"},{}],61:[function(l,n,e){(function(e){function u(l,n,e,u){var i=v(n);if(i.curve){if("ecdsa"!==u)throw new Error("wrong private key type");return t(l,i)}if("dsa"===i.type){if("dsa"!==u)throw new Error("wrong private key type");return r(l,i,e)}if("rsa"!==u)throw new Error("wrong private key type");for(var o=i.modulus.byteLength(),s=[0,1];l.length+s.length+10&&e.ishrn(u),e}function a(l,n){l=s(l,n),l=l.mod(n);var u=new e(l.toArray());if(u.length=n)throw new Error("invalid sig")}var o=l("./curves"),s=l("elliptic"),a=l("parse-asn1"),f=l("bn.js"),c=s.ec;n.exports=u}).call(this,l("buffer").Buffer)},{"./curves":60,"bn.js":36,buffer:66,elliptic:196,"parse-asn1":234}],63:[function(l,n,e){arguments[4][38][0].apply(e,arguments)},{dup:38}],64:[function(l,n,e){(function(n){"use strict";var u=l("buffer"),t=u.Buffer,r=u.SlowBuffer,i=u.kMaxLength||2147483647;e.alloc=function(l,n,e){if("function"==typeof t.alloc)return t.alloc(l,n,e);if("number"==typeof e)throw new TypeError("encoding must not be number");if("number"!=typeof l)throw new TypeError("size must be a number");if(l>i)throw new RangeError("size is too large");var u=e,r=n;void 0===r&&(u=void 0,r=0);var o=new t(l);if("string"==typeof r)for(var s=new t(r,u),a=s.length,f=-1;++fi)throw new RangeError("size is too large");return new t(l)},e.from=function(l,e,u){if("function"==typeof t.from&&(!n.Uint8Array||Uint8Array.from!==t.from))return t.from(l,e,u);if("number"==typeof l)throw new TypeError('"value" argument must not be a number');if("string"==typeof l)return new t(l,e);if("undefined"!=typeof ArrayBuffer&&l instanceof ArrayBuffer){var r=e;if(1===arguments.length)return new t(l);"undefined"==typeof r&&(r=0);var i=u;if("undefined"==typeof i&&(i=l.byteLength-r),r>=l.byteLength)throw new RangeError("'offset' is out of bounds");if(i>l.byteLength-r)throw new RangeError("'length' is out of bounds");return new t(l.slice(r,r+i))}if(t.isBuffer(l)){var o=new t(l.length);return l.copy(o,0,0,l.length),o}if(l){if(Array.isArray(l)||"undefined"!=typeof ArrayBuffer&&l.buffer instanceof ArrayBuffer||"length"in l)return new t(l);if("Buffer"===l.type&&Array.isArray(l.data))return new t(l.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},e.allocUnsafeSlow=function(l){if("function"==typeof t.allocUnsafeSlow)return t.allocUnsafeSlow(l);if("number"!=typeof l)throw new TypeError("size must be a number");if(l>=i)throw new RangeError("size is too large");return new r(l)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:66}],65:[function(l,n,e){(function(l){n.exports=function(n,e){for(var u=Math.min(n.length,e.length),t=new l(u),r=0;r=t())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+t().toString(16)+" bytes");return 0|l}function v(l){return+l!=l&&(l=0),i.alloc(+l)}function _(l,n){if(i.isBuffer(l))return l.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(l)||l instanceof ArrayBuffer))return l.byteLength;"string"!=typeof l&&(l=""+l);var e=l.length;if(0===e)return 0;for(var u=!1;;)switch(n){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return V(l).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return X(l).length;default:if(u)return V(l).length;n=(""+n).toLowerCase(),u=!0}}function y(l,n,e){var u=!1;if((void 0===n||n<0)&&(n=0),n>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if(e>>>=0,n>>>=0,e<=n)return"";for(l||(l="utf8");;)switch(l){case"hex":return O(this,n,e);case"utf8":case"utf-8":return x(this,n,e);case"ascii":return R(this,n,e);case"latin1":case"binary":return B(this,n,e);case"base64":return A(this,n,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,n,e);default:if(u)throw new TypeError("Unknown encoding: "+l);l=(l+"").toLowerCase(),u=!0}}function m(l,n,e){var u=l[n];l[n]=l[e],l[e]=u}function g(l,n,e,u,t){if(0===l.length)return-1;if("string"==typeof e?(u=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=t?0:l.length-1),e<0&&(e=l.length+e),e>=l.length){if(t)return-1;e=l.length-1}else if(e<0){if(!t)return-1;e=0}if("string"==typeof n&&(n=i.from(n,u)),i.isBuffer(n))return 0===n.length?-1:w(l,n,e,u,t);if("number"==typeof n)return n=255&n,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?t?Uint8Array.prototype.indexOf.call(l,n,e):Uint8Array.prototype.lastIndexOf.call(l,n,e):w(l,[n],e,u,t);throw new TypeError("val must be string, number or Buffer")}function w(l,n,e,u,t){function r(l,n){return 1===i?l[n]:l.readUInt16BE(n*i)}var i=1,o=l.length,s=n.length;if(void 0!==u&&(u=String(u).toLowerCase(),"ucs2"===u||"ucs-2"===u||"utf16le"===u||"utf-16le"===u)){if(l.length<2||n.length<2)return-1;i=2,o/=2,s/=2,e/=2}var a;if(t){var f=-1;for(a=e;ao&&(e=o-s),a=e;a>=0;a--){for(var c=!0,h=0;ht&&(u=t)):u=t;var r=n.length;if(r%2!==0)throw new TypeError("Invalid hex string");u>r/2&&(u=r/2);for(var i=0;i239?4:r>223?3:r>191?2:1;if(t+o<=e){var s,a,f,c;switch(o){case 1:r<128&&(i=r);break;case 2:s=l[t+1],128===(192&s)&&(c=(31&r)<<6|63&s,c>127&&(i=c));break;case 3:s=l[t+1],a=l[t+2],128===(192&s)&&128===(192&a)&&(c=(15&r)<<12|(63&s)<<6|63&a,c>2047&&(c<55296||c>57343)&&(i=c));break;case 4:s=l[t+1],a=l[t+2],f=l[t+3],128===(192&s)&&128===(192&a)&&128===(192&f)&&(c=(15&r)<<18|(63&s)<<12|(63&a)<<6|63&f,c>65535&&c<1114112&&(i=c))}}null===i?(i=65533,o=1):i>65535&&(i-=65536,u.push(i>>>10&1023|55296),i=56320|1023&i),u.push(i),t+=o}return C(u)}function C(l){var n=l.length;if(n<=ll)return String.fromCharCode.apply(String,l);for(var e="",u=0;uu)&&(e=u);for(var t="",r=n;re)throw new RangeError("Trying to access beyond buffer length")}function U(l,n,e,u,t,r){if(!i.isBuffer(l))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>t||nl.length)throw new RangeError("Index out of range")}function N(l,n,e,u){n<0&&(n=65535+n+1);for(var t=0,r=Math.min(l.length-e,2);t>>8*(u?t:1-t)}function L(l,n,e,u){n<0&&(n=4294967295+n+1);for(var t=0,r=Math.min(l.length-e,4);t>>8*(u?t:3-t)&255}function D(l,n,e,u,t,r){if(e+u>l.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function q(l,n,e,u,t){return t||D(l,n,e,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(l,n,e,u,23,4),e+4}function F(l,n,e,u,t){return t||D(l,n,e,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(l,n,e,u,52,8),e+8}function z(l){if(l=K(l).replace(nl,""),l.length<2)return"";for(;l.length%4!==0;)l+="=";return l}function K(l){return l.trim?l.trim():l.replace(/^\s+|\s+$/g,"")}function H(l){return l<16?"0"+l.toString(16):l.toString(16)}function V(l,n){n=n||1/0;for(var e,u=l.length,t=null,r=[],i=0;i55295&&e<57344){if(!t){if(e>56319){(n-=3)>-1&&r.push(239,191,189);continue}if(i+1===u){(n-=3)>-1&&r.push(239,191,189);continue}t=e;continue}if(e<56320){(n-=3)>-1&&r.push(239,191,189),t=e;continue}e=(t-55296<<10|e-56320)+65536}else t&&(n-=3)>-1&&r.push(239,191,189);if(t=null,e<128){if((n-=1)<0)break;r.push(e)}else if(e<2048){if((n-=2)<0)break;r.push(e>>6|192,63&e|128)}else if(e<65536){if((n-=3)<0)break;r.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;r.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return r}function Y(l){for(var n=[],e=0;e>8,t=e%256,r.push(t),r.push(u);return r}function X(l){return J.toByteArray(z(l))}function G(l,n,e,u){for(var t=0;t=n.length||t>=l.length);++t)n[t+e]=l[t];return t}function Z(l){return l!==l}var J=l("base64-js"),$=l("ieee754"),Q=l("isarray");e.Buffer=i,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,i.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:u(),e.kMaxLength=t(),i.poolSize=8192,i._augment=function(l){return l.__proto__=i.prototype,l},i.from=function(l,n,e){return o(null,l,n,e)},i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0})),i.alloc=function(l,n,e){return a(null,l,n,e)},i.allocUnsafe=function(l){return f(null,l)},i.allocUnsafeSlow=function(l){return f(null,l)},i.isBuffer=function(l){return!(null==l||!l._isBuffer)},i.compare=function(l,n){if(!i.isBuffer(l)||!i.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(l===n)return 0;for(var e=l.length,u=n.length,t=0,r=Math.min(e,u);t0&&(l=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(l+=" ... ")),""},i.prototype.compare=function(l,n,e,u,t){if(!i.isBuffer(l))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===e&&(e=l?l.length:0),void 0===u&&(u=0),void 0===t&&(t=this.length),n<0||e>l.length||u<0||t>this.length)throw new RangeError("out of range index");if(u>=t&&n>=e)return 0;if(u>=t)return-1;if(n>=e)return 1;if(n>>>=0,e>>>=0,u>>>=0,t>>>=0,this===l)return 0;for(var r=t-u,o=e-n,s=Math.min(r,o),a=this.slice(u,t),f=l.slice(n,e),c=0;ct)&&(e=t),l.length>0&&(e<0||n<0)||n>this.length)throw new RangeError("Attempt to write outside buffer bounds");u||(u="utf8");for(var r=!1;;)switch(u){case"hex":return k(this,l,n,e);case"utf8":case"utf-8":return S(this,l,n,e);case"ascii":return E(this,l,n,e);case"latin1":case"binary":return M(this,l,n,e);case"base64":return I(this,l,n,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,l,n,e);default:if(r)throw new TypeError("Unknown encoding: "+u);u=(""+u).toLowerCase(),r=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ll=4096;i.prototype.slice=function(l,n){var e=this.length;l=~~l,n=void 0===n?e:~~n,l<0?(l+=e,l<0&&(l=0)):l>e&&(l=e),n<0?(n+=e,n<0&&(n=0)):n>e&&(n=e),n0&&(t*=256);)u+=this[l+--n]*t;return u},i.prototype.readUInt8=function(l,n){return n||P(l,1,this.length),this[l]},i.prototype.readUInt16LE=function(l,n){return n||P(l,2,this.length),this[l]|this[l+1]<<8},i.prototype.readUInt16BE=function(l,n){return n||P(l,2,this.length),this[l]<<8|this[l+1]},i.prototype.readUInt32LE=function(l,n){return n||P(l,4,this.length),(this[l]|this[l+1]<<8|this[l+2]<<16)+16777216*this[l+3]},i.prototype.readUInt32BE=function(l,n){return n||P(l,4,this.length),16777216*this[l]+(this[l+1]<<16|this[l+2]<<8|this[l+3])},i.prototype.readIntLE=function(l,n,e){l=0|l,n=0|n,e||P(l,n,this.length);for(var u=this[l],t=1,r=0;++r=t&&(u-=Math.pow(2,8*n)),u},i.prototype.readIntBE=function(l,n,e){l=0|l,n=0|n,e||P(l,n,this.length);for(var u=n,t=1,r=this[l+--u];u>0&&(t*=256);)r+=this[l+--u]*t;return t*=128,r>=t&&(r-=Math.pow(2,8*n)),r},i.prototype.readInt8=function(l,n){return n||P(l,1,this.length),128&this[l]?(255-this[l]+1)*-1:this[l]},i.prototype.readInt16LE=function(l,n){n||P(l,2,this.length);var e=this[l]|this[l+1]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt16BE=function(l,n){n||P(l,2,this.length);var e=this[l+1]|this[l]<<8;return 32768&e?4294901760|e:e},i.prototype.readInt32LE=function(l,n){return n||P(l,4,this.length),this[l]|this[l+1]<<8|this[l+2]<<16|this[l+3]<<24},i.prototype.readInt32BE=function(l,n){return n||P(l,4,this.length),this[l]<<24|this[l+1]<<16|this[l+2]<<8|this[l+3]},i.prototype.readFloatLE=function(l,n){return n||P(l,4,this.length),$.read(this,l,!0,23,4)},i.prototype.readFloatBE=function(l,n){return n||P(l,4,this.length),$.read(this,l,!1,23,4)},i.prototype.readDoubleLE=function(l,n){return n||P(l,8,this.length),$.read(this,l,!0,52,8)},i.prototype.readDoubleBE=function(l,n){return n||P(l,8,this.length),$.read(this,l,!1,52,8)},i.prototype.writeUIntLE=function(l,n,e,u){if(l=+l,n=0|n,e=0|e,!u){var t=Math.pow(2,8*e)-1;U(this,l,n,e,t,0)}var r=1,i=0;for(this[n]=255&l;++i=0&&(i*=256);)this[n+r]=l/i&255;return n+e},i.prototype.writeUInt8=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,1,255,0),i.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),this[n]=255&l,n+1},i.prototype.writeUInt16LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):N(this,l,n,!0),n+2},i.prototype.writeUInt16BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):N(this,l,n,!1),n+2},i.prototype.writeUInt32LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[n+3]=l>>>24,this[n+2]=l>>>16,this[n+1]=l>>>8,this[n]=255&l):L(this,l,n,!0),n+4},i.prototype.writeUInt32BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):L(this,l,n,!1),n+4},i.prototype.writeIntLE=function(l,n,e,u){if(l=+l,n=0|n,!u){var t=Math.pow(2,8*e-1);U(this,l,n,e,t-1,-t)}var r=0,i=1,o=0;for(this[n]=255&l;++r>0)-o&255;return n+e},i.prototype.writeIntBE=function(l,n,e,u){if(l=+l,n=0|n,!u){var t=Math.pow(2,8*e-1);U(this,l,n,e,t-1,-t)}var r=e-1,i=1,o=0;for(this[n+r]=255&l;--r>=0&&(i*=256);)l<0&&0===o&&0!==this[n+r+1]&&(o=1),this[n+r]=(l/i>>0)-o&255;return n+e},i.prototype.writeInt8=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,1,127,-128),i.TYPED_ARRAY_SUPPORT||(l=Math.floor(l)),l<0&&(l=255+l+1),this[n]=255&l,n+1},i.prototype.writeInt16LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8):N(this,l,n,!0),n+2},i.prototype.writeInt16BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>8,this[n+1]=255&l):N(this,l,n,!1),n+2},i.prototype.writeInt32LE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[n]=255&l,this[n+1]=l>>>8,this[n+2]=l>>>16,this[n+3]=l>>>24):L(this,l,n,!0),n+4},i.prototype.writeInt32BE=function(l,n,e){return l=+l,n=0|n,e||U(this,l,n,4,2147483647,-2147483648),l<0&&(l=4294967295+l+1),i.TYPED_ARRAY_SUPPORT?(this[n]=l>>>24,this[n+1]=l>>>16,this[n+2]=l>>>8,this[n+3]=255&l):L(this,l,n,!1),n+4},i.prototype.writeFloatLE=function(l,n,e){return q(this,l,n,!0,e)},i.prototype.writeFloatBE=function(l,n,e){return q(this,l,n,!1,e)},i.prototype.writeDoubleLE=function(l,n,e){return F(this,l,n,!0,e)},i.prototype.writeDoubleBE=function(l,n,e){return F(this,l,n,!1,e)},i.prototype.copy=function(l,n,e,u){if(e||(e=0),u||0===u||(u=this.length),n>=l.length&&(n=l.length),n||(n=0),u>0&&u=this.length)throw new RangeError("sourceStart out of bounds");if(u<0)throw new RangeError("sourceEnd out of bounds");u>this.length&&(u=this.length),l.length-n=0;--t)l[t+n]=this[t+e];else if(r<1e3||!i.TYPED_ARRAY_SUPPORT)for(t=0;t>>=0,e=void 0===e?this.length:e>>>0,l||(l=0);var r;if("number"==typeof l)for(r=n;rf;)if(o=s[f++],o!=o)return!0}else for(;a>f;f++)if((l||f in s)&&s[f]===e)return l||f||0;return!l&&-1}}},{"./_to-index":150,"./_to-iobject":152,"./_to-length":153}],87:[function(l,n,e){var u=l("./_ctx"),t=l("./_iobject"),r=l("./_to-object"),i=l("./_to-length"),o=l("./_array-species-create");n.exports=function(l,n){var e=1==l,s=2==l,a=3==l,f=4==l,c=6==l,h=5==l||c,d=n||o;return function(n,o,p){for(var b,v,_=r(n),y=t(_),m=u(o,p,3),g=i(y.length),w=0,k=e?d(n,g):s?d(n,0):void 0;g>w;w++)if((h||w in y)&&(b=y[w],v=m(b,w,_),l))if(e)k[w]=v;else if(v)switch(l){case 3:return!0;case 5:return b;case 6:return w;case 2:k.push(b)}else if(f)return!1;return c?-1:a||f?f:k}}},{"./_array-species-create":89,"./_ctx":97,"./_iobject":112,"./_to-length":153,"./_to-object":154}],88:[function(l,n,e){var u=l("./_is-object"),t=l("./_is-array"),r=l("./_wks")("species");n.exports=function(l){var n;return t(l)&&(n=l.constructor,"function"!=typeof n||n!==Array&&!t(n.prototype)||(n=void 0),u(n)&&(n=n[r],null===n&&(n=void 0))),void 0===n?Array:n}},{"./_is-array":114,"./_is-object":115,"./_wks":159}],89:[function(l,n,e){var u=l("./_array-species-constructor");n.exports=function(l,n){return new(u(l))(n)}},{"./_array-species-constructor":88}],90:[function(l,n,e){var u=l("./_cof"),t=l("./_wks")("toStringTag"),r="Arguments"==u(function(){return arguments}()),i=function(l,n){try{return l[n]}catch(e){}};n.exports=function(l){var n,e,o;return void 0===l?"Undefined":null===l?"Null":"string"==typeof(e=i(n=Object(l),t))?e:r?u(n):"Object"==(o=u(n))&&"function"==typeof n.callee?"Arguments":o}},{"./_cof":91,"./_wks":159}],91:[function(l,n,e){var u={}.toString;n.exports=function(l){return u.call(l).slice(8,-1)}},{}],92:[function(l,n,e){"use strict";var u=l("./_object-dp").f,t=l("./_object-create"),r=l("./_redefine-all"),i=l("./_ctx"),o=l("./_an-instance"),s=l("./_defined"),a=l("./_for-of"),f=l("./_iter-define"),c=l("./_iter-step"),h=l("./_set-species"),d=l("./_descriptors"),p=l("./_meta").fastKey,b=d?"_s":"size",v=function(l,n){var e,u=p(n);if("F"!==u)return l._i[u];for(e=l._f;e;e=e.n)if(e.k==n)return e};n.exports={getConstructor:function(l,n,e,f){var c=l(function(l,u){o(l,c,n,"_i"),l._i=t(null),l._f=void 0,l._l=void 0,l[b]=0,void 0!=u&&a(u,e,l[f],l)});return r(c.prototype,{clear:function(){for(var l=this,n=l._i,e=l._f;e;e=e.n)e.r=!0,e.p&&(e.p=e.p.n=void 0),delete n[e.i];l._f=l._l=void 0,l[b]=0},"delete":function(l){var n=this,e=v(n,l);if(e){var u=e.n,t=e.p;delete n._i[e.i],e.r=!0,t&&(t.n=u),u&&(u.p=t),n._f==e&&(n._f=u),n._l==e&&(n._l=t),n[b]--}return!!e},forEach:function(l){o(this,c,"forEach");for(var n,e=i(l,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(e(n.v,n.k,this);n&&n.r;)n=n.p},has:function(l){return!!v(this,l)}}),d&&u(c.prototype,"size",{get:function(){return s(this[b])}}),c},def:function(l,n,e){var u,t,r=v(l,n);return r?r.v=e:(l._l=r={i:t=p(n,!0),k:n,v:e,p:u=l._l,n:void 0,r:!1},l._f||(l._f=r),u&&(u.n=r),l[b]++,"F"!==t&&(l._i[t]=r)),l},getEntry:v,setStrong:function(l,n,e){f(l,n,function(l,n){this._t=l,this._k=n,this._l=void 0},function(){for(var l=this,n=l._k,e=l._l;e&&e.r;)e=e.p;return l._t&&(l._l=e=e?e.n:l._t._f)?"keys"==n?c(0,e.k):"values"==n?c(0,e.v):c(0,[e.k,e.v]):(l._t=void 0,c(1))},e?"entries":"values",!e,!0),h(n)}}},{"./_an-instance":83,"./_ctx":97,"./_defined":98,"./_descriptors":99,"./_for-of":105,"./_iter-define":118,"./_iter-step":120,"./_meta":124,"./_object-create":127,"./_object-dp":128,"./_redefine-all":140,"./_set-species":143}],93:[function(l,n,e){var u=l("./_classof"),t=l("./_array-from-iterable");n.exports=function(l){return function(){if(u(this)!=l)throw TypeError(l+"#toJSON isn't generic");return t(this)}}},{"./_array-from-iterable":85,"./_classof":90}],94:[function(l,n,e){"use strict";var u=l("./_global"),t=l("./_export"),r=l("./_meta"),i=l("./_fails"),o=l("./_hide"),s=l("./_redefine-all"),a=l("./_for-of"),f=l("./_an-instance"),c=l("./_is-object"),h=l("./_set-to-string-tag"),d=l("./_object-dp").f,p=l("./_array-methods")(0),b=l("./_descriptors");n.exports=function(l,n,e,v,_,y){var m=u[l],g=m,w=_?"set":"add",k=g&&g.prototype,S={};return b&&"function"==typeof g&&(y||k.forEach&&!i(function(){(new g).entries().next()}))?(g=n(function(n,e){f(n,g,l,"_c"),n._c=new m,void 0!=e&&a(e,_,n[w],n)}),p("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(l){var n="add"==l||"set"==l;l in k&&(!y||"clear"!=l)&&o(g.prototype,l,function(e,u){if(f(this,g,l),!n&&y&&!c(e))return"get"==l&&void 0;var t=this._c[l](0===e?0:e,u);return n?this:t})}),"size"in k&&d(g.prototype,"size",{get:function(){return this._c.size}})):(g=v.getConstructor(n,l,_,w),s(g.prototype,e),r.NEED=!0),h(g,l),S[l]=g,t(t.G+t.W+t.F,S),y||v.setStrong(g,l,_),g}},{"./_an-instance":83,"./_array-methods":87,"./_descriptors":99,"./_export":103,"./_fails":104,"./_for-of":105,"./_global":106,"./_hide":108,"./_is-object":115,"./_meta":124,"./_object-dp":128,"./_redefine-all":140,"./_set-to-string-tag":144}],95:[function(l,n,e){var u=n.exports={version:"2.4.0"};"number"==typeof __e&&(__e=u)},{}],96:[function(l,n,e){"use strict";var u=l("./_object-dp"),t=l("./_property-desc");n.exports=function(l,n,e){n in l?u.f(l,n,t(0,e)):l[n]=e}},{"./_object-dp":128,"./_property-desc":139}],97:[function(l,n,e){var u=l("./_a-function");n.exports=function(l,n,e){if(u(l),void 0===n)return l;switch(e){case 1:return function(e){return l.call(n,e)};case 2:return function(e,u){return l.call(n,e,u)};case 3:return function(e,u,t){return l.call(n,e,u,t)}}return function(){return l.apply(n,arguments)}}},{"./_a-function":81}],98:[function(l,n,e){n.exports=function(l){if(void 0==l)throw TypeError("Can't call method on "+l);return l}},{}],99:[function(l,n,e){n.exports=!l("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":104}],100:[function(l,n,e){var u=l("./_is-object"),t=l("./_global").document,r=u(t)&&u(t.createElement);n.exports=function(l){return r?t.createElement(l):{}}},{"./_global":106,"./_is-object":115}],101:[function(l,n,e){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],102:[function(l,n,e){var u=l("./_object-keys"),t=l("./_object-gops"),r=l("./_object-pie");n.exports=function(l){var n=u(l),e=t.f;if(e)for(var i,o=e(l),s=r.f,a=0;o.length>a;)s.call(l,i=o[a++])&&n.push(i);return n}},{"./_object-gops":133,"./_object-keys":136,"./_object-pie":137}],103:[function(l,n,e){var u=l("./_global"),t=l("./_core"),r=l("./_ctx"),i=l("./_hide"),o="prototype",s=function(l,n,e){var a,f,c,h=l&s.F,d=l&s.G,p=l&s.S,b=l&s.P,v=l&s.B,_=l&s.W,y=d?t:t[n]||(t[n]={}),m=y[o],g=d?u:p?u[n]:(u[n]||{})[o];d&&(e=n);for(a in e)f=!h&&g&&void 0!==g[a],f&&a in y||(c=f?g[a]:e[a],y[a]=d&&"function"!=typeof g[a]?e[a]:v&&f?r(c,u):_&&g[a]==c?function(l){var n=function(n,e,u){if(this instanceof l){switch(arguments.length){case 0:return new l;case 1:return new l(n);case 2:return new l(n,e)}return new l(n,e,u)}return l.apply(this,arguments)};return n[o]=l[o],n}(c):b&&"function"==typeof c?r(Function.call,c):c,b&&((y.virtual||(y.virtual={}))[a]=c,l&s.R&&m&&!m[a]&&i(m,a,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,n.exports=s},{"./_core":95,"./_ctx":97,"./_global":106,"./_hide":108}],104:[function(l,n,e){n.exports=function(l){try{return!!l()}catch(n){return!0}}},{}],105:[function(l,n,e){var u=l("./_ctx"),t=l("./_iter-call"),r=l("./_is-array-iter"),i=l("./_an-object"),o=l("./_to-length"),s=l("./core.get-iterator-method"),a={},f={},e=n.exports=function(l,n,e,c,h){var d,p,b,v,_=h?function(){return l}:s(l),y=u(e,c,n?2:1),m=0;if("function"!=typeof _)throw TypeError(l+" is not iterable!");if(r(_)){for(d=o(l.length);d>m;m++)if(v=n?y(i(p=l[m])[0],p[1]):y(l[m]),v===a||v===f)return v}else for(b=_.call(l);!(p=b.next()).done;)if(v=t(b,y,p.value,n),v===a||v===f)return v};e.BREAK=a,e.RETURN=f},{"./_an-object":84,"./_ctx":97,"./_is-array-iter":113,"./_iter-call":116,"./_to-length":153,"./core.get-iterator-method":160}],106:[function(l,n,e){var u=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=u)},{}],107:[function(l,n,e){var u={}.hasOwnProperty;n.exports=function(l,n){return u.call(l,n)}},{}],108:[function(l,n,e){var u=l("./_object-dp"),t=l("./_property-desc");n.exports=l("./_descriptors")?function(l,n,e){return u.f(l,n,t(1,e))}:function(l,n,e){return l[n]=e,l}},{"./_descriptors":99,"./_object-dp":128,"./_property-desc":139}],109:[function(l,n,e){n.exports=l("./_global").document&&document.documentElement},{"./_global":106}],110:[function(l,n,e){n.exports=!l("./_descriptors")&&!l("./_fails")(function(){return 7!=Object.defineProperty(l("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":99,"./_dom-create":100,"./_fails":104}],111:[function(l,n,e){n.exports=function(l,n,e){var u=void 0===e;switch(n.length){case 0:return u?l():l.call(e);case 1:return u?l(n[0]):l.call(e,n[0]);case 2:return u?l(n[0],n[1]):l.call(e,n[0],n[1]);case 3:return u?l(n[0],n[1],n[2]):l.call(e,n[0],n[1],n[2]);case 4:return u?l(n[0],n[1],n[2],n[3]):l.call(e,n[0],n[1],n[2],n[3])}return l.apply(e,n)}},{}],112:[function(l,n,e){var u=l("./_cof");n.exports=Object("z").propertyIsEnumerable(0)?Object:function(l){return"String"==u(l)?l.split(""):Object(l)}},{"./_cof":91}],113:[function(l,n,e){var u=l("./_iterators"),t=l("./_wks")("iterator"),r=Array.prototype;n.exports=function(l){return void 0!==l&&(u.Array===l||r[t]===l)}},{"./_iterators":121,"./_wks":159}],114:[function(l,n,e){var u=l("./_cof");n.exports=Array.isArray||function(l){return"Array"==u(l)}},{"./_cof":91}],115:[function(l,n,e){n.exports=function(l){return"object"==typeof l?null!==l:"function"==typeof l}},{}],116:[function(l,n,e){var u=l("./_an-object");n.exports=function(l,n,e,t){try{return t?n(u(e)[0],e[1]):n(e)}catch(r){var i=l["return"];throw void 0!==i&&u(i.call(l)),r}}},{"./_an-object":84}],117:[function(l,n,e){"use strict";var u=l("./_object-create"),t=l("./_property-desc"),r=l("./_set-to-string-tag"),i={};l("./_hide")(i,l("./_wks")("iterator"),function(){return this}),n.exports=function(l,n,e){l.prototype=u(i,{next:t(1,e)}),r(l,n+" Iterator")}},{"./_hide":108,"./_object-create":127,"./_property-desc":139,"./_set-to-string-tag":144,"./_wks":159}],118:[function(l,n,e){"use strict";var u=l("./_library"),t=l("./_export"),r=l("./_redefine"),i=l("./_hide"),o=l("./_has"),s=l("./_iterators"),a=l("./_iter-create"),f=l("./_set-to-string-tag"),c=l("./_object-gpo"),h=l("./_wks")("iterator"),d=!([].keys&&"next"in[].keys()),p="@@iterator",b="keys",v="values",_=function(){return this};n.exports=function(l,n,e,y,m,g,w){a(e,n,y);var k,S,E,M=function(l){if(!d&&l in x)return x[l];switch(l){case b:return function(){return new e(this,l)};case v:return function(){return new e(this,l)}}return function(){return new e(this,l)}},I=n+" Iterator",j=m==v,A=!1,x=l.prototype,C=x[h]||x[p]||m&&x[m],R=C||M(m),B=m?j?M("entries"):R:void 0,O="Array"==n?x.entries||C:C;if(O&&(E=c(O.call(new l)),E!==Object.prototype&&(f(E,I,!0),u||o(E,h)||i(E,h,_))),j&&C&&C.name!==v&&(A=!0,R=function(){return C.call(this)}),u&&!w||!d&&!A&&x[h]||i(x,h,R),s[n]=R,s[I]=_,m)if(k={values:j?R:M(v),keys:g?R:M(b),entries:B},w)for(S in k)S in x||r(x,S,k[S]);else t(t.P+t.F*(d||A),n,k);return k}},{"./_export":103,"./_has":107,"./_hide":108,"./_iter-create":117,"./_iterators":121,"./_library":123,"./_object-gpo":134,"./_redefine":141,"./_set-to-string-tag":144,"./_wks":159}],119:[function(l,n,e){var u=l("./_wks")("iterator"),t=!1;try{var r=[7][u]();r["return"]=function(){t=!0},Array.from(r,function(){throw 2})}catch(i){}n.exports=function(l,n){if(!n&&!t)return!1;var e=!1;try{var r=[7],i=r[u]();i.next=function(){return{done:e=!0}},r[u]=function(){return i},l(r)}catch(o){}return e}},{"./_wks":159}],120:[function(l,n,e){n.exports=function(l,n){return{value:n,done:!!l}}},{}],121:[function(l,n,e){n.exports={}},{}],122:[function(l,n,e){var u=l("./_object-keys"),t=l("./_to-iobject");n.exports=function(l,n){for(var e,r=t(l),i=u(r),o=i.length,s=0;o>s;)if(r[e=i[s++]]===n)return e}},{"./_object-keys":136,"./_to-iobject":152}],123:[function(l,n,e){n.exports=!0},{}],124:[function(l,n,e){var u=l("./_uid")("meta"),t=l("./_is-object"),r=l("./_has"),i=l("./_object-dp").f,o=0,s=Object.isExtensible||function(){return!0},a=!l("./_fails")(function(){return s(Object.preventExtensions({}))}),f=function(l){i(l,u,{value:{i:"O"+ ++o,w:{}}})},c=function(l,n){if(!t(l))return"symbol"==typeof l?l:("string"==typeof l?"S":"P")+l;if(!r(l,u)){if(!s(l))return"F";if(!n)return"E";f(l)}return l[u].i},h=function(l,n){if(!r(l,u)){if(!s(l))return!0;if(!n)return!1;f(l)}return l[u].w},d=function(l){return a&&p.NEED&&s(l)&&!r(l,u)&&f(l),l},p=n.exports={KEY:u,NEED:!1,fastKey:c,getWeak:h,onFreeze:d}},{"./_fails":104,"./_has":107,"./_is-object":115,"./_object-dp":128,"./_uid":156}],125:[function(l,n,e){var u=l("./_global"),t=l("./_task").set,r=u.MutationObserver||u.WebKitMutationObserver,i=u.process,o=u.Promise,s="process"==l("./_cof")(i);n.exports=function(){var l,n,e,a=function(){var u,t;for(s&&(u=i.domain)&&u.exit();l;){t=l.fn,l=l.next;try{t()}catch(r){throw l?e():n=void 0,r}}n=void 0,u&&u.enter()};if(s)e=function(){i.nextTick(a)};else if(r){var f=!0,c=document.createTextNode("");new r(a).observe(c,{characterData:!0}),e=function(){c.data=f=!f}}else if(o&&o.resolve){var h=o.resolve();e=function(){h.then(a)}}else e=function(){t.call(u,a)};return function(u){var t={fn:u,next:void 0};n&&(n.next=t),l||(l=t,e()),n=t}}},{"./_cof":91,"./_global":106,"./_task":149}],126:[function(l,n,e){"use strict";var u=l("./_object-keys"),t=l("./_object-gops"),r=l("./_object-pie"),i=l("./_to-object"),o=l("./_iobject"),s=Object.assign;n.exports=!s||l("./_fails")(function(){var l={},n={},e=Symbol(),u="abcdefghijklmnopqrst";return l[e]=7,u.split("").forEach(function(l){n[l]=l}),7!=s({},l)[e]||Object.keys(s({},n)).join("")!=u})?function(l,n){for(var e=i(l),s=arguments.length,a=1,f=t.f,c=r.f;s>a;)for(var h,d=o(arguments[a++]),p=f?u(d).concat(f(d)):u(d),b=p.length,v=0;b>v;)c.call(d,h=p[v++])&&(e[h]=d[h]);return e}:s},{"./_fails":104,"./_iobject":112,"./_object-gops":133,"./_object-keys":136,"./_object-pie":137,"./_to-object":154}],127:[function(l,n,e){var u=l("./_an-object"),t=l("./_object-dps"),r=l("./_enum-bug-keys"),i=l("./_shared-key")("IE_PROTO"),o=function(){},s="prototype",a=function(){var n,e=l("./_dom-create")("iframe"),u=r.length,t="<",i=">";for(e.style.display="none",l("./_html").appendChild(e),e.src="javascript:",n=e.contentWindow.document,n.open(),n.write(t+"script"+i+"document.F=Object"+t+"/script"+i),n.close(),a=n.F;u--;)delete a[s][r[u]];return a()};n.exports=Object.create||function(l,n){var e;return null!==l?(o[s]=u(l),e=new o,o[s]=null,e[i]=l):e=a(),void 0===n?e:t(e,n)}},{"./_an-object":84,"./_dom-create":100,"./_enum-bug-keys":101,"./_html":109,"./_object-dps":129,"./_shared-key":145}],128:[function(l,n,e){var u=l("./_an-object"),t=l("./_ie8-dom-define"),r=l("./_to-primitive"),i=Object.defineProperty;e.f=l("./_descriptors")?Object.defineProperty:function(l,n,e){if(u(l),n=r(n,!0),u(e),t)try{return i(l,n,e)}catch(o){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(l[n]=e.value),l}},{"./_an-object":84,"./_descriptors":99,"./_ie8-dom-define":110,"./_to-primitive":155}],129:[function(l,n,e){var u=l("./_object-dp"),t=l("./_an-object"),r=l("./_object-keys");n.exports=l("./_descriptors")?Object.defineProperties:function(l,n){t(l);for(var e,i=r(n),o=i.length,s=0;o>s;)u.f(l,e=i[s++],n[e]);return l}},{"./_an-object":84,"./_descriptors":99,"./_object-dp":128,"./_object-keys":136}],130:[function(l,n,e){var u=l("./_object-pie"),t=l("./_property-desc"),r=l("./_to-iobject"),i=l("./_to-primitive"),o=l("./_has"),s=l("./_ie8-dom-define"),a=Object.getOwnPropertyDescriptor;e.f=l("./_descriptors")?a:function(l,n){if(l=r(l),n=i(n,!0),s)try{return a(l,n)}catch(e){}if(o(l,n))return t(!u.f.call(l,n),l[n])}},{"./_descriptors":99,"./_has":107,"./_ie8-dom-define":110,"./_object-pie":137,"./_property-desc":139,"./_to-iobject":152,"./_to-primitive":155}],131:[function(l,n,e){var u=l("./_to-iobject"),t=l("./_object-gopn").f,r={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],o=function(l){try{return t(l)}catch(n){return i.slice()}};n.exports.f=function(l){return i&&"[object Window]"==r.call(l)?o(l):t(u(l))}},{"./_object-gopn":132,"./_to-iobject":152}],132:[function(l,n,e){var u=l("./_object-keys-internal"),t=l("./_enum-bug-keys").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(l){return u(l,t)}},{"./_enum-bug-keys":101,"./_object-keys-internal":135}],133:[function(l,n,e){e.f=Object.getOwnPropertySymbols},{}],134:[function(l,n,e){var u=l("./_has"),t=l("./_to-object"),r=l("./_shared-key")("IE_PROTO"),i=Object.prototype;n.exports=Object.getPrototypeOf||function(l){return l=t(l),u(l,r)?l[r]:"function"==typeof l.constructor&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?i:null}},{"./_has":107,"./_shared-key":145,"./_to-object":154}],135:[function(l,n,e){var u=l("./_has"),t=l("./_to-iobject"),r=l("./_array-includes")(!1),i=l("./_shared-key")("IE_PROTO");n.exports=function(l,n){var e,o=t(l),s=0,a=[];for(e in o)e!=i&&u(o,e)&&a.push(e);for(;n.length>s;)u(o,e=n[s++])&&(~r(a,e)||a.push(e));return a}},{"./_array-includes":86,"./_has":107,"./_shared-key":145,"./_to-iobject":152}],136:[function(l,n,e){var u=l("./_object-keys-internal"),t=l("./_enum-bug-keys");n.exports=Object.keys||function(l){return u(l,t)}},{"./_enum-bug-keys":101,"./_object-keys-internal":135}],137:[function(l,n,e){e.f={}.propertyIsEnumerable},{}],138:[function(l,n,e){var u=l("./_export"),t=l("./_core"),r=l("./_fails");n.exports=function(l,n){var e=(t.Object||{})[l]||Object[l],i={};i[l]=n(e),u(u.S+u.F*r(function(){e(1)}),"Object",i)}},{"./_core":95,"./_export":103,"./_fails":104}],139:[function(l,n,e){n.exports=function(l,n){return{enumerable:!(1&l),configurable:!(2&l),writable:!(4&l),value:n}}},{}],140:[function(l,n,e){var u=l("./_hide");n.exports=function(l,n,e){for(var t in n)e&&l[t]?l[t]=n[t]:u(l,t,n[t]);return l}},{"./_hide":108}],141:[function(l,n,e){n.exports=l("./_hide")},{"./_hide":108}],142:[function(l,n,e){var u=l("./_is-object"),t=l("./_an-object"),r=function(l,n){if(t(l),!u(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};n.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(n,e,u){try{u=l("./_ctx")(Function.call,l("./_object-gopd").f(Object.prototype,"__proto__").set,2),u(n,[]),e=!(n instanceof Array)}catch(t){e=!0}return function(l,n){return r(l,n),e?l.__proto__=n:u(l,n),l}}({},!1):void 0),check:r}},{"./_an-object":84,"./_ctx":97,"./_is-object":115,"./_object-gopd":130}],143:[function(l,n,e){"use strict";var u=l("./_global"),t=l("./_core"),r=l("./_object-dp"),i=l("./_descriptors"),o=l("./_wks")("species");n.exports=function(l){var n="function"==typeof t[l]?t[l]:u[l];i&&n&&!n[o]&&r.f(n,o,{configurable:!0,get:function(){return this}})}},{"./_core":95,"./_descriptors":99,"./_global":106,"./_object-dp":128,"./_wks":159}],144:[function(l,n,e){var u=l("./_object-dp").f,t=l("./_has"),r=l("./_wks")("toStringTag");n.exports=function(l,n,e){l&&!t(l=e?l:l.prototype,r)&&u(l,r,{configurable:!0,value:n})}},{"./_has":107,"./_object-dp":128,"./_wks":159}],145:[function(l,n,e){var u=l("./_shared")("keys"),t=l("./_uid");n.exports=function(l){return u[l]||(u[l]=t(l))}},{"./_shared":146,"./_uid":156}],146:[function(l,n,e){var u=l("./_global"),t="__core-js_shared__",r=u[t]||(u[t]={});n.exports=function(l){return r[l]||(r[l]={})}},{"./_global":106}],147:[function(l,n,e){var u=l("./_an-object"),t=l("./_a-function"),r=l("./_wks")("species");n.exports=function(l,n){var e,i=u(l).constructor;return void 0===i||void 0==(e=u(i)[r])?n:t(e)}},{"./_a-function":81,"./_an-object":84,"./_wks":159}],148:[function(l,n,e){var u=l("./_to-integer"),t=l("./_defined");n.exports=function(l){return function(n,e){var r,i,o=String(t(n)),s=u(e),a=o.length;return s<0||s>=a?l?"":void 0:(r=o.charCodeAt(s),r<55296||r>56319||s+1===a||(i=o.charCodeAt(s+1))<56320||i>57343?l?o.charAt(s):r:l?o.slice(s,s+2):(r-55296<<10)+(i-56320)+65536)}}},{"./_defined":98,"./_to-integer":151}],149:[function(l,n,e){var u,t,r,i=l("./_ctx"),o=l("./_invoke"),s=l("./_html"),a=l("./_dom-create"),f=l("./_global"),c=f.process,h=f.setImmediate,d=f.clearImmediate,p=f.MessageChannel,b=0,v={},_="onreadystatechange",y=function(){var l=+this;if(v.hasOwnProperty(l)){var n=v[l];delete v[l],n()}},m=function(l){y.call(l.data)};h&&d||(h=function(l){for(var n=[],e=1;arguments.length>e;)n.push(arguments[e++]);return v[++b]=function(){o("function"==typeof l?l:Function(l),n)},u(b),b},d=function(l){delete v[l]},"process"==l("./_cof")(c)?u=function(l){c.nextTick(i(y,l,1))}:p?(t=new p,r=t.port2,t.port1.onmessage=m,u=i(r.postMessage,r,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(u=function(l){f.postMessage(l+"","*")},f.addEventListener("message",m,!1)):u=_ in a("script")?function(l){s.appendChild(a("script"))[_]=function(){s.removeChild(this),y.call(l)}}:function(l){setTimeout(i(y,l,1),0)}),n.exports={set:h,clear:d}},{"./_cof":91,"./_ctx":97,"./_dom-create":100,"./_global":106,"./_html":109,"./_invoke":111}],150:[function(l,n,e){var u=l("./_to-integer"),t=Math.max,r=Math.min;n.exports=function(l,n){return l=u(l),l<0?t(l+n,0):r(l,n)}},{"./_to-integer":151}],151:[function(l,n,e){var u=Math.ceil,t=Math.floor;n.exports=function(l){return isNaN(l=+l)?0:(l>0?t:u)(l)}},{}],152:[function(l,n,e){var u=l("./_iobject"),t=l("./_defined");n.exports=function(l){return u(t(l))}},{"./_defined":98,"./_iobject":112}],153:[function(l,n,e){var u=l("./_to-integer"),t=Math.min;n.exports=function(l){return l>0?t(u(l),9007199254740991):0}},{"./_to-integer":151}],154:[function(l,n,e){var u=l("./_defined");n.exports=function(l){return Object(u(l))}},{"./_defined":98}],155:[function(l,n,e){var u=l("./_is-object");n.exports=function(l,n){if(!u(l))return l;var e,t;if(n&&"function"==typeof(e=l.toString)&&!u(t=e.call(l)))return t;if("function"==typeof(e=l.valueOf)&&!u(t=e.call(l)))return t;if(!n&&"function"==typeof(e=l.toString)&&!u(t=e.call(l)))return t;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":115}],156:[function(l,n,e){var u=0,t=Math.random();n.exports=function(l){return"Symbol(".concat(void 0===l?"":l,")_",(++u+t).toString(36))}},{}],157:[function(l,n,e){var u=l("./_global"),t=l("./_core"),r=l("./_library"),i=l("./_wks-ext"),o=l("./_object-dp").f;n.exports=function(l){var n=t.Symbol||(t.Symbol=r?{}:u.Symbol||{});"_"==l.charAt(0)||l in n||o(n,l,{value:i.f(l)})}},{"./_core":95,"./_global":106,"./_library":123,"./_object-dp":128,"./_wks-ext":158}],158:[function(l,n,e){e.f=l("./_wks")},{"./_wks":159}],159:[function(l,n,e){var u=l("./_shared")("wks"),t=l("./_uid"),r=l("./_global").Symbol,i="function"==typeof r,o=n.exports=function(l){return u[l]||(u[l]=i&&r[l]||(i?r:t)("Symbol."+l))};o.store=u},{"./_global":106,"./_shared":146,"./_uid":156}],160:[function(l,n,e){var u=l("./_classof"),t=l("./_wks")("iterator"),r=l("./_iterators");n.exports=l("./_core").getIteratorMethod=function(l){if(void 0!=l)return l[t]||l["@@iterator"]||r[u(l)]}},{"./_classof":90,"./_core":95,"./_iterators":121,"./_wks":159}],161:[function(l,n,e){"use strict";var u=l("./_ctx"),t=l("./_export"),r=l("./_to-object"),i=l("./_iter-call"),o=l("./_is-array-iter"),s=l("./_to-length"),a=l("./_create-property"),f=l("./core.get-iterator-method");t(t.S+t.F*!l("./_iter-detect")(function(l){Array.from(l)}),"Array",{from:function(l){var n,e,t,c,h=r(l),d="function"==typeof this?this:Array,p=arguments.length,b=p>1?arguments[1]:void 0,v=void 0!==b,_=0,y=f(h);if(v&&(b=u(b,p>2?arguments[2]:void 0,2)),void 0==y||d==Array&&o(y))for(n=s(h.length),e=new d(n);n>_;_++)a(e,_,v?b(h[_],_):h[_]);else for(c=y.call(h),e=new d;!(t=c.next()).done;_++)a(e,_,v?i(c,b,[t.value,_],!0):t.value);return e.length=_,e}})},{"./_create-property":96,"./_ctx":97,"./_export":103,"./_is-array-iter":113,"./_iter-call":116,"./_iter-detect":119,"./_to-length":153,"./_to-object":154,"./core.get-iterator-method":160}],162:[function(l,n,e){"use strict";var u=l("./_add-to-unscopables"),t=l("./_iter-step"),r=l("./_iterators"),i=l("./_to-iobject");n.exports=l("./_iter-define")(Array,"Array",function(l,n){this._t=i(l),this._i=0,this._k=n},function(){var l=this._t,n=this._k,e=this._i++;return!l||e>=l.length?(this._t=void 0,t(1)):"keys"==n?t(0,e):"values"==n?t(0,l[e]):t(0,[e,l[e]])},"values"),r.Arguments=r.Array,u("keys"),u("values"),u("entries")},{"./_add-to-unscopables":82,"./_iter-define":118,"./_iter-step":120,"./_iterators":121,"./_to-iobject":152}],163:[function(l,n,e){var u=l("./_export");u(u.S+u.F,"Object",{assign:l("./_object-assign")})},{"./_export":103,"./_object-assign":126}],164:[function(l,n,e){var u=l("./_export");u(u.S,"Object",{create:l("./_object-create")})},{"./_export":103,"./_object-create":127}],165:[function(l,n,e){var u=l("./_export");u(u.S+u.F*!l("./_descriptors"),"Object",{defineProperty:l("./_object-dp").f})},{"./_descriptors":99,"./_export":103,"./_object-dp":128}],166:[function(l,n,e){var u=l("./_to-iobject"),t=l("./_object-gopd").f;l("./_object-sap")("getOwnPropertyDescriptor",function(){return function(l,n){return t(u(l),n)}})},{"./_object-gopd":130,"./_object-sap":138,"./_to-iobject":152}],167:[function(l,n,e){var u=l("./_to-object"),t=l("./_object-gpo");l("./_object-sap")("getPrototypeOf",function(){return function(l){return t(u(l))}})},{"./_object-gpo":134,"./_object-sap":138,"./_to-object":154}],168:[function(l,n,e){var u=l("./_to-object"),t=l("./_object-keys");l("./_object-sap")("keys",function(){return function(l){return t(u(l))}})},{"./_object-keys":136,"./_object-sap":138,"./_to-object":154}],169:[function(l,n,e){var u=l("./_export");u(u.S,"Object",{setPrototypeOf:l("./_set-proto").set})},{"./_export":103,"./_set-proto":142}],170:[function(l,n,e){arguments[4][38][0].apply(e,arguments)},{dup:38}],171:[function(l,n,e){"use strict";var u,t,r,i=l("./_library"),o=l("./_global"),s=l("./_ctx"),a=l("./_classof"),f=l("./_export"),c=l("./_is-object"),h=l("./_a-function"),d=l("./_an-instance"),p=l("./_for-of"),b=l("./_species-constructor"),v=l("./_task").set,_=l("./_microtask")(),y="Promise",m=o.TypeError,g=o.process,w=o[y],g=o.process,k="process"==a(g),S=function(){},E=!!function(){try{var n=w.resolve(1),e=(n.constructor={})[l("./_wks")("species")]=function(l){l(S,S)};return(k||"function"==typeof PromiseRejectionEvent)&&n.then(S)instanceof e}catch(u){}}(),M=function(l,n){return l===n||l===w&&n===r},I=function(l){var n;return!(!c(l)||"function"!=typeof(n=l.then))&&n},j=function(l){return M(w,l)?new A(l):new t(l)},A=t=function(l){var n,e;this.promise=new l(function(l,u){if(void 0!==n||void 0!==e)throw m("Bad Promise constructor");n=l,e=u}),this.resolve=h(n),this.reject=h(e)},x=function(l){try{l()}catch(n){return{error:n}}},C=function(l,n){if(!l._n){l._n=!0;var e=l._c;_(function(){for(var u=l._v,t=1==l._s,r=0,i=function(n){var e,r,i=t?n.ok:n.fail,o=n.resolve,s=n.reject,a=n.domain;try{i?(t||(2==l._h&&O(l),l._h=1),i===!0?e=u:(a&&a.enter(),e=i(u),a&&a.exit()),e===n.promise?s(m("Promise-chain cycle")):(r=I(e))?r.call(e,o,s):o(e)):s(u)}catch(f){s(f)}};e.length>r;)i(e[r++]);l._c=[],l._n=!1,n&&!l._h&&R(l)})}},R=function(l){v.call(o,function(){var n,e,u,t=l._v;if(B(l)&&(n=x(function(){k?g.emit("unhandledRejection",t,l):(e=o.onunhandledrejection)?e({promise:l,reason:t}):(u=o.console)&&u.error&&u.error("Unhandled promise rejection",t)}),l._h=k||B(l)?2:1),l._a=void 0,n)throw n.error})},B=function(l){if(1==l._h)return!1;for(var n,e=l._a||l._c,u=0;e.length>u;)if(n=e[u++],n.fail||!B(n.promise))return!1;return!0},O=function(l){v.call(o,function(){var n;k?g.emit("rejectionHandled",l):(n=o.onrejectionhandled)&&n({promise:l,reason:l._v})})},T=function(l){var n=this;n._d||(n._d=!0,n=n._w||n,n._v=l,n._s=2,n._a||(n._a=n._c.slice()),C(n,!0))},P=function(l){var n,e=this;if(!e._d){e._d=!0,e=e._w||e;try{if(e===l)throw m("Promise can't be resolved itself");(n=I(l))?_(function(){var u={_w:e,_d:!1};try{n.call(l,s(P,u,1),s(T,u,1))}catch(t){T.call(u,t)}}):(e._v=l,e._s=1,C(e,!1))}catch(u){T.call({_w:e,_d:!1},u)}}};E||(w=function(l){d(this,w,y,"_h"),h(l),u.call(this);try{l(s(P,this,1),s(T,this,1))}catch(n){T.call(this,n)}},u=function(l){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},u.prototype=l("./_redefine-all")(w.prototype,{then:function(l,n){var e=j(b(this,w));return e.ok="function"!=typeof l||l,e.fail="function"==typeof n&&n,e.domain=k?g.domain:void 0,this._c.push(e),this._a&&this._a.push(e),this._s&&C(this,!1),e.promise},"catch":function(l){return this.then(void 0,l)}}),A=function(){var l=new u;this.promise=l,this.resolve=s(P,l,1),this.reject=s(T,l,1)}),f(f.G+f.W+f.F*!E,{Promise:w}),l("./_set-to-string-tag")(w,y),l("./_set-species")(y),r=l("./_core")[y],f(f.S+f.F*!E,y,{reject:function(l){var n=j(this),e=n.reject;return e(l),n.promise}}),f(f.S+f.F*(i||!E),y,{resolve:function(l){if(l instanceof w&&M(l.constructor,this))return l;var n=j(this),e=n.resolve;return e(l),n.promise}}),f(f.S+f.F*!(E&&l("./_iter-detect")(function(l){w.all(l)["catch"](S)})),y,{all:function(l){var n=this,e=j(n),u=e.resolve,t=e.reject,r=x(function(){var e=[],r=0,i=1;p(l,!1,function(l){var o=r++,s=!1;e.push(void 0),i++,n.resolve(l).then(function(l){s||(s=!0,e[o]=l,--i||u(e))},t)}),--i||u(e)});return r&&t(r.error),e.promise},race:function(l){var n=this,e=j(n),u=e.reject,t=x(function(){p(l,!1,function(l){n.resolve(l).then(e.resolve,u)})});return t&&u(t.error),e.promise}})},{"./_a-function":81,"./_an-instance":83,"./_classof":90,"./_core":95,"./_ctx":97,"./_export":103,"./_for-of":105,"./_global":106,"./_is-object":115,"./_iter-detect":119,"./_library":123,"./_microtask":125,"./_redefine-all":140,"./_set-species":143,"./_set-to-string-tag":144, -"./_species-constructor":147,"./_task":149,"./_wks":159}],172:[function(l,n,e){"use strict";var u=l("./_collection-strong");n.exports=l("./_collection")("Set",function(l){return function(){return l(this,arguments.length>0?arguments[0]:void 0)}},{add:function(l){return u.def(this,l=0===l?0:l,l)}},u)},{"./_collection":94,"./_collection-strong":92}],173:[function(l,n,e){"use strict";var u=l("./_string-at")(!0);l("./_iter-define")(String,"String",function(l){this._t=String(l),this._i=0},function(){var l,n=this._t,e=this._i;return e>=n.length?{value:void 0,done:!0}:(l=u(n,e),this._i+=l.length,{value:l,done:!1})})},{"./_iter-define":118,"./_string-at":148}],174:[function(l,n,e){"use strict";var u=l("./_global"),t=l("./_has"),r=l("./_descriptors"),i=l("./_export"),o=l("./_redefine"),s=l("./_meta").KEY,a=l("./_fails"),f=l("./_shared"),c=l("./_set-to-string-tag"),h=l("./_uid"),d=l("./_wks"),p=l("./_wks-ext"),b=l("./_wks-define"),v=l("./_keyof"),_=l("./_enum-keys"),y=l("./_is-array"),m=l("./_an-object"),g=l("./_to-iobject"),w=l("./_to-primitive"),k=l("./_property-desc"),S=l("./_object-create"),E=l("./_object-gopn-ext"),M=l("./_object-gopd"),I=l("./_object-dp"),j=l("./_object-keys"),A=M.f,x=I.f,C=E.f,R=u.Symbol,B=u.JSON,O=B&&B.stringify,T="prototype",P=d("_hidden"),U=d("toPrimitive"),N={}.propertyIsEnumerable,L=f("symbol-registry"),D=f("symbols"),F=f("op-symbols"),q=Object[T],z="function"==typeof R,K=u.QObject,H=!K||!K[T]||!K[T].findChild,V=r&&a(function(){return 7!=S(x({},"a",{get:function(){return x(this,"a",{value:7}).a}})).a})?function(l,n,e){var u=A(q,n);u&&delete q[n],x(l,n,e),u&&l!==q&&x(q,n,u)}:x,Y=function(l){var n=D[l]=S(R[T]);return n._k=l,n},W=z&&"symbol"==typeof R.iterator?function(l){return"symbol"==typeof l}:function(l){return l instanceof R},X=function(l,n,e){return l===q&&X(F,n,e),m(l),n=w(n,!0),m(e),t(D,n)?(e.enumerable?(t(l,P)&&l[P][n]&&(l[P][n]=!1),e=S(e,{enumerable:k(0,!1)})):(t(l,P)||x(l,P,k(1,{})),l[P][n]=!0),V(l,n,e)):x(l,n,e)},G=function(l,n){m(l);for(var e,u=_(n=g(n)),t=0,r=u.length;r>t;)X(l,e=u[t++],n[e]);return l},Z=function(l,n){return void 0===n?S(l):G(S(l),n)},J=function(l){var n=N.call(this,l=w(l,!0));return!(this===q&&t(D,l)&&!t(F,l))&&(!(n||!t(this,l)||!t(D,l)||t(this,P)&&this[P][l])||n)},$=function(l,n){if(l=g(l),n=w(n,!0),l!==q||!t(D,n)||t(F,n)){var e=A(l,n);return!e||!t(D,n)||t(l,P)&&l[P][n]||(e.enumerable=!0),e}},Q=function(l){for(var n,e=C(g(l)),u=[],r=0;e.length>r;)t(D,n=e[r++])||n==P||n==s||u.push(n);return u},ll=function(l){for(var n,e=l===q,u=C(e?F:g(l)),r=[],i=0;u.length>i;)!t(D,n=u[i++])||e&&!t(q,n)||r.push(D[n]);return r};z||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var l=h(arguments.length>0?arguments[0]:void 0),n=function(e){this===q&&n.call(F,e),t(this,P)&&t(this[P],l)&&(this[P][l]=!1),V(this,l,k(1,e))};return r&&H&&V(q,l,{configurable:!0,set:n}),Y(l)},o(R[T],"toString",function(){return this._k}),M.f=$,I.f=X,l("./_object-gopn").f=E.f=Q,l("./_object-pie").f=J,l("./_object-gops").f=ll,r&&!l("./_library")&&o(q,"propertyIsEnumerable",J,!0),p.f=function(l){return Y(d(l))}),i(i.G+i.W+i.F*!z,{Symbol:R});for(var nl="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),el=0;nl.length>el;)d(nl[el++]);for(var nl=j(d.store),el=0;nl.length>el;)b(nl[el++]);i(i.S+i.F*!z,"Symbol",{"for":function(l){return t(L,l+="")?L[l]:L[l]=R(l)},keyFor:function(l){if(W(l))return v(L,l);throw TypeError(l+" is not a symbol!")},useSetter:function(){H=!0},useSimple:function(){H=!1}}),i(i.S+i.F*!z,"Object",{create:Z,defineProperty:X,defineProperties:G,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:ll}),B&&i(i.S+i.F*(!z||a(function(){var l=R();return"[null]"!=O([l])||"{}"!=O({a:l})||"{}"!=O(Object(l))})),"JSON",{stringify:function(l){if(void 0!==l&&!W(l)){for(var n,e,u=[l],t=1;arguments.length>t;)u.push(arguments[t++]);return n=u[1],"function"==typeof n&&(e=n),!e&&y(n)||(n=function(l,n){if(e&&(n=e.call(this,l,n)),!W(n))return n}),u[1]=n,O.apply(B,u)}}}),R[T][U]||l("./_hide")(R[T],U,R[T].valueOf),c(R,"Symbol"),c(Math,"Math",!0),c(u.JSON,"JSON",!0)},{"./_an-object":84,"./_descriptors":99,"./_enum-keys":102,"./_export":103,"./_fails":104,"./_global":106,"./_has":107,"./_hide":108,"./_is-array":114,"./_keyof":122,"./_library":123,"./_meta":124,"./_object-create":127,"./_object-dp":128,"./_object-gopd":130,"./_object-gopn":132,"./_object-gopn-ext":131,"./_object-gops":133,"./_object-keys":136,"./_object-pie":137,"./_property-desc":139,"./_redefine":141,"./_set-to-string-tag":144,"./_shared":146,"./_to-iobject":152,"./_to-primitive":155,"./_uid":156,"./_wks":159,"./_wks-define":157,"./_wks-ext":158}],175:[function(l,n,e){var u=l("./_export");u(u.P+u.R,"Set",{toJSON:l("./_collection-to-json")("Set")})},{"./_collection-to-json":93,"./_export":103}],176:[function(l,n,e){l("./_wks-define")("asyncIterator")},{"./_wks-define":157}],177:[function(l,n,e){l("./_wks-define")("observable")},{"./_wks-define":157}],178:[function(l,n,e){l("./es6.array.iterator");for(var u=l("./_global"),t=l("./_hide"),r=l("./_iterators"),i=l("./_wks")("toStringTag"),o=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],s=0;s<5;s++){var a=o[s],f=u[a],c=f&&f.prototype;c&&!c[i]&&t(c,i,a),r[a]=r.Array}},{"./_global":106,"./_hide":108,"./_iterators":121,"./_wks":159,"./es6.array.iterator":162}],179:[function(l,n,e){(function(l){function n(l){return Array.isArray?Array.isArray(l):"[object Array]"===v(l)}function u(l){return"boolean"==typeof l}function t(l){return null===l}function r(l){return null==l}function i(l){return"number"==typeof l}function o(l){return"string"==typeof l}function s(l){return"symbol"==typeof l}function a(l){return void 0===l}function f(l){return"[object RegExp]"===v(l)}function c(l){return"object"==typeof l&&null!==l}function h(l){return"[object Date]"===v(l)}function d(l){return"[object Error]"===v(l)||l instanceof Error}function p(l){return"function"==typeof l}function b(l){return null===l||"boolean"==typeof l||"number"==typeof l||"string"==typeof l||"symbol"==typeof l||"undefined"==typeof l}function v(l){return Object.prototype.toString.call(l)}e.isArray=n,e.isBoolean=u,e.isNull=t,e.isNullOrUndefined=r,e.isNumber=i,e.isString=o,e.isSymbol=s,e.isUndefined=a,e.isRegExp=f,e.isObject=c,e.isDate=h,e.isError=d,e.isFunction=p,e.isPrimitive=b,e.isBuffer=l.isBuffer}).call(this,{isBuffer:l("../../is-buffer/index.js")})},{"../../is-buffer/index.js":224}],180:[function(l,n,e){(function(e){function u(l){this.curveType=o[l],this.curveType||(this.curveType={name:l}),this.curve=new r.ec(this.curveType.name),this.keys=void 0}function t(l,n,u){Array.isArray(l)||(l=l.toArray());var t=new e(l);if(u&&t.length>5]|=128<>>9<<4)+14]=n;for(var e=1732584193,u=-271733879,t=-1732584194,f=271733878,c=0;c>16)+(n>>16)+(e>>16);return u<<16|65535&e}function f(l,n){return l<>>32-n}var c=l("./helpers");n.exports=function(l){return c.hash(l,u,16)}},{"./helpers":182}],184:[function(l,n,e){(function(e){"use strict";function u(l,n){i.call(this),l=l.toLowerCase(),"string"==typeof n&&(n=new e(n));var u="sha512"===l||"sha384"===l?128:64;this._alg=l,this._key=n,n.length>u?n=t(l).update(n).digest():n.length0;u--)n+=this._buffer(l,n),e+=this._flushBuffer(t,e);return n+=this._buffer(l,n),t},u.prototype["final"]=function(l){var n;l&&(n=this.update(l));var e;return e="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),n?n.concat(e):e},u.prototype._pad=function(l,n){if(0===n)return!1;for(;n>>1];e=s.r28shl(e,i),u=s.r28shl(u,i),s.pc2(e,u,l.keys,t)}},t.prototype._update=function(l,n,e,u){var t=this._desState,r=s.readUInt32BE(l,n),i=s.readUInt32BE(l,n+4);s.ip(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],"encrypt"===this.type?this._encrypt(t,r,i,t.tmp,0):this._decrypt(t,r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],s.writeUInt32BE(e,r,u),s.writeUInt32BE(e,i,u+4)},t.prototype._pad=function(l,n){for(var e=l.length-n,u=n;u>>0,r=d}s.rip(i,r,u,t)},t.prototype._decrypt=function(l,n,e,u,t){for(var r=e,i=n,o=l.keys.length-2;o>=0;o-=2){var a=l.keys[o],f=l.keys[o+1];s.expand(r,l.tmp,0),a^=l.tmp[0],f^=l.tmp[1];var c=s.substitute(a,f),h=s.permute(c),d=r;r=(i^h)>>>0,i=d}s.rip(r,i,u,t)}},{"../des":186,inherits:223,"minimalistic-assert":227}],190:[function(l,n,e){"use strict";function u(l,n){r.equal(n.length,24,"Invalid key length");var e=n.slice(0,8),u=n.slice(8,16),t=n.slice(16,24);"encrypt"===l?this.ciphers=[a.create({type:"encrypt",key:e}),a.create({type:"decrypt",key:u}),a.create({type:"encrypt",key:t})]:this.ciphers=[a.create({type:"decrypt",key:t}),a.create({type:"encrypt",key:u}),a.create({type:"decrypt",key:e})]}function t(l){s.call(this,l);var n=new u(this.type,this.options.key);this._edeState=n}var r=l("minimalistic-assert"),i=l("inherits"),o=l("../des"),s=o.Cipher,a=o.DES;i(t,s),n.exports=t,t.create=function(l){return new t(l)},t.prototype._update=function(l,n,e,u){var t=this._edeState;t.ciphers[0]._update(l,n,e,u),t.ciphers[1]._update(e,u,e,u),t.ciphers[2]._update(e,u,e,u)},t.prototype._pad=a.prototype._pad,t.prototype._unpad=a.prototype._unpad},{"../des":186,inherits:223,"minimalistic-assert":227}],191:[function(l,n,e){"use strict";e.readUInt32BE=function(l,n){var e=l[0+n]<<24|l[1+n]<<16|l[2+n]<<8|l[3+n];return e>>>0},e.writeUInt32BE=function(l,n,e){l[0+e]=n>>>24,l[1+e]=n>>>16&255,l[2+e]=n>>>8&255,l[3+e]=255&n},e.ip=function(l,n,e,u){for(var t=0,r=0,i=6;i>=0;i-=2){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>>o+i&1}for(var i=6;i>=0;i-=2){for(var o=1;o<=25;o+=8)r<<=1,r|=n>>>o+i&1;for(var o=1;o<=25;o+=8)r<<=1,r|=l>>>o+i&1}e[u+0]=t>>>0,e[u+1]=r>>>0},e.rip=function(l,n,e,u){for(var t=0,r=0,i=0;i<4;i++)for(var o=24;o>=0;o-=8)t<<=1,t|=n>>>o+i&1,t<<=1,t|=l>>>o+i&1;for(var i=4;i<8;i++)for(var o=24;o>=0;o-=8)r<<=1,r|=n>>>o+i&1,r<<=1,r|=l>>>o+i&1;e[u+0]=t>>>0,e[u+1]=r>>>0},e.pc1=function(l,n,e,u){for(var t=0,r=0,i=7;i>=5;i--){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>o+i&1}for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var i=1;i<=3;i++){for(var o=0;o<=24;o+=8)r<<=1,r|=n>>o+i&1;for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1}for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1;e[u+0]=t>>>0,e[u+1]=r>>>0},e.r28shl=function(l,n){return l<>>28-n};var u=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(l,n,e,t){for(var r=0,i=0,o=u.length>>>1,s=0;s>>u[s]&1;for(var s=o;s>>u[s]&1;e[t+0]=r>>>0,e[t+1]=i>>>0},e.expand=function(l,n,e){var u=0,t=0;u=(1&l)<<5|l>>>27;for(var r=23;r>=15;r-=4)u<<=6,u|=l>>>r&63;for(var r=11;r>=3;r-=4)t|=l>>>r&63,t<<=6;t|=(31&l)<<1|l>>>31,n[e+0]=u>>>0,n[e+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(l,n){for(var e=0,u=0;u<4;u++){var r=l>>>18-6*u&63,i=t[64*u+r];e<<=4,e|=i}for(var u=0;u<4;u++){var r=n>>>18-6*u&63,i=t[256+64*u+r];e<<=4,e|=i}return e>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(l){for(var n=0,e=0;e>>r[e]&1;return n>>>0},e.padSplit=function(l,n,e){for(var u=l.toString(2);u.lengthl;)e.ishrn(1);if(e.isEven()&&e.iadd(h),e.testn(1)||e.iadd(d),n.cmp(d)){if(!n.cmp(p))for(;e.mod(b).cmp(v);)e.iadd(y)}else for(;e.mod(a).cmp(_);)e.iadd(y);if(u=e.shrn(1),t(u)&&t(e)&&r(u)&&r(e)&&c.test(u)&&c.test(e))return e}}var o=l("randombytes");n.exports=i,i.simpleSieve=t,i.fermatTest=r;var s=l("bn.js"),a=new s(24),f=l("miller-rabin"),c=new f,h=new s(1),d=new s(2),p=new s(5),b=(new s(16),new s(8),new s(10)),v=new s(3),_=(new s(7),new s(11)),y=new s(4),m=(new s(12),null)},{"bn.js":36,"miller-rabin":226,randombytes:245}],195:[function(l,n,e){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff" +"./_species-constructor":147,"./_task":149,"./_wks":159}],172:[function(l,n,e){"use strict";var u=l("./_collection-strong");n.exports=l("./_collection")("Set",function(l){return function(){return l(this,arguments.length>0?arguments[0]:void 0)}},{add:function(l){return u.def(this,l=0===l?0:l,l)}},u)},{"./_collection":94,"./_collection-strong":92}],173:[function(l,n,e){"use strict";var u=l("./_string-at")(!0);l("./_iter-define")(String,"String",function(l){this._t=String(l),this._i=0},function(){var l,n=this._t,e=this._i;return e>=n.length?{value:void 0,done:!0}:(l=u(n,e),this._i+=l.length,{value:l,done:!1})})},{"./_iter-define":118,"./_string-at":148}],174:[function(l,n,e){"use strict";var u=l("./_global"),t=l("./_has"),r=l("./_descriptors"),i=l("./_export"),o=l("./_redefine"),s=l("./_meta").KEY,a=l("./_fails"),f=l("./_shared"),c=l("./_set-to-string-tag"),h=l("./_uid"),d=l("./_wks"),p=l("./_wks-ext"),b=l("./_wks-define"),v=l("./_keyof"),_=l("./_enum-keys"),y=l("./_is-array"),m=l("./_an-object"),g=l("./_to-iobject"),w=l("./_to-primitive"),k=l("./_property-desc"),S=l("./_object-create"),E=l("./_object-gopn-ext"),M=l("./_object-gopd"),I=l("./_object-dp"),j=l("./_object-keys"),A=M.f,x=I.f,C=E.f,R=u.Symbol,B=u.JSON,O=B&&B.stringify,T="prototype",P=d("_hidden"),U=d("toPrimitive"),N={}.propertyIsEnumerable,L=f("symbol-registry"),D=f("symbols"),q=f("op-symbols"),F=Object[T],z="function"==typeof R,K=u.QObject,H=!K||!K[T]||!K[T].findChild,V=r&&a(function(){return 7!=S(x({},"a",{get:function(){return x(this,"a",{value:7}).a}})).a})?function(l,n,e){var u=A(F,n);u&&delete F[n],x(l,n,e),u&&l!==F&&x(F,n,u)}:x,Y=function(l){var n=D[l]=S(R[T]);return n._k=l,n},W=z&&"symbol"==typeof R.iterator?function(l){return"symbol"==typeof l}:function(l){return l instanceof R},X=function(l,n,e){return l===F&&X(q,n,e),m(l),n=w(n,!0),m(e),t(D,n)?(e.enumerable?(t(l,P)&&l[P][n]&&(l[P][n]=!1),e=S(e,{enumerable:k(0,!1)})):(t(l,P)||x(l,P,k(1,{})),l[P][n]=!0),V(l,n,e)):x(l,n,e)},G=function(l,n){m(l);for(var e,u=_(n=g(n)),t=0,r=u.length;r>t;)X(l,e=u[t++],n[e]);return l},Z=function(l,n){return void 0===n?S(l):G(S(l),n)},J=function(l){var n=N.call(this,l=w(l,!0));return!(this===F&&t(D,l)&&!t(q,l))&&(!(n||!t(this,l)||!t(D,l)||t(this,P)&&this[P][l])||n)},$=function(l,n){if(l=g(l),n=w(n,!0),l!==F||!t(D,n)||t(q,n)){var e=A(l,n);return!e||!t(D,n)||t(l,P)&&l[P][n]||(e.enumerable=!0),e}},Q=function(l){for(var n,e=C(g(l)),u=[],r=0;e.length>r;)t(D,n=e[r++])||n==P||n==s||u.push(n);return u},ll=function(l){for(var n,e=l===F,u=C(e?q:g(l)),r=[],i=0;u.length>i;)!t(D,n=u[i++])||e&&!t(F,n)||r.push(D[n]);return r};z||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var l=h(arguments.length>0?arguments[0]:void 0),n=function(e){this===F&&n.call(q,e),t(this,P)&&t(this[P],l)&&(this[P][l]=!1),V(this,l,k(1,e))};return r&&H&&V(F,l,{configurable:!0,set:n}),Y(l)},o(R[T],"toString",function(){return this._k}),M.f=$,I.f=X,l("./_object-gopn").f=E.f=Q,l("./_object-pie").f=J,l("./_object-gops").f=ll,r&&!l("./_library")&&o(F,"propertyIsEnumerable",J,!0),p.f=function(l){return Y(d(l))}),i(i.G+i.W+i.F*!z,{Symbol:R});for(var nl="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),el=0;nl.length>el;)d(nl[el++]);for(var nl=j(d.store),el=0;nl.length>el;)b(nl[el++]);i(i.S+i.F*!z,"Symbol",{"for":function(l){return t(L,l+="")?L[l]:L[l]=R(l)},keyFor:function(l){if(W(l))return v(L,l);throw TypeError(l+" is not a symbol!")},useSetter:function(){H=!0},useSimple:function(){H=!1}}),i(i.S+i.F*!z,"Object",{create:Z,defineProperty:X,defineProperties:G,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:ll}),B&&i(i.S+i.F*(!z||a(function(){var l=R();return"[null]"!=O([l])||"{}"!=O({a:l})||"{}"!=O(Object(l))})),"JSON",{stringify:function(l){if(void 0!==l&&!W(l)){for(var n,e,u=[l],t=1;arguments.length>t;)u.push(arguments[t++]);return n=u[1],"function"==typeof n&&(e=n),!e&&y(n)||(n=function(l,n){if(e&&(n=e.call(this,l,n)),!W(n))return n}),u[1]=n,O.apply(B,u)}}}),R[T][U]||l("./_hide")(R[T],U,R[T].valueOf),c(R,"Symbol"),c(Math,"Math",!0),c(u.JSON,"JSON",!0)},{"./_an-object":84,"./_descriptors":99,"./_enum-keys":102,"./_export":103,"./_fails":104,"./_global":106,"./_has":107,"./_hide":108,"./_is-array":114,"./_keyof":122,"./_library":123,"./_meta":124,"./_object-create":127,"./_object-dp":128,"./_object-gopd":130,"./_object-gopn":132,"./_object-gopn-ext":131,"./_object-gops":133,"./_object-keys":136,"./_object-pie":137,"./_property-desc":139,"./_redefine":141,"./_set-to-string-tag":144,"./_shared":146,"./_to-iobject":152,"./_to-primitive":155,"./_uid":156,"./_wks":159,"./_wks-define":157,"./_wks-ext":158}],175:[function(l,n,e){var u=l("./_export");u(u.P+u.R,"Set",{toJSON:l("./_collection-to-json")("Set")})},{"./_collection-to-json":93,"./_export":103}],176:[function(l,n,e){l("./_wks-define")("asyncIterator")},{"./_wks-define":157}],177:[function(l,n,e){l("./_wks-define")("observable")},{"./_wks-define":157}],178:[function(l,n,e){l("./es6.array.iterator");for(var u=l("./_global"),t=l("./_hide"),r=l("./_iterators"),i=l("./_wks")("toStringTag"),o=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],s=0;s<5;s++){var a=o[s],f=u[a],c=f&&f.prototype;c&&!c[i]&&t(c,i,a),r[a]=r.Array}},{"./_global":106,"./_hide":108,"./_iterators":121,"./_wks":159,"./es6.array.iterator":162}],179:[function(l,n,e){(function(l){function n(l){return Array.isArray?Array.isArray(l):"[object Array]"===v(l)}function u(l){return"boolean"==typeof l}function t(l){return null===l}function r(l){return null==l}function i(l){return"number"==typeof l}function o(l){return"string"==typeof l}function s(l){return"symbol"==typeof l}function a(l){return void 0===l}function f(l){return"[object RegExp]"===v(l)}function c(l){return"object"==typeof l&&null!==l}function h(l){return"[object Date]"===v(l)}function d(l){return"[object Error]"===v(l)||l instanceof Error}function p(l){return"function"==typeof l}function b(l){return null===l||"boolean"==typeof l||"number"==typeof l||"string"==typeof l||"symbol"==typeof l||"undefined"==typeof l}function v(l){return Object.prototype.toString.call(l)}e.isArray=n,e.isBoolean=u,e.isNull=t,e.isNullOrUndefined=r,e.isNumber=i,e.isString=o,e.isSymbol=s,e.isUndefined=a,e.isRegExp=f,e.isObject=c,e.isDate=h,e.isError=d,e.isFunction=p,e.isPrimitive=b,e.isBuffer=l.isBuffer}).call(this,{isBuffer:l("../../is-buffer/index.js")})},{"../../is-buffer/index.js":224}],180:[function(l,n,e){(function(e){function u(l){this.curveType=o[l],this.curveType||(this.curveType={name:l}),this.curve=new r.ec(this.curveType.name),this.keys=void 0}function t(l,n,u){Array.isArray(l)||(l=l.toArray());var t=new e(l);if(u&&t.length>5]|=128<>>9<<4)+14]=n;for(var e=1732584193,u=-271733879,t=-1732584194,f=271733878,c=0;c>16)+(n>>16)+(e>>16);return u<<16|65535&e}function f(l,n){return l<>>32-n}var c=l("./helpers");n.exports=function(l){return c.hash(l,u,16)}},{"./helpers":182}],184:[function(l,n,e){(function(e){"use strict";function u(l,n){i.call(this),l=l.toLowerCase(),"string"==typeof n&&(n=new e(n));var u="sha512"===l||"sha384"===l?128:64;this._alg=l,this._key=n,n.length>u?n=t(l).update(n).digest():n.length0;u--)n+=this._buffer(l,n),e+=this._flushBuffer(t,e);return n+=this._buffer(l,n),t},u.prototype["final"]=function(l){var n;l&&(n=this.update(l));var e;return e="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),n?n.concat(e):e},u.prototype._pad=function(l,n){if(0===n)return!1;for(;n>>1];e=s.r28shl(e,i),u=s.r28shl(u,i),s.pc2(e,u,l.keys,t)}},t.prototype._update=function(l,n,e,u){var t=this._desState,r=s.readUInt32BE(l,n),i=s.readUInt32BE(l,n+4);s.ip(r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],"encrypt"===this.type?this._encrypt(t,r,i,t.tmp,0):this._decrypt(t,r,i,t.tmp,0),r=t.tmp[0],i=t.tmp[1],s.writeUInt32BE(e,r,u),s.writeUInt32BE(e,i,u+4)},t.prototype._pad=function(l,n){for(var e=l.length-n,u=n;u>>0,r=d}s.rip(i,r,u,t)},t.prototype._decrypt=function(l,n,e,u,t){for(var r=e,i=n,o=l.keys.length-2;o>=0;o-=2){var a=l.keys[o],f=l.keys[o+1];s.expand(r,l.tmp,0),a^=l.tmp[0],f^=l.tmp[1];var c=s.substitute(a,f),h=s.permute(c),d=r;r=(i^h)>>>0,i=d}s.rip(r,i,u,t)}},{"../des":186,inherits:223,"minimalistic-assert":227}],190:[function(l,n,e){"use strict";function u(l,n){r.equal(n.length,24,"Invalid key length");var e=n.slice(0,8),u=n.slice(8,16),t=n.slice(16,24);"encrypt"===l?this.ciphers=[a.create({type:"encrypt",key:e}),a.create({type:"decrypt",key:u}),a.create({type:"encrypt",key:t})]:this.ciphers=[a.create({type:"decrypt",key:t}),a.create({type:"encrypt",key:u}),a.create({type:"decrypt",key:e})]}function t(l){s.call(this,l);var n=new u(this.type,this.options.key);this._edeState=n}var r=l("minimalistic-assert"),i=l("inherits"),o=l("../des"),s=o.Cipher,a=o.DES;i(t,s),n.exports=t,t.create=function(l){return new t(l)},t.prototype._update=function(l,n,e,u){var t=this._edeState;t.ciphers[0]._update(l,n,e,u),t.ciphers[1]._update(e,u,e,u),t.ciphers[2]._update(e,u,e,u)},t.prototype._pad=a.prototype._pad,t.prototype._unpad=a.prototype._unpad},{"../des":186,inherits:223,"minimalistic-assert":227}],191:[function(l,n,e){"use strict";e.readUInt32BE=function(l,n){var e=l[0+n]<<24|l[1+n]<<16|l[2+n]<<8|l[3+n];return e>>>0},e.writeUInt32BE=function(l,n,e){l[0+e]=n>>>24,l[1+e]=n>>>16&255,l[2+e]=n>>>8&255,l[3+e]=255&n},e.ip=function(l,n,e,u){for(var t=0,r=0,i=6;i>=0;i-=2){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>>o+i&1}for(var i=6;i>=0;i-=2){for(var o=1;o<=25;o+=8)r<<=1,r|=n>>>o+i&1;for(var o=1;o<=25;o+=8)r<<=1,r|=l>>>o+i&1}e[u+0]=t>>>0,e[u+1]=r>>>0},e.rip=function(l,n,e,u){for(var t=0,r=0,i=0;i<4;i++)for(var o=24;o>=0;o-=8)t<<=1,t|=n>>>o+i&1,t<<=1,t|=l>>>o+i&1;for(var i=4;i<8;i++)for(var o=24;o>=0;o-=8)r<<=1,r|=n>>>o+i&1,r<<=1,r|=l>>>o+i&1;e[u+0]=t>>>0,e[u+1]=r>>>0},e.pc1=function(l,n,e,u){for(var t=0,r=0,i=7;i>=5;i--){for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var o=0;o<=24;o+=8)t<<=1,t|=l>>o+i&1}for(var o=0;o<=24;o+=8)t<<=1,t|=n>>o+i&1;for(var i=1;i<=3;i++){for(var o=0;o<=24;o+=8)r<<=1,r|=n>>o+i&1;for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1}for(var o=0;o<=24;o+=8)r<<=1,r|=l>>o+i&1;e[u+0]=t>>>0,e[u+1]=r>>>0},e.r28shl=function(l,n){return l<>>28-n};var u=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(l,n,e,t){for(var r=0,i=0,o=u.length>>>1,s=0;s>>u[s]&1;for(var s=o;s>>u[s]&1;e[t+0]=r>>>0,e[t+1]=i>>>0},e.expand=function(l,n,e){var u=0,t=0;u=(1&l)<<5|l>>>27;for(var r=23;r>=15;r-=4)u<<=6,u|=l>>>r&63;for(var r=11;r>=3;r-=4)t|=l>>>r&63,t<<=6;t|=(31&l)<<1|l>>>31,n[e+0]=u>>>0,n[e+1]=t>>>0};var t=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(l,n){for(var e=0,u=0;u<4;u++){var r=l>>>18-6*u&63,i=t[64*u+r];e<<=4,e|=i}for(var u=0;u<4;u++){var r=n>>>18-6*u&63,i=t[256+64*u+r];e<<=4,e|=i}return e>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(l){for(var n=0,e=0;e>>r[e]&1;return n>>>0},e.padSplit=function(l,n,e){for(var u=l.toString(2);u.lengthl;)e.ishrn(1);if(e.isEven()&&e.iadd(h),e.testn(1)||e.iadd(d),n.cmp(d)){if(!n.cmp(p))for(;e.mod(b).cmp(v);)e.iadd(y)}else for(;e.mod(a).cmp(_);)e.iadd(y);if(u=e.shrn(1),t(u)&&t(e)&&r(u)&&r(e)&&c.test(u)&&c.test(e))return e}}var o=l("randombytes");n.exports=i,i.simpleSieve=t,i.fermatTest=r;var s=l("bn.js"),a=new s(24),f=l("miller-rabin"),c=new f,h=new s(1),d=new s(2),p=new s(5),b=(new s(16),new s(8),new s(10)),v=new s(3),_=(new s(7),new s(11)),y=new s(4),m=(new s(12),null)},{"bn.js":36,"miller-rabin":226,randombytes:246}],195:[function(l,n,e){n.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff" },modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],196:[function(l,n,e){"use strict";var u=e;u.version=l("../package.json").version,u.utils=l("./elliptic/utils"),u.rand=l("brorand"),u.curve=l("./elliptic/curve"),u.curves=l("./elliptic/curves"),u.ec=l("./elliptic/ec"),u.eddsa=l("./elliptic/eddsa")},{"../package.json":211,"./elliptic/curve":199,"./elliptic/curves":202,"./elliptic/ec":203,"./elliptic/eddsa":206,"./elliptic/utils":210,brorand:37}],197:[function(l,n,e){"use strict";function u(l,n){this.type=l,this.p=new r(n.p,16),this.red=n.prime?r.red(n.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=n.n&&new r(n.n,16),this.g=n.g&&this.pointFromJSON(n.g,n.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var e=this.n&&this.p.div(this.n);!e||e.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function t(l,n){this.curve=l,this.type=n,this.precomputed=null}var r=l("bn.js"),i=l("../../elliptic"),o=i.utils,s=o.getNAF,a=o.getJSF,f=o.assert;n.exports=u,u.prototype.point=function(){throw new Error("Not implemented")},u.prototype.validate=function(){throw new Error("Not implemented")},u.prototype._fixedNafMul=function(l,n){f(l.precomputed);var e=l._getDoubles(),u=s(n,1),t=(1<=i;n--)o=(o<<1)+u[n];r.push(o)}for(var a=this.jpoint(null,null,null),c=this.jpoint(null,null,null),h=t;h>0;h--){for(var i=0;i=0;o--){for(var n=0;o>=0&&0===r[o];o--)n++;if(o>=0&&n++,i=i.dblp(n),o<0)break;var a=r[o];f(0!==a),i="affine"===l.type?a>0?i.mixedAdd(t[a-1>>1]):i.mixedAdd(t[-a-1>>1].neg()):a>0?i.add(t[a-1>>1]):i.add(t[-a-1>>1].neg())}return"affine"===l.type?i.toP():i},u.prototype._wnafMulAdd=function(l,n,e,u,t){for(var r=this._wnafT1,i=this._wnafT2,o=this._wnafT3,f=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===r[p]&&1===r[b]){var v=[n[p],null,null,n[b]];0===n[p].y.cmp(n[b].y)?(v[1]=n[p].add(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg())):0===n[p].y.cmp(n[b].y.redNeg())?(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].add(n[b].neg())):(v[1]=n[p].toJ().mixedAdd(n[b]),v[2]=n[p].toJ().mixedAdd(n[b].neg()));var _=[-3,-1,-5,-7,0,7,5,1,3],y=a(e[p],e[b]);f=Math.max(y[0].length,f),o[p]=new Array(f),o[b]=new Array(f);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var M=!0,m=0;m=0&&E++,k=k.dblp(E),c<0)break;for(var m=0;m0?h=i[m][I-1>>1]:I<0&&(h=i[m][-I-1>>1].neg()),k="affine"===h.type?k.mixedAdd(h):k.add(h))}}for(var c=0;c=Math.ceil((l.bitLength()+1)/n.step)},t.prototype._getDoubles=function(l,n){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var e=[this],u=this,t=0;t":""},t.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},t.prototype._extDbl=function(){var l=this.x.redSqr(),n=this.y.redSqr(),e=this.z.redSqr();e=e.redIAdd(e);var u=this.curve._mulA(l),t=this.x.redAdd(this.y).redSqr().redISub(l).redISub(n),r=u.redAdd(n),i=r.redSub(e),o=u.redSub(n),s=t.redMul(i),a=r.redMul(o),f=t.redMul(o),c=i.redMul(r);return this.curve.point(s,a,c,f)},t.prototype._projDbl=function(){var l,n,e,u=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),r=this.y.redSqr();if(this.curve.twisted){var i=this.curve._mulA(t),o=i.redAdd(r);if(this.zOne)l=u.redSub(t).redSub(r).redMul(o.redSub(this.curve.two)),n=o.redMul(i.redSub(r)),e=o.redSqr().redSub(o).redSub(o);else{var s=this.z.redSqr(),a=o.redSub(s).redISub(s);l=u.redSub(t).redISub(r).redMul(a),n=o.redMul(i.redSub(r)),e=o.redMul(a)}}else{var i=t.redAdd(r),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),a=i.redSub(s).redSub(s);l=this.curve._mulC(u.redISub(i)).redMul(a),n=this.curve._mulC(i).redMul(t.redISub(r)),e=i.redMul(a)}return this.curve.point(l,n,e)},t.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},t.prototype._extAdd=function(l){var n=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),e=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),u=this.t.redMul(this.curve.dd).redMul(l.t),t=this.z.redMul(l.z.redAdd(l.z)),r=e.redSub(n),i=t.redSub(u),o=t.redAdd(u),s=e.redAdd(n),a=r.redMul(i),f=o.redMul(s),c=r.redMul(s),h=i.redMul(o);return this.curve.point(a,f,h,c)},t.prototype._projAdd=function(l){var n,e,u=this.z.redMul(l.z),t=u.redSqr(),r=this.x.redMul(l.x),i=this.y.redMul(l.y),o=this.curve.d.redMul(r).redMul(i),s=t.redSub(o),a=t.redAdd(o),f=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(r).redISub(i),c=u.redMul(s).redMul(f);return this.curve.twisted?(n=u.redMul(a).redMul(i.redSub(this.curve._mulA(r))),e=s.redMul(a)):(n=u.redMul(a).redMul(i.redSub(r)),e=this.curve._mulC(s).redMul(a)),this.curve.point(c,n,e)},t.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},t.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,e){return this.curve._wnafMulAdd(1,[this,n],[l,e],2,!1)},t.prototype.jmulAdd=function(l,n,e){return this.curve._wnafMulAdd(1,[this,n],[l,e],2,!0)},t.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},t.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()},t.prototype.getY=function(){return this.normalize(),this.y.fromRed()},t.prototype.eq=function(l){return this===l||0===this.getX().cmp(l.getX())&&0===this.getY().cmp(l.getY())},t.prototype.eqXToP=function(l){var n=l.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(n))return!0;for(var e=l.clone(),u=this.curve.redN.redMul(this.z);;){if(e.iadd(this.curve.n),e.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(u),0===this.x.cmp(n))return!0}return!1},t.prototype.toP=t.prototype.normalize,t.prototype.mixedAdd=t.prototype.add},{"../../elliptic":196,"../curve":199,"bn.js":36,inherits:223}],199:[function(l,n,e){"use strict";var u=e;u.base=l("./base"),u["short"]=l("./short"),u.mont=l("./mont"),u.edwards=l("./edwards")},{"./base":197,"./edwards":198,"./mont":200,"./short":201}],200:[function(l,n,e){"use strict";function u(l){s.call(this,"mont",l),this.a=new i(l.a,16).toRed(this.red),this.b=new i(l.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function t(l,n,e){s.BasePoint.call(this,l,"projective"),null===n&&null===e?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(n,16),this.z=new i(e,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var r=l("../curve"),i=l("bn.js"),o=l("inherits"),s=r.base,a=l("../../elliptic"),f=a.utils;o(u,s),n.exports=u,u.prototype.validate=function(l){var n=l.normalize().x,e=n.redSqr(),u=e.redMul(n).redAdd(e.redMul(this.a)).redAdd(n),t=u.redSqrt();return 0===t.redSqr().cmp(u)},o(t,s.BasePoint),u.prototype.decodePoint=function(l,n){return this.point(f.toArray(l,n),1)},u.prototype.point=function(l,n){return new t(this,l,n)},u.prototype.pointFromJSON=function(l){return t.fromJSON(this,l)},t.prototype.precompute=function(){},t.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},t.fromJSON=function(l,n){return new t(l,n[0],n[1]||l.one)},t.prototype.inspect=function(){return this.isInfinity()?"":""},t.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},t.prototype.dbl=function(){var l=this.x.redAdd(this.z),n=l.redSqr(),e=this.x.redSub(this.z),u=e.redSqr(),t=n.redSub(u),r=n.redMul(u),i=t.redMul(u.redAdd(this.curve.a24.redMul(t)));return this.curve.point(r,i)},t.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.diffAdd=function(l,n){var e=this.x.redAdd(this.z),u=this.x.redSub(this.z),t=l.x.redAdd(l.z),r=l.x.redSub(l.z),i=r.redMul(e),o=t.redMul(u),s=n.z.redMul(i.redAdd(o).redSqr()),a=n.x.redMul(i.redISub(o).redSqr());return this.curve.point(s,a)},t.prototype.mul=function(l){for(var n=l.clone(),e=this,u=this.curve.point(null,null),t=this,r=[];0!==n.cmpn(0);n.iushrn(1))r.push(n.andln(1));for(var i=r.length-1;i>=0;i--)0===r[i]?(e=e.diffAdd(u,t),u=u.dbl()):(u=e.diffAdd(u,t),e=e.dbl());return u},t.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},t.prototype.eq=function(l){return 0===this.getX().cmp(l.getX())},t.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},t.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../../elliptic":196,"../curve":199,"bn.js":36,inherits:223}],201:[function(l,n,e){"use strict";function u(l){f.call(this,"short",l),this.a=new s(l.a,16).toRed(this.red),this.b=new s(l.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function t(l,n,e,u){f.BasePoint.call(this,l,"affine"),null===n&&null===e?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(n,16),this.y=new s(e,16),u&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function r(l,n,e,u){f.BasePoint.call(this,l,"jacobian"),null===n&&null===e&&null===u?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(n,16),this.y=new s(e,16),this.z=new s(u,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var i=l("../curve"),o=l("../../elliptic"),s=l("bn.js"),a=l("inherits"),f=i.base,c=o.utils.assert;a(u,f),n.exports=u,u.prototype._getEndomorphism=function(l){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var n,e;if(l.beta)n=new s(l.beta,16).toRed(this.red);else{var u=this._getEndoRoots(this.p);n=u[0].cmp(u[1])<0?u[0]:u[1],n=n.toRed(this.red)}if(l.lambda)e=new s(l.lambda,16);else{var t=this._getEndoRoots(this.n);0===this.g.mul(t[0]).x.cmp(this.g.x.redMul(n))?e=t[0]:(e=t[1],c(0===this.g.mul(e).x.cmp(this.g.x.redMul(n))))}var r;return r=l.basis?l.basis.map(function(l){return{a:new s(l.a,16),b:new s(l.b,16)}}):this._getEndoBasis(e),{beta:n,lambda:e,basis:r}}},u.prototype._getEndoRoots=function(l){var n=l===this.p?this.red:s.mont(l),e=new s(2).toRed(n).redInvm(),u=e.redNeg(),t=new s(3).toRed(n).redNeg().redSqrt().redMul(e),r=u.redAdd(t).fromRed(),i=u.redSub(t).fromRed();return[r,i]},u.prototype._getEndoBasis=function(l){for(var n,e,u,t,r,i,o,a,f,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=l,d=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),_=new s(1),y=0;0!==h.cmpn(0);){var m=d.div(h);a=d.sub(m.mul(h)),f=v.sub(m.mul(p));var g=_.sub(m.mul(b));if(!u&&a.cmp(c)<0)n=o.neg(),e=p,u=a.neg(),t=f;else if(u&&2===++y)break;o=a,d=h,h=a,v=p,p=f,_=b,b=g}r=a.neg(),i=f;var w=u.sqr().add(t.sqr()),k=r.sqr().add(i.sqr());return k.cmp(w)>=0&&(r=n,i=e),u.negative&&(u=u.neg(),t=t.neg()),r.negative&&(r=r.neg(),i=i.neg()),[{a:u,b:t},{a:r,b:i}]},u.prototype._endoSplit=function(l){var n=this.endo.basis,e=n[0],u=n[1],t=u.b.mul(l).divRound(this.n),r=e.b.neg().mul(l).divRound(this.n),i=t.mul(e.a),o=r.mul(u.a),s=t.mul(e.b),a=r.mul(u.b),f=l.sub(i).sub(o),c=s.add(a).neg();return{k1:f,k2:c}},u.prototype.pointFromX=function(l,n){l=new s(l,16),l.red||(l=l.toRed(this.red));var e=l.redSqr().redMul(l).redIAdd(l.redMul(this.a)).redIAdd(this.b),u=e.redSqrt();if(0!==u.redSqr().redSub(e).cmp(this.zero))throw new Error("invalid point");var t=u.fromRed().isOdd();return(n&&!t||!n&&t)&&(u=u.redNeg()),this.point(l,u)},u.prototype.validate=function(l){if(l.inf)return!0;var n=l.x,e=l.y,u=this.a.redMul(n),t=n.redSqr().redMul(n).redIAdd(u).redIAdd(this.b);return 0===e.redSqr().redISub(t).cmpn(0)},u.prototype._endoWnafMulAdd=function(l,n,e){for(var u=this._endoWnafT1,t=this._endoWnafT2,r=0;r":""},t.prototype.isInfinity=function(){return this.inf},t.prototype.add=function(l){if(this.inf)return l;if(l.inf)return this;if(this.eq(l))return this.dbl();if(this.neg().eq(l))return this.curve.point(null,null);if(0===this.x.cmp(l.x))return this.curve.point(null,null);var n=this.y.redSub(l.y);0!==n.cmpn(0)&&(n=n.redMul(this.x.redSub(l.x).redInvm()));var e=n.redSqr().redISub(this.x).redISub(l.x),u=n.redMul(this.x.redSub(e)).redISub(this.y);return this.curve.point(e,u)},t.prototype.dbl=function(){if(this.inf)return this;var l=this.y.redAdd(this.y);if(0===l.cmpn(0))return this.curve.point(null,null);var n=this.curve.a,e=this.x.redSqr(),u=l.redInvm(),t=e.redAdd(e).redIAdd(e).redIAdd(n).redMul(u),r=t.redSqr().redISub(this.x.redAdd(this.x)),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},t.prototype.getX=function(){return this.x.fromRed()},t.prototype.getY=function(){return this.y.fromRed()},t.prototype.mul=function(l){return l=new s(l,16),this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve.endo?this.curve._endoWnafMulAdd([this],[l]):this.curve._wnafMul(this,l)},t.prototype.mulAdd=function(l,n,e){var u=[this,n],t=[l,e];return this.curve.endo?this.curve._endoWnafMulAdd(u,t):this.curve._wnafMulAdd(1,u,t,2)},t.prototype.jmulAdd=function(l,n,e){var u=[this,n],t=[l,e];return this.curve.endo?this.curve._endoWnafMulAdd(u,t,!0):this.curve._wnafMulAdd(1,u,t,2,!0)},t.prototype.eq=function(l){return this===l||this.inf===l.inf&&(this.inf||0===this.x.cmp(l.x)&&0===this.y.cmp(l.y))},t.prototype.neg=function(l){if(this.inf)return this;var n=this.curve.point(this.x,this.y.redNeg());if(l&&this.precomputed){var e=this.precomputed,u=function(l){return l.neg()};n.precomputed={naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(u)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(u)}}}return n},t.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var l=this.curve.jpoint(this.x,this.y,this.curve.one);return l},a(r,f.BasePoint),u.prototype.jpoint=function(l,n,e){return new r(this,l,n,e)},r.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var l=this.z.redInvm(),n=l.redSqr(),e=this.x.redMul(n),u=this.y.redMul(n).redMul(l);return this.curve.point(e,u)},r.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},r.prototype.add=function(l){if(this.isInfinity())return l;if(l.isInfinity())return this;var n=l.z.redSqr(),e=this.z.redSqr(),u=this.x.redMul(n),t=l.x.redMul(e),r=this.y.redMul(n.redMul(l.z)),i=l.y.redMul(e.redMul(this.z)),o=u.redSub(t),s=r.redSub(i);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var a=o.redSqr(),f=a.redMul(o),c=u.redMul(a),h=s.redSqr().redIAdd(f).redISub(c).redISub(c),d=s.redMul(c.redISub(h)).redISub(r.redMul(f)),p=this.z.redMul(l.z).redMul(o);return this.curve.jpoint(h,d,p)},r.prototype.mixedAdd=function(l){if(this.isInfinity())return l.toJ();if(l.isInfinity())return this;var n=this.z.redSqr(),e=this.x,u=l.x.redMul(n),t=this.y,r=l.y.redMul(n).redMul(this.z),i=e.redSub(u),o=t.redSub(r);if(0===i.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=i.redSqr(),a=s.redMul(i),f=e.redMul(s),c=o.redSqr().redIAdd(a).redISub(f).redISub(f),h=o.redMul(f.redISub(c)).redISub(t.redMul(a)),d=this.z.redMul(i);return this.curve.jpoint(c,h,d)},r.prototype.dblp=function(l){if(0===l)return this;if(this.isInfinity())return this;if(!l)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var n=this,e=0;e=0)return!1;if(e.redIAdd(t),0===this.x.cmp(e))return!0}return!1},r.prototype.inspect=function(){return this.isInfinity()?"":""},r.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{"../../elliptic":196,"../curve":199,"bn.js":36,inherits:223}],202:[function(l,n,e){"use strict";function u(l){"short"===l.type?this.curve=new o.curve["short"](l):"edwards"===l.type?this.curve=new o.curve.edwards(l):this.curve=new o.curve.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function t(l,n){Object.defineProperty(r,l,{configurable:!0,enumerable:!0,get:function(){var e=new u(n);return Object.defineProperty(r,l,{configurable:!0,enumerable:!0,value:e}),e}})}var r=e,i=l("hash.js"),o=l("../elliptic"),s=o.utils.assert;r.PresetCurve=u,t("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:i.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),t("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:i.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),t("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:i.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),t("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:i.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),t("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc", b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:i.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),t("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["9"]}),t("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:i.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var a;try{a=l("./precomputed/secp256k1")}catch(f){a=void 0}t("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:i.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",a]})},{"../elliptic":196,"./precomputed/secp256k1":209,"hash.js":214}],203:[function(l,n,e){"use strict";function u(l){return this instanceof u?("string"==typeof l&&(s(i.curves.hasOwnProperty(l),"Unknown curve "+l),l=i.curves[l]),l instanceof i.curves.PresetCurve&&(l={curve:l}),this.curve=l.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=l.curve.g,this.g.precompute(l.curve.n.bitLength()+1),void(this.hash=l.hash||l.curve.hash)):new u(l)}var t=l("bn.js"),r=l("hmac-drbg"),i=l("../../elliptic"),o=i.utils,s=o.assert,a=l("./key"),f=l("./signature");n.exports=u,u.prototype.keyPair=function(l){return new a(this,l)},u.prototype.keyFromPrivate=function(l,n){return a.fromPrivate(this,l,n)},u.prototype.keyFromPublic=function(l,n){return a.fromPublic(this,l,n)},u.prototype.genKeyPair=function(l){l||(l={});for(var n=new r({hash:this.hash,pers:l.pers,persEnc:l.persEnc||"utf8",entropy:l.entropy||i.rand(this.hash.hmacStrength),entropyEnc:l.entropy&&l.entropyEnc||"utf8",nonce:this.n.toArray()}),e=this.n.byteLength(),u=this.n.sub(new t(2));;){var o=new t(n.generate(e));if(!(o.cmp(u)>0))return o.iaddn(1),this.keyFromPrivate(o)}},u.prototype._truncateToN=function(l,n){var e=8*l.byteLength()-this.n.bitLength();return e>0&&(l=l.ushrn(e)),!n&&l.cmp(this.n)>=0?l.sub(this.n):l},u.prototype.sign=function(l,n,e,u){"object"==typeof e&&(u=e,e=null),u||(u={}),n=this.keyFromPrivate(n,e),l=this._truncateToN(new t(l,16));for(var i=this.n.byteLength(),o=n.getPrivate().toArray("be",i),s=l.toArray("be",i),a=new r({hash:this.hash,entropy:o,nonce:s,pers:u.pers,persEnc:u.persEnc||"utf8"}),c=this.n.sub(new t(1)),h=0;!0;h++){var d=u.k?u.k(h):new t(a.generate(this.n.byteLength()));if(d=this._truncateToN(d,!0),!(d.cmpn(1)<=0||d.cmp(c)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var _=d.invm(this.n).mul(v.mul(n.getPrivate()).iadd(l));if(_=_.umod(this.n),0!==_.cmpn(0)){var y=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return u.canonical&&_.cmp(this.nh)>0&&(_=this.n.sub(_),y^=1),new f({r:v,s:_,recoveryParam:y})}}}}}},u.prototype.verify=function(l,n,e,u){l=this._truncateToN(new t(l,16)),e=this.keyFromPublic(e,u),n=new f(n,"hex");var r=n.r,i=n.s;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var o=i.invm(this.n),s=o.mul(l).umod(this.n),a=o.mul(r).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,e.getPublic(),a);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(r)}var c=this.g.jmulAdd(s,e.getPublic(),a);return!c.isInfinity()&&c.eqXToP(r)},u.prototype.recoverPubKey=function(l,n,e,u){s((3&e)===e,"The recovery param is more than two bits"),n=new f(n,u);var r=this.n,i=new t(l),o=n.r,a=n.s,c=1&e,h=e>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");o=h?this.curve.pointFromX(o.add(this.curve.n),c):this.curve.pointFromX(o,c);var d=n.r.invm(r),p=r.sub(i).mul(d).umod(r),b=a.mul(d).umod(r);return this.g.mulAdd(p,o,b)},u.prototype.getKeyRecoveryParam=function(l,n,e,u){if(n=new f(n,u),null!==n.recoveryParam)return n.recoveryParam;for(var t=0;t<4;t++){var r;try{r=this.recoverPubKey(l,n,t)}catch(l){continue}if(r.eq(e))return t}throw new Error("Unable to find valid recovery factor")}},{"../../elliptic":196,"./key":204,"./signature":205,"bn.js":36,"hmac-drbg":220}],204:[function(l,n,e){"use strict";function u(l,n){this.ec=l,this.priv=null,this.pub=null,n.priv&&this._importPrivate(n.priv,n.privEnc),n.pub&&this._importPublic(n.pub,n.pubEnc)}var t=l("bn.js"),r=l("../../elliptic"),i=r.utils,o=i.assert;n.exports=u,u.fromPublic=function(l,n,e){return n instanceof u?n:new u(l,{pub:n,pubEnc:e})},u.fromPrivate=function(l,n,e){return n instanceof u?n:new u(l,{priv:n,privEnc:e})},u.prototype.validate=function(){var l=this.getPublic();return l.isInfinity()?{result:!1,reason:"Invalid public key"}:l.validate()?l.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},u.prototype.getPublic=function(l,n){return"string"==typeof l&&(n=l,l=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),n?this.pub.encode(n,l):this.pub},u.prototype.getPrivate=function(l){return"hex"===l?this.priv.toString(16,2):this.priv},u.prototype._importPrivate=function(l,n){this.priv=new t(l,n||16),this.priv=this.priv.umod(this.ec.curve.n)},u.prototype._importPublic=function(l,n){return l.x||l.y?("mont"===this.ec.curve.type?o(l.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||o(l.x&&l.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(l.x,l.y))):void(this.pub=this.ec.curve.decodePoint(l,n))},u.prototype.derive=function(l){return l.mul(this.priv).getX()},u.prototype.sign=function(l,n,e){return this.ec.sign(l,this,n,e)},u.prototype.verify=function(l,n){return this.ec.verify(l,n,this)},u.prototype.inspect=function(){return""}},{"../../elliptic":196,"bn.js":36}],205:[function(l,n,e){"use strict";function u(l,n){return l instanceof u?l:void(this._importDER(l,n)||(c(l.r&&l.s,"Signature without r or s"),this.r=new s(l.r,16),this.s=new s(l.s,16),void 0===l.recoveryParam?this.recoveryParam=null:this.recoveryParam=l.recoveryParam))}function t(){this.place=0}function r(l,n){var e=l[n.place++];if(!(128&e))return e;for(var u=15&e,t=0,r=0,i=n.place;r>>3);for(l.push(128|e);--e;)l.push(n>>>(e<<3)&255);l.push(n)}var s=l("bn.js"),a=l("../../elliptic"),f=a.utils,c=f.assert;n.exports=u,u.prototype._importDER=function(l,n){l=f.toArray(l,n);var e=new t;if(48!==l[e.place++])return!1;var u=r(l,e);if(u+e.place!==l.length)return!1;if(2!==l[e.place++])return!1;var i=r(l,e),o=l.slice(e.place,i+e.place);if(e.place+=i,2!==l[e.place++])return!1;var a=r(l,e);if(l.length!==a+e.place)return!1;var c=l.slice(e.place,a+e.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(o),this.s=new s(c),this.recoveryParam=null,!0},u.prototype.toDER=function(l){var n=this.r.toArray(),e=this.s.toArray();for(128&n[0]&&(n=[0].concat(n)),128&e[0]&&(e=[0].concat(e)),n=i(n),e=i(e);!(e[0]||128&e[1]);)e=e.slice(1);var u=[2];o(u,n.length),u=u.concat(n),u.push(2),o(u,e.length);var t=u.concat(e),r=[48];return o(r,t.length),r=r.concat(t),f.encode(r,l)}},{"../../elliptic":196,"bn.js":36}],206:[function(l,n,e){"use strict";function u(l){if(o("ed25519"===l,"only tested with ed25519 so far"),!(this instanceof u))return new u(l);var l=r.curves[l].curve;this.curve=l,this.g=l.g,this.g.precompute(l.n.bitLength()+1),this.pointClass=l.point().constructor,this.encodingLength=Math.ceil(l.n.bitLength()/8),this.hash=t.sha512}var t=l("hash.js"),r=l("../../elliptic"),i=r.utils,o=i.assert,s=i.parseBytes,a=l("./key"),f=l("./signature");n.exports=u,u.prototype.sign=function(l,n){l=s(l);var e=this.keyFromSecret(n),u=this.hashInt(e.messagePrefix(),l),t=this.g.mul(u),r=this.encodePoint(t),i=this.hashInt(r,e.pubBytes(),l).mul(e.priv()),o=u.add(i).umod(this.curve.n);return this.makeSignature({R:t,S:o,Rencoded:r})},u.prototype.verify=function(l,n,e){l=s(l),n=this.makeSignature(n);var u=this.keyFromPublic(e),t=this.hashInt(n.Rencoded(),u.pubBytes(),l),r=this.g.mul(n.S()),i=n.R().add(u.pub().mul(t));return i.eq(r)},u.prototype.hashInt=function(){for(var l=this.hash(),n=0;n=0;){var r;if(t.isOdd()){var i=t.andln(u-1);r=i>(u>>1)-1?(u>>1)-i:i,t.isubn(r)}else r=0;e.push(r);for(var o=0!==t.cmpn(0)&&0===t.andln(u-1)?n+1:1,s=1;s0||n.cmpn(-t)>0;){var r=l.andln(3)+u&3,i=n.andln(3)+t&3;3===r&&(r=-1),3===i&&(i=-1);var o;if(0===(1&r))o=0;else{var s=l.andln(7)+u&7;o=3!==s&&5!==s||2!==i?r:-r}e[0].push(o);var a;if(0===(1&i))a=0;else{var s=n.andln(7)+t&7;a=3!==s&&5!==s||2!==r?i:-i}e[1].push(a),2*u===o+1&&(u=1-u),2*t===a+1&&(t=1-t),l.iushrn(1),n.iushrn(1)}return e}function r(l,n,e){var u="_"+n;l.prototype[n]=function(){return void 0!==this[u]?this[u]:this[u]=e.call(this)}}function i(l){return"string"==typeof l?s.toArray(l,"hex"):l}function o(l){return new a(l,"hex","le")}var s=e,a=l("bn.js"),f=l("minimalistic-assert"),c=l("minimalistic-crypto-utils");s.assert=f,s.toArray=c.toArray,s.zero2=c.zero2,s.toHex=c.toHex,s.encode=c.encode,s.getNAF=u,s.getJSF=t,s.cachedProperty=r,s.parseBytes=i,s.intFromLE=o},{"bn.js":36,"minimalistic-assert":227,"minimalistic-crypto-utils":228}],211:[function(l,n,e){n.exports={_args:[[{raw:"elliptic@^6.0.0",scope:null,escapedName:"elliptic",name:"elliptic",rawSpec:"^6.0.0",spec:">=6.0.0 <7.0.0",type:"range"},"/Users/lutovich/Projects/neo4j-javascript-driver/node_modules/browserify-sign"]],_from:"elliptic@>=6.0.0 <7.0.0",_id:"elliptic@6.4.0",_inCache:!0,_installable:!0,_location:"/elliptic",_nodeVersion:"7.0.0",_npmOperationalInternal:{host:"packages-18-east.internal.npmjs.com",tmp:"tmp/elliptic-6.4.0.tgz_1487798866428_0.30510620190761983"},_npmUser:{name:"indutny",email:"fedor@indutny.com"},_npmVersion:"3.10.8",_phantomChildren:{},_requested:{raw:"elliptic@^6.0.0",scope:null,escapedName:"elliptic",name:"elliptic",rawSpec:"^6.0.0",spec:">=6.0.0 <7.0.0",type:"range"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"http://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",_shasum:"cac9af8762c85836187003c8dfe193e5e2eae5df",_shrinkwrap:null,_spec:"elliptic@^6.0.0",_where:"/Users/lutovich/Projects/neo4j-javascript-driver/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},directories:{},dist:{shasum:"cac9af8762c85836187003c8dfe193e5e2eae5df",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz"},files:["lib"],gitHead:"6b0d2b76caae91471649c8e21f0b1d3ba0f96090",homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",maintainers:[{name:"indutny",email:"fedor@indutny.com"}],name:"elliptic",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.4.0"}},{}],212:[function(l,n,e){function u(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(l){return"function"==typeof l}function r(l){return"number"==typeof l}function i(l){return"object"==typeof l&&null!==l}function o(l){return void 0===l}n.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._maxListeners=void 0,u.defaultMaxListeners=10,u.prototype.setMaxListeners=function(l){if(!r(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},u.prototype.emit=function(l){var n,e,u,r,s,a;if(this._events||(this._events={}),"error"===l&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;var f=new Error('Uncaught, unspecified "error" event. ('+n+")");throw f.context=n,f}if(e=this._events[l],o(e))return!1;if(t(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:r=Array.prototype.slice.call(arguments,1),e.apply(this,r)}else if(i(e))for(r=Array.prototype.slice.call(arguments,1),a=e.slice(),u=a.length,s=0;s0&&this._events[l].length>e&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),"function"==typeof console.trace&&console.trace())),this},u.prototype.on=u.prototype.addListener,u.prototype.once=function(l,n){function e(){this.removeListener(l,e),u||(u=!0,n.apply(this,arguments))}if(!t(n))throw TypeError("listener must be a function");var u=!1;return e.listener=n,this.on(l,e),this},u.prototype.removeListener=function(l,n){var e,u,r,o;if(!t(n))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(e=this._events[l],r=e.length,u=-1,e===n||t(e.listener)&&e.listener===n)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,n);else if(i(e)){for(o=r;o-- >0;)if(e[o]===n||e[o].listener&&e[o].listener===n){u=o;break}if(u<0)return this;1===e.length?(e.length=0,delete this._events[l]):e.splice(u,1),this._events.removeListener&&this.emit("removeListener",l,n)}return this},u.prototype.removeAllListeners=function(l){var n,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[l]&&delete this._events[l],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(e=this._events[l],t(e))this.removeListener(l,e);else if(e)for(;e.length;)this.removeListener(l,e[e.length-1]);return delete this._events[l],this},u.prototype.listeners=function(l){var n;return n=this._events&&this._events[l]?t(this._events[l])?[this._events[l]]:this._events[l].slice():[]},u.prototype.listenerCount=function(l){if(this._events){var n=this._events[l];if(t(n))return 1;if(n)return n.length}return 0},u.listenerCount=function(l,n){return l.listenerCount(n)}},{}],213:[function(l,n,e){(function(e){function u(l,n,u,r){e.isBuffer(l)||(l=new e(l,"binary")),n&&!e.isBuffer(n)&&(n=new e(n,"binary")),u/=8,r=r||0;for(var i,o,s=0,a=0,f=new e(u),c=new e(r),h=0,d=[];;){if(h++>0&&d.push(i),d.push(l),n&&d.push(n),i=t(e.concat(d)),d=[],o=0,u>0)for(;;){if(0===u)break;if(o===i.length)break;f[s++]=i[o],u--,o++}if(r>0&&o!==i.length)for(;;){if(0===r)break;if(o===i.length)break;c[a++]=i[o],r--,o++}if(0===u&&0===r)break}for(o=0;o=this._delta8){l=this.pending;var e=l.length%this._delta8;this.pending=l.slice(l.length-e,l.length),0===this.pending.length&&(this.pending=null),l=r.join32(l,0,l.length-e,this.endian);for(var u=0;u>>24&255,u[t++]=l>>>16&255,u[t++]=l>>>8&255,u[t++]=255&l}else{u[t++]=255&l,u[t++]=l>>>8&255,u[t++]=l>>>16&255,u[t++]=l>>>24&255,u[t++]=0,u[t++]=0,u[t++]=0,u[t++]=0;for(var r=8;rthis.blockSize&&(l=(new this.Hash).update(l).digest()),i(l.length<=this.blockSize);for(var n=l.length;n>>3}function p(l){return R(l,17)^R(l,19)^l>>>10}function b(l,n,e,u){return 0===l?s(n,e,u):1===l||3===l?f(n,e,u):2===l?a(n,e,u):void 0}function v(l,n,e,u,t,r){var i=l&e^~l&t;return i<0&&(i+=4294967296),i}function _(l,n,e,u,t,r){var i=n&u^~n&r;return i<0&&(i+=4294967296),i}function y(l,n,e,u,t,r){var i=l&e^l&t^e&t;return i<0&&(i+=4294967296),i}function m(l,n,e,u,t,r){var i=n&u^n&r^u&r;return i<0&&(i+=4294967296),i}function g(l,n){var e=U(l,n,28),u=U(n,l,2),t=U(n,l,7),r=e^u^t;return r<0&&(r+=4294967296),r}function w(l,n){var e=N(l,n,28),u=N(n,l,2),t=N(n,l,7),r=e^u^t;return r<0&&(r+=4294967296),r}function k(l,n){var e=U(l,n,14),u=U(l,n,18),t=U(n,l,9),r=e^u^t;return r<0&&(r+=4294967296),r}function S(l,n){var e=N(l,n,14),u=N(l,n,18),t=N(n,l,9),r=e^u^t;return r<0&&(r+=4294967296),r}function E(l,n){var e=U(l,n,1),u=U(l,n,8),t=L(l,n,7),r=e^u^t;return r<0&&(r+=4294967296),r}function M(l,n){var e=N(l,n,1),u=N(l,n,8),t=D(l,n,7),r=e^u^t;return r<0&&(r+=4294967296),r}function I(l,n){var e=U(l,n,19),u=U(n,l,29),t=L(l,n,6),r=e^u^t;return r<0&&(r+=4294967296),r}function j(l,n){var e=N(l,n,19),u=N(n,l,29),t=D(l,n,6),r=e^u^t;return r<0&&(r+=4294967296),r}var A=l("../hash"),x=A.utils,C=x.assert,R=x.rotr32,B=x.rotl32,O=x.sum32,T=x.sum32_4,P=x.sum32_5,U=x.rotr64_hi,N=x.rotr64_lo,L=x.shr64_hi,D=x.shr64_lo,F=x.sum64,q=x.sum64_hi,z=x.sum64_lo,K=x.sum64_4_hi,H=x.sum64_4_lo,V=x.sum64_5_hi,Y=x.sum64_5_lo,W=A.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],G=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];x.inherits(u,W),e.sha256=u,u.blockSize=512,u.outSize=256,u.hmacStrength=192,u.padLength=64,u.prototype._update=function(l,n){for(var e=this.W,u=0;u<16;u++)e[u]=l[n+u];for(;u>8,i=255&t;r?e.push(r,i):e.push(i)}else for(var u=0;u>>24|l>>>8&65280|l<<8&16711680|(255&l)<<24;return n>>>0}function i(l,n){for(var e="",u=0;u>>0}return r}function f(l,n){for(var e=new Array(4*l.length),u=0,t=0;u>>24,e[t+1]=r>>>16&255,e[t+2]=r>>>8&255,e[t+3]=255&r):(e[t+3]=r>>>24,e[t+2]=r>>>16&255,e[t+1]=r>>>8&255,e[t]=255&r)}return e}function c(l,n){return l>>>n|l<<32-n}function h(l,n){return l<>>32-n}function d(l,n){return l+n>>>0}function p(l,n,e){return l+n+e>>>0}function b(l,n,e,u){return l+n+e+u>>>0}function v(l,n,e,u,t){return l+n+e+u+t>>>0}function _(l,n){if(!l)throw new Error(n||"Assertion failed")}function y(l,n,e,u){var t=l[n],r=l[n+1],i=u+r>>>0,o=(i>>0,l[n+1]=i}function m(l,n,e,u){var t=n+u>>>0,r=(t>>0}function g(l,n,e,u){var t=n+u;return t>>>0}function w(l,n,e,u,t,r,i,o){var s=0,a=n;a=a+u>>>0,s+=a>>0,s+=a>>0,s+=a>>0}function k(l,n,e,u,t,r,i,o){var s=n+u+r+o;return s>>>0}function S(l,n,e,u,t,r,i,o,s,a){var f=0,c=n;c=c+u>>>0,f+=c>>0,f+=c>>0,f+=c>>0,f+=c>>0}function E(l,n,e,u,t,r,i,o,s,a){var f=n+u+r+o+a;return f>>>0}function M(l,n,e){var u=n<<32-e|l>>>e;return u>>>0}function I(l,n,e){var u=l<<32-e|n>>>e;return u>>>0}function j(l,n,e){return l>>>e}function A(l,n,e){var u=l<<32-e|n>>>e;return u>>>0}var x=e,C=l("inherits");x.toArray=u,x.toHex=t,x.htonl=r,x.toHex32=i,x.zero2=o,x.zero8=s,x.join32=a,x.split32=f,x.rotr32=c,x.rotl32=h,x.sum32=d,x.sum32_3=p,x.sum32_4=b,x.sum32_5=v,x.assert=_,x.inherits=C,e.sum64=y,e.sum64_hi=m,e.sum64_lo=g,e.sum64_4_hi=w,e.sum64_4_lo=k,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=M,e.rotr64_lo=I,e.shr64_hi=j,e.shr64_lo=A},{inherits:223}],220:[function(l,n,e){"use strict";function u(l){if(!(this instanceof u))return new u(l);this.hash=l.hash,this.predResist=!!l.predResist,this.outLen=this.hash.outSize,this.minEntropy=l.minEntropy||this.hash.hmacStrength,this.reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var n=r.toArray(l.entropy,l.entropyEnc||"hex"),e=r.toArray(l.nonce,l.nonceEnc||"hex"),t=r.toArray(l.pers,l.persEnc||"hex");i(n.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(n,e,t)}var t=l("hash.js"),r=l("minimalistic-crypto-utils"),i=l("minimalistic-assert");n.exports=u,u.prototype._init=function(l,n,e){var u=l.concat(n).concat(e);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(l.concat(e||[])),this.reseed=1},u.prototype.generate=function(l,n,e,u){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof n&&(u=e,e=n,n=null),e&&(e=r.toArray(e,u||"hex"),this._update(e));for(var t=[];t.length>1,f=-7,c=e?t-1:0,h=e?-1:1,d=l[n+c];for(c+=h,r=d&(1<<-f)-1,d>>=-f,f+=o;f>0;r=256*r+l[n+c],c+=h,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=u;f>0;i=256*i+l[n+c],c+=h,f-=8);if(0===r)r=1-a;else{if(r===s)return i?NaN:(d?-1:1)*(1/0);i+=Math.pow(2,u),r-=a}return(d?-1:1)*i*Math.pow(2,r-u)},e.write=function(l,n,e,u,t,r){var i,o,s,a=8*r-t-1,f=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,d=u?0:r-1,p=u?1:-1,b=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(o=isNaN(n)?1:0,i=f):(i=Math.floor(Math.log(n)/Math.LN2),n*(s=Math.pow(2,-i))<1&&(i--,s*=2),n+=i+c>=1?h/s:h*Math.pow(2,1-c),n*s>=2&&(i++,s/=2),i+c>=f?(o=0,i=f):i+c>=1?(o=(n*s-1)*Math.pow(2,t),i+=c):(o=n*Math.pow(2,c-1)*Math.pow(2,t),i=0));t>=8;l[e+d]=255&o,d+=p,o/=256,t-=8);for(i=i<0;l[e+d]=255&i,d+=p,i/=256,a-=8);l[e+d-p]|=128*b}},{}],222:[function(l,n,e){var u=[].indexOf;n.exports=function(l,n){if(u)return l.indexOf(n);for(var e=0;e>=7-u),new t(e)},u.prototype.test=function(l,n,e){var u=l.bitLength(),r=t.mont(l),i=new t(1).toRed(r);n||(n=Math.max(1,u/48|0));for(var o=l.subn(1),s=o.subn(1),a=0;!o.testn(a);a++);for(var f=l.shrn(a),c=o.toRed(r),h=!0;n>0;n--){var d=this._rand(s);e&&e(d);var p=d.toRed(r).redPow(f);if(0!==p.cmp(i)&&0!==p.cmp(c)){for(var b=1;b0;n--){var c=this._rand(o),h=l.gcd(c);if(0!==h.cmpn(1))return h;var d=c.toRed(u).redPow(a);if(0!==d.cmp(r)&&0!==d.cmp(f)){for(var p=1;p>8,i=255&t;r?e.push(r,i):e.push(i)}return e}function t(l){return 1===l.length?"0"+l:l}function r(l){for(var n="",e=0;e=0;u--){var t=l[u];"."===t?l.splice(u,1):".."===t?(l.splice(u,1),e++):e&&(l.splice(u,1),e--)}if(n)for(;e--;e)l.unshift("..");return l}function u(l,n){if(l.filter)return l.filter(n);for(var e=[],u=0;u=-1&&!t;r--){var i=r>=0?arguments[r]:l.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(e=i+"/"+e,t="/"===i.charAt(0))}return e=n(u(e.split("/"),function(l){return!!l}),!t).join("/"),(t?"/":"")+e||"."},e.normalize=function(l){var t=e.isAbsolute(l),r="/"===i(l,-1);return l=n(u(l.split("/"),function(l){return!!l}),!t).join("/"),l||t||(l="."),l&&r&&(l+="/"),(t?"/":"")+l},e.isAbsolute=function(l){return"/"===l.charAt(0)},e.join=function(){var l=Array.prototype.slice.call(arguments,0);return e.normalize(u(l,function(l,n){if("string"!=typeof l)throw new TypeError("Arguments to path.join must be strings");return l}).join("/"))},e.relative=function(l,n){function u(l){for(var n=0;n=0&&""===l[e];e--);return n>e?[]:l.slice(n,e-n+1)}l=e.resolve(l).substr(1),n=e.resolve(n).substr(1);for(var t=u(l.split("/")),r=u(n.split("/")),i=Math.min(t.length,r.length),o=i,s=0;s=6?"utf-8":"binary"}e.pbkdf2Sync=function(l,n,e,o,s){u.isBuffer(l)||(l=new u(l,i)),u.isBuffer(n)||(n=new u(n,i)),r(e,o),s=s||"sha1";var a,f=1,c=new u(o),h=new u(n.length+4);n.copy(h,0,0,n.length);for(var d,p,b=1;b<=f;b++){h.writeUInt32BE(b,n.length);var v=t(s,l).update(h).digest();a||(a=v.length,p=new u(a),f=Math.ceil(o/a),d=o-(f-1)*a),v.copy(p,0,0,a);for(var _=1;_u||n!==n)throw new TypeError("Bad key length")}},{}],237:[function(l,n,e){(function(l){"use strict";function e(n,e,u,t){if("function"!=typeof n)throw new TypeError('"callback" argument must be a function');var r,i,o=arguments.length;switch(o){case 0:case 1:return l.nextTick(n);case 2:return l.nextTick(function(){n.call(null,e)});case 3:return l.nextTick(function(){n.call(null,e,u)});case 4:return l.nextTick(function(){n.call(null,e,u,t)});default:for(r=new Array(o-1),i=0;i1)for(var e=1;e=n.length){r++;break}var i=n.slice(2,t-1);n.slice(t-1,t);if(("0002"!==u.toString("hex")&&!e||"0001"!==u.toString("hex")&&e)&&r++,i.length<8&&r++,r)throw new Error("decryption error");return n.slice(t)}function r(l,n){l=new e(l),n=new e(n);var u=0,t=l.length;l.length!==n.length&&(u++,t=Math.min(l.length,n.length));for(var r=-1;++rc||new a(n).cmp(s.modulus)>=0)throw new Error("decryption error");var d;d=r?h(new a(n),s):f(n,s);var p=new e(c-d.length);if(p.fill(0),d=e.concat([p,d],c),4===o)return u(s,d);if(1===o)return t(s,d,r);if(3===o)return d;throw new Error("unknown padding")}}).call(this,l("buffer").Buffer)},{"./mgf":240,"./withPublic":243,"./xor":244,"bn.js":36,"browserify-rsa":57,buffer:66,"create-hash":181,"parse-asn1":233}],242:[function(l,n,e){(function(e){function u(l,n){var u=l.modulus.byteLength(),t=n.length,r=s("sha1").update(new e("")).digest(),i=r.length,h=2*i;if(t>u-h-2)throw new Error("message too long");var d=new e(u-t-h-2);d.fill(0);var p=u-i-1,b=o(i),v=f(e.concat([r,d,new e([1]),n],p),a(b,p)),_=f(b,a(v,i));return new c(e.concat([new e([0]),_,v],u))}function t(l,n,u){var t=n.length,i=l.modulus.byteLength();if(t>i-11)throw new Error("message too long");var o;return u?(o=new e(i-t-3),o.fill(255)):o=r(i-t-3),new c(e.concat([new e([0,u?1:2]),o,new e([0]),n],i))}function r(l,n){for(var u,t=new e(l),r=0,i=o(2*l),s=0;r=0)throw new Error("data too long for modulus")}return e?d(o,s):h(o,s)}}).call(this,l("buffer").Buffer)},{"./mgf":240,"./withPublic":243,"./xor":244,"bn.js":36,"browserify-rsa":57,buffer:66,"create-hash":181,"parse-asn1":233,randombytes:245}],243:[function(l,n,e){(function(e){function u(l,n){return new e(l.toRed(t.mont(n.modulus)).redPow(new t(n.publicExponent)).fromRed().toArray())}var t=l("bn.js");n.exports=u}).call(this,l("buffer").Buffer)},{"bn.js":36,buffer:66}],244:[function(l,n,e){n.exports=function(l,n){for(var e=l.length,u=-1;++u65536)throw new Error("requested too many random bytes");var r=new e.Uint8Array(n);n>0&&i.getRandomValues(r);var o=new u(r.buffer);return"function"==typeof t?l.nextTick(function(){t(null,o)}):o}var i=e.crypto||e.msCrypto;i&&i.getRandomValues?n.exports=r:n.exports=t}).call(this,l("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},l("buffer").Buffer)},{_process:238,buffer:66}],246:[function(l,n,e){n.exports=l("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":247}],247:[function(l,n,e){"use strict";function u(l){return this instanceof u?(a.call(this,l),f.call(this,l),l&&l.readable===!1&&(this.readable=!1),l&&l.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,l&&l.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",t)):new u(l)}function t(){this.allowHalfOpen||this._writableState.ended||o(r,this)}function r(l){l.end()}var i=Object.keys||function(l){var n=[];for(var e in l)n.push(e);return n};n.exports=u;var o=l("process-nextick-args"),s=l("core-util-is");s.inherits=l("inherits");var a=l("./_stream_readable"),f=l("./_stream_writable");s.inherits(u,a);for(var c=i(f.prototype),h=0;h0)if(n.ended&&!t){var i=new Error("stream.push() after EOF");l.emit("error",i)}else if(n.endEmitted&&t){var s=new Error("stream.unshift() after end event");l.emit("error",s)}else{var a;!n.decoder||t||u||(e=n.decoder.write(e),a=!n.objectMode&&0===e.length),t||(n.reading=!1),a||(n.flowing&&0===n.length&&!n.sync?(l.emit("data",e),l.read(0)):(n.length+=n.objectMode?1:e.length,t?n.buffer.unshift(e):n.buffer.push(e),n.needReadable&&h(l))),p(l,n)}else t||(n.reading=!1);return o(n)}function o(l){return!l.ended&&(l.needReadable||l.length=q?l=q:(l--,l|=l>>>1,l|=l>>>2,l|=l>>>4,l|=l>>>8,l|=l>>>16,l++),l}function a(l,n){return l<=0||0===n.length&&n.ended?0:n.objectMode?1:l!==l?n.flowing&&n.length?n.buffer.head.data.length:n.length:(l>n.highWaterMark&&(n.highWaterMark=s(l)),l<=n.length?l:n.ended?n.length:(n.needReadable=!0,0))}function f(l,n){var e=null;return T.isBuffer(n)||"string"==typeof n||null===n||void 0===n||l.objectMode||(e=new TypeError("Invalid non-string/buffer chunk")),e}function c(l,n){if(!n.ended){if(n.decoder){var e=n.decoder.end();e&&e.length&&(n.buffer.push(e),n.length+=n.objectMode?1:e.length)}n.ended=!0,h(l)}}function h(l){var n=l._readableState;n.needReadable=!1,n.emittedReadable||(L("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?C(d,l):d(l))}function d(l){L("emit readable"),l.emit("readable"),g(l)}function p(l,n){n.readingMore||(n.readingMore=!0,C(b,l,n))}function b(l,n){for(var e=n.length;!n.reading&&!n.flowing&&!n.ended&&n.length=n.length?(e=n.decoder?n.buffer.join(""):1===n.buffer.length?n.buffer.head.data:n.buffer.concat(n.length),n.buffer.clear()):e=k(l,n.buffer,n.decoder),e}function k(l,n,e){var u;return lr.length?r.length:l;if(t+=i===r.length?r:r.slice(0,l),l-=i,0===l){i===r.length?(++u,e.next?n.head=e.next:n.head=n.tail=null):(n.head=e,e.data=r.slice(i));break}++u}return n.length-=u,t}function E(l,n){var e=P.allocUnsafe(l),u=n.head,t=1;for(u.data.copy(e),l-=u.data.length;u=u.next;){var r=u.data,i=l>r.length?r.length:l;if(r.copy(e,e.length-l,0,i),l-=i,0===l){i===r.length?(++t,u.next?n.head=u.next:n.head=n.tail=null):(n.head=u,u.data=r.slice(i));break}++t}return n.length-=t,e}function M(l){var n=l._readableState;if(n.length>0)throw new Error('"endReadable()" called on non-empty stream');n.endEmitted||(n.ended=!0,C(I,n,l))}function I(l,n){l.endEmitted||0!==l.length||(l.endEmitted=!0,n.readable=!1,n.emit("end"))}function j(l,n){for(var e=0,u=l.length;e=n.highWaterMark||n.ended))return L("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?M(this):h(this),null;if(l=a(l,n),0===l&&n.ended)return 0===n.length&&M(this),null;var u=n.needReadable;L("need readable",u),(0===n.length||n.length-l0?w(l,n):null,null===t?(n.needReadable=!0,l=0):n.length-=l,0===n.length&&(n.ended||(n.needReadable=!0),e!==l&&n.ended&&M(this)),null!==t&&this.emit("data",t),t},r.prototype._read=function(l){this.emit("error",new Error("_read() is not implemented"))},r.prototype.pipe=function(l,n){function t(l){L("onunpipe"),l===h&&i()}function r(){L("onend"),l.end()}function i(){L("cleanup"),l.removeListener("close",a),l.removeListener("finish",f),l.removeListener("drain",_),l.removeListener("error",s),l.removeListener("unpipe",t),h.removeListener("end",r),h.removeListener("end",i),h.removeListener("data",o),y=!0,!d.awaitDrain||l._writableState&&!l._writableState.needDrain||_()}function o(n){L("ondata"),m=!1;var e=l.write(n);!1!==e||m||((1===d.pipesCount&&d.pipes===l||d.pipesCount>1&&A(d.pipes,l)!==-1)&&!y&&(L("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,m=!0),h.pause())}function s(n){L("onerror",n),c(),l.removeListener("error",s),0===O(l,"error")&&l.emit("error",n)}function a(){l.removeListener("finish",f),c()}function f(){L("onfinish"),l.removeListener("close",a),c()}function c(){L("unpipe"),h.unpipe(l)}var h=this,d=this._readableState;switch(d.pipesCount){case 0:d.pipes=l;break;case 1:d.pipes=[d.pipes,l];break;default:d.pipes.push(l)}d.pipesCount+=1,L("pipe count=%d opts=%j",d.pipesCount,n);var p=(!n||n.end!==!1)&&l!==e.stdout&&l!==e.stderr,b=p?r:i;d.endEmitted?C(b):h.once("end",b),l.on("unpipe",t);var _=v(h);l.on("drain",_);var y=!1,m=!1;return h.on("data",o),u(l,"error",s),l.once("close",a),l.once("finish",f),l.emit("pipe",h),d.flowing||(L("pipe resume"),h.resume()),l},r.prototype.unpipe=function(l){var n=this._readableState;if(0===n.pipesCount)return this;if(1===n.pipesCount)return l&&l!==n.pipes?this:(l||(l=n.pipes),n.pipes=null,n.pipesCount=0,n.flowing=!1,l&&l.emit("unpipe",this),this);if(!l){var e=n.pipes,u=n.pipesCount;n.pipes=null,n.pipesCount=0,n.flowing=!1;for(var t=0;t-1?setImmediate:E;i.WritableState=r;var I=l("core-util-is");I.inherits=l("inherits");var j,A={deprecate:l("util-deprecate")};!function(){try{j=l("stream")}catch(n){}finally{j||(j=l("events").EventEmitter)}}();var x=l("buffer").Buffer,C=l("buffer-shims");I.inherits(i,j),r.prototype.getBuffer=function(){for(var l=this.bufferedRequest,n=[];l;)n.push(l),l=l.next;return n},function(){try{Object.defineProperty(r.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(l){}}();var R;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(R=Function.prototype[Symbol.hasInstance],Object.defineProperty(i,Symbol.hasInstance,{value:function(l){return!!R.call(this,l)||l&&l._writableState instanceof r}})):R=function(l){return l instanceof this},i.prototype.pipe=function(){ -this.emit("error",new Error("Cannot pipe, not readable"))},i.prototype.write=function(l,n,e){var t=this._writableState,r=!1;return"function"==typeof n&&(e=n,n=null),x.isBuffer(l)?n="buffer":n||(n=t.defaultEncoding),"function"!=typeof e&&(e=u),t.ended?o(this,e):s(this,t,l,e)&&(t.pendingcb++,r=f(this,t,l,n,e)),r},i.prototype.cork=function(){var l=this._writableState;l.corked++},i.prototype.uncork=function(){var l=this._writableState;l.corked&&(l.corked--,l.writing||l.corked||l.finished||l.bufferProcessing||!l.bufferedRequest||_(this,l))},i.prototype.setDefaultEncoding=function(l){if("string"==typeof l&&(l=l.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((l+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+l);return this._writableState.defaultEncoding=l,this},i.prototype._write=function(l,n,e){e(new Error("_write() is not implemented"))},i.prototype._writev=null,i.prototype.end=function(l,n,e){var u=this._writableState;"function"==typeof l?(e=l,l=null,n=null):"function"==typeof n&&(e=n,n=null),null!==l&&void 0!==l&&this.write(l,n),u.corked&&(u.corked=1,this.uncork()),u.ending||u.finished||w(this,u,e)}}).call(this,l("_process"))},{"./_stream_duplex":247,_process:238,buffer:66,"buffer-shims":64,"core-util-is":179,events:212,inherits:223,"process-nextick-args":237,"util-deprecate":268}],252:[function(l,n,e){"use strict";function u(){this.head=null,this.tail=null,this.length=0}var t=(l("buffer").Buffer,l("buffer-shims"));n.exports=u,u.prototype.push=function(l){var n={data:l,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},u.prototype.unshift=function(l){var n={data:l,next:this.head};0===this.length&&(this.tail=n),this.head=n,++this.length},u.prototype.shift=function(){if(0!==this.length){var l=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,l}},u.prototype.clear=function(){this.head=this.tail=null,this.length=0},u.prototype.join=function(l){if(0===this.length)return"";for(var n=this.head,e=""+n.data;n=n.next;)e+=l+n.data;return e},u.prototype.concat=function(l){if(0===this.length)return t.alloc(0);if(1===this.length)return this.head.data;for(var n=t.allocUnsafe(l>>>0),e=this.head,u=0;e;)e.data.copy(n,u),u+=e.data.length,e=e.next;return n}},{buffer:66,"buffer-shims":64}],253:[function(l,n,e){n.exports=l("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":248}],254:[function(l,n,e){(function(u){var t=function(){try{return l("stream")}catch(n){}}();e=n.exports=l("./lib/_stream_readable.js"),e.Stream=t||e,e.Readable=e,e.Writable=l("./lib/_stream_writable.js"),e.Duplex=l("./lib/_stream_duplex.js"),e.Transform=l("./lib/_stream_transform.js"),e.PassThrough=l("./lib/_stream_passthrough.js"),!u.browser&&"disable"===u.env.READABLE_STREAM&&t&&(n.exports=t)}).call(this,l("_process"))},{"./lib/_stream_duplex.js":247,"./lib/_stream_passthrough.js":248,"./lib/_stream_readable.js":249,"./lib/_stream_transform.js":250,"./lib/_stream_writable.js":251,_process:238}],255:[function(l,n,e){n.exports=l("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":250}],256:[function(l,n,e){n.exports=l("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":251}],257:[function(l,n,e){(function(l){function e(l){for(var n=[],e=0,u=0;e>>5]|=l[e]<<24-u%32;return n}function u(l){for(var n=[],e=0;e<32*l.length;e+=8)n.push(l[e>>>5]>>>24-e%32&255);return n}function t(l,n,e){for(var u=0;u<16;u++){var t=e+u,c=n[t];n[t]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var y,m,g,w,k,S,E,M,I,j;S=y=l[0],E=m=l[1],M=g=l[2],I=w=l[3],j=k=l[4];var A;for(u=0;u<80;u+=1)A=y+n[e+h[u]]|0,A+=u<16?r(m,g,w)+v[0]:u<32?i(m,g,w)+v[1]:u<48?o(m,g,w)+v[2]:u<64?s(m,g,w)+v[3]:a(m,g,w)+v[4],A=0|A,A=f(A,p[u]),A=A+k|0,y=k,k=w,w=f(g,10),g=m,m=A,A=S+n[e+d[u]]|0,A+=u<16?a(E,M,I)+_[0]:u<32?s(E,M,I)+_[1]:u<48?o(E,M,I)+_[2]:u<64?i(E,M,I)+_[3]:r(E,M,I)+_[4],A=0|A,A=f(A,b[u]),A=A+j|0,S=j,j=I,I=f(M,10),M=E,E=A;A=l[1]+g+I|0,l[1]=l[2]+w+j|0,l[2]=l[3]+k+S|0,l[3]=l[4]+y+E|0,l[4]=l[0]+m+M|0,l[0]=A}function r(l,n,e){return l^n^e}function i(l,n,e){return l&n|~l&e}function o(l,n,e){return(l|~n)^e}function s(l,n,e){return l&e|n&~e}function a(l,n,e){return l^(n|~e)}function f(l,n){return l<>>32-n}function c(n){var r=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof n&&(n=new l(n,"utf8"));var i=e(n),o=8*n.length,s=8*n.length;i[o>>>5]|=128<<24-o%32,i[(o+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8);for(var a=0;a>>24)|4278255360&(f<<24|f>>>8)}var c=u(r);return new l(c)}var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],_=[1352829926,1548603684,1836072691,2053994217,0];n.exports=c}).call(this,l("buffer").Buffer)},{buffer:66}],258:[function(l,n,e){(function(l){function e(n,e){this._block=new l(n),this._finalSize=e,this._blockSize=n,this._len=0,this._s=0}e.prototype.update=function(n,e){"string"==typeof n&&(e=e||"utf8",n=new l(n,e));for(var u=this._len+=n.length,t=this._s||0,r=0,i=this._block;t=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(n,this._blockSize-4);var e=this._update(this._block)||this._hash();return l?e.toString(l):e},e.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=e}).call(this,l("buffer").Buffer)},{buffer:66}],259:[function(l,n,e){var e=n.exports=function(l){l=l.toLowerCase();var n=e[l];if(!n)throw new Error(l+" is not supported (we accept pull requests)");return new n};e.sha=l("./sha"),e.sha1=l("./sha1"),e.sha224=l("./sha224"),e.sha256=l("./sha256"),e.sha384=l("./sha384"),e.sha512=l("./sha512")},{"./sha":260,"./sha1":261,"./sha224":262,"./sha256":263,"./sha384":264,"./sha512":265}],260:[function(l,n,e){(function(e){function u(){this.init(),this._w=f,s.call(this,64,56)}function t(l){return l<<5|l>>>27}function r(l){return l<<30|l>>>2}function i(l,n,e,u){return 0===l?n&e|~n&u:2===l?n&e|n&u|e&u:n^e^u}var o=l("inherits"),s=l("./hash"),a=[1518500249,1859775393,-1894007588,-899497514],f=new Array(80);o(u,s),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._a,u=0|this._b,o=0|this._c,s=0|this._d,f=0|this._e,c=0;c<16;++c)n[c]=l.readInt32BE(4*c);for(;c<80;++c)n[c]=n[c-3]^n[c-8]^n[c-14]^n[c-16];for(var h=0;h<80;++h){var d=~~(h/20),p=t(e)+i(d,u,o,s)+f+n[h]+a[d]|0;f=s,s=o,o=r(u),u=e,e=p}this._a=e+this._a|0,this._b=u+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=f+this._e|0},u.prototype._hash=function(){var l=new e(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":258,buffer:66,inherits:223}],261:[function(l,n,e){(function(e){function u(){this.init(),this._w=c,a.call(this,64,56)}function t(l){return l<<1|l>>>31}function r(l){return l<<5|l>>>27}function i(l){return l<<30|l>>>2}function o(l,n,e,u){return 0===l?n&e|~n&u:2===l?n&e|n&u|e&u:n^e^u}var s=l("inherits"),a=l("./hash"),f=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);s(u,a),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._a,u=0|this._b,s=0|this._c,a=0|this._d,c=0|this._e,h=0;h<16;++h)n[h]=l.readInt32BE(4*h);for(;h<80;++h)n[h]=t(n[h-3]^n[h-8]^n[h-14]^n[h-16]);for(var d=0;d<80;++d){var p=~~(d/20),b=r(e)+o(p,u,s,a)+c+n[d]+f[p]|0;c=a,a=s,s=i(u),u=e,e=b}this._a=e+this._a|0,this._b=u+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=c+this._e|0},u.prototype._hash=function(){var l=new e(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":258,buffer:66,inherits:223}],262:[function(l,n,e){(function(e){function u(){this.init(),this._w=o,i.call(this,64,56)}var t=l("inherits"),r=l("./sha256"),i=l("./hash"),o=new Array(64);t(u,r),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var l=new e(28);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":258,"./sha256":263,buffer:66,inherits:223}],263:[function(l,n,e){(function(e){function u(){this.init(),this._w=d,c.call(this,64,56)}function t(l,n,e){return e^l&(n^e)}function r(l,n,e){return l&n|e&(l|n)}function i(l){return(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10)}function o(l){return(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7)}function s(l){return(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3}function a(l){return(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10}var f=l("inherits"),c=l("./hash"),h=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);f(u,c),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._a,u=0|this._b,f=0|this._c,c=0|this._d,d=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,_=0;_<16;++_)n[_]=l.readInt32BE(4*_);for(;_<64;++_)n[_]=a(n[_-2])+n[_-7]+s(n[_-15])+n[_-16]|0;for(var y=0;y<64;++y){var m=v+o(d)+t(d,p,b)+h[y]+n[y]|0,g=i(e)+r(e,u,f)|0;v=b,b=p,p=d,d=c+m|0,c=f,f=u,u=e,e=m+g|0}this._a=e+this._a|0,this._b=u+this._b|0,this._c=f+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},u.prototype._hash=function(){var l=new e(32);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l.writeInt32BE(this._h,28),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":258,buffer:66,inherits:223}],264:[function(l,n,e){(function(e){function u(){this.init(),this._w=o,i.call(this,128,112)}var t=l("inherits"),r=l("./sha512"),i=l("./hash"),o=new Array(160);t(u,r),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){function l(l,e,u){n.writeInt32BE(l,u),n.writeInt32BE(e,u+4)}var n=new e(48);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),n},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":258,"./sha512":265,buffer:66,inherits:223}],265:[function(l,n,e){(function(e){function u(){this.init(),this._w=v,p.call(this,128,112)}function t(l,n,e){return e^l&(n^e)}function r(l,n,e){return l&n|e&(l|n)}function i(l,n){return(l>>>28|n<<4)^(n>>>2|l<<30)^(n>>>7|l<<25)}function o(l,n){return(l>>>14|n<<18)^(l>>>18|n<<14)^(n>>>9|l<<23)}function s(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^l>>>7}function a(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^(l>>>7|n<<25)}function f(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^l>>>6}function c(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^(l>>>6|n<<26)}function h(l,n){return l>>>0>>0?1:0}var d=l("inherits"),p=l("./hash"),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);d(u,p),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._ah,u=0|this._bh,d=0|this._ch,p=0|this._dh,v=0|this._eh,_=0|this._fh,y=0|this._gh,m=0|this._hh,g=0|this._al,w=0|this._bl,k=0|this._cl,S=0|this._dl,E=0|this._el,M=0|this._fl,I=0|this._gl,j=0|this._hl,A=0;A<32;A+=2)n[A]=l.readInt32BE(4*A),n[A+1]=l.readInt32BE(4*A+4);for(;A<160;A+=2){var x=n[A-30],C=n[A-30+1],R=s(x,C),B=a(C,x);x=n[A-4],C=n[A-4+1];var O=f(x,C),T=c(C,x),P=n[A-14],U=n[A-14+1],N=n[A-32],L=n[A-32+1],D=B+U|0,F=R+P+h(D,B)|0;D=D+T|0,F=F+O+h(D,T)|0,D=D+L|0,F=F+N+h(D,L)|0,n[A]=F,n[A+1]=D}for(var q=0;q<160;q+=2){F=n[q],D=n[q+1];var z=r(e,u,d),K=r(g,w,k),H=i(e,g),V=i(g,e),Y=o(v,E),W=o(E,v),X=b[q],G=b[q+1],Z=t(v,_,y),J=t(E,M,I),$=j+W|0,Q=m+Y+h($,j)|0;$=$+J|0,Q=Q+Z+h($,J)|0,$=$+G|0,Q=Q+X+h($,G)|0,$=$+D|0,Q=Q+F+h($,D)|0;var ll=V+K|0,nl=H+z+h(ll,V)|0;m=y,j=I,y=_,I=M,_=v,M=E,E=S+$|0,v=p+Q+h(E,S)|0,p=d,S=k,d=u,k=w,u=e,w=g,g=$+ll|0,e=Q+nl+h(g,$)|0}this._al=this._al+g|0,this._bl=this._bl+w|0,this._cl=this._cl+k|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+I|0,this._hl=this._hl+j|0,this._ah=this._ah+e+h(this._al,g)|0,this._bh=this._bh+u+h(this._bl,w)|0,this._ch=this._ch+d+h(this._cl,k)|0,this._dh=this._dh+p+h(this._dl,S)|0,this._eh=this._eh+v+h(this._el,E)|0,this._fh=this._fh+_+h(this._fl,M)|0,this._gh=this._gh+y+h(this._gl,I)|0,this._hh=this._hh+m+h(this._hl,j)|0},u.prototype._hash=function(){function l(l,e,u){n.writeInt32BE(l,u),n.writeInt32BE(e,u+4)}var n=new e(64);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),n},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":258,buffer:66,inherits:223}],266:[function(l,n,e){function u(){t.call(this)}n.exports=u;var t=l("events").EventEmitter,r=l("inherits");r(u,t),u.Readable=l("readable-stream/readable.js"),u.Writable=l("readable-stream/writable.js"),u.Duplex=l("readable-stream/duplex.js"),u.Transform=l("readable-stream/transform.js"),u.PassThrough=l("readable-stream/passthrough.js"),u.Stream=u,u.prototype.pipe=function(l,n){function e(n){l.writable&&!1===l.write(n)&&a.pause&&a.pause()}function u(){a.readable&&a.resume&&a.resume()}function r(){f||(f=!0,l.end())}function i(){f||(f=!0,"function"==typeof l.destroy&&l.destroy())}function o(l){if(s(),0===t.listenerCount(this,"error"))throw l}function s(){a.removeListener("data",e),l.removeListener("drain",u),a.removeListener("end",r),a.removeListener("close",i),a.removeListener("error",o),l.removeListener("error",o),a.removeListener("end",s),a.removeListener("close",s),l.removeListener("close",s)}var a=this;a.on("data",e),l.on("drain",u),l._isStdio||n&&n.end===!1||(a.on("end",r),a.on("close",i));var f=!1;return a.on("error",o),l.on("error",o),a.on("end",s),a.on("close",s),l.on("close",s),l.emit("pipe",a),l}},{events:212,inherits:223,"readable-stream/duplex.js":246,"readable-stream/passthrough.js":253,"readable-stream/readable.js":254,"readable-stream/transform.js":255,"readable-stream/writable.js":256}],267:[function(l,n,e){function u(l){if(l&&!s(l))throw new Error("Unknown encoding: "+l)}function t(l){return l.toString(this.encoding)}function r(l){this.charReceived=l.length%2,this.charLength=this.charReceived?2:0}function i(l){this.charReceived=l.length%3,this.charLength=this.charReceived?3:0}var o=l("buffer").Buffer,s=o.isEncoding||function(l){switch(l&&l.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},a=e.StringDecoder=function(l){switch(this.encoding=(l||"utf8").toLowerCase().replace(/[-_]/,""),u(l),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=r;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=i;break;default:return void(this.write=t)}this.charBuffer=new o(6),this.charReceived=0,this.charLength=0};a.prototype.write=function(l){for(var n="";this.charLength;){var e=l.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:l.length;if(l.copy(this.charBuffer,this.charReceived,0,e),this.charReceived+=e,this.charReceived=55296&&u<=56319)){if(this.charReceived=this.charLength=0,0===l.length)return n;break}this.charLength+=this.surrogateSize,n=""}this.detectIncompleteChar(l);var t=l.length;this.charLength&&(l.copy(this.charBuffer,0,l.length-this.charReceived,t),t-=this.charReceived),n+=l.toString(this.encoding,0,t);var t=n.length-1,u=n.charCodeAt(t);if(u>=55296&&u<=56319){var r=this.surrogateSize;return this.charLength+=r,this.charReceived+=r,this.charBuffer.copy(this.charBuffer,r,0,r),l.copy(this.charBuffer,0,0,r),n.substring(0,t)}return n},a.prototype.detectIncompleteChar=function(l){for(var n=l.length>=3?3:l.length;n>0;n--){var e=l[l.length-n];if(1==n&&e>>5==6){this.charLength=2;break}if(n<=2&&e>>4==14){this.charLength=3;break}if(n<=3&&e>>3==30){this.charLength=4;break}}this.charReceived=n},a.prototype.end=function(l){var n="";if(l&&l.length&&(n=this.write(l)),this.charReceived){var e=this.charReceived,u=this.charBuffer,t=this.encoding;n+=u.slice(0,e).toString(t)}return n}},{buffer:66}],268:[function(l,n,e){(function(l){function e(l,n){function e(){if(!t){if(u("throwDeprecation"))throw new Error(n);u("traceDeprecation")?console.trace(n):console.warn(n),t=!0}return l.apply(this,arguments)}if(u("noDeprecation"))return l;var t=!1;return e}function u(n){try{if(!l.localStorage)return!1}catch(e){return!1}var u=l.localStorage[n];return null!=u&&"true"===String(u).toLowerCase()}n.exports=e}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],269:[function(require,module,exports){function Context(){}var indexOf=require("indexof"),Object_keys=function(l){if(Object.keys)return Object.keys(l);var n=[];for(var e in l)n.push(e);return n},forEach=function(l,n){if(l.forEach)return l.forEach(n);for(var e=0;e=0;){var r;if(t.isOdd()){var i=t.andln(u-1);r=i>(u>>1)-1?(u>>1)-i:i,t.isubn(r)}else r=0;e.push(r);for(var o=0!==t.cmpn(0)&&0===t.andln(u-1)?n+1:1,s=1;s0||n.cmpn(-t)>0;){var r=l.andln(3)+u&3,i=n.andln(3)+t&3;3===r&&(r=-1),3===i&&(i=-1);var o;if(0===(1&r))o=0;else{var s=l.andln(7)+u&7;o=3!==s&&5!==s||2!==i?r:-r}e[0].push(o);var a;if(0===(1&i))a=0;else{var s=n.andln(7)+t&7;a=3!==s&&5!==s||2!==r?i:-i}e[1].push(a),2*u===o+1&&(u=1-u),2*t===a+1&&(t=1-t),l.iushrn(1),n.iushrn(1)}return e}function r(l,n,e){var u="_"+n;l.prototype[n]=function(){return void 0!==this[u]?this[u]:this[u]=e.call(this)}}function i(l){return"string"==typeof l?s.toArray(l,"hex"):l}function o(l){return new a(l,"hex","le")}var s=e,a=l("bn.js"),f=l("minimalistic-assert"),c=l("minimalistic-crypto-utils");s.assert=f,s.toArray=c.toArray,s.zero2=c.zero2,s.toHex=c.toHex,s.encode=c.encode,s.getNAF=u,s.getJSF=t,s.cachedProperty=r,s.parseBytes=i,s.intFromLE=o},{"bn.js":36,"minimalistic-assert":227,"minimalistic-crypto-utils":228}],211:[function(l,n,e){n.exports={_args:[[{raw:"elliptic@^6.0.0",scope:null,escapedName:"elliptic",name:"elliptic",rawSpec:"^6.0.0",spec:">=6.0.0 <7.0.0",type:"range"},"/Users/lutovich/Projects/neo4j-javascript-driver/node_modules/browserify-sign"]],_from:"elliptic@>=6.0.0 <7.0.0",_id:"elliptic@6.4.0",_inCache:!0,_installable:!0,_location:"/elliptic",_nodeVersion:"7.0.0",_npmOperationalInternal:{host:"packages-18-east.internal.npmjs.com",tmp:"tmp/elliptic-6.4.0.tgz_1487798866428_0.30510620190761983"},_npmUser:{name:"indutny",email:"fedor@indutny.com"},_npmVersion:"3.10.8",_phantomChildren:{},_requested:{raw:"elliptic@^6.0.0",scope:null,escapedName:"elliptic",name:"elliptic",rawSpec:"^6.0.0",spec:">=6.0.0 <7.0.0",type:"range"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"http://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",_shasum:"cac9af8762c85836187003c8dfe193e5e2eae5df",_shrinkwrap:null,_spec:"elliptic@^6.0.0",_where:"/Users/lutovich/Projects/neo4j-javascript-driver/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},directories:{},dist:{shasum:"cac9af8762c85836187003c8dfe193e5e2eae5df",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz"},files:["lib"],gitHead:"6b0d2b76caae91471649c8e21f0b1d3ba0f96090",homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",maintainers:[{name:"indutny",email:"fedor@indutny.com"}],name:"elliptic",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.4.0"}},{}],212:[function(l,n,e){function u(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function t(l){return"function"==typeof l}function r(l){return"number"==typeof l}function i(l){return"object"==typeof l&&null!==l}function o(l){return void 0===l}n.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._maxListeners=void 0,u.defaultMaxListeners=10,u.prototype.setMaxListeners=function(l){if(!r(l)||l<0||isNaN(l))throw TypeError("n must be a positive number");return this._maxListeners=l,this},u.prototype.emit=function(l){var n,e,u,r,s,a;if(this._events||(this._events={}),"error"===l&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if(n=arguments[1],n instanceof Error)throw n;var f=new Error('Uncaught, unspecified "error" event. ('+n+")");throw f.context=n,f}if(e=this._events[l],o(e))return!1;if(t(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:r=Array.prototype.slice.call(arguments,1),e.apply(this,r)}else if(i(e))for(r=Array.prototype.slice.call(arguments,1),a=e.slice(),u=a.length,s=0;s0&&this._events[l].length>e&&(this._events[l].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[l].length),"function"==typeof console.trace&&console.trace())),this},u.prototype.on=u.prototype.addListener,u.prototype.once=function(l,n){function e(){this.removeListener(l,e),u||(u=!0,n.apply(this,arguments))}if(!t(n))throw TypeError("listener must be a function");var u=!1;return e.listener=n,this.on(l,e),this},u.prototype.removeListener=function(l,n){var e,u,r,o;if(!t(n))throw TypeError("listener must be a function");if(!this._events||!this._events[l])return this;if(e=this._events[l],r=e.length,u=-1,e===n||t(e.listener)&&e.listener===n)delete this._events[l],this._events.removeListener&&this.emit("removeListener",l,n);else if(i(e)){for(o=r;o-- >0;)if(e[o]===n||e[o].listener&&e[o].listener===n){u=o;break}if(u<0)return this;1===e.length?(e.length=0,delete this._events[l]):e.splice(u,1),this._events.removeListener&&this.emit("removeListener",l,n)}return this},u.prototype.removeAllListeners=function(l){var n,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[l]&&delete this._events[l],this;if(0===arguments.length){for(n in this._events)"removeListener"!==n&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events={},this}if(e=this._events[l],t(e))this.removeListener(l,e);else if(e)for(;e.length;)this.removeListener(l,e[e.length-1]);return delete this._events[l],this},u.prototype.listeners=function(l){var n;return n=this._events&&this._events[l]?t(this._events[l])?[this._events[l]]:this._events[l].slice():[]},u.prototype.listenerCount=function(l){if(this._events){var n=this._events[l];if(t(n))return 1;if(n)return n.length}return 0},u.listenerCount=function(l,n){return l.listenerCount(n)}},{}],213:[function(l,n,e){(function(e){function u(l,n,u,r){e.isBuffer(l)||(l=new e(l,"binary")),n&&!e.isBuffer(n)&&(n=new e(n,"binary")),u/=8,r=r||0;for(var i,o,s=0,a=0,f=new e(u),c=new e(r),h=0,d=[];;){if(h++>0&&d.push(i),d.push(l),n&&d.push(n),i=t(e.concat(d)),d=[],o=0,u>0)for(;;){if(0===u)break;if(o===i.length)break;f[s++]=i[o],u--,o++}if(r>0&&o!==i.length)for(;;){if(0===r)break;if(o===i.length)break;c[a++]=i[o],r--,o++}if(0===u&&0===r)break}for(o=0;o=this._delta8){l=this.pending;var e=l.length%this._delta8;this.pending=l.slice(l.length-e,l.length),0===this.pending.length&&(this.pending=null),l=r.join32(l,0,l.length-e,this.endian);for(var u=0;u>>24&255,u[t++]=l>>>16&255,u[t++]=l>>>8&255,u[t++]=255&l}else{u[t++]=255&l,u[t++]=l>>>8&255,u[t++]=l>>>16&255,u[t++]=l>>>24&255,u[t++]=0,u[t++]=0,u[t++]=0,u[t++]=0;for(var r=8;rthis.blockSize&&(l=(new this.Hash).update(l).digest()),i(l.length<=this.blockSize);for(var n=l.length;n>>3}function p(l){return R(l,17)^R(l,19)^l>>>10}function b(l,n,e,u){return 0===l?s(n,e,u):1===l||3===l?f(n,e,u):2===l?a(n,e,u):void 0}function v(l,n,e,u,t,r){var i=l&e^~l&t;return i<0&&(i+=4294967296),i}function _(l,n,e,u,t,r){var i=n&u^~n&r;return i<0&&(i+=4294967296),i}function y(l,n,e,u,t,r){var i=l&e^l&t^e&t;return i<0&&(i+=4294967296),i}function m(l,n,e,u,t,r){var i=n&u^n&r^u&r;return i<0&&(i+=4294967296),i}function g(l,n){var e=U(l,n,28),u=U(n,l,2),t=U(n,l,7),r=e^u^t;return r<0&&(r+=4294967296),r}function w(l,n){var e=N(l,n,28),u=N(n,l,2),t=N(n,l,7),r=e^u^t;return r<0&&(r+=4294967296),r}function k(l,n){var e=U(l,n,14),u=U(l,n,18),t=U(n,l,9),r=e^u^t;return r<0&&(r+=4294967296),r}function S(l,n){var e=N(l,n,14),u=N(l,n,18),t=N(n,l,9),r=e^u^t;return r<0&&(r+=4294967296),r}function E(l,n){var e=U(l,n,1),u=U(l,n,8),t=L(l,n,7),r=e^u^t;return r<0&&(r+=4294967296),r}function M(l,n){var e=N(l,n,1),u=N(l,n,8),t=D(l,n,7),r=e^u^t;return r<0&&(r+=4294967296),r}function I(l,n){var e=U(l,n,19),u=U(n,l,29),t=L(l,n,6),r=e^u^t;return r<0&&(r+=4294967296),r}function j(l,n){var e=N(l,n,19),u=N(n,l,29),t=D(l,n,6),r=e^u^t;return r<0&&(r+=4294967296),r}var A=l("../hash"),x=A.utils,C=x.assert,R=x.rotr32,B=x.rotl32,O=x.sum32,T=x.sum32_4,P=x.sum32_5,U=x.rotr64_hi,N=x.rotr64_lo,L=x.shr64_hi,D=x.shr64_lo,q=x.sum64,F=x.sum64_hi,z=x.sum64_lo,K=x.sum64_4_hi,H=x.sum64_4_lo,V=x.sum64_5_hi,Y=x.sum64_5_lo,W=A.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],G=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];x.inherits(u,W),e.sha256=u,u.blockSize=512,u.outSize=256,u.hmacStrength=192,u.padLength=64,u.prototype._update=function(l,n){for(var e=this.W,u=0;u<16;u++)e[u]=l[n+u];for(;u>8,i=255&t;r?e.push(r,i):e.push(i)}else for(var u=0;u>>24|l>>>8&65280|l<<8&16711680|(255&l)<<24;return n>>>0}function i(l,n){for(var e="",u=0;u>>0}return r}function f(l,n){for(var e=new Array(4*l.length),u=0,t=0;u>>24,e[t+1]=r>>>16&255,e[t+2]=r>>>8&255,e[t+3]=255&r):(e[t+3]=r>>>24,e[t+2]=r>>>16&255,e[t+1]=r>>>8&255,e[t]=255&r)}return e}function c(l,n){return l>>>n|l<<32-n}function h(l,n){return l<>>32-n}function d(l,n){return l+n>>>0}function p(l,n,e){return l+n+e>>>0}function b(l,n,e,u){return l+n+e+u>>>0}function v(l,n,e,u,t){return l+n+e+u+t>>>0}function _(l,n){if(!l)throw new Error(n||"Assertion failed")}function y(l,n,e,u){var t=l[n],r=l[n+1],i=u+r>>>0,o=(i>>0,l[n+1]=i}function m(l,n,e,u){var t=n+u>>>0,r=(t>>0}function g(l,n,e,u){var t=n+u;return t>>>0}function w(l,n,e,u,t,r,i,o){var s=0,a=n;a=a+u>>>0,s+=a>>0,s+=a>>0,s+=a>>0}function k(l,n,e,u,t,r,i,o){var s=n+u+r+o;return s>>>0}function S(l,n,e,u,t,r,i,o,s,a){var f=0,c=n;c=c+u>>>0,f+=c>>0,f+=c>>0,f+=c>>0,f+=c>>0}function E(l,n,e,u,t,r,i,o,s,a){var f=n+u+r+o+a;return f>>>0}function M(l,n,e){var u=n<<32-e|l>>>e;return u>>>0}function I(l,n,e){var u=l<<32-e|n>>>e;return u>>>0}function j(l,n,e){return l>>>e}function A(l,n,e){var u=l<<32-e|n>>>e;return u>>>0}var x=e,C=l("inherits");x.toArray=u,x.toHex=t,x.htonl=r,x.toHex32=i,x.zero2=o,x.zero8=s,x.join32=a,x.split32=f,x.rotr32=c,x.rotl32=h,x.sum32=d,x.sum32_3=p,x.sum32_4=b,x.sum32_5=v,x.assert=_,x.inherits=C,e.sum64=y,e.sum64_hi=m,e.sum64_lo=g,e.sum64_4_hi=w,e.sum64_4_lo=k,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=M,e.rotr64_lo=I,e.shr64_hi=j,e.shr64_lo=A},{inherits:223}],220:[function(l,n,e){"use strict";function u(l){if(!(this instanceof u))return new u(l);this.hash=l.hash,this.predResist=!!l.predResist,this.outLen=this.hash.outSize,this.minEntropy=l.minEntropy||this.hash.hmacStrength,this.reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var n=r.toArray(l.entropy,l.entropyEnc||"hex"),e=r.toArray(l.nonce,l.nonceEnc||"hex"),t=r.toArray(l.pers,l.persEnc||"hex");i(n.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(n,e,t)}var t=l("hash.js"),r=l("minimalistic-crypto-utils"),i=l("minimalistic-assert");n.exports=u,u.prototype._init=function(l,n,e){var u=l.concat(n).concat(e);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var t=0;t=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(l.concat(e||[])),this.reseed=1},u.prototype.generate=function(l,n,e,u){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof n&&(u=e,e=n,n=null),e&&(e=r.toArray(e,u||"hex"),this._update(e));for(var t=[];t.length>1,f=-7,c=e?t-1:0,h=e?-1:1,d=l[n+c];for(c+=h,r=d&(1<<-f)-1,d>>=-f,f+=o;f>0;r=256*r+l[n+c],c+=h,f-=8);for(i=r&(1<<-f)-1,r>>=-f,f+=u;f>0;i=256*i+l[n+c],c+=h,f-=8);if(0===r)r=1-a;else{if(r===s)return i?NaN:(d?-1:1)*(1/0);i+=Math.pow(2,u),r-=a}return(d?-1:1)*i*Math.pow(2,r-u)},e.write=function(l,n,e,u,t,r){var i,o,s,a=8*r-t-1,f=(1<>1,h=23===t?Math.pow(2,-24)-Math.pow(2,-77):0,d=u?0:r-1,p=u?1:-1,b=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(o=isNaN(n)?1:0,i=f):(i=Math.floor(Math.log(n)/Math.LN2),n*(s=Math.pow(2,-i))<1&&(i--,s*=2),n+=i+c>=1?h/s:h*Math.pow(2,1-c),n*s>=2&&(i++,s/=2),i+c>=f?(o=0,i=f):i+c>=1?(o=(n*s-1)*Math.pow(2,t),i+=c):(o=n*Math.pow(2,c-1)*Math.pow(2,t),i=0));t>=8;l[e+d]=255&o,d+=p,o/=256,t-=8);for(i=i<0;l[e+d]=255&i,d+=p,i/=256,a-=8);l[e+d-p]|=128*b}},{}],222:[function(l,n,e){var u=[].indexOf;n.exports=function(l,n){if(u)return l.indexOf(n);for(var e=0;e>=7-u),new t(e)},u.prototype.test=function(l,n,e){var u=l.bitLength(),r=t.mont(l),i=new t(1).toRed(r);n||(n=Math.max(1,u/48|0));for(var o=l.subn(1),s=o.subn(1),a=0;!o.testn(a);a++);for(var f=l.shrn(a),c=o.toRed(r),h=!0;n>0;n--){var d=this._rand(s);e&&e(d);var p=d.toRed(r).redPow(f);if(0!==p.cmp(i)&&0!==p.cmp(c)){for(var b=1;b0;n--){var c=this._rand(o),h=l.gcd(c);if(0!==h.cmpn(1))return h;var d=c.toRed(u).redPow(a);if(0!==d.cmp(r)&&0!==d.cmp(f)){for(var p=1;p>8,i=255&t;r?e.push(r,i):e.push(i)}return e}function t(l){return 1===l.length?"0"+l:l}function r(l){for(var n="",e=0;e=0;u--){var t=l[u];"."===t?l.splice(u,1):".."===t?(l.splice(u,1),e++):e&&(l.splice(u,1),e--)}if(n)for(;e--;e)l.unshift("..");return l}function u(l,n){if(l.filter)return l.filter(n);for(var e=[],u=0;u=-1&&!t;r--){var i=r>=0?arguments[r]:l.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(e=i+"/"+e,t="/"===i.charAt(0))}return e=n(u(e.split("/"),function(l){return!!l}),!t).join("/"),(t?"/":"")+e||"."},e.normalize=function(l){var t=e.isAbsolute(l),r="/"===i(l,-1);return l=n(u(l.split("/"),function(l){return!!l}),!t).join("/"),l||t||(l="."),l&&r&&(l+="/"),(t?"/":"")+l},e.isAbsolute=function(l){return"/"===l.charAt(0)},e.join=function(){var l=Array.prototype.slice.call(arguments,0);return e.normalize(u(l,function(l,n){if("string"!=typeof l)throw new TypeError("Arguments to path.join must be strings");return l}).join("/"))},e.relative=function(l,n){function u(l){for(var n=0;n=0&&""===l[e];e--);return n>e?[]:l.slice(n,e-n+1)}l=e.resolve(l).substr(1),n=e.resolve(n).substr(1);for(var t=u(l.split("/")),r=u(n.split("/")),i=Math.min(t.length,r.length),o=i,s=0;s=6?"utf-8":"binary"}e.pbkdf2Sync=function(l,n,e,o,s){u.isBuffer(l)||(l=new u(l,i)),u.isBuffer(n)||(n=new u(n,i)),r(e,o),s=s||"sha1";var a,f=1,c=new u(o),h=new u(n.length+4);n.copy(h,0,0,n.length);for(var d,p,b=1;b<=f;b++){h.writeUInt32BE(b,n.length);var v=t(s,l).update(h).digest();a||(a=v.length,p=new u(a),f=Math.ceil(o/a),d=o-(f-1)*a),v.copy(p,0,0,a);for(var _=1;_u||n!==n)throw new TypeError("Bad key length")}},{}],238:[function(l,n,e){(function(l){"use strict";function e(n,e,u,t){if("function"!=typeof n)throw new TypeError('"callback" argument must be a function');var r,i,o=arguments.length;switch(o){case 0:case 1:return l.nextTick(n);case 2:return l.nextTick(function(){n.call(null,e)});case 3:return l.nextTick(function(){n.call(null,e,u)});case 4:return l.nextTick(function(){n.call(null,e,u,t)});default:for(r=new Array(o-1),i=0;i1)for(var e=1;e=n.length){r++;break}var i=n.slice(2,t-1);n.slice(t-1,t);if(("0002"!==u.toString("hex")&&!e||"0001"!==u.toString("hex")&&e)&&r++,i.length<8&&r++,r)throw new Error("decryption error");return n.slice(t)}function r(l,n){l=new e(l),n=new e(n);var u=0,t=l.length;l.length!==n.length&&(u++,t=Math.min(l.length,n.length));for(var r=-1;++rc||new a(n).cmp(s.modulus)>=0)throw new Error("decryption error");var d;d=r?h(new a(n),s):f(n,s);var p=new e(c-d.length);if(p.fill(0),d=e.concat([p,d],c),4===o)return u(s,d);if(1===o)return t(s,d,r);if(3===o)return d;throw new Error("unknown padding")}}).call(this,l("buffer").Buffer)},{"./mgf":241,"./withPublic":244,"./xor":245,"bn.js":36,"browserify-rsa":57,buffer:66,"create-hash":181,"parse-asn1":234}],243:[function(l,n,e){(function(e){function u(l,n){var u=l.modulus.byteLength(),t=n.length,r=s("sha1").update(new e("")).digest(),i=r.length,h=2*i;if(t>u-h-2)throw new Error("message too long");var d=new e(u-t-h-2);d.fill(0);var p=u-i-1,b=o(i),v=f(e.concat([r,d,new e([1]),n],p),a(b,p)),_=f(b,a(v,i));return new c(e.concat([new e([0]),_,v],u))}function t(l,n,u){var t=n.length,i=l.modulus.byteLength();if(t>i-11)throw new Error("message too long");var o;return u?(o=new e(i-t-3),o.fill(255)):o=r(i-t-3),new c(e.concat([new e([0,u?1:2]),o,new e([0]),n],i))}function r(l,n){for(var u,t=new e(l),r=0,i=o(2*l),s=0;r=0)throw new Error("data too long for modulus")}return e?d(o,s):h(o,s)}}).call(this,l("buffer").Buffer)},{"./mgf":241,"./withPublic":244,"./xor":245,"bn.js":36,"browserify-rsa":57,buffer:66,"create-hash":181,"parse-asn1":234,randombytes:246}],244:[function(l,n,e){(function(e){function u(l,n){return new e(l.toRed(t.mont(n.modulus)).redPow(new t(n.publicExponent)).fromRed().toArray())}var t=l("bn.js");n.exports=u}).call(this,l("buffer").Buffer)},{"bn.js":36,buffer:66}],245:[function(l,n,e){n.exports=function(l,n){for(var e=l.length,u=-1;++u65536)throw new Error("requested too many random bytes");var r=new e.Uint8Array(n);n>0&&i.getRandomValues(r);var o=new u(r.buffer);return"function"==typeof t?l.nextTick(function(){t(null,o)}):o}var i=e.crypto||e.msCrypto;i&&i.getRandomValues?n.exports=r:n.exports=t}).call(this,l("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},l("buffer").Buffer)},{_process:239,buffer:66}],247:[function(l,n,e){n.exports=l("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":248}],248:[function(l,n,e){"use strict";function u(l){return this instanceof u?(a.call(this,l),f.call(this,l),l&&l.readable===!1&&(this.readable=!1),l&&l.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,l&&l.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",t)):new u(l)}function t(){this.allowHalfOpen||this._writableState.ended||o(r,this)}function r(l){l.end()}var i=Object.keys||function(l){var n=[];for(var e in l)n.push(e);return n};n.exports=u;var o=l("process-nextick-args"),s=l("core-util-is");s.inherits=l("inherits");var a=l("./_stream_readable"),f=l("./_stream_writable");s.inherits(u,a);for(var c=i(f.prototype),h=0;h0)if(n.ended&&!t){var i=new Error("stream.push() after EOF");l.emit("error",i)}else if(n.endEmitted&&t){var s=new Error("stream.unshift() after end event");l.emit("error",s)}else{var a;!n.decoder||t||u||(e=n.decoder.write(e),a=!n.objectMode&&0===e.length),t||(n.reading=!1),a||(n.flowing&&0===n.length&&!n.sync?(l.emit("data",e),l.read(0)):(n.length+=n.objectMode?1:e.length,t?n.buffer.unshift(e):n.buffer.push(e),n.needReadable&&h(l))),p(l,n)}else t||(n.reading=!1);return o(n)}function o(l){return!l.ended&&(l.needReadable||l.length=F?l=F:(l--,l|=l>>>1,l|=l>>>2,l|=l>>>4,l|=l>>>8,l|=l>>>16,l++),l}function a(l,n){return l<=0||0===n.length&&n.ended?0:n.objectMode?1:l!==l?n.flowing&&n.length?n.buffer.head.data.length:n.length:(l>n.highWaterMark&&(n.highWaterMark=s(l)),l<=n.length?l:n.ended?n.length:(n.needReadable=!0,0))}function f(l,n){var e=null;return T.isBuffer(n)||"string"==typeof n||null===n||void 0===n||l.objectMode||(e=new TypeError("Invalid non-string/buffer chunk")),e}function c(l,n){if(!n.ended){if(n.decoder){var e=n.decoder.end();e&&e.length&&(n.buffer.push(e),n.length+=n.objectMode?1:e.length)}n.ended=!0,h(l)}}function h(l){var n=l._readableState;n.needReadable=!1,n.emittedReadable||(L("emitReadable",n.flowing),n.emittedReadable=!0,n.sync?C(d,l):d(l))}function d(l){L("emit readable"),l.emit("readable"),g(l)}function p(l,n){n.readingMore||(n.readingMore=!0,C(b,l,n))}function b(l,n){for(var e=n.length;!n.reading&&!n.flowing&&!n.ended&&n.length=n.length?(e=n.decoder?n.buffer.join(""):1===n.buffer.length?n.buffer.head.data:n.buffer.concat(n.length),n.buffer.clear()):e=k(l,n.buffer,n.decoder),e}function k(l,n,e){var u;return lr.length?r.length:l;if(t+=i===r.length?r:r.slice(0,l),l-=i,0===l){i===r.length?(++u,e.next?n.head=e.next:n.head=n.tail=null):(n.head=e,e.data=r.slice(i));break}++u}return n.length-=u,t}function E(l,n){var e=P.allocUnsafe(l),u=n.head,t=1;for(u.data.copy(e),l-=u.data.length;u=u.next;){var r=u.data,i=l>r.length?r.length:l;if(r.copy(e,e.length-l,0,i),l-=i,0===l){i===r.length?(++t,u.next?n.head=u.next:n.head=n.tail=null):(n.head=u,u.data=r.slice(i));break}++t}return n.length-=t,e}function M(l){var n=l._readableState;if(n.length>0)throw new Error('"endReadable()" called on non-empty stream');n.endEmitted||(n.ended=!0,C(I,n,l))}function I(l,n){l.endEmitted||0!==l.length||(l.endEmitted=!0,n.readable=!1,n.emit("end"))}function j(l,n){for(var e=0,u=l.length;e=n.highWaterMark||n.ended))return L("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?M(this):h(this),null;if(l=a(l,n),0===l&&n.ended)return 0===n.length&&M(this),null;var u=n.needReadable;L("need readable",u),(0===n.length||n.length-l0?w(l,n):null,null===t?(n.needReadable=!0,l=0):n.length-=l,0===n.length&&(n.ended||(n.needReadable=!0),e!==l&&n.ended&&M(this)),null!==t&&this.emit("data",t),t},r.prototype._read=function(l){this.emit("error",new Error("_read() is not implemented"))},r.prototype.pipe=function(l,n){function t(l){L("onunpipe"),l===h&&i()}function r(){L("onend"),l.end()}function i(){L("cleanup"),l.removeListener("close",a),l.removeListener("finish",f),l.removeListener("drain",_),l.removeListener("error",s),l.removeListener("unpipe",t),h.removeListener("end",r),h.removeListener("end",i),h.removeListener("data",o),y=!0,!d.awaitDrain||l._writableState&&!l._writableState.needDrain||_()}function o(n){L("ondata"),m=!1;var e=l.write(n);!1!==e||m||((1===d.pipesCount&&d.pipes===l||d.pipesCount>1&&A(d.pipes,l)!==-1)&&!y&&(L("false write response, pause",h._readableState.awaitDrain),h._readableState.awaitDrain++,m=!0),h.pause())}function s(n){L("onerror",n),c(),l.removeListener("error",s),0===O(l,"error")&&l.emit("error",n)}function a(){l.removeListener("finish",f),c()}function f(){L("onfinish"),l.removeListener("close",a),c()}function c(){L("unpipe"),h.unpipe(l)}var h=this,d=this._readableState;switch(d.pipesCount){case 0:d.pipes=l;break;case 1:d.pipes=[d.pipes,l];break;default:d.pipes.push(l)}d.pipesCount+=1,L("pipe count=%d opts=%j",d.pipesCount,n);var p=(!n||n.end!==!1)&&l!==e.stdout&&l!==e.stderr,b=p?r:i;d.endEmitted?C(b):h.once("end",b),l.on("unpipe",t);var _=v(h);l.on("drain",_);var y=!1,m=!1;return h.on("data",o),u(l,"error",s),l.once("close",a),l.once("finish",f),l.emit("pipe",h),d.flowing||(L("pipe resume"),h.resume()),l},r.prototype.unpipe=function(l){var n=this._readableState;if(0===n.pipesCount)return this;if(1===n.pipesCount)return l&&l!==n.pipes?this:(l||(l=n.pipes),n.pipes=null,n.pipesCount=0,n.flowing=!1,l&&l.emit("unpipe",this),this);if(!l){var e=n.pipes,u=n.pipesCount;n.pipes=null,n.pipesCount=0,n.flowing=!1;for(var t=0;t-1?setImmediate:E;i.WritableState=r;var I=l("core-util-is");I.inherits=l("inherits");var j,A={deprecate:l("util-deprecate")};!function(){try{j=l("stream")}catch(n){}finally{j||(j=l("events").EventEmitter)}}();var x=l("buffer").Buffer,C=l("buffer-shims");I.inherits(i,j),r.prototype.getBuffer=function(){for(var l=this.bufferedRequest,n=[];l;)n.push(l),l=l.next;return n},function(){try{Object.defineProperty(r.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(l){}}();var R;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(R=Function.prototype[Symbol.hasInstance],Object.defineProperty(i,Symbol.hasInstance,{value:function(l){return!!R.call(this,l)||l&&l._writableState instanceof r}})):R=function(l){return l instanceof this},i.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},i.prototype.write=function(l,n,e){var t=this._writableState,r=!1,i=x.isBuffer(l);return"function"==typeof n&&(e=n,n=null),i?n="buffer":n||(n=t.defaultEncoding),"function"!=typeof e&&(e=u),t.ended?o(this,e):(i||s(this,t,l,e))&&(t.pendingcb++,r=f(this,t,i,l,n,e)),r},i.prototype.cork=function(){var l=this._writableState;l.corked++},i.prototype.uncork=function(){var l=this._writableState;l.corked&&(l.corked--,l.writing||l.corked||l.finished||l.bufferProcessing||!l.bufferedRequest||_(this,l))},i.prototype.setDefaultEncoding=function(l){if("string"==typeof l&&(l=l.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((l+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+l);return this._writableState.defaultEncoding=l,this},i.prototype._write=function(l,n,e){e(new Error("_write() is not implemented"))},i.prototype._writev=null,i.prototype.end=function(l,n,e){var u=this._writableState;"function"==typeof l?(e=l,l=null,n=null):"function"==typeof n&&(e=n,n=null),null!==l&&void 0!==l&&this.write(l,n),u.corked&&(u.corked=1,this.uncork()),u.ending||u.finished||w(this,u,e)}}).call(this,l("_process"))},{"./_stream_duplex":248,_process:239,buffer:66,"buffer-shims":64,"core-util-is":179,events:212,inherits:223,"process-nextick-args":238,"util-deprecate":269}],253:[function(l,n,e){"use strict";function u(){this.head=null,this.tail=null,this.length=0}var t=(l("buffer").Buffer,l("buffer-shims"));n.exports=u,u.prototype.push=function(l){var n={data:l,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},u.prototype.unshift=function(l){var n={data:l,next:this.head};0===this.length&&(this.tail=n),this.head=n,++this.length},u.prototype.shift=function(){if(0!==this.length){var l=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,l}},u.prototype.clear=function(){this.head=this.tail=null,this.length=0},u.prototype.join=function(l){if(0===this.length)return"";for(var n=this.head,e=""+n.data;n=n.next;)e+=l+n.data;return e},u.prototype.concat=function(l){if(0===this.length)return t.alloc(0);if(1===this.length)return this.head.data;for(var n=t.allocUnsafe(l>>>0),e=this.head,u=0;e;)e.data.copy(n,u),u+=e.data.length,e=e.next;return n}},{buffer:66,"buffer-shims":64}],254:[function(l,n,e){n.exports=l("./lib/_stream_passthrough.js")},{"./lib/_stream_passthrough.js":249}],255:[function(l,n,e){(function(u){var t=function(){try{return l("stream")}catch(n){}}();e=n.exports=l("./lib/_stream_readable.js"),e.Stream=t||e,e.Readable=e,e.Writable=l("./lib/_stream_writable.js"),e.Duplex=l("./lib/_stream_duplex.js"),e.Transform=l("./lib/_stream_transform.js"),e.PassThrough=l("./lib/_stream_passthrough.js"),!u.browser&&"disable"===u.env.READABLE_STREAM&&t&&(n.exports=t)}).call(this,l("_process"))},{"./lib/_stream_duplex.js":248,"./lib/_stream_passthrough.js":249,"./lib/_stream_readable.js":250,"./lib/_stream_transform.js":251,"./lib/_stream_writable.js":252,_process:239}],256:[function(l,n,e){n.exports=l("./lib/_stream_transform.js")},{"./lib/_stream_transform.js":251}],257:[function(l,n,e){n.exports=l("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":252}],258:[function(l,n,e){(function(l){function e(l){for(var n=[],e=0,u=0;e>>5]|=l[e]<<24-u%32;return n}function u(l){for(var n=[],e=0;e<32*l.length;e+=8)n.push(l[e>>>5]>>>24-e%32&255);return n}function t(l,n,e){for(var u=0;u<16;u++){var t=e+u,c=n[t];n[t]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var y,m,g,w,k,S,E,M,I,j;S=y=l[0],E=m=l[1],M=g=l[2],I=w=l[3],j=k=l[4];var A;for(u=0;u<80;u+=1)A=y+n[e+h[u]]|0,A+=u<16?r(m,g,w)+v[0]:u<32?i(m,g,w)+v[1]:u<48?o(m,g,w)+v[2]:u<64?s(m,g,w)+v[3]:a(m,g,w)+v[4],A=0|A,A=f(A,p[u]),A=A+k|0,y=k,k=w,w=f(g,10),g=m,m=A,A=S+n[e+d[u]]|0,A+=u<16?a(E,M,I)+_[0]:u<32?s(E,M,I)+_[1]:u<48?o(E,M,I)+_[2]:u<64?i(E,M,I)+_[3]:r(E,M,I)+_[4],A=0|A,A=f(A,b[u]),A=A+j|0,S=j,j=I,I=f(M,10),M=E,E=A;A=l[1]+g+I|0,l[1]=l[2]+w+j|0,l[2]=l[3]+k+S|0,l[3]=l[4]+y+E|0,l[4]=l[0]+m+M|0,l[0]=A}function r(l,n,e){return l^n^e}function i(l,n,e){return l&n|~l&e}function o(l,n,e){return(l|~n)^e}function s(l,n,e){return l&e|n&~e}function a(l,n,e){return l^(n|~e)}function f(l,n){return l<>>32-n}function c(n){var r=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof n&&(n=new l(n,"utf8"));var i=e(n),o=8*n.length,s=8*n.length;i[o>>>5]|=128<<24-o%32,i[(o+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8);for(var a=0;a>>24)|4278255360&(f<<24|f>>>8)}var c=u(r);return new l(c)}var h=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],_=[1352829926,1548603684,1836072691,2053994217,0];n.exports=c}).call(this,l("buffer").Buffer)},{buffer:66}],259:[function(l,n,e){(function(l){function e(n,e){this._block=new l(n),this._finalSize=e,this._blockSize=n,this._len=0,this._s=0}e.prototype.update=function(n,e){"string"==typeof n&&(e=e||"utf8",n=new l(n,e));for(var u=this._len+=n.length,t=this._s||0,r=0,i=this._block;t=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(n,this._blockSize-4);var e=this._update(this._block)||this._hash();return l?e.toString(l):e},e.prototype._update=function(){throw new Error("_update must be implemented by subclass")},n.exports=e}).call(this,l("buffer").Buffer)},{buffer:66}],260:[function(l,n,e){var e=n.exports=function(l){l=l.toLowerCase();var n=e[l];if(!n)throw new Error(l+" is not supported (we accept pull requests)");return new n};e.sha=l("./sha"),e.sha1=l("./sha1"),e.sha224=l("./sha224"),e.sha256=l("./sha256"),e.sha384=l("./sha384"),e.sha512=l("./sha512")},{"./sha":261,"./sha1":262,"./sha224":263,"./sha256":264,"./sha384":265,"./sha512":266}],261:[function(l,n,e){(function(e){function u(){this.init(),this._w=f,s.call(this,64,56)}function t(l){return l<<5|l>>>27}function r(l){return l<<30|l>>>2}function i(l,n,e,u){return 0===l?n&e|~n&u:2===l?n&e|n&u|e&u:n^e^u}var o=l("inherits"),s=l("./hash"),a=[1518500249,1859775393,-1894007588,-899497514],f=new Array(80);o(u,s),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._a,u=0|this._b,o=0|this._c,s=0|this._d,f=0|this._e,c=0;c<16;++c)n[c]=l.readInt32BE(4*c);for(;c<80;++c)n[c]=n[c-3]^n[c-8]^n[c-14]^n[c-16];for(var h=0;h<80;++h){var d=~~(h/20),p=t(e)+i(d,u,o,s)+f+n[h]+a[d]|0;f=s,s=o,o=r(u),u=e,e=p}this._a=e+this._a|0,this._b=u+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=f+this._e|0},u.prototype._hash=function(){var l=new e(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":259,buffer:66,inherits:223}],262:[function(l,n,e){(function(e){function u(){this.init(),this._w=c,a.call(this,64,56)}function t(l){return l<<1|l>>>31}function r(l){return l<<5|l>>>27}function i(l){return l<<30|l>>>2}function o(l,n,e,u){return 0===l?n&e|~n&u:2===l?n&e|n&u|e&u:n^e^u}var s=l("inherits"),a=l("./hash"),f=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);s(u,a),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._a,u=0|this._b,s=0|this._c,a=0|this._d,c=0|this._e,h=0;h<16;++h)n[h]=l.readInt32BE(4*h);for(;h<80;++h)n[h]=t(n[h-3]^n[h-8]^n[h-14]^n[h-16]);for(var d=0;d<80;++d){var p=~~(d/20),b=r(e)+o(p,u,s,a)+c+n[d]+f[p]|0;c=a,a=s,s=i(u),u=e,e=b}this._a=e+this._a|0,this._b=u+this._b|0,this._c=s+this._c|0,this._d=a+this._d|0,this._e=c+this._e|0},u.prototype._hash=function(){var l=new e(20);return l.writeInt32BE(0|this._a,0),l.writeInt32BE(0|this._b,4),l.writeInt32BE(0|this._c,8),l.writeInt32BE(0|this._d,12),l.writeInt32BE(0|this._e,16),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":259,buffer:66,inherits:223}],263:[function(l,n,e){(function(e){function u(){this.init(),this._w=o,i.call(this,64,56)}var t=l("inherits"),r=l("./sha256"),i=l("./hash"),o=new Array(64);t(u,r),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var l=new e(28);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":259,"./sha256":264,buffer:66,inherits:223}],264:[function(l,n,e){(function(e){function u(){this.init(),this._w=d,c.call(this,64,56)}function t(l,n,e){return e^l&(n^e)}function r(l,n,e){return l&n|e&(l|n)}function i(l){return(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10)}function o(l){return(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7)}function s(l){return(l>>>7|l<<25)^(l>>>18|l<<14)^l>>>3}function a(l){return(l>>>17|l<<15)^(l>>>19|l<<13)^l>>>10}var f=l("inherits"),c=l("./hash"),h=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],d=new Array(64);f(u,c),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._a,u=0|this._b,f=0|this._c,c=0|this._d,d=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,_=0;_<16;++_)n[_]=l.readInt32BE(4*_);for(;_<64;++_)n[_]=a(n[_-2])+n[_-7]+s(n[_-15])+n[_-16]|0;for(var y=0;y<64;++y){var m=v+o(d)+t(d,p,b)+h[y]+n[y]|0,g=i(e)+r(e,u,f)|0;v=b,b=p,p=d,d=c+m|0,c=f,f=u,u=e,e=m+g|0}this._a=e+this._a|0,this._b=u+this._b|0,this._c=f+this._c|0,this._d=c+this._d|0,this._e=d+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},u.prototype._hash=function(){var l=new e(32);return l.writeInt32BE(this._a,0),l.writeInt32BE(this._b,4),l.writeInt32BE(this._c,8),l.writeInt32BE(this._d,12),l.writeInt32BE(this._e,16),l.writeInt32BE(this._f,20),l.writeInt32BE(this._g,24),l.writeInt32BE(this._h,28),l},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":259,buffer:66,inherits:223}],265:[function(l,n,e){(function(e){function u(){this.init(),this._w=o,i.call(this,128,112)}var t=l("inherits"),r=l("./sha512"),i=l("./hash"),o=new Array(160);t(u,r),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){function l(l,e,u){n.writeInt32BE(l,u),n.writeInt32BE(e,u+4)}var n=new e(48);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),n},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":259,"./sha512":266,buffer:66,inherits:223}],266:[function(l,n,e){(function(e){function u(){this.init(),this._w=v,p.call(this,128,112)}function t(l,n,e){return e^l&(n^e)}function r(l,n,e){return l&n|e&(l|n)}function i(l,n){return(l>>>28|n<<4)^(n>>>2|l<<30)^(n>>>7|l<<25)}function o(l,n){return(l>>>14|n<<18)^(l>>>18|n<<14)^(n>>>9|l<<23)}function s(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^l>>>7}function a(l,n){return(l>>>1|n<<31)^(l>>>8|n<<24)^(l>>>7|n<<25)}function f(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^l>>>6}function c(l,n){return(l>>>19|n<<13)^(n>>>29|l<<3)^(l>>>6|n<<26)}function h(l,n){return l>>>0>>0?1:0}var d=l("inherits"),p=l("./hash"),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);d(u,p),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(l){for(var n=this._w,e=0|this._ah,u=0|this._bh,d=0|this._ch,p=0|this._dh,v=0|this._eh,_=0|this._fh,y=0|this._gh,m=0|this._hh,g=0|this._al,w=0|this._bl,k=0|this._cl,S=0|this._dl,E=0|this._el,M=0|this._fl,I=0|this._gl,j=0|this._hl,A=0;A<32;A+=2)n[A]=l.readInt32BE(4*A),n[A+1]=l.readInt32BE(4*A+4);for(;A<160;A+=2){var x=n[A-30],C=n[A-30+1],R=s(x,C),B=a(C,x);x=n[A-4],C=n[A-4+1];var O=f(x,C),T=c(C,x),P=n[A-14],U=n[A-14+1],N=n[A-32],L=n[A-32+1],D=B+U|0,q=R+P+h(D,B)|0;D=D+T|0,q=q+O+h(D,T)|0,D=D+L|0,q=q+N+h(D,L)|0,n[A]=q,n[A+1]=D}for(var F=0;F<160;F+=2){q=n[F],D=n[F+1];var z=r(e,u,d),K=r(g,w,k),H=i(e,g),V=i(g,e),Y=o(v,E),W=o(E,v),X=b[F],G=b[F+1],Z=t(v,_,y),J=t(E,M,I),$=j+W|0,Q=m+Y+h($,j)|0;$=$+J|0,Q=Q+Z+h($,J)|0,$=$+G|0,Q=Q+X+h($,G)|0,$=$+D|0,Q=Q+q+h($,D)|0;var ll=V+K|0,nl=H+z+h(ll,V)|0;m=y,j=I,y=_,I=M,_=v,M=E,E=S+$|0,v=p+Q+h(E,S)|0,p=d,S=k,d=u,k=w,u=e,w=g,g=$+ll|0,e=Q+nl+h(g,$)|0}this._al=this._al+g|0,this._bl=this._bl+w|0,this._cl=this._cl+k|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+M|0,this._gl=this._gl+I|0,this._hl=this._hl+j|0,this._ah=this._ah+e+h(this._al,g)|0,this._bh=this._bh+u+h(this._bl,w)|0,this._ch=this._ch+d+h(this._cl,k)|0,this._dh=this._dh+p+h(this._dl,S)|0,this._eh=this._eh+v+h(this._el,E)|0,this._fh=this._fh+_+h(this._fl,M)|0,this._gh=this._gh+y+h(this._gl,I)|0,this._hh=this._hh+m+h(this._hl,j)|0},u.prototype._hash=function(){function l(l,e,u){n.writeInt32BE(l,u),n.writeInt32BE(e,u+4)}var n=new e(64);return l(this._ah,this._al,0),l(this._bh,this._bl,8),l(this._ch,this._cl,16),l(this._dh,this._dl,24),l(this._eh,this._el,32),l(this._fh,this._fl,40),l(this._gh,this._gl,48),l(this._hh,this._hl,56),n},n.exports=u}).call(this,l("buffer").Buffer)},{"./hash":259,buffer:66,inherits:223}],267:[function(l,n,e){function u(){t.call(this)}n.exports=u;var t=l("events").EventEmitter,r=l("inherits");r(u,t),u.Readable=l("readable-stream/readable.js"),u.Writable=l("readable-stream/writable.js"),u.Duplex=l("readable-stream/duplex.js"),u.Transform=l("readable-stream/transform.js"),u.PassThrough=l("readable-stream/passthrough.js"),u.Stream=u,u.prototype.pipe=function(l,n){function e(n){l.writable&&!1===l.write(n)&&a.pause&&a.pause()}function u(){a.readable&&a.resume&&a.resume()}function r(){f||(f=!0,l.end())}function i(){f||(f=!0,"function"==typeof l.destroy&&l.destroy())}function o(l){if(s(),0===t.listenerCount(this,"error"))throw l}function s(){a.removeListener("data",e),l.removeListener("drain",u),a.removeListener("end",r),a.removeListener("close",i),a.removeListener("error",o),l.removeListener("error",o),a.removeListener("end",s),a.removeListener("close",s),l.removeListener("close",s)}var a=this;a.on("data",e),l.on("drain",u),l._isStdio||n&&n.end===!1||(a.on("end",r),a.on("close",i));var f=!1;return a.on("error",o),l.on("error",o),a.on("end",s),a.on("close",s),l.on("close",s),l.emit("pipe",a),l}},{events:212,inherits:223,"readable-stream/duplex.js":247,"readable-stream/passthrough.js":254,"readable-stream/readable.js":255,"readable-stream/transform.js":256,"readable-stream/writable.js":257}],268:[function(l,n,e){function u(l){if(l&&!s(l))throw new Error("Unknown encoding: "+l)}function t(l){return l.toString(this.encoding)}function r(l){this.charReceived=l.length%2,this.charLength=this.charReceived?2:0}function i(l){this.charReceived=l.length%3,this.charLength=this.charReceived?3:0}var o=l("buffer").Buffer,s=o.isEncoding||function(l){switch(l&&l.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},a=e.StringDecoder=function(l){switch(this.encoding=(l||"utf8").toLowerCase().replace(/[-_]/,""),u(l),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=r;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=i;break;default:return void(this.write=t)}this.charBuffer=new o(6),this.charReceived=0,this.charLength=0};a.prototype.write=function(l){for(var n="";this.charLength;){var e=l.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:l.length;if(l.copy(this.charBuffer,this.charReceived,0,e),this.charReceived+=e,this.charReceived=55296&&u<=56319)){if(this.charReceived=this.charLength=0,0===l.length)return n;break}this.charLength+=this.surrogateSize,n=""}this.detectIncompleteChar(l);var t=l.length;this.charLength&&(l.copy(this.charBuffer,0,l.length-this.charReceived,t),t-=this.charReceived),n+=l.toString(this.encoding,0,t);var t=n.length-1,u=n.charCodeAt(t);if(u>=55296&&u<=56319){var r=this.surrogateSize;return this.charLength+=r,this.charReceived+=r,this.charBuffer.copy(this.charBuffer,r,0,r),l.copy(this.charBuffer,0,0,r),n.substring(0,t)}return n},a.prototype.detectIncompleteChar=function(l){for(var n=l.length>=3?3:l.length;n>0;n--){var e=l[l.length-n];if(1==n&&e>>5==6){this.charLength=2;break}if(n<=2&&e>>4==14){this.charLength=3;break}if(n<=3&&e>>3==30){this.charLength=4;break}}this.charReceived=n},a.prototype.end=function(l){var n="";if(l&&l.length&&(n=this.write(l)),this.charReceived){var e=this.charReceived,u=this.charBuffer,t=this.encoding;n+=u.slice(0,e).toString(t)}return n}},{buffer:66}],269:[function(l,n,e){(function(l){function e(l,n){function e(){if(!t){if(u("throwDeprecation"))throw new Error(n);u("traceDeprecation")?console.trace(n):console.warn(n),t=!0}return l.apply(this,arguments)}if(u("noDeprecation"))return l;var t=!1;return e}function u(n){try{if(!l.localStorage)return!1}catch(e){return!1}var u=l.localStorage[n];return null!=u&&"true"===String(u).toLowerCase()}n.exports=e}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],270:[function(require,module,exports){function Context(){}var indexOf=require("indexof"),Object_keys=function(l){if(Object.keys)return Object.keys(l);var n=[];for(var e in l)n.push(e);return n},forEach=function(l,n){if(l.forEach)return l.forEach(n);for(var e=0;e57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(u===e-1)t.push(65533);else{var i=l.charCodeAt(u+1);if(56320<=i&&i<=57343){var o=1023&r,s=1023&i;t.push(65536+(o<<10)+s),u+=1}else t.push(65533)}u+=1}return t}function r(l){for(var n="",e=0;e>10)+55296,(1023&u)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function s(l){throw TypeError("The code point "+l+" could not be encoded.")}function a(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var e=n.indexOf(l);return e===-1?null:e}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,e=0,u=0,t=p("gb18030");for(n=0;n>6*u)+t];u>0;){var i=e>>6*(u-1);r.push(128|63&i),u-=1}return r}}function S(l,e){var u=e.fatal;this.handler=function(e,t){if(t===z)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(u):r}}function E(l,e){e.fatal;this.handler=function(e,u){if(u===z)return K;if(n(u,0,127))return u;var t=d(u,l);return null===t&&s(u),t+128}}function M(l){var e=l.fatal,u=0,t=0,r=0;this.handler=function(l,i){if(i===z&&0===u&&0===t&&0===r)return K;i!==z||0===u&&0===t&&0===r||(u=0,t=0,r=0,o(e));var s;if(0!==r){s=null,n(i,48,57)&&(s=b(10*(126*(10*(u-129)+(t-48))+(r-129))+i-48));var a=[t,r,i];return u=0,t=0,r=0,null===s?(l.prepend(a),o(e)):s}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),u=0,t=0,o(e));if(0!==u){if(n(i,48,57))return t=i,null;var f=u,c=null;u=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),s=null===c?null:h(c,p("gb18030")),null===s&&n(i,0,127)&&l.prepend(i),null===s?o(e):s}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(u=i,null):o(e)}}function I(l,u){l.fatal;this.handler=function(l,t){if(t===z)return K;if(n(t,0,127))return t;if(u&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=e(r,190)+129,o=r%190,a=o<63?64:65;return[i,o+a]}if(u)return s(t);r=v(t);var f=e(e(e(r,10),126),10);r-=10*f*126*10;var c=e(e(r,10),126);r-=10*c*126;var h=e(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function j(l){var e=l.fatal,u=0;this.handler=function(l,t){if(t===z&&0!==u)return u=0,o(e);if(t===z&&0===u)return K;if(0!==u){var r=u,i=null;u=0;var s=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-s)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var a=null===i?null:h(i,p("big5"));return null===a&&n(t,0,127)&&l.prepend(t),null===a?o(e):a}return n(t,0,127)?t:n(t,129,254)?(u=t,null):o(e)}}function A(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,127))return u;var t=y(u,p("big5"));if(null===t)return s(u);var r=e(t,157)+129;if(r<161)return s(u);var i=t%157,o=i<63?64:98;return[r,i+o]}}function x(l){var e=l.fatal,u=!1,t=0;this.handler=function(l,r){if(r===z&&0!==t)return t=0,o(e);if(r===z&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return u=!0,t=r,null;if(0!==t){var i=t;t=0;var s=null;return n(i,161,254)&&n(r,161,254)&&(s=h(94*(i-161)+(r-161),p(u?"jis0212":"jis0208"))),u=!1,n(r,161,254)||l.prepend(r),null===s?o(e):s}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(e)}}function C(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,127))return u;if(165===u)return 92;if(8254===u)return 126;if(n(u,65377,65439))return[142,u-65377+161];8226===u&&(u=65293);var t=d(u,p("jis0208"));if(null===t)return s(u);var r=e(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var e=l.fatal,u={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=u.ASCII,r=u.ASCII,i=0,s=!1;this.handler=function(l,a){switch(t){default:case u.ASCII:return 27===a?(t=u.EscapeStart,null):n(a,0,127)&&14!==a&&15!==a&&27!==a?(s=!1,a):a===z?K:(s=!1,o(e));case u.Roman:return 27===a?(t=u.EscapeStart,null):92===a?(s=!1,165):126===a?(s=!1,8254):n(a,0,127)&&14!==a&&15!==a&&27!==a&&92!==a&&126!==a?(s=!1,a):a===z?K:(s=!1,o(e));case u.Katakana:return 27===a?(t=u.EscapeStart,null):n(a,33,95)?(s=!1,65377+a-33):a===z?K:(s=!1,o(e));case u.LeadByte:return 27===a?(t=u.EscapeStart,null):n(a,33,126)?(s=!1,i=a,t=u.TrailByte,null):a===z?K:(s=!1,o(e));case u.TrailByte:if(27===a)return t=u.EscapeStart,o(e);if(n(a,33,126)){t=u.LeadByte;var f=94*(i-33)+a-33,c=h(f,p("jis0208"));return null===c?o(e):c}return a===z?(t=u.LeadByte,l.prepend(a),o(e)):(t=u.LeadByte,o(e));case u.EscapeStart:return 36===a||40===a?(i=a,t=u.Escape,null):(l.prepend(a),s=!1,t=r,o(e));case u.Escape:var d=i;i=0;var b=null;if(40===d&&66===a&&(b=u.ASCII),40===d&&74===a&&(b=u.Roman),40===d&&73===a&&(b=u.Katakana),36!==d||64!==a&&66!==a||(b=u.LeadByte),null!==b){t=t=b;var v=s;return s=!0,v?o(e):null}return l.prepend([d,a]),s=!1,t=r,o(e)}}}function B(l){var u=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=u.ASCII;this.handler=function(l,r){if(r===z&&t!==u.ASCII)return l.prepend(r),[27,40,66];if(r===z&&t===u.ASCII)return K;if(t===u.ASCII&&n(r,0,127))return r;if(t===u.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==u.ASCII)return l.prepend(r),t=u.ASCII,[27,40,66];if((165===r||8254===r)&&t!==u.Roman)return l.prepend(r),t=u.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return s(r);if(t!==u.jis0208)return l.prepend(r),t=u.jis0208,[27,36,66];var o=e(i,94)+33,a=i%94+33;return[o,a]}}function O(l){var e=l.fatal,u=0;this.handler=function(l,t){if(t===z&&0!==u)return u=0,o(e);if(t===z&&0===u)return K;if(0!==u){var r=u,i=null;u=0;var s=t<127?64:65,a=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-a)+t-s);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(e):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(u=t,null):o(e)}}function T(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,128))return u;if(165===u)return 92;if(8254===u)return 126;if(n(u,65377,65439))return u-65377+161;8226===u&&(u=65293);var t=_(u);if(null===t)return s(u);var r=e(t,188),i=r<31?129:193,o=t%188,a=o<63?64:65;return[r+i,o+a]}}function P(l){var e=l.fatal,u=0;this.handler=function(l,t){if(t===z&&0!==u)return u=0,o(e);if(t===z&&0===u)return K;if(0!==u){var r=u,i=null;u=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var s=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===s?o(e):s}return n(t,0,127)?t:n(t,129,254)?(u=t,null):o(e)}}function U(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,127))return u;var t=d(u,p("euc-kr"));if(null===t)return s(u);var r=e(t,190)+129,i=t%190+65;return[r,i]}}function N(l,n){var e=l>>8,u=255&l;return n?[e,u]:[u,e]}function L(l,e){var u=e.fatal,t=null,r=null;this.handler=function(e,i){if(i===z&&(null!==t||null!==r))return o(u);if(i===z&&null===t&&null===r)return K;if(null===t)return t=i,null;var s;if(s=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var a=r;return r=null,n(s,56320,57343)?65536+1024*(a-55296)+(s-56320):(e.prepend(N(s,l)),o(u))}return n(s,55296,56319)?(r=s,null):n(s,56320,57343)?o(u):s}}function D(l,e){e.fatal;this.handler=function(e,u){if(u===z)return K;if(n(u,0,65535))return N(u,l);var t=N((u-65536>>10)+55296,l),r=N((u-65536&1023)+56320,l);return t.concat(r)}}function F(l){l.fatal;this.handler=function(l,e){return e===z?K:n(e,0,127)?e:63360+e-128}}function q(l){l.fatal;this.handler=function(l,e){return e===z?K:n(e,0,127)?e:n(e,63360,63487)?e-63360+128:s(e)}}var z=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():z},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;a.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var e;e="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=u(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(e),s=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?s.push.apply(s,t):s.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?s.push.apply(s,t):s.push(t))}while(!o.endOfStream());this._decoder=null}return s.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===s[0]?(this._BOMseen=!0, -s.shift()):this._BOMseen=!0)),r(s)}},g.prototype={encode:function(l,n){l=l?String(l):"",n=u(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var e,r=[],o=new i(t(l));!o.endOfStream()&&(e=this._encoder.handler(o,o.read()),e!==K);)Array.isArray(e)?r.push.apply(r,e):r.push(e);if(!this._streaming){for(;;){if(e=this._encoder.handler(o,o.read()),e===K)break;Array.isArray(e)?r.push.apply(r,e):r.push(e)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,e=p(n);W[n]=function(l){return new S(e,l)},Y[n]=function(l){return new E(e,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new A(l)},W.big5=function(l){return new j(l)},Y["euc-jp"]=function(l){return new C(l)},W["euc-jp"]=function(l){return new x(l)},Y["iso-2022-jp"]=function(l){return new B(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new T(l)},W.shift_jis=function(l){return new O(l)},Y["euc-kr"]=function(l){return new U(l)},W["euc-kr"]=function(l){return new P(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new L((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new L((!1),l)},Y["x-user-defined"]=function(l){return new q(l)},W["x-user-defined"]=function(l){return new F(l)},l.TextEncoder||(l.TextEncoder=g),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":271}],273:[function(l,n,e){"use strict";function u(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var e in l)Object.prototype.hasOwnProperty.call(l,e)&&(n[e]=l[e]);return n["default"]=l,n}Object.defineProperty(e,"__esModule",{value:!0}),e.v1=void 0;var t=l("./v1/index"),r=u(t);e.v1=r,e["default"]=r},{"./v1/index":277}],274:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.WRITE=e.READ=e.Driver=void 0;var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/possibleConstructorReturn"),o=u(i),s=l("babel-runtime/helpers/get"),a=u(s),f=l("babel-runtime/helpers/inherits"),c=u(f),h=l("babel-runtime/helpers/classCallCheck"),d=u(h),p=l("babel-runtime/helpers/createClass"),b=u(p),v=l("./session"),_=u(v),y=l("./internal/pool"),m=u(y),g=l("./internal/connector"),w=l("./internal/stream-observer"),k=u(w),S=l("./error"),E=l("./internal/connection-providers"),M="READ",I="WRITE",j=function(){function l(n,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};(0,d["default"])(this,l),this._url=n,this._userAgent=e,this._openSessions={},this._sessionIdGenerator=0,this._token=u,this._config=t,this._pool=new m["default"](this._createConnection.bind(this),this._destroyConnection.bind(this),l._validateConnection.bind(this),t.connectionPoolSize),this._connectionProvider=this._createConnectionProvider(n,this._pool,this._driverOnErrorCallback.bind(this))}return(0,b["default"])(l,[{key:"_createConnection",value:function(l,n){var e=this._sessionIdGenerator++,u=(0,g.connect)(l,this._config),t=new A(this,u);return u.initialize(this._userAgent,this._token,t),u._id=e,u._release=function(){return n(l,u)},this._openSessions[e]=u,u}},{key:"_destroyConnection",value:function(l){delete this._openSessions[l._id],l.close()}},{key:"session",value:function(n,e){var u=l._validateSessionMode(n);return this._createSession(u,this._connectionProvider,e,this._config)}},{key:"_createConnectionProvider",value:function(l,n,e){return new E.DirectConnectionProvider(l,n,e)}},{key:"_createSession",value:function(l,n,e,u){return new _["default"](l,n,e,u)}},{key:"_driverOnErrorCallback",value:function(l){var n=this.onError;n&&l.code===S.SERVICE_UNAVAILABLE&&n(l)}},{key:"close",value:function(){for(var l in this._openSessions)this._openSessions.hasOwnProperty(l)&&this._openSessions[l].close(),this._pool.purgeAll()}}],[{key:"_validateConnection",value:function(l){return l.isOpen()}},{key:"_validateSessionMode",value:function(l){var n=l||I;if(n!==M&&n!==I)throw(0,S.newError)("Illegal session mode "+n);return n}}]),l}(),A=function(l){function n(l,e){(0,d["default"])(this,n);var u=(0,o["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this));return u._driver=l,u._conn=e,u._hasFailed=!1,u}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"onError",value:function(l){this._hasFailed||((0,a["default"])(n.prototype.__proto__||(0,r["default"])(n.prototype),"onError",this).call(this,l),this._driver.onError&&this._driver.onError(l),this._hasFailed=!0)}},{key:"onCompleted",value:function(l){this._driver.onCompleted&&this._driver.onCompleted(l),this._conn&&l&&l.server&&this._conn.setServerVersion(l.server)}}]),n}(k["default"]);e.Driver=j,e.READ=M,e.WRITE=I,e["default"]=j},{"./error":275,"./internal/connection-providers":284,"./internal/connector":285,"./internal/pool":289,"./internal/stream-observer":293,"./session":301,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],275:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"N/A";return new v(l,n)}Object.defineProperty(e,"__esModule",{value:!0}),e.PROTOCOL_ERROR=e.SESSION_EXPIRED=e.SERVICE_UNAVAILABLE=e.Neo4jError=e.newError=void 0;var r=l("babel-runtime/core-js/object/get-prototype-of"),i=u(r),o=l("babel-runtime/helpers/classCallCheck"),s=u(o),a=l("babel-runtime/helpers/possibleConstructorReturn"),f=u(a),c=l("babel-runtime/helpers/inherits"),h=u(c),d="ServiceUnavailable",p="SessionExpired",b="ProtocolError",v=function(l){function n(l){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"N/A";(0,s["default"])(this,n);var u=(0,f["default"])(this,(n.__proto__||(0,i["default"])(n)).call(this,l));return u.message=l,u.code=e,u}return(0,h["default"])(n,l),n}(Error);e.newError=t,e.Neo4jError=v,e.SERVICE_UNAVAILABLE=d,e.SESSION_EXPIRED=p,e.PROTOCOL_ERROR=b},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],276:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.PathSegment=e.Path=e.UnboundRelationship=e.Relationship=e.Node=void 0;var t=l("babel-runtime/core-js/json/stringify"),r=u(t),i=l("babel-runtime/core-js/object/keys"),o=u(i),s=l("babel-runtime/helpers/classCallCheck"),a=u(s),f=l("babel-runtime/helpers/createClass"),c=u(f),h=function(){function l(n,e,u){(0,a["default"])(this,l),this.identity=n,this.labels=e,this.properties=u}return(0,c["default"])(l,[{key:"toString",value:function(){for(var l="("+this.identity,n=0;n0){l+=" {";for(var u=0;u0&&(l+=","),l+=e[u]+":"+(0,r["default"])(this.properties[e[u]]);l+="}"}return l+=")"}}]),l}(),d=function(){function l(n,e,u,t,r){(0,a["default"])(this,l),this.identity=n,this.start=e,this.end=u,this.type=t,this.properties=r}return(0,c["default"])(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=(0,o["default"])(this.properties);if(n.length>0){l+=" {";for(var e=0;e0&&(l+=","),l+=n[e]+":"+(0,r["default"])(this.properties[n[e]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),p=function(){function l(n,e,u){(0,a["default"])(this,l),this.identity=n,this.type=e,this.properties=u}return(0,c["default"])(l,[{key:"bind",value:function(l,n){return new d(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=(0,o["default"])(this.properties);if(n.length>0){l+=" {";for(var e=0;e0&&(l+=","),l+=n[e]+":"+(0,r["default"])(this.properties[n[e]]);l+="}"}return l+="]->"}}]),l}(),b=function _(l,n,e){(0,a["default"])(this,_),this.start=l,this.relationship=n,this.end=e},v=function y(l,n,e){(0,a["default"])(this,y),this.start=l,this.end=n,this.segments=e,this.length=e.length};e.Node=h,e.Relationship=d,e.UnboundRelationship=p,e.Path=v,e.PathSegment=b},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],277:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,g.assertString)(l,"Bolt URL");var u=(0,m.parseScheme)(l);if("bolt+routing://"===u)return new v["default"]((0,m.parseUrl)(l),k,n,e);if("bolt://"===u)return new p.Driver((0,m.parseUrl)(l),k,n,e);throw new Error("Unknown scheme: "+u)}Object.defineProperty(e,"__esModule",{value:!0}),e.error=e.session=e.types=e.auth=e.Neo4jError=e.integer=e.isInt=e["int"]=e.driver=void 0;var r=l("./integer"),i=l("./graph-types"),o=l("./error"),s=l("./result"),a=u(s),f=l("./result-summary"),c=u(f),h=l("./record"),d=u(h),p=l("./driver"),b=l("./routing-driver"),v=u(b),_=l("../version"),y=u(_),m=l("./internal/connector"),g=l("./internal/util"),w={basic:function(l,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return e?{scheme:"basic",principal:l,credentials:n,realm:e}:{scheme:"basic",principal:l,credentials:n}},custom:function(l,n,e,u){var t=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0;return t?{scheme:u,principal:l,credentials:n,realm:e,parameters:t}:{scheme:u,principal:l,credentials:n,realm:e}}},k="neo4j-javascript/"+y["default"],S={Node:i.Node,Relationship:i.Relationship,UnboundRelationship:i.UnboundRelationship,PathSegment:i.PathSegment,Path:i.Path,Result:a["default"],ResultSummary:c["default"],Record:d["default"]},E={READ:p.READ,WRITE:p.WRITE},M={SERVICE_UNAVAILABLE:o.SERVICE_UNAVAILABLE,SESSION_EXPIRED:o.SESSION_EXPIRED,PROTOCOL_ERROR:o.PROTOCOL_ERROR},I={toNumber:r.toNumber,toString:r.toString,inSafeRange:r.inSafeRange},j={driver:t,"int":r["int"],isInt:r.isInt,integer:I,Neo4jError:o.Neo4jError,auth:w,types:S,session:E,error:M};e.driver=t,e["int"]=r["int"],e.isInt=r.isInt,e.integer=I,e.Neo4jError=o.Neo4jError,e.auth=w,e.types=S,e.session=E,e.error=M,e["default"]=j},{"../version":303,"./driver":274,"./error":275,"./graph-types":276,"./integer":278,"./internal/connector":285,"./internal/util":296,"./record":297,"./result":299,"./result-summary":298,"./routing-driver":300}],278:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.toString=e.toNumber=e.inSafeRange=e.isInt=e["int"]=void 0;var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=l("./error"),a=function(){function l(n,e){(0,r["default"])(this,l),this.low=0|n,this.high=0|e}return(0,o["default"])(l,[{key:"inSafeRange",value:function(){return this.greaterThanOrEqual(l.MIN_SAFE_VALUE)&&this.lessThanOrEqual(l.MAX_SAFE_VALUE)}},{key:"toInt",value:function(){return this.low}},{key:"toNumber",value:function(){return this.high*h+(this.low>>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,a=s.toString(n);if(e=o,e.isZero())return a+i;for(;a.length<6;)a="0"+a;i=""+a+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,e=31;e>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var e=this.isNegative(),u=n.isNegative();return e&&!u?-1:!e&&u?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var e=this.high>>>16,u=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,s=n.low>>>16,a=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+a,h+=d>>>16,d&=65535,h+=t+s,c+=h>>>16,h&=65535,c+=u+o,f+=c>>>16,c&=65535,f+=e+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(b)&&n.lessThan(b))return l.fromNumber(this.toNumber()*n.toNumber());var e=this.high>>>16,u=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,s=n.low>>>16,a=65535&n.low,f=0,c=0,h=0,d=0;return d+=r*a,h+=d>>>16,d&=65535,h+=t*a,c+=h>>>16,h&=65535,h+=r*s,c+=h>>>16,h&=65535,c+=u*a,f+=c>>>16,c&=65535,c+=t*s,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=e*a+u*s+t*o+r*i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,s.newError)("division by zero");if(this.isZero())return l.ZERO;var e,u,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var r=this.shiftRight(1);return e=r.div(n).shiftLeft(1),e.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(u=this.subtract(n.multiply(e)),t=e.add(u.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,u=this;u.greaterThanOrEqual(n);){e=Math.max(1,Math.floor(u.toNumber()/n.toNumber()));for(var i=Math.ceil(Math.log(e)/Math.LN2),o=i<=48?1:Math.pow(2,i-48),a=l.fromNumber(e),f=a.multiply(n);f.isNegative()||f.greaterThan(u);)e-=o,a=l.fromNumber(e),f=a.multiply(n);a.isZero()&&(a=l.ONE),t=t.add(a),u=u.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();a.__isInteger__,Object.defineProperty(a.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),a.isInteger=function(l){return(l&&l.__isInteger__)===!0};var f={};a.fromInt=function(l){var n,e;return l=0|l,-128<=l&&l<128&&(e=f[l])?e:(n=new a(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(f[l]=n),n)},a.fromNumber=function(l){return isNaN(l)||!isFinite(l)?a.ZERO:l<=-p?a.MIN_VALUE:l+1>=p?a.MAX_VALUE:l<0?a.fromNumber(-l).negate():new a(l%h|0,l/h|0)},a.fromBits=function(l,n){return new a(l,n)},a.fromString=function(l,n){if(0===l.length)throw(0,s.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return a.ZERO;if(n=n||10,n<2||360)throw(0,s.newError)('number format error: interior "-" character: '+l);if(0===e)return a.fromString(l.substring(1),n).negate();for(var u=a.fromNumber(Math.pow(n,8)),t=a.ZERO,r=0;r>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var e=0,u=n.remaining();e0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=e.length))return e.getUInt8(l);l-=e.length}}},{key:"getInt8",value:function(l){for(var n=0;n=e.length))return e.getInt8(l);l-=e.length}}},{key:"getFloat64",value:function(l){for(var n=t(8),e=0;e<8;e++)n.putUInt8(e,this.getUInt8(l+e));return n.getFloat64(0)}}]),n}(y),k=function(l){function n(l){(0,p["default"])(this,n);var e=l instanceof _.Buffer?l:new _.Buffer(l),u=(0,f["default"])(this,(n.__proto__||(0,s["default"])(n)).call(this,e.length));return u._buffer=e,u}return(0,h["default"])(n,l),(0,v["default"])(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,e){if(e instanceof n){var u=Math.min(e.length-e.position,this.length-l);e._buffer.copy(this._buffer,l,e.position,e.position+u),e.position+=u}else(0,i["default"])(n.prototype.__proto__||(0,s["default"])(n.prototype),"putBytes",this).call(this,l,e)}},{key:"getSlice",value:function(l,e){return new n(this._buffer.slice(l,l+e))}}]),n}(y),S=m;try{l.resolve("buffer"),S=k}catch(E){}e.BaseBuffer=y,e.HeapBuffer=m,e.SliceBuffer=g,e.CombinedBuffer=w,e.NodeBuffer=k,e.alloc=t},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,buffer:66}],280:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(){var n=l,e=n("process");return e.env["win32"==e.platform?"USERPROFILE":"HOME"]}function r(l){try{y["default"].mkdirSync(l)}catch(n){if("ENOENT"===n.code)return r(g["default"].dirname(l)),void r(l);if("EEXIST"===n.code)return;throw n}}function i(n,e,u){try{y["default"].accessSync(e)}catch(t){return u(null)}var r=!1;l("readline").createInterface({input:y["default"].createReadStream(e)}).on("line",function(l){!r&&l.startsWith(n)&&(r=!0,u(l.split(" ")[1]))}).on("close",function(){r||u(null)})}function o(l,n,e,u){if(I[l])return u(null);I[l]=1;try{y["default"].accessSync(n)}catch(t){r(g["default"].dirname(n))}y["default"].appendFile(n,l+" "+e+w.EOL,"utf8",function(n){return delete I[l],n&&console.log(n),u(n)})}function s(l,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return null};if(l.encrypted===!1||l.encrypted===S.ENCRYPTION_OFF){var u=p["default"].connect(l.port,l.host,n);return u.on("error",e),u}return j[l.trust]?j[l.trust](l,n,e):void e((0,E.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_CUSTOM_CA_SIGNED_CERTIFICATES' or trust:'TRUST_ALL_CERTIFICATES' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:\""+S.ENCRYPTION_OFF+'"`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j.'))}Object.defineProperty(e,"__esModule",{value:!0});var a=l("babel-runtime/helpers/classCallCheck"),f=u(a),c=l("babel-runtime/helpers/createClass"),h=u(c),d=l("net"),p=u(d),b=l("tls"),v=u(b),_=l("fs"),y=u(_),m=l("path"),g=u(m),w=l("os"),k=l("./buf"),S=l("./util"),E=l("./../error"),M=0,I={},j={TRUST_SIGNED_CERTIFICATES:function(l,n,e){return console.log("`TRUST_SIGNED_CERTIFICATES` has been deprecated as option and will be removed in a future version of the driver. Please use `TRUST_CUSTOM_CA_SIGNED_CERTIFICATES` instead."),j.TRUST_CUSTOM_CA_SIGNED_CERTIFICATES(l,n,e)},TRUST_CUSTOM_CA_SIGNED_CERTIFICATES:function(l,n,e){if(!l.trustedCertificates||0==l.trustedCertificates.length)return void e((0,E.newError)('You are using TRUST_CUSTOM_CA_SIGNED_CERTIFICATES as the method to verify trust for encrypted connections, but have not configured any trustedCertificates. You must specify the path to at least one trusted X.509 certificate for this to work. Two other alternatives is to use TRUST_ALL_CERTIFICATES or to disable encryption by setting encrypted="'+S.ENCRYPTION_OFF+'"in your driver configuration.'));var u={ca:l.trustedCertificates.map(function(l){return y["default"].readFileSync(l)}),rejectUnauthorized:!1},t=v["default"].connect(l.port,l.host,u,function(){t.authorized?n():e((0,E.newError)("Server certificate is not trusted. If you trust the database you are connecting to, add the signing certificate, or the server certificate, to the list of certificates trusted by this driver using `neo4j.v1.driver(.., { trustedCertificates:['path/to/certificate.crt']}). This is a security measure to protect against man-in-the-middle attacks. If you are just trying Neo4j out and are not concerned about encryption, simply disable it using `encrypted=\""+S.ENCRYPTION_OFF+'"` in the driver options. Socket responded with: '+t.authorizationError))});return t.on("error",e),t},TRUST_SYSTEM_CA_SIGNED_CERTIFICATES:function(l,n,e){var u={rejectUnauthorized:!1},t=v["default"].connect(l.port,l.host,u,function(){t.authorized?n():e((0,E.newError)("Server certificate is not trusted. If you trust the database you are connecting to, use TRUST_CUSTOM_CA_SIGNED_CERTIFICATES and add the signing certificate, or the server certificate, to the list of certificates trusted by this driver using `neo4j.v1.driver(.., { trustedCertificates:['path/to/certificate.crt']}). This is a security measure to protect against man-in-the-middle attacks. If you are just trying Neo4j out and are not concerned about encryption, simply disable it using `encrypted=\""+S.ENCRYPTION_OFF+'"` in the driver options. Socket responded with: '+t.authorizationError))});return t.on("error",e),t},TRUST_ON_FIRST_USE:function(n,e,u){console.log("`TRUST_ON_FIRST_USE` has been deprecated as option and will be removed in a future version of the driver. Please use `TRUST_ALL_CERTIFICATES` instead.");var r={rejectUnauthorized:!1},s=v["default"].connect(n.port,n.host,r,function(){var r=s.getPeerCertificate(!0);if(!r.raw)return void u((0,E.newError)('You are using a version of NodeJS that does not support trust-on-first use encryption. You can either upgrade NodeJS to a newer version, use `trust:TRUST_CUSTOM_CA_SIGNED_CERTIFICATES` in your driver config instead, or disable encryption using `encrypted:"'+S.ENCRYPTION_OFF+'"`.'));var a=l("crypto").createHash("sha512").update(r.raw).digest("hex"),f=n.knownHosts||g["default"].join(t(),".neo4j","known_hosts"),c=n.host+":"+n.port;i(c,f,function(l){l===a?e():null==l?o(c,f,a,function(l){return l?u(l):e()}):u((0,E.newError)("Database encryption certificate has changed, and no longer matches the certificate stored for "+c+" in `"+f+"`. As a security precaution, this driver will not automatically trust the new certificate, because doing so would allow an attacker to pretend to be the Neo4j instance we want to connect to. The certificate provided by the server looks like: "+r+". If you trust that this certificate is valid, simply remove the line starting with "+c+" in `"+f+'`, and the driver will update the file with the new certificate. You can configure which file the driver should use to store this information by setting `knownHosts` to another path in your driver configuration - and you can disable encryption there as well using `encrypted:"'+S.ENCRYPTION_OFF+'"`.')); -})});return s.on("error",u),s},TRUST_ALL_CERTIFICATES:function(l,n,e){var u={rejectUnauthorized:!1},t=v["default"].connect(l.port,l.host,u,function(){var l=t.getPeerCertificate();(0,S.isEmptyObjectOrNull)(l)?e((0,E.newError)('Secure connection was successful but server did not return any valid certificates. Such connection can not be trusted. If you are just trying Neo4j out and are not concerned about encryption, simply disable it using `encrypted="'+S.ENCRYPTION_OFF+'"` in the driver options. Socket responded with: '+t.authorizationError)):n()});return t.on("error",e),t}},A=function(){function l(n){(0,f["default"])(this,l);var e=this;this.id=M++,this.available=!0,this._pending=[],this._open=!0,this._error=null,this._handleConnectionError=this._handleConnectionError.bind(this),this._handleConnectionTerminated=this._handleConnectionTerminated.bind(this),this._encrypted=n.encrypted,this._conn=s(n,function(){if(e._open){e._conn.on("data",function(l){e.onmessage&&e.onmessage(new k.NodeBuffer(l))}),e._conn.on("error",e._handleConnectionError),e._conn.on("end",e._handleConnectionTerminated);var l=e._pending;e._pending=null;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:function(){return null};this._open=!1,this._conn?(this._conn.end(),this._conn.removeListener("end",this._handleConnectionTerminated),this._conn.on("end",l)):l()}}]),l}(),x={channel:A,available:!0};try{l.resolve("net")}catch(C){x={available:!1}}e["default"]=x},{"./../error":275,"./buf":279,"./util":296,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,crypto:185,fs:63,net:63,os:229,path:234,readline:63,tls:63}],281:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=l("./buf"),a=l("./../error"),f=l("./util"),c=function(){function l(n){(0,r["default"])(this,l),this._open=!0,this._pending=[],this._error=null,this._handleConnectionError=this._handleConnectionError.bind(this),this._encrypted=n.encrypted;var e="ws";if(n.encrypted===!0||n.encrypted===f.ENCRYPTION_ON){if(n.trust&&"TRUST_CUSTOM_CA_SIGNED_CERTIFICATES"!==n.trust)return void(this._error=(0,a.newError)("The browser version of this driver only supports one trust strategy, 'TRUST_CUSTOM_CA_SIGNED_CERTIFICATES'. "+n.trust+' is not supported. Please either use TRUST_CUSTOM_CA_SIGNED_CERTIFICATES or disable encryption by setting `encrypted:"'+f.ENCRYPTION_OFF+'"` in the driver configuration.'));e="wss"}this._url=e+"://"+n.host+":"+n.port,this._ws=new WebSocket(this._url),this._ws.binaryType="arraybuffer";var u=this;this._ws.onclose=function(l){l.wasClean||u._handleConnectionError()},this._ws.onopen=function(){var l=u._pending;u._pending=null;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:function(){return null};this._open=!1,this._ws.close(),this._ws.onclose=l}}]),l}(),h="undefined"!=typeof WebSocket,d={channel:c,available:h};e["default"]=d},{"./../error":275,"./buf":279,"./util":296,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],282:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.Dechunker=e.Chunker=void 0;var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("babel-runtime/helpers/possibleConstructorReturn"),c=u(f),h=l("babel-runtime/helpers/inherits"),d=u(h),p=l("./buf"),b=2,v=0,_=1400,y=function(l){function n(l,e){(0,o["default"])(this,n);var u=(0,c["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this,0));return u._bufferSize=e||_,u._ch=l,u._buffer=(0,p.alloc)(u._bufferSize),u._currentChunkStart=0,u._chunkOpen=!1,u}return(0,d["default"])(n,l),(0,a["default"])(n,[{key:"putUInt8",value:function(l,n){this._ensure(1),this._buffer.writeUInt8(n)}},{key:"putInt8",value:function(l,n){this._ensure(1),this._buffer.writeInt8(n)}},{key:"putFloat64",value:function(l,n){this._ensure(8),this._buffer.writeFloat64(n)}},{key:"putBytes",value:function(l,n){for(;n.remaining()>0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=(0,p.alloc)(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new p.CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();e.Chunker=y,e.Dechunker=m},{"./buf":279,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],283:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.EMPTY_CONNECTION_HOLDER=void 0;var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/possibleConstructorReturn"),o=u(i),s=l("babel-runtime/helpers/inherits"),a=u(s),f=l("babel-runtime/core-js/promise"),c=u(f),h=l("babel-runtime/helpers/classCallCheck"),d=u(h),p=l("babel-runtime/helpers/createClass"),b=u(p),v=l("../error"),_=function(){function l(n,e){(0,d["default"])(this,l),this._mode=n,this._connectionProvider=e,this._referenceCount=0,this._connectionPromise=c["default"].resolve(null)}return(0,b["default"])(l,[{key:"initializeConnection",value:function(){0===this._referenceCount&&(this._connectionPromise=this._connectionProvider.acquireConnection(this._mode)),this._referenceCount++}},{key:"getConnection",value:function(){return this._connectionPromise}},{key:"releaseConnection",value:function(){return 0===this._referenceCount?this._connectionPromise:(this._referenceCount--,0===this._referenceCount?this._releaseConnection(!0):this._connectionPromise)}},{key:"close",value:function(){return 0===this._referenceCount?this._connectionPromise:(this._referenceCount=0,this._releaseConnection(!1))}},{key:"_releaseConnection",value:function(l){return this._connectionPromise=this._connectionPromise.then(function(n){n&&(l?n.reset():n.resetAsync(),n.sync(),n._release())})["catch"](function(l){}),this._connectionPromise}}]),l}();e["default"]=_;var y=function(l){function n(){return(0,d["default"])(this,n),(0,o["default"])(this,(n.__proto__||(0,r["default"])(n)).apply(this,arguments))}return(0,a["default"])(n,l),(0,b["default"])(n,[{key:"initializeConnection",value:function(){}},{key:"getConnection",value:function(){return c["default"].reject((0,v.newError)("This connection holder does not serve connections"))}},{key:"releaseConnection",value:function(){return c["default"].resolve()}},{key:"close",value:function(){return c["default"].resolve()}}]),n}(_);e.EMPTY_CONNECTION_HOLDER=new y},{"../error":275,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],284:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.SingleConnectionProvider=e.LoadBalancer=e.DirectConnectionProvider=void 0;var t=l("babel-runtime/core-js/promise"),r=u(t),i=l("babel-runtime/core-js/object/get-prototype-of"),o=u(i),s=l("babel-runtime/helpers/possibleConstructorReturn"),a=u(s),f=l("babel-runtime/helpers/inherits"),c=u(f),h=l("babel-runtime/helpers/classCallCheck"),d=u(h),p=l("babel-runtime/helpers/createClass"),b=u(p),v=l("../error"),_=l("../driver"),y=l("../session"),m=u(y),g=l("./round-robin-array"),w=u(g),k=l("./routing-table"),S=u(k),E=l("./rediscovery"),M=u(E),I=function(){function l(){(0,d["default"])(this,l)}return(0,b["default"])(l,[{key:"acquireConnection",value:function(l){throw new Error("Abstract method")}},{key:"_withAdditionalOnErrorCallback",value:function(l,n){return l["catch"](function(l){n(l)}),l}}]),l}(),j=(e.DirectConnectionProvider=function(l){function n(l,e,u){(0,d["default"])(this,n);var t=(0,a["default"])(this,(n.__proto__||(0,o["default"])(n)).call(this));return t._address=l,t._connectionPool=e,t._driverOnErrorCallback=u,t}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"acquireConnection",value:function(l){var n=this._connectionPool.acquire(this._address),e=r["default"].resolve(n);return this._withAdditionalOnErrorCallback(e,this._driverOnErrorCallback)}}]),n}(I),e.LoadBalancer=function(l){function n(l,e,u){(0,d["default"])(this,n);var t=(0,a["default"])(this,(n.__proto__||(0,o["default"])(n)).call(this));return t._routingTable=new S["default"](new w["default"]([l])),t._rediscovery=new M["default"],t._connectionPool=e,t._driverOnErrorCallback=u,t}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"acquireConnection",value:function(l){var n=this,e=this._freshRoutingTable().then(function(e){if(l===_.READ)return n._acquireConnectionToServer(e.readers,"read");if(l===_.WRITE)return n._acquireConnectionToServer(e.writers,"write");throw(0,v.newError)("Illegal mode "+l)});return this._withAdditionalOnErrorCallback(e,this._driverOnErrorCallback)}},{key:"forget",value:function(l){this._routingTable.forget(l),this._connectionPool.purge(l)}},{key:"forgetWriter",value:function(l){this._routingTable.forgetWriter(l)}},{key:"_acquireConnectionToServer",value:function(l,n){var e=l.next();return e?this._connectionPool.acquire(e):r["default"].reject((0,v.newError)("No "+n+" servers available",v.SESSION_EXPIRED))}},{key:"_freshRoutingTable",value:function(){var l=this._routingTable;return l.isStale()?this._refreshRoutingTable(l):r["default"].resolve(l)}},{key:"_refreshRoutingTable",value:function(l){var n=this,e=l.routers.toArray(),u=e.reduce(function(u,t,r){return u.then(function(u){if(u){if(!u.writers.isEmpty())return u}else{var i=r-1;n._forgetRouter(l,e,i)}var o=n._createSessionForRediscovery(t);return n._rediscovery.lookupRoutingTableOnRouter(o,t)})},r["default"].resolve(null));return u.then(function(u){if(u&&!u.writers.isEmpty())return n._updateRoutingTable(u),u;var t=e.length-1;throw n._forgetRouter(l,e,t),(0,v.newError)("Could not perform discovery. No routing servers available.",v.SERVICE_UNAVAILABLE)})}},{key:"_createSessionForRediscovery",value:function(l){var n=this._connectionPool.acquire(l),e=r["default"].resolve(n),u=new j(e);return new m["default"](_.READ,u)}},{key:"_updateRoutingTable",value:function(l){var n=this,e=this._routingTable,u=e.serversDiff(l);u.forEach(function(l){return n._connectionPool.purge(l)}),this._routingTable=l}},{key:"_forgetRouter",value:function(l,n,e){var u=n[e];u&&l.forgetRouter(u)}}]),n}(I),e.SingleConnectionProvider=function(l){function n(l){(0,d["default"])(this,n);var e=(0,a["default"])(this,(n.__proto__||(0,o["default"])(n)).call(this));return e._connectionPromise=l,e}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"acquireConnection",value:function(l){var n=this._connectionPromise;return this._connectionPromise=null,n}}]),n}(I))},{"../driver":274,"../error":275,"../session":301,"./rediscovery":290,"./round-robin-array":291,"./routing-table":292,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],285:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n=l.match(V)[1]||"";return n.toLowerCase()}function r(l){return l.match(V)[2]}function i(l){return l.match(V)[3]}function o(l){return l.match(V)[4]}function s(l,n){if(H){for(var e=2;e1&&void 0!==arguments[1]?arguments[1]:{},e=n.channel||A,u=i(l),t=o(l)||7687,r=u+":"+t;return new X(new e({host:i(l),port:o(l)||7687,encrypted:null==n.encrypted?(0,S["default"])("trust_all_certificates"):n.encrypted,trust:n.trust||((0,S["default"])("trust_all_certificates")?"TRUST_ALL_CERTIFICATES":"TRUST_CUSTOM_CA_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}),r)}Object.defineProperty(e,"__esModule",{value:!0}),e.Connection=e.parseUrl=e.parseScheme=e.connect=void 0;var c=l("babel-runtime/helpers/classCallCheck"),h=u(c),d=l("babel-runtime/helpers/createClass"),p=u(d),b=l("babel-runtime/core-js/json/stringify"),v=u(b),_=l("./ch-websocket"),y=u(_),m=l("./ch-node"),g=u(m),w=l("./chunking"),k=l("./features"),S=u(k),E=l("./packstream"),M=l("./buf"),I=l("../graph-types"),j=l("./../error"),A=void 0;if(g["default"].available)A=g["default"].channel;else{if(!y["default"].available)throw(0,j.newError)("Fatal: No compatible transport available. Need to run on a platform with the WebSocket API.");A=y["default"].channel}var x=1,C=14,R=15,B=16,O=47,T=63,P=112,U=113,N=126,L=127,D=78,F=82,q=114,z=80,K=1616949271,H=!1,V=new RegExp(["([^/]+//)?","(([^:/?#]*)","(?::([0-9]+))?)",".*"].join("")),Y={onNext:a,onCompleted:a,onError:a},W={node:function(l,n){return new I.Node(l.unpack(n),l.unpack(n),l.unpack(n))},rel:function(l,n){return new I.Relationship(l.unpack(n),l.unpack(n),l.unpack(n),l.unpack(n),l.unpack(n))},unboundRel:function(l,n){return new I.UnboundRelationship(l.unpack(n),l.unpack(n),l.unpack(n))},path:function(l,n){for(var e=l.unpack(n),u=l.unpack(n),t=l.unpack(n),r=e[0],i=[],o=0;o0?(f=u[s-1],f instanceof I.UnboundRelationship&&(u[s-1]=f=f.bind(r.identity,a.identity))):(f=u[-s-1],f instanceof I.UnboundRelationship&&(u[-s-1]=f=f.bind(a.identity,r.identity))),i.push(new I.PathSegment(r,f,a)),r=a}return new I.Path(e[0],e[e.length-1],i)}},X=function(){function l(n,e){(0,h["default"])(this,l),this.url=e,this.server={address:e},this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new w.Dechunker,this._chunker=new w.Chunker(n),this._packer=new E.Packer(this._chunker),this._unpacker=new E.Unpacker,this._isHandlingFailure=!1,this._currentFailure=null,this._isBroken=!1,this._unpacker.structMappers[D]=W.node,this._unpacker.structMappers[F]=W.rel,this._unpacker.structMappers[q]=W.unboundRel,this._unpacker.structMappers[z]=W.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,j.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,j.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var t=(0,M.alloc)(20);t.writeInt32(K),t.writeInt32(1),t.writeInt32(0),t.writeInt32(0),t.writeInt32(0),t.reset(),this._ch.write(t)}return(0,p["default"])(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this,e=l.fields[0];switch(l.signature){case U:s("S","RECORD",l),this._currentObserver.onNext(e);break;case P:s("S","SUCCESS",l);try{this._currentObserver.onCompleted(e)}finally{this._currentObserver=this._pendingObservers.shift()}break;case L:s("S","FAILURE",l);try{this._currentFailure=(0,j.newError)(e.message,e.code),this._currentObserver.onError(this._currentFailure)}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||(this._isHandlingFailure=!0,this._ackFailure({onNext:a,onError:a,onCompleted:function(){n._isHandlingFailure=!1,n._currentFailure=null}}))}break;case N:s("S","IGNORED",l);try{this._currentFailure&&this._currentObserver.onError?this._currentObserver.onError(this._currentFailure):this._currentObserver.onError&&this._currentObserver.onError(e)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,j.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,e){var u=this;s("C","INIT",l,n),this._queueObserver(e),this._packer.packStruct(x,[this._packable(l),this._packable(n)],function(l){return u._handleFatalError(l)}),this._chunker.messageBoundary(),this.sync()}},{key:"run",value:function(l,n,e){var u=this;s("C","RUN",l,n),this._queueObserver(e),this._packer.packStruct(B,[this._packable(l),this._packable(n)],function(l){return u._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){var n=this;s("C","PULL_ALL"),this._queueObserver(l),this._packer.packStruct(T,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){var n=this;s("C","DISCARD_ALL"),this._queueObserver(l),this._packer.packStruct(O,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"resetAsync",value:function(l){var n=this;s("C","RESET_ASYNC"),this._isHandlingFailure=!0;var e=this,u={onNext:l?l.onNext:a,onError:l?l.onError:a,onCompleted:function(){e._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(u),this._packer.packStruct(R,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"reset",value:function(l){var n=this;s("C","RESET"),this._queueObserver(l),this._packer.packStruct(R,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){var n=this;s("C","ACK_FAILURE"),this._queueObserver(l),this._packer.packStruct(C,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||Y,l.onCompleted=l.onCompleted||a,l.onError=l.onError||a,l.onNext=l.onNext||a,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"isEncrypted",value:function(){return this._ch.isEncrypted()}},{key:"close",value:function(l){this._ch.close(l)}},{key:"_packable",value:function(l){var n=this;return this._packer.packable(l,function(l){return n._handleFatalError(l)})}},{key:"setServerVersion",value:function(l){this.server.version=l}}]),l}();e.connect=f,e.parseScheme=t,e.parseUrl=r,e.Connection=X},{"../graph-types":276,"./../error":275,"./buf":279,"./ch-node":280,"./ch-websocket":281,"./chunking":282,"./features":286,"./packstream":288,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],286:[function(l,n,e){"use strict";function u(l){return t[l]&&t[l]()}Object.defineProperty(e,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate,e=n.length;return e>=1}catch(u){return!1}},trust_all_certificates:function(){try{l("tls").TLSSocket.prototype.getPeerCertificate;return!0}catch(n){return!1}}};e["default"]=u},{tls:63}],287:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/json/stringify"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("./round-robin-array"),c=u(f),h=l("../error"),d=l("../integer"),p=u(d),b="CALL dbms.cluster.routing.getServers",v="Neo.ClientError.Procedure.ProcedureNotFound",_=function(){function l(){(0,o["default"])(this,l)}return(0,a["default"])(l,[{key:"callGetServers",value:function(l,n){return l.run(b).then(function(n){return l.close(),n.records})["catch"](function(l){if(l.code===v)throw(0,h.newError)("Server "+n+" could not perform routing. Make sure you are connecting to a causal cluster",h.SERVICE_UNAVAILABLE);return null})}},{key:"parseTtl",value:function(l,n){try{var e=(0,d["int"])(Date.now()),u=l.get("ttl").multiply(1e3).add(e);return u.lessThan(e)?p["default"].MAX_VALUE:u}catch(t){throw(0,h.newError)("Unable to parse TTL entry from router "+n+" from record:\n"+(0,r["default"])(l),h.PROTOCOL_ERROR)}}},{key:"parseServers",value:function(l,n){try{var e=l.get("servers"),u=new c["default"],t=new c["default"],i=new c["default"];return e.forEach(function(l){var n=l.role,e=l.addresses;if("ROUTE"===n)u.pushAll(e);else if("WRITE"===n)i.pushAll(e);else{if("READ"!==n)throw(0,h.newError)('Unknown server role "'+n+'"',h.PROTOCOL_ERROR);t.pushAll(e)}}),{routers:u,readers:t,writers:i}}catch(o){throw(0,h.newError)("Unable to parse servers entry from router "+n+" from record:\n"+(0,r["default"])(l),h.PROTOCOL_ERROR)}}}]),l}();e["default"]=_},{"../error":275,"../integer":278,"./round-robin-array":291,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],288:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.Structure=e.Unpacker=e.Packer=void 0;var t=l("babel-runtime/core-js/object/keys"),r=u(t),i=l("babel-runtime/helpers/typeof"),o=u(i),s=l("babel-runtime/helpers/classCallCheck"),a=u(s),f=l("babel-runtime/helpers/createClass"),c=u(f),h=l("./utf8"),d=u(h),p=l("../integer"),b=u(p),v=l("./../error"),_=128,y=144,m=160,g=176,w=192,k=193,S=194,E=195,M=200,I=201,j=202,A=203,x=208,C=209,R=210,B=212,O=213,T=214,P=216,U=217,N=218,L=220,D=221,F=function(){function l(n,e){(0,a["default"])(this,l),this.signature=n,this.fields=e}return(0,c["default"])(l,[{key:"toString",value:function(){for(var l="",n=0;n0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),q=function(){function l(n){(0,a["default"])(this,l),this._ch=n}return(0,c["default"])(l,[{key:"packable",value:function(l,n){var e=this;if(null===l)return function(){return e._ch.writeUInt8(w)};if(l===!0)return function(){return e._ch.writeUInt8(E)};if(l===!1)return function(){return e._ch.writeUInt8(S)};if("number"==typeof l)return function(){return e.packFloat(l)};if("string"==typeof l)return function(){return e.packString(l,n)};if((0,p.isInt)(l))return function(){return e.packInteger(l)};if(l instanceof Array)return function(){e.packListHeader(l.length,n);for(var u=0;u>0),this._ch.writeUInt8(u%256),this._ch.writeBytes(e)):u<4294967296?(this._ch.writeUInt8(R),this._ch.writeUInt8((u/16777216>>0)%256),this._ch.writeUInt8((u/65536>>0)%256),this._ch.writeUInt8((u/256>>0)%256),this._ch.writeUInt8(u%256),this._ch.writeBytes(e)):n((0,v.newError)("UTF-8 strings of size "+u+" are not supported"))}},{key:"packListHeader",value:function(l,n){l<16?this._ch.writeUInt8(y|l):l<256?(this._ch.writeUInt8(B),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(O),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(T),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,v.newError)("Lists of size "+l+" are not supported"))}},{key:"packMapHeader",value:function(l,n){l<16?this._ch.writeUInt8(m|l):l<256?(this._ch.writeUInt8(P),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(U),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(N),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,v.newError)("Maps of size "+l+" are not supported"))}},{key:"packStructHeader",value:function(l,n,e){l<16?(this._ch.writeUInt8(g|l),this._ch.writeUInt8(n)):l<256?(this._ch.writeUInt8(L),this._ch.writeUInt8(l),this._ch.writeUInt8(n)):l<65536?(this._ch.writeUInt8(D),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):e((0,v.newError)("Structures of size "+l+" are not supported"))}}]),l}(),z=function(){function l(){(0,a["default"])(this,l),this.structMappers={}}return(0,c["default"])(l,[{key:"unpackList",value:function(l,n){for(var e=[],u=0;u=0&&n<128)return(0,p["int"])(n);if(n>=240&&n<256)return(0,p["int"])(n-256);if(n==M)return(0,p["int"])(l.readInt8());if(n==I)return(0,p["int"])(l.readInt16());if(n==j){var e=l.readInt32();return(0,p["int"])(e)}if(n==A){var u=l.readInt32(),t=l.readInt32();return new b["default"](t,u)}if(n==x)return d["default"].decode(l,l.readUInt8());if(n==C)return d["default"].decode(l,l.readUInt16());if(n==R)return d["default"].decode(l,l.readUInt32());if(n==B)return this.unpackList(l.readUInt8(),l);if(n==O)return this.unpackList(l.readUInt16(),l);if(n==T)return this.unpackList(l.readUInt32(),l);if(n==P)return this.unpackMap(l.readUInt8(),l);if(n==U)return this.unpackMap(l.readUInt16(),l);if(n==N)return this.unpackMap(l.readUInt32(),l);if(n==L)return this.unpackStruct(l.readUInt8(),l);if(n==D)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return d["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,v.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();e.Packer=q,e.Unpacker=z,e.Structure=F},{"../integer":278,"./../error":275,"./utf8":295,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/typeof":34}],289:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=function(){function l(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return!0},u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0},t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:50;(0,r["default"])(this,l),this._create=n,this._destroy=e,this._validate=u,this._maxIdle=t, -this._pools={},this._release=this._release.bind(this)}return(0,o["default"])(l,[{key:"acquire",value:function(l){var n=void 0,e=this._pools[l];for(e||(e=[],this._pools[l]=e);e.length;){if(n=e.pop(),this._validate(n))return n;this._destroy(n)}return this._create(l,this._release)}},{key:"purge",value:function(l){for(var n=void 0,e=this._pools[l]||[];e.length;)n=e.pop(),this._destroy(n);delete this._pools[l]}},{key:"purgeAll",value:function(){for(var l in this._pools.keys)this._pools.hasOwnPropertykey&&this.purge(l)}},{key:"has",value:function(l){return l in this._pools}},{key:"_release",value:function(l,n){var e=this._pools[l];e&&(e.length>=this._maxIdle||!this._validate(n)?this._destroy(n):e.push(n))}}]),l}();e["default"]=s},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],290:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/json/stringify"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("./get-servers-util"),c=u(f),h=l("./routing-table"),d=u(h),p=l("../error"),b=function(){function l(n){(0,o["default"])(this,l),this._getServersUtil=n||new c["default"]}return(0,a["default"])(l,[{key:"lookupRoutingTableOnRouter",value:function(n,e){var u=this;return this._getServersUtil.callGetServers(n,e).then(function(n){if(null===n)return null;if(1!==n.length)throw(0,p.newError)('Illegal response from router "'+e+'". Received '+n.length+" records but expected only one.\n"+(0,r["default"])(n),p.PROTOCOL_ERROR);var t=n[0],i=u._getServersUtil.parseTtl(t,e),o=u._getServersUtil.parseServers(t,e),s=o.routers,a=o.readers,f=o.writers;return l._assertNonEmpty(s,"routers",e),l._assertNonEmpty(a,"readers",e),new d["default"](s,a,f,i)})}}],[{key:"_assertNonEmpty",value:function(l,n,e){if(l.isEmpty())throw(0,p.newError)("Received no "+n+" from router "+e,p.PROTOCOL_ERROR)}}]),l}();e["default"]=b},{"../error":275,"./get-servers-util":287,"./routing-table":292,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],291:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=function(){function l(n){(0,r["default"])(this,l),this._items=n||[],this._offset=0}return(0,o["default"])(l,[{key:"next",value:function(){if(this.isEmpty())return null;var l=this._offset%this.size();return this._offset++,this._items[l]}},{key:"pushAll",value:function(l){if(!Array.isArray(l))throw new TypeError("Array expected but got: "+l);Array.prototype.push.apply(this._items,l)}},{key:"isEmpty",value:function(){return 0===this._items.length}},{key:"size",value:function(){return this._items.length}},{key:"toArray",value:function(){return this._items}},{key:"remove",value:function(l){this._items=this._items.filter(function(n){return n!==l})}}]),l}();e["default"]=s},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],292:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/toConsumableArray"),r=u(t),i=l("babel-runtime/core-js/array/from"),o=u(i),s=l("babel-runtime/core-js/set"),a=u(s),f=l("babel-runtime/helpers/classCallCheck"),c=u(f),h=l("babel-runtime/helpers/createClass"),d=u(h),p=l("../integer"),b=l("./round-robin-array"),v=u(b),_=1,y=function(){function l(n,e,u,t){(0,c["default"])(this,l),this.routers=n||new v["default"],this.readers=e||new v["default"],this.writers=u||new v["default"],this.expirationTime=t||(0,p["int"])(0)}return(0,d["default"])(l,[{key:"forget",value:function(l){this.readers.remove(l),this.writers.remove(l)}},{key:"forgetRouter",value:function(l){this.routers.remove(l)}},{key:"forgetWriter",value:function(l){this.writers.remove(l)}},{key:"serversDiff",value:function(l){var n=new a["default"](this._allServers()),e=l._allServers();return e.forEach(function(l){return n["delete"](l)}),(0,o["default"])(n)}},{key:"isStale",value:function(){return this.expirationTime.lessThan(Date.now())||this.routers.size()<=_||this.readers.isEmpty()||this.writers.isEmpty()}},{key:"_allServers",value:function(){return[].concat((0,r["default"])(this.routers.toArray()),(0,r["default"])(this.readers.toArray()),(0,r["default"])(this.writers.toArray()))}}]),l}();e["default"]=y},{"../integer":278,"./round-robin-array":291,"babel-runtime/core-js/array/from":15,"babel-runtime/core-js/set":25,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/toConsumableArray":33}],293:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=l("../record"),a=u(s),f=function(){function l(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(l){return l};(0,r["default"])(this,l),this._fieldKeys=null,this._fieldLookup=null,this._queuedRecords=[],this._tail=null,this._error=null,this._hasFailed=!1,this._errorTransformer=n}return(0,o["default"])(l,[{key:"onNext",value:function(l){var n=new a["default"](this._fieldKeys,l,this._fieldLookup);this._observer?this._observer.onNext(n):this._queuedRecords.push(n)}},{key:"onCompleted",value:function(l){if(null===this._fieldKeys){if(this._fieldKeys=[],this._fieldLookup={},l.fields&&l.fields.length>0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();e["default"]=f},{"../record":297,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],294:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){return l||0===l?l:n}Object.defineProperty(e,"__esModule",{value:!0});var r=l("babel-runtime/core-js/promise"),i=u(r),o=l("babel-runtime/helpers/classCallCheck"),s=u(o),a=l("babel-runtime/helpers/createClass"),f=u(a),c=l("../error"),h=3e4,d=1e3,p=2,b=.2,v=function(){function l(n,e,u,r){(0,s["default"])(this,l),this._maxRetryTimeMs=t(n,h),this._initialRetryDelayMs=t(e,d),this._multiplier=t(u,p),this._jitterFactor=t(r,b),this._inFlightTimeoutIds=[],this._verifyAfterConstruction()}return(0,f["default"])(l,[{key:"execute",value:function(l,n){var e=this;return new i["default"](function(u,t){e._executeTransactionInsidePromise(l,n,u,t)})["catch"](function(u){var t=Date.now(),r=e._initialRetryDelayMs;return e._retryTransactionPromise(l,n,u,t,r)})}},{key:"close",value:function(){this._inFlightTimeoutIds.forEach(function(l){return clearTimeout(l)}),this._inFlightTimeoutIds=[]}},{key:"_retryTransactionPromise",value:function(n,e,u,t,r){var o=this,s=Date.now()-t;return s>this._maxRetryTimeMs||!l._canRetryOn(u)?i["default"].reject(u):new i["default"](function(l,u){var t=o._computeDelayWithJitter(r),i=setTimeout(function(){o._inFlightTimeoutIds=o._inFlightTimeoutIds.filter(function(l){return l!==i}),o._executeTransactionInsidePromise(n,e,l,u)},t);o._inFlightTimeoutIds.push(i)})["catch"](function(l){var u=r*o._multiplier;return o._retryTransactionPromise(n,e,l,t,u)})}},{key:"_executeTransactionInsidePromise",value:function(l,n,e,u){try{var t=l(),r=n(t),o=i["default"].resolve(r);o.then(function(l){t.isOpen()?t.commit().then(function(){e(l)})["catch"](function(l){u(l)}):e(l)})["catch"](function(l){u(l)})}catch(s){u(s)}}},{key:"_computeDelayWithJitter",value:function(l){var n=l*this._jitterFactor,e=l-n,u=l+n;return Math.random()*(u-e)+e}},{key:"_verifyAfterConstruction",value:function(){if(this._maxRetryTimeMs<0)throw(0,c.newError)("Max retry time should be >= 0: "+this._maxRetryTimeMs);if(this._initialRetryDelayMs<0)throw(0,c.newError)("Initial retry delay should >= 0: "+this._initialRetryDelayMs);if(this._multiplier<1)throw(0,c.newError)("Multiplier should be >= 1.0: "+this._multiplier);if(this._jitterFactor<0||this._jitterFactor>1)throw(0,c.newError)("Jitter factor should be in [0.0, 1.0]: "+this._jitterFactor)}}],[{key:"_canRetryOn",value:function(l){return l&&l.code&&(l.code===c.SERVICE_UNAVAILABLE||l.code===c.SESSION_EXPIRED||l.code.indexOf("TransientError")>=0)}}]),l}();e["default"]=v},{"../error":275,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],295:[function(l,n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var u=l("./buf"),t=l("string_decoder"),r=l("./../error"),i={};try{l.resolve("buffer");var o=new t.StringDecoder("utf8"),s=l("buffer");i={encode:function(l){return new u.NodeBuffer(new s.Buffer(l,"UTF-8"))},decode:function(l,n){if(l instanceof u.NodeBuffer){var e=l.position,t=e+n;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof u.CombinedBuffer){var i=d(l,n,function(l){return o.write(l._buffer)},function(){return o.end()});return i}throw(0,r.newError)("Don't know how to decode strings from `"+l+"`.")}}}catch(a){var f=l("../../external/text-encoding/index"),c=new f.TextEncoder("utf-8"),h=new f.TextDecoder("utf-8");i={encode:function(l){return new u.HeapBuffer(c.encode(l).buffer)},decode:function(l,n){if(l instanceof u.HeapBuffer)return h.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=(0,u.alloc)(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var u=Math.min(n.length-r,t),i=n.readSlice(u);return n._updatePos(u),t=Math.max(t-i.length,0),r=0,l+e(i)},"");return i+u()};e["default"]=i},{"../../external/text-encoding/index":270,"./../error":275,"./buf":279,buffer:66,string_decoder:267}],296:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){if(r(l))return!0;if(!i(l))return!1;for(var n in l)if(l.hasOwnProperty(n))return!1;return!0}function r(l){return null===l}function i(l){var n="undefined"==typeof l?"undefined":(0,h["default"])(l);return"function"===n||"object"===n&&Boolean(l)}function o(l,n){if(!s(l))throw new TypeError(n+" expected to be string but was: "+(0,f["default"])(l));return l}function s(l){return"[object String]"===Object.prototype.toString.call(l)}Object.defineProperty(e,"__esModule",{value:!0}),e.ENCRYPTION_OFF=e.ENCRYPTION_ON=e.assertString=e.isEmptyObjectOrNull=void 0;var a=l("babel-runtime/core-js/json/stringify"),f=u(a),c=l("babel-runtime/helpers/typeof"),h=u(c),d="ENCRYPTION_ON",p="ENCRYPTION_OFF";e.isEmptyObjectOrNull=t,e.assertString=o,e.ENCRYPTION_ON=d,e.ENCRYPTION_OFF=p},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/typeof":34}],297:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n={};return l.forEach(function(l,e){n[l]=e}),n}Object.defineProperty(e,"__esModule",{value:!0});var r=l("babel-runtime/helpers/classCallCheck"),i=u(r),o=l("babel-runtime/helpers/createClass"),s=u(o),a=l("./error"),f=function(){function l(n,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;(0,i["default"])(this,l),this.keys=n,this.length=n.length,this._fields=e,this._fieldLookup=u||t(n)}return(0,s["default"])(l,[{key:"forEach",value:function(l){for(var n=0;nthis._fields.length-1||n<0)throw(0,a.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}},{key:"has",value:function(l){return"number"==typeof l?l>=0&&l0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),b=function(){function l(n){(0,o["default"])(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return(0,a["default"])(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),v=function g(l){(0,o["default"])(this,g),l&&(this.address=l.address,this.version=l.version)},_={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};e.statementType=_,e["default"]=c},{"./integer":278,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],299:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/promise"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("./result-summary"),c=u(f),h=l("./internal/connection-holder"),d=function(){function l(n,e,u,t,r){(0,o["default"])(this,l),this._streamObserver=n,this._p=null,this._statement=e,this._parameters=u||{},this._metaSupplier=t||function(){return{}},this._connectionHolder=r||h.EMPTY_CONNECTION_HOLDER}return(0,a["default"])(l,[{key:"_createPromise",value:function(){if(!this._p){var l=this;this._p=new r["default"](function(n,e){var u=[],t={onNext:function(l){u.push(l)},onCompleted:function(l){n({records:u,summary:l})},onError:function(l){e(l)}};l.subscribe(t)})}}},{key:"then",value:function(l,n){return this._createPromise(),this._p.then(l,n)}},{key:"catch",value:function(l){return this._createPromise(),this._p["catch"](l)}},{key:"subscribe",value:function(l){var n=this,e=l.onCompleted,u=this,t=function(t){var r=u._metaSupplier();for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);var o=new c["default"](n._statement,n._parameters,t);u._connectionHolder.releaseConnection().then(function(){e.call(l,o)})};l.onCompleted=t;var r=l.onError||function(l){console.log("Uncaught error when processing result: "+l)},i=function(n){u._connectionHolder.releaseConnection().then(function(){r.call(l,n)})};l.onError=i,this._streamObserver.subscribe(l)}}]),l}();e["default"]=d},{"./internal/connection-holder":283,"./result-summary":298,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],300:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("babel-runtime/helpers/possibleConstructorReturn"),c=u(f),h=l("babel-runtime/helpers/inherits"),d=u(h),p=l("./session"),b=u(p),v=l("./driver"),_=l("./error"),y=l("./internal/connection-providers"),m=function(l){function n(l,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return(0,o["default"])(this,n),(0,c["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this,l,e,u,n._validateConfig(t)))}return(0,d["default"])(n,l),(0,a["default"])(n,[{key:"_createConnectionProvider",value:function(l,n,e){return new y.LoadBalancer(l,n,e)}},{key:"_createSession",value:function(l,n,e,u){var t=this;return new g(l,n,e,u,function(l,n){if(l.code===_.SERVICE_UNAVAILABLE||l.code===_.SESSION_EXPIRED)return n&&t._connectionProvider.forget(n.url),l;if("Neo.ClientError.Cluster.NotALeader"===l.code){var e="UNKNOWN";return n&&(e=n.url,t._connectionProvider.forgetWriter(n.url)),(0,_.newError)("No longer possible to write to server at "+e,_.SESSION_EXPIRED)}return l})}}],[{key:"_validateConfig",value:function(l){if("TRUST_ON_FIRST_USE"===l.trust)throw(0,_.newError)("The chosen trust mode is not compatible with a routing driver");return l}}]),n}(v.Driver),g=function(l){function n(l,e,u,t,i){(0,o["default"])(this,n);var s=(0,c["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this,l,e,u,t));return s._onFailedConnection=i,s}return(0,d["default"])(n,l),(0,a["default"])(n,[{key:"_onRunFailure",value:function(){return this._onFailedConnection}}]),n}(b["default"]);e["default"]=m},{"./driver":274,"./error":275,"./internal/connection-providers":284,"./session":301,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],301:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n=l&&l.maxTransactionRetryTime?l.maxTransactionRetryTime:null;return new T["default"](n)}Object.defineProperty(e,"__esModule",{value:!0});var r=l("babel-runtime/core-js/object/assign"),i=u(r),o=l("babel-runtime/core-js/object/get-prototype-of"),s=u(o),a=l("babel-runtime/helpers/possibleConstructorReturn"),f=u(a),c=l("babel-runtime/helpers/get"),h=u(c),d=l("babel-runtime/helpers/inherits"),p=u(d),b=l("babel-runtime/helpers/typeof"),v=u(b),_=l("babel-runtime/helpers/classCallCheck"),y=u(_),m=l("babel-runtime/helpers/createClass"),g=u(m),w=l("./internal/stream-observer"),k=u(w),S=l("./result"),E=u(S),M=l("./transaction"),I=u(M),j=l("./error"),A=l("./internal/util"),x=l("./internal/connection-holder"),C=u(x),R=l("./driver"),B=u(R),O=l("./internal/transaction-executor"),T=u(O),P=function(){function l(n,e,u,r){(0,y["default"])(this,l),this._mode=n,this._readConnectionHolder=new C["default"](R.READ,e),this._writeConnectionHolder=new C["default"](R.WRITE,e),this._open=!0,this._hasTx=!1,this._lastBookmark=u,this._transactionExecutor=t(r)}return(0,g["default"])(l,[{key:"run",value:function(l){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"object"===("undefined"==typeof l?"undefined":(0,v["default"])(l))&&l.text&&(n=l.parameters||{},l=l.text),(0,A.assertString)(l,"Cypher statement");var e=new U(this._onRunFailure()),u=this._connectionHolderWithMode(this._mode);return this._hasTx?e.onError((0,j.newError)("Statements cannot be run directly on a session with an open transaction; either run from within the transaction or use a different session.")):(u.initializeConnection(),u.getConnection().then(function(u){e.resolveConnection(u),u.run(l,n,e),u.pullAll(e),u.sync()})["catch"](function(l){return e.onError(l)})),new E["default"](e,l,n,function(){return e.meta()},u)}},{key:"beginTransaction",value:function(l){return this._beginTransaction(this._mode,l)}},{key:"_beginTransaction",value:function(l,n){var e=this;if(n&&((0,A.assertString)(n,"Bookmark"),this._updateBookmark(n)),this._hasTx)throw(0,j.newError)("You cannot begin a transaction on a session with an open transaction; either run from within the transaction or use a different session.");var u=B["default"]._validateSessionMode(l),t=this._connectionHolderWithMode(u);return t.initializeConnection(),this._hasTx=!0,new I["default"](t,function(){e._hasTx=!1},this._onRunFailure(),this._lastBookmark,this._updateBookmark.bind(this))}},{key:"lastBookmark",value:function(){return this._lastBookmark}},{key:"readTransaction",value:function(l){return this._runTransaction(R.READ,l)}},{key:"writeTransaction",value:function(l){return this._runTransaction(R.WRITE,l)}},{key:"_runTransaction",value:function(l,n){var e=this;return this._transactionExecutor.execute(function(){return e._beginTransaction(l,e.lastBookmark())},n)}},{key:"_updateBookmark",value:function(l){l&&(this._lastBookmark=l)}},{key:"close",value:function(){var l=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return null};this._open?(this._open=!1,this._transactionExecutor.close(),this._readConnectionHolder.close().then(function(){l._writeConnectionHolder.close().then(function(){n()})})):n()}},{key:"_onRunFailure",value:function(){return function(l){return l}}},{key:"_connectionHolderWithMode",value:function(l){if(l===R.READ)return this._readConnectionHolder;if(l===R.WRITE)return this._writeConnectionHolder;throw(0,j.newError)("Unknown access mode: "+l)}}]),l}(),U=function(l){function n(l){(0,y["default"])(this,n);var e=(0,f["default"])(this,(n.__proto__||(0,s["default"])(n)).call(this,l));return e._meta={},e}return(0,p["default"])(n,l),(0,g["default"])(n,[{key:"onCompleted",value:function(l){(0,h["default"])(n.prototype.__proto__||(0,s["default"])(n.prototype),"onCompleted",this).call(this,l);for(var e in l)l.hasOwnProperty(e)&&(this._meta[e]=l[e])}},{key:"meta",value:function(){var l={server:this._conn.server};return(0,i["default"])({},this._meta,l)}}]),n}(k["default"]);e["default"]=P},{"./driver":274,"./error":275,"./internal/connection-holder":283,"./internal/stream-observer":293,"./internal/transaction-executor":294,"./internal/util":296,"./result":299,"./transaction":302,"babel-runtime/core-js/object/assign":17,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],302:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l,n,e){return n.getConnection().then(function(n){e.resolveConnection(n),n.run(l,{},e),n.pullAll(e),n.sync()})["catch"](function(l){return e.onError(l)}),new j["default"](e,l,{},o,n)}function r(l,n,e,u){return new j["default"](l,n,e,u,x.EMPTY_CONNECTION_HOLDER)}function i(l,n,e){return new j["default"](l,n,e,o,x.EMPTY_CONNECTION_HOLDER)}function o(){return{}}Object.defineProperty(e,"__esModule",{value:!0});var s=l("babel-runtime/core-js/object/get-prototype-of"),a=u(s),f=l("babel-runtime/helpers/possibleConstructorReturn"),c=u(f),h=l("babel-runtime/helpers/get"),d=u(h),p=l("babel-runtime/helpers/inherits"),b=u(p),v=l("babel-runtime/core-js/promise"),_=u(v),y=l("babel-runtime/helpers/typeof"),m=u(y),g=l("babel-runtime/helpers/classCallCheck"),w=u(g),k=l("babel-runtime/helpers/createClass"),S=u(k),E=l("./internal/stream-observer"),M=u(E),I=l("./result"),j=u(I),A=l("./internal/util"),x=l("./internal/connection-holder"),C=function(){function l(n,e,u,t,r){(0,w["default"])(this,l),this._connectionHolder=n;var i=new R(this),o={};t&&(o={bookmark:t}),this._connectionHolder.getConnection().then(function(l){i.resolveConnection(l),l.run("BEGIN",o,i),l.pullAll(i)})["catch"](function(l){return i.onError(l)}),this._state=B.ACTIVE,this._onClose=e,this._errorTransformer=u,this._onBookmark=r||function(){}}return(0,S["default"])(l,[{key:"run",value:function(l,n){return"object"===("undefined"==typeof l?"undefined":(0,m["default"])(l))&&l.text&&(n=l.parameters||{},l=l.text),(0,A.assertString)(l,"Cypher statement"),this._state.run(this._connectionHolder,new R(this),l,n)}},{key:"commit",value:function(){var l=this._state.commit(this._connectionHolder,new R(this));return this._state=l.state,this._onClose(),l.result}},{key:"rollback",value:function(){var l=this._state.rollback(this._connectionHolder,new R(this));return this._state=l.state,this._onClose(),l.result}},{key:"isOpen",value:function(){return this._state==B.ACTIVE}},{key:"_onError",value:function(){var l=this;return this.isOpen()?this.rollback()["catch"](function(l){}).then(function(){l._state=B.FAILED}):(this._state=B.FAILED,this._onClose(),_["default"].resolve())}}]),l}(),R=function(l){function n(l){(0,w["default"])(this,n);var e=(0,c["default"])(this,(n.__proto__||(0,a["default"])(n)).call(this,l._errorTransformer||function(l){return l}));return e._tx=l,e._hasFailed=!1,e}return(0,b["default"])(n,l),(0,S["default"])(n,[{key:"onError",value:function(l){var e=this;this._hasFailed||this._tx._onError().then(function(){(0,d["default"])(n.prototype.__proto__||(0,a["default"])(n.prototype),"onError",e).call(e,l),e._hasFailed=!0})}},{key:"onCompleted",value:function(l){(0,d["default"])(n.prototype.__proto__||(0,a["default"])(n.prototype),"onCompleted",this).call(this,l);var e=l.bookmark;this._tx._onBookmark(e)}},{key:"serverMeta",value:function e(){var e={server:this._conn.server};return e}}]),n}(M["default"]),B={ACTIVE:{commit:function(l,n){return{result:t("COMMIT",l,n),state:B.SUCCEEDED}},rollback:function(l,n){return{result:t("ROLLBACK",l,n),state:B.ROLLED_BACK}},run:function(l,n,e,u){return l.getConnection().then(function(l){n.resolveConnection(l),l.run(e,u||{},n),l.pullAll(n),l.sync()})["catch"](function(l){return n.onError(l)}),r(n,e,u,function(){return n.serverMeta()})}},FAILED:{commit:function(l,n){return n.onError({error:"Cannot commit statements in this transaction, because previous statements in the transaction has failed and the transaction has been rolled back. Please start a new transaction to run another statement."}),{result:i(n,"COMMIT",{}),state:B.FAILED}},rollback:function(l,n){return n.onError({error:"Cannot rollback transaction, because previous statements in the transaction has failed and the transaction has already been rolled back."}),{result:i(n,"ROLLBACK",{}),state:B.FAILED}},run:function(l,n,e,u){return n.onError({error:"Cannot run statement, because previous statements in the transaction has failed and the transaction has already been rolled back."}),i(n,e,u)}},SUCCEEDED:{commit:function(l,n){return n.onError({error:"Cannot commit statements in this transaction, because commit has already been successfully called on the transaction and transaction has been closed. Please start a new transaction to run another statement."}),{result:i(n,"COMMIT",{}),state:B.SUCCEEDED}},rollback:function(l,n){return n.onError({error:"Cannot rollback transaction, because transaction has already been successfully closed."}),{result:i(n,"ROLLBACK",{}),state:B.SUCCEEDED}},run:function(l,n,e,u){return n.onError({error:"Cannot run statement, because transaction has already been successfully closed."}),i(n,e,u)}},ROLLED_BACK:{commit:function(l,n){return n.onError({error:"Cannot commit this transaction, because it has already been rolled back."}),{result:i(n,"COMMIT",{}),state:B.ROLLED_BACK}},rollback:function(l,n){return n.onError({error:"Cannot rollback transaction, because transaction has already been rolled back."}),{result:i(n,"ROLLBACK",{}),state:B.ROLLED_BACK}},run:function(l,n,e,u){return n.onError({error:"Cannot run statement, because transaction has already been rolled back."}),i(n,e,u)}}};e["default"]=C},{"./internal/connection-holder":283,"./internal/stream-observer":293,"./internal/util":296,"./result":299,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],303:[function(l,n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]="0.0.0-dev"},{}]},{},[273])(273)}); \ No newline at end of file +ibm866:[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160],"iso-8859-2":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],"iso-8859-3":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729],"iso-8859-4":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729],"iso-8859-5":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119],"iso-8859-6":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null],"iso-8859-7":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],"iso-8859-8":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],"iso-8859-10":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],"iso-8859-13":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],"iso-8859-14":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],"iso-8859-15":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],"iso-8859-16":[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],"koi8-r":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],"koi8-u":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],macintosh:[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],"windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],"windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],"windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],"windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255],"windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],"windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],"windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,null,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],"windows-1256":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746],"windows-1257":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729],"windows-1258":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255],"x-mac-cyrillic":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364]}}(this)},{}],273:[function(l,n,e){"undefined"!=typeof n&&n.exports&&(this["encoding-indexes"]=l("./encoding-indexes.js")["encoding-indexes"]),function(l){"use strict";function n(l,n,e){return n<=l&&l<=e}function e(l,n){return Math.floor(l/n)}function u(l){if(void 0===l)return{};if(l===Object(l))return l;throw TypeError("Could not convert argument to dictionary")}function t(l){for(var n=String(l),e=n.length,u=0,t=[];u57343)t.push(r);else if(56320<=r&&r<=57343)t.push(65533);else if(55296<=r&&r<=56319)if(u===e-1)t.push(65533);else{var i=l.charCodeAt(u+1);if(56320<=i&&i<=57343){var o=1023&r,s=1023&i;t.push(65536+(o<<10)+s),u+=1}else t.push(65533)}u+=1}return t}function r(l){for(var n="",e=0;e>10)+55296,(1023&u)+56320))}return n}function i(l){this.tokens=[].slice.call(l)}function o(l,n){if(l)throw TypeError("Decoder error");return n||65533}function s(l){throw TypeError("The code point "+l+" could not be encoded.")}function a(){}function f(){}function c(l){return l=String(l).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(V,l)?V[l]:null}function h(l,n){return n?n[l]||null:null}function d(l,n){var e=n.indexOf(l);return e===-1?null:e}function p(n){if(!("encoding-indexes"in l))throw Error("Indexes missing. Did you forget to include encoding-indexes.js?");return l["encoding-indexes"][n]}function b(l){if(l>39419&&l<189e3||l>1237575)return null;var n,e=0,u=0,t=p("gb18030");for(n=0;n>6*u)+t];u>0;){var i=e>>6*(u-1);r.push(128|63&i),u-=1}return r}}function S(l,e){var u=e.fatal;this.handler=function(e,t){if(t===z)return K;if(n(t,0,127))return t;var r=l[t-128];return null===r?o(u):r}}function E(l,e){e.fatal;this.handler=function(e,u){if(u===z)return K;if(n(u,0,127))return u;var t=d(u,l);return null===t&&s(u),t+128}}function M(l){var e=l.fatal,u=0,t=0,r=0;this.handler=function(l,i){if(i===z&&0===u&&0===t&&0===r)return K;i!==z||0===u&&0===t&&0===r||(u=0,t=0,r=0,o(e));var s;if(0!==r){s=null,n(i,48,57)&&(s=b(10*(126*(10*(u-129)+(t-48))+(r-129))+i-48));var a=[t,r,i];return u=0,t=0,r=0,null===s?(l.prepend(a),o(e)):s}if(0!==t)return n(i,129,254)?(r=i,null):(l.prepend([t,i]),u=0,t=0,o(e));if(0!==u){if(n(i,48,57))return t=i,null;var f=u,c=null;u=0;var d=i<127?64:65;return(n(i,64,126)||n(i,128,254))&&(c=190*(f-129)+(i-d)),s=null===c?null:h(c,p("gb18030")),null===s&&n(i,0,127)&&l.prepend(i),null===s?o(e):s}return n(i,0,127)?i:128===i?8364:n(i,129,254)?(u=i,null):o(e)}}function I(l,u){l.fatal;this.handler=function(l,t){if(t===z)return K;if(n(t,0,127))return t;if(u&&8364===t)return 128;var r=d(t,p("gb18030"));if(null!==r){var i=e(r,190)+129,o=r%190,a=o<63?64:65;return[i,o+a]}if(u)return s(t);r=v(t);var f=e(e(e(r,10),126),10);r-=10*f*126*10;var c=e(e(r,10),126);r-=10*c*126;var h=e(r,10),b=r-10*h;return[f+129,c+48,h+129,b+48]}}function j(l){var e=l.fatal,u=0;this.handler=function(l,t){if(t===z&&0!==u)return u=0,o(e);if(t===z&&0===u)return K;if(0!==u){var r=u,i=null;u=0;var s=t<127?64:98;switch((n(t,64,126)||n(t,161,254))&&(i=157*(r-129)+(t-s)),i){case 1133:return[202,772];case 1135:return[202,780];case 1164:return[234,772];case 1166:return[234,780]}var a=null===i?null:h(i,p("big5"));return null===a&&n(t,0,127)&&l.prepend(t),null===a?o(e):a}return n(t,0,127)?t:n(t,129,254)?(u=t,null):o(e)}}function A(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,127))return u;var t=y(u,p("big5"));if(null===t)return s(u);var r=e(t,157)+129;if(r<161)return s(u);var i=t%157,o=i<63?64:98;return[r,i+o]}}function x(l){var e=l.fatal,u=!1,t=0;this.handler=function(l,r){if(r===z&&0!==t)return t=0,o(e);if(r===z&&0===t)return K;if(142===t&&n(r,161,223))return t=0,65377+r-161;if(143===t&&n(r,161,254))return u=!0,t=r,null;if(0!==t){var i=t;t=0;var s=null;return n(i,161,254)&&n(r,161,254)&&(s=h(94*(i-161)+(r-161),p(u?"jis0212":"jis0208"))),u=!1,n(r,161,254)||l.prepend(r),null===s?o(e):s}return n(r,0,127)?r:142===r||143===r||n(r,161,254)?(t=r,null):o(e)}}function C(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,127))return u;if(165===u)return 92;if(8254===u)return 126;if(n(u,65377,65439))return[142,u-65377+161];8226===u&&(u=65293);var t=d(u,p("jis0208"));if(null===t)return s(u);var r=e(t,94)+161,i=t%94+161;return[r,i]}}function R(l){var e=l.fatal,u={ASCII:0,Roman:1,Katakana:2,LeadByte:3,TrailByte:4,EscapeStart:5,Escape:6},t=u.ASCII,r=u.ASCII,i=0,s=!1;this.handler=function(l,a){switch(t){default:case u.ASCII:return 27===a?(t=u.EscapeStart,null):n(a,0,127)&&14!==a&&15!==a&&27!==a?(s=!1,a):a===z?K:(s=!1,o(e));case u.Roman:return 27===a?(t=u.EscapeStart,null):92===a?(s=!1,165):126===a?(s=!1,8254):n(a,0,127)&&14!==a&&15!==a&&27!==a&&92!==a&&126!==a?(s=!1,a):a===z?K:(s=!1,o(e));case u.Katakana:return 27===a?(t=u.EscapeStart,null):n(a,33,95)?(s=!1,65377+a-33):a===z?K:(s=!1,o(e));case u.LeadByte:return 27===a?(t=u.EscapeStart,null):n(a,33,126)?(s=!1,i=a,t=u.TrailByte,null):a===z?K:(s=!1,o(e));case u.TrailByte:if(27===a)return t=u.EscapeStart,o(e);if(n(a,33,126)){t=u.LeadByte;var f=94*(i-33)+a-33,c=h(f,p("jis0208"));return null===c?o(e):c}return a===z?(t=u.LeadByte,l.prepend(a),o(e)):(t=u.LeadByte,o(e));case u.EscapeStart:return 36===a||40===a?(i=a,t=u.Escape,null):(l.prepend(a),s=!1,t=r,o(e));case u.Escape:var d=i;i=0;var b=null;if(40===d&&66===a&&(b=u.ASCII),40===d&&74===a&&(b=u.Roman),40===d&&73===a&&(b=u.Katakana),36!==d||64!==a&&66!==a||(b=u.LeadByte),null!==b){t=t=b;var v=s;return s=!0,v?o(e):null}return l.prepend([d,a]),s=!1,t=r,o(e)}}}function B(l){var u=(l.fatal,{ASCII:0,Roman:1,jis0208:2}),t=u.ASCII;this.handler=function(l,r){if(r===z&&t!==u.ASCII)return l.prepend(r),[27,40,66];if(r===z&&t===u.ASCII)return K;if(t===u.ASCII&&n(r,0,127))return r;if(t===u.Roman&&n(r,0,127)&&92!==r&&126!==r){if(n(r,0,127))return r;if(165===r)return 92;if(8254===r)return 126}if(n(r,0,127)&&t!==u.ASCII)return l.prepend(r),t=u.ASCII,[27,40,66];if((165===r||8254===r)&&t!==u.Roman)return l.prepend(r),t=u.Roman,[27,40,74];8226===r&&(r=65293);var i=d(r,p("jis0208"));if(null===i)return s(r);if(t!==u.jis0208)return l.prepend(r),t=u.jis0208,[27,36,66];var o=e(i,94)+33,a=i%94+33;return[o,a]}}function O(l){var e=l.fatal,u=0;this.handler=function(l,t){if(t===z&&0!==u)return u=0,o(e);if(t===z&&0===u)return K;if(0!==u){var r=u,i=null;u=0;var s=t<127?64:65,a=r<160?129:193;(n(t,64,126)||n(t,128,252))&&(i=188*(r-a)+t-s);var f=null===i?null:h(i,p("jis0208"));return null===f&&null!==i&&n(i,8836,10528)?57344+i-8836:(null===f&&n(t,0,127)&&l.prepend(t),null===f?o(e):f)}return n(t,0,128)?t:n(t,161,223)?65377+t-161:n(t,129,159)||n(t,224,252)?(u=t,null):o(e)}}function T(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,128))return u;if(165===u)return 92;if(8254===u)return 126;if(n(u,65377,65439))return u-65377+161;8226===u&&(u=65293);var t=_(u);if(null===t)return s(u);var r=e(t,188),i=r<31?129:193,o=t%188,a=o<63?64:65;return[r+i,o+a]}}function P(l){var e=l.fatal,u=0;this.handler=function(l,t){if(t===z&&0!==u)return u=0,o(e);if(t===z&&0===u)return K;if(0!==u){var r=u,i=null;u=0,n(t,65,254)&&(i=190*(r-129)+(t-65));var s=null===i?null:h(i,p("euc-kr"));return null===i&&n(t,0,127)&&l.prepend(t),null===s?o(e):s}return n(t,0,127)?t:n(t,129,254)?(u=t,null):o(e)}}function U(l){l.fatal;this.handler=function(l,u){if(u===z)return K;if(n(u,0,127))return u;var t=d(u,p("euc-kr"));if(null===t)return s(u);var r=e(t,190)+129,i=t%190+65;return[r,i]}}function N(l,n){var e=l>>8,u=255&l;return n?[e,u]:[u,e]}function L(l,e){var u=e.fatal,t=null,r=null;this.handler=function(e,i){if(i===z&&(null!==t||null!==r))return o(u);if(i===z&&null===t&&null===r)return K;if(null===t)return t=i,null;var s;if(s=l?(t<<8)+i:(i<<8)+t,t=null,null!==r){var a=r;return r=null,n(s,56320,57343)?65536+1024*(a-55296)+(s-56320):(e.prepend(N(s,l)),o(u))}return n(s,55296,56319)?(r=s,null):n(s,56320,57343)?o(u):s}}function D(l,e){e.fatal;this.handler=function(e,u){if(u===z)return K;if(n(u,0,65535))return N(u,l);var t=N((u-65536>>10)+55296,l),r=N((u-65536&1023)+56320,l);return t.concat(r)}}function q(l){l.fatal;this.handler=function(l,e){return e===z?K:n(e,0,127)?e:63360+e-128}}function F(l){l.fatal;this.handler=function(l,e){return e===z?K:n(e,0,127)?e:n(e,63360,63487)?e-63360+128:s(e)}}var z=-1;i.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():z},prepend:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.unshift(n.pop());else this.tokens.unshift(l)},push:function(l){if(Array.isArray(l))for(var n=l;n.length;)this.tokens.push(n.shift());else this.tokens.push(l)}};var K=-1;a.prototype={handler:function(l,n){}},f.prototype={handler:function(l,n){}};var H=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"utf-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"ibm866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"iso-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"iso-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"iso-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"iso-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"iso-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"iso-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"iso-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"iso-8859-8-i"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"iso-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"iso-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"iso-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"iso-8859-15"},{labels:["iso-8859-16"],name:"iso-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"koi8-r"},{labels:["koi8-ru","koi8-u"],name:"koi8-u"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"gbk"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"euc-jp"},{labels:["csiso2022jp","iso-2022-jp"],name:"iso-2022-jp"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"shift_jis"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"euc-kr"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"utf-16be"},{labels:["utf-16","utf-16le"],name:"utf-16le"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],V={};H.forEach(function(l){l.encodings.forEach(function(l){l.labels.forEach(function(n){V[n]=l})})});var Y={},W={},X="utf-8";m.prototype={decode:function(l,n){var e;e="object"==typeof l&&l instanceof ArrayBuffer?new Uint8Array(l):"object"==typeof l&&"buffer"in l&&l.buffer instanceof ArrayBuffer?new Uint8Array(l.buffer,l.byteOffset,l.byteLength):new Uint8Array(0),n=u(n),this._streaming||(this._decoder=W[this._encoding.name]({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(n.stream);for(var t,o=new i(e),s=[];!o.endOfStream()&&(t=this._decoder.handler(o,o.read()),t!==K);)null!==t&&(Array.isArray(t)?s.push.apply(s,t):s.push(t));if(!this._streaming){do{if(t=this._decoder.handler(o,o.read()),t===K)break;null!==t&&(Array.isArray(t)?s.push.apply(s,t):s.push(t))}while(!o.endOfStream());this._decoder=null}return s.length&&(["utf-8","utf-16le","utf-16be"].indexOf(this.encoding)===-1||this._ignoreBOM||this._BOMseen||(65279===s[0]?(this._BOMseen=!0, +s.shift()):this._BOMseen=!0)),r(s)}},g.prototype={encode:function(l,n){l=l?String(l):"",n=u(n),this._streaming||(this._encoder=Y[this._encoding.name](this._options)),this._streaming=Boolean(n.stream);for(var e,r=[],o=new i(t(l));!o.endOfStream()&&(e=this._encoder.handler(o,o.read()),e!==K);)Array.isArray(e)?r.push.apply(r,e):r.push(e);if(!this._streaming){for(;;){if(e=this._encoder.handler(o,o.read()),e===K)break;Array.isArray(e)?r.push.apply(r,e):r.push(e)}this._encoder=null}return new Uint8Array(r)}},Y["utf-8"]=function(l){return new k(l)},W["utf-8"]=function(l){return new w(l)},function(){"encoding-indexes"in l&&H.forEach(function(l){"Legacy single-byte encodings"===l.heading&&l.encodings.forEach(function(l){var n=l.name,e=p(n);W[n]=function(l){return new S(e,l)},Y[n]=function(l){return new E(e,l)}})})}(),W.gbk=function(l){return new M(l)},Y.gbk=function(l){return new I(l,(!0))},Y.gb18030=function(l){return new I(l)},W.gb18030=function(l){return new M(l)},Y.big5=function(l){return new A(l)},W.big5=function(l){return new j(l)},Y["euc-jp"]=function(l){return new C(l)},W["euc-jp"]=function(l){return new x(l)},Y["iso-2022-jp"]=function(l){return new B(l)},W["iso-2022-jp"]=function(l){return new R(l)},Y.shift_jis=function(l){return new T(l)},W.shift_jis=function(l){return new O(l)},Y["euc-kr"]=function(l){return new U(l)},W["euc-kr"]=function(l){return new P(l)},Y["utf-16be"]=function(l){return new D((!0),l)},W["utf-16be"]=function(l){return new L((!0),l)},Y["utf-16le"]=function(l){return new D((!1),l)},W["utf-16le"]=function(l){return new L((!1),l)},Y["x-user-defined"]=function(l){return new F(l)},W["x-user-defined"]=function(l){return new q(l)},l.TextEncoder||(l.TextEncoder=g),l.TextDecoder||(l.TextDecoder=m)}(this)},{"./encoding-indexes.js":272}],274:[function(l,n,e){"use strict";function u(l){if(l&&l.__esModule)return l;var n={};if(null!=l)for(var e in l)Object.prototype.hasOwnProperty.call(l,e)&&(n[e]=l[e]);return n["default"]=l,n}Object.defineProperty(e,"__esModule",{value:!0}),e.v1=void 0;var t=l("./v1/index"),r=u(t);e.v1=r,e["default"]=r},{"./v1/index":278}],275:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.WRITE=e.READ=e.Driver=void 0;var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/possibleConstructorReturn"),o=u(i),s=l("babel-runtime/helpers/get"),a=u(s),f=l("babel-runtime/helpers/inherits"),c=u(f),h=l("babel-runtime/helpers/classCallCheck"),d=u(h),p=l("babel-runtime/helpers/createClass"),b=u(p),v=l("./session"),_=u(v),y=l("./internal/pool"),m=u(y),g=l("./internal/connector"),w=l("./internal/stream-observer"),k=u(w),S=l("./error"),E=l("./internal/connection-providers"),M="READ",I="WRITE",j=function(){function l(n,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};(0,d["default"])(this,l),this._url=n,this._userAgent=e,this._openSessions={},this._sessionIdGenerator=0,this._token=u,this._config=t,this._pool=new m["default"](this._createConnection.bind(this),this._destroyConnection.bind(this),l._validateConnection.bind(this),t.connectionPoolSize),this._connectionProvider=this._createConnectionProvider(n,this._pool,this._driverOnErrorCallback.bind(this))}return(0,b["default"])(l,[{key:"_createConnection",value:function(l,n){var e=this._sessionIdGenerator++,u=(0,g.connect)(l,this._config),t=new A(this,u);return u.initialize(this._userAgent,this._token,t),u._id=e,u._release=function(){return n(l,u)},this._openSessions[e]=u,u}},{key:"_destroyConnection",value:function(l){delete this._openSessions[l._id],l.close()}},{key:"session",value:function(n,e){var u=l._validateSessionMode(n);return this._createSession(u,this._connectionProvider,e,this._config)}},{key:"_createConnectionProvider",value:function(l,n,e){return new E.DirectConnectionProvider(l,n,e)}},{key:"_createSession",value:function(l,n,e,u){return new _["default"](l,n,e,u)}},{key:"_driverOnErrorCallback",value:function(l){var n=this.onError;n&&l.code===S.SERVICE_UNAVAILABLE&&n(l)}},{key:"close",value:function(){for(var l in this._openSessions)this._openSessions.hasOwnProperty(l)&&this._openSessions[l].close(),this._pool.purgeAll()}}],[{key:"_validateConnection",value:function(l){return l.isOpen()}},{key:"_validateSessionMode",value:function(l){var n=l||I;if(n!==M&&n!==I)throw(0,S.newError)("Illegal session mode "+n);return n}}]),l}(),A=function(l){function n(l,e){(0,d["default"])(this,n);var u=(0,o["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this));return u._driver=l,u._conn=e,u._hasFailed=!1,u}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"onError",value:function(l){this._hasFailed||((0,a["default"])(n.prototype.__proto__||(0,r["default"])(n.prototype),"onError",this).call(this,l),this._driver.onError&&this._driver.onError(l),this._hasFailed=!0)}},{key:"onCompleted",value:function(l){this._driver.onCompleted&&this._driver.onCompleted(l),this._conn&&l&&l.server&&this._conn.setServerVersion(l.server)}}]),n}(k["default"]);e.Driver=j,e.READ=M,e.WRITE=I,e["default"]=j},{"./error":276,"./internal/connection-providers":285,"./internal/connector":286,"./internal/pool":290,"./internal/stream-observer":294,"./session":302,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],276:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"N/A";return new v(l,n)}Object.defineProperty(e,"__esModule",{value:!0}),e.PROTOCOL_ERROR=e.SESSION_EXPIRED=e.SERVICE_UNAVAILABLE=e.Neo4jError=e.newError=void 0;var r=l("babel-runtime/core-js/object/get-prototype-of"),i=u(r),o=l("babel-runtime/helpers/classCallCheck"),s=u(o),a=l("babel-runtime/helpers/possibleConstructorReturn"),f=u(a),c=l("babel-runtime/helpers/inherits"),h=u(c),d="ServiceUnavailable",p="SessionExpired",b="ProtocolError",v=function(l){function n(l){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"N/A";(0,s["default"])(this,n);var u=(0,f["default"])(this,(n.__proto__||(0,i["default"])(n)).call(this,l));return u.message=l,u.code=e,u}return(0,h["default"])(n,l),n}(Error);e.newError=t,e.Neo4jError=v,e.SERVICE_UNAVAILABLE=d,e.SESSION_EXPIRED=p,e.PROTOCOL_ERROR=b},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],277:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.PathSegment=e.Path=e.UnboundRelationship=e.Relationship=e.Node=void 0;var t=l("babel-runtime/core-js/json/stringify"),r=u(t),i=l("babel-runtime/core-js/object/keys"),o=u(i),s=l("babel-runtime/helpers/classCallCheck"),a=u(s),f=l("babel-runtime/helpers/createClass"),c=u(f),h=function(){function l(n,e,u){(0,a["default"])(this,l),this.identity=n,this.labels=e,this.properties=u}return(0,c["default"])(l,[{key:"toString",value:function(){for(var l="("+this.identity,n=0;n0){l+=" {";for(var u=0;u0&&(l+=","),l+=e[u]+":"+(0,r["default"])(this.properties[e[u]]);l+="}"}return l+=")"}}]),l}(),d=function(){function l(n,e,u,t,r){(0,a["default"])(this,l),this.identity=n,this.start=e,this.end=u,this.type=t,this.properties=r}return(0,c["default"])(l,[{key:"toString",value:function(){var l="("+this.start+")-[:"+this.type,n=(0,o["default"])(this.properties);if(n.length>0){l+=" {";for(var e=0;e0&&(l+=","),l+=n[e]+":"+(0,r["default"])(this.properties[n[e]]);l+="}"}return l+="]->("+this.end+")"}}]),l}(),p=function(){function l(n,e,u){(0,a["default"])(this,l),this.identity=n,this.type=e,this.properties=u}return(0,c["default"])(l,[{key:"bind",value:function(l,n){return new d(this.identity,l,n,this.type,this.properties)}},{key:"toString",value:function(){var l="-[:"+this.type,n=(0,o["default"])(this.properties);if(n.length>0){l+=" {";for(var e=0;e0&&(l+=","),l+=n[e]+":"+(0,r["default"])(this.properties[n[e]]);l+="}"}return l+="]->"}}]),l}(),b=function _(l,n,e){(0,a["default"])(this,_),this.start=l,this.relationship=n,this.end=e},v=function y(l,n,e){(0,a["default"])(this,y),this.start=l,this.end=n,this.segments=e,this.length=e.length};e.Node=h,e.Relationship=d,e.UnboundRelationship=p,e.Path=v,e.PathSegment=b},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],278:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,g.assertString)(l,"Bolt URL");var u=(0,m.parseScheme)(l);if("bolt+routing://"===u)return new v["default"]((0,m.parseUrl)(l),k,n,e);if("bolt://"===u)return new p.Driver((0,m.parseUrl)(l),k,n,e);throw new Error("Unknown scheme: "+u)}Object.defineProperty(e,"__esModule",{value:!0}),e.error=e.session=e.types=e.auth=e.Neo4jError=e.integer=e.isInt=e["int"]=e.driver=void 0;var r=l("./integer"),i=l("./graph-types"),o=l("./error"),s=l("./result"),a=u(s),f=l("./result-summary"),c=u(f),h=l("./record"),d=u(h),p=l("./driver"),b=l("./routing-driver"),v=u(b),_=l("../version"),y=u(_),m=l("./internal/connector"),g=l("./internal/util"),w={basic:function(l,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return e?{scheme:"basic",principal:l,credentials:n,realm:e}:{scheme:"basic",principal:l,credentials:n}},custom:function(l,n,e,u){var t=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0;return t?{scheme:u,principal:l,credentials:n,realm:e,parameters:t}:{scheme:u,principal:l,credentials:n,realm:e}}},k="neo4j-javascript/"+y["default"],S={Node:i.Node,Relationship:i.Relationship,UnboundRelationship:i.UnboundRelationship,PathSegment:i.PathSegment,Path:i.Path,Result:a["default"],ResultSummary:c["default"],Record:d["default"]},E={READ:p.READ,WRITE:p.WRITE},M={SERVICE_UNAVAILABLE:o.SERVICE_UNAVAILABLE,SESSION_EXPIRED:o.SESSION_EXPIRED,PROTOCOL_ERROR:o.PROTOCOL_ERROR},I={toNumber:r.toNumber,toString:r.toString,inSafeRange:r.inSafeRange},j={driver:t,"int":r["int"],isInt:r.isInt,integer:I,Neo4jError:o.Neo4jError,auth:w,types:S,session:E,error:M};e.driver=t,e["int"]=r["int"],e.isInt=r.isInt,e.integer=I,e.Neo4jError=o.Neo4jError,e.auth=w,e.types=S,e.session=E,e.error=M,e["default"]=j},{"../version":304,"./driver":275,"./error":276,"./graph-types":277,"./integer":279,"./internal/connector":286,"./internal/util":297,"./record":298,"./result":300,"./result-summary":299,"./routing-driver":301}],279:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.toString=e.toNumber=e.inSafeRange=e.isInt=e["int"]=void 0;var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=l("./error"),a=function(){function l(n,e){(0,r["default"])(this,l),this.low=0|n,this.high=0|e}return(0,o["default"])(l,[{key:"inSafeRange",value:function(){return this.greaterThanOrEqual(l.MIN_SAFE_VALUE)&&this.lessThanOrEqual(l.MAX_SAFE_VALUE)}},{key:"toInt",value:function(){return this.low}},{key:"toNumber",value:function(){return this.high*h+(this.low>>>0)}},{key:"toString",value:function(n){if(n=n||10,n<2||36>>0,a=s.toString(n);if(e=o,e.isZero())return a+i;for(;a.length<6;)a="0"+a;i=""+a+i}}},{key:"getHighBits",value:function(){return this.high}},{key:"getLowBits",value:function(){return this.low}},{key:"getNumBitsAbs",value:function(){if(this.isNegative())return this.equals(l.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var n=0!=this.high?this.high:this.low,e=31;e>0&&0==(n&1<=0}},{key:"isOdd",value:function(){return 1===(1&this.low)}},{key:"isEven",value:function(){return 0===(1&this.low)}},{key:"equals",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.high===n.high&&this.low===n.low}},{key:"notEquals",value:function(l){!this.equals(l)}},{key:"lessThan",value:function(l){return this.compare(l)<0}},{key:"lessThanOrEqual",value:function(l){return this.compare(l)<=0}},{key:"greaterThan",value:function(l){return this.compare(l)>0}},{key:"greaterThanOrEqual",value:function(l){return this.compare(l)>=0}},{key:"compare",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),this.equals(n))return 0;var e=this.isNegative(),u=n.isNegative();return e&&!u?-1:!e&&u?1:this.subtract(n).isNegative()?-1:1}},{key:"negate",value:function(){return this.equals(l.MIN_VALUE)?l.MIN_VALUE:this.not().add(l.ONE)}},{key:"add",value:function(n){l.isInteger(n)||(n=l.fromValue(n));var e=this.high>>>16,u=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,s=n.low>>>16,a=65535&n.low,f=0,c=0,h=0,d=0;return d+=r+a,h+=d>>>16,d&=65535,h+=t+s,c+=h>>>16,h&=65535,c+=u+o,f+=c>>>16,c&=65535,f+=e+i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"subtract",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.add(n.negate())}},{key:"multiply",value:function(n){if(this.isZero())return l.ZERO;if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())return l.ZERO;if(this.equals(l.MIN_VALUE))return n.isOdd()?l.MIN_VALUE:l.ZERO;if(n.equals(l.MIN_VALUE))return this.isOdd()?l.MIN_VALUE:l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().multiply(n.negate()):this.negate().multiply(n).negate();if(n.isNegative())return this.multiply(n.negate()).negate();if(this.lessThan(b)&&n.lessThan(b))return l.fromNumber(this.toNumber()*n.toNumber());var e=this.high>>>16,u=65535&this.high,t=this.low>>>16,r=65535&this.low,i=n.high>>>16,o=65535&n.high,s=n.low>>>16,a=65535&n.low,f=0,c=0,h=0,d=0;return d+=r*a,h+=d>>>16,d&=65535,h+=t*a,c+=h>>>16,h&=65535,h+=r*s,c+=h>>>16,h&=65535,c+=u*a,f+=c>>>16,c&=65535,c+=t*s,f+=c>>>16,c&=65535,c+=r*o,f+=c>>>16,c&=65535,f+=e*a+u*s+t*o+r*i,f&=65535,l.fromBits(h<<16|d,f<<16|c)}},{key:"div",value:function(n){if(l.isInteger(n)||(n=l.fromValue(n)),n.isZero())throw(0,s.newError)("division by zero");if(this.isZero())return l.ZERO;var e,u,t;if(this.equals(l.MIN_VALUE)){if(n.equals(l.ONE)||n.equals(l.NEG_ONE))return l.MIN_VALUE;if(n.equals(l.MIN_VALUE))return l.ONE;var r=this.shiftRight(1);return e=r.div(n).shiftLeft(1),e.equals(l.ZERO)?n.isNegative()?l.ONE:l.NEG_ONE:(u=this.subtract(n.multiply(e)),t=e.add(u.div(n)))}if(n.equals(l.MIN_VALUE))return l.ZERO;if(this.isNegative())return n.isNegative()?this.negate().div(n.negate()):this.negate().div(n).negate();if(n.isNegative())return this.div(n.negate()).negate();for(t=l.ZERO,u=this;u.greaterThanOrEqual(n);){e=Math.max(1,Math.floor(u.toNumber()/n.toNumber()));for(var i=Math.ceil(Math.log(e)/Math.LN2),o=i<=48?1:Math.pow(2,i-48),a=l.fromNumber(e),f=a.multiply(n);f.isNegative()||f.greaterThan(u);)e-=o,a=l.fromNumber(e),f=a.multiply(n);a.isZero()&&(a=l.ONE),t=t.add(a),u=u.subtract(f)}return t}},{key:"modulo",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),this.subtract(this.div(n).multiply(n))}},{key:"not",value:function(){return l.fromBits(~this.low,~this.high)}},{key:"and",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low&n.low,this.high&n.high)}},{key:"or",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low|n.low,this.high|n.high)}},{key:"xor",value:function(n){return l.isInteger(n)||(n=l.fromValue(n)),l.fromBits(this.low^n.low,this.high^n.high)}},{key:"shiftLeft",value:function(n){return l.isInteger(n)&&(n=n.toInt()),0===(n&=63)?this:n<32?l.fromBits(this.low<>>32-n):l.fromBits(0,this.low<>>n|this.high<<32-n,this.high>>n):l.fromBits(this.high>>n-32,this.high>=0?0:-1)}}]),l}();a.__isInteger__,Object.defineProperty(a.prototype,"__isInteger__",{value:!0,enumerable:!1,configurable:!1}),a.isInteger=function(l){return(l&&l.__isInteger__)===!0};var f={};a.fromInt=function(l){var n,e;return l=0|l,-128<=l&&l<128&&(e=f[l])?e:(n=new a(l,l<0?-1:0,(!1)),-128<=l&&l<128&&(f[l]=n),n)},a.fromNumber=function(l){return isNaN(l)||!isFinite(l)?a.ZERO:l<=-p?a.MIN_VALUE:l+1>=p?a.MAX_VALUE:l<0?a.fromNumber(-l).negate():new a(l%h|0,l/h|0)},a.fromBits=function(l,n){return new a(l,n)},a.fromString=function(l,n){if(0===l.length)throw(0,s.newError)("number format error: empty string");if("NaN"===l||"Infinity"===l||"+Infinity"===l||"-Infinity"===l)return a.ZERO;if(n=n||10,n<2||360)throw(0,s.newError)('number format error: interior "-" character: '+l);if(0===e)return a.fromString(l.substring(1),n).negate();for(var u=a.fromNumber(Math.pow(n,8)),t=a.ZERO,r=0;r>8),this.putUInt8(l+1,255&n)}},{key:"putUInt16",value:function(l,n){this.putUInt8(l,n>>8&255),this.putUInt8(l+1,255&n)}},{key:"putInt32",value:function(l,n){this.putInt8(l,n>>24),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putUInt32",value:function(l,n){this.putUInt8(l,n>>24&255),this.putUInt8(l+1,n>>16&255),this.putUInt8(l+2,n>>8&255),this.putUInt8(l+3,255&n)}},{key:"putInt64",value:function(l,n){this.putInt8(l,n>>48),this.putUInt8(l+1,n>>42&255),this.putUInt8(l+2,n>>36&255),this.putUInt8(l+3,n>>30&255),this.putUInt8(l+4,n>>24&255),this.putUInt8(l+5,n>>16&255),this.putUInt8(l+6,n>>8&255),this.putUInt8(l+7,255&n)}},{key:"putBytes",value:function(l,n){for(var e=0,u=n.remaining();e0}},{key:"reset",value:function(){this.position=0}},{key:"toString",value:function(){return this.constructor.name+"( position="+this.position+" )\n "+this.toHex()}},{key:"toHex",value:function(){for(var l="",n=0;n=e.length))return e.getUInt8(l);l-=e.length}}},{key:"getInt8",value:function(l){for(var n=0;n=e.length))return e.getInt8(l);l-=e.length}}},{key:"getFloat64",value:function(l){for(var n=t(8),e=0;e<8;e++)n.putUInt8(e,this.getUInt8(l+e));return n.getFloat64(0)}}]),n}(y),k=function(l){function n(l){(0,p["default"])(this,n);var e=l instanceof _.Buffer?l:new _.Buffer(l),u=(0,f["default"])(this,(n.__proto__||(0,s["default"])(n)).call(this,e.length));return u._buffer=e,u}return(0,h["default"])(n,l),(0,v["default"])(n,[{key:"getUInt8",value:function(l){return this._buffer.readUInt8(l)}},{key:"getInt8",value:function(l){return this._buffer.readInt8(l)}},{key:"getFloat64",value:function(l){return this._buffer.readDoubleBE(l)}},{key:"putUInt8",value:function(l,n){this._buffer.writeUInt8(n,l)}},{key:"putInt8",value:function(l,n){this._buffer.writeInt8(n,l)}},{key:"putFloat64",value:function(l,n){this._buffer.writeDoubleBE(n,l)}},{key:"putBytes",value:function(l,e){if(e instanceof n){var u=Math.min(e.length-e.position,this.length-l);e._buffer.copy(this._buffer,l,e.position,e.position+u),e.position+=u}else(0,i["default"])(n.prototype.__proto__||(0,s["default"])(n.prototype),"putBytes",this).call(this,l,e)}},{key:"getSlice",value:function(l,e){return new n(this._buffer.slice(l,l+e))}}]),n}(y),S=m;try{l.resolve("buffer"),S=k}catch(E){}e.BaseBuffer=y,e.HeapBuffer=m,e.SliceBuffer=g,e.CombinedBuffer=w,e.NodeBuffer=k,e.alloc=t},{"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,buffer:66}],281:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(){var n=l,e=n("process");return e.env["win32"==e.platform?"USERPROFILE":"HOME"]}function r(l){try{y["default"].mkdirSync(l)}catch(n){if("ENOENT"===n.code)return r(g["default"].dirname(l)),void r(l);if("EEXIST"===n.code)return;throw n}}function i(n,e,u){try{y["default"].accessSync(e)}catch(t){return u(null)}var r=!1;l("readline").createInterface({input:y["default"].createReadStream(e)}).on("line",function(l){!r&&l.startsWith(n)&&(r=!0,u(l.split(" ")[1]))}).on("close",function(){r||u(null)})}function o(l,n,e,u){if(I[l])return u(null);I[l]=1;try{y["default"].accessSync(n)}catch(t){r(g["default"].dirname(n))}y["default"].appendFile(n,l+" "+e+w.EOL,"utf8",function(n){return delete I[l],n&&console.log(n),u(n)})}function s(l,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return null};if(l.encrypted===!1||l.encrypted===S.ENCRYPTION_OFF){var u=p["default"].connect(l.port,l.host,n);return u.on("error",e),u}return j[l.trust]?j[l.trust](l,n,e):void e((0,E.newError)("Unknown trust strategy: "+l.trust+". Please use either trust:'TRUST_CUSTOM_CA_SIGNED_CERTIFICATES' or trust:'TRUST_ALL_CERTIFICATES' in your driver configuration. Alternatively, you can disable encryption by setting `encrypted:\""+S.ENCRYPTION_OFF+'"`. There is no mechanism to use encryption without trust verification, because this incurs the overhead of encryption without improving security. If the driver does not verify that the peer it is connected to is really Neo4j, it is very easy for an attacker to bypass the encryption by pretending to be Neo4j.'))}Object.defineProperty(e,"__esModule",{value:!0});var a=l("babel-runtime/helpers/classCallCheck"),f=u(a),c=l("babel-runtime/helpers/createClass"),h=u(c),d=l("net"),p=u(d),b=l("tls"),v=u(b),_=l("fs"),y=u(_),m=l("path"),g=u(m),w=l("os"),k=l("./buf"),S=l("./util"),E=l("./../error"),M=0,I={},j={TRUST_SIGNED_CERTIFICATES:function(l,n,e){return console.log("`TRUST_SIGNED_CERTIFICATES` has been deprecated as option and will be removed in a future version of the driver. Please use `TRUST_CUSTOM_CA_SIGNED_CERTIFICATES` instead."),j.TRUST_CUSTOM_CA_SIGNED_CERTIFICATES(l,n,e)},TRUST_CUSTOM_CA_SIGNED_CERTIFICATES:function(l,n,e){if(!l.trustedCertificates||0==l.trustedCertificates.length)return void e((0,E.newError)('You are using TRUST_CUSTOM_CA_SIGNED_CERTIFICATES as the method to verify trust for encrypted connections, but have not configured any trustedCertificates. You must specify the path to at least one trusted X.509 certificate for this to work. Two other alternatives is to use TRUST_ALL_CERTIFICATES or to disable encryption by setting encrypted="'+S.ENCRYPTION_OFF+'"in your driver configuration.'));var u={ca:l.trustedCertificates.map(function(l){return y["default"].readFileSync(l)}),rejectUnauthorized:!1},t=v["default"].connect(l.port,l.host,u,function(){t.authorized?n():e((0,E.newError)("Server certificate is not trusted. If you trust the database you are connecting to, add the signing certificate, or the server certificate, to the list of certificates trusted by this driver using `neo4j.v1.driver(.., { trustedCertificates:['path/to/certificate.crt']}). This is a security measure to protect against man-in-the-middle attacks. If you are just trying Neo4j out and are not concerned about encryption, simply disable it using `encrypted=\""+S.ENCRYPTION_OFF+'"` in the driver options. Socket responded with: '+t.authorizationError))});return t.on("error",e),t},TRUST_SYSTEM_CA_SIGNED_CERTIFICATES:function(l,n,e){var u={rejectUnauthorized:!1},t=v["default"].connect(l.port,l.host,u,function(){t.authorized?n():e((0,E.newError)("Server certificate is not trusted. If you trust the database you are connecting to, use TRUST_CUSTOM_CA_SIGNED_CERTIFICATES and add the signing certificate, or the server certificate, to the list of certificates trusted by this driver using `neo4j.v1.driver(.., { trustedCertificates:['path/to/certificate.crt']}). This is a security measure to protect against man-in-the-middle attacks. If you are just trying Neo4j out and are not concerned about encryption, simply disable it using `encrypted=\""+S.ENCRYPTION_OFF+'"` in the driver options. Socket responded with: '+t.authorizationError))});return t.on("error",e),t},TRUST_ON_FIRST_USE:function(n,e,u){console.log("`TRUST_ON_FIRST_USE` has been deprecated as option and will be removed in a future version of the driver. Please use `TRUST_ALL_CERTIFICATES` instead.");var r={rejectUnauthorized:!1},s=v["default"].connect(n.port,n.host,r,function(){var r=s.getPeerCertificate(!0);if(!r.raw)return void u((0,E.newError)('You are using a version of NodeJS that does not support trust-on-first use encryption. You can either upgrade NodeJS to a newer version, use `trust:TRUST_CUSTOM_CA_SIGNED_CERTIFICATES` in your driver config instead, or disable encryption using `encrypted:"'+S.ENCRYPTION_OFF+'"`.'));var a=l("crypto").createHash("sha512").update(r.raw).digest("hex"),f=n.knownHosts||g["default"].join(t(),".neo4j","known_hosts"),c=n.host+":"+n.port;i(c,f,function(l){l===a?e():null==l?o(c,f,a,function(l){return l?u(l):e()}):u((0,E.newError)("Database encryption certificate has changed, and no longer matches the certificate stored for "+c+" in `"+f+"`. As a security precaution, this driver will not automatically trust the new certificate, because doing so would allow an attacker to pretend to be the Neo4j instance we want to connect to. The certificate provided by the server looks like: "+r+". If you trust that this certificate is valid, simply remove the line starting with "+c+" in `"+f+'`, and the driver will update the file with the new certificate. You can configure which file the driver should use to store this information by setting `knownHosts` to another path in your driver configuration - and you can disable encryption there as well using `encrypted:"'+S.ENCRYPTION_OFF+'"`.')); +})});return s.on("error",u),s},TRUST_ALL_CERTIFICATES:function(l,n,e){var u={rejectUnauthorized:!1},t=v["default"].connect(l.port,l.host,u,function(){var l=t.getPeerCertificate();(0,S.isEmptyObjectOrNull)(l)?e((0,E.newError)('Secure connection was successful but server did not return any valid certificates. Such connection can not be trusted. If you are just trying Neo4j out and are not concerned about encryption, simply disable it using `encrypted="'+S.ENCRYPTION_OFF+'"` in the driver options. Socket responded with: '+t.authorizationError)):n()});return t.on("error",e),t}},A=function(){function l(n){(0,f["default"])(this,l);var e=this;this.id=M++,this.available=!0,this._pending=[],this._open=!0,this._error=null,this._handleConnectionError=this._handleConnectionError.bind(this),this._handleConnectionTerminated=this._handleConnectionTerminated.bind(this),this._encrypted=n.encrypted,this._conn=s(n,function(){if(e._open){e._conn.on("data",function(l){e.onmessage&&e.onmessage(new k.NodeBuffer(l))}),e._conn.on("error",e._handleConnectionError),e._conn.on("end",e._handleConnectionTerminated);var l=e._pending;e._pending=null;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:function(){return null};this._open=!1,this._conn?(this._conn.end(),this._conn.removeListener("end",this._handleConnectionTerminated),this._conn.on("end",l)):l()}}]),l}(),x={channel:A,available:!0};try{l.resolve("net")}catch(C){x={available:!1}}e["default"]=x},{"./../error":276,"./buf":280,"./util":297,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,crypto:185,fs:63,net:63,os:229,path:235,readline:63,tls:63}],282:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=l("./buf"),a=l("./../error"),f=l("./util"),c=function(){function l(n){(0,r["default"])(this,l),this._open=!0,this._pending=[],this._error=null,this._handleConnectionError=this._handleConnectionError.bind(this),this._encrypted=n.encrypted;var e="ws";if(n.encrypted===!0||n.encrypted===f.ENCRYPTION_ON){if(n.trust&&"TRUST_CUSTOM_CA_SIGNED_CERTIFICATES"!==n.trust)return void(this._error=(0,a.newError)("The browser version of this driver only supports one trust strategy, 'TRUST_CUSTOM_CA_SIGNED_CERTIFICATES'. "+n.trust+' is not supported. Please either use TRUST_CUSTOM_CA_SIGNED_CERTIFICATES or disable encryption by setting `encrypted:"'+f.ENCRYPTION_OFF+'"` in the driver configuration.'));e="wss"}this._url=e+"://"+n.host+":"+n.port,this._ws=new WebSocket(this._url),this._ws.binaryType="arraybuffer";var u=this;this._ws.onclose=function(l){l.wasClean||u._handleConnectionError()},this._ws.onopen=function(){var l=u._pending;u._pending=null;for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:function(){return null};this._open=!1,this._ws.close(),this._ws.onclose=l}}]),l}(),h="undefined"!=typeof WebSocket,d={channel:c,available:h};e["default"]=d},{"./../error":276,"./buf":280,"./util":297,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],283:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.Dechunker=e.Chunker=void 0;var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("babel-runtime/helpers/possibleConstructorReturn"),c=u(f),h=l("babel-runtime/helpers/inherits"),d=u(h),p=l("./buf"),b=2,v=0,_=1400,y=function(l){function n(l,e){(0,o["default"])(this,n);var u=(0,c["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this,0));return u._bufferSize=e||_,u._ch=l,u._buffer=(0,p.alloc)(u._bufferSize),u._currentChunkStart=0,u._chunkOpen=!1,u}return(0,d["default"])(n,l),(0,a["default"])(n,[{key:"putUInt8",value:function(l,n){this._ensure(1),this._buffer.writeUInt8(n)}},{key:"putInt8",value:function(l,n){this._ensure(1),this._buffer.writeInt8(n)}},{key:"putFloat64",value:function(l,n){this._ensure(8),this._buffer.writeFloat64(n)}},{key:"putBytes",value:function(l,n){for(;n.remaining()>0;)this._ensure(1),this._buffer.remaining()>n.remaining()?this._buffer.writeBytes(n):this._buffer.writeBytes(n.readSlice(this._buffer.remaining()));return this}},{key:"flush",value:function(){if(this._buffer.position>0){this._closeChunkIfOpen();var l=this._buffer;this._buffer=null,this._ch.write(l.getSlice(0,l.position)),this._buffer=(0,p.alloc)(this._bufferSize),this._chunkOpen=!1}return this}},{key:"messageBoundary",value:function(){this._closeChunkIfOpen(),this._buffer.remaining()=2?this._onHeader(l.readUInt16()):(this._partialChunkHeader=l.readUInt8()<<8,this.IN_HEADER)}},{key:"IN_HEADER",value:function(l){return this._onHeader(65535&(this._partialChunkHeader|l.readUInt8()))}},{key:"IN_CHUNK",value:function(l){return this._chunkSize<=l.remaining()?(this._currentMessage.push(l.readSlice(this._chunkSize)),this.AWAITING_CHUNK):(this._chunkSize-=l.remaining(),this._currentMessage.push(l.readSlice(l.remaining())),this.IN_CHUNK)}},{key:"CLOSED",value:function(l){}},{key:"_onHeader",value:function(l){if(0==l){var n=void 0;return n=1==this._currentMessage.length?this._currentMessage[0]:new p.CombinedBuffer(this._currentMessage),this._currentMessage=[],this.onmessage(n),this.AWAITING_CHUNK}return this._chunkSize=l,this.IN_CHUNK}},{key:"write",value:function(l){for(;l.hasRemaining();)this._state=this._state(l)}}]),l}();e.Chunker=y,e.Dechunker=m},{"./buf":280,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],284:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.EMPTY_CONNECTION_HOLDER=void 0;var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/possibleConstructorReturn"),o=u(i),s=l("babel-runtime/helpers/inherits"),a=u(s),f=l("babel-runtime/core-js/promise"),c=u(f),h=l("babel-runtime/helpers/classCallCheck"),d=u(h),p=l("babel-runtime/helpers/createClass"),b=u(p),v=l("../error"),_=function(){function l(n,e){(0,d["default"])(this,l),this._mode=n,this._connectionProvider=e,this._referenceCount=0,this._connectionPromise=c["default"].resolve(null)}return(0,b["default"])(l,[{key:"initializeConnection",value:function(){0===this._referenceCount&&(this._connectionPromise=this._connectionProvider.acquireConnection(this._mode)),this._referenceCount++}},{key:"getConnection",value:function(){return this._connectionPromise}},{key:"releaseConnection",value:function(){return 0===this._referenceCount?this._connectionPromise:(this._referenceCount--,0===this._referenceCount?this._releaseConnection(!0):this._connectionPromise)}},{key:"close",value:function(){return 0===this._referenceCount?this._connectionPromise:(this._referenceCount=0,this._releaseConnection(!1))}},{key:"_releaseConnection",value:function(l){return this._connectionPromise=this._connectionPromise.then(function(n){n&&(l?n.reset():n.resetAsync(),n.sync(),n._release())})["catch"](function(l){}),this._connectionPromise}}]),l}();e["default"]=_;var y=function(l){function n(){return(0,d["default"])(this,n),(0,o["default"])(this,(n.__proto__||(0,r["default"])(n)).apply(this,arguments))}return(0,a["default"])(n,l),(0,b["default"])(n,[{key:"initializeConnection",value:function(){}},{key:"getConnection",value:function(){return c["default"].reject((0,v.newError)("This connection holder does not serve connections"))}},{key:"releaseConnection",value:function(){return c["default"].resolve()}},{key:"close",value:function(){return c["default"].resolve()}}]),n}(_);e.EMPTY_CONNECTION_HOLDER=new y},{"../error":276,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],285:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.SingleConnectionProvider=e.LoadBalancer=e.DirectConnectionProvider=void 0;var t=l("babel-runtime/core-js/promise"),r=u(t),i=l("babel-runtime/core-js/object/get-prototype-of"),o=u(i),s=l("babel-runtime/helpers/possibleConstructorReturn"),a=u(s),f=l("babel-runtime/helpers/inherits"),c=u(f),h=l("babel-runtime/helpers/classCallCheck"),d=u(h),p=l("babel-runtime/helpers/createClass"),b=u(p),v=l("../error"),_=l("../driver"),y=l("../session"),m=u(y),g=l("./round-robin-array"),w=u(g),k=l("./routing-table"),S=u(k),E=l("./rediscovery"),M=u(E),I=function(){function l(){(0,d["default"])(this,l)}return(0,b["default"])(l,[{key:"acquireConnection",value:function(l){throw new Error("Abstract method")}},{key:"_withAdditionalOnErrorCallback",value:function(l,n){return l["catch"](function(l){n(l)}),l}}]),l}(),j=(e.DirectConnectionProvider=function(l){function n(l,e,u){(0,d["default"])(this,n);var t=(0,a["default"])(this,(n.__proto__||(0,o["default"])(n)).call(this));return t._address=l,t._connectionPool=e,t._driverOnErrorCallback=u,t}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"acquireConnection",value:function(l){var n=this._connectionPool.acquire(this._address),e=r["default"].resolve(n);return this._withAdditionalOnErrorCallback(e,this._driverOnErrorCallback)}}]),n}(I),e.LoadBalancer=function(l){function n(l,e,u){(0,d["default"])(this,n);var t=(0,a["default"])(this,(n.__proto__||(0,o["default"])(n)).call(this));return t._routingTable=new S["default"](new w["default"]([l])),t._rediscovery=new M["default"],t._connectionPool=e,t._driverOnErrorCallback=u,t}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"acquireConnection",value:function(l){var n=this,e=this._freshRoutingTable().then(function(e){if(l===_.READ)return n._acquireConnectionToServer(e.readers,"read");if(l===_.WRITE)return n._acquireConnectionToServer(e.writers,"write");throw(0,v.newError)("Illegal mode "+l)});return this._withAdditionalOnErrorCallback(e,this._driverOnErrorCallback)}},{key:"forget",value:function(l){this._routingTable.forget(l),this._connectionPool.purge(l)}},{key:"forgetWriter",value:function(l){this._routingTable.forgetWriter(l)}},{key:"_acquireConnectionToServer",value:function(l,n){var e=l.next();return e?this._connectionPool.acquire(e):r["default"].reject((0,v.newError)("No "+n+" servers available",v.SESSION_EXPIRED))}},{key:"_freshRoutingTable",value:function(){var l=this._routingTable;return l.isStale()?this._refreshRoutingTable(l):r["default"].resolve(l)}},{key:"_refreshRoutingTable",value:function(l){var n=this,e=l.routers.toArray(),u=e.reduce(function(u,t,r){return u.then(function(u){if(u){if(!u.writers.isEmpty())return u}else{var i=r-1;n._forgetRouter(l,e,i)}var o=n._createSessionForRediscovery(t);return n._rediscovery.lookupRoutingTableOnRouter(o,t)})},r["default"].resolve(null));return u.then(function(u){if(u&&!u.writers.isEmpty())return n._updateRoutingTable(u),u;var t=e.length-1;throw n._forgetRouter(l,e,t),(0,v.newError)("Could not perform discovery. No routing servers available.",v.SERVICE_UNAVAILABLE)})}},{key:"_createSessionForRediscovery",value:function(l){var n=this._connectionPool.acquire(l),e=r["default"].resolve(n),u=new j(e);return new m["default"](_.READ,u)}},{key:"_updateRoutingTable",value:function(l){var n=this,e=this._routingTable,u=e.serversDiff(l);u.forEach(function(l){return n._connectionPool.purge(l)}),this._routingTable=l}},{key:"_forgetRouter",value:function(l,n,e){var u=n[e];u&&l.forgetRouter(u)}}]),n}(I),e.SingleConnectionProvider=function(l){function n(l){(0,d["default"])(this,n);var e=(0,a["default"])(this,(n.__proto__||(0,o["default"])(n)).call(this));return e._connectionPromise=l,e}return(0,c["default"])(n,l),(0,b["default"])(n,[{key:"acquireConnection",value:function(l){var n=this._connectionPromise;return this._connectionPromise=null,n}}]),n}(I))},{"../driver":275,"../error":276,"../session":302,"./rediscovery":291,"./round-robin-array":292,"./routing-table":293,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],286:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n=l.match(V)[1]||"";return n.toLowerCase()}function r(l){return l.match(V)[2]}function i(l){return l.match(V)[3]}function o(l){return l.match(V)[4]}function s(l,n){if(H){for(var e=2;e1&&void 0!==arguments[1]?arguments[1]:{},e=n.channel||A,u=i(l),t=o(l)||7687,r=u+":"+t;return new X(new e({host:i(l),port:o(l)||7687,encrypted:null==n.encrypted?(0,S["default"])("trust_all_certificates"):n.encrypted,trust:n.trust||((0,S["default"])("trust_all_certificates")?"TRUST_ALL_CERTIFICATES":"TRUST_CUSTOM_CA_SIGNED_CERTIFICATES"),trustedCertificates:n.trustedCertificates||[],knownHosts:n.knownHosts}),r)}Object.defineProperty(e,"__esModule",{value:!0}),e.Connection=e.parseUrl=e.parseScheme=e.connect=void 0;var c=l("babel-runtime/helpers/classCallCheck"),h=u(c),d=l("babel-runtime/helpers/createClass"),p=u(d),b=l("babel-runtime/core-js/json/stringify"),v=u(b),_=l("./ch-websocket"),y=u(_),m=l("./ch-node"),g=u(m),w=l("./chunking"),k=l("./features"),S=u(k),E=l("./packstream"),M=l("./buf"),I=l("../graph-types"),j=l("./../error"),A=void 0;if(g["default"].available)A=g["default"].channel;else{if(!y["default"].available)throw(0,j.newError)("Fatal: No compatible transport available. Need to run on a platform with the WebSocket API.");A=y["default"].channel}var x=1,C=14,R=15,B=16,O=47,T=63,P=112,U=113,N=126,L=127,D=78,q=82,F=114,z=80,K=1616949271,H=!1,V=new RegExp(["([^/]+//)?","(([^:/?#]*)","(?::([0-9]+))?)",".*"].join("")),Y={onNext:a,onCompleted:a,onError:a},W={node:function(l,n){return new I.Node(l.unpack(n),l.unpack(n),l.unpack(n))},rel:function(l,n){return new I.Relationship(l.unpack(n),l.unpack(n),l.unpack(n),l.unpack(n),l.unpack(n))},unboundRel:function(l,n){return new I.UnboundRelationship(l.unpack(n),l.unpack(n),l.unpack(n))},path:function(l,n){for(var e=l.unpack(n),u=l.unpack(n),t=l.unpack(n),r=e[0],i=[],o=0;o0?(f=u[s-1],f instanceof I.UnboundRelationship&&(u[s-1]=f=f.bind(r.identity,a.identity))):(f=u[-s-1],f instanceof I.UnboundRelationship&&(u[-s-1]=f=f.bind(a.identity,r.identity))),i.push(new I.PathSegment(r,f,a)),r=a}return new I.Path(e[0],e[e.length-1],i)}},X=function(){function l(n,e){(0,h["default"])(this,l),this.url=e,this.server={address:e},this._pendingObservers=[],this._currentObserver=void 0,this._ch=n,this._dechunker=new w.Dechunker,this._chunker=new w.Chunker(n),this._packer=new E.Packer(this._chunker),this._unpacker=new E.Unpacker,this._isHandlingFailure=!1,this._currentFailure=null,this._isBroken=!1,this._unpacker.structMappers[D]=W.node,this._unpacker.structMappers[q]=W.rel,this._unpacker.structMappers[F]=W.unboundRel,this._unpacker.structMappers[z]=W.path;var u=this;this._ch.onmessage=function(l){var n=l.readInt32();1==n?(u._ch.onmessage=function(l){u._dechunker.write(l)},l.hasRemaining()&&u._dechunker.write(l.readSlice(l.remaining()))):1213486160==n?u._handleFatalError((0,j.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)")):u._handleFatalError((0,j.newError)("Unknown Bolt protocol version: "+n))},this._ch.onerror=this._handleFatalError.bind(this),this._ch._error&&this._handleFatalError(this._ch._error),this._dechunker.onmessage=function(l){u._handleMessage(u._unpacker.unpack(l))};var t=(0,M.alloc)(20);t.writeInt32(K),t.writeInt32(1),t.writeInt32(0),t.writeInt32(0),t.writeInt32(0),t.reset(),this._ch.write(t)}return(0,p["default"])(l,[{key:"_handleFatalError",value:function(l){for(this._isBroken=!0,this._error=l,this._currentObserver&&this._currentObserver.onError&&this._currentObserver.onError(l);this._pendingObservers.length>0;){var n=this._pendingObservers.shift();n&&n.onError&&n.onError(l)}}},{key:"_handleMessage",value:function(l){var n=this,e=l.fields[0];switch(l.signature){case U:s("S","RECORD",l),this._currentObserver.onNext(e);break;case P:s("S","SUCCESS",l);try{this._currentObserver.onCompleted(e)}finally{this._currentObserver=this._pendingObservers.shift()}break;case L:s("S","FAILURE",l);try{this._currentFailure=(0,j.newError)(e.message,e.code),this._currentObserver.onError(this._currentFailure)}finally{this._currentObserver=this._pendingObservers.shift(),this._isHandlingFailure||(this._isHandlingFailure=!0,this._ackFailure({onNext:a,onError:a,onCompleted:function(){n._isHandlingFailure=!1,n._currentFailure=null}}))}break;case N:s("S","IGNORED",l);try{this._currentFailure&&this._currentObserver.onError?this._currentObserver.onError(this._currentFailure):this._currentObserver.onError&&this._currentObserver.onError(e)}finally{this._currentObserver=this._pendingObservers.shift()}break;default:this._handleFatalError((0,j.newError)("Unknown Bolt protocol message: "+l))}}},{key:"initialize",value:function(l,n,e){var u=this;s("C","INIT",l,n),this._queueObserver(e),this._packer.packStruct(x,[this._packable(l),this._packable(n)],function(l){return u._handleFatalError(l)}),this._chunker.messageBoundary(),this.sync()}},{key:"run",value:function(l,n,e){var u=this;s("C","RUN",l,n),this._queueObserver(e),this._packer.packStruct(B,[this._packable(l),this._packable(n)],function(l){return u._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"pullAll",value:function(l){var n=this;s("C","PULL_ALL"),this._queueObserver(l),this._packer.packStruct(T,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"discardAll",value:function(l){var n=this;s("C","DISCARD_ALL"),this._queueObserver(l),this._packer.packStruct(O,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"resetAsync",value:function(l){var n=this;s("C","RESET_ASYNC"),this._isHandlingFailure=!0;var e=this,u={onNext:l?l.onNext:a,onError:l?l.onError:a,onCompleted:function(){e._isHandlingFailure=!1,l&&l.onCompleted()}};this._queueObserver(u),this._packer.packStruct(R,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"reset",value:function(l){var n=this;s("C","RESET"),this._queueObserver(l),this._packer.packStruct(R,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_ackFailure",value:function(l){var n=this;s("C","ACK_FAILURE"),this._queueObserver(l),this._packer.packStruct(C,[],function(l){return n._handleFatalError(l)}),this._chunker.messageBoundary()}},{key:"_queueObserver",value:function(l){return this._isBroken?void(l&&l.onError&&l.onError(this._error)):(l=l||Y,l.onCompleted=l.onCompleted||a,l.onError=l.onError||a,l.onNext=l.onNext||a,void(void 0===this._currentObserver?this._currentObserver=l:this._pendingObservers.push(l)))}},{key:"sync",value:function(){this._chunker.flush()}},{key:"isOpen",value:function(){return!this._isBroken&&this._ch._open}},{key:"isEncrypted",value:function(){return this._ch.isEncrypted()}},{key:"close",value:function(l){this._ch.close(l)}},{key:"_packable",value:function(l){var n=this;return this._packer.packable(l,function(l){return n._handleFatalError(l)})}},{key:"setServerVersion",value:function(l){this.server.version=l}}]),l}();e.connect=f,e.parseScheme=t,e.parseUrl=r,e.Connection=X},{"../graph-types":277,"./../error":276,"./buf":280,"./ch-node":281,"./ch-websocket":282,"./chunking":283,"./features":287,"./packstream":289,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],287:[function(l,n,e){"use strict";function u(l){return t[l]&&t[l]()}Object.defineProperty(e,"__esModule",{value:!0});var t={trust_on_first_use:function(){try{var n=l("tls").TLSSocket.prototype.getPeerCertificate,e=n.length;return e>=1}catch(u){return!1}},trust_all_certificates:function(){try{l("tls").TLSSocket.prototype.getPeerCertificate;return!0}catch(n){return!1}}};e["default"]=u},{tls:63}],288:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/json/stringify"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("./round-robin-array"),c=u(f),h=l("../error"),d=l("../integer"),p=u(d),b="CALL dbms.cluster.routing.getServers",v="Neo.ClientError.Procedure.ProcedureNotFound",_=function(){function l(){(0,o["default"])(this,l)}return(0,a["default"])(l,[{key:"callGetServers",value:function(l,n){return l.run(b).then(function(n){return l.close(),n.records})["catch"](function(l){if(l.code===v)throw(0,h.newError)("Server "+n+" could not perform routing. Make sure you are connecting to a causal cluster",h.SERVICE_UNAVAILABLE);return null})}},{key:"parseTtl",value:function(l,n){try{var e=(0,d["int"])(Date.now()),u=l.get("ttl").multiply(1e3).add(e);return u.lessThan(e)?p["default"].MAX_VALUE:u}catch(t){throw(0,h.newError)("Unable to parse TTL entry from router "+n+" from record:\n"+(0,r["default"])(l),h.PROTOCOL_ERROR)}}},{key:"parseServers",value:function(l,n){try{var e=l.get("servers"),u=new c["default"],t=new c["default"],i=new c["default"];return e.forEach(function(l){var n=l.role,e=l.addresses;if("ROUTE"===n)u.pushAll(e);else if("WRITE"===n)i.pushAll(e);else{if("READ"!==n)throw(0,h.newError)('Unknown server role "'+n+'"',h.PROTOCOL_ERROR);t.pushAll(e)}}),{routers:u,readers:t,writers:i}}catch(o){throw(0,h.newError)("Unable to parse servers entry from router "+n+" from record:\n"+(0,r["default"])(l),h.PROTOCOL_ERROR)}}}]),l}();e["default"]=_},{"../error":276,"../integer":279,"./round-robin-array":292,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],289:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0}),e.Structure=e.Unpacker=e.Packer=void 0;var t=l("babel-runtime/core-js/object/keys"),r=u(t),i=l("babel-runtime/helpers/typeof"),o=u(i),s=l("babel-runtime/helpers/classCallCheck"),a=u(s),f=l("babel-runtime/helpers/createClass"),c=u(f),h=l("./utf8"),d=u(h),p=l("../integer"),b=u(p),v=l("./../error"),_=128,y=144,m=160,g=176,w=192,k=193,S=194,E=195,M=200,I=201,j=202,A=203,x=208,C=209,R=210,B=212,O=213,T=214,P=216,U=217,N=218,L=220,D=221,q=function(){function l(n,e){(0,a["default"])(this,l),this.signature=n,this.fields=e}return(0,c["default"])(l,[{key:"toString",value:function(){for(var l="",n=0;n0&&(l+=", "),l+=this.fields[n];return"Structure("+this.signature+", ["+this.fields+"])"}}]),l}(),F=function(){function l(n){(0,a["default"])(this,l),this._ch=n}return(0,c["default"])(l,[{key:"packable",value:function(l,n){var e=this;if(null===l)return function(){return e._ch.writeUInt8(w)};if(l===!0)return function(){return e._ch.writeUInt8(E)};if(l===!1)return function(){return e._ch.writeUInt8(S)};if("number"==typeof l)return function(){return e.packFloat(l)};if("string"==typeof l)return function(){return e.packString(l,n)};if((0,p.isInt)(l))return function(){return e.packInteger(l)};if(l instanceof Array)return function(){e.packListHeader(l.length,n);for(var u=0;u>0),this._ch.writeUInt8(u%256),this._ch.writeBytes(e)):u<4294967296?(this._ch.writeUInt8(R),this._ch.writeUInt8((u/16777216>>0)%256),this._ch.writeUInt8((u/65536>>0)%256),this._ch.writeUInt8((u/256>>0)%256),this._ch.writeUInt8(u%256),this._ch.writeBytes(e)):n((0,v.newError)("UTF-8 strings of size "+u+" are not supported"))}},{key:"packListHeader",value:function(l,n){l<16?this._ch.writeUInt8(y|l):l<256?(this._ch.writeUInt8(B),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(O),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(T),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,v.newError)("Lists of size "+l+" are not supported"))}},{key:"packMapHeader",value:function(l,n){l<16?this._ch.writeUInt8(m|l):l<256?(this._ch.writeUInt8(P),this._ch.writeUInt8(l)):l<65536?(this._ch.writeUInt8(U),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):l<4294967296?(this._ch.writeUInt8(N),this._ch.writeUInt8((l/16777216>>0)%256),this._ch.writeUInt8((l/65536>>0)%256),this._ch.writeUInt8((l/256>>0)%256),this._ch.writeUInt8(l%256)):n((0,v.newError)("Maps of size "+l+" are not supported"))}},{key:"packStructHeader",value:function(l,n,e){l<16?(this._ch.writeUInt8(g|l),this._ch.writeUInt8(n)):l<256?(this._ch.writeUInt8(L),this._ch.writeUInt8(l),this._ch.writeUInt8(n)):l<65536?(this._ch.writeUInt8(D),this._ch.writeUInt8(l/256>>0),this._ch.writeUInt8(l%256)):e((0,v.newError)("Structures of size "+l+" are not supported"))}}]),l}(),z=function(){function l(){(0,a["default"])(this,l),this.structMappers={}}return(0,c["default"])(l,[{key:"unpackList",value:function(l,n){for(var e=[],u=0;u=0&&n<128)return(0,p["int"])(n);if(n>=240&&n<256)return(0,p["int"])(n-256);if(n==M)return(0,p["int"])(l.readInt8());if(n==I)return(0,p["int"])(l.readInt16());if(n==j){var e=l.readInt32();return(0,p["int"])(e)}if(n==A){var u=l.readInt32(),t=l.readInt32();return new b["default"](t,u)}if(n==x)return d["default"].decode(l,l.readUInt8());if(n==C)return d["default"].decode(l,l.readUInt16());if(n==R)return d["default"].decode(l,l.readUInt32());if(n==B)return this.unpackList(l.readUInt8(),l);if(n==O)return this.unpackList(l.readUInt16(),l);if(n==T)return this.unpackList(l.readUInt32(),l);if(n==P)return this.unpackMap(l.readUInt8(),l);if(n==U)return this.unpackMap(l.readUInt16(),l);if(n==N)return this.unpackMap(l.readUInt32(),l);if(n==L)return this.unpackStruct(l.readUInt8(),l);if(n==D)return this.unpackStruct(l.readUInt16(),l);var r=240&n,i=15&n;if(128==r)return d["default"].decode(l,i);if(144==r)return this.unpackList(i,l);if(160==r)return this.unpackMap(i,l);if(176==r)return this.unpackStruct(i,l);throw(0,v.newError)("Unknown packed value with marker "+n.toString(16))}}]),l}();e.Packer=F,e.Unpacker=z,e.Structure=q},{"../integer":279,"./../error":276,"./utf8":296,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/typeof":34}],290:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=function(){function l(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return!0},u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0},t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:50;(0,r["default"])(this,l),this._create=n,this._destroy=e,this._validate=u,this._maxIdle=t, +this._pools={},this._release=this._release.bind(this)}return(0,o["default"])(l,[{key:"acquire",value:function(l){var n=void 0,e=this._pools[l];for(e||(e=[],this._pools[l]=e);e.length;){if(n=e.pop(),this._validate(n))return n;this._destroy(n)}return this._create(l,this._release)}},{key:"purge",value:function(l){for(var n=void 0,e=this._pools[l]||[];e.length;)n=e.pop(),this._destroy(n);delete this._pools[l]}},{key:"purgeAll",value:function(){for(var l in this._pools.keys)this._pools.hasOwnPropertykey&&this.purge(l)}},{key:"has",value:function(l){return l in this._pools}},{key:"_release",value:function(l,n){var e=this._pools[l];e&&(e.length>=this._maxIdle||!this._validate(n)?this._destroy(n):e.push(n))}}]),l}();e["default"]=s},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],291:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/json/stringify"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("./get-servers-util"),c=u(f),h=l("./routing-table"),d=u(h),p=l("../error"),b=function(){function l(n){(0,o["default"])(this,l),this._getServersUtil=n||new c["default"]}return(0,a["default"])(l,[{key:"lookupRoutingTableOnRouter",value:function(n,e){var u=this;return this._getServersUtil.callGetServers(n,e).then(function(n){if(null===n)return null;if(1!==n.length)throw(0,p.newError)('Illegal response from router "'+e+'". Received '+n.length+" records but expected only one.\n"+(0,r["default"])(n),p.PROTOCOL_ERROR);var t=n[0],i=u._getServersUtil.parseTtl(t,e),o=u._getServersUtil.parseServers(t,e),s=o.routers,a=o.readers,f=o.writers;return l._assertNonEmpty(s,"routers",e),l._assertNonEmpty(a,"readers",e),new d["default"](s,a,f,i)})}}],[{key:"_assertNonEmpty",value:function(l,n,e){if(l.isEmpty())throw(0,p.newError)("Received no "+n+" from router "+e,p.PROTOCOL_ERROR)}}]),l}();e["default"]=b},{"../error":276,"./get-servers-util":288,"./routing-table":293,"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],292:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=function(){function l(n){(0,r["default"])(this,l),this._items=n||[],this._offset=0}return(0,o["default"])(l,[{key:"next",value:function(){if(this.isEmpty())return null;var l=this._offset%this.size();return this._offset++,this._items[l]}},{key:"pushAll",value:function(l){if(!Array.isArray(l))throw new TypeError("Array expected but got: "+l);Array.prototype.push.apply(this._items,l)}},{key:"isEmpty",value:function(){return 0===this._items.length}},{key:"size",value:function(){return this._items.length}},{key:"toArray",value:function(){return this._items}},{key:"remove",value:function(l){this._items=this._items.filter(function(n){return n!==l})}}]),l}();e["default"]=s},{"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],293:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/toConsumableArray"),r=u(t),i=l("babel-runtime/core-js/array/from"),o=u(i),s=l("babel-runtime/core-js/set"),a=u(s),f=l("babel-runtime/helpers/classCallCheck"),c=u(f),h=l("babel-runtime/helpers/createClass"),d=u(h),p=l("../integer"),b=l("./round-robin-array"),v=u(b),_=1,y=function(){function l(n,e,u,t){(0,c["default"])(this,l),this.routers=n||new v["default"],this.readers=e||new v["default"],this.writers=u||new v["default"],this.expirationTime=t||(0,p["int"])(0)}return(0,d["default"])(l,[{key:"forget",value:function(l){this.readers.remove(l),this.writers.remove(l)}},{key:"forgetRouter",value:function(l){this.routers.remove(l)}},{key:"forgetWriter",value:function(l){this.writers.remove(l)}},{key:"serversDiff",value:function(l){var n=new a["default"](this._allServers()),e=l._allServers();return e.forEach(function(l){return n["delete"](l)}),(0,o["default"])(n)}},{key:"isStale",value:function(){return this.expirationTime.lessThan(Date.now())||this.routers.size()<=_||this.readers.isEmpty()||this.writers.isEmpty()}},{key:"_allServers",value:function(){return[].concat((0,r["default"])(this.routers.toArray()),(0,r["default"])(this.readers.toArray()),(0,r["default"])(this.writers.toArray()))}}]),l}();e["default"]=y},{"../integer":279,"./round-robin-array":292,"babel-runtime/core-js/array/from":15,"babel-runtime/core-js/set":25,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/toConsumableArray":33}],294:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/helpers/classCallCheck"),r=u(t),i=l("babel-runtime/helpers/createClass"),o=u(i),s=l("../record"),a=u(s),f=function(){function l(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(l){return l};(0,r["default"])(this,l),this._fieldKeys=null,this._fieldLookup=null,this._queuedRecords=[],this._tail=null,this._error=null,this._hasFailed=!1,this._errorTransformer=n}return(0,o["default"])(l,[{key:"onNext",value:function(l){var n=new a["default"](this._fieldKeys,l,this._fieldLookup);this._observer?this._observer.onNext(n):this._queuedRecords.push(n)}},{key:"onCompleted",value:function(l){if(null===this._fieldKeys){if(this._fieldKeys=[],this._fieldLookup={},l.fields&&l.fields.length>0){this._fieldKeys=l.fields;for(var n=0;n0)for(var n=0;n<_queuedRecords.length;n++)l.onNext(_queuedRecords[n]);this._tail&&l.onCompleted(this._tail),this._observer=l}}]),l}();e["default"]=f},{"../record":298,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],295:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l,n){return l||0===l?l:n}Object.defineProperty(e,"__esModule",{value:!0});var r=l("babel-runtime/core-js/promise"),i=u(r),o=l("babel-runtime/helpers/classCallCheck"),s=u(o),a=l("babel-runtime/helpers/createClass"),f=u(a),c=l("../error"),h=3e4,d=1e3,p=2,b=.2,v=function(){function l(n,e,u,r){(0,s["default"])(this,l),this._maxRetryTimeMs=t(n,h),this._initialRetryDelayMs=t(e,d),this._multiplier=t(u,p),this._jitterFactor=t(r,b),this._inFlightTimeoutIds=[],this._verifyAfterConstruction()}return(0,f["default"])(l,[{key:"execute",value:function(l,n){var e=this;return new i["default"](function(u,t){e._executeTransactionInsidePromise(l,n,u,t)})["catch"](function(u){var t=Date.now(),r=e._initialRetryDelayMs;return e._retryTransactionPromise(l,n,u,t,r)})}},{key:"close",value:function(){this._inFlightTimeoutIds.forEach(function(l){return clearTimeout(l)}),this._inFlightTimeoutIds=[]}},{key:"_retryTransactionPromise",value:function(n,e,u,t,r){var o=this,s=Date.now()-t;return s>this._maxRetryTimeMs||!l._canRetryOn(u)?i["default"].reject(u):new i["default"](function(l,u){var t=o._computeDelayWithJitter(r),i=setTimeout(function(){o._inFlightTimeoutIds=o._inFlightTimeoutIds.filter(function(l){return l!==i}),o._executeTransactionInsidePromise(n,e,l,u)},t);o._inFlightTimeoutIds.push(i)})["catch"](function(l){var u=r*o._multiplier;return o._retryTransactionPromise(n,e,l,t,u)})}},{key:"_executeTransactionInsidePromise",value:function(l,n,e,u){try{var t=l(),r=n(t),o=i["default"].resolve(r);o.then(function(l){t.isOpen()?t.commit().then(function(){e(l)})["catch"](function(l){u(l)}):e(l)})["catch"](function(l){u(l)})}catch(s){u(s)}}},{key:"_computeDelayWithJitter",value:function(l){var n=l*this._jitterFactor,e=l-n,u=l+n;return Math.random()*(u-e)+e}},{key:"_verifyAfterConstruction",value:function(){if(this._maxRetryTimeMs<0)throw(0,c.newError)("Max retry time should be >= 0: "+this._maxRetryTimeMs);if(this._initialRetryDelayMs<0)throw(0,c.newError)("Initial retry delay should >= 0: "+this._initialRetryDelayMs);if(this._multiplier<1)throw(0,c.newError)("Multiplier should be >= 1.0: "+this._multiplier);if(this._jitterFactor<0||this._jitterFactor>1)throw(0,c.newError)("Jitter factor should be in [0.0, 1.0]: "+this._jitterFactor)}}],[{key:"_canRetryOn",value:function(l){return l&&l.code&&(l.code===c.SERVICE_UNAVAILABLE||l.code===c.SESSION_EXPIRED||l.code.indexOf("TransientError")>=0)}}]),l}();e["default"]=v},{"../error":276,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],296:[function(l,n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var u=l("./buf"),t=l("string_decoder"),r=l("./../error"),i={};try{l.resolve("buffer");var o=new t.StringDecoder("utf8"),s=l("buffer");i={encode:function(l){return new u.NodeBuffer(new s.Buffer(l,"UTF-8"))},decode:function(l,n){if(l instanceof u.NodeBuffer){var e=l.position,t=e+n;return l.position=Math.min(t,l.length),l._buffer.toString("utf8",e,t)}if(l instanceof u.CombinedBuffer){var i=d(l,n,function(l){return o.write(l._buffer)},function(){return o.end()});return i}throw(0,r.newError)("Don't know how to decode strings from `"+l+"`.")}}}catch(a){var f=l("../../external/text-encoding/index"),c=new f.TextEncoder("utf-8"),h=new f.TextDecoder("utf-8");i={encode:function(l){return new u.HeapBuffer(c.encode(l).buffer)},decode:function(l,n){if(l instanceof u.HeapBuffer)return h.decode(l.readView(Math.min(n,l.length-l.position)));for(var e=(0,u.alloc)(n),t=0;t=n.length)return r-=n.length,"";n._updatePos(r-n.position);var u=Math.min(n.length-r,t),i=n.readSlice(u);return n._updatePos(u),t=Math.max(t-i.length,0),r=0,l+e(i)},"");return i+u()};e["default"]=i},{"../../external/text-encoding/index":271,"./../error":276,"./buf":280,buffer:66,string_decoder:268}],297:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){if(r(l))return!0;if(!i(l))return!1;for(var n in l)if(l.hasOwnProperty(n))return!1;return!0}function r(l){return null===l}function i(l){var n="undefined"==typeof l?"undefined":(0,h["default"])(l);return"function"===n||"object"===n&&Boolean(l)}function o(l,n){if(!s(l))throw new TypeError(n+" expected to be string but was: "+(0,f["default"])(l));return l}function s(l){return"[object String]"===Object.prototype.toString.call(l)}Object.defineProperty(e,"__esModule",{value:!0}),e.ENCRYPTION_OFF=e.ENCRYPTION_ON=e.assertString=e.isEmptyObjectOrNull=void 0;var a=l("babel-runtime/core-js/json/stringify"),f=u(a),c=l("babel-runtime/helpers/typeof"),h=u(c),d="ENCRYPTION_ON",p="ENCRYPTION_OFF";e.isEmptyObjectOrNull=t,e.assertString=o,e.ENCRYPTION_ON=d,e.ENCRYPTION_OFF=p},{"babel-runtime/core-js/json/stringify":16,"babel-runtime/helpers/typeof":34}],298:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n={};return l.forEach(function(l,e){n[l]=e}),n}Object.defineProperty(e,"__esModule",{value:!0});var r=l("babel-runtime/helpers/classCallCheck"),i=u(r),o=l("babel-runtime/helpers/createClass"),s=u(o),a=l("./error"),f=function(){function l(n,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;(0,i["default"])(this,l),this.keys=n,this.length=n.length,this._fields=e,this._fieldLookup=u||t(n)}return(0,s["default"])(l,[{key:"forEach",value:function(l){for(var n=0;nthis._fields.length-1||n<0)throw(0,a.newError)("This record has no field with index '"+n+"'. Remember that indexes start at `0`, and make sure your statement returns records in the shape you meant it to.");return this._fields[n]}},{key:"has",value:function(l){return"number"==typeof l?l>=0&&l0}},{key:"nodesCreated",value:function(){return this._stats.nodesCreated}},{key:"nodesDeleted",value:function(){return this._stats.nodesDeleted}},{key:"relationshipsCreated",value:function(){return this._stats.relationshipsCreated}},{key:"relationshipsDeleted",value:function(){return this._stats.relationshipsDeleted}},{key:"propertiesSet",value:function(){return this._stats.propertiesSet}},{key:"labelsAdded",value:function(){return this._stats.labelsAdded}},{key:"labelsRemoved",value:function(){return this._stats.labelsRemoved}},{key:"indexesAdded",value:function(){return this._stats.indexesAdded}},{key:"indexesRemoved",value:function(){return this._stats.indexesRemoved}},{key:"constraintsAdded",value:function(){return this._stats.constraintsAdded}},{key:"constraintsRemoved",value:function(){return this._stats.constraintsRemoved}}]),l}(),b=function(){function l(n){(0,o["default"])(this,l),this.code=n.code,this.title=n.title,this.description=n.description,this.severity=n.severity,this.position=l._constructPosition(n.position)}return(0,a["default"])(l,null,[{key:"_constructPosition",value:function(l){return l?{offset:l.offset.toInt(),line:l.line.toInt(),column:l.column.toInt()}:{}}}]),l}(),v=function g(l){(0,o["default"])(this,g),l&&(this.address=l.address,this.version=l.version)},_={READ_ONLY:"r",READ_WRITE:"rw",WRITE_ONLY:"w",SCHEMA_WRITE:"s"};e.statementType=_,e["default"]=c},{"./integer":279,"babel-runtime/core-js/object/keys":22,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],300:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/promise"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("./result-summary"),c=u(f),h=l("./internal/connection-holder"),d=function(){function l(n,e,u,t,r){(0,o["default"])(this,l),this._streamObserver=n,this._p=null,this._statement=e,this._parameters=u||{},this._metaSupplier=t||function(){return{}},this._connectionHolder=r||h.EMPTY_CONNECTION_HOLDER}return(0,a["default"])(l,[{key:"_createPromise",value:function(){if(!this._p){var l=this;this._p=new r["default"](function(n,e){var u=[],t={onNext:function(l){u.push(l)},onCompleted:function(l){n({records:u,summary:l})},onError:function(l){e(l)}};l.subscribe(t)})}}},{key:"then",value:function(l,n){return this._createPromise(),this._p.then(l,n)}},{key:"catch",value:function(l){return this._createPromise(),this._p["catch"](l)}},{key:"subscribe",value:function(l){var n=this,e=l.onCompleted,u=this,t=function(t){var r=u._metaSupplier();for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i]);var o=new c["default"](n._statement,n._parameters,t);u._connectionHolder.releaseConnection().then(function(){e.call(l,o)})};l.onCompleted=t;var r=l.onError||function(l){console.log("Uncaught error when processing result: "+l)},i=function(n){u._connectionHolder.releaseConnection().then(function(){r.call(l,n)})};l.onError=i,this._streamObserver.subscribe(l)}}]),l}();e["default"]=d},{"./internal/connection-holder":284,"./result-summary":299,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29}],301:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}Object.defineProperty(e,"__esModule",{value:!0});var t=l("babel-runtime/core-js/object/get-prototype-of"),r=u(t),i=l("babel-runtime/helpers/classCallCheck"),o=u(i),s=l("babel-runtime/helpers/createClass"),a=u(s),f=l("babel-runtime/helpers/possibleConstructorReturn"),c=u(f),h=l("babel-runtime/helpers/inherits"),d=u(h),p=l("./session"),b=u(p),v=l("./driver"),_=l("./error"),y=l("./internal/connection-providers"),m=function(l){function n(l,e){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},t=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return(0,o["default"])(this,n),(0,c["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this,l,e,u,n._validateConfig(t)))}return(0,d["default"])(n,l),(0,a["default"])(n,[{key:"_createConnectionProvider",value:function(l,n,e){return new y.LoadBalancer(l,n,e)}},{key:"_createSession",value:function(l,n,e,u){var t=this;return new g(l,n,e,u,function(l,n){if(l.code===_.SERVICE_UNAVAILABLE||l.code===_.SESSION_EXPIRED)return n&&t._connectionProvider.forget(n.url),l;if("Neo.ClientError.Cluster.NotALeader"===l.code){var e="UNKNOWN";return n&&(e=n.url,t._connectionProvider.forgetWriter(n.url)),(0,_.newError)("No longer possible to write to server at "+e,_.SESSION_EXPIRED)}return l})}}],[{key:"_validateConfig",value:function(l){if("TRUST_ON_FIRST_USE"===l.trust)throw(0,_.newError)("The chosen trust mode is not compatible with a routing driver");return l}}]),n}(v.Driver),g=function(l){function n(l,e,u,t,i){(0,o["default"])(this,n);var s=(0,c["default"])(this,(n.__proto__||(0,r["default"])(n)).call(this,l,e,u,t));return s._onFailedConnection=i,s}return(0,d["default"])(n,l),(0,a["default"])(n,[{key:"_onRunFailure",value:function(){return this._onFailedConnection}}]),n}(b["default"]);e["default"]=m},{"./driver":275,"./error":276,"./internal/connection-providers":285,"./session":302,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32}],302:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l){var n=l&&l.maxTransactionRetryTime?l.maxTransactionRetryTime:null;return new T["default"](n)}Object.defineProperty(e,"__esModule",{value:!0});var r=l("babel-runtime/core-js/object/assign"),i=u(r),o=l("babel-runtime/core-js/object/get-prototype-of"),s=u(o),a=l("babel-runtime/helpers/possibleConstructorReturn"),f=u(a),c=l("babel-runtime/helpers/get"),h=u(c),d=l("babel-runtime/helpers/inherits"),p=u(d),b=l("babel-runtime/helpers/typeof"),v=u(b),_=l("babel-runtime/helpers/classCallCheck"),y=u(_),m=l("babel-runtime/helpers/createClass"),g=u(m),w=l("./internal/stream-observer"),k=u(w),S=l("./result"),E=u(S),M=l("./transaction"),I=u(M),j=l("./error"),A=l("./internal/util"),x=l("./internal/connection-holder"),C=u(x),R=l("./driver"),B=u(R),O=l("./internal/transaction-executor"),T=u(O),P=function(){function l(n,e,u,r){(0,y["default"])(this,l),this._mode=n,this._readConnectionHolder=new C["default"](R.READ,e),this._writeConnectionHolder=new C["default"](R.WRITE,e),this._open=!0,this._hasTx=!1,this._lastBookmark=u,this._transactionExecutor=t(r)}return(0,g["default"])(l,[{key:"run",value:function(l){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"object"===("undefined"==typeof l?"undefined":(0,v["default"])(l))&&l.text&&(n=l.parameters||{},l=l.text),(0,A.assertString)(l,"Cypher statement");var e=new U(this._onRunFailure()),u=this._connectionHolderWithMode(this._mode);return this._hasTx?e.onError((0,j.newError)("Statements cannot be run directly on a session with an open transaction; either run from within the transaction or use a different session.")):(u.initializeConnection(),u.getConnection().then(function(u){e.resolveConnection(u),u.run(l,n,e),u.pullAll(e),u.sync()})["catch"](function(l){return e.onError(l)})),new E["default"](e,l,n,function(){return e.meta()},u)}},{key:"beginTransaction",value:function(l){return this._beginTransaction(this._mode,l)}},{key:"_beginTransaction",value:function(l,n){var e=this;if(n&&((0,A.assertString)(n,"Bookmark"),this._updateBookmark(n)),this._hasTx)throw(0,j.newError)("You cannot begin a transaction on a session with an open transaction; either run from within the transaction or use a different session.");var u=B["default"]._validateSessionMode(l),t=this._connectionHolderWithMode(u);return t.initializeConnection(),this._hasTx=!0,new I["default"](t,function(){e._hasTx=!1},this._onRunFailure(),this._lastBookmark,this._updateBookmark.bind(this))}},{key:"lastBookmark",value:function(){return this._lastBookmark}},{key:"readTransaction",value:function(l){return this._runTransaction(R.READ,l)}},{key:"writeTransaction",value:function(l){return this._runTransaction(R.WRITE,l)}},{key:"_runTransaction",value:function(l,n){var e=this;return this._transactionExecutor.execute(function(){return e._beginTransaction(l,e.lastBookmark())},n)}},{key:"_updateBookmark",value:function(l){l&&(this._lastBookmark=l)}},{key:"close",value:function(){var l=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return null};this._open?(this._open=!1,this._transactionExecutor.close(),this._readConnectionHolder.close().then(function(){l._writeConnectionHolder.close().then(function(){n()})})):n()}},{key:"_onRunFailure",value:function(){return function(l){return l}}},{key:"_connectionHolderWithMode",value:function(l){if(l===R.READ)return this._readConnectionHolder;if(l===R.WRITE)return this._writeConnectionHolder;throw(0,j.newError)("Unknown access mode: "+l)}}]),l}(),U=function(l){function n(l){(0,y["default"])(this,n);var e=(0,f["default"])(this,(n.__proto__||(0,s["default"])(n)).call(this,l));return e._meta={},e}return(0,p["default"])(n,l),(0,g["default"])(n,[{key:"onCompleted",value:function(l){(0,h["default"])(n.prototype.__proto__||(0,s["default"])(n.prototype),"onCompleted",this).call(this,l);for(var e in l)l.hasOwnProperty(e)&&(this._meta[e]=l[e])}},{key:"meta",value:function(){var l={server:this._conn.server};return(0,i["default"])({},this._meta,l)}}]),n}(k["default"]);e["default"]=P},{"./driver":275,"./error":276,"./internal/connection-holder":284,"./internal/stream-observer":294,"./internal/transaction-executor":295,"./internal/util":297,"./result":300,"./transaction":303,"babel-runtime/core-js/object/assign":17,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],303:[function(l,n,e){"use strict";function u(l){return l&&l.__esModule?l:{"default":l}}function t(l,n,e){return n.getConnection().then(function(n){e.resolveConnection(n),n.run(l,{},e),n.pullAll(e),n.sync()})["catch"](function(l){return e.onError(l)}),new j["default"](e,l,{},o,n)}function r(l,n,e,u){return new j["default"](l,n,e,u,x.EMPTY_CONNECTION_HOLDER)}function i(l,n,e){return new j["default"](l,n,e,o,x.EMPTY_CONNECTION_HOLDER)}function o(){return{}}Object.defineProperty(e,"__esModule",{value:!0});var s=l("babel-runtime/core-js/object/get-prototype-of"),a=u(s),f=l("babel-runtime/helpers/possibleConstructorReturn"),c=u(f),h=l("babel-runtime/helpers/get"),d=u(h),p=l("babel-runtime/helpers/inherits"),b=u(p),v=l("babel-runtime/core-js/promise"),_=u(v),y=l("babel-runtime/helpers/typeof"),m=u(y),g=l("babel-runtime/helpers/classCallCheck"),w=u(g),k=l("babel-runtime/helpers/createClass"),S=u(k),E=l("./internal/stream-observer"),M=u(E),I=l("./result"),j=u(I),A=l("./internal/util"),x=l("./internal/connection-holder"),C=function(){function l(n,e,u,t,r){(0,w["default"])(this,l),this._connectionHolder=n;var i=new R(this),o={};t&&(o={bookmark:t}),this._connectionHolder.getConnection().then(function(l){i.resolveConnection(l),l.run("BEGIN",o,i),l.pullAll(i)})["catch"](function(l){return i.onError(l)}),this._state=B.ACTIVE,this._onClose=e,this._errorTransformer=u,this._onBookmark=r||function(){}}return(0,S["default"])(l,[{key:"run",value:function(l,n){return"object"===("undefined"==typeof l?"undefined":(0,m["default"])(l))&&l.text&&(n=l.parameters||{},l=l.text),(0,A.assertString)(l,"Cypher statement"),this._state.run(this._connectionHolder,new R(this),l,n)}},{key:"commit",value:function(){var l=this._state.commit(this._connectionHolder,new R(this));return this._state=l.state,this._onClose(),l.result}},{key:"rollback",value:function(){var l=this._state.rollback(this._connectionHolder,new R(this));return this._state=l.state,this._onClose(),l.result}},{key:"isOpen",value:function(){return this._state==B.ACTIVE}},{key:"_onError",value:function(){var l=this;return this.isOpen()?this.rollback()["catch"](function(l){}).then(function(){l._state=B.FAILED}):(this._state=B.FAILED,this._onClose(),_["default"].resolve())}}]),l}(),R=function(l){function n(l){(0,w["default"])(this,n);var e=(0,c["default"])(this,(n.__proto__||(0,a["default"])(n)).call(this,l._errorTransformer||function(l){return l}));return e._tx=l,e._hasFailed=!1,e}return(0,b["default"])(n,l),(0,S["default"])(n,[{key:"onError",value:function(l){var e=this;this._hasFailed||this._tx._onError().then(function(){(0,d["default"])(n.prototype.__proto__||(0,a["default"])(n.prototype),"onError",e).call(e,l),e._hasFailed=!0})}},{key:"onCompleted",value:function(l){(0,d["default"])(n.prototype.__proto__||(0,a["default"])(n.prototype),"onCompleted",this).call(this,l);var e=l.bookmark;this._tx._onBookmark(e)}},{key:"serverMeta",value:function e(){var e={server:this._conn.server};return e}}]),n}(M["default"]),B={ACTIVE:{commit:function(l,n){return{result:t("COMMIT",l,n),state:B.SUCCEEDED}},rollback:function(l,n){return{result:t("ROLLBACK",l,n),state:B.ROLLED_BACK}},run:function(l,n,e,u){return l.getConnection().then(function(l){n.resolveConnection(l),l.run(e,u||{},n),l.pullAll(n),l.sync()})["catch"](function(l){return n.onError(l)}),r(n,e,u,function(){return n.serverMeta()})}},FAILED:{commit:function(l,n){return n.onError({error:"Cannot commit statements in this transaction, because previous statements in the transaction has failed and the transaction has been rolled back. Please start a new transaction to run another statement."}),{result:i(n,"COMMIT",{}),state:B.FAILED}},rollback:function(l,n){return n.onError({error:"Cannot rollback transaction, because previous statements in the transaction has failed and the transaction has already been rolled back."}),{result:i(n,"ROLLBACK",{}),state:B.FAILED}},run:function(l,n,e,u){return n.onError({error:"Cannot run statement, because previous statements in the transaction has failed and the transaction has already been rolled back."}),i(n,e,u)}},SUCCEEDED:{commit:function(l,n){return n.onError({error:"Cannot commit statements in this transaction, because commit has already been successfully called on the transaction and transaction has been closed. Please start a new transaction to run another statement."}),{result:i(n,"COMMIT",{}),state:B.SUCCEEDED}},rollback:function(l,n){return n.onError({error:"Cannot rollback transaction, because transaction has already been successfully closed."}),{result:i(n,"ROLLBACK",{}),state:B.SUCCEEDED}},run:function(l,n,e,u){return n.onError({error:"Cannot run statement, because transaction has already been successfully closed."}),i(n,e,u)}},ROLLED_BACK:{commit:function(l,n){return n.onError({error:"Cannot commit this transaction, because it has already been rolled back."}),{result:i(n,"COMMIT",{}),state:B.ROLLED_BACK}},rollback:function(l,n){return n.onError({error:"Cannot rollback transaction, because transaction has already been rolled back."}),{result:i(n,"ROLLBACK",{}),state:B.ROLLED_BACK}},run:function(l,n,e,u){return n.onError({error:"Cannot run statement, because transaction has already been rolled back."}),i(n,e,u)}}};e["default"]=C},{"./internal/connection-holder":284,"./internal/stream-observer":294,"./internal/util":297,"./result":300,"babel-runtime/core-js/object/get-prototype-of":21,"babel-runtime/core-js/promise":24,"babel-runtime/helpers/classCallCheck":28,"babel-runtime/helpers/createClass":29,"babel-runtime/helpers/get":30,"babel-runtime/helpers/inherits":31,"babel-runtime/helpers/possibleConstructorReturn":32,"babel-runtime/helpers/typeof":34}],304:[function(l,n,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e["default"]="0.0.0-dev"},{}]},{},[274])(274)}); \ No newline at end of file diff --git a/lib/browser/neo4j-web.test.js b/lib/browser/neo4j-web.test.js index 13dbc26d3..ddd7dfb3d 100644 --- a/lib/browser/neo4j-web.test.js +++ b/lib/browser/neo4j-web.test.js @@ -6207,7 +6207,7 @@ try { exports.default = _nodeChannelModule; -},{"./../error":5,"./buf":9,"./util":27,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"crypto":219,"fs":97,"net":97,"os":264,"path":269,"readline":97,"tls":97}],12:[function(require,module,exports){ +},{"./../error":5,"./buf":9,"./util":27,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"crypto":219,"fs":97,"net":97,"os":264,"path":270,"readline":97,"tls":97}],12:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -9340,7 +9340,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports.default = platformObj; -},{"../../external/text-encoding/index":1,"./../error":5,"./buf":9,"buffer":100,"string_decoder":302}],27:[function(require,module,exports){ +},{"../../external/text-encoding/index":1,"./../error":5,"./buf":9,"buffer":100,"string_decoder":303}],27:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -10532,7 +10532,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -10552,7 +10552,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -11164,7 +11164,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":35,"inherits":257,"vm":304}],37:[function(require,module,exports){ +},{"../asn1":35,"inherits":257,"vm":305}],37:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -17881,7 +17881,7 @@ function getr(priv) { }).call(this,require("buffer").Buffer) -},{"bn.js":70,"buffer":100,"randombytes":280}],92:[function(require,module,exports){ +},{"bn.js":70,"buffer":100,"randombytes":281}],92:[function(require,module,exports){ (function (Buffer){ 'use strict' exports['RSA-SHA224'] = exports.sha224WithRSAEncryption = { @@ -18066,7 +18066,7 @@ module.exports = { }).call(this,require("buffer").Buffer) -},{"./algos":92,"./sign":95,"./verify":96,"buffer":100,"create-hash":215,"inherits":257,"stream":301}],94:[function(require,module,exports){ +},{"./algos":92,"./sign":95,"./verify":96,"buffer":100,"create-hash":215,"inherits":257,"stream":302}],94:[function(require,module,exports){ 'use strict' exports['1.3.132.0.10'] = 'secp256k1' @@ -18270,7 +18270,7 @@ module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":94,"bn.js":70,"browserify-rsa":91,"buffer":100,"create-hmac":218,"elliptic":230,"parse-asn1":268}],96:[function(require,module,exports){ +},{"./curves":94,"bn.js":70,"browserify-rsa":91,"buffer":100,"create-hmac":218,"elliptic":230,"parse-asn1":269}],96:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var curves = require('./curves') @@ -18378,7 +18378,7 @@ module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":94,"bn.js":70,"buffer":100,"elliptic":230,"parse-asn1":268}],97:[function(require,module,exports){ +},{"./curves":94,"bn.js":70,"buffer":100,"elliptic":230,"parse-asn1":269}],97:[function(require,module,exports){ arguments[4][72][0].apply(exports,arguments) },{"dup":72}],98:[function(require,module,exports){ (function (global){ @@ -20397,7 +20397,7 @@ CipherBase.prototype._toString = function (value, enc, fin) { }).call(this,require("buffer").Buffer) -},{"buffer":100,"inherits":257,"stream":301,"string_decoder":302}],102:[function(require,module,exports){ +},{"buffer":100,"inherits":257,"stream":302,"string_decoder":303}],102:[function(require,module,exports){ require('../../modules/es6.string.iterator'); require('../../modules/es6.array.from'); module.exports = require('../../modules/_core').Array.from; @@ -22809,7 +22809,7 @@ module.exports = function createHash (alg) { }).call(this,require("buffer").Buffer) -},{"./md5":217,"buffer":100,"cipher-base":101,"inherits":257,"ripemd160":292,"sha.js":294}],216:[function(require,module,exports){ +},{"./md5":217,"buffer":100,"cipher-base":101,"inherits":257,"ripemd160":293,"sha.js":295}],216:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -23077,7 +23077,7 @@ module.exports = function createHmac(alg, key) { }).call(this,require("buffer").Buffer) -},{"buffer":100,"create-hash/browser":215,"inherits":257,"stream":301}],219:[function(require,module,exports){ +},{"buffer":100,"create-hash/browser":215,"inherits":257,"stream":302}],219:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -23156,7 +23156,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":88,"browserify-sign":93,"browserify-sign/algos":92,"create-ecdh":214,"create-hash":215,"create-hmac":218,"diffie-hellman":226,"pbkdf2":270,"public-encrypt":274,"randombytes":280}],220:[function(require,module,exports){ +},{"browserify-cipher":88,"browserify-sign":93,"browserify-sign/algos":92,"create-ecdh":214,"create-hash":215,"create-hmac":218,"diffie-hellman":226,"pbkdf2":271,"public-encrypt":275,"randombytes":281}],220:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -24051,7 +24051,7 @@ function formatReturnValue(bn, enc) { }).call(this,require("buffer").Buffer) -},{"./generatePrime":228,"bn.js":70,"buffer":100,"miller-rabin":261,"randombytes":280}],228:[function(require,module,exports){ +},{"./generatePrime":228,"bn.js":70,"buffer":100,"miller-rabin":261,"randombytes":281}],228:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -24158,7 +24158,7 @@ function findPrime(bits, gen) { } -},{"bn.js":70,"miller-rabin":261,"randombytes":280}],229:[function(require,module,exports){ +},{"bn.js":70,"miller-rabin":261,"randombytes":281}],229:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -30862,9 +30862,12 @@ module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", },{}],266:[function(require,module,exports){ // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js // Fedor, you are amazing. +'use strict' var asn1 = require('asn1.js') +exports.certificate = require('./certificate') + var RSAPrivateKey = asn1.define('RSAPrivateKey', function () { this.seq().obj( this.key('version').int(), @@ -30956,6 +30959,7 @@ exports.DSAPrivateKey = DSAPrivateKey exports.DSAparam = asn1.define('DSAparam', function () { this.int() }) + var ECPrivateKey = asn1.define('ECPrivateKey', function () { this.seq().obj( this.key('version').int(), @@ -30965,6 +30969,7 @@ var ECPrivateKey = asn1.define('ECPrivateKey', function () { ) }) exports.ECPrivateKey = ECPrivateKey + var ECParameters = asn1.define('ECParameters', function () { this.choice({ namedCurve: this.objid() @@ -30978,12 +30983,102 @@ exports.signature = asn1.define('signature', function () { ) }) -},{"asn1.js":35}],267:[function(require,module,exports){ +},{"./certificate":267,"asn1.js":35}],267:[function(require,module,exports){ +// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js +// thanks to @Rantanen + +'use strict' + +var asn = require('asn1.js') + +var Time = asn.define('Time', function () { + this.choice({ + utcTime: this.utctime(), + generalTime: this.gentime() + }) +}) + +var AttributeTypeValue = asn.define('AttributeTypeValue', function () { + this.seq().obj( + this.key('type').objid(), + this.key('value').any() + ) +}) + +var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () { + this.seq().obj( + this.key('algorithm').objid(), + this.key('parameters').optional() + ) +}) + +var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () { + this.seq().obj( + this.key('algorithm').use(AlgorithmIdentifier), + this.key('subjectPublicKey').bitstr() + ) +}) + +var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () { + this.setof(AttributeTypeValue) +}) + +var RDNSequence = asn.define('RDNSequence', function () { + this.seqof(RelativeDistinguishedName) +}) + +var Name = asn.define('Name', function () { + this.choice({ + rdnSequence: this.use(RDNSequence) + }) +}) + +var Validity = asn.define('Validity', function () { + this.seq().obj( + this.key('notBefore').use(Time), + this.key('notAfter').use(Time) + ) +}) + +var Extension = asn.define('Extension', function () { + this.seq().obj( + this.key('extnID').objid(), + this.key('critical').bool().def(false), + this.key('extnValue').octstr() + ) +}) + +var TBSCertificate = asn.define('TBSCertificate', function () { + this.seq().obj( + this.key('version').explicit(0).int(), + this.key('serialNumber').int(), + this.key('signature').use(AlgorithmIdentifier), + this.key('issuer').use(Name), + this.key('validity').use(Validity), + this.key('subject').use(Name), + this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), + this.key('issuerUniqueID').implicit(1).bitstr().optional(), + this.key('subjectUniqueID').implicit(2).bitstr().optional(), + this.key('extensions').explicit(3).seqof(Extension).optional() + ) +}) + +var X509Certificate = asn.define('X509Certificate', function () { + this.seq().obj( + this.key('tbsCertificate').use(TBSCertificate), + this.key('signatureAlgorithm').use(AlgorithmIdentifier), + this.key('signatureValue').bitstr() + ) +}) + +module.exports = X509Certificate + +},{"asn1.js":35}],268:[function(require,module,exports){ (function (Buffer){ // adapted from https://github.com/apatil/pemstrip -var findProc = /Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m -var startRegex = /^-----BEGIN (.*) KEY-----\r?\n/m -var fullRegex = /^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m +var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m +var startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n/m +var fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?-----END \1-----$/m var evp = require('evp_bytestokey') var ciphers = require('browserify-aes') module.exports = function (okey, password) { @@ -31004,7 +31099,7 @@ module.exports = function (okey, password) { out.push(cipher.final()) decrypted = Buffer.concat(out) } - var tag = key.match(startRegex)[1] + ' KEY' + var tag = key.match(startRegex)[1] return { tag: tag, data: decrypted @@ -31013,7 +31108,7 @@ module.exports = function (okey, password) { }).call(this,require("buffer").Buffer) -},{"browserify-aes":75,"buffer":100,"evp_bytestokey":247}],268:[function(require,module,exports){ +},{"browserify-aes":75,"buffer":100,"evp_bytestokey":247}],269:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -31038,8 +31133,13 @@ function parseKeys (buffer) { var data = stripped.data var subtype, ndata switch (type) { + case 'CERTIFICATE': + ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo + // falls through case 'PUBLIC KEY': - ndata = asn1.PublicKey.decode(data, 'der') + if (!ndata) { + ndata = asn1.PublicKey.decode(data, 'der') + } subtype = ndata.algorithm.algorithm.join('.') switch (subtype) { case '1.2.840.113549.1.1.1': @@ -31119,7 +31219,7 @@ function decrypt (data, password) { }).call(this,require("buffer").Buffer) -},{"./aesid.json":265,"./asn1":266,"./fixProc":267,"browserify-aes":75,"buffer":100,"pbkdf2":270}],269:[function(require,module,exports){ +},{"./aesid.json":265,"./asn1":266,"./fixProc":268,"browserify-aes":75,"buffer":100,"pbkdf2":271}],270:[function(require,module,exports){ (function (process){ // Copyright Joyent, Inc. and other Node contributors. // @@ -31348,7 +31448,7 @@ var substr = 'ab'.substr(-1) === 'b' }).call(this,require('_process')) -},{"_process":273}],270:[function(require,module,exports){ +},{"_process":274}],271:[function(require,module,exports){ (function (process,Buffer){ var createHmac = require('create-hmac') var checkParameters = require('./precondition') @@ -31421,7 +31521,7 @@ exports.pbkdf2Sync = function (password, salt, iterations, keylen, digest) { }).call(this,require('_process'),require("buffer").Buffer) -},{"./precondition":271,"_process":273,"buffer":100,"create-hmac":218}],271:[function(require,module,exports){ +},{"./precondition":272,"_process":274,"buffer":100,"create-hmac":218}],272:[function(require,module,exports){ var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs module.exports = function (iterations, keylen) { if (typeof iterations !== 'number') { @@ -31441,7 +31541,7 @@ module.exports = function (iterations, keylen) { } } -},{}],272:[function(require,module,exports){ +},{}],273:[function(require,module,exports){ (function (process){ 'use strict'; @@ -31489,7 +31589,7 @@ function nextTick(fn, arg1, arg2, arg3) { }).call(this,require('_process')) -},{"_process":273}],273:[function(require,module,exports){ +},{"_process":274}],274:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -31671,7 +31771,7 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],274:[function(require,module,exports){ +},{}],275:[function(require,module,exports){ exports.publicEncrypt = require('./publicEncrypt'); exports.privateDecrypt = require('./privateDecrypt'); @@ -31682,7 +31782,7 @@ exports.privateEncrypt = function privateEncrypt(key, buf) { exports.publicDecrypt = function publicDecrypt(key, buf) { return exports.privateDecrypt(key, buf, true); }; -},{"./privateDecrypt":276,"./publicEncrypt":277}],275:[function(require,module,exports){ +},{"./privateDecrypt":277,"./publicEncrypt":278}],276:[function(require,module,exports){ (function (Buffer){ var createHash = require('create-hash'); module.exports = function (seed, len) { @@ -31702,7 +31802,7 @@ function i2ops(c) { } }).call(this,require("buffer").Buffer) -},{"buffer":100,"create-hash":215}],276:[function(require,module,exports){ +},{"buffer":100,"create-hash":215}],277:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -31814,7 +31914,7 @@ function compare(a, b){ } }).call(this,require("buffer").Buffer) -},{"./mgf":275,"./withPublic":278,"./xor":279,"bn.js":70,"browserify-rsa":91,"buffer":100,"create-hash":215,"parse-asn1":268}],277:[function(require,module,exports){ +},{"./mgf":276,"./withPublic":279,"./xor":280,"bn.js":70,"browserify-rsa":91,"buffer":100,"create-hash":215,"parse-asn1":269}],278:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -31913,7 +32013,7 @@ function nonZero(len, crypto) { } }).call(this,require("buffer").Buffer) -},{"./mgf":275,"./withPublic":278,"./xor":279,"bn.js":70,"browserify-rsa":91,"buffer":100,"create-hash":215,"parse-asn1":268,"randombytes":280}],278:[function(require,module,exports){ +},{"./mgf":276,"./withPublic":279,"./xor":280,"bn.js":70,"browserify-rsa":91,"buffer":100,"create-hash":215,"parse-asn1":269,"randombytes":281}],279:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -31927,7 +32027,7 @@ function withPublic(paddedMsg, key) { module.exports = withPublic; }).call(this,require("buffer").Buffer) -},{"bn.js":70,"buffer":100}],279:[function(require,module,exports){ +},{"bn.js":70,"buffer":100}],280:[function(require,module,exports){ module.exports = function xor(a, b) { var len = a.length; var i = -1; @@ -31936,7 +32036,7 @@ module.exports = function xor(a, b) { } return a }; -},{}],280:[function(require,module,exports){ +},{}],281:[function(require,module,exports){ (function (process,global,Buffer){ 'use strict' @@ -31977,10 +32077,10 @@ function randomBytes (size, cb) { }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"_process":273,"buffer":100}],281:[function(require,module,exports){ +},{"_process":274,"buffer":100}],282:[function(require,module,exports){ module.exports = require("./lib/_stream_duplex.js") -},{"./lib/_stream_duplex.js":282}],282:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":283}],283:[function(require,module,exports){ // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from @@ -32056,7 +32156,7 @@ function forEach(xs, f) { f(xs[i], i); } } -},{"./_stream_readable":284,"./_stream_writable":286,"core-util-is":213,"inherits":257,"process-nextick-args":272}],283:[function(require,module,exports){ +},{"./_stream_readable":285,"./_stream_writable":287,"core-util-is":213,"inherits":257,"process-nextick-args":273}],284:[function(require,module,exports){ // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. @@ -32083,7 +32183,7 @@ function PassThrough(options) { PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; -},{"./_stream_transform":285,"core-util-is":213,"inherits":257}],284:[function(require,module,exports){ +},{"./_stream_transform":286,"core-util-is":213,"inherits":257}],285:[function(require,module,exports){ (function (process){ 'use strict'; @@ -32179,7 +32279,7 @@ function ReadableState(options, stream) { this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + this.highWaterMark = ~~this.highWaterMark; // A linked list is used to store data chunks instead of an array because the // linked list can remove elements from the beginning faster than @@ -33028,7 +33128,7 @@ function indexOf(xs, x) { } }).call(this,require('_process')) -},{"./_stream_duplex":282,"./internal/streams/BufferList":287,"_process":273,"buffer":100,"buffer-shims":98,"core-util-is":213,"events":246,"inherits":257,"isarray":259,"process-nextick-args":272,"string_decoder/":302,"util":72}],285:[function(require,module,exports){ +},{"./_stream_duplex":283,"./internal/streams/BufferList":288,"_process":274,"buffer":100,"buffer-shims":98,"core-util-is":213,"events":246,"inherits":257,"isarray":259,"process-nextick-args":273,"string_decoder/":303,"util":72}],286:[function(require,module,exports){ // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -33211,7 +33311,7 @@ function done(stream, er, data) { return stream.push(null); } -},{"./_stream_duplex":282,"core-util-is":213,"inherits":257}],286:[function(require,module,exports){ +},{"./_stream_duplex":283,"core-util-is":213,"inherits":257}],287:[function(require,module,exports){ (function (process){ // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all @@ -33292,7 +33392,7 @@ function WritableState(options, stream) { this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + this.highWaterMark = ~~this.highWaterMark; // drain event flag. this.needDrain = false; @@ -33447,20 +33547,16 @@ function writeAfterEnd(stream, cb) { processNextTick(cb, er); } -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. function validChunk(stream, state, chunk, cb) { var valid = true; var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. + if (chunk === null) { er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { er = new TypeError('Invalid non-string/buffer chunk'); } if (er) { @@ -33474,19 +33570,20 @@ function validChunk(stream, state, chunk, cb) { Writable.prototype.write = function (chunk, encoding, cb) { var state = this._writableState; var ret = false; + var isBuf = Buffer.isBuffer(chunk); if (typeof encoding === 'function') { cb = encoding; encoding = null; } - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; if (typeof cb !== 'function') cb = nop; - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); } return ret; @@ -33526,10 +33623,11 @@ function decodeChunk(state, chunk, encoding) { // if we're already writing something, then just put this // in the queue, and wait our turn. Otherwise, call _write // If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + chunk = decodeChunk(state, chunk, encoding); + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + } var len = state.objectMode ? 1 : chunk.length; state.length += len; @@ -33598,8 +33696,8 @@ function onwrite(stream, er) { asyncWrite(afterWrite, stream, state, finished, cb); /**/ } else { - afterWrite(stream, state, finished, cb); - } + afterWrite(stream, state, finished, cb); + } } } @@ -33750,7 +33848,6 @@ function CorkedRequest(state) { this.next = null; this.entry = null; - this.finish = function (err) { var entry = _this.entry; _this.entry = null; @@ -33769,7 +33866,7 @@ function CorkedRequest(state) { } }).call(this,require('_process')) -},{"./_stream_duplex":282,"_process":273,"buffer":100,"buffer-shims":98,"core-util-is":213,"events":246,"inherits":257,"process-nextick-args":272,"util-deprecate":303}],287:[function(require,module,exports){ +},{"./_stream_duplex":283,"_process":274,"buffer":100,"buffer-shims":98,"core-util-is":213,"events":246,"inherits":257,"process-nextick-args":273,"util-deprecate":304}],288:[function(require,module,exports){ 'use strict'; var Buffer = require('buffer').Buffer; @@ -33834,10 +33931,10 @@ BufferList.prototype.concat = function (n) { } return ret; }; -},{"buffer":100,"buffer-shims":98}],288:[function(require,module,exports){ +},{"buffer":100,"buffer-shims":98}],289:[function(require,module,exports){ module.exports = require("./lib/_stream_passthrough.js") -},{"./lib/_stream_passthrough.js":283}],289:[function(require,module,exports){ +},{"./lib/_stream_passthrough.js":284}],290:[function(require,module,exports){ (function (process){ var Stream = (function (){ try { @@ -33858,13 +33955,13 @@ if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { }).call(this,require('_process')) -},{"./lib/_stream_duplex.js":282,"./lib/_stream_passthrough.js":283,"./lib/_stream_readable.js":284,"./lib/_stream_transform.js":285,"./lib/_stream_writable.js":286,"_process":273}],290:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":283,"./lib/_stream_passthrough.js":284,"./lib/_stream_readable.js":285,"./lib/_stream_transform.js":286,"./lib/_stream_writable.js":287,"_process":274}],291:[function(require,module,exports){ module.exports = require("./lib/_stream_transform.js") -},{"./lib/_stream_transform.js":285}],291:[function(require,module,exports){ +},{"./lib/_stream_transform.js":286}],292:[function(require,module,exports){ module.exports = require("./lib/_stream_writable.js") -},{"./lib/_stream_writable.js":286}],292:[function(require,module,exports){ +},{"./lib/_stream_writable.js":287}],293:[function(require,module,exports){ (function (Buffer){ /* CryptoJS v3.1.2 @@ -34079,7 +34176,7 @@ module.exports = ripemd160 }).call(this,require("buffer").Buffer) -},{"buffer":100}],293:[function(require,module,exports){ +},{"buffer":100}],294:[function(require,module,exports){ (function (Buffer){ // prototype class for hash functions function Hash (blockSize, finalSize) { @@ -34153,7 +34250,7 @@ module.exports = Hash }).call(this,require("buffer").Buffer) -},{"buffer":100}],294:[function(require,module,exports){ +},{"buffer":100}],295:[function(require,module,exports){ var exports = module.exports = function SHA (algorithm) { algorithm = algorithm.toLowerCase() @@ -34170,7 +34267,7 @@ exports.sha256 = require('./sha256') exports.sha384 = require('./sha384') exports.sha512 = require('./sha512') -},{"./sha":295,"./sha1":296,"./sha224":297,"./sha256":298,"./sha384":299,"./sha512":300}],295:[function(require,module,exports){ +},{"./sha":296,"./sha1":297,"./sha224":298,"./sha256":299,"./sha384":300,"./sha512":301}],296:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined @@ -34268,7 +34365,7 @@ module.exports = Sha }).call(this,require("buffer").Buffer) -},{"./hash":293,"buffer":100,"inherits":257}],296:[function(require,module,exports){ +},{"./hash":294,"buffer":100,"inherits":257}],297:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined @@ -34371,7 +34468,7 @@ module.exports = Sha1 }).call(this,require("buffer").Buffer) -},{"./hash":293,"buffer":100,"inherits":257}],297:[function(require,module,exports){ +},{"./hash":294,"buffer":100,"inherits":257}],298:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -34428,7 +34525,7 @@ module.exports = Sha224 }).call(this,require("buffer").Buffer) -},{"./hash":293,"./sha256":298,"buffer":100,"inherits":257}],298:[function(require,module,exports){ +},{"./hash":294,"./sha256":299,"buffer":100,"inherits":257}],299:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -34567,7 +34664,7 @@ module.exports = Sha256 }).call(this,require("buffer").Buffer) -},{"./hash":293,"buffer":100,"inherits":257}],299:[function(require,module,exports){ +},{"./hash":294,"buffer":100,"inherits":257}],300:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var SHA512 = require('./sha512') @@ -34628,7 +34725,7 @@ module.exports = Sha384 }).call(this,require("buffer").Buffer) -},{"./hash":293,"./sha512":300,"buffer":100,"inherits":257}],300:[function(require,module,exports){ +},{"./hash":294,"./sha512":301,"buffer":100,"inherits":257}],301:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var Hash = require('./hash') @@ -34892,7 +34989,7 @@ module.exports = Sha512 }).call(this,require("buffer").Buffer) -},{"./hash":293,"buffer":100,"inherits":257}],301:[function(require,module,exports){ +},{"./hash":294,"buffer":100,"inherits":257}],302:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -35021,7 +35118,7 @@ Stream.prototype.pipe = function(dest, options) { return dest; }; -},{"events":246,"inherits":257,"readable-stream/duplex.js":281,"readable-stream/passthrough.js":288,"readable-stream/readable.js":289,"readable-stream/transform.js":290,"readable-stream/writable.js":291}],302:[function(require,module,exports){ +},{"events":246,"inherits":257,"readable-stream/duplex.js":282,"readable-stream/passthrough.js":289,"readable-stream/readable.js":290,"readable-stream/transform.js":291,"readable-stream/writable.js":292}],303:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -35244,7 +35341,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":100}],303:[function(require,module,exports){ +},{"buffer":100}],304:[function(require,module,exports){ (function (global){ /** @@ -35316,7 +35413,7 @@ function config (name) { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],304:[function(require,module,exports){ +},{}],305:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -35456,13 +35553,13 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":256}],305:[function(require,module,exports){ +},{"indexof":256}],306:[function(require,module,exports){ arguments[4][1][0].apply(exports,arguments) -},{"./lib/encoding.js":307,"dup":1}],306:[function(require,module,exports){ +},{"./lib/encoding.js":308,"dup":1}],307:[function(require,module,exports){ arguments[4][2][0].apply(exports,arguments) -},{"dup":2}],307:[function(require,module,exports){ +},{"dup":2}],308:[function(require,module,exports){ arguments[4][3][0].apply(exports,arguments) -},{"./encoding-indexes.js":306,"dup":3}],308:[function(require,module,exports){ +},{"./encoding-indexes.js":307,"dup":3}],309:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35745,7 +35842,7 @@ exports.READ = READ; exports.WRITE = WRITE; exports.default = Driver; -},{"./error":309,"./internal/connection-providers":319,"./internal/connector":320,"./internal/pool":324,"./internal/stream-observer":328,"./session":336,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],309:[function(require,module,exports){ +},{"./error":310,"./internal/connection-providers":320,"./internal/connector":321,"./internal/pool":325,"./internal/stream-observer":329,"./session":337,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],310:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -35828,7 +35925,7 @@ exports.SERVICE_UNAVAILABLE = SERVICE_UNAVAILABLE; exports.SESSION_EXPIRED = SESSION_EXPIRED; exports.PROTOCOL_ERROR = PROTOCOL_ERROR; -},{"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],310:[function(require,module,exports){ +},{"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],311:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -36059,7 +36156,7 @@ exports.UnboundRelationship = UnboundRelationship; exports.Path = Path; exports.PathSegment = PathSegment; -},{"babel-runtime/core-js/json/stringify":50,"babel-runtime/core-js/object/keys":56,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],311:[function(require,module,exports){ +},{"babel-runtime/core-js/json/stringify":50,"babel-runtime/core-js/object/keys":56,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],312:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -36273,7 +36370,7 @@ exports.session = session; exports.error = error; exports.default = forExport; -},{"../version":338,"./driver":308,"./error":309,"./graph-types":310,"./integer":312,"./internal/connector":320,"./internal/util":331,"./record":332,"./result":334,"./result-summary":333,"./routing-driver":335}],312:[function(require,module,exports){ +},{"../version":339,"./driver":309,"./error":310,"./graph-types":311,"./integer":313,"./internal/connector":321,"./internal/util":332,"./record":333,"./result":335,"./result-summary":334,"./routing-driver":336}],313:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -37254,7 +37351,7 @@ exports.toNumber = toNumber; exports.toString = toString; exports.default = Integer; -},{"./error":309,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],313:[function(require,module,exports){ +},{"./error":310,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],314:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -38042,7 +38139,7 @@ exports.CombinedBuffer = CombinedBuffer; exports.NodeBuffer = NodeBuffer; exports.alloc = alloc; -},{"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"buffer":100}],314:[function(require,module,exports){ +},{"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"buffer":100}],315:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -38127,7 +38224,7 @@ var channel = DummyChannel; exports.channel = channel; exports.observer = observer; -},{"./buf":313,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],315:[function(require,module,exports){ +},{"./buf":314,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],316:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -38524,7 +38621,7 @@ try { exports.default = _nodeChannelModule; -},{"./../error":309,"./buf":313,"./util":331,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"crypto":219,"fs":97,"net":97,"os":264,"path":269,"readline":97,"tls":97}],316:[function(require,module,exports){ +},{"./../error":310,"./buf":314,"./util":332,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"crypto":219,"fs":97,"net":97,"os":264,"path":270,"readline":97,"tls":97}],317:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38689,7 +38786,7 @@ var _websocketChannelModule = { channel: WebSocketChannel, available: available exports.default = _websocketChannelModule; -},{"./../error":309,"./buf":313,"./util":331,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],317:[function(require,module,exports){ +},{"./../error":310,"./buf":314,"./util":332,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],318:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -38956,7 +39053,7 @@ var Dechunker = function () { exports.Chunker = Chunker; exports.Dechunker = Dechunker; -},{"./buf":313,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],318:[function(require,module,exports){ +},{"./buf":314,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],319:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -39162,7 +39259,7 @@ var EmptyConnectionHolder = function (_ConnectionHolder) { var EMPTY_CONNECTION_HOLDER = exports.EMPTY_CONNECTION_HOLDER = new EmptyConnectionHolder(); -},{"../error":309,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],319:[function(require,module,exports){ +},{"../error":310,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],320:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -39446,7 +39543,7 @@ var SingleConnectionProvider = exports.SingleConnectionProvider = function (_Con return SingleConnectionProvider; }(ConnectionProvider); -},{"../driver":308,"../error":309,"../session":336,"./rediscovery":325,"./round-robin-array":326,"./routing-table":327,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],320:[function(require,module,exports){ +},{"../driver":309,"../error":310,"../session":337,"./rediscovery":326,"./round-robin-array":327,"./routing-table":328,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],321:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -40064,7 +40161,7 @@ exports.parseScheme = parseScheme; exports.parseUrl = parseUrl; exports.Connection = Connection; -},{"../graph-types":310,"./../error":309,"./buf":313,"./ch-node":315,"./ch-websocket":316,"./chunking":317,"./features":321,"./packstream":323,"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],321:[function(require,module,exports){ +},{"../graph-types":311,"./../error":310,"./buf":314,"./ch-node":316,"./ch-websocket":317,"./chunking":318,"./features":322,"./packstream":324,"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],322:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -40121,7 +40218,7 @@ function hasFeature(name) { exports.default = hasFeature; -},{"tls":97}],322:[function(require,module,exports){ +},{"tls":97}],323:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -40249,7 +40346,7 @@ var GetServersUtil = function () { exports.default = GetServersUtil; -},{"../error":309,"../integer":312,"./round-robin-array":326,"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],323:[function(require,module,exports){ +},{"../error":310,"../integer":313,"./round-robin-array":327,"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],324:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -40713,7 +40810,7 @@ exports.Packer = Packer; exports.Unpacker = Unpacker; exports.Structure = Structure; -},{"../integer":312,"./../error":309,"./utf8":330,"babel-runtime/core-js/object/keys":56,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/typeof":68}],324:[function(require,module,exports){ +},{"../integer":313,"./../error":310,"./utf8":331,"babel-runtime/core-js/object/keys":56,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/typeof":68}],325:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -40846,7 +40943,7 @@ var Pool = function () { exports.default = Pool; -},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],325:[function(require,module,exports){ +},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],326:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -40946,7 +41043,7 @@ var Rediscovery = function () { exports.default = Rediscovery; -},{"../error":309,"./get-servers-util":322,"./routing-table":327,"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],326:[function(require,module,exports){ +},{"../error":310,"./get-servers-util":323,"./routing-table":328,"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],327:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41040,7 +41137,7 @@ var RoundRobinArray = function () { exports.default = RoundRobinArray; -},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],327:[function(require,module,exports){ +},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],328:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -41150,7 +41247,7 @@ var RoutingTable = function () { exports.default = RoutingTable; -},{"../integer":312,"./round-robin-array":326,"babel-runtime/core-js/array/from":49,"babel-runtime/core-js/set":59,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/toConsumableArray":67}],328:[function(require,module,exports){ +},{"../integer":313,"./round-robin-array":327,"babel-runtime/core-js/array/from":49,"babel-runtime/core-js/set":59,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/toConsumableArray":67}],329:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -41324,7 +41421,7 @@ var StreamObserver = function () { exports.default = StreamObserver; -},{"../record":332,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],329:[function(require,module,exports){ +},{"../record":333,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],330:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41513,7 +41610,7 @@ function _valueOrDefault(value, defaultValue) { return defaultValue; } -},{"../error":309,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],330:[function(require,module,exports){ +},{"../error":310,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],331:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -41630,7 +41727,7 @@ var streamDecodeCombinedBuffer = function streamDecodeCombinedBuffer(combinedBuf exports.default = platformObj; -},{"../../external/text-encoding/index":305,"./../error":309,"./buf":313,"buffer":100,"string_decoder":302}],331:[function(require,module,exports){ +},{"../../external/text-encoding/index":306,"./../error":310,"./buf":314,"buffer":100,"string_decoder":303}],332:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -41713,7 +41810,7 @@ exports.assertString = assertString; exports.ENCRYPTION_ON = ENCRYPTION_ON; exports.ENCRYPTION_OFF = ENCRYPTION_OFF; -},{"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/typeof":68}],332:[function(require,module,exports){ +},{"babel-runtime/core-js/json/stringify":50,"babel-runtime/helpers/typeof":68}],333:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -41885,7 +41982,7 @@ var Record = function () { exports.default = Record; -},{"./error":309,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],333:[function(require,module,exports){ +},{"./error":310,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],334:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -42274,7 +42371,7 @@ var statementType = { exports.statementType = statementType; exports.default = ResultSummary; -},{"./integer":312,"babel-runtime/core-js/object/keys":56,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],334:[function(require,module,exports){ +},{"./integer":313,"babel-runtime/core-js/object/keys":56,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],335:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -42466,7 +42563,7 @@ var Result = function () { exports.default = Result; -},{"./internal/connection-holder":318,"./result-summary":333,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],335:[function(require,module,exports){ +},{"./internal/connection-holder":319,"./result-summary":334,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],336:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -42602,7 +42699,7 @@ var RoutingSession = function (_Session) { exports.default = RoutingDriver; -},{"./driver":308,"./error":309,"./internal/connection-providers":319,"./session":336,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],336:[function(require,module,exports){ +},{"./driver":309,"./error":310,"./internal/connection-providers":320,"./session":337,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],337:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -42818,7 +42915,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -42838,7 +42935,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -42960,7 +43057,7 @@ function _createTransactionExecutor(config) { exports.default = Session; -},{"./driver":308,"./error":309,"./internal/connection-holder":318,"./internal/stream-observer":328,"./internal/transaction-executor":329,"./internal/util":331,"./result":334,"./transaction":337,"babel-runtime/core-js/object/assign":51,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"babel-runtime/helpers/typeof":68}],337:[function(require,module,exports){ +},{"./driver":309,"./error":310,"./internal/connection-holder":319,"./internal/stream-observer":329,"./internal/transaction-executor":330,"./internal/util":332,"./result":335,"./transaction":338,"babel-runtime/core-js/object/assign":51,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"babel-runtime/helpers/typeof":68}],338:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -43344,7 +43441,7 @@ function emptyMetadataSupplier() { exports.default = Transaction; -},{"./internal/connection-holder":318,"./internal/stream-observer":328,"./internal/util":331,"./result":334,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"babel-runtime/helpers/typeof":68}],338:[function(require,module,exports){ +},{"./internal/connection-holder":319,"./internal/stream-observer":329,"./internal/util":332,"./result":335,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/get":64,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"babel-runtime/helpers/typeof":68}],339:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -43378,7 +43475,7 @@ Object.defineProperty(exports, "__esModule", { // system to control version names at packaging time. exports.default = "0.0.0-dev"; -},{}],339:[function(require,module,exports){ +},{}],340:[function(require,module,exports){ 'use strict'; /** @@ -43586,7 +43683,7 @@ function writeString(b, str) { return b; } -},{"../../lib/v1/internal/buf":9,"../../lib/v1/internal/packstream.js":19,"../../lib/v1/internal/utf8":26}],340:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":9,"../../lib/v1/internal/packstream.js":19,"../../lib/v1/internal/utf8":26}],341:[function(require,module,exports){ 'use strict'; /** @@ -43726,7 +43823,7 @@ function bytes() { return b; } -},{"../../lib/v1/internal/buf":9,"../../lib/v1/internal/ch-dummy.js":10,"../../lib/v1/internal/chunking":13}],341:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":9,"../../lib/v1/internal/ch-dummy.js":10,"../../lib/v1/internal/chunking":13}],342:[function(require,module,exports){ 'use strict'; var _promise = require('babel-runtime/core-js/promise'); @@ -43970,7 +44067,7 @@ function newSingleConnectionProvider(connection) { return new _connectionProviders.SingleConnectionProvider(_promise2.default.resolve(connection)); } -},{"../../src/v1/driver":308,"../../src/v1/internal/connection-holder":318,"../../src/v1/internal/connection-providers":319,"./fake-connection":344,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],342:[function(require,module,exports){ +},{"../../src/v1/driver":309,"../../src/v1/internal/connection-holder":319,"../../src/v1/internal/connection-providers":320,"./fake-connection":345,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66}],343:[function(require,module,exports){ 'use strict'; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); @@ -44463,7 +44560,7 @@ var FakeRediscovery = function () { return FakeRediscovery; }(); -},{"../../src/v1/driver":308,"../../src/v1/error":309,"../../src/v1/integer":312,"../../src/v1/internal/connection-providers":319,"../../src/v1/internal/pool":324,"../../src/v1/internal/round-robin-array":326,"../../src/v1/internal/routing-table":327,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],343:[function(require,module,exports){ +},{"../../src/v1/driver":309,"../../src/v1/error":310,"../../src/v1/integer":313,"../../src/v1/internal/connection-providers":320,"../../src/v1/internal/pool":325,"../../src/v1/internal/round-robin-array":327,"../../src/v1/internal/routing-table":328,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],344:[function(require,module,exports){ 'use strict'; var _chDummy = require('../../src/v1/internal/ch-dummy'); @@ -44616,7 +44713,7 @@ describe('connector', function () { } }); -},{"../../lib/v1/internal/ch-node.js":11,"../../src/v1/error":309,"../../src/v1/internal/buf":313,"../../src/v1/internal/ch-dummy":314,"../../src/v1/internal/chunking":317,"../../src/v1/internal/connector":320,"../../src/v1/internal/packstream":323}],344:[function(require,module,exports){ +},{"../../lib/v1/internal/ch-node.js":11,"../../src/v1/error":310,"../../src/v1/internal/buf":314,"../../src/v1/internal/ch-dummy":315,"../../src/v1/internal/chunking":318,"../../src/v1/internal/connector":321,"../../src/v1/internal/packstream":324}],345:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -44727,7 +44824,7 @@ var FakeConnection = function () { exports.default = FakeConnection; ; -},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],345:[function(require,module,exports){ +},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],346:[function(require,module,exports){ "use strict"; var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); @@ -45068,7 +45165,7 @@ describe('get-servers-util', function () { }(); }); -},{"../../src/v1/error":309,"../../src/v1/integer":312,"../../src/v1/internal/get-servers-util":322,"../../src/v1/record":332,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"lolex":260}],346:[function(require,module,exports){ +},{"../../src/v1/error":310,"../../src/v1/integer":313,"../../src/v1/internal/get-servers-util":323,"../../src/v1/record":333,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"lolex":260}],347:[function(require,module,exports){ "use strict"; /** @@ -45153,7 +45250,7 @@ function packAndUnpack(val, bufferSize) { return new Unpacker().unpack(buffer); } -},{"../../lib/v1/integer":8,"../../lib/v1/internal/buf":9,"../../lib/v1/internal/packstream":19}],347:[function(require,module,exports){ +},{"../../lib/v1/integer":8,"../../lib/v1/internal/buf":9,"../../lib/v1/internal/packstream":19}],348:[function(require,module,exports){ 'use strict'; /** @@ -45331,7 +45428,7 @@ function Resource(key, id, release) { }; } -},{"../../lib/v1/internal/pool":20}],348:[function(require,module,exports){ +},{"../../lib/v1/internal/pool":20}],349:[function(require,module,exports){ "use strict"; var _promise = require("babel-runtime/core-js/promise"); @@ -45658,7 +45755,7 @@ describe('rediscovery', function () { }(_getServersUtil2.default); }); -},{"../../src/v1/error":309,"../../src/v1/integer":312,"../../src/v1/internal/get-servers-util":322,"../../src/v1/internal/rediscovery":325,"../../src/v1/internal/round-robin-array":326,"../../src/v1/internal/routing-table":327,"../../src/v1/record":332,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"babel-runtime/helpers/toConsumableArray":67}],349:[function(require,module,exports){ +},{"../../src/v1/error":310,"../../src/v1/integer":313,"../../src/v1/internal/get-servers-util":323,"../../src/v1/internal/rediscovery":326,"../../src/v1/internal/round-robin-array":327,"../../src/v1/internal/routing-table":328,"../../src/v1/record":333,"babel-runtime/core-js/object/get-prototype-of":55,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63,"babel-runtime/helpers/inherits":65,"babel-runtime/helpers/possibleConstructorReturn":66,"babel-runtime/helpers/toConsumableArray":67}],350:[function(require,module,exports){ 'use strict'; var _roundRobinArray = require('../../lib/v1/internal/round-robin-array'); @@ -45881,7 +45978,7 @@ describe('round-robin-array', function () { * limitations under the License. */ -},{"../../lib/v1/internal/round-robin-array":22}],350:[function(require,module,exports){ +},{"../../lib/v1/internal/round-robin-array":22}],351:[function(require,module,exports){ "use strict"; var _routingTable = require("../../src/v1/internal/routing-table"); @@ -46071,7 +46168,7 @@ describe('routing-table', function () { * limitations under the License. */ -},{"../../src/v1/integer":312,"../../src/v1/internal/round-robin-array":326,"../../src/v1/internal/routing-table":327}],351:[function(require,module,exports){ +},{"../../src/v1/integer":313,"../../src/v1/internal/round-robin-array":327,"../../src/v1/internal/routing-table":328}],352:[function(require,module,exports){ (function (global){ "use strict"; @@ -46197,7 +46294,7 @@ var FakeDate = function () { }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],352:[function(require,module,exports){ +},{"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],353:[function(require,module,exports){ "use strict"; var _keys = require("babel-runtime/core-js/object/keys"); @@ -46616,7 +46713,7 @@ function unMuteConsoleLog(originalLog) { console.log = originalLog; } -},{"../../lib/v1":7,"../../lib/v1/internal/ch-node.js":11,"../../lib/v1/internal/features":17,"babel-runtime/core-js/object/keys":56,"fs":97,"path":269}],353:[function(require,module,exports){ +},{"../../lib/v1":7,"../../lib/v1/internal/ch-node.js":11,"../../lib/v1/internal/features":17,"babel-runtime/core-js/object/keys":56,"fs":97,"path":270}],354:[function(require,module,exports){ 'use strict'; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); @@ -46984,7 +47081,7 @@ var FakeTransaction = function () { return FakeTransaction; }(); -},{"../../src/v1/error":309,"../../src/v1/internal/transaction-executor":329,"./timers-util":351,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],354:[function(require,module,exports){ +},{"../../src/v1/error":310,"../../src/v1/internal/transaction-executor":330,"./timers-util":352,"babel-runtime/core-js/promise":58,"babel-runtime/helpers/classCallCheck":62,"babel-runtime/helpers/createClass":63}],355:[function(require,module,exports){ 'use strict'; /** @@ -47148,7 +47245,7 @@ function packAndUnpack(str) { return utf8.decode(buffer, buffer.length); } -},{"../../lib/v1/internal/buf":9,"../../lib/v1/internal/utf8":26}],355:[function(require,module,exports){ +},{"../../lib/v1/internal/buf":9,"../../lib/v1/internal/utf8":26}],356:[function(require,module,exports){ 'use strict'; /** @@ -47219,7 +47316,7 @@ describe('util', function () { } }); -},{"../../lib/v1/internal/util.js":27}],356:[function(require,module,exports){ +},{"../../lib/v1/internal/util.js":27}],357:[function(require,module,exports){ 'use strict'; /** @@ -47422,7 +47519,7 @@ describe('driver', function () { } }); -},{"../../lib/v1":7}],357:[function(require,module,exports){ +},{"../../lib/v1":7}],358:[function(require,module,exports){ 'use strict'; /** @@ -47469,7 +47566,7 @@ describe('Pool', function () { }); }); -},{"../../lib/v1":7}],358:[function(require,module,exports){ +},{"../../lib/v1":7}],359:[function(require,module,exports){ 'use strict'; /** @@ -47529,7 +47626,7 @@ describe('Package', function () { }); }); -},{"../../lib/v1/internal/ch-node":11,"os":264,"path":269}],359:[function(require,module,exports){ +},{"../../lib/v1/internal/ch-node":11,"os":264,"path":270}],360:[function(require,module,exports){ "use strict"; /** @@ -47637,7 +47734,7 @@ describe('Record', function () { }); }); -},{"../../lib/v1/error":5,"../../lib/v1/record":28}],360:[function(require,module,exports){ +},{"../../lib/v1/error":5,"../../lib/v1/record":28}],361:[function(require,module,exports){ "use strict"; /** @@ -47699,7 +47796,7 @@ describe('result stream', function () { }); }); -},{"../../lib/v1":7}],361:[function(require,module,exports){ +},{"../../lib/v1":7}],362:[function(require,module,exports){ 'use strict'; var _promise = require('babel-runtime/core-js/promise'); @@ -48583,7 +48680,7 @@ describe('session', function () { } }); -},{"../../src/v1":311,"../../src/v1/driver":308,"../../src/v1/internal/connection-providers":319,"../../src/v1/result-summary":333,"../../src/v1/session":336,"../internal/fake-connection":344,"babel-runtime/core-js/promise":58}],362:[function(require,module,exports){ +},{"../../src/v1":312,"../../src/v1/driver":309,"../../src/v1/internal/connection-providers":320,"../../src/v1/result-summary":334,"../../src/v1/session":337,"../internal/fake-connection":345,"babel-runtime/core-js/promise":58}],363:[function(require,module,exports){ 'use strict'; var _v = require('../../lib/v1'); @@ -49104,7 +49201,7 @@ describe('transaction', function () { * limitations under the License. */ -},{"../../lib/v1":7}],363:[function(require,module,exports){ +},{"../../lib/v1":7}],364:[function(require,module,exports){ 'use strict'; /** @@ -49256,5 +49353,5 @@ function testVal(val, expected) { }; } -},{"../../lib/v1":7}]},{},[339,340,341,342,343,345,346,347,348,349,350,352,353,354,355,356,357,358,359,360,361,362,363]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleC5qcyIsImxpYi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2xpYi9lbmNvZGluZy1pbmRleGVzLmpzIiwibGliL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvbGliL2VuY29kaW5nLmpzIiwibGliL3YxL2RyaXZlci5qcyIsImxpYi92MS9lcnJvci5qcyIsImxpYi92MS9ncmFwaC10eXBlcy5qcyIsImxpYi92MS9pbmRleC5qcyIsImxpYi92MS9pbnRlZ2VyLmpzIiwibGliL3YxL2ludGVybmFsL2J1Zi5qcyIsImxpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcyIsImxpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzIiwibGliL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsImxpYi92MS9pbnRlcm5hbC9jaHVua2luZy5qcyIsImxpYi92MS9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlci5qcyIsImxpYi92MS9pbnRlcm5hbC9jb25uZWN0aW9uLXByb3ZpZGVycy5qcyIsImxpYi92MS9pbnRlcm5hbC9jb25uZWN0b3IuanMiLCJsaWIvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCJsaWIvdjEvaW50ZXJuYWwvZ2V0LXNlcnZlcnMtdXRpbC5qcyIsImxpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzIiwibGliL3YxL2ludGVybmFsL3Bvb2wuanMiLCJsaWIvdjEvaW50ZXJuYWwvcmVkaXNjb3ZlcnkuanMiLCJsaWIvdjEvaW50ZXJuYWwvcm91bmQtcm9iaW4tYXJyYXkuanMiLCJsaWIvdjEvaW50ZXJuYWwvcm91dGluZy10YWJsZS5qcyIsImxpYi92MS9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXIuanMiLCJsaWIvdjEvaW50ZXJuYWwvdHJhbnNhY3Rpb24tZXhlY3V0b3IuanMiLCJsaWIvdjEvaW50ZXJuYWwvdXRmOC5qcyIsImxpYi92MS9pbnRlcm5hbC91dGlsLmpzIiwibGliL3YxL3JlY29yZC5qcyIsImxpYi92MS9yZXN1bHQtc3VtbWFyeS5qcyIsImxpYi92MS9yZXN1bHQuanMiLCJsaWIvdjEvcm91dGluZy1kcml2ZXIuanMiLCJsaWIvdjEvc2Vzc2lvbi5qcyIsImxpYi92MS90cmFuc2FjdGlvbi5qcyIsImxpYi92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9hcGkuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2J1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL25vZGUuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL3JlcG9ydGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvcGVtLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9wZW0uanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2FycmF5L2Zyb20uanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2tleXMuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zZXQuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldC5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIm5vZGVfbW9kdWxlcy9icm9yYW5kL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXItcmVzb2x2ZS9lbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYXV0aENpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2RlY3J5cHRlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9lbmNyeXB0ZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZ2hhc2guanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmIxLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY3RyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2VjYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9vZmIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvc3RyZWFtQ2lwaGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktY2lwaGVyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1yc2EvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2FsZ29zLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9jdXJ2ZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3NpZ24uanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3ZlcmlmeS5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXItc2hpbXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2lwaGVyLWJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb20uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2tleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zZXQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXN0cm9uZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fa2V5b2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXNhcC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190YXNrLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZGVmaW5lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc2V0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc2V0LnRvLWpzb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvbWQ1LmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvZWRlLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2RoLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9nZW5lcmF0ZVByaW1lLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9wcmltZXMuanNvbiIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9ldnBfYnl0ZXN0b2tleS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2htYWMtZHJiZy9saWIvaG1hYy1kcmJnLmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaW5kZXhvZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvbGV4L3NyYy9sb2xleC1zcmMuanMiLCJub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcyIsIm5vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL29zLWJyb3dzZXJpZnkvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2Flc2lkLmpzb24iLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hc24xLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvZml4UHJvYy5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3BhdGgtYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYmtkZjIvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9wYmtkZjIvcHJlY29uZGl0aW9uLmpzIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MtbmV4dGljay1hcmdzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L21nZi5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9wcml2YXRlRGVjcnlwdC5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9wdWJsaWNFbmNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3dpdGhQdWJsaWMuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQveG9yLmpzIiwibm9kZV9tb2R1bGVzL3JhbmRvbWJ5dGVzL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2R1cGxleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcmVhZGFibGUuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fd3JpdGFibGUuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yaXBlbWQxNjAvbGliL3JpcGVtZDE2MC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvaGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMS5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjI0LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyNTYuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTM4NC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhNTEyLmpzIiwibm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvdm0tYnJvd3NlcmlmeS9pbmRleC5qcyIsInNyYy92MS9kcml2ZXIuanMiLCJzcmMvdjEvZXJyb3IuanMiLCJzcmMvdjEvZ3JhcGgtdHlwZXMuanMiLCJzcmMvdjEvaW5kZXguanMiLCJzcmMvdjEvaW50ZWdlci5qcyIsInNyYy92MS9pbnRlcm5hbC9idWYuanMiLCJzcmMvdjEvaW50ZXJuYWwvY2gtZHVtbXkuanMiLCJzcmMvdjEvaW50ZXJuYWwvY2gtbm9kZS5qcyIsInNyYy92MS9pbnRlcm5hbC9jaC13ZWJzb2NrZXQuanMiLCJzcmMvdjEvaW50ZXJuYWwvY2h1bmtpbmcuanMiLCJzcmMvdjEvaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXIuanMiLCJzcmMvdjEvaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMuanMiLCJzcmMvdjEvaW50ZXJuYWwvY29ubmVjdG9yLmpzIiwic3JjL3YxL2ludGVybmFsL2ZlYXR1cmVzLmpzIiwic3JjL3YxL2ludGVybmFsL2dldC1zZXJ2ZXJzLXV0aWwuanMiLCJzcmMvdjEvaW50ZXJuYWwvcGFja3N0cmVhbS5qcyIsInNyYy92MS9pbnRlcm5hbC9wb29sLmpzIiwic3JjL3YxL2ludGVybmFsL3JlZGlzY292ZXJ5LmpzIiwic3JjL3YxL2ludGVybmFsL3JvdW5kLXJvYmluLWFycmF5LmpzIiwic3JjL3YxL2ludGVybmFsL3JvdXRpbmctdGFibGUuanMiLCJzcmMvdjEvaW50ZXJuYWwvc3RyZWFtLW9ic2VydmVyLmpzIiwic3JjL3YxL2ludGVybmFsL3RyYW5zYWN0aW9uLWV4ZWN1dG9yLmpzIiwic3JjL3YxL2ludGVybmFsL3V0ZjguanMiLCJzcmMvdjEvaW50ZXJuYWwvdXRpbC5qcyIsInNyYy92MS9yZWNvcmQuanMiLCJzcmMvdjEvcmVzdWx0LXN1bW1hcnkuanMiLCJzcmMvdjEvcmVzdWx0LmpzIiwic3JjL3YxL3JvdXRpbmctZHJpdmVyLmpzIiwic3JjL3YxL3Nlc3Npb24uanMiLCJzcmMvdjEvdHJhbnNhY3Rpb24uanMiLCJzcmMvdmVyc2lvbi5qcyIsInRlc3QvaW50ZXJuYWwvYnVmLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL2NodW5raW5nLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL2Nvbm5lY3Rpb24taG9sZGVyLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL2Nvbm5lY3Rvci50ZXN0LmpzIiwidGVzdC9pbnRlcm5hbC9mYWtlLWNvbm5lY3Rpb24uanMiLCJ0ZXN0L2ludGVybmFsL2dldC1zZXJ2ZXJzLXV0aWwudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvcGFja3N0cmVhbS50ZXN0LmpzIiwidGVzdC9pbnRlcm5hbC9wb29sLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3JlZGlzY292ZXJ5LnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3JvdW5kLXJvYmluLWFycmF5LnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3JvdXRpbmctdGFibGUudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvdGltZXJzLXV0aWwuanMiLCJ0ZXN0L2ludGVybmFsL3Rscy50ZXN0LmpzIiwidGVzdC9pbnRlcm5hbC90cmFuc2FjdGlvbi1leGVjdXRvci50ZXN0LmpzIiwidGVzdC9pbnRlcm5hbC91dGY4LnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3V0aWwudGVzdC5qcyIsInRlc3QvdjEvZHJpdmVyLnRlc3QuanMiLCJ0ZXN0L3YxL2ludGVnZXIudGVzdC5qcyIsInRlc3QvdjEvcGFja2FnZS50ZXN0LmpzIiwidGVzdC92MS9yZWNvcmQudGVzdC5qcyIsInRlc3QvdjEvcmVzdWx0LnRlc3QuanMiLCJ0ZXN0L3YxL3Nlc3Npb24udGVzdC5qcyIsInRlc3QvdjEvdHJhbnNhY3Rpb24udGVzdC5qcyIsInRlc3QvdjEvdHlwZXMudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZoR0E7O0FBRUEsT0FBTyxjQUFQLENBQXNC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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuMkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqRUE7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2pMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDakdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3pJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2xHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN6RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3hFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDekxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDNUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM3dkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDMUZBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTs7QUNEQTtBQUNBOztBQ0RBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMURBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7O0FDQUE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwQkE7QUFDQTtBQUNBOztBQ0ZBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakNBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBOzs7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFPQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTs7QUNBQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDcERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDM0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNoUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdlhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDamJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaFBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDOVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2hwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNySEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNyR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcENBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzU2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDckxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN6aUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9EQTtBQUNBOzs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDaEJBO0FBQ0E7O0FDREE7QUFDQTs7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDbE5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDckVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM3RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3BEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDdElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN4REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ25RQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9IQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzdOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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UyxHQUFULEVBQWM7QUFBRSxjQUFRLEdBQVIsQ0FBWSxHQUFaO0FBQW1CLEtBTDlDO0FBTUQsR0FWRDtBQVdEIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8vIFRoaXMgaXMgZnJlZSBhbmQgdW5lbmN1bWJlcmVkIHNvZnR3YXJlIHJlbGVhc2VkIGludG8gdGhlIHB1YmxpYyBkb21haW4uXG4vLyBTZWUgTElDRU5TRS5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxudmFyIGVuY29kaW5nID0gcmVxdWlyZShcIi4vbGliL2VuY29kaW5nLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVGV4dEVuY29kZXI6IGVuY29kaW5nLlRleHRFbmNvZGVyLFxuICBUZXh0RGVjb2RlcjogZW5jb2RpbmcuVGV4dERlY29kZXIsXG59O1xuIiwiKGZ1bmN0aW9uKGdsb2JhbCkge1xuICAndXNlIHN0cmljdCc7XG4gIGdsb2JhbFtcImVuY29kaW5nLWluZGV4ZXNcIl0gPSB7XG4gIFwiYmlnNVwiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNzM5MiwxOTUwNiwxNzkyMywxNzgzMCwxNzc4NCwxNjAzNTksMTk4MzEsMTc4NDMsMTYyOTkzLDE5NjgyLDE2MzAxMywxNTI1MywxODIzMCwxODI0NCwxOTUyNywxOTUyMCwxNDgxNTksMTQ0OTE5LDE2MDU5NCwxNTkzNzEsMTU5OTU0LDE5NTQzLDE3Mjg4MSwxODI1NSwxNzg4MiwxOTU4OSwxNjI5MjQsMTk3MTksMTkxMDgsMTgwODEsMTU4NDk5LDI5MjIxLDE1NDE5NiwxMzc4MjcsMTQ2OTUwLDE0NzI5NywyNjE4OSwyMjI2NyxudWxsLDMyMTQ5LDIyODEzLDE2Njg0MSwxNTg2MCwzODcwOCwxNjI3OTksMjM1MTUsMTM4NTkwLDIzMjA0LDEzODYxLDE3MTY5NiwyMzI0OSwyMzQ3OSwyMzgwNCwyNjQ3OCwzNDE5NSwxNzAzMDksMjk3OTMsMjk4NTMsMTQ0NTMsMTM4NTc5LDE0NTA1NCwxNTU2ODEsMTYxMDgsMTUzODIyLDE1MDkzLDMxNDg0LDQwODU1LDE0NzgwOSwxNjYxNTcsMTQzODUwLDEzMzc3MCwxNDM5NjYsMTcxNjIsMzM5MjQsNDA4NTQsMzc5MzUsMTg3MzYsMzQzMjMsMjI2NzgsMzg3MzAsMzc0MDAsMzExODQsMzEyODIsMjYyMDgsMjcxNzcsMzQ5NzMsMjk3NzIsMzE2ODUsMjY0OTgsMzEyNzYsMjEwNzEsMzY5MzQsMTM1NDIsMjk2MzYsMTU1MDY1LDI5ODk0LDQwOTAzLDIyNDUxLDE4NzM1LDIxNTgwLDE2Njg5LDE0NTAzOCwyMjU1MiwzMTM0NiwxNjI2NjEsMzU3MjcsMTgwOTQsMTU5MzY4LDE2NzY5LDE1NTAzMywzMTY2MiwxNDA0NzYsNDA5MDQsMTQwNDgxLDE0MDQ4OSwxNDA0OTIsNDA5MDUsMzQwNTIsMTQ0ODI3LDE2NTY0LDQwOTA2LDE3NjMzLDE3NTYxNSwyNTI4MSwyODc4Miw0MDkwNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNzM2LDEyNzM3LDEyNzM4LDEyNzM5LDEyNzQwLDEzMTM0MCwxMjc0MSwxMzEyODEsMTMxMjc3LDEyNzQyLDEyNzQzLDEzMTI3NSwxMzkyNDAsMTI3NDQsMTMxMjc0LDEyNzQ1LDEyNzQ2LDEyNzQ3LDEyNzQ4LDEzMTM0MiwxMjc0OSwxMjc1MCwyNTYsMTkzLDQ2MSwxOTIsMjc0LDIwMSwyODIsMjAwLDMzMiwyMTEsNDY1LDIxMCxudWxsLDc4NzAsbnVsbCw3ODcyLDIwMiwyNTcsMjI1LDQ2MiwyMjQsNTkzLDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLG51bGwsNzg3MSxudWxsLDc4NzMsMjM0LDYwOSw5MTc4LDkxNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTcyOTY5LDEzNTQ5MyxudWxsLDI1ODY2LG51bGwsbnVsbCwyMDAyOSwyODM4MSw0MDI3MCwzNzM0MyxudWxsLG51bGwsMTYxNTg5LDI1NzQ1LDIwMjUwLDIwMjY0LDIwMzkyLDIwODIyLDIwODUyLDIwODkyLDIwOTY0LDIxMTUzLDIxMTYwLDIxMzA3LDIxMzI2LDIxNDU3LDIxNDY0LDIyMjQyLDIyNzY4LDIyNzg4LDIyNzkxLDIyODM0LDIyODM2LDIzMzk4LDIzNDU0LDIzNDU1LDIzNzA2LDI0MTk4LDI0NjM1LDI1OTkzLDI2NjIyLDI2NjI4LDI2NzI1LDI3OTgyLDI4ODYwLDMwMDA1LDMyNDIwLDMyNDI4LDMyNDQyLDMyNDU1LDMyNDYzLDMyNDc5LDMyNTE4LDMyNTY3LDMzNDAyLDMzNDg3LDMzNjQ3LDM1MjcwLDM1Nzc0LDM1ODEwLDM2NzEwLDM2NzExLDM2NzE4LDI5NzEzLDMxOTk2LDMyMjA1LDI2OTUwLDMxNDMzLDIxMDMxLG51bGwsbnVsbCxudWxsLG51bGwsMzcyNjAsMzA5MDQsMzcyMTQsMzI5NTYsbnVsbCwzNjEwNywzMzAxNCwxMzM2MDcsbnVsbCxudWxsLDMyOTI3LDQwNjQ3LDE5NjYxLDQwMzkzLDQwNDYwLDE5NTE4LDE3MTUxMCwxNTk3NTgsNDA0NTgsMTcyMzM5LDEzNzYxLG51bGwsMjgzMTQsMzMzNDIsMjk5NzcsbnVsbCwxODcwNSwzOTUzMiwzOTU2Nyw0MDg1NywzMTExMSwxNjQ5NzIsMTM4Njk4LDEzMjU2MCwxNDIwNTQsMjAwMDQsMjAwOTcsMjAwOTYsMjAxMDMsMjAxNTksMjAyMDMsMjAyNzksMTMzODgsMjA0MTMsMTU5NDQsMjA0ODMsMjA2MTYsMTM0MzcsMTM0NTksMTM0NzcsMjA4NzAsMjI3ODksMjA5NTUsMjA5ODgsMjA5OTcsMjAxMDUsMjExMTMsMjExMzYsMjEyODcsMTM3NjcsMjE0MTcsMTM2NDksMjE0MjQsMTM2NTEsMjE0NDIsMjE1MzksMTM2NzcsMTM2ODIsMTM5NTMsMjE2NTEsMjE2NjcsMjE2ODQsMjE2ODksMjE3MTIsMjE3NDMsMjE3ODQsMjE3OTUsMjE4MDAsMTM3MjAsMjE4MjMsMTM3MzMsMTM3NTksMjE5NzUsMTM3NjUsMTYzMjA0LDIxNzk3LG51bGwsMTM0MjEwLDEzNDQyMSwxNTE4NTEsMjE5MDQsMTQyNTM0LDE0ODI4LDEzMTkwNSwzNjQyMiwxNTA5NjgsMTY5MTg5LDE2NDY3LDE2NDAzMCwzMDU4NiwxNDIzOTIsMTQ5MDAsMTgzODksMTY0MTg5LDE1ODE5NCwxNTEwMTgsMjU4MjEsMTM0NTI0LDEzNTA5MiwxMzQzNTcsMTM1NDEyLDI1NzQxLDM2NDc4LDEzNDgwNiwxMzQxNTUsMTM1MDEyLDE0MjUwNSwxNjQ0MzgsMTQ4NjkxLG51bGwsMTM0NDcwLDE3MDU3MywxNjQwNzMsMTg0MjAsMTUxMjA3LDE0MjUzMCwzOTYwMiwxNDk1MSwxNjk0NjAsMTYzNjUsMTM1NzQsMTUyMjYzLDE2OTk0MCwxNjE5OTIsMTQyNjYwLDQwMzAyLDM4OTMzLG51bGwsMTczNjksMTU1ODEzLDI1NzgwLDIxNzMxLDE0MjY2OCwxNDIyODIsMTM1Mjg3LDE0ODQzLDEzNTI3OSwxNTc0MDIsMTU3NDYyLDE2MjIwOCwyNTgzNCwxNTE2MzQsMTM0MjExLDM2NDU2LDEzOTY4MSwxNjY3MzIsMTMyOTEzLG51bGwsMTg0NDMsMTMxNDk3LDE2Mzc4LDIyNjQzLDE0MjczMyxudWxsLDE0ODkzNiwxMzIzNDgsMTU1Nzk5LDEzNDk4OCwxMzQ1NTAsMjE4ODEsMTY1NzEsMTczMzgsbnVsbCwxOTEyNCwxNDE5MjYsMTM1MzI1LDMzMTk0LDM5MTU3LDEzNDU1NiwyNTQ2NSwxNDg0NiwxNDExNzMsMzYyODgsMjIxNzcsMjU3MjQsMTU5MzksbnVsbCwxNzM1NjksMTM0NjY1LDE0MjAzMSwxNDI1MzcsbnVsbCwxMzUzNjgsMTQ1ODU4LDE0NzM4LDE0ODU0LDE2NDUwNywxMzY4OCwxNTUyMDksMTM5NDYzLDIyMDk4LDEzNDk2MSwxNDI1MTQsMTY5NzYwLDEzNTAwLDI3NzA5LDE1MTA5OSxudWxsLG51bGwsMTYxMTQwLDE0Mjk4NywxMzk3ODQsMTczNjU5LDE2NzExNywxMzQ3NzgsMTM0MTk2LDE1NzcyNCwzMjY1OSwxMzUzNzUsMTQxMzE1LDE0MTYyNSwxMzgxOSwxNTIwMzUsMTM0Nzk2LDEzNTA1MywxMzQ4MjYsMTYyNzUsMTM0OTYwLDEzNDQ3MSwxMzU1MDMsMTM0NzMyLG51bGwsMTM0ODI3LDEzNDA1NywxMzQ0NzIsMTM1MzYwLDEzNTQ4NSwxNjM3NywxNDA5NTAsMjU2NTAsMTM1MDg1LDE0NDM3MiwxNjEzMzcsMTQyMjg2LDEzNDUyNiwxMzQ1MjcsMTQyNDE3LDE0MjQyMSwxNDg3MiwxMzQ4MDgsMTM1MzY3LDEzNDk1OCwxNzM2MTgsMTU4NTQ0LDE2NzEyMiwxNjczMjEsMTY3MTE0LDM4MzE0LDIxNzA4LDMzNDc2LDIxOTQ1LG51bGwsMTcxNzE1LDM5OTc0LDM5NjA2LDE2MTYzMCwxNDI4MzAsMjg5OTIsMzMxMzMsMzMwMDQsMjM1ODAsMTU3MDQyLDMzMDc2LDE0MjMxLDIxMzQzLDE2NDAyOSwzNzMwMiwxMzQ5MDYsMTM0NjcxLDEzNDc3NSwxMzQ5MDcsMTM3ODksMTUxMDE5LDEzODMzLDEzNDM1OCwyMjE5MSwxNDEyMzcsMTM1MzY5LDEzNDY3MiwxMzQ3NzYsMTM1Mjg4LDEzNTQ5NiwxNjQzNTksMTM2Mjc3LDEzNDc3NywxNTExMjAsMTQyNzU2LDIzMTI0LDEzNTE5NywxMzUxOTgsMTM1NDEzLDEzNTQxNCwyMjQyOCwxMzQ2NzMsMTYxNDI4LDE2NDU1NywxMzUwOTMsMTM0Nzc5LDE1MTkzNCwxNDA4MywxMzUwOTQsMTM1NTUyLDE1MjI4MCwxNzI3MzMsMTQ5OTc4LDEzNzI3NCwxNDc4MzEsMTY0NDc2LDIyNjgxLDIxMDk2LDEzODUwLDE1MzQwNSwzMTY2NiwyMzQwMCwxODQzMiwxOTI0NCw0MDc0MywxODkxOSwzOTk2NywzOTgyMSwxNTQ0ODQsMTQzNjc3LDIyMDExLDEzODEwLDIyMTUzLDIwMDA4LDIyNzg2LDEzODE3NywxOTQ2ODAsMzg3MzcsMTMxMjA2LDIwMDU5LDIwMTU1LDEzNjMwLDIzNTg3LDI0NDAxLDI0NTE2LDE0NTg2LDI1MTY0LDI1OTA5LDI3NTE0LDI3NzAxLDI3NzA2LDI4NzgwLDI5MjI3LDIwMDEyLDI5MzU3LDE0OTczNywzMjU5NCwzMTAzNSwzMTk5MywzMjU5NSwxNTYyNjYsMTM1MDUsbnVsbCwxNTY0OTEsMzI3NzAsMzI4OTYsMTU3MjAyLDE1ODAzMywyMTM0MSwzNDkxNiwzNTI2NSwxNjE5NzAsMzU3NDQsMzYxMjUsMzgwMjEsMzgyNjQsMzgyNzEsMzgzNzYsMTY3NDM5LDM4ODg2LDM5MDI5LDM5MTE4LDM5MTM0LDM5MjY3LDE3MDAwMCw0MDA2MCw0MDQ3OSw0MDY0NCwyNzUwMyw2Mzc1MSwyMDAyMywxMzEyMDcsMzg0MjksMjUxNDMsMzgwNTAsbnVsbCwyMDUzOSwyODE1OCwxNzExMjMsNDA4NzAsMTU4MTcsMzQ5NTksMTQ3NzkwLDI4NzkxLDIzNzk3LDE5MjMyLDE1MjAxMywxMzY1NywxNTQ5MjgsMjQ4NjYsMTY2NDUwLDM2Nzc1LDM3MzY2LDI5MDczLDI2MzkzLDI5NjI2LDE0NDAwMSwxNzIyOTUsMTU0OTksMTM3NjAwLDE5MjE2LDMwOTQ4LDI5Njk4LDIwOTEwLDE2NTY0NywxNjM5MywyNzIzNSwxNzI3MzAsMTY5MzEsMzQzMTksMTMzNzQzLDMxMjc0LDE3MDMxMSwxNjY2MzQsMzg3NDEsMjg3NDksMjEyODQsMTM5MzkwLDM3ODc2LDMwNDI1LDE2NjM3MSw0MDg3MSwzMDY4NSwyMDEzMSwyMDQ2NCwyMDY2OCwyMDAxNSwyMDI0Nyw0MDg3MiwyMTU1NiwzMjEzOSwyMjY3NCwyMjczNiwxMzg2NzgsMjQyMTAsMjQyMTcsMjQ1MTQsMTQxMDc0LDI1OTk1LDE0NDM3NywyNjkwNSwyNzIwMywxNDY1MzEsMjc5MDMsbnVsbCwyOTE4NCwxNDg3NDEsMjk1ODAsMTYwOTEsMTUwMDM1LDIzMzE3LDI5ODgxLDM1NzE1LDE1NDc4OCwxNTMyMzcsMzEzNzksMzE3MjQsMzE5MzksMzIzNjQsMzM1MjgsMzQxOTksNDA4NzMsMzQ5NjAsNDA4NzQsMzY1MzcsNDA4NzUsMzY4MTUsMzQxNDMsMzkzOTIsMzc0MDksNDA4NzYsMTY3MzUzLDEzNjI1NSwxNjQ5NywxNzA1OCwyMzA2NixudWxsLG51bGwsbnVsbCwzOTAxNiwyNjQ3NSwxNzAxNCwyMjMzMyxudWxsLDM0MjYyLDE0OTg4MywzMzQ3MSwxNjAwMTMsMTk1ODUsMTU5MDkyLDIzOTMxLDE1ODQ4NSwxNTk2NzgsNDA4NzcsNDA4NzgsMjM0NDYsNDA4NzksMjYzNDMsMzIzNDcsMjgyNDcsMzExNzgsMTU3NTIsMTc2MDMsMTQzOTU4LDE0MTIwNiwxNzMwNiwxNzcxOCxudWxsLDIzNzY1LDE0NjIwMiwzNTU3NywyMzY3MiwxNTYzNCwxNDQ3MjEsMjM5MjgsNDA4ODIsMjkwMTUsMTc3NTIsMTQ3NjkyLDEzODc4NywxOTU3NSwxNDcxMiwxMzM4NiwxMzE0OTIsMTU4Nzg1LDM1NTMyLDIwNDA0LDEzMTY0MSwyMjk3NSwzMzEzMiwzODk5OCwxNzAyMzQsMjQzNzksMTM0MDQ3LG51bGwsMTM5NzEzLDE2NjI1MywxNjY0MiwxODEwNywxNjgwNTcsMTYxMzUsNDA4ODMsMTcyNDY5LDE2NjMyLDE0Mjk0LDE4MTY3LDE1ODc5MCwxNjc2NCwxNjU1NTQsMTYwNzY3LDE3NzczLDE0NTQ4LDE1MjczMCwxNzc2MSwxNzY5MSwxOTg0OSwxOTU3OSwxOTgzMCwxNzg5OCwxNjMyOCwxNTAyODcsMTM5MjEsMTc2MzAsMTc1OTcsMTY4NzcsMjM4NzAsMjM4ODAsMjM4OTQsMTU4NjgsMTQzNTEsMjM5NzIsMjM5OTMsMTQzNjgsMTQzOTIsMjQxMzAsMjQyNTMsMjQzNTcsMjQ0NTEsMTQ2MDAsMTQ2MTIsMTQ2NTUsMTQ2NjksMjQ3OTEsMjQ4OTMsMjM3ODEsMTQ3MjksMjUwMTUsMjUwMTcsMjUwMzksMTQ3NzYsMjUxMzIsMjUyMzIsMjUzMTcsMjUzNjgsMTQ4NDAsMjIxOTMsMTQ4NTEsMjU1NzAsMjU1OTUsMjU2MDcsMjU2OTAsMTQ5MjMsMjU3OTIsMjM4MjksMjIwNDksNDA4NjMsMTQ5OTksMjU5OTAsMTUwMzcsMjYxMTEsMjYxOTUsMTUwOTAsMjYyNTgsMTUxMzgsMjYzOTAsMTUxNzAsMjY1MzIsMjY2MjQsMTUxOTIsMjY2OTgsMjY3NTYsMTUyMTgsMTUyMTcsMTUyMjcsMjY4ODksMjY5NDcsMjkyNzYsMjY5ODAsMjcwMzksMjcwMTMsMTUyOTIsMjcwOTQsMTUzMjUsMjcyMzcsMjcyNTIsMjcyNDksMjcyNjYsMTUzNDAsMjcyODksMTUzNDYsMjczMDcsMjczMTcsMjczNDgsMjczODIsMjc1MjEsMjc1ODUsMjc2MjYsMjc3NjUsMjc4MTgsMTU1NjMsMjc5MDYsMjc5MTAsMjc5NDIsMjgwMzMsMTU1OTksMjgwNjgsMjgwODEsMjgxODEsMjgxODQsMjgyMDEsMjgyOTQsMTY2MzM2LDI4MzQ3LDI4Mzg2LDI4Mzc4LDQwODMxLDI4MzkyLDI4MzkzLDI4NDUyLDI4NDY4LDE1Njg2LDE0NzI2NSwyODU0NSwyODYwNiwxNTcyMiwxNTczMywyOTExMSwyMzcwNSwxNTc1NCwyODcxNiwxNTc2MSwyODc1MiwyODc1NiwyODc4MywyODc5OSwyODgwOSwxMzE4NzcsMTczNDUsMTM4MDksMTM0ODcyLDE0NzE1OSwyMjQ2MiwxNTk0NDMsMjg5OTAsMTUzNTY4LDEzOTAyLDI3MDQyLDE2Njg4OSwyMzQxMiwzMTMwNSwxNTM4MjUsMTY5MTc3LDMxMzMzLDMxMzU3LDE1NDAyOCwzMTQxOSwzMTQwOCwzMTQyNiwzMTQyNywyOTEzNywxNTY4MTMsMTY4NDIsMzE0NTAsMzE0NTMsMzE0NjYsMTY4NzksMjE2ODIsMTU0NjI1LDMxNDk5LDMxNTczLDMxNTI5LDE1MjMzNCwxNTQ4NzgsMzE2NTAsMzE1OTksMzM2OTIsMTU0NTQ4LDE1ODg0NywzMTY5NiwzMzgyNSwzMTYzNCwzMTY3MiwxNTQ5MTIsMTU3ODksMTU0NzI1LDMzOTM4LDMxNzM4LDMxNzUwLDMxNzk3LDE1NDgxNywzMTgxMiwzMTg3NSwxNDk2MzQsMzE5MTAsMjYyMzcsMTQ4ODU2LDMxOTQ1LDMxOTQzLDMxOTc0LDMxODYwLDMxOTg3LDMxOTg5LDMxOTUwLDMyMzU5LDE3NjkzLDE1OTMwMCwzMjA5MywxNTk0NDYsMjk4MzcsMzIxMzcsMzIxNzEsMjg5ODEsMzIxNzksMzIyMTAsMTQ3NTQzLDE1NTY4OSwzMjIyOCwxNTYzNSwzMjI0NSwxMzcyMDksMzIyMjksMTY0NzE3LDMyMjg1LDE1NTkzNywxNTU5OTQsMzIzNjYsMzI0MDIsMTcxOTUsMzc5OTYsMzIyOTUsMzI1NzYsMzI1NzcsMzI1ODMsMzEwMzAsMTU2MzY4LDM5MzkzLDMyNjYzLDE1NjQ5NywzMjY3NSwxMzY4MDEsMTMxMTc2LDE3NzU2LDE0NTI1NCwxNzY2NywxNjQ2NjYsMzI3NjIsMTU2ODA5LDMyNzczLDMyNzc2LDMyNzk3LDMyODA4LDMyODE1LDE3MjE2NywxNTg5MTUsMzI4MjcsMzI4MjgsMzI4NjUsMTQxMDc2LDE4ODI1LDE1NzIyMiwxNDY5MTUsMTU3NDE2LDI2NDA1LDMyOTM1LDE2NjQ3MiwzMzAzMSwzMzA1MCwyMjcwNCwxNDEwNDYsMjc3NzUsMTU2ODI0LDE1MTQ4MCwyNTgzMSwxMzYzMzAsMzMzMDQsMTM3MzEwLDI3MjE5LDE1MDExNywxNTAxNjUsMTc1MzAsMzMzMjEsMTMzOTAxLDE1ODI5MCwxNDY4MTQsMjA0NzMsMTM2NDQ1LDM0MDE4LDMzNjM0LDE1ODQ3NCwxNDk5MjcsMTQ0Njg4LDEzNzA3NSwxNDY5MzYsMzM0NTAsMjY5MDcsMTk0OTY0LDE2ODU5LDM0MTIzLDMzNDg4LDMzNTYyLDEzNDY3OCwxMzcxNDAsMTQwMTcsMTQzNzQxLDE0NDczMCwzMzQwMywzMzUwNiwzMzU2MCwxNDcwODMsMTU5MTM5LDE1ODQ2OSwxNTg2MTUsMTQ0ODQ2LDE1ODA3LDMzNTY1LDIxOTk2LDMzNjY5LDE3Njc1LDE1OTE0MSwzMzcwOCwzMzcyOSwzMzc0NywxMzQzOCwxNTk0NDQsMjcyMjMsMzQxMzgsMTM0NjIsMTU5Mjk4LDE0MzA4NywzMzg4MCwxNTQ1OTYsMzM5MDUsMTU4MjcsMTc2MzYsMjczMDMsMzM4NjYsMTQ2NjEzLDMxMDY0LDMzOTYwLDE1ODYxNCwxNTkzNTEsMTU5Mjk5LDM0MDE0LDMzODA3LDMzNjgxLDE3NTY4LDMzOTM5LDM0MDIwLDE1NDc2OSwxNjk2MCwxNTQ4MTYsMTc3MzEsMzQxMDAsMjMyODIsMTU5Mzg1LDE3NzAzLDM0MTYzLDE3Njg2LDI2NTU5LDM0MzI2LDE2NTQxMywxNjU0MzUsMzQyNDEsMTU5ODgwLDM0MzA2LDEzNjU3OCwxNTk5NDksMTk0OTk0LDE3NzcwLDM0MzQ0LDEzODk2LDEzNzM3OCwyMTQ5NSwxNjA2NjYsMzQ0MzAsMzQ2NzMsMTcyMjgwLDM0Nzk4LDE0MjM3NSwzNDczNywzNDc3OCwzNDgzMSwyMjExMywzNDQxMiwyNjcxMCwxNzkzNSwzNDg4NSwzNDg4NiwxNjEyNDgsMTQ2ODczLDE2MTI1MiwzNDkxMCwzNDk3MiwxODAxMSwzNDk5NiwzNDk5NywyNTUzNywzNTAxMywzMDU4MywxNjE1NTEsMzUyMDcsMzUyMTAsMzUyMzgsMzUyNDEsMzUyMzksMzUyNjAsMTY2NDM3LDM1MzAzLDE2MjA4NCwxNjI0OTMsMzU0ODQsMzA2MTEsMzczNzQsMzU0NzIsMTYyMzkzLDMxNDY1LDE2MjYxOCwxNDczNDMsMTgxOTUsMTYyNjE2LDI5MDUyLDM1NTk2LDM1NjE1LDE1MjYyNCwxNTI5MzMsMzU2NDcsMzU2NjAsMzU2NjEsMzU0OTcsMTUwMTM4LDM1NzI4LDM1NzM5LDM1NTAzLDEzNjkyNywxNzk0MSwzNDg5NSwzNTk5NSwxNjMxNTYsMTYzMjE1LDE5NTAyOCwxNDExNywxNjMxNTUsMzYwNTQsMTYzMjI0LDE2MzI2MSwzNjExNCwzNjA5OSwxMzc0ODgsMzYwNTksMjg3NjQsMzYxMTMsMTUwNzI5LDE2MDgwLDM2MjE1LDM2MjY1LDE2Mzg0MiwxMzUxODgsMTQ5ODk4LDE1MjI4LDE2NDI4NCwxNjAwMTIsMzE0NjMsMzY1MjUsMzY1MzQsMzY1NDcsMzc1ODgsMzY2MzMsMzY2NTMsMTY0NzA5LDE2NDg4MiwzNjc3MywzNzYzNSwxNzI3MDMsMTMzNzEyLDM2Nzg3LDE4NzMwLDE2NjM2NiwxNjUxODEsMTQ2ODc1LDI0MzEyLDE0Mzk3MCwzNjg1NywxNzIwNTIsMTY1NTY0LDE2NTEyMSwxNDAwNjksMTQ3MjAsMTU5NDQ3LDM2OTE5LDE2NTE4MCwxNjI0OTQsMzY5NjEsMTY1MjI4LDE2NTM4NywzNzAzMiwxNjU2NTEsMzcwNjAsMTY1NjA2LDM3MDM4LDM3MTE3LDM3MjIzLDE1MDg4LDM3Mjg5LDM3MzE2LDMxOTE2LDE2NjE5NSwxMzg4ODksMzczOTAsMjc4MDcsMzc0NDEsMzc0NzQsMTUzMDE3LDM3NTYxLDE2NjU5OCwxNDY1ODcsMTY2NjY4LDE1MzA1MSwxMzQ0NDksMzc2NzYsMzc3MzksMTY2NjI1LDE2Njg5MSwyODgxNSwyMzIzNSwxNjY2MjYsMTY2NjI5LDE4Nzg5LDM3NDQ0LDE2Njg5MiwxNjY5NjksMTY2OTExLDM3NzQ3LDM3OTc5LDM2NTQwLDM4Mjc3LDM4MzEwLDM3OTI2LDM4MzA0LDI4NjYyLDE3MDgxLDE0MDkyMiwxNjU1OTIsMTM1ODA0LDE0Njk5MCwxODkxMSwyNzY3NiwzODUyMywzODU1MCwxNjc0OCwzODU2MywxNTk0NDUsMjUwNTAsMzg1ODIsMzA5NjUsMTY2NjI0LDM4NTg5LDIxNDUyLDE4ODQ5LDE1ODkwNCwxMzE3MDAsMTU2Njg4LDE2ODExMSwxNjgxNjUsMTUwMjI1LDEzNzQ5MywxNDQxMzgsMzg3MDUsMzQzNzAsMzg3MTAsMTg5NTksMTc3MjUsMTc3OTcsMTUwMjQ5LDI4Nzg5LDIzMzYxLDM4NjgzLDM4NzQ4LDE2ODQwNSwzODc0MywyMzM3MCwxNjg0MjcsMzg3NTEsMzc5MjUsMjA2ODgsMTQzNTQzLDE0MzU0OCwzODc5MywzODgxNSwzODgzMywzODg0NiwzODg0OCwzODg2NiwzODg4MCwxNTI2ODQsMzg4OTQsMjk3MjQsMTY5MDExLDM4OTExLDM4OTAxLDE2ODk4OSwxNjIxNzAsMTkxNTMsMzg5NjQsMzg5NjMsMzg5ODcsMzkwMTQsMTUxMTgsMTYwMTE3LDE1Njk3LDEzMjY1NiwxNDc4MDQsMTUzMzUwLDM5MTE0LDM5MDk1LDM5MTEyLDM5MTExLDE5MTk5LDE1OTAxNSwxMzY5MTUsMjE5MzYsMzkxMzcsMzkxNDIsMzkxNDgsMzc3NTIsMzkyMjUsMTUwMDU3LDE5MzE0LDE3MDA3MSwxNzAyNDUsMzk0MTMsMzk0MzYsMzk0ODMsMzk0NDAsMzk1MTIsMTUzMzgxLDE0MDIwLDE2ODExMywxNzA5NjUsMzk2NDgsMzk2NTAsMTcwNzU3LDM5NjY4LDE5NDcwLDM5NzAwLDM5NzI1LDE2NTM3NiwyMDUzMiwzOTczMiwxNTgxMjAsMTQ1MzEsMTQzNDg1LDM5NzYwLDM5NzQ0LDE3MTMyNiwyMzEwOSwxMzczMTUsMzk4MjIsMTQ4MDQzLDM5OTM4LDM5OTM1LDM5OTQ4LDE3MTYyNCw0MDQwNCwxNzE5NTksMTcyNDM0LDE3MjQ1OSwxNzIyNTcsMTcyMzIzLDE3MjUxMSw0MDMxOCw0MDMyMywxNzIzNDAsNDA0NjIsMjY3NjAsNDAzODgsMTM5NjExLDE3MjQzNSwxNzI1NzYsMTM3NTMxLDE3MjU5NSw0MDI0OSwxNzIyMTcsMTcyNzI0LDQwNTkyLDQwNTk3LDQwNjA2LDQwNjEwLDE5NzY0LDQwNjE4LDQwNjIzLDE0ODMyNCw0MDY0MSwxNTIwMCwxNDgyMSwxNTY0NSwyMDI3NCwxNDI3MCwxNjY5NTUsNDA3MDYsNDA3MTIsMTkzNTAsMzc5MjQsMTU5MTM4LDQwNzI3LDQwNzI2LDQwNzYxLDIyMTc1LDIyMTU0LDQwNzczLDM5MzUyLDE2ODA3NSwzODg5OCwzMzkxOSw0MDgwMiw0MDgwOSwzMTQ1Miw0MDg0NiwyOTIwNiwxOTM5MCwxNDk4NzcsMTQ5OTQ3LDI5MDQ3LDE1MDAwOCwxNDgyOTYsMTUwMDk3LDI5NTk4LDE2Njg3NCwxMzc0NjYsMzExMzUsMTY2MjcwLDE2NzQ3OCwzNzczNywzNzg3NSwxNjY0NjgsMzc2MTIsMzc3NjEsMzc4MzUsMTY2MjUyLDE0ODY2NSwyOTIwNywxNjEwNywzMDU3OCwzMTI5OSwyODg4MCwxNDg1OTUsMTQ4NDcyLDI5MDU0LDEzNzE5OSwyODgzNSwxMzc0MDYsMTQ0NzkzLDE2MDcxLDEzNzM0OSwxNTI2MjMsMTM3MjA4LDE0MTE0LDEzNjk1NSwxMzcyNzMsMTQwNDksMTM3MDc2LDEzNzQyNSwxNTU0NjcsMTQxMTUsMTM2ODk2LDIyMzYzLDE1MDA1MywxMzYxOTAsMTM1ODQ4LDEzNjEzNCwxMzYzNzQsMzQwNTEsMTQ1MDYyLDM0MDUxLDMzODc3LDE0OTkwOCwxNjAxMDEsMTQ2OTkzLDE1MjkyNCwxNDcxOTUsMTU5ODI2LDE3NjUyLDE0NTEzNCwxNzAzOTcsMTU5NTI2LDI2NjE3LDE0MTMxLDE1MzgxLDE1ODQ3LDIyNjM2LDEzNzUwNiwyNjY0MCwxNjQ3MSwxNDUyMTUsMTQ3NjgxLDE0NzU5NSwxNDc3MjcsMTU4NzUzLDIxNzA3LDIyMTc0LDE1NzM2MSwyMjE2MiwxMzUxMzUsMTM0MDU2LDEzNDY2OSwzNzgzMCwxNjY2NzUsMzc3ODgsMjAyMTYsMjA3NzksMTQzNjEsMTQ4NTM0LDIwMTU2LDEzMjE5NywxMzE5NjcsMjAyOTksMjAzNjIsMTUzMTY5LDIzMTQ0LDEzMTQ5OSwxMzIwNDMsMTQ3NDUsMTMxODUwLDEzMjExNiwxMzM2NSwyMDI2NSwxMzE3NzYsMTY3NjAzLDEzMTcwMSwzNTU0NiwxMzE1OTYsMjAxMjAsMjA2ODUsMjA3NDksMjAzODYsMjAyMjcsMTUwMDMwLDE0NzA4MiwyMDI5MCwyMDUyNiwyMDU4OCwyMDYwOSwyMDQyOCwyMDQ1MywyMDU2OCwyMDczMiwyMDgyNSwyMDgyNywyMDgyOSwyMDgzMCwyODI3OCwxNDQ3ODksMTQ3MDAxLDE0NzEzNSwyODAxOCwxMzczNDgsMTQ3MDgxLDIwOTA0LDIwOTMxLDEzMjU3NiwxNzYyOSwxMzIyNTksMTMyMjQyLDEzMjI0MSwzNjIxOCwxNjY1NTYsMTMyODc4LDIxMDgxLDIxMTU2LDEzMzIzNSwyMTIxNywzNzc0MiwxODA0MiwyOTA2OCwxNDgzNjQsMTM0MTc2LDE0OTkzMiwxMzUzOTYsMjcwODksMTM0Njg1LDI5ODE3LDE2MDk0LDI5ODQ5LDI5NzE2LDI5NzgyLDI5NTkyLDE5MzQyLDE1MDIwNCwxNDc1OTcsMjE0NTYsMTM3MDAsMjkxOTksMTQ3NjU3LDIxOTQwLDEzMTkwOSwyMTcwOSwxMzQwODYsMjIzMDEsMzc0NjksMzg2NDQsMzc3MzQsMjI0OTMsMjI0MTMsMjIzOTksMTM4ODYsMjI3MzEsMjMxOTMsMTY2NDcwLDEzNjk1NCwxMzcwNzEsMTM2OTc2LDIzMDg0LDIyOTY4LDM3NTE5LDIzMTY2LDIzMjQ3LDIzMDU4LDE1MzkyNiwxMzc3MTUsMTM3MzEzLDE0ODExNywxNDA2OSwyNzkwOSwyOTc2MywyMzA3MywxNTUyNjcsMjMxNjksMTY2ODcxLDEzMjExNSwzNzg1NiwyOTgzNiwxMzU5MzksMjg5MzMsMTg4MDIsMzc4OTYsMTY2Mzk1LDM3ODIxLDE0MjQwLDIzNTgyLDIzNzEwLDI0MTU4LDI0MTM2LDEzNzYyMiwxMzc1OTYsMTQ2MTU4LDI0MjY5LDIzMzc1LDEzNzQ3NSwxMzc0NzYsMTQwODEsMTM3Mzc2LDE0MDQ1LDEzNjk1OCwxNDAzNSwzMzA2NiwxNjY0NzEsMTM4NjgyLDE0NDQ5OCwxNjYzMTIsMjQzMzIsMjQzMzQsMTM3NTExLDEzNzEzMSwyMzE0NywxMzcwMTksMjMzNjQsMzQzMjQsMTYxMjc3LDM0OTEyLDI0NzAyLDE0MTQwOCwxNDA4NDMsMjQ1MzksMTYwNTYsMTQwNzE5LDE0MDczNCwxNjgwNzIsMTU5NjAzLDI1MDI0LDEzMTEzNCwxMzExNDIsMTQwODI3LDI0OTg1LDI0OTg0LDI0NjkzLDE0MjQ5MSwxNDI1OTksMTQ5MjA0LDE2ODI2OSwyNTcxMywxNDkwOTMsMTQyMTg2LDE0ODg5LDE0MjExNCwxNDQ0NjQsMTcwMjE4LDE0Mjk2OCwyNTM5OSwxNzMxNDcsMjU3ODIsMjUzOTMsMjU1NTMsMTQ5OTg3LDE0MjY5NSwyNTI1MiwxNDI0OTcsMjU2NTksMjU5NjMsMjY5OTQsMTUzNDgsMTQzNTAyLDE0NDA0NSwxNDk4OTcsMTQ0MDQzLDIxNzczLDE0NDA5NiwxMzc0MzMsMTY5MDIzLDI2MzE4LDE0NDAwOSwxNDM3OTUsMTUwNzIsMTY3ODQsMTUyOTY0LDE2NjY5MCwxNTI5NzUsMTM2OTU2LDE1MjkyMywxNTI2MTMsMzA5NTgsMTQzNjE5LDEzNzI1OCwxNDM5MjQsMTM0MTIsMTQzODg3LDE0Mzc0NiwxNDgxNjksMjYyNTQsMTU5MDEyLDI2MjE5LDE5MzQ3LDI2MTYwLDE2MTkwNCwxMzg3MzEsMjYyMTEsMTQ0MDgyLDE0NDA5NywyNjE0MiwxNTM3MTQsMTQ1NDUsMTQ1NDY2LDE0NTM0MCwxNTI1NywxNDUzMTQsMTQ0MzgyLDI5OTA0LDE1MjU0LDI2NTExLDE0OTAzNCwyNjgwNiwyNjY1NCwxNTMwMCwyNzMyNiwxNDQzNSwxNDUzNjUsMTQ4NjE1LDI3MTg3LDI3MjE4LDI3MzM3LDI3Mzk3LDEzNzQ5MCwyNTg3MywyNjc3NiwyNzIxMiwxNTMxOSwyNzI1OCwyNzQ3OSwxNDczOTIsMTQ2NTg2LDM3NzkyLDM3NjE4LDE2Njg5MCwxNjY2MDMsMzc1MTMsMTYzODcwLDE2NjM2NCwzNzk5MSwyODA2OSwyODQyNywxNDk5OTYsMjgwMDcsMTQ3MzI3LDE1NzU5LDI4MTY0LDE0NzUxNiwyMzEwMSwyODE3MCwyMjU5OSwyNzk0MCwzMDc4NiwyODk4NywxNDgyNTAsMTQ4MDg2LDI4OTEzLDI5MjY0LDI5MzE5LDI5MzMyLDE0OTM5MSwxNDkyODUsMjA4NTcsMTUwMTgwLDEzMjU4NywyOTgxOCwxNDcxOTIsMTQ0OTkxLDE1MDA5MCwxNDk3ODMsMTU1NjE3LDE2MTM0LDE2MDQ5LDE1MDIzOSwxNjY5NDcsMTQ3MjUzLDI0NzQzLDE2MTE1LDI5OTAwLDI5NzU2LDM3NzY3LDI5NzUxLDE3NTY3LDE1OTIxMCwxNzc0NSwzMDA4MywxNjIyNywxNTA3NDUsMTUwNzkwLDE2MjE2LDMwMDM3LDMwMzIzLDE3MzUxMCwxNTEyOSwyOTgwMCwxNjY2MDQsMTQ5OTMxLDE0OTkwMiwxNTA5OSwxNTgyMSwxNTAwOTQsMTYxMjcsMTQ5OTU3LDE0OTc0NywzNzM3MCwyMjMyMiwzNzY5OCwxNjY2MjcsMTM3MzE2LDIwNzAzLDE1MjA5NywxNTIwMzksMzA1ODQsMTQzOTIyLDMwNDc4LDMwNDc5LDMwNTg3LDE0OTE0MywxNDUyODEsMTQ5NDIsMTQ5NzQ0LDI5NzUyLDI5ODUxLDE2MDYzLDE1MDIwMiwxNTAyMTUsMTY1ODQsMTUwMTY2LDE1NjA3OCwzNzYzOSwxNTI5NjEsMzA3NTAsMzA4NjEsMzA4NTYsMzA5MzAsMjk2NDgsMzEwNjUsMTYxNjAxLDE1MzMxNSwxNjY1NCwzMTEzMSwzMzk0MiwzMTE0MSwyNzE4MSwxNDcxOTQsMzEyOTAsMzEyMjAsMTY3NTAsMTM2OTM0LDE2NjkwLDM3NDI5LDMxMjE3LDEzNDQ3NiwxNDk5MDAsMTMxNzM3LDE0Njg3NCwxMzcwNzAsMTM3MTksMjE4NjcsMTM2ODAsMTM5OTQsMTMxNTQwLDEzNDE1NywzMTQ1OCwyMzEyOSwxNDEwNDUsMTU0Mjg3LDE1NDI2OCwyMzA1MywxMzE2NzUsMzA5NjAsMjMwODIsMTU0NTY2LDMxNDg2LDE2ODg5LDMxODM3LDMxODUzLDE2OTEzLDE1NDU0NywxNTUzMjQsMTU1MzAyLDMxOTQ5LDE1MDAwOSwxMzcxMzYsMzE4ODYsMzE4NjgsMzE5MTgsMjczMTQsMzIyMjAsMzIyNjMsMzIyMTEsMzI1OTAsMTU2MjU3LDE1NTk5NiwxNjI2MzIsMzIxNTEsMTU1MjY2LDE3MDAyLDE1ODU4MSwxMzMzOTgsMjY1ODIsMTMxMTUwLDE0NDg0NywyMjQ2OCwxNTY2OTAsMTU2NjY0LDE0OTg1OCwzMjczMywzMTUyNywxMzMxNjQsMTU0MzQ1LDE1NDk0NywzMTUwMCwxNTUxNTAsMzkzOTgsMzQzNzMsMzk1MjMsMjcxNjQsMTQ0NDQ3LDE0ODE4LDE1MDAwNywxNTcxMDEsMzk0NTUsMTU3MDg4LDMzOTIwLDE2MDAzOSwxNTg5MjksMTc2NDIsMzMwNzksMTc0MTAsMzI5NjYsMzMwMzMsMzMwOTAsMTU3NjIwLDM5MTA3LDE1ODI3NCwzMzM3OCwzMzM4MSwxNTgyODksMzM4NzUsMTU5MTQzLDM0MzIwLDE2MDI4MywyMzE3NCwxNjc2NywxMzcyODAsMjMzMzksMTM3Mzc3LDIzMjY4LDEzNzQzMiwzNDQ2NCwxOTUwMDQsMTQ2ODMxLDM0ODYxLDE2MDgwMiwyMzA0MiwzNDkyNiwyMDI5MywzNDk1MSwzNTAwNywzNTA0NiwzNTE3MywzNTE0OSwxNTMyMTksMzUxNTYsMTYxNjY5LDE2MTY2OCwxNjY5MDEsMTY2ODczLDE2NjgxMiwxNjYzOTMsMTYwNDUsMzM5NTUsMTgxNjUsMTgxMjcsMTQzMjIsMzUzODksMzUzNTYsMTY5MDMyLDI0Mzk3LDM3NDE5LDE0ODEwMCwyNjA2OCwyODk2OSwyODg2OCwxMzcyODUsNDAzMDEsMzU5OTksMzYwNzMsMTYzMjkyLDIyOTM4LDMwNjU5LDIzMDI0LDE3MjYyLDE0MDM2LDM2Mzk0LDM2NTE5LDE1MDUzNywzNjY1NiwzNjY4MiwxNzE0MCwyNzczNiwyODYwMywxNDAwNjUsMTg1ODcsMjg1MzcsMjgyOTksMTM3MTc4LDM5OTEzLDE0MDA1LDE0OTgwNywzNzA1MSwzNzAxNSwyMTg3MywxODY5NCwzNzMwNywzNzg5MiwxNjY0NzUsMTY0ODIsMTY2NjUyLDM3OTI3LDE2Njk0MSwxNjY5NzEsMzQwMjEsMzUzNzEsMzgyOTcsMzgzMTEsMzgyOTUsMzgyOTQsMTY3MjIwLDI5NzY1LDE2MDY2LDE0OTc1OSwxNTAwODIsMTQ4NDU4LDE2MTAzLDE0MzkwOSwzODU0MywxNjc2NTUsMTY3NTI2LDE2NzUyNSwxNjA3NiwxNDk5OTcsMTUwMTM2LDE0NzQzOCwyOTcxNCwyOTgwMywxNjEyNCwzODcyMSwxNjgxMTIsMjY2OTUsMTg5NzMsMTY4MDgzLDE1MzU2NywzODc0OSwzNzczNiwxNjYyODEsMTY2OTUwLDE2NjcwMywxNTY2MDYsMzc1NjIsMjMzMTMsMzU2ODksMTg3NDgsMjk2ODksMTQ3OTk1LDM4ODExLDM4NzY5LDM5MjI0LDEzNDk1MCwyNDAwMSwxNjY4NTMsMTUwMTk0LDM4OTQzLDE2OTE3OCwzNzYyMiwxNjk0MzEsMzczNDksMTc2MDAsMTY2NzM2LDE1MDExOSwxNjY3NTYsMzkxMzIsMTY2NDY5LDE2MTI4LDM3NDE4LDE4NzI1LDMzODEyLDM5MjI3LDM5MjQ1LDE2MjU2NiwxNTg2OSwzOTMyMywxOTMxMSwzOTMzOCwzOTUxNiwxNjY3NTcsMTUzODAwLDI3Mjc5LDM5NDU3LDIzMjk0LDM5NDcxLDE3MDIyNSwxOTM0NCwxNzAzMTIsMzkzNTYsMTkzODksMTkzNTEsMzc3NTcsMjI2NDIsMTM1OTM4LDIyNTYyLDE0OTk0NCwxMzY0MjQsMzA3ODgsMTQxMDg3LDE0Njg3MiwyNjgyMSwxNTc0MSwzNzk3NiwxNDYzMSwyNDkxMiwxNDExODUsMTQxNjc1LDI0ODM5LDQwMDE1LDQwMDE5LDQwMDU5LDM5OTg5LDM5OTUyLDM5ODA3LDM5ODg3LDE3MTU2NSwzOTgzOSwxNzI1MzMsMTcyMjg2LDQwMjI1LDE5NjMwLDE0NzcxNiw0MDQ3MiwxOTYzMiw0MDIwNCwxNzI0NjgsMTcyMjY5LDE3MjI3NSwxNzAyODcsNDAzNTcsMzM5ODEsMTU5MjUwLDE1OTcxMSwxNTg1OTQsMzQzMDAsMTc3MTUsMTU5MTQwLDE1OTM2NCwxNTkyMTYsMzM4MjQsMzQyODYsMTU5MjMyLDE0NTM2NywxNTU3NDgsMzEyMDIsMTQ0Nzk2LDE0NDk2MCwxODczMywxNDk5ODIsMTU3MTQsMzc4NTEsMzc1NjYsMzc3MDQsMTMxNzc1LDMwOTA1LDM3NDk1LDM3OTY1LDIwNDUyLDEzMzc2LDM2OTY0LDE1MjkyNSwzMDc4MSwzMDgwNCwzMDkwMiwzMDc5NSwxMzcwNDcsMTQzODE3LDE0OTgyNSwxMzk3OCwyMDMzOCwyODYzNCwyODYzMywyODcwMiwyODcwMiwyMTUyNCwxNDc4OTMsMjI0NTksMjI3NzEsMjI0MTAsNDAyMTQsMjI0ODcsMjg5ODAsMTM0ODcsMTQ3ODg0LDI5MTYzLDE1ODc4NCwxNTE0NDcsMjMzMzYsMTM3MTQxLDE2NjQ3MywyNDg0NCwyMzI0NiwyMzA1MSwxNzA4NCwxNDg2MTYsMTQxMjQsMTkzMjMsMTY2Mzk2LDM3ODE5LDM3ODE2LDEzNzQzMCwxMzQ5NDEsMzM5MDYsMTU4OTEyLDEzNjIxMSwxNDgyMTgsMTQyMzc0LDE0ODQxNywyMjkzMiwxNDY4NzEsMTU3NTA1LDMyMTY4LDE1NTk5NSwxNTU4MTIsMTQ5OTQ1LDE0OTg5OSwxNjYzOTQsMzc2MDUsMjk2NjYsMTYxMDUsMjk4NzYsMTY2NzU1LDEzNzM3NSwxNjA5NywxNTAxOTUsMjczNTIsMjk2ODMsMjk2OTEsMTYwODYsMTUwMDc4LDE1MDE2NCwxMzcxNzcsMTUwMTE4LDEzMjAwNywxMzYyMjgsMTQ5OTg5LDI5NzY4LDE0OTc4MiwyODgzNywxNDk4NzgsMzc1MDgsMjk2NzAsMzc3MjcsMTMyMzUwLDM3NjgxLDE2NjYwNiwxNjY0MjIsMzc3NjYsMTY2ODg3LDE1MzA0NSwxODc0MSwxNjY1MzAsMjkwMzUsMTQ5ODI3LDEzNDM5OSwyMjE4MCwxMzI2MzQsMTM0MTIzLDEzNDMyOCwyMTc2MiwzMTE3MiwxMzcyMTAsMzIyNTQsMTM2ODk4LDE1MDA5NiwxMzcyOTgsMTc3MTAsMzc4ODksMTQwOTAsMTY2NTkyLDE0OTkzMywyMjk2MCwxMzc0MDcsMTM3MzQ3LDE2MDkwMCwyMzIwMSwxNDA1MCwxNDY3NzksMTQwMDAsMzc0NzEsMjMxNjEsMTY2NTI5LDEzNzMxNCwzNzc0OCwxNTU2NSwxMzM4MTIsMTkwOTQsMTQ3MzAsMjA3MjQsMTU3MjEsMTU2OTIsMTM2MDkyLDI5MDQ1LDE3MTQ3LDE2NDM3NiwyODE3NSwxNjgxNjQsMTc2NDMsMjc5OTEsMTYzNDA3LDI4Nzc1LDI3ODIzLDE1NTc0LDE0NzQzNywxNDY5ODksMjgxNjIsMjg0MjgsMTU3MjcsMTMyMDg1LDMwMDMzLDE0MDEyLDEzNTEyLDE4MDQ4LDE2MDkwLDE4NTQ1LDIyOTgwLDM3NDg2LDE4NzUwLDM2NjczLDE2Njk0MCwxNTg2NTYsMjI1NDYsMjI0NzIsMTQwMzgsMTM2Mjc0LDI4OTI2LDE0ODMyMiwxNTAxMjksMTQzMzMxLDEzNTg1NiwxNDAyMjEsMjY4MDksMjY5ODMsMTM2MDg4LDE0NDYxMywxNjI4MDQsMTQ1MTE5LDE2NjUzMSwxNDUzNjYsMTQ0Mzc4LDE1MDY4NywyNzE2MiwxNDUwNjksMTU4OTAzLDMzODU0LDE3NjMxLDE3NjE0LDE1OTAxNCwxNTkwNTcsMTU4ODUwLDE1OTcxMCwyODQzOSwxNjAwMDksMzM1OTcsMTM3MDE4LDMzNzczLDE1ODg0OCwxNTk4MjcsMTM3MTc5LDIyOTIxLDIzMTcwLDEzNzEzOSwyMzEzNywyMzE1MywxMzc0NzcsMTQ3OTY0LDE0MTI1LDIzMDIzLDEzNzAyMCwxNDAyMywyOTA3MCwzNzc3NiwyNjI2NiwxNDgxMzMsMjMxNTAsMjMwODMsMTQ4MTE1LDI3MTc5LDE0NzE5MywxNjE1OTAsMTQ4NTcxLDE0ODE3MCwyODk1NywxNDgwNTcsMTY2MzY5LDIwNDAwLDE1OTAxNiwyMzc0NiwxNDg2ODYsMTYzNDA1LDE0ODQxMywyNzE0OCwxNDgwNTQsMTM1OTQwLDI4ODM4LDI4OTc5LDE0ODQ1NywxNTc4MSwyNzg3MSwxOTQ1OTcsMTUwMDk1LDMyMzU3LDIzMDE5LDIzODU1LDE1ODU5LDI0NDEyLDE1MDEwOSwxMzcxODMsMzIxNjQsMzM4MzAsMjE2MzcsMTQ2MTcwLDE0NDEyOCwxMzE2MDQsMjIzOTgsMTMzMzMzLDEzMjYzMywxNjM1NywxMzkxNjYsMTcyNzI2LDI4Njc1LDE2ODI4MywyMzkyMCwyOTU4MywzMTk1NSwxNjY0ODksMTY4OTkyLDIwNDI0LDMyNzQzLDI5Mzg5LDI5NDU2LDE2MjU0OCwyOTQ5NiwyOTQ5NywxNTMzMzQsMjk1MDUsMjk1MTIsMTYwNDEsMTYyNTg0LDM2OTcyLDI5MTczLDE0OTc0NiwyOTY2NSwzMzI3MCwxNjA3NCwzMDQ3NiwxNjA4MSwyNzgxMCwyMjI2OSwyOTcyMSwyOTcyNiwyOTcyNywxNjA5OCwxNjExMiwxNjExNiwxNjEyMiwyOTkwNywxNjE0MiwxNjIxMSwzMDAxOCwzMDA2MSwzMDA2NiwzMDA5MywxNjI1MiwzMDE1MiwzMDE3MiwxNjMyMCwzMDI4NSwxNjM0MywzMDMyNCwxNjM0OCwzMDMzMCwxNTEzODgsMjkwNjQsMjIwNTEsMzUyMDAsMjI2MzMsMTY0MTMsMzA1MzEsMTY0NDEsMjY0NjUsMTY0NTMsMTM3ODcsMzA2MTYsMTY0OTAsMTY0OTUsMjM2NDYsMzA2NTQsMzA2NjcsMjI3NzAsMzA3NDQsMjg4NTcsMzA3NDgsMTY1NTIsMzA3NzcsMzA3OTEsMzA4MDEsMzA4MjIsMzM4NjQsMTUyODg1LDMxMDI3LDI2NjI3LDMxMDI2LDE2NjQzLDE2NjQ5LDMxMTIxLDMxMTI5LDM2Nzk1LDMxMjM4LDM2Nzk2LDE2NzQzLDMxMzc3LDE2ODE4LDMxNDIwLDMzNDAxLDE2ODM2LDMxNDM5LDMxNDUxLDE2ODQ3LDIwMDAxLDMxNTg2LDMxNTk2LDMxNjExLDMxNzYyLDMxNzcxLDE2OTkyLDE3MDE4LDMxODY3LDMxOTAwLDE3MDM2LDMxOTI4LDE3MDQ0LDMxOTgxLDM2NzU1LDI4ODY0LDEzNDM1MSwzMjIwNywzMjIxMiwzMjIwOCwzMjI1MywzMjY4NiwzMjY5MiwyOTM0MywxNzMwMywzMjgwMCwzMjgwNSwzMTU0NSwzMjgxNCwzMjgxNywzMjg1MiwxNTgyMCwyMjQ1MiwyODgzMiwzMjk1MSwzMzAwMSwxNzM4OSwzMzAzNiwyOTQ4MiwzMzAzOCwzMzA0MiwzMDA0OCwzMzA0NCwxNzQwOSwxNTE2MSwzMzExMCwzMzExMywzMzExNCwxNzQyNywyMjU4NiwzMzE0OCwzMzE1NiwxNzQ0NSwzMzE3MSwxNzQ1MywzMzE4OSwyMjUxMSwzMzIxNywzMzI1MiwzMzM2NCwxNzU1MSwzMzQ0NiwzMzM5OCwzMzQ4MiwzMzQ5NiwzMzUzNSwxNzU4NCwzMzYyMywzODUwNSwyNzAxOCwzMzc5NywyODkxNywzMzg5MiwyNDgwMywzMzkyOCwxNzY2OCwzMzk4MiwzNDAxNywzNDA0MCwzNDA2NCwzNDEwNCwzNDEzMCwxNzcyMywzNDE1OSwzNDE2MCwzNDI3MiwxNzc4MywzNDQxOCwzNDQ1MCwzNDQ4MiwzNDU0MywzODQ2OSwzNDY5OSwxNzkyNiwxNzk0MywzNDk5MCwzNTA3MSwzNTEwOCwzNTE0MywzNTIxNywxNjIxNTEsMzUzNjksMzUzODQsMzU0NzYsMzU1MDgsMzU5MjEsMzYwNTIsMzYwODIsMzYxMjQsMTgzMjgsMjI2MjMsMzYyOTEsMTg0MTMsMjAyMDYsMzY0MTAsMjE5NzYsMjIzNTYsMzY0NjUsMjIwMDUsMzY1MjgsMTg0ODcsMzY1NTgsMzY1NzgsMzY1ODAsMzY1ODksMzY1OTQsMzY3OTEsMzY4MDEsMzY4MTAsMzY4MTIsMzY5MTUsMzkzNjQsMTg2MDUsMzkxMzYsMzczOTUsMTg3MTgsMzc0MTYsMzc0NjQsMzc0ODMsMzc1NTMsMzc1NTAsMzc1NjcsMzc2MDMsMzc2MTEsMzc2MTksMzc2MjAsMzc2MjksMzc2OTksMzc3NjQsMzc4MDUsMTg3NTcsMTg3NjksNDA2MzksMzc5MTEsMjEyNDksMzc5MTcsMzc5MzMsMzc5NTAsMTg3OTQsMzc5NzIsMzgwMDksMzgxODksMzgzMDYsMTg4NTUsMzgzODgsMzg0NTEsMTg5MTcsMjY1MjgsMTg5ODAsMzg3MjAsMTg5OTcsMzg4MzQsMzg4NTAsMjIxMDAsMTkxNzIsMjQ4MDgsMzkwOTcsMTkyMjUsMzkxNTMsMjI1OTYsMzkxODIsMzkxOTMsMjA5MTYsMzkxOTYsMzkyMjMsMzkyMzQsMzkyNjEsMzkyNjYsMTkzMTIsMzkzNjUsMTkzNTcsMzk0ODQsMzk2OTUsMzEzNjMsMzk3ODUsMzk4MDksMzk5MDEsMzk5MjEsMzk5MjQsMTk1NjUsMzk5NjgsMTQxOTEsMTM4MTc4LDQwMjY1LDM5OTk0LDQwNzAyLDIyMDk2LDQwMzM5LDQwMzgxLDQwMzg0LDQwNDQ0LDM4MTM0LDM2NzkwLDQwNTcxLDQwNjIwLDQwNjI1LDQwNjM3LDQwNjQ2LDM4MTA4LDQwNjc0LDQwNjg5LDQwNjk2LDMxNDMyLDQwNzcyLDEzMTIyMCwxMzE3NjcsMTMyMDAwLDI2OTA2LDM4MDgzLDIyOTU2LDEzMjMxMSwyMjU5MiwzODA4MSwxNDI2NSwxMzI1NjUsMTMyNjI5LDEzMjcyNiwxMzY4OTAsMjIzNTksMjkwNDMsMTMzODI2LDEzMzgzNywxMzQwNzksMjE2MTAsMTk0NjE5LDEzNDA5MSwyMTY2MiwxMzQxMzksMTM0MjAzLDEzNDIyNywxMzQyNDUsMTM0MjY4LDI0ODA3LDEzNDI4NSwyMjEzOCwxMzQzMjUsMTM0MzY1LDEzNDM4MSwxMzQ1MTEsMTM0NTc4LDEzNDYwMCwyNjk2NSwzOTk4MywzNDcyNSwxMzQ2NjAsMTM0NjcwLDEzNDg3MSwxMzUwNTYsMTM0OTU3LDEzNDc3MSwyMzU4NCwxMzUxMDAsMjQwNzUsMTM1MjYwLDEzNTI0NywxMzUyODYsMjYzOTgsMTM1MjkxLDEzNTMwNCwxMzUzMTgsMTM4OTUsMTM1MzU5LDEzNTM3OSwxMzU0NzEsMTM1NDgzLDIxMzQ4LDMzOTY1LDEzNTkwNywxMzYwNTMsMTM1OTkwLDM1NzEzLDEzNjU2NywxMzY3MjksMTM3MTU1LDEzNzE1OSwyMDA4OCwyODg1OSwxMzcyNjEsMTM3NTc4LDEzNzc3MywxMzc3OTcsMTM4MjgyLDEzODM1MiwxMzg0MTIsMTM4OTUyLDI1MjgzLDEzODk2NSwxMzkwMjksMjkwODAsMjY3MDksMTM5MzMzLDI3MTEzLDE0MDI0LDEzOTkwMCwxNDAyNDcsMTQwMjgyLDE0MTA5OCwxNDE0MjUsMTQxNjQ3LDMzNTMzLDE0MTY3MSwxNDE3MTUsMTQyMDM3LDM1MjM3LDE0MjA1NiwzNjc2OCwxNDIwOTQsMzg4NDAsMTQyMTQzLDM4OTgzLDM5NjEzLDE0MjQxMixudWxsLDE0MjQ3MiwxNDI1MTksMTU0NjAwLDE0MjYwMCwxNDI2MTAsMTQyNzc1LDE0Mjc0MSwxNDI5MTQsMTQzMjIwLDE0MzMwOCwxNDM0MTEsMTQzNDYyLDE0NDE1OSwxNDQzNTAsMjQ0OTcsMjYxODQsMjYzMDMsMTYyNDI1LDE0NDc0MywxNDQ4ODMsMjkxODUsMTQ5OTQ2LDMwNjc5LDE0NDkyMiwxNDUxNzQsMzIzOTEsMTMxOTEwLDIyNzA5LDI2MzgyLDI2OTA0LDE0NjA4NywxNjEzNjcsMTU1NjE4LDE0Njk2MSwxNDcxMjksMTYxMjc4LDEzOTQxOCwxODY0MCwxOTEyOCwxNDc3MzcsMTY2NTU0LDE0ODIwNiwxNDgyMzcsMTQ3NTE1LDE0ODI3NiwxNDgzNzQsMTUwMDg1LDEzMjU1NCwyMDk0NiwxMzI2MjUsMjI5NDMsMTM4OTIwLDE1Mjk0LDE0NjY4NywxNDg0ODQsMTQ4Njk0LDIyNDA4LDE0OTEwOCwxNDc0NywxNDkyOTUsMTY1MzUyLDE3MDQ0MSwxNDE3OCwxMzk3MTUsMzU2NzgsMTY2NzM0LDM5MzgyLDE0OTUyMiwxNDk3NTUsMTUwMDM3LDI5MTkzLDE1MDIwOCwxMzQyNjQsMjI4ODUsMTUxMjA1LDE1MTQzMCwxMzI5ODUsMzY1NzAsMTUxNTk2LDIxMTM1LDIyMzM1LDI5MDQxLDE1MjIxNywxNTI2MDEsMTQ3Mjc0LDE1MDE4MywyMTk0OCwxNTI2NDYsMTUyNjg2LDE1ODU0NiwzNzMzMiwxMzQyNywxNTI4OTUsMTYxMzMwLDE1MjkyNiwxODIwMCwxNTI5MzAsMTUyOTM0LDE1MzU0MywxNDk4MjMsMTUzNjkzLDIwNTgyLDEzNTYzLDE0NDMzMiwyNDc5OCwxNTM4NTksMTgzMDAsMTY2MjE2LDE1NDI4NiwxNTQ1MDUsMTU0NjMwLDEzODY0MCwyMjQzMywyOTAwOSwyODU5OCwxNTU5MDYsMTYyODM0LDM2OTUwLDE1NjA4MiwxNTE0NTAsMzU2ODIsMTU2Njc0LDE1Njc0NiwyMzg5OSwxNTg3MTEsMzY2NjIsMTU2ODA0LDEzNzUwMCwzNTU2MiwxNTAwMDYsMTU2ODA4LDE0NzQzOSwxNTY5NDYsMTkzOTIsMTU3MTE5LDE1NzM2NSwxNDEwODMsMzc5ODksMTUzNTY5LDI0OTgxLDIzMDc5LDE5NDc2NSwyMDQxMSwyMjIwMSwxNDg3NjksMTU3NDM2LDIwMDc0LDE0OTgxMiwzODQ4NiwyODA0NywxNTg5MDksMTM4NDgsMzUxOTEsMTU3NTkzLDE1NzgwNiwxNTY2ODksMTU3NzkwLDI5MTUxLDE1Nzg5NSwzMTU1NCwxNjgxMjgsMTMzNjQ5LDE1Nzk5MCwzNzEyNCwxNTgwMDksMzEzMDEsNDA0MzIsMTU4MjAyLDM5NDYyLDE1ODI1MywxMzkxOSwxNTY3NzcsMTMxMTA1LDMxMTA3LDE1ODI2MCwxNTg1NTUsMjM4NTIsMTQ0NjY1LDMzNzQzLDE1ODYyMSwxODEyOCwxNTg4ODQsMzAwMTEsMzQ5MTcsMTU5MTUwLDIyNzEwLDE0MTA4LDE0MDY4NSwxNTk4MTksMTYwMjA1LDE1NDQ0LDE2MDM4NCwxNjAzODksMzc1MDUsMTM5NjQyLDE2MDM5NSwzNzY4MCwxNjA0ODYsMTQ5OTY4LDI3NzA1LDM4MDQ3LDE2MDg0OCwxMzQ5MDQsMzQ4NTUsMzUwNjEsMTQxNjA2LDE2NDk3OSwxMzcxMzcsMjgzNDQsMTUwMDU4LDEzNzI0OCwxNDc1NiwxNDAwOSwyMzU2OCwzMTIwMywxNzcyNywyNjI5NCwxNzExODEsMTcwMTQ4LDM1MTM5LDE2MTc0MCwxNjE4ODAsMjIyMzAsMTY2MDcsMTM2NzE0LDE0NzUzLDE0NTE5OSwxNjQwNzIsMTM2MTMzLDI5MTAxLDMzNjM4LDE2MjI2OSwxNjgzNjAsMjMxNDMsMTk2MzksMTU5OTE5LDE2NjMxNSwxNjIzMDEsMTYyMzE0LDE2MjU3MSwxNjMxNzQsMTQ3ODM0LDMxNTU1LDMxMTAyLDE2Mzg0OSwyODU5NywxNzI3NjcsMjcxMzksMTY0NjMyLDIxNDEwLDE1OTIzOSwzNzgyMywyNjY3OCwzODc0OSwxNjQyMDcsMTYzODc1LDE1ODEzMywxMzYxNzMsMTQzOTE5LDE2MzkxMiwyMzk0MSwxNjY5NjAsMTYzOTcxLDIyMjkzLDM4OTQ3LDE2NjIxNywyMzk3OSwxNDk4OTYsMjYwNDYsMjcwOTMsMjE0NTgsMTUwMTgxLDE0NzMyOSwxNTM3NywyNjQyMiwxNjM5ODQsMTY0MDg0LDE2NDE0MiwxMzkxNjksMTY0MTc1LDE2NDIzMywxNjQyNzEsMTY0Mzc4LDE2NDYxNCwxNjQ2NTUsMTY0NzQ2LDEzNzcwLDE2NDk2OCwxNjU1NDYsMTg2ODIsMjU1NzQsMTY2MjMwLDMwNzI4LDM3NDYxLDE2NjMyOCwxNzM5NCwxNjYzNzUsMTczNzUsMTY2Mzc2LDE2NjcyNiwxNjY4NjgsMjMwMzIsMTY2OTIxLDM2NjE5LDE2Nzg3NywxNjgxNzIsMzE1NjksMTY4MjA4LDE2ODI1MiwxNTg2MywxNjgyODYsMTUwMjE4LDM2ODE2LDI5MzI3LDIyMTU1LDE2OTE5MSwxNjk0NDksMTY5MzkyLDE2OTQwMCwxNjk3NzgsMTcwMTkzLDE3MDMxMywxNzAzNDYsMTcwNDM1LDE3MDUzNiwxNzA3NjYsMTcxMzU0LDE3MTQxOSwzMjQxNSwxNzE3NjgsMTcxODExLDE5NjIwLDM4MjE1LDE3MjY5MSwyOTA5MCwxNzI3OTksMTk4NTcsMzY4ODIsMTczNTE1LDE5ODY4LDEzNDMwMCwzNjc5OCwyMTk1MywzNjc5NCwxNDA0NjQsMzY3OTMsMTUwMTYzLDE3NjczLDMyMzgzLDI4NTAyLDI3MzEzLDIwMjAyLDEzNTQwLDE2NjcwMCwxNjE5NDksMTQxMzgsMzY0ODAsMTM3MjA1LDE2Mzg3NiwxNjY3NjQsMTY2ODA5LDE2MjM2NiwxNTczNTksMTU4NTEsMTYxMzY1LDE0NjYxNSwxNTMxNDEsMTUzOTQyLDIwMTIyLDE1NTI2NSwxNTYyNDgsMjIyMDcsMTM0NzY1LDM2MzY2LDIzNDA1LDE0NzA4MCwxNTA2ODYsMjU1NjYsMjUyOTYsMTM3MjA2LDEzNzMzOSwyNTkwNCwyMjA2MSwxNTQ2OTgsMjE1MzAsMTUyMzM3LDE1ODE0LDE3MTQxNiwxOTU4MSwyMjA1MCwyMjA0NiwzMjU4NSwxNTUzNTIsMjI5MDEsMTQ2NzUyLDM0NjcyLDE5OTk2LDEzNTE0NiwxMzQ0NzMsMTQ1MDgyLDMzMDQ3LDQwMjg2LDM2MTIwLDMwMjY3LDQwMDA1LDMwMjg2LDMwNjQ5LDM3NzAxLDIxNTU0LDMzMDk2LDMzNTI3LDIyMDUzLDMzMDc0LDMzODE2LDMyOTU3LDIxOTk0LDMxMDc0LDIyMDgzLDIxNTI2LDEzNDgxMywxMzc3NCwyMjAyMSwyMjAwMSwyNjM1MywxNjQ1NzgsMTM4NjksMzAwMDQsMjIwMDAsMjE5NDYsMjE2NTUsMjE4NzQsMTM0MjA5LDEzNDI5NCwyNDI3MiwxNTE4ODAsMTM0Nzc0LDE0MjQzNCwxMzQ4MTgsNDA2MTksMzIwOTAsMjE5ODIsMTM1Mjg1LDI1MjQ1LDM4NzY1LDIxNjUyLDM2MDQ1LDI5MTc0LDM3MjM4LDI1NTk2LDI1NTI5LDI1NTk4LDIxODY1LDE0MjE0Nyw0MDA1MCwxNDMwMjcsMjA4OTAsMTM1MzUsMTM0NTY3LDIwOTAzLDIxNTgxLDIxNzkwLDIxNzc5LDMwMzEwLDM2Mzk3LDE1NzgzNCwzMDEyOSwzMjk1MCwzNDgyMCwzNDY5NCwzNTAxNSwzMzIwNiwzMzgyMCwxMzUzNjEsMTc2NDQsMjk0NDQsMTQ5MjU0LDIzNDQwLDMzNTQ3LDE1Nzg0MywyMjEzOSwxNDEwNDQsMTYzMTE5LDE0Nzg3NSwxNjMxODcsMTU5NDQwLDE2MDQzOCwzNzIzMiwxMzU2NDEsMzczODQsMTQ2Njg0LDE3MzczNywxMzQ4MjgsMTM0OTA1LDI5Mjg2LDEzODQwMiwxODI1NCwxNTE0OTAsMTYzODMzLDEzNTE0NywxNjYzNCw0MDAyOSwyNTg4NywxNDI3NTIsMTg2NzUsMTQ5NDcyLDE3MTM4OCwxMzUxNDgsMTM0NjY2LDI0Njc0LDE2MTE4NywxMzUxNDksbnVsbCwxNTU3MjAsMTM1NTU5LDI5MDkxLDMyMzk4LDQwMjcyLDE5OTk0LDE5OTcyLDEzNjg3LDIzMzA5LDI3ODI2LDIxMzUxLDEzOTk2LDE0ODEyLDIxMzczLDEzOTg5LDE0OTAxNiwyMjY4MiwxNTAzODIsMzMzMjUsMjE1NzksMjI0NDIsMTU0MjYxLDEzMzQ5NyxudWxsLDE0OTMwLDE0MDM4OSwyOTU1NiwxNzE2OTIsMTk3MjEsMzk5MTcsMTQ2Njg2LDE3MTgyNCwxOTU0NywxNTE0NjUsMTY5Mzc0LDE3MTk5OCwzMzg4NCwxNDY4NzAsMTYwNDM0LDE1NzYxOSwxNDUxODQsMjUzOTAsMzIwMzcsMTQ3MTkxLDE0Njk4OCwxNDg5MCwzNjg3MiwyMTE5NiwxNTk4OCwxMzk0NiwxNzg5NywxMzIyMzgsMzAyNzIsMjMyODAsMTM0ODM4LDMwODQyLDE2MzYzMCwyMjY5NSwxNjU3NSwyMjE0MCwzOTgxOSwyMzkyNCwzMDI5MiwxNzMxMDgsNDA1ODEsMTk2ODEsMzAyMDEsMTQzMzEsMjQ4NTcsMTQzNTc4LDE0ODQ2NixudWxsLDIyMTA5LDEzNTg0OSwyMjQzOSwxNDk4NTksMTcxNTI2LDIxMDQ0LDE1OTkxOCwxMzc0MSwyNzcyMiw0MDMxNiwzMTgzMCwzOTczNywyMjQ5NCwxMzcwNjgsMjM2MzUsMjU4MTEsMTY5MTY4LDE1NjQ2OSwxNjAxMDAsMzQ0NzcsMTM0NDQwLDE1OTAxMCwxNTAyNDIsMTM0NTEzLG51bGwsMjA5OTAsMTM5MDIzLDIzOTUwLDM4NjU5LDEzODcwNSw0MDU3NywzNjk0MCwzMTUxOSwzOTY4MiwyMzc2MSwzMTY1MSwyNTE5MiwyNTM5NywzOTY3OSwzMTY5NSwzOTcyMiwzMTg3MCwzOTcyNiwzMTgxMCwzMTg3OCwzOTk1NywzMTc0MCwzOTY4OSw0MDcyNywzOTk2MywxNDk4MjIsNDA3OTQsMjE4NzUsMjM0OTEsMjA0NzcsNDA2MDAsMjA0NjYsMjEwODgsMTU4NzgsMjEyMDEsMjIzNzUsMjA1NjYsMjI5NjcsMjQwODIsMzg4NTYsNDAzNjMsMzY3MDAsMjE2MDksMzg4MzYsMzkyMzIsMzg4NDIsMjEyOTIsMjQ4ODAsMjY5MjQsMjE0NjYsMzk5NDYsNDAxOTQsMTk1MTUsMzg0NjUsMjcwMDgsMjA2NDYsMzAwMjIsMTM3MDY5LDM5Mzg2LDIxMTA3LG51bGwsMzcyMDksMzg1MjksMzcyMTIsbnVsbCwzNzIwMSwxNjc1NzUsMjU0NzEsMTU5MDExLDI3MzM4LDIyMDMzLDM3MjYyLDMwMDc0LDI1MjIxLDEzMjA5MiwyOTUxOSwzMTg1NiwxNTQ2NTcsMTQ2Njg1LG51bGwsMTQ5Nzg1LDMwNDIyLDM5ODM3LDIwMDEwLDEzNDM1NiwzMzcyNiwzNDg4MixudWxsLDIzNjI2LDI3MDcyLDIwNzE3LDIyMzk0LDIxMDIzLDI0MDUzLDIwMTc0LDI3Njk3LDEzMTU3MCwyMDI4MSwyMTY2MCwyMTcyMiwyMTE0NiwzNjIyNiwxMzgyMiwyNDMzMiwxMzgxMSxudWxsLDI3NDc0LDM3MjQ0LDQwODY5LDM5ODMxLDM4OTU4LDM5MDkyLDM5NjEwLDQwNjE2LDQwNTgwLDI5MDUwLDMxNTA4LG51bGwsMjc2NDIsMzQ4NDAsMzI2MzIsbnVsbCwyMjA0OCwxNzM2NDIsMzY0NzEsNDA3ODcsbnVsbCwzNjMwOCwzNjQzMSw0MDQ3NiwzNjM1MywyNTIxOCwxNjQ3MzMsMzYzOTIsMzY0NjksMzE0NDMsMTUwMTM1LDMxMjk0LDMwOTM2LDI3ODgyLDM1NDMxLDMwMjE1LDE2NjQ5MCw0MDc0MiwyNzg1NCwzNDc3NCwzMDE0NywxNzI3MjIsMzA4MDMsMTk0NjI0LDM2MTA4LDI5NDEwLDI5NTUzLDM1NjI5LDI5NDQyLDI5OTM3LDM2MDc1LDE1MDIwMywzNDM1MSwyNDUwNiwzNDk3NiwxNzU5MSxudWxsLDEzNzI3NSwxNTkyMzcsbnVsbCwzNTQ1NCwxNDA1NzEsbnVsbCwyNDgyOSwzMDMxMSwzOTYzOSw0MDI2MCwzNzc0MiwzOTgyMywzNDgwNSxudWxsLDM0ODMxLDM2MDg3LDI5NDg0LDM4Njg5LDM5ODU2LDEzNzgyLDI5MzYyLDE5NDYzLDMxODI1LDM5MjQyLDE1NTk5MywyNDkyMSwxOTQ2MCw0MDU5OCwyNDk1NyxudWxsLDIyMzY3LDI0OTQzLDI1MjU0LDI1MTQ1LDI1Mjk0LDE0OTQwLDI1MDU4LDIxNDE4LDE0NDM3MywyNTQ0NCwyNjYyNiwxMzc3OCwyMzg5NSwxNjY4NTAsMzY4MjYsMTY3NDgxLG51bGwsMjA2OTcsMTM4NTY2LDMwOTgyLDIxMjk4LDM4NDU2LDEzNDk3MSwxNjQ4NSxudWxsLDMwNzE4LG51bGwsMzE5MzgsMTU1NDE4LDMxOTYyLDMxMjc3LDMyODcwLDMyODY3LDMyMDc3LDI5OTU3LDI5OTM4LDM1MjIwLDMzMzA2LDI2MzgwLDMyODY2LDE2MDkwMiwzMjg1OSwyOTkzNiwzMzAyNywzMDUwMCwzNTIwOSwxNTc2NDQsMzAwMzUsMTU5NDQxLDM0NzI5LDM0NzY2LDMzMjI0LDM0NzAwLDM1NDAxLDM2MDEzLDM1NjUxLDMwNTA3LDI5OTQ0LDM0MDEwLDEzODc3LDI3MDU4LDM2MjYyLG51bGwsMzUyNDEsMjk4MDAsMjgwODksMzQ3NTMsMTQ3NDczLDI5OTI3LDE1ODM1LDI5MDQ2LDI0NzQwLDI0OTg4LDE1NTY5LDI5MDI2LDI0Njk1LG51bGwsMzI2MjUsMTY2NzAxLDI5MjY0LDI0ODA5LDE5MzI2LDIxMDI0LDE1Mzg0LDE0NjYzMSwxNTUzNTEsMTYxMzY2LDE1Mjg4MSwxMzc1NDAsMTM1OTM0LDE3MDI0MywxNTkxOTYsMTU5OTE3LDIzNzQ1LDE1NjA3NywxNjY0MTUsMTQ1MDE1LDEzMTMxMCwxNTc3NjYsMTUxMzEwLDE3NzYyLDIzMzI3LDE1NjQ5Miw0MDc4NCw0MDYxNCwxNTYyNjcsMTIyODgsNjUyOTIsMTIyODksMTIyOTAsNjUyOTQsODIzMSw2NTMwNyw2NTMwNiw2NTMxMSw2NTI4MSw2NTA3Miw4MjMwLDgyMjksNjUxMDQsNjUxMDUsNjUxMDYsMTgzLDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MzcyLDgyMTEsNjUwNzMsODIxMiw2NTA3NSw5NTg4LDY1MDc2LDY1MTAzLDY1Mjg4LDY1Mjg5LDY1MDc3LDY1MDc4LDY1MzcxLDY1MzczLDY1MDc5LDY1MDgwLDEyMzA4LDEyMzA5LDY1MDgxLDY1MDgyLDEyMzA0LDEyMzA1LDY1MDgzLDY1MDg0LDEyMjk4LDEyMjk5LDY1MDg1LDY1MDg2LDEyMjk2LDEyMjk3LDY1MDg3LDY1MDg4LDEyMzAwLDEyMzAxLDY1MDg5LDY1MDkwLDEyMzAyLDEyMzAzLDY1MDkxLDY1MDkyLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMTcsMTIzMTgsODI0NSw4MjQyLDY1MjgzLDY1Mjg2LDY1MjkwLDgyNTEsMTY3LDEyMjkxLDk2NzUsOTY3OSw5NjUxLDk2NTAsOTY3OCw5NzM0LDk3MzMsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjYxLDk2NjAsMTI5NjMsODQ1MywxNzUsNjU1MDcsNjUzNDMsNzE3LDY1MDk3LDY1MDk4LDY1MTAxLDY1MTAyLDY1MDk5LDY1MTAwLDY1MTE5LDY1MTIwLDY1MTIxLDY1MjkxLDY1MjkzLDIxNSwyNDcsMTc3LDg3MzAsNjUzMDgsNjUzMTAsNjUzMDksODgwNiw4ODA3LDg4MDAsODczNCw4Nzg2LDg4MDEsNjUxMjIsNjUxMjMsNjUxMjQsNjUxMjUsNjUxMjYsNjUzNzQsODc0NSw4NzQ2LDg4NjksODczNiw4NzM1LDg4OTUsMTMyNjYsMTMyNjUsODc0Nyw4NzUwLDg3NTcsODc1Niw5NzkyLDk3OTQsODg1Myw4ODU3LDg1OTMsODU5NSw4NTkyLDg1OTQsODU5OCw4NTk5LDg2MDEsODYwMCw4NzQxLDg3MzksNjUyOTUsNjUzNDAsODcyNSw2NTEyOCw2NTI4NCw2NTUwOSwxMjMwNiw2NTUwNCw2NTUwNSw2NTI4NSw2NTMxMiw4NDUxLDg0NTcsNjUxMjksNjUxMzAsNjUxMzEsMTMyNjksMTMyMTIsMTMyMTMsMTMyMTQsMTMyNjIsMTMyMTcsMTMxOTgsMTMxOTksMTMyNTIsMTc2LDIwODI1LDIwODI3LDIwODMwLDIwODI5LDIwODMzLDIwODM1LDIxOTkxLDI5OTI5LDMxOTUwLDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjE1LDk2MTQsOTYxMyw5NjEyLDk2MTEsOTYxMCw5NjA5LDk1MzIsOTUyNCw5NTE2LDk1MDgsOTUwMCw5NjIwLDk0NzIsOTQ3NCw5NjIxLDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTU4MSw5NTgyLDk1ODQsOTU4Myw5NTUyLDk1NjYsOTU3OCw5NTY5LDk2OTgsOTY5OSw5NzAxLDk3MDAsOTU4NSw5NTg2LDk1ODcsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1MywxMjMyMSwxMjMyMiwxMjMyMywxMjMyNCwxMjMyNSwxMjMyNiwxMjMyNywxMjMyOCwxMjMyOSwyMTMxMywyMTMxNiwyMTMxNyw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSwxMjU0OSwxMjU1MCwxMjU1MSwxMjU1MiwxMjU1MywxMjU1NCwxMjU1NSwxMjU1NiwxMjU1NywxMjU1OCwxMjU1OSwxMjU2MCwxMjU2MSwxMjU2MiwxMjU2MywxMjU2NCwxMjU2NSwxMjU2NiwxMjU2NywxMjU2OCwxMjU2OSwxMjU3MCwxMjU3MSwxMjU3MiwxMjU3MywxMjU3NCwxMjU3NSwxMjU3NiwxMjU3NywxMjU3OCwxMjU3OSwxMjU4MCwxMjU4MSwxMjU4MiwxMjU4MywxMjU4NCwxMjU4NSw3MjksNzEzLDcxNCw3MTEsNzE1LDkyMTYsOTIxNyw5MjE4LDkyMTksOTIyMCw5MjIxLDkyMjIsOTIyMyw5MjI0LDkyMjUsOTIyNiw5MjI3LDkyMjgsOTIyOSw5MjMwLDkyMzEsOTIzMiw5MjMzLDkyMzQsOTIzNSw5MjM2LDkyMzcsOTIzOCw5MjM5LDkyNDAsOTI0MSw5MjQyLDkyNDMsOTI0NCw5MjQ1LDkyNDYsOTI0Nyw5MjQ5LDgzNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTY4LDIwMDU3LDE5OTY5LDE5OTcxLDIwMDM1LDIwMDYxLDIwMTAyLDIwMTA4LDIwMTU0LDIwNzk5LDIwODM3LDIwODQzLDIwOTYwLDIwOTkyLDIwOTkzLDIxMTQ3LDIxMjY5LDIxMzEzLDIxMzQwLDIxNDQ4LDE5OTc3LDE5OTc5LDE5OTc2LDE5OTc4LDIwMDExLDIwMDI0LDIwOTYxLDIwMDM3LDIwMDQwLDIwMDYzLDIwMDYyLDIwMTEwLDIwMTI5LDIwODAwLDIwOTk1LDIxMjQyLDIxMzE1LDIxNDQ5LDIxNDc1LDIyMzAzLDIyNzYzLDIyODA1LDIyODIzLDIyODk5LDIzMzc2LDIzMzc3LDIzMzc5LDIzNTQ0LDIzNTY3LDIzNTg2LDIzNjA4LDIzNjY1LDI0MDI5LDI0MDM3LDI0MDQ5LDI0MDUwLDI0MDUxLDI0MDYyLDI0MTc4LDI0MzE4LDI0MzMxLDI0MzM5LDI1MTY1LDE5OTg1LDE5OTg0LDE5OTgxLDIwMDEzLDIwMDE2LDIwMDI1LDIwMDQzLDIzNjA5LDIwMTA0LDIwMTEzLDIwMTE3LDIwMTE0LDIwMTE2LDIwMTMwLDIwMTYxLDIwMTYwLDIwMTYzLDIwMTY2LDIwMTY3LDIwMTczLDIwMTcwLDIwMTcxLDIwMTY0LDIwODAzLDIwODAxLDIwODM5LDIwODQ1LDIwODQ2LDIwODQ0LDIwODg3LDIwOTgyLDIwOTk4LDIwOTk5LDIxMDAwLDIxMjQzLDIxMjQ2LDIxMjQ3LDIxMjcwLDIxMzA1LDIxMzIwLDIxMzE5LDIxMzE3LDIxMzQyLDIxMzgwLDIxNDUxLDIxNDUwLDIxNDUzLDIyNzY0LDIyODI1LDIyODI3LDIyODI2LDIyODI5LDIzMzgwLDIzNTY5LDIzNTg4LDIzNjEwLDIzNjYzLDI0MDUyLDI0MTg3LDI0MzE5LDI0MzQwLDI0MzQxLDI0NTE1LDI1MDk2LDI1MTQyLDI1MTYzLDI1MTY2LDI1OTAzLDI1OTkxLDI2MDA3LDI2MDIwLDI2MDQxLDI2MDg1LDI2MzUyLDI2Mzc2LDI2NDA4LDI3NDI0LDI3NDkwLDI3NTEzLDI3NTk1LDI3NjA0LDI3NjExLDI3NjYzLDI3NzAwLDI4Nzc5LDI5MjI2LDI5MjM4LDI5MjQzLDI5MjU1LDI5MjczLDI5Mjc1LDI5MzU2LDI5NTc5LDE5OTkzLDE5OTkwLDE5OTg5LDE5OTg4LDE5OTkyLDIwMDI3LDIwMDQ1LDIwMDQ3LDIwMDQ2LDIwMTk3LDIwMTg0LDIwMTgwLDIwMTgxLDIwMTgyLDIwMTgzLDIwMTk1LDIwMTk2LDIwMTg1LDIwMTkwLDIwODA1LDIwODA0LDIwODczLDIwODc0LDIwOTA4LDIwOTg1LDIwOTg2LDIwOTg0LDIxMDAyLDIxMTUyLDIxMTUxLDIxMjUzLDIxMjU0LDIxMjcxLDIxMjc3LDIwMTkxLDIxMzIyLDIxMzIxLDIxMzQ1LDIxMzQ0LDIxMzU5LDIxMzU4LDIxNDM1LDIxNDg3LDIxNDc2LDIxNDkxLDIxNDg0LDIxNDg2LDIxNDgxLDIxNDgwLDIxNTAwLDIxNDk2LDIxNDkzLDIxNDgzLDIxNDc4LDIxNDgyLDIxNDkwLDIxNDg5LDIxNDg4LDIxNDc3LDIxNDg1LDIxNDk5LDIyMjM1LDIyMjM0LDIyODA2LDIyODMwLDIyODMzLDIyOTAwLDIyOTAyLDIzMzgxLDIzNDI3LDIzNjEyLDI0MDQwLDI0MDM5LDI0MDM4LDI0MDY2LDI0MDY3LDI0MTc5LDI0MTg4LDI0MzIxLDI0MzQ0LDI0MzQzLDI0NTE3LDI1MDk4LDI1MTcxLDI1MTcyLDI1MTcwLDI1MTY5LDI2MDIxLDI2MDg2LDI2NDE0LDI2NDEyLDI2NDEwLDI2NDExLDI2NDEzLDI3NDkxLDI3NTk3LDI3NjY1LDI3NjY0LDI3NzA0LDI3NzEzLDI3NzEyLDI3NzEwLDI5MzU5LDI5NTcyLDI5NTc3LDI5OTE2LDI5OTI2LDI5OTc2LDI5OTgzLDI5OTkyLDI5OTkzLDMwMDAwLDMwMDAxLDMwMDAyLDMwMDAzLDMwMDkxLDMwMzMzLDMwMzgyLDMwMzk5LDMwNDQ2LDMwNjgzLDMwNjkwLDMwNzA3LDMxMDM0LDMxMTY2LDMxMzQ4LDMxNDM1LDE5OTk4LDE5OTk5LDIwMDUwLDIwMDUxLDIwMDczLDIwMTIxLDIwMTMyLDIwMTM0LDIwMTMzLDIwMjIzLDIwMjMzLDIwMjQ5LDIwMjM0LDIwMjQ1LDIwMjM3LDIwMjQwLDIwMjQxLDIwMjM5LDIwMjEwLDIwMjE0LDIwMjE5LDIwMjA4LDIwMjExLDIwMjIxLDIwMjI1LDIwMjM1LDIwODA5LDIwODA3LDIwODA2LDIwODA4LDIwODQwLDIwODQ5LDIwODc3LDIwOTEyLDIxMDE1LDIxMDA5LDIxMDEwLDIxMDA2LDIxMDE0LDIxMTU1LDIxMjU2LDIxMjgxLDIxMjgwLDIxMzYwLDIxMzYxLDIxNTEzLDIxNTE5LDIxNTE2LDIxNTE0LDIxNTIwLDIxNTA1LDIxNTE1LDIxNTA4LDIxNTIxLDIxNTE3LDIxNTEyLDIxNTA3LDIxNTE4LDIxNTEwLDIxNTIyLDIyMjQwLDIyMjM4LDIyMjM3LDIyMzIzLDIyMzIwLDIyMzEyLDIyMzE3LDIyMzE2LDIyMzE5LDIyMzEzLDIyODA5LDIyODEwLDIyODM5LDIyODQwLDIyOTE2LDIyOTA0LDIyOTE1LDIyOTA5LDIyOTA1LDIyOTE0LDIyOTEzLDIzMzgzLDIzMzg0LDIzNDMxLDIzNDMyLDIzNDI5LDIzNDMzLDIzNTQ2LDIzNTc0LDIzNjczLDI0MDMwLDI0MDcwLDI0MTgyLDI0MTgwLDI0MzM1LDI0MzQ3LDI0NTM3LDI0NTM0LDI1MTAyLDI1MTAwLDI1MTAxLDI1MTA0LDI1MTg3LDI1MTc5LDI1MTc2LDI1OTEwLDI2MDg5LDI2MDg4LDI2MDkyLDI2MDkzLDI2MzU0LDI2MzU1LDI2Mzc3LDI2NDI5LDI2NDIwLDI2NDE3LDI2NDIxLDI3NDI1LDI3NDkyLDI3NTE1LDI3NjcwLDI3NzQxLDI3NzM1LDI3NzM3LDI3NzQzLDI3NzQ0LDI3NzI4LDI3NzMzLDI3NzQ1LDI3NzM5LDI3NzI1LDI3NzI2LDI4Nzg0LDI5Mjc5LDI5Mjc3LDMwMzM0LDMxNDgxLDMxODU5LDMxOTkyLDMyNTY2LDMyNjUwLDMyNzAxLDMyNzY5LDMyNzcxLDMyNzgwLDMyNzg2LDMyODE5LDMyODk1LDMyOTA1LDMyOTA3LDMyOTA4LDMzMjUxLDMzMjU4LDMzMjY3LDMzMjc2LDMzMjkyLDMzMzA3LDMzMzExLDMzMzkwLDMzMzk0LDMzNDA2LDM0NDExLDM0ODgwLDM0ODkyLDM0OTE1LDM1MTk5LDM4NDMzLDIwMDE4LDIwMTM2LDIwMzAxLDIwMzAzLDIwMjk1LDIwMzExLDIwMzE4LDIwMjc2LDIwMzE1LDIwMzA5LDIwMjcyLDIwMzA0LDIwMzA1LDIwMjg1LDIwMjgyLDIwMjgwLDIwMjkxLDIwMzA4LDIwMjg0LDIwMjk0LDIwMzIzLDIwMzE2LDIwMzIwLDIwMjcxLDIwMzAyLDIwMjc4LDIwMzEzLDIwMzE3LDIwMjk2LDIwMzE0LDIwODEyLDIwODExLDIwODEzLDIwODUzLDIwOTE4LDIwOTE5LDIxMDI5LDIxMDI4LDIxMDMzLDIxMDM0LDIxMDMyLDIxMTYzLDIxMTYxLDIxMTYyLDIxMTY0LDIxMjgzLDIxMzYzLDIxMzY1LDIxNTMzLDIxNTQ5LDIxNTM0LDIxNTY2LDIxNTQyLDIxNTgyLDIxNTQzLDIxNTc0LDIxNTcxLDIxNTU1LDIxNTc2LDIxNTcwLDIxNTMxLDIxNTQ1LDIxNTc4LDIxNTYxLDIxNTYzLDIxNTYwLDIxNTUwLDIxNTU3LDIxNTU4LDIxNTM2LDIxNTY0LDIxNTY4LDIxNTUzLDIxNTQ3LDIxNTM1LDIxNTQ4LDIyMjUwLDIyMjU2LDIyMjQ0LDIyMjUxLDIyMzQ2LDIyMzUzLDIyMzM2LDIyMzQ5LDIyMzQzLDIyMzUwLDIyMzM0LDIyMzUyLDIyMzUxLDIyMzMxLDIyNzY3LDIyODQ2LDIyOTQxLDIyOTMwLDIyOTUyLDIyOTQyLDIyOTQ3LDIyOTM3LDIyOTM0LDIyOTI1LDIyOTQ4LDIyOTMxLDIyOTIyLDIyOTQ5LDIzMzg5LDIzMzg4LDIzMzg2LDIzMzg3LDIzNDM2LDIzNDM1LDIzNDM5LDIzNTk2LDIzNjE2LDIzNjE3LDIzNjE1LDIzNjE0LDIzNjk2LDIzNjk3LDIzNzAwLDIzNjkyLDI0MDQzLDI0MDc2LDI0MjA3LDI0MTk5LDI0MjAyLDI0MzExLDI0MzI0LDI0MzUxLDI0NDIwLDI0NDE4LDI0NDM5LDI0NDQxLDI0NTM2LDI0NTI0LDI0NTM1LDI0NTI1LDI0NTYxLDI0NTU1LDI0NTY4LDI0NTU0LDI1MTA2LDI1MTA1LDI1MjIwLDI1MjM5LDI1MjM4LDI1MjE2LDI1MjA2LDI1MjI1LDI1MTk3LDI1MjI2LDI1MjEyLDI1MjE0LDI1MjA5LDI1MjAzLDI1MjM0LDI1MTk5LDI1MjQwLDI1MTk4LDI1MjM3LDI1MjM1LDI1MjMzLDI1MjIyLDI1OTEzLDI1OTE1LDI1OTEyLDI2MDk3LDI2MzU2LDI2NDYzLDI2NDQ2LDI2NDQ3LDI2NDQ4LDI2NDQ5LDI2NDYwLDI2NDU0LDI2NDYyLDI2NDQxLDI2NDM4LDI2NDY0LDI2NDUxLDI2NDU1LDI3NDkzLDI3NTk5LDI3NzE0LDI3NzQyLDI3ODAxLDI3Nzc3LDI3Nzg0LDI3Nzg1LDI3NzgxLDI3ODAzLDI3NzU0LDI3NzcwLDI3NzkyLDI3NzYwLDI3Nzg4LDI3NzUyLDI3Nzk4LDI3Nzk0LDI3NzczLDI3Nzc5LDI3NzYyLDI3Nzc0LDI3NzY0LDI3NzgyLDI3NzY2LDI3Nzg5LDI3Nzk2LDI3ODAwLDI3Nzc4LDI4NzkwLDI4Nzk2LDI4Nzk3LDI4NzkyLDI5MjgyLDI5MjgxLDI5MjgwLDI5MzgwLDI5Mzc4LDI5NTkwLDI5OTk2LDI5OTk1LDMwMDA3LDMwMDA4LDMwMzM4LDMwNDQ3LDMwNjkxLDMxMTY5LDMxMTY4LDMxMTY3LDMxMzUwLDMxOTk1LDMyNTk3LDMyOTE4LDMyOTE1LDMyOTI1LDMyOTIwLDMyOTIzLDMyOTIyLDMyOTQ2LDMzMzkxLDMzNDI2LDMzNDE5LDMzNDIxLDM1MjExLDM1MjgyLDM1MzI4LDM1ODk1LDM1OTEwLDM1OTI1LDM1OTk3LDM2MTk2LDM2MjA4LDM2Mjc1LDM2NTIzLDM2NTU0LDM2NzYzLDM2Nzg0LDM2ODAyLDM2ODA2LDM2ODA1LDM2ODA0LDI0MDMzLDM3MDA5LDM3MDI2LDM3MDM0LDM3MDMwLDM3MDI3LDM3MTkzLDM3MzE4LDM3MzI0LDM4NDUwLDM4NDQ2LDM4NDQ5LDM4NDQyLDM4NDQ0LDIwMDA2LDIwMDU0LDIwMDgzLDIwMTA3LDIwMTIzLDIwMTI2LDIwMTM5LDIwMTQwLDIwMzM1LDIwMzgxLDIwMzY1LDIwMzM5LDIwMzUxLDIwMzMyLDIwMzc5LDIwMzYzLDIwMzU4LDIwMzU1LDIwMzM2LDIwMzQxLDIwMzYwLDIwMzI5LDIwMzQ3LDIwMzc0LDIwMzUwLDIwMzY3LDIwMzY5LDIwMzQ2LDIwODIwLDIwODE4LDIwODIxLDIwODQxLDIwODU1LDIwODU0LDIwODU2LDIwOTI1LDIwOTg5LDIxMDUxLDIxMDQ4LDIxMDQ3LDIxMDUwLDIxMDQwLDIxMDM4LDIxMDQ2LDIxMDU3LDIxMTgyLDIxMTc5LDIxMzMwLDIxMzMyLDIxMzMxLDIxMzI5LDIxMzUwLDIxMzY3LDIxMzY4LDIxMzY5LDIxNDYyLDIxNDYwLDIxNDYzLDIxNjE5LDIxNjIxLDIxNjU0LDIxNjI0LDIxNjUzLDIxNjMyLDIxNjI3LDIxNjIzLDIxNjM2LDIxNjUwLDIxNjM4LDIxNjI4LDIxNjQ4LDIxNjE3LDIxNjIyLDIxNjQ0LDIxNjU4LDIxNjAyLDIxNjA4LDIxNjQzLDIxNjI5LDIxNjQ2LDIyMjY2LDIyNDAzLDIyMzkxLDIyMzc4LDIyMzc3LDIyMzY5LDIyMzc0LDIyMzcyLDIyMzk2LDIyODEyLDIyODU3LDIyODU1LDIyODU2LDIyODUyLDIyODY4LDIyOTc0LDIyOTcxLDIyOTk2LDIyOTY5LDIyOTU4LDIyOTkzLDIyOTgyLDIyOTkyLDIyOTg5LDIyOTg3LDIyOTk1LDIyOTg2LDIyOTU5LDIyOTYzLDIyOTk0LDIyOTgxLDIzMzkxLDIzMzk2LDIzMzk1LDIzNDQ3LDIzNDUwLDIzNDQ4LDIzNDUyLDIzNDQ5LDIzNDUxLDIzNTc4LDIzNjI0LDIzNjIxLDIzNjIyLDIzNzM1LDIzNzEzLDIzNzM2LDIzNzIxLDIzNzIzLDIzNzI5LDIzNzMxLDI0MDg4LDI0MDkwLDI0MDg2LDI0MDg1LDI0MDkxLDI0MDgxLDI0MTg0LDI0MjE4LDI0MjE1LDI0MjIwLDI0MjEzLDI0MjE0LDI0MzEwLDI0MzU4LDI0MzU5LDI0MzYxLDI0NDQ4LDI0NDQ5LDI0NDQ3LDI0NDQ0LDI0NTQxLDI0NTQ0LDI0NTczLDI0NTY1LDI0NTc1LDI0NTkxLDI0NTk2LDI0NjIzLDI0NjI5LDI0NTk4LDI0NjE4LDI0NTk3LDI0NjA5LDI0NjE1LDI0NjE3LDI0NjE5LDI0NjAzLDI1MTEwLDI1MTA5LDI1MTUxLDI1MTUwLDI1MTUyLDI1MjE1LDI1Mjg5LDI1MjkyLDI1Mjg0LDI1Mjc5LDI1MjgyLDI1MjczLDI1Mjk4LDI1MzA3LDI1MjU5LDI1Mjk5LDI1MzAwLDI1MjkxLDI1Mjg4LDI1MjU2LDI1Mjc3LDI1Mjc2LDI1Mjk2LDI1MzA1LDI1Mjg3LDI1MjkzLDI1MjY5LDI1MzA2LDI1MjY1LDI1MzA0LDI1MzAyLDI1MzAzLDI1Mjg2LDI1MjYwLDI1Mjk0LDI1OTE4LDI2MDIzLDI2MDQ0LDI2MTA2LDI2MTMyLDI2MTMxLDI2MTI0LDI2MTE4LDI2MTE0LDI2MTI2LDI2MTEyLDI2MTI3LDI2MTMzLDI2MTIyLDI2MTE5LDI2MzgxLDI2Mzc5LDI2NDc3LDI2NTA3LDI2NTE3LDI2NDgxLDI2NTI0LDI2NDgzLDI2NDg3LDI2NTAzLDI2NTI1LDI2NTE5LDI2NDc5LDI2NDgwLDI2NDk1LDI2NTA1LDI2NDk0LDI2NTEyLDI2NDg1LDI2NTIyLDI2NTE1LDI2NDkyLDI2NDc0LDI2NDgyLDI3NDI3LDI3NDk0LDI3NDk1LDI3NTE5LDI3NjY3LDI3Njc1LDI3ODc1LDI3ODgwLDI3ODkxLDI3ODI1LDI3ODUyLDI3ODc3LDI3ODI3LDI3ODM3LDI3ODM4LDI3ODM2LDI3ODc0LDI3ODE5LDI3ODYxLDI3ODU5LDI3ODMyLDI3ODQ0LDI3ODMzLDI3ODQxLDI3ODIyLDI3ODYzLDI3ODQ1LDI3ODg5LDI3ODM5LDI3ODM1LDI3ODczLDI3ODY3LDI3ODUwLDI3ODIwLDI3ODg3LDI3ODY4LDI3ODYyLDI3ODcyLDI4ODIxLDI4ODE0LDI4ODE4LDI4ODEwLDI4ODI1LDI5MjI4LDI5MjI5LDI5MjQwLDI5MjU2LDI5Mjg3LDI5Mjg5LDI5Mzc2LDI5MzkwLDI5NDAxLDI5Mzk5LDI5MzkyLDI5NjA5LDI5NjA4LDI5NTk5LDI5NjExLDI5NjA1LDMwMDEzLDMwMTA5LDMwMTA1LDMwMTA2LDMwMzQwLDMwNDAyLDMwNDUwLDMwNDUyLDMwNjkzLDMwNzE3LDMxMDM4LDMxMDQwLDMxMDQxLDMxMTc3LDMxMTc2LDMxMzU0LDMxMzUzLDMxNDgyLDMxOTk4LDMyNTk2LDMyNjUyLDMyNjUxLDMyNzczLDMyOTU0LDMyOTMzLDMyOTMwLDMyOTQ1LDMyOTI5LDMyOTM5LDMyOTM3LDMyOTQ4LDMyOTM4LDMyOTQzLDMzMjUzLDMzMjc4LDMzMjkzLDMzNDU5LDMzNDM3LDMzNDMzLDMzNDUzLDMzNDY5LDMzNDM5LDMzNDY1LDMzNDU3LDMzNDUyLDMzNDQ1LDMzNDU1LDMzNDY0LDMzNDQzLDMzNDU2LDMzNDcwLDMzNDYzLDM0MzgyLDM0NDE3LDIxMDIxLDM0OTIwLDM2NTU1LDM2ODE0LDM2ODIwLDM2ODE3LDM3MDQ1LDM3MDQ4LDM3MDQxLDM3MDQ2LDM3MzE5LDM3MzI5LDM4MjYzLDM4MjcyLDM4NDI4LDM4NDY0LDM4NDYzLDM4NDU5LDM4NDY4LDM4NDY2LDM4NTg1LDM4NjMyLDM4NzM4LDM4NzUwLDIwMTI3LDIwMTQxLDIwMTQyLDIwNDQ5LDIwNDA1LDIwMzk5LDIwNDE1LDIwNDQ4LDIwNDMzLDIwNDMxLDIwNDQ1LDIwNDE5LDIwNDA2LDIwNDQwLDIwNDQ3LDIwNDI2LDIwNDM5LDIwMzk4LDIwNDMyLDIwNDIwLDIwNDE4LDIwNDQyLDIwNDMwLDIwNDQ2LDIwNDA3LDIwODIzLDIwODgyLDIwODgxLDIwODk2LDIxMDcwLDIxMDU5LDIxMDY2LDIxMDY5LDIxMDY4LDIxMDY3LDIxMDYzLDIxMTkxLDIxMTkzLDIxMTg3LDIxMTg1LDIxMjYxLDIxMzM1LDIxMzcxLDIxNDAyLDIxNDY3LDIxNjc2LDIxNjk2LDIxNjcyLDIxNzEwLDIxNzA1LDIxNjg4LDIxNjcwLDIxNjgzLDIxNzAzLDIxNjk4LDIxNjkzLDIxNjc0LDIxNjk3LDIxNzAwLDIxNzA0LDIxNjc5LDIxNjc1LDIxNjgxLDIxNjkxLDIxNjczLDIxNjcxLDIxNjk1LDIyMjcxLDIyNDAyLDIyNDExLDIyNDMyLDIyNDM1LDIyNDM0LDIyNDc4LDIyNDQ2LDIyNDE5LDIyODY5LDIyODY1LDIyODYzLDIyODYyLDIyODY0LDIzMDA0LDIzMDAwLDIzMDM5LDIzMDExLDIzMDE2LDIzMDQzLDIzMDEzLDIzMDE4LDIzMDAyLDIzMDE0LDIzMDQxLDIzMDM1LDIzNDAxLDIzNDU5LDIzNDYyLDIzNDYwLDIzNDU4LDIzNDYxLDIzNTUzLDIzNjMwLDIzNjMxLDIzNjI5LDIzNjI3LDIzNzY5LDIzNzYyLDI0MDU1LDI0MDkzLDI0MTAxLDI0MDk1LDI0MTg5LDI0MjI0LDI0MjMwLDI0MzE0LDI0MzI4LDI0MzY1LDI0NDIxLDI0NDU2LDI0NDUzLDI0NDU4LDI0NDU5LDI0NDU1LDI0NDYwLDI0NDU3LDI0NTk0LDI0NjA1LDI0NjA4LDI0NjEzLDI0NTkwLDI0NjE2LDI0NjUzLDI0Njg4LDI0NjgwLDI0Njc0LDI0NjQ2LDI0NjQzLDI0Njg0LDI0NjgzLDI0NjgyLDI0Njc2LDI1MTUzLDI1MzA4LDI1MzY2LDI1MzUzLDI1MzQwLDI1MzI1LDI1MzQ1LDI1MzI2LDI1MzQxLDI1MzUxLDI1MzI5LDI1MzM1LDI1MzI3LDI1MzI0LDI1MzQyLDI1MzMyLDI1MzYxLDI1MzQ2LDI1OTE5LDI1OTI1LDI2MDI3LDI2MDQ1LDI2MDgyLDI2MTQ5LDI2MTU3LDI2MTQ0LDI2MTUxLDI2MTU5LDI2MTQzLDI2MTUyLDI2MTYxLDI2MTQ4LDI2MzU5LDI2NjIzLDI2NTc5LDI2NjA5LDI2NTgwLDI2NTc2LDI2NjA0LDI2NTUwLDI2NTQzLDI2NjEzLDI2NjAxLDI2NjA3LDI2NTY0LDI2NTc3LDI2NTQ4LDI2NTg2LDI2NTk3LDI2NTUyLDI2NTc1LDI2NTkwLDI2NjExLDI2NTQ0LDI2NTg1LDI2NTk0LDI2NTg5LDI2NTc4LDI3NDk4LDI3NTIzLDI3NTI2LDI3NTczLDI3NjAyLDI3NjA3LDI3Njc5LDI3ODQ5LDI3OTE1LDI3OTU0LDI3OTQ2LDI3OTY5LDI3OTQxLDI3OTE2LDI3OTUzLDI3OTM0LDI3OTI3LDI3OTYzLDI3OTY1LDI3OTY2LDI3OTU4LDI3OTMxLDI3ODkzLDI3OTYxLDI3OTQzLDI3OTYwLDI3OTQ1LDI3OTUwLDI3OTU3LDI3OTE4LDI3OTQ3LDI4ODQzLDI4ODU4LDI4ODUxLDI4ODQ0LDI4ODQ3LDI4ODQ1LDI4ODU2LDI4ODQ2LDI4ODM2LDI5MjMyLDI5Mjk4LDI5Mjk1LDI5MzAwLDI5NDE3LDI5NDA4LDI5NDA5LDI5NjIzLDI5NjQyLDI5NjI3LDI5NjE4LDI5NjQ1LDI5NjMyLDI5NjE5LDI5OTc4LDI5OTk3LDMwMDMxLDMwMDI4LDMwMDMwLDMwMDI3LDMwMTIzLDMwMTE2LDMwMTE3LDMwMTE0LDMwMTE1LDMwMzI4LDMwMzQyLDMwMzQzLDMwMzQ0LDMwNDA4LDMwNDA2LDMwNDAzLDMwNDA1LDMwNDY1LDMwNDU3LDMwNDU2LDMwNDczLDMwNDc1LDMwNDYyLDMwNDYwLDMwNDcxLDMwNjg0LDMwNzIyLDMwNzQwLDMwNzMyLDMwNzMzLDMxMDQ2LDMxMDQ5LDMxMDQ4LDMxMDQ3LDMxMTYxLDMxMTYyLDMxMTg1LDMxMTg2LDMxMTc5LDMxMzU5LDMxMzYxLDMxNDg3LDMxNDg1LDMxODY5LDMyMDAyLDMyMDA1LDMyMDAwLDMyMDA5LDMyMDA3LDMyMDA0LDMyMDA2LDMyNTY4LDMyNjU0LDMyNzAzLDMyNzcyLDMyNzg0LDMyNzgxLDMyNzg1LDMyODIyLDMyOTgyLDMyOTk3LDMyOTg2LDMyOTYzLDMyOTY0LDMyOTcyLDMyOTkzLDMyOTg3LDMyOTc0LDMyOTkwLDMyOTk2LDMyOTg5LDMzMjY4LDMzMzE0LDMzNTExLDMzNTM5LDMzNTQxLDMzNTA3LDMzNDk5LDMzNTEwLDMzNTQwLDMzNTA5LDMzNTM4LDMzNTQ1LDMzNDkwLDMzNDk1LDMzNTIxLDMzNTM3LDMzNTAwLDMzNDkyLDMzNDg5LDMzNTAyLDMzNDkxLDMzNTAzLDMzNTE5LDMzNTQyLDM0Mzg0LDM0NDI1LDM0NDI3LDM0NDI2LDM0ODkzLDM0OTIzLDM1MjAxLDM1Mjg0LDM1MzM2LDM1MzMwLDM1MzMxLDM1OTk4LDM2MDAwLDM2MjEyLDM2MjExLDM2Mjc2LDM2NTU3LDM2NTU2LDM2ODQ4LDM2ODM4LDM2ODM0LDM2ODQyLDM2ODM3LDM2ODQ1LDM2ODQzLDM2ODM2LDM2ODQwLDM3MDY2LDM3MDcwLDM3MDU3LDM3MDU5LDM3MTk1LDM3MTk0LDM3MzI1LDM4Mjc0LDM4NDgwLDM4NDc1LDM4NDc2LDM4NDc3LDM4NzU0LDM4NzYxLDM4ODU5LDM4ODkzLDM4ODk5LDM4OTEzLDM5MDgwLDM5MTMxLDM5MTM1LDM5MzE4LDM5MzIxLDIwMDU2LDIwMTQ3LDIwNDkyLDIwNDkzLDIwNTE1LDIwNDYzLDIwNTE4LDIwNTE3LDIwNDcyLDIwNTIxLDIwNTAyLDIwNDg2LDIwNTQwLDIwNTExLDIwNTA2LDIwNDk4LDIwNDk3LDIwNDc0LDIwNDgwLDIwNTAwLDIwNTIwLDIwNDY1LDIwNTEzLDIwNDkxLDIwNTA1LDIwNTA0LDIwNDY3LDIwNDYyLDIwNTI1LDIwNTIyLDIwNDc4LDIwNTIzLDIwNDg5LDIwODYwLDIwOTAwLDIwOTAxLDIwODk4LDIwOTQxLDIwOTQwLDIwOTM0LDIwOTM5LDIxMDc4LDIxMDg0LDIxMDc2LDIxMDgzLDIxMDg1LDIxMjkwLDIxMzc1LDIxNDA3LDIxNDA1LDIxNDcxLDIxNzM2LDIxNzc2LDIxNzYxLDIxODE1LDIxNzU2LDIxNzMzLDIxNzQ2LDIxNzY2LDIxNzU0LDIxNzgwLDIxNzM3LDIxNzQxLDIxNzI5LDIxNzY5LDIxNzQyLDIxNzM4LDIxNzM0LDIxNzk5LDIxNzY3LDIxNzU3LDIxNzc1LDIyMjc1LDIyMjc2LDIyNDY2LDIyNDg0LDIyNDc1LDIyNDY3LDIyNTM3LDIyNzk5LDIyODcxLDIyODcyLDIyODc0LDIzMDU3LDIzMDY0LDIzMDY4LDIzMDcxLDIzMDY3LDIzMDU5LDIzMDIwLDIzMDcyLDIzMDc1LDIzMDgxLDIzMDc3LDIzMDUyLDIzMDQ5LDIzNDAzLDIzNjQwLDIzNDcyLDIzNDc1LDIzNDc4LDIzNDc2LDIzNDcwLDIzNDc3LDIzNDgxLDIzNDgwLDIzNTU2LDIzNjMzLDIzNjM3LDIzNjMyLDIzNzg5LDIzODA1LDIzODAzLDIzNzg2LDIzNzg0LDIzNzkyLDIzNzk4LDIzODA5LDIzNzk2LDI0MDQ2LDI0MTA5LDI0MTA3LDI0MjM1LDI0MjM3LDI0MjMxLDI0MzY5LDI0NDY2LDI0NDY1LDI0NDY0LDI0NjY1LDI0Njc1LDI0Njc3LDI0NjU2LDI0NjYxLDI0Njg1LDI0NjgxLDI0Njg3LDI0NzA4LDI0NzM1LDI0NzMwLDI0NzE3LDI0NzI0LDI0NzE2LDI0NzA5LDI0NzI2LDI1MTU5LDI1MzMxLDI1MzUyLDI1MzQzLDI1NDIyLDI1NDA2LDI1MzkxLDI1NDI5LDI1NDEwLDI1NDE0LDI1NDIzLDI1NDE3LDI1NDAyLDI1NDI0LDI1NDA1LDI1Mzg2LDI1Mzg3LDI1Mzg0LDI1NDIxLDI1NDIwLDI1OTI4LDI1OTI5LDI2MDA5LDI2MDQ5LDI2MDUzLDI2MTc4LDI2MTg1LDI2MTkxLDI2MTc5LDI2MTk0LDI2MTg4LDI2MTgxLDI2MTc3LDI2MzYwLDI2Mzg4LDI2Mzg5LDI2MzkxLDI2NjU3LDI2NjgwLDI2Njk2LDI2Njk0LDI2NzA3LDI2NjgxLDI2NjkwLDI2NzA4LDI2NjY1LDI2ODAzLDI2NjQ3LDI2NzAwLDI2NzA1LDI2Njg1LDI2NjEyLDI2NzA0LDI2Njg4LDI2Njg0LDI2NjkxLDI2NjY2LDI2NjkzLDI2NjQzLDI2NjQ4LDI2Njg5LDI3NTMwLDI3NTI5LDI3NTc1LDI3NjgzLDI3Njg3LDI3Njg4LDI3Njg2LDI3Njg0LDI3ODg4LDI4MDEwLDI4MDUzLDI4MDQwLDI4MDM5LDI4MDA2LDI4MDI0LDI4MDIzLDI3OTkzLDI4MDUxLDI4MDEyLDI4MDQxLDI4MDE0LDI3OTk0LDI4MDIwLDI4MDA5LDI4MDQ0LDI4MDQyLDI4MDI1LDI4MDM3LDI4MDA1LDI4MDUyLDI4ODc0LDI4ODg4LDI4OTAwLDI4ODg5LDI4ODcyLDI4ODc5LDI5MjQxLDI5MzA1LDI5NDM2LDI5NDMzLDI5NDM3LDI5NDMyLDI5NDMxLDI5NTc0LDI5Njc3LDI5NzA1LDI5Njc4LDI5NjY0LDI5Njc0LDI5NjYyLDMwMDM2LDMwMDQ1LDMwMDQ0LDMwMDQyLDMwMDQxLDMwMTQyLDMwMTQ5LDMwMTUxLDMwMTMwLDMwMTMxLDMwMTQxLDMwMTQwLDMwMTM3LDMwMTQ2LDMwMTM2LDMwMzQ3LDMwMzg0LDMwNDEwLDMwNDEzLDMwNDE0LDMwNTA1LDMwNDk1LDMwNDk2LDMwNTA0LDMwNjk3LDMwNzY4LDMwNzU5LDMwNzc2LDMwNzQ5LDMwNzcyLDMwNzc1LDMwNzU3LDMwNzY1LDMwNzUyLDMwNzUxLDMwNzcwLDMxMDYxLDMxMDU2LDMxMDcyLDMxMDcxLDMxMDYyLDMxMDcwLDMxMDY5LDMxMDYzLDMxMDY2LDMxMjA0LDMxMjAzLDMxMjA3LDMxMTk5LDMxMjA2LDMxMjA5LDMxMTkyLDMxMzY0LDMxMzY4LDMxNDQ5LDMxNDk0LDMxNTA1LDMxODgxLDMyMDMzLDMyMDIzLDMyMDExLDMyMDEwLDMyMDMyLDMyMDM0LDMyMDIwLDMyMDE2LDMyMDIxLDMyMDI2LDMyMDI4LDMyMDEzLDMyMDI1LDMyMDI3LDMyNTcwLDMyNjA3LDMyNjYwLDMyNzA5LDMyNzA1LDMyNzc0LDMyNzkyLDMyNzg5LDMyNzkzLDMyNzkxLDMyODI5LDMyODMxLDMzMDA5LDMzMDI2LDMzMDA4LDMzMDI5LDMzMDA1LDMzMDEyLDMzMDMwLDMzMDE2LDMzMDExLDMzMDMyLDMzMDIxLDMzMDM0LDMzMDIwLDMzMDA3LDMzMjYxLDMzMjYwLDMzMjgwLDMzMjk2LDMzMzIyLDMzMzIzLDMzMzIwLDMzMzI0LDMzNDY3LDMzNTc5LDMzNjE4LDMzNjIwLDMzNjEwLDMzNTkyLDMzNjE2LDMzNjA5LDMzNTg5LDMzNTg4LDMzNjE1LDMzNTg2LDMzNTkzLDMzNTkwLDMzNTU5LDMzNjAwLDMzNTg1LDMzNTc2LDMzNjAzLDM0Mzg4LDM0NDQyLDM0NDc0LDM0NDUxLDM0NDY4LDM0NDczLDM0NDQ0LDM0NDY3LDM0NDYwLDM0OTI4LDM0OTM1LDM0OTQ1LDM0OTQ2LDM0OTQxLDM0OTM3LDM1MzUyLDM1MzQ0LDM1MzQyLDM1MzQwLDM1MzQ5LDM1MzM4LDM1MzUxLDM1MzQ3LDM1MzUwLDM1MzQzLDM1MzQ1LDM1OTEyLDM1OTYyLDM1OTYxLDM2MDAxLDM2MDAyLDM2MjE1LDM2NTI0LDM2NTYyLDM2NTY0LDM2NTU5LDM2Nzg1LDM2ODY1LDM2ODcwLDM2ODU1LDM2ODY0LDM2ODU4LDM2ODUyLDM2ODY3LDM2ODYxLDM2ODY5LDM2ODU2LDM3MDEzLDM3MDg5LDM3MDg1LDM3MDkwLDM3MjAyLDM3MTk3LDM3MTk2LDM3MzM2LDM3MzQxLDM3MzM1LDM3MzQwLDM3MzM3LDM4Mjc1LDM4NDk4LDM4NDk5LDM4NDk3LDM4NDkxLDM4NDkzLDM4NTAwLDM4NDg4LDM4NDk0LDM4NTg3LDM5MTM4LDM5MzQwLDM5NTkyLDM5NjQwLDM5NzE3LDM5NzMwLDM5NzQwLDIwMDk0LDIwNjAyLDIwNjA1LDIwNTcyLDIwNTUxLDIwNTQ3LDIwNTU2LDIwNTcwLDIwNTUzLDIwNTgxLDIwNTk4LDIwNTU4LDIwNTY1LDIwNTk3LDIwNTk2LDIwNTk5LDIwNTU5LDIwNDk1LDIwNTkxLDIwNTg5LDIwODI4LDIwODg1LDIwOTc2LDIxMDk4LDIxMTAzLDIxMjAyLDIxMjA5LDIxMjA4LDIxMjA1LDIxMjY0LDIxMjYzLDIxMjczLDIxMzExLDIxMzEyLDIxMzEwLDIxNDQzLDI2MzY0LDIxODMwLDIxODY2LDIxODYyLDIxODI4LDIxODU0LDIxODU3LDIxODI3LDIxODM0LDIxODA5LDIxODQ2LDIxODM5LDIxODQ1LDIxODA3LDIxODYwLDIxODE2LDIxODA2LDIxODUyLDIxODA0LDIxODU5LDIxODExLDIxODI1LDIxODQ3LDIyMjgwLDIyMjgzLDIyMjgxLDIyNDk1LDIyNTMzLDIyNTM4LDIyNTM0LDIyNDk2LDIyNTAwLDIyNTIyLDIyNTMwLDIyNTgxLDIyNTE5LDIyNTIxLDIyODE2LDIyODgyLDIzMDk0LDIzMTA1LDIzMTEzLDIzMTQyLDIzMTQ2LDIzMTA0LDIzMTAwLDIzMTM4LDIzMTMwLDIzMTEwLDIzMTE0LDIzNDA4LDIzNDk1LDIzNDkzLDIzNDkyLDIzNDkwLDIzNDg3LDIzNDk0LDIzNTYxLDIzNTYwLDIzNTU5LDIzNjQ4LDIzNjQ0LDIzNjQ1LDIzODE1LDIzODE0LDIzODIyLDIzODM1LDIzODMwLDIzODQyLDIzODI1LDIzODQ5LDIzODI4LDIzODMzLDIzODQ0LDIzODQ3LDIzODMxLDI0MDM0LDI0MTIwLDI0MTE4LDI0MTE1LDI0MTE5LDI0MjQ3LDI0MjQ4LDI0MjQ2LDI0MjQ1LDI0MjU0LDI0MzczLDI0Mzc1LDI0NDA3LDI0NDI4LDI0NDI1LDI0NDI3LDI0NDcxLDI0NDczLDI0NDc4LDI0NDcyLDI0NDgxLDI0NDgwLDI0NDc2LDI0NzAzLDI0NzM5LDI0NzEzLDI0NzM2LDI0NzQ0LDI0Nzc5LDI0NzU2LDI0ODA2LDI0NzY1LDI0NzczLDI0NzYzLDI0NzU3LDI0Nzk2LDI0NzY0LDI0NzkyLDI0Nzg5LDI0Nzc0LDI0Nzk5LDI0NzYwLDI0Nzk0LDI0Nzc1LDI1MTE0LDI1MTE1LDI1MTYwLDI1NTA0LDI1NTExLDI1NDU4LDI1NDk0LDI1NTA2LDI1NTA5LDI1NDYzLDI1NDQ3LDI1NDk2LDI1NTE0LDI1NDU3LDI1NTEzLDI1NDgxLDI1NDc1LDI1NDk5LDI1NDUxLDI1NTEyLDI1NDc2LDI1NDgwLDI1NDk3LDI1NTA1LDI1NTE2LDI1NDkwLDI1NDg3LDI1NDcyLDI1NDY3LDI1NDQ5LDI1NDQ4LDI1NDY2LDI1OTQ5LDI1OTQyLDI1OTM3LDI1OTQ1LDI1OTQzLDIxODU1LDI1OTM1LDI1OTQ0LDI1OTQxLDI1OTQwLDI2MDEyLDI2MDExLDI2MDI4LDI2MDYzLDI2MDU5LDI2MDYwLDI2MDYyLDI2MjA1LDI2MjAyLDI2MjEyLDI2MjE2LDI2MjE0LDI2MjA2LDI2MzYxLDIxMjA3LDI2Mzk1LDI2NzUzLDI2Nzk5LDI2Nzg2LDI2NzcxLDI2ODA1LDI2NzUxLDI2NzQyLDI2ODAxLDI2NzkxLDI2Nzc1LDI2ODAwLDI2NzU1LDI2ODIwLDI2Nzk3LDI2NzU4LDI2NzU3LDI2NzcyLDI2NzgxLDI2NzkyLDI2NzgzLDI2Nzg1LDI2NzU0LDI3NDQyLDI3NTc4LDI3NjI3LDI3NjI4LDI3NjkxLDI4MDQ2LDI4MDkyLDI4MTQ3LDI4MTIxLDI4MDgyLDI4MTI5LDI4MTA4LDI4MTMyLDI4MTU1LDI4MTU0LDI4MTY1LDI4MTAzLDI4MTA3LDI4MDc5LDI4MTEzLDI4MDc4LDI4MTI2LDI4MTUzLDI4MDg4LDI4MTUxLDI4MTQ5LDI4MTAxLDI4MTE0LDI4MTg2LDI4MDg1LDI4MTIyLDI4MTM5LDI4MTIwLDI4MTM4LDI4MTQ1LDI4MTQyLDI4MTM2LDI4MTAyLDI4MTAwLDI4MDc0LDI4MTQwLDI4MDk1LDI4MTM0LDI4OTIxLDI4OTM3LDI4OTM4LDI4OTI1LDI4OTExLDI5MjQ1LDI5MzA5LDI5MzEzLDI5NDY4LDI5NDY3LDI5NDYyLDI5NDU5LDI5NDY1LDI5NTc1LDI5NzAxLDI5NzA2LDI5Njk5LDI5NzAyLDI5Njk0LDI5NzA5LDI5OTIwLDI5OTQyLDI5OTQzLDI5OTgwLDI5OTg2LDMwMDUzLDMwMDU0LDMwMDUwLDMwMDY0LDMwMDk1LDMwMTY0LDMwMTY1LDMwMTMzLDMwMTU0LDMwMTU3LDMwMzUwLDMwNDIwLDMwNDE4LDMwNDI3LDMwNTE5LDMwNTI2LDMwNTI0LDMwNTE4LDMwNTIwLDMwNTIyLDMwODI3LDMwNzg3LDMwNzk4LDMxMDc3LDMxMDgwLDMxMDg1LDMxMjI3LDMxMzc4LDMxMzgxLDMxNTIwLDMxNTI4LDMxNTE1LDMxNTMyLDMxNTI2LDMxNTEzLDMxNTE4LDMxNTM0LDMxODkwLDMxODk1LDMxODkzLDMyMDcwLDMyMDY3LDMyMTEzLDMyMDQ2LDMyMDU3LDMyMDYwLDMyMDY0LDMyMDQ4LDMyMDUxLDMyMDY4LDMyMDQ3LDMyMDY2LDMyMDUwLDMyMDQ5LDMyNTczLDMyNjcwLDMyNjY2LDMyNzE2LDMyNzE4LDMyNzIyLDMyNzk2LDMyODQyLDMyODM4LDMzMDcxLDMzMDQ2LDMzMDU5LDMzMDY3LDMzMDY1LDMzMDcyLDMzMDYwLDMzMjgyLDMzMzMzLDMzMzM1LDMzMzM0LDMzMzM3LDMzNjc4LDMzNjk0LDMzNjg4LDMzNjU2LDMzNjk4LDMzNjg2LDMzNzI1LDMzNzA3LDMzNjgyLDMzNjc0LDMzNjgzLDMzNjczLDMzNjk2LDMzNjU1LDMzNjU5LDMzNjYwLDMzNjcwLDMzNzAzLDM0Mzg5LDI0NDI2LDM0NTAzLDM0NDk2LDM0NDg2LDM0NTAwLDM0NDg1LDM0NTAyLDM0NTA3LDM0NDgxLDM0NDc5LDM0NTA1LDM0ODk5LDM0OTc0LDM0OTUyLDM0OTg3LDM0OTYyLDM0OTY2LDM0OTU3LDM0OTU1LDM1MjE5LDM1MjE1LDM1MzcwLDM1MzU3LDM1MzYzLDM1MzY1LDM1Mzc3LDM1MzczLDM1MzU5LDM1MzU1LDM1MzYyLDM1OTEzLDM1OTMwLDM2MDA5LDM2MDEyLDM2MDExLDM2MDA4LDM2MDEwLDM2MDA3LDM2MTk5LDM2MTk4LDM2Mjg2LDM2MjgyLDM2NTcxLDM2NTc1LDM2ODg5LDM2ODc3LDM2ODkwLDM2ODg3LDM2ODk5LDM2ODk1LDM2ODkzLDM2ODgwLDM2ODg1LDM2ODk0LDM2ODk2LDM2ODc5LDM2ODk4LDM2ODg2LDM2ODkxLDM2ODg0LDM3MDk2LDM3MTAxLDM3MTE3LDM3MjA3LDM3MzI2LDM3MzY1LDM3MzUwLDM3MzQ3LDM3MzUxLDM3MzU3LDM3MzUzLDM4MjgxLDM4NTA2LDM4NTE3LDM4NTE1LDM4NTIwLDM4NTEyLDM4NTE2LDM4NTE4LDM4NTE5LDM4NTA4LDM4NTkyLDM4NjM0LDM4NjMzLDMxNDU2LDMxNDU1LDM4OTE0LDM4OTE1LDM5NzcwLDQwMTY1LDQwNTY1LDQwNTc1LDQwNjEzLDQwNjM1LDIwNjQyLDIwNjIxLDIwNjEzLDIwNjMzLDIwNjI1LDIwNjA4LDIwNjMwLDIwNjMyLDIwNjM0LDI2MzY4LDIwOTc3LDIxMTA2LDIxMTA4LDIxMTA5LDIxMDk3LDIxMjE0LDIxMjEzLDIxMjExLDIxMzM4LDIxNDEzLDIxODgzLDIxODg4LDIxOTI3LDIxODg0LDIxODk4LDIxOTE3LDIxOTEyLDIxODkwLDIxOTE2LDIxOTMwLDIxOTA4LDIxODk1LDIxODk5LDIxODkxLDIxOTM5LDIxOTM0LDIxOTE5LDIxODIyLDIxOTM4LDIxOTE0LDIxOTQ3LDIxOTMyLDIxOTM3LDIxODg2LDIxODk3LDIxOTMxLDIxOTEzLDIyMjg1LDIyNTc1LDIyNTcwLDIyNTgwLDIyNTY0LDIyNTc2LDIyNTc3LDIyNTYxLDIyNTU3LDIyNTYwLDIyNzc3LDIyNzc4LDIyODgwLDIzMTU5LDIzMTk0LDIzMTY3LDIzMTg2LDIzMTk1LDIzMjA3LDIzNDExLDIzNDA5LDIzNTA2LDIzNTAwLDIzNTA3LDIzNTA0LDIzNTYyLDIzNTYzLDIzNjAxLDIzODg0LDIzODg4LDIzODYwLDIzODc5LDI0MDYxLDI0MTMzLDI0MTI1LDI0MTI4LDI0MTMxLDI0MTkwLDI0MjY2LDI0MjU3LDI0MjU4LDI0MjYwLDI0MzgwLDI0NDI5LDI0NDg5LDI0NDkwLDI0NDg4LDI0Nzg1LDI0ODAxLDI0NzU0LDI0NzU4LDI0ODAwLDI0ODYwLDI0ODY3LDI0ODI2LDI0ODUzLDI0ODE2LDI0ODI3LDI0ODIwLDI0OTM2LDI0ODE3LDI0ODQ2LDI0ODIyLDI0ODQxLDI0ODMyLDI0ODUwLDI1MTE5LDI1MTYxLDI1NTA3LDI1NDg0LDI1NTUxLDI1NTM2LDI1NTc3LDI1NTQ1LDI1NTQyLDI1NTQ5LDI1NTU0LDI1NTcxLDI1NTUyLDI1NTY5LDI1NTU4LDI1NTgxLDI1NTgyLDI1NDYyLDI1NTg4LDI1NTc4LDI1NTYzLDI1NjgyLDI1NTYyLDI1NTkzLDI1OTUwLDI1OTU4LDI1OTU0LDI1OTU1LDI2MDAxLDI2MDAwLDI2MDMxLDI2MjIyLDI2MjI0LDI2MjI4LDI2MjMwLDI2MjIzLDI2MjU3LDI2MjM0LDI2MjM4LDI2MjMxLDI2MzY2LDI2MzY3LDI2Mzk5LDI2Mzk3LDI2ODc0LDI2ODM3LDI2ODQ4LDI2ODQwLDI2ODM5LDI2ODg1LDI2ODQ3LDI2ODY5LDI2ODYyLDI2ODU1LDI2ODczLDI2ODM0LDI2ODY2LDI2ODUxLDI2ODI3LDI2ODI5LDI2ODkzLDI2ODk4LDI2ODk0LDI2ODI1LDI2ODQyLDI2OTkwLDI2ODc1LDI3NDU0LDI3NDUwLDI3NDUzLDI3NTQ0LDI3NTQyLDI3NTgwLDI3NjMxLDI3Njk0LDI3Njk1LDI3NjkyLDI4MjA3LDI4MjE2LDI4MjQ0LDI4MTkzLDI4MjEwLDI4MjYzLDI4MjM0LDI4MTkyLDI4MTk3LDI4MTk1LDI4MTg3LDI4MjUxLDI4MjQ4LDI4MTk2LDI4MjQ2LDI4MjcwLDI4MjA1LDI4MTk4LDI4MjcxLDI4MjEyLDI4MjM3LDI4MjE4LDI4MjA0LDI4MjI3LDI4MTg5LDI4MjIyLDI4MzYzLDI4Mjk3LDI4MTg1LDI4MjM4LDI4MjU5LDI4MjI4LDI4Mjc0LDI4MjY1LDI4MjU1LDI4OTUzLDI4OTU0LDI4OTY2LDI4OTc2LDI4OTYxLDI4OTgyLDI5MDM4LDI4OTU2LDI5MjYwLDI5MzE2LDI5MzEyLDI5NDk0LDI5NDc3LDI5NDkyLDI5NDgxLDI5NzU0LDI5NzM4LDI5NzQ3LDI5NzMwLDI5NzMzLDI5NzQ5LDI5NzUwLDI5NzQ4LDI5NzQzLDI5NzIzLDI5NzM0LDI5NzM2LDI5OTg5LDI5OTkwLDMwMDU5LDMwMDU4LDMwMTc4LDMwMTcxLDMwMTc5LDMwMTY5LDMwMTY4LDMwMTc0LDMwMTc2LDMwMzMxLDMwMzMyLDMwMzU4LDMwMzU1LDMwMzg4LDMwNDI4LDMwNTQzLDMwNzAxLDMwODEzLDMwODI4LDMwODMxLDMxMjQ1LDMxMjQwLDMxMjQzLDMxMjM3LDMxMjMyLDMxMzg0LDMxMzgzLDMxMzgyLDMxNDYxLDMxNDU5LDMxNTYxLDMxNTc0LDMxNTU4LDMxNTY4LDMxNTcwLDMxNTcyLDMxNTY1LDMxNTYzLDMxNTY3LDMxNTY5LDMxOTAzLDMxOTA5LDMyMDk0LDMyMDgwLDMyMTA0LDMyMDg1LDMyMDQzLDMyMTEwLDMyMTE0LDMyMDk3LDMyMTAyLDMyMDk4LDMyMTEyLDMyMTE1LDIxODkyLDMyNzI0LDMyNzI1LDMyNzc5LDMyODUwLDMyOTAxLDMzMTA5LDMzMTA4LDMzMDk5LDMzMTA1LDMzMTAyLDMzMDgxLDMzMDk0LDMzMDg2LDMzMTAwLDMzMTA3LDMzMTQwLDMzMjk4LDMzMzA4LDMzNzY5LDMzNzk1LDMzNzg0LDMzODA1LDMzNzYwLDMzNzMzLDMzODAzLDMzNzI5LDMzNzc1LDMzNzc3LDMzNzgwLDMzODc5LDMzODAyLDMzNzc2LDMzODA0LDMzNzQwLDMzNzg5LDMzNzc4LDMzNzM4LDMzODQ4LDMzODA2LDMzNzk2LDMzNzU2LDMzNzk5LDMzNzQ4LDMzNzU5LDM0Mzk1LDM0NTI3LDM0NTIxLDM0NTQxLDM0NTE2LDM0NTIzLDM0NTMyLDM0NTEyLDM0NTI2LDM0OTAzLDM1MDA5LDM1MDEwLDM0OTkzLDM1MjAzLDM1MjIyLDM1Mzg3LDM1NDI0LDM1NDEzLDM1NDIyLDM1Mzg4LDM1MzkzLDM1NDEyLDM1NDE5LDM1NDA4LDM1Mzk4LDM1MzgwLDM1Mzg2LDM1MzgyLDM1NDE0LDM1OTM3LDM1OTcwLDM2MDE1LDM2MDI4LDM2MDE5LDM2MDI5LDM2MDMzLDM2MDI3LDM2MDMyLDM2MDIwLDM2MDIzLDM2MDIyLDM2MDMxLDM2MDI0LDM2MjM0LDM2MjI5LDM2MjI1LDM2MzAyLDM2MzE3LDM2Mjk5LDM2MzE0LDM2MzA1LDM2MzAwLDM2MzE1LDM2Mjk0LDM2NjAzLDM2NjAwLDM2NjA0LDM2NzY0LDM2OTEwLDM2OTE3LDM2OTEzLDM2OTIwLDM2OTE0LDM2OTE4LDM3MTIyLDM3MTA5LDM3MTI5LDM3MTE4LDM3MjE5LDM3MjIxLDM3MzI3LDM3Mzk2LDM3Mzk3LDM3NDExLDM3Mzg1LDM3NDA2LDM3Mzg5LDM3MzkyLDM3MzgzLDM3MzkzLDM4MjkyLDM4Mjg3LDM4MjgzLDM4Mjg5LDM4MjkxLDM4MjkwLDM4Mjg2LDM4NTM4LDM4NTQyLDM4NTM5LDM4NTI1LDM4NTMzLDM4NTM0LDM4NTQxLDM4NTE0LDM4NTMyLDM4NTkzLDM4NTk3LDM4NTk2LDM4NTk4LDM4NTk5LDM4NjM5LDM4NjQyLDM4ODYwLDM4OTE3LDM4OTE4LDM4OTIwLDM5MTQzLDM5MTQ2LDM5MTUxLDM5MTQ1LDM5MTU0LDM5MTQ5LDM5MzQyLDM5MzQxLDQwNjQzLDQwNjUzLDQwNjU3LDIwMDk4LDIwNjUzLDIwNjYxLDIwNjU4LDIwNjU5LDIwNjc3LDIwNjcwLDIwNjUyLDIwNjYzLDIwNjY3LDIwNjU1LDIwNjc5LDIxMTE5LDIxMTExLDIxMTE3LDIxMjE1LDIxMjIyLDIxMjIwLDIxMjE4LDIxMjE5LDIxMjk1LDIxOTgzLDIxOTkyLDIxOTcxLDIxOTkwLDIxOTY2LDIxOTgwLDIxOTU5LDIxOTY5LDIxOTg3LDIxOTg4LDIxOTk5LDIxOTc4LDIxOTg1LDIxOTU3LDIxOTU4LDIxOTg5LDIxOTYxLDIyMjkwLDIyMjkxLDIyNjIyLDIyNjA5LDIyNjE2LDIyNjE1LDIyNjE4LDIyNjEyLDIyNjM1LDIyNjA0LDIyNjM3LDIyNjAyLDIyNjI2LDIyNjEwLDIyNjAzLDIyODg3LDIzMjMzLDIzMjQxLDIzMjQ0LDIzMjMwLDIzMjI5LDIzMjI4LDIzMjE5LDIzMjM0LDIzMjE4LDIzOTEzLDIzOTE5LDI0MTQwLDI0MTg1LDI0MjY1LDI0MjY0LDI0MzM4LDI0NDA5LDI0NDkyLDI0NDk0LDI0ODU4LDI0ODQ3LDI0OTA0LDI0ODYzLDI0ODE5LDI0ODU5LDI0ODI1LDI0ODMzLDI0ODQwLDI0OTEwLDI0OTA4LDI0OTAwLDI0OTA5LDI0ODk0LDI0ODg0LDI0ODcxLDI0ODQ1LDI0ODM4LDI0ODg3LDI1MTIxLDI1MTIyLDI1NjE5LDI1NjYyLDI1NjMwLDI1NjQyLDI1NjQ1LDI1NjYxLDI1NjQ0LDI1NjE1LDI1NjI4LDI1NjIwLDI1NjEzLDI1NjU0LDI1NjIyLDI1NjIzLDI1NjA2LDI1OTY0LDI2MDE1LDI2MDMyLDI2MjYzLDI2MjQ5LDI2MjQ3LDI2MjQ4LDI2MjYyLDI2MjQ0LDI2MjY0LDI2MjUzLDI2MzcxLDI3MDI4LDI2OTg5LDI2OTcwLDI2OTk5LDI2OTc2LDI2OTY0LDI2OTk3LDI2OTI4LDI3MDEwLDI2OTU0LDI2OTg0LDI2OTg3LDI2OTc0LDI2OTYzLDI3MDAxLDI3MDE0LDI2OTczLDI2OTc5LDI2OTcxLDI3NDYzLDI3NTA2LDI3NTg0LDI3NTgzLDI3NjAzLDI3NjQ1LDI4MzIyLDI4MzM1LDI4MzcxLDI4MzQyLDI4MzU0LDI4MzA0LDI4MzE3LDI4MzU5LDI4MzU3LDI4MzI1LDI4MzEyLDI4MzQ4LDI4MzQ2LDI4MzMxLDI4MzY5LDI4MzEwLDI4MzE2LDI4MzU2LDI4MzcyLDI4MzMwLDI4MzI3LDI4MzQwLDI5MDA2LDI5MDE3LDI5MDMzLDI5MDI4LDI5MDAxLDI5MDMxLDI5MDIwLDI5MDM2LDI5MDMwLDI5MDA0LDI5MDI5LDI5MDIyLDI4OTk4LDI5MDMyLDI5MDE0LDI5MjQyLDI5MjY2LDI5NDk1LDI5NTA5LDI5NTAzLDI5NTAyLDI5ODA3LDI5Nzg2LDI5NzgxLDI5NzkxLDI5NzkwLDI5NzYxLDI5NzU5LDI5Nzg1LDI5Nzg3LDI5Nzg4LDMwMDcwLDMwMDcyLDMwMjA4LDMwMTkyLDMwMjA5LDMwMTk0LDMwMTkzLDMwMjAyLDMwMjA3LDMwMTk2LDMwMTk1LDMwNDMwLDMwNDMxLDMwNTU1LDMwNTcxLDMwNTY2LDMwNTU4LDMwNTYzLDMwNTg1LDMwNTcwLDMwNTcyLDMwNTU2LDMwNTY1LDMwNTY4LDMwNTYyLDMwNzAyLDMwODYyLDMwODk2LDMwODcxLDMwODcyLDMwODYwLDMwODU3LDMwODQ0LDMwODY1LDMwODY3LDMwODQ3LDMxMDk4LDMxMTAzLDMxMTA1LDMzODM2LDMxMTY1LDMxMjYwLDMxMjU4LDMxMjY0LDMxMjUyLDMxMjYzLDMxMjYyLDMxMzkxLDMxMzkyLDMxNjA3LDMxNjgwLDMxNTg0LDMxNTk4LDMxNTkxLDMxOTIxLDMxOTIzLDMxOTI1LDMyMTQ3LDMyMTIxLDMyMTQ1LDMyMTI5LDMyMTQzLDMyMDkxLDMyNjIyLDMyNjE3LDMyNjE4LDMyNjI2LDMyNjgxLDMyNjgwLDMyNjc2LDMyODU0LDMyODU2LDMyOTAyLDMyOTAwLDMzMTM3LDMzMTM2LDMzMTQ0LDMzMTI1LDMzMTM0LDMzMTM5LDMzMTMxLDMzMTQ1LDMzMTQ2LDMzMTI2LDMzMjg1LDMzMzUxLDMzOTIyLDMzOTExLDMzODUzLDMzODQxLDMzOTA5LDMzODk0LDMzODk5LDMzODY1LDMzOTAwLDMzODgzLDMzODUyLDMzODQ1LDMzODg5LDMzODkxLDMzODk3LDMzOTAxLDMzODYyLDM0Mzk4LDM0Mzk2LDM0Mzk5LDM0NTUzLDM0NTc5LDM0NTY4LDM0NTY3LDM0NTYwLDM0NTU4LDM0NTU1LDM0NTYyLDM0NTYzLDM0NTY2LDM0NTcwLDM0OTA1LDM1MDM5LDM1MDI4LDM1MDMzLDM1MDM2LDM1MDMyLDM1MDM3LDM1MDQxLDM1MDE4LDM1MDI5LDM1MDI2LDM1MjI4LDM1Mjk5LDM1NDM1LDM1NDQyLDM1NDQzLDM1NDMwLDM1NDMzLDM1NDQwLDM1NDYzLDM1NDUyLDM1NDI3LDM1NDg4LDM1NDQxLDM1NDYxLDM1NDM3LDM1NDI2LDM1NDM4LDM1NDM2LDM1NDQ5LDM1NDUxLDM1MzkwLDM1NDMyLDM1OTM4LDM1OTc4LDM1OTc3LDM2MDQyLDM2MDM5LDM2MDQwLDM2MDM2LDM2MDE4LDM2MDM1LDM2MDM0LDM2MDM3LDM2MzIxLDM2MzE5LDM2MzI4LDM2MzM1LDM2MzM5LDM2MzQ2LDM2MzMwLDM2MzI0LDM2MzI2LDM2NTMwLDM2NjExLDM2NjE3LDM2NjA2LDM2NjE4LDM2NzY3LDM2Nzg2LDM2OTM5LDM2OTM4LDM2OTQ3LDM2OTMwLDM2OTQ4LDM2OTI0LDM2OTQ5LDM2OTQ0LDM2OTM1LDM2OTQzLDM2OTQyLDM2OTQxLDM2OTQ1LDM2OTI2LDM2OTI5LDM3MTM4LDM3MTQzLDM3MjI4LDM3MjI2LDM3MjI1LDM3MzIxLDM3NDMxLDM3NDYzLDM3NDMyLDM3NDM3LDM3NDQwLDM3NDM4LDM3NDY3LDM3NDUxLDM3NDc2LDM3NDU3LDM3NDI4LDM3NDQ5LDM3NDUzLDM3NDQ1LDM3NDMzLDM3NDM5LDM3NDY2LDM4Mjk2LDM4NTUyLDM4NTQ4LDM4NTQ5LDM4NjA1LDM4NjAzLDM4NjAxLDM4NjAyLDM4NjQ3LDM4NjUxLDM4NjQ5LDM4NjQ2LDM4NzQyLDM4NzcyLDM4Nzc0LDM4OTI4LDM4OTI5LDM4OTMxLDM4OTIyLDM4OTMwLDM4OTI0LDM5MTY0LDM5MTU2LDM5MTY1LDM5MTY2LDM5MzQ3LDM5MzQ1LDM5MzQ4LDM5NjQ5LDQwMTY5LDQwNTc4LDQwNzE4LDQwNzIzLDQwNzM2LDIwNzExLDIwNzE4LDIwNzA5LDIwNjk0LDIwNzE3LDIwNjk4LDIwNjkzLDIwNjg3LDIwNjg5LDIwNzIxLDIwNjg2LDIwNzEzLDIwODM0LDIwOTc5LDIxMTIzLDIxMTIyLDIxMjk3LDIxNDIxLDIyMDE0LDIyMDE2LDIyMDQzLDIyMDM5LDIyMDEzLDIyMDM2LDIyMDIyLDIyMDI1LDIyMDI5LDIyMDMwLDIyMDA3LDIyMDM4LDIyMDQ3LDIyMDI0LDIyMDMyLDIyMDA2LDIyMjk2LDIyMjk0LDIyNjQ1LDIyNjU0LDIyNjU5LDIyNjc1LDIyNjY2LDIyNjQ5LDIyNjYxLDIyNjUzLDIyNzgxLDIyODIxLDIyODE4LDIyODIwLDIyODkwLDIyODg5LDIzMjY1LDIzMjcwLDIzMjczLDIzMjU1LDIzMjU0LDIzMjU2LDIzMjY3LDIzNDEzLDIzNTE4LDIzNTI3LDIzNTIxLDIzNTI1LDIzNTI2LDIzNTI4LDIzNTIyLDIzNTI0LDIzNTE5LDIzNTY1LDIzNjUwLDIzOTQwLDIzOTQzLDI0MTU1LDI0MTYzLDI0MTQ5LDI0MTUxLDI0MTQ4LDI0Mjc1LDI0Mjc4LDI0MzMwLDI0MzkwLDI0NDMyLDI0NTA1LDI0OTAzLDI0ODk1LDI0OTA3LDI0OTUxLDI0OTMwLDI0OTMxLDI0OTI3LDI0OTIyLDI0OTIwLDI0OTQ5LDI1MTMwLDI1NzM1LDI1Njg4LDI1Njg0LDI1NzY0LDI1NzIwLDI1Njk1LDI1NzIyLDI1NjgxLDI1NzAzLDI1NjUyLDI1NzA5LDI1NzIzLDI1OTcwLDI2MDE3LDI2MDcxLDI2MDcwLDI2Mjc0LDI2MjgwLDI2MjY5LDI3MDM2LDI3MDQ4LDI3MDI5LDI3MDczLDI3MDU0LDI3MDkxLDI3MDgzLDI3MDM1LDI3MDYzLDI3MDY3LDI3MDUxLDI3MDYwLDI3MDg4LDI3MDg1LDI3MDUzLDI3MDg0LDI3MDQ2LDI3MDc1LDI3MDQzLDI3NDY1LDI3NDY4LDI3Njk5LDI4NDY3LDI4NDM2LDI4NDE0LDI4NDM1LDI4NDA0LDI4NDU3LDI4NDc4LDI4NDQ4LDI4NDYwLDI4NDMxLDI4NDE4LDI4NDUwLDI4NDE1LDI4Mzk5LDI4NDIyLDI4NDY1LDI4NDcyLDI4NDY2LDI4NDUxLDI4NDM3LDI4NDU5LDI4NDYzLDI4NTUyLDI4NDU4LDI4Mzk2LDI4NDE3LDI4NDAyLDI4MzY0LDI4NDA3LDI5MDc2LDI5MDgxLDI5MDUzLDI5MDY2LDI5MDYwLDI5MDc0LDI5MjQ2LDI5MzMwLDI5MzM0LDI5NTA4LDI5NTIwLDI5Nzk2LDI5Nzk1LDI5ODAyLDI5ODA4LDI5ODA1LDI5OTU2LDMwMDk3LDMwMjQ3LDMwMjIxLDMwMjE5LDMwMjE3LDMwMjI3LDMwNDMzLDMwNDM1LDMwNTk2LDMwNTg5LDMwNTkxLDMwNTYxLDMwOTEzLDMwODc5LDMwODg3LDMwODk5LDMwODg5LDMwODgzLDMxMTE4LDMxMTE5LDMxMTE3LDMxMjc4LDMxMjgxLDMxNDAyLDMxNDAxLDMxNDY5LDMxNDcxLDMxNjQ5LDMxNjM3LDMxNjI3LDMxNjA1LDMxNjM5LDMxNjQ1LDMxNjM2LDMxNjMxLDMxNjcyLDMxNjIzLDMxNjIwLDMxOTI5LDMxOTMzLDMxOTM0LDMyMTg3LDMyMTc2LDMyMTU2LDMyMTg5LDMyMTkwLDMyMTYwLDMyMjAyLDMyMTgwLDMyMTc4LDMyMTc3LDMyMTg2LDMyMTYyLDMyMTkxLDMyMTgxLDMyMTg0LDMyMTczLDMyMjEwLDMyMTk5LDMyMTcyLDMyNjI0LDMyNzM2LDMyNzM3LDMyNzM1LDMyODYyLDMyODU4LDMyOTAzLDMzMTA0LDMzMTUyLDMzMTY3LDMzMTYwLDMzMTYyLDMzMTUxLDMzMTU0LDMzMjU1LDMzMjc0LDMzMjg3LDMzMzAwLDMzMzEwLDMzMzU1LDMzOTkzLDMzOTgzLDMzOTkwLDMzOTg4LDMzOTQ1LDMzOTUwLDMzOTcwLDMzOTQ4LDMzOTk1LDMzOTc2LDMzOTg0LDM0MDAzLDMzOTM2LDMzOTgwLDM0MDAxLDMzOTk0LDM0NjIzLDM0NTg4LDM0NjE5LDM0NTk0LDM0NTk3LDM0NjEyLDM0NTg0LDM0NjQ1LDM0NjE1LDM0NjAxLDM1MDU5LDM1MDc0LDM1MDYwLDM1MDY1LDM1MDY0LDM1MDY5LDM1MDQ4LDM1MDk4LDM1MDU1LDM1NDk0LDM1NDY4LDM1NDg2LDM1NDkxLDM1NDY5LDM1NDg5LDM1NDc1LDM1NDkyLDM1NDk4LDM1NDkzLDM1NDk2LDM1NDgwLDM1NDczLDM1NDgyLDM1NDk1LDM1OTQ2LDM1OTgxLDM1OTgwLDM2MDUxLDM2MDQ5LDM2MDUwLDM2MjAzLDM2MjQ5LDM2MjQ1LDM2MzQ4LDM2NjI4LDM2NjI2LDM2NjI5LDM2NjI3LDM2NzcxLDM2OTYwLDM2OTUyLDM2OTU2LDM2OTYzLDM2OTUzLDM2OTU4LDM2OTYyLDM2OTU3LDM2OTU1LDM3MTQ1LDM3MTQ0LDM3MTUwLDM3MjM3LDM3MjQwLDM3MjM5LDM3MjM2LDM3NDk2LDM3NTA0LDM3NTA5LDM3NTI4LDM3NTI2LDM3NDk5LDM3NTIzLDM3NTMyLDM3NTQ0LDM3NTAwLDM3NTIxLDM4MzA1LDM4MzEyLDM4MzEzLDM4MzA3LDM4MzA5LDM4MzA4LDM4NTUzLDM4NTU2LDM4NTU1LDM4NjA0LDM4NjEwLDM4NjU2LDM4NzgwLDM4Nzg5LDM4OTAyLDM4OTM1LDM4OTM2LDM5MDg3LDM5MDg5LDM5MTcxLDM5MTczLDM5MTgwLDM5MTc3LDM5MzYxLDM5NTk5LDM5NjAwLDM5NjU0LDM5NzQ1LDM5NzQ2LDQwMTgwLDQwMTgyLDQwMTc5LDQwNjM2LDQwNzYzLDQwNzc4LDIwNzQwLDIwNzM2LDIwNzMxLDIwNzI1LDIwNzI5LDIwNzM4LDIwNzQ0LDIwNzQ1LDIwNzQxLDIwOTU2LDIxMTI3LDIxMTI4LDIxMTI5LDIxMTMzLDIxMTMwLDIxMjMyLDIxNDI2LDIyMDYyLDIyMDc1LDIyMDczLDIyMDY2LDIyMDc5LDIyMDY4LDIyMDU3LDIyMDk5LDIyMDk0LDIyMTAzLDIyMTMyLDIyMDcwLDIyMDYzLDIyMDY0LDIyNjU2LDIyNjg3LDIyNjg2LDIyNzA3LDIyNjg0LDIyNzAyLDIyNjk3LDIyNjk0LDIyODkzLDIzMzA1LDIzMjkxLDIzMzA3LDIzMjg1LDIzMzA4LDIzMzA0LDIzNTM0LDIzNTMyLDIzNTI5LDIzNTMxLDIzNjUyLDIzNjUzLDIzOTY1LDIzOTU2LDI0MTYyLDI0MTU5LDI0MTYxLDI0MjkwLDI0MjgyLDI0Mjg3LDI0Mjg1LDI0MjkxLDI0Mjg4LDI0MzkyLDI0NDMzLDI0NTAzLDI0NTAxLDI0OTUwLDI0OTM1LDI0OTQyLDI0OTI1LDI0OTE3LDI0OTYyLDI0OTU2LDI0OTQ0LDI0OTM5LDI0OTU4LDI0OTk5LDI0OTc2LDI1MDAzLDI0OTc0LDI1MDA0LDI0OTg2LDI0OTk2LDI0OTgwLDI1MDA2LDI1MTM0LDI1NzA1LDI1NzExLDI1NzIxLDI1NzU4LDI1Nzc4LDI1NzM2LDI1NzQ0LDI1Nzc2LDI1NzY1LDI1NzQ3LDI1NzQ5LDI1NzY5LDI1NzQ2LDI1Nzc0LDI1NzczLDI1NzcxLDI1NzU0LDI1NzcyLDI1NzUzLDI1NzYyLDI1Nzc5LDI1OTczLDI1OTc1LDI1OTc2LDI2Mjg2LDI2MjgzLDI2MjkyLDI2Mjg5LDI3MTcxLDI3MTY3LDI3MTEyLDI3MTM3LDI3MTY2LDI3MTYxLDI3MTMzLDI3MTY5LDI3MTU1LDI3MTQ2LDI3MTIzLDI3MTM4LDI3MTQxLDI3MTE3LDI3MTUzLDI3NDcyLDI3NDcwLDI3NTU2LDI3NTg5LDI3NTkwLDI4NDc5LDI4NTQwLDI4NTQ4LDI4NDk3LDI4NTE4LDI4NTAwLDI4NTUwLDI4NTI1LDI4NTA3LDI4NTM2LDI4NTI2LDI4NTU4LDI4NTM4LDI4NTI4LDI4NTE2LDI4NTY3LDI4NTA0LDI4MzczLDI4NTI3LDI4NTEyLDI4NTExLDI5MDg3LDI5MTAwLDI5MTA1LDI5MDk2LDI5MjcwLDI5MzM5LDI5NTE4LDI5NTI3LDI5ODAxLDI5ODM1LDI5ODI3LDI5ODIyLDI5ODI0LDMwMDc5LDMwMjQwLDMwMjQ5LDMwMjM5LDMwMjQ0LDMwMjQ2LDMwMjQxLDMwMjQyLDMwMzYyLDMwMzk0LDMwNDM2LDMwNjA2LDMwNTk5LDMwNjA0LDMwNjA5LDMwNjAzLDMwOTIzLDMwOTE3LDMwOTA2LDMwOTIyLDMwOTEwLDMwOTMzLDMwOTA4LDMwOTI4LDMxMjk1LDMxMjkyLDMxMjk2LDMxMjkzLDMxMjg3LDMxMjkxLDMxNDA3LDMxNDA2LDMxNjYxLDMxNjY1LDMxNjg0LDMxNjY4LDMxNjg2LDMxNjg3LDMxNjgxLDMxNjQ4LDMxNjkyLDMxOTQ2LDMyMjI0LDMyMjQ0LDMyMjM5LDMyMjUxLDMyMjE2LDMyMjM2LDMyMjIxLDMyMjMyLDMyMjI3LDMyMjE4LDMyMjIyLDMyMjMzLDMyMTU4LDMyMjE3LDMyMjQyLDMyMjQ5LDMyNjI5LDMyNjMxLDMyNjg3LDMyNzQ1LDMyODA2LDMzMTc5LDMzMTgwLDMzMTgxLDMzMTg0LDMzMTc4LDMzMTc2LDM0MDcxLDM0MTA5LDM0MDc0LDM0MDMwLDM0MDkyLDM0MDkzLDM0MDY3LDM0MDY1LDM0MDgzLDM0MDgxLDM0MDY4LDM0MDI4LDM0MDg1LDM0MDQ3LDM0MDU0LDM0NjkwLDM0Njc2LDM0Njc4LDM0NjU2LDM0NjYyLDM0NjgwLDM0NjY0LDM0NjQ5LDM0NjQ3LDM0NjM2LDM0NjQzLDM0OTA3LDM0OTA5LDM1MDg4LDM1MDc5LDM1MDkwLDM1MDkxLDM1MDkzLDM1MDgyLDM1NTE2LDM1NTM4LDM1NTI3LDM1NTI0LDM1NDc3LDM1NTMxLDM1NTc2LDM1NTA2LDM1NTI5LDM1NTIyLDM1NTE5LDM1NTA0LDM1NTQyLDM1NTMzLDM1NTEwLDM1NTEzLDM1NTQ3LDM1OTE2LDM1OTE4LDM1OTQ4LDM2MDY0LDM2MDYyLDM2MDcwLDM2MDY4LDM2MDc2LDM2MDc3LDM2MDY2LDM2MDY3LDM2MDYwLDM2MDc0LDM2MDY1LDM2MjA1LDM2MjU1LDM2MjU5LDM2Mzk1LDM2MzY4LDM2MzgxLDM2Mzg2LDM2MzY3LDM2MzkzLDM2MzgzLDM2Mzg1LDM2MzgyLDM2NTM4LDM2NjM3LDM2NjM1LDM2NjM5LDM2NjQ5LDM2NjQ2LDM2NjUwLDM2NjM2LDM2NjM4LDM2NjQ1LDM2OTY5LDM2OTc0LDM2OTY4LDM2OTczLDM2OTgzLDM3MTY4LDM3MTY1LDM3MTU5LDM3MTY5LDM3MjU1LDM3MjU3LDM3MjU5LDM3MjUxLDM3NTczLDM3NTYzLDM3NTU5LDM3NjEwLDM3NTQ4LDM3NjA0LDM3NTY5LDM3NTU1LDM3NTY0LDM3NTg2LDM3NTc1LDM3NjE2LDM3NTU0LDM4MzE3LDM4MzIxLDM4NjYwLDM4NjYyLDM4NjYzLDM4NjY1LDM4NzUyLDM4Nzk3LDM4Nzk1LDM4Nzk5LDM4OTQ1LDM4OTU1LDM4OTQwLDM5MDkxLDM5MTc4LDM5MTg3LDM5MTg2LDM5MTkyLDM5Mzg5LDM5Mzc2LDM5MzkxLDM5Mzg3LDM5Mzc3LDM5MzgxLDM5Mzc4LDM5Mzg1LDM5NjA3LDM5NjYyLDM5NjYzLDM5NzE5LDM5NzQ5LDM5NzQ4LDM5Nzk5LDM5NzkxLDQwMTk4LDQwMjAxLDQwMTk1LDQwNjE3LDQwNjM4LDQwNjU0LDIyNjk2LDQwNzg2LDIwNzU0LDIwNzYwLDIwNzU2LDIwNzUyLDIwNzU3LDIwODY0LDIwOTA2LDIwOTU3LDIxMTM3LDIxMTM5LDIxMjM1LDIyMTA1LDIyMTIzLDIyMTM3LDIyMTIxLDIyMTE2LDIyMTM2LDIyMTIyLDIyMTIwLDIyMTE3LDIyMTI5LDIyMTI3LDIyMTI0LDIyMTE0LDIyMTM0LDIyNzIxLDIyNzE4LDIyNzI3LDIyNzI1LDIyODk0LDIzMzI1LDIzMzQ4LDIzNDE2LDIzNTM2LDIzNTY2LDI0Mzk0LDI1MDEwLDI0OTc3LDI1MDAxLDI0OTcwLDI1MDM3LDI1MDE0LDI1MDIyLDI1MDM0LDI1MDMyLDI1MTM2LDI1Nzk3LDI1NzkzLDI1ODAzLDI1Nzg3LDI1Nzg4LDI1ODE4LDI1Nzk2LDI1Nzk5LDI1Nzk0LDI1ODA1LDI1NzkxLDI1ODEwLDI1ODEyLDI1NzkwLDI1OTcyLDI2MzEwLDI2MzEzLDI2Mjk3LDI2MzA4LDI2MzExLDI2Mjk2LDI3MTk3LDI3MTkyLDI3MTk0LDI3MjI1LDI3MjQzLDI3MjI0LDI3MTkzLDI3MjA0LDI3MjM0LDI3MjMzLDI3MjExLDI3MjA3LDI3MTg5LDI3MjMxLDI3MjA4LDI3NDgxLDI3NTExLDI3NjUzLDI4NjEwLDI4NTkzLDI4NTc3LDI4NjExLDI4NTgwLDI4NjA5LDI4NTgzLDI4NTk1LDI4NjA4LDI4NjAxLDI4NTk4LDI4NTgyLDI4NTc2LDI4NTk2LDI5MTE4LDI5MTI5LDI5MTM2LDI5MTM4LDI5MTI4LDI5MTQxLDI5MTEzLDI5MTM0LDI5MTQ1LDI5MTQ4LDI5MTIzLDI5MTI0LDI5NTQ0LDI5ODUyLDI5ODU5LDI5ODQ4LDI5ODU1LDI5ODU0LDI5OTIyLDI5OTY0LDI5OTY1LDMwMjYwLDMwMjY0LDMwMjY2LDMwNDM5LDMwNDM3LDMwNjI0LDMwNjIyLDMwNjIzLDMwNjI5LDMwOTUyLDMwOTM4LDMwOTU2LDMwOTUxLDMxMTQyLDMxMzA5LDMxMzEwLDMxMzAyLDMxMzA4LDMxMzA3LDMxNDE4LDMxNzA1LDMxNzYxLDMxNjg5LDMxNzE2LDMxNzA3LDMxNzEzLDMxNzIxLDMxNzE4LDMxOTU3LDMxOTU4LDMyMjY2LDMyMjczLDMyMjY0LDMyMjgzLDMyMjkxLDMyMjg2LDMyMjg1LDMyMjY1LDMyMjcyLDMyNjMzLDMyNjkwLDMyNzUyLDMyNzUzLDMyNzUwLDMyODA4LDMzMjAzLDMzMTkzLDMzMTkyLDMzMjc1LDMzMjg4LDMzMzY4LDMzMzY5LDM0MTIyLDM0MTM3LDM0MTIwLDM0MTUyLDM0MTUzLDM0MTE1LDM0MTIxLDM0MTU3LDM0MTU0LDM0MTQyLDM0NjkxLDM0NzE5LDM0NzE4LDM0NzIyLDM0NzAxLDM0OTEzLDM1MTE0LDM1MTIyLDM1MTA5LDM1MTE1LDM1MTA1LDM1MjQyLDM1MjM4LDM1NTU4LDM1NTc4LDM1NTYzLDM1NTY5LDM1NTg0LDM1NTQ4LDM1NTU5LDM1NTY2LDM1NTgyLDM1NTg1LDM1NTg2LDM1NTc1LDM1NTY1LDM1NTcxLDM1NTc0LDM1NTgwLDM1OTQ3LDM1OTQ5LDM1OTg3LDM2MDg0LDM2NDIwLDM2NDAxLDM2NDA0LDM2NDE4LDM2NDA5LDM2NDA1LDM2NjY3LDM2NjU1LDM2NjY0LDM2NjU5LDM2Nzc2LDM2Nzc0LDM2OTgxLDM2OTgwLDM2OTg0LDM2OTc4LDM2OTg4LDM2OTg2LDM3MTcyLDM3MjY2LDM3NjY0LDM3Njg2LDM3NjI0LDM3NjgzLDM3Njc5LDM3NjY2LDM3NjI4LDM3Njc1LDM3NjM2LDM3NjU4LDM3NjQ4LDM3NjcwLDM3NjY1LDM3NjUzLDM3Njc4LDM3NjU3LDM4MzMxLDM4NTY3LDM4NTY4LDM4NTcwLDM4NjEzLDM4NjcwLDM4NjczLDM4Njc4LDM4NjY5LDM4Njc1LDM4NjcxLDM4NzQ3LDM4NzQ4LDM4NzU4LDM4ODA4LDM4OTYwLDM4OTY4LDM4OTcxLDM4OTY3LDM4OTU3LDM4OTY5LDM4OTQ4LDM5MTg0LDM5MjA4LDM5MTk4LDM5MTk1LDM5MjAxLDM5MTk0LDM5NDA1LDM5Mzk0LDM5NDA5LDM5NjA4LDM5NjEyLDM5Njc1LDM5NjYxLDM5NzIwLDM5ODI1LDQwMjEzLDQwMjI3LDQwMjMwLDQwMjMyLDQwMjEwLDQwMjE5LDQwNjY0LDQwNjYwLDQwODQ1LDQwODYwLDIwNzc4LDIwNzY3LDIwNzY5LDIwNzg2LDIxMjM3LDIyMTU4LDIyMTQ0LDIyMTYwLDIyMTQ5LDIyMTUxLDIyMTU5LDIyNzQxLDIyNzM5LDIyNzM3LDIyNzM0LDIzMzQ0LDIzMzM4LDIzMzMyLDIzNDE4LDIzNjA3LDIzNjU2LDIzOTk2LDIzOTk0LDIzOTk3LDIzOTkyLDI0MTcxLDI0Mzk2LDI0NTA5LDI1MDMzLDI1MDI2LDI1MDMxLDI1MDYyLDI1MDM1LDI1MTM4LDI1MTQwLDI1ODA2LDI1ODAyLDI1ODE2LDI1ODI0LDI1ODQwLDI1ODMwLDI1ODM2LDI1ODQxLDI1ODI2LDI1ODM3LDI1OTg2LDI1OTg3LDI2MzI5LDI2MzI2LDI3MjY0LDI3Mjg0LDI3MjY4LDI3Mjk4LDI3MjkyLDI3MzU1LDI3Mjk5LDI3MjYyLDI3Mjg3LDI3MjgwLDI3Mjk2LDI3NDg0LDI3NTY2LDI3NjEwLDI3NjU2LDI4NjMyLDI4NjU3LDI4NjM5LDI4NjQwLDI4NjM1LDI4NjQ0LDI4NjUxLDI4NjU1LDI4NTQ0LDI4NjUyLDI4NjQxLDI4NjQ5LDI4NjI5LDI4NjU0LDI4NjU2LDI5MTU5LDI5MTUxLDI5MTY2LDI5MTU4LDI5MTU3LDI5MTY1LDI5MTY0LDI5MTcyLDI5MTUyLDI5MjM3LDI5MjU0LDI5NTUyLDI5NTU0LDI5ODY1LDI5ODcyLDI5ODYyLDI5ODY0LDMwMjc4LDMwMjc0LDMwMjg0LDMwNDQyLDMwNjQzLDMwNjM0LDMwNjQwLDMwNjM2LDMwNjMxLDMwNjM3LDMwNzAzLDMwOTY3LDMwOTcwLDMwOTY0LDMwOTU5LDMwOTc3LDMxMTQzLDMxMTQ2LDMxMzE5LDMxNDIzLDMxNzUxLDMxNzU3LDMxNzQyLDMxNzM1LDMxNzU2LDMxNzEyLDMxOTY4LDMxOTY0LDMxOTY2LDMxOTcwLDMxOTY3LDMxOTYxLDMxOTY1LDMyMzAyLDMyMzE4LDMyMzI2LDMyMzExLDMyMzA2LDMyMzIzLDMyMjk5LDMyMzE3LDMyMzA1LDMyMzI1LDMyMzIxLDMyMzA4LDMyMzEzLDMyMzI4LDMyMzA5LDMyMzE5LDMyMzAzLDMyNTgwLDMyNzU1LDMyNzY0LDMyODgxLDMyODgyLDMyODgwLDMyODc5LDMyODgzLDMzMjIyLDMzMjE5LDMzMjEwLDMzMjE4LDMzMjE2LDMzMjE1LDMzMjEzLDMzMjI1LDMzMjE0LDMzMjU2LDMzMjg5LDMzMzkzLDM0MjE4LDM0MTgwLDM0MTc0LDM0MjA0LDM0MTkzLDM0MTk2LDM0MjIzLDM0MjAzLDM0MTgzLDM0MjE2LDM0MTg2LDM0NDA3LDM0NzUyLDM0NzY5LDM0NzM5LDM0NzcwLDM0NzU4LDM0NzMxLDM0NzQ3LDM0NzQ2LDM0NzYwLDM0NzYzLDM1MTMxLDM1MTI2LDM1MTQwLDM1MTI4LDM1MTMzLDM1MjQ0LDM1NTk4LDM1NjA3LDM1NjA5LDM1NjExLDM1NTk0LDM1NjE2LDM1NjEzLDM1NTg4LDM1NjAwLDM1OTA1LDM1OTAzLDM1OTU1LDM2MDkwLDM2MDkzLDM2MDkyLDM2MDg4LDM2MDkxLDM2MjY0LDM2NDI1LDM2NDI3LDM2NDI0LDM2NDI2LDM2Njc2LDM2NjcwLDM2Njc0LDM2Njc3LDM2NjcxLDM2OTkxLDM2OTg5LDM2OTk2LDM2OTkzLDM2OTk0LDM2OTkyLDM3MTc3LDM3MjgzLDM3Mjc4LDM3Mjc2LDM3NzA5LDM3NzYyLDM3NjcyLDM3NzQ5LDM3NzA2LDM3NzMzLDM3NzA3LDM3NjU2LDM3NzU4LDM3NzQwLDM3NzIzLDM3NzQ0LDM3NzIyLDM3NzE2LDM4MzQ2LDM4MzQ3LDM4MzQ4LDM4MzQ0LDM4MzQyLDM4NTc3LDM4NTg0LDM4NjE0LDM4Njg0LDM4Njg2LDM4ODE2LDM4ODY3LDM4OTgyLDM5MDk0LDM5MjIxLDM5NDI1LDM5NDIzLDM5ODU0LDM5ODUxLDM5ODUwLDM5ODUzLDQwMjUxLDQwMjU1LDQwNTg3LDQwNjU1LDQwNjcwLDQwNjY4LDQwNjY5LDQwNjY3LDQwNzY2LDQwNzc5LDIxNDc0LDIyMTY1LDIyMTkwLDIyNzQ1LDIyNzQ0LDIzMzUyLDI0NDEzLDI1MDU5LDI1MTM5LDI1ODQ0LDI1ODQyLDI1ODU0LDI1ODYyLDI1ODUwLDI1ODUxLDI1ODQ3LDI2MDM5LDI2MzMyLDI2NDA2LDI3MzE1LDI3MzA4LDI3MzMxLDI3MzIzLDI3MzIwLDI3MzMwLDI3MzEwLDI3MzExLDI3NDg3LDI3NTEyLDI3NTY3LDI4NjgxLDI4NjgzLDI4NjcwLDI4Njc4LDI4NjY2LDI4Njg5LDI4Njg3LDI5MTc5LDI5MTgwLDI5MTgyLDI5MTc2LDI5NTU5LDI5NTU3LDI5ODYzLDI5ODg3LDI5OTczLDMwMjk0LDMwMjk2LDMwMjkwLDMwNjUzLDMwNjU1LDMwNjUxLDMwNjUyLDMwOTkwLDMxMTUwLDMxMzI5LDMxMzMwLDMxMzI4LDMxNDI4LDMxNDI5LDMxNzg3LDMxNzgzLDMxNzg2LDMxNzc0LDMxNzc5LDMxNzc3LDMxOTc1LDMyMzQwLDMyMzQxLDMyMzUwLDMyMzQ2LDMyMzUzLDMyMzM4LDMyMzQ1LDMyNTg0LDMyNzYxLDMyNzYzLDMyODg3LDMyODg2LDMzMjI5LDMzMjMxLDMzMjkwLDM0MjU1LDM0MjE3LDM0MjUzLDM0MjU2LDM0MjQ5LDM0MjI0LDM0MjM0LDM0MjMzLDM0MjE0LDM0Nzk5LDM0Nzk2LDM0ODAyLDM0Nzg0LDM1MjA2LDM1MjUwLDM1MzE2LDM1NjI0LDM1NjQxLDM1NjI4LDM1NjI3LDM1OTIwLDM2MTAxLDM2NDQxLDM2NDUxLDM2NDU0LDM2NDUyLDM2NDQ3LDM2NDM3LDM2NTQ0LDM2NjgxLDM2Njg1LDM2OTk5LDM2OTk1LDM3MDAwLDM3MjkxLDM3MjkyLDM3MzI4LDM3NzgwLDM3NzcwLDM3NzgyLDM3Nzk0LDM3ODExLDM3ODA2LDM3ODA0LDM3ODA4LDM3Nzg0LDM3Nzg2LDM3NzgzLDM4MzU2LDM4MzU4LDM4MzUyLDM4MzU3LDM4NjI2LDM4NjIwLDM4NjE3LDM4NjE5LDM4NjIyLDM4NjkyLDM4ODE5LDM4ODIyLDM4ODI5LDM4OTA1LDM4OTg5LDM4OTkxLDM4OTg4LDM4OTkwLDM4OTk1LDM5MDk4LDM5MjMwLDM5MjMxLDM5MjI5LDM5MjE0LDM5MzMzLDM5NDM4LDM5NjE3LDM5NjgzLDM5Njg2LDM5NzU5LDM5NzU4LDM5NzU3LDM5ODgyLDM5ODgxLDM5OTMzLDM5ODgwLDM5ODcyLDQwMjczLDQwMjg1LDQwMjg4LDQwNjcyLDQwNzI1LDQwNzQ4LDIwNzg3LDIyMTgxLDIyNzUwLDIyNzUxLDIyNzU0LDIzNTQxLDQwODQ4LDI0MzAwLDI1MDc0LDI1MDc5LDI1MDc4LDI1MDc3LDI1ODU2LDI1ODcxLDI2MzM2LDI2MzMzLDI3MzY1LDI3MzU3LDI3MzU0LDI3MzQ3LDI4Njk5LDI4NzAzLDI4NzEyLDI4Njk4LDI4NzAxLDI4NjkzLDI4Njk2LDI5MTkwLDI5MTk3LDI5MjcyLDI5MzQ2LDI5NTYwLDI5NTYyLDI5ODg1LDI5ODk4LDI5OTIzLDMwMDg3LDMwMDg2LDMwMzAzLDMwMzA1LDMwNjYzLDMxMDAxLDMxMTUzLDMxMzM5LDMxMzM3LDMxODA2LDMxODA3LDMxODAwLDMxODA1LDMxNzk5LDMxODA4LDMyMzYzLDMyMzY1LDMyMzc3LDMyMzYxLDMyMzYyLDMyNjQ1LDMyMzcxLDMyNjk0LDMyNjk3LDMyNjk2LDMzMjQwLDM0MjgxLDM0MjY5LDM0MjgyLDM0MjYxLDM0Mjc2LDM0Mjc3LDM0Mjk1LDM0ODExLDM0ODIxLDM0ODI5LDM0ODA5LDM0ODE0LDM1MTY4LDM1MTY3LDM1MTU4LDM1MTY2LDM1NjQ5LDM1Njc2LDM1NjcyLDM1NjU3LDM1Njc0LDM1NjYyLDM1NjYzLDM1NjU0LDM1NjczLDM2MTA0LDM2MTA2LDM2NDc2LDM2NDY2LDM2NDg3LDM2NDcwLDM2NDYwLDM2NDc0LDM2NDY4LDM2NjkyLDM2Njg2LDM2NzgxLDM3MDAyLDM3MDAzLDM3Mjk3LDM3Mjk0LDM3ODU3LDM3ODQxLDM3ODU1LDM3ODI3LDM3ODMyLDM3ODUyLDM3ODUzLDM3ODQ2LDM3ODU4LDM3ODM3LDM3ODQ4LDM3ODYwLDM3ODQ3LDM3ODY0LDM4MzY0LDM4NTgwLDM4NjI3LDM4Njk4LDM4Njk1LDM4NzUzLDM4ODc2LDM4OTA3LDM5MDA2LDM5MDAwLDM5MDAzLDM5MTAwLDM5MjM3LDM5MjQxLDM5NDQ2LDM5NDQ5LDM5NjkzLDM5OTEyLDM5OTExLDM5ODk0LDM5ODk5LDQwMzI5LDQwMjg5LDQwMzA2LDQwMjk4LDQwMzAwLDQwNTk0LDQwNTk5LDQwNTk1LDQwNjI4LDIxMjQwLDIyMTg0LDIyMTk5LDIyMTk4LDIyMTk2LDIyMjA0LDIyNzU2LDIzMzYwLDIzMzYzLDIzNDIxLDIzNTQyLDI0MDA5LDI1MDgwLDI1MDgyLDI1ODgwLDI1ODc2LDI1ODgxLDI2MzQyLDI2NDA3LDI3MzcyLDI4NzM0LDI4NzIwLDI4NzIyLDI5MjAwLDI5NTYzLDI5OTAzLDMwMzA2LDMwMzA5LDMxMDE0LDMxMDE4LDMxMDIwLDMxMDE5LDMxNDMxLDMxNDc4LDMxODIwLDMxODExLDMxODIxLDMxOTgzLDMxOTg0LDM2NzgyLDMyMzgxLDMyMzgwLDMyMzg2LDMyNTg4LDMyNzY4LDMzMjQyLDMzMzgyLDM0Mjk5LDM0Mjk3LDM0MzIxLDM0Mjk4LDM0MzEwLDM0MzE1LDM0MzExLDM0MzE0LDM0ODM2LDM0ODM3LDM1MTcyLDM1MjU4LDM1MzIwLDM1Njk2LDM1NjkyLDM1Njg2LDM1Njk1LDM1Njc5LDM1NjkxLDM2MTExLDM2MTA5LDM2NDg5LDM2NDgxLDM2NDg1LDM2NDgyLDM3MzAwLDM3MzIzLDM3OTEyLDM3ODkxLDM3ODg1LDM4MzY5LDM4NzA0LDM5MTA4LDM5MjUwLDM5MjQ5LDM5MzM2LDM5NDY3LDM5NDcyLDM5NDc5LDM5NDc3LDM5OTU1LDM5OTQ5LDQwNTY5LDQwNjI5LDQwNjgwLDQwNzUxLDQwNzk5LDQwODAzLDQwODAxLDIwNzkxLDIwNzkyLDIyMjA5LDIyMjA4LDIyMjEwLDIyODA0LDIzNjYwLDI0MDEzLDI1MDg0LDI1MDg2LDI1ODg1LDI1ODg0LDI2MDA1LDI2MzQ1LDI3Mzg3LDI3Mzk2LDI3Mzg2LDI3NTcwLDI4NzQ4LDI5MjExLDI5MzUxLDI5OTEwLDI5OTA4LDMwMzEzLDMwNjc1LDMxODI0LDMyMzk5LDMyMzk2LDMyNzAwLDM0MzI3LDM0MzQ5LDM0MzMwLDM0ODUxLDM0ODUwLDM0ODQ5LDM0ODQ3LDM1MTc4LDM1MTgwLDM1MjYxLDM1NzAwLDM1NzAzLDM1NzA5LDM2MTE1LDM2NDkwLDM2NDkzLDM2NDkxLDM2NzAzLDM2NzgzLDM3MzA2LDM3OTM0LDM3OTM5LDM3OTQxLDM3OTQ2LDM3OTQ0LDM3OTM4LDM3OTMxLDM4MzcwLDM4NzEyLDM4NzEzLDM4NzA2LDM4OTExLDM5MDE1LDM5MDEzLDM5MjU1LDM5NDkzLDM5NDkxLDM5NDg4LDM5NDg2LDM5NjMxLDM5NzY0LDM5NzYxLDM5OTgxLDM5OTczLDQwMzY3LDQwMzcyLDQwMzg2LDQwMzc2LDQwNjA1LDQwNjg3LDQwNzI5LDQwNzk2LDQwODA2LDQwODA3LDIwNzk2LDIwNzk1LDIyMjE2LDIyMjE4LDIyMjE3LDIzNDIzLDI0MDIwLDI0MDE4LDI0Mzk4LDI1MDg3LDI1ODkyLDI3NDAyLDI3NDg5LDI4NzUzLDI4NzYwLDI5NTY4LDI5OTI0LDMwMDkwLDMwMzE4LDMwMzE2LDMxMTU1LDMxODQwLDMxODM5LDMyODk0LDMyODkzLDMzMjQ3LDM1MTg2LDM1MTgzLDM1MzI0LDM1NzEyLDM2MTE4LDM2MTE5LDM2NDk3LDM2NDk5LDM2NzA1LDM3MTkyLDM3OTU2LDM3OTY5LDM3OTcwLDM4NzE3LDM4NzE4LDM4ODUxLDM4ODQ5LDM5MDE5LDM5MjUzLDM5NTA5LDM5NTAxLDM5NjM0LDM5NzA2LDQwMDA5LDM5OTg1LDM5OTk4LDM5OTk1LDQwNDAzLDQwNDA3LDQwNzU2LDQwODEyLDQwODEwLDQwODUyLDIyMjIwLDI0MDIyLDI1MDg4LDI1ODkxLDI1ODk5LDI1ODk4LDI2MzQ4LDI3NDA4LDI5OTE0LDMxNDM0LDMxODQ0LDMxODQzLDMxODQ1LDMyNDAzLDMyNDA2LDMyNDA0LDMzMjUwLDM0MzYwLDM0MzY3LDM0ODY1LDM1NzIyLDM3MDA4LDM3MDA3LDM3OTg3LDM3OTg0LDM3OTg4LDM4NzYwLDM5MDIzLDM5MjYwLDM5NTE0LDM5NTE1LDM5NTExLDM5NjM1LDM5NjM2LDM5NjMzLDQwMDIwLDQwMDIzLDQwMDIyLDQwNDIxLDQwNjA3LDQwNjkyLDIyMjI1LDIyNzYxLDI1OTAwLDI4NzY2LDMwMzIxLDMwMzIyLDMwNjc5LDMyNTkyLDMyNjQ4LDM0ODcwLDM0ODczLDM0OTE0LDM1NzMxLDM1NzMwLDM1NzM0LDMzMzk5LDM2MTIzLDM3MzEyLDM3OTk0LDM4NzIyLDM4NzI4LDM4NzI0LDM4ODU0LDM5MDI0LDM5NTE5LDM5NzE0LDM5NzY4LDQwMDMxLDQwNDQxLDQwNDQyLDQwNTcyLDQwNTczLDQwNzExLDQwODIzLDQwODE4LDI0MzA3LDI3NDE0LDI4NzcxLDMxODUyLDMxODU0LDM0ODc1LDM1MjY0LDM2NTEzLDM3MzEzLDM4MDAyLDM4MDAwLDM5MDI1LDM5MjYyLDM5NjM4LDM5NzE1LDQwNjUyLDI4NzcyLDMwNjgyLDM1NzM4LDM4MDA3LDM4ODU3LDM5NTIyLDM5NTI1LDMyNDEyLDM1NzQwLDM2NTIyLDM3MzE3LDM4MDEzLDM4MDE0LDM4MDEyLDQwMDU1LDQwMDU2LDQwNjk1LDM1OTI0LDM4MDE1LDQwNDc0LDI5MjI0LDM5NTMwLDM5NzI5LDQwNDc1LDQwNDc4LDMxODU4LDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMzMiw5MzMzLDkzMzQsOTMzNSw5MzM2LDkzMzcsOTMzOCw5MzM5LDkzNDAsOTM0MSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDIwMDIyLDIwMDMxLDIwMTAxLDIwMTI4LDIwODY2LDIwODg2LDIwOTA3LDIxMjQxLDIxMzA0LDIxMzUzLDIxNDMwLDIyNzk0LDIzNDI0LDI0MDI3LDEyMDgzLDI0MTkxLDI0MzA4LDI0NDAwLDI0NDE3LDI1OTA4LDI2MDgwLDMwMDk4LDMwMzI2LDM2Nzg5LDM4NTgyLDE2OCw3MTAsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsNjUzMzksNjUzNDEsMTAwNDUsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODY3OSw4NjMyLDg2MzMsMTI3NTEsMTMxMjc2LDIwMDU4LDEzMTIxMCwyMDk5NCwxNzU1Myw0MDg4MCwyMDg3Miw0MDg4MSwxNjEyODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsMTI0NDMsMTI0NDQsMTE5MDQsMTE5MDgsMTE5MTAsMTE5MTEsMTE5MTIsMTE5MTQsMTE5MTYsMTE5MTcsMTE5MjUsMTE5MzIsMTE5MzMsMTE5NDEsMTE5NDMsMTE5NDYsMTE5NDgsMTE5NTAsMTE5NTgsMTE5NjQsMTE5NjYsMTE5NzQsMTE5NzgsMTE5ODAsMTE5ODEsMTE5ODMsMTE5OTAsMTE5OTEsMTE5OTgsMTIwMDMsbnVsbCxudWxsLG51bGwsNjQzLDU5Miw2MDMsNTk2LDYyOSwzMzksMjQ4LDMzMSw2NTAsNjE4LDIwMDM0LDIwMDYwLDIwOTgxLDIxMjc0LDIxMzc4LDE5OTc1LDE5OTgwLDIwMDM5LDIwMTA5LDIyMjMxLDY0MDEyLDIzNjYyLDI0NDM1LDE5OTgzLDIwODcxLDE5OTgyLDIwMDE0LDIwMTE1LDIwMTYyLDIwMTY5LDIwMTY4LDIwODg4LDIxMjQ0LDIxMzU2LDIxNDMzLDIyMzA0LDIyNzg3LDIyODI4LDIzNTY4LDI0MDYzLDI2MDgxLDI3NTcxLDI3NTk2LDI3NjY4LDI5MjQ3LDIwMDE3LDIwMDI4LDIwMjAwLDIwMTg4LDIwMjAxLDIwMTkzLDIwMTg5LDIwMTg2LDIxMDA0LDIxMjc2LDIxMzI0LDIyMzA2LDIyMzA3LDIyODA3LDIyODMxLDIzNDI1LDIzNDI4LDIzNTcwLDIzNjExLDIzNjY4LDIzNjY3LDI0MDY4LDI0MTkyLDI0MTk0LDI0NTIxLDI1MDk3LDI1MTY4LDI3NjY5LDI3NzAyLDI3NzE1LDI3NzExLDI3NzA3LDI5MzU4LDI5MzYwLDI5NTc4LDMxMTYwLDMyOTA2LDM4NDMwLDIwMjM4LDIwMjQ4LDIwMjY4LDIwMjEzLDIwMjQ0LDIwMjA5LDIwMjI0LDIwMjE1LDIwMjMyLDIwMjUzLDIwMjI2LDIwMjI5LDIwMjU4LDIwMjQzLDIwMjI4LDIwMjEyLDIwMjQyLDIwOTEzLDIxMDExLDIxMDAxLDIxMDA4LDIxMTU4LDIxMjgyLDIxMjc5LDIxMzI1LDIxMzg2LDIxNTExLDIyMjQxLDIyMjM5LDIyMzE4LDIyMzE0LDIyMzI0LDIyODQ0LDIyOTEyLDIyOTA4LDIyOTE3LDIyOTA3LDIyOTEwLDIyOTAzLDIyOTExLDIzMzgyLDIzNTczLDIzNTg5LDIzNjc2LDIzNjc0LDIzNjc1LDIzNjc4LDI0MDMxLDI0MTgxLDI0MTk2LDI0MzIyLDI0MzQ2LDI0NDM2LDI0NTMzLDI0NTMyLDI0NTI3LDI1MTgwLDI1MTgyLDI1MTg4LDI1MTg1LDI1MTkwLDI1MTg2LDI1MTc3LDI1MTg0LDI1MTc4LDI1MTg5LDI2MDk1LDI2MDk0LDI2NDMwLDI2NDI1LDI2NDI0LDI2NDI3LDI2NDI2LDI2NDMxLDI2NDI4LDI2NDE5LDI3NjcyLDI3NzE4LDI3NzMwLDI3NzQwLDI3NzI3LDI3NzIyLDI3NzMyLDI3NzIzLDI3NzI0LDI4Nzg1LDI5Mjc4LDI5MzY0LDI5MzY1LDI5NTgyLDI5OTk0LDMwMzM1LDMxMzQ5LDMyNTkzLDMzNDAwLDMzNDA0LDMzNDA4LDMzNDA1LDMzNDA3LDM0MzgxLDM1MTk4LDM3MDE3LDM3MDE1LDM3MDE2LDM3MDE5LDM3MDEyLDM4NDM0LDM4NDM2LDM4NDMyLDM4NDM1LDIwMzEwLDIwMjgzLDIwMzIyLDIwMjk3LDIwMzA3LDIwMzI0LDIwMjg2LDIwMzI3LDIwMzA2LDIwMzE5LDIwMjg5LDIwMzEyLDIwMjY5LDIwMjc1LDIwMjg3LDIwMzIxLDIwODc5LDIwOTIxLDIxMDIwLDIxMDIyLDIxMDI1LDIxMTY1LDIxMTY2LDIxMjU3LDIxMzQ3LDIxMzYyLDIxMzkwLDIxMzkxLDIxNTUyLDIxNTU5LDIxNTQ2LDIxNTg4LDIxNTczLDIxNTI5LDIxNTMyLDIxNTQxLDIxNTI4LDIxNTY1LDIxNTgzLDIxNTY5LDIxNTQ0LDIxNTQwLDIxNTc1LDIyMjU0LDIyMjQ3LDIyMjQ1LDIyMzM3LDIyMzQxLDIyMzQ4LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyNzkwLDIyODQ4LDIyOTUwLDIyOTM2LDIyOTQ0LDIyOTM1LDIyOTI2LDIyOTQ2LDIyOTI4LDIyOTI3LDIyOTUxLDIyOTQ1LDIzNDM4LDIzNDQyLDIzNTkyLDIzNTk0LDIzNjkzLDIzNjk1LDIzNjg4LDIzNjkxLDIzNjg5LDIzNjk4LDIzNjkwLDIzNjg2LDIzNjk5LDIzNzAxLDI0MDMyLDI0MDc0LDI0MDc4LDI0MjAzLDI0MjAxLDI0MjA0LDI0MjAwLDI0MjA1LDI0MzI1LDI0MzQ5LDI0NDQwLDI0NDM4LDI0NTMwLDI0NTI5LDI0NTI4LDI0NTU3LDI0NTUyLDI0NTU4LDI0NTYzLDI0NTQ1LDI0NTQ4LDI0NTQ3LDI0NTcwLDI0NTU5LDI0NTY3LDI0NTcxLDI0NTc2LDI0NTY0LDI1MTQ2LDI1MjE5LDI1MjI4LDI1MjMwLDI1MjMxLDI1MjM2LDI1MjIzLDI1MjAxLDI1MjExLDI1MjEwLDI1MjAwLDI1MjE3LDI1MjI0LDI1MjA3LDI1MjEzLDI1MjAyLDI1MjA0LDI1OTExLDI2MDk2LDI2MTAwLDI2MDk5LDI2MDk4LDI2MTAxLDI2NDM3LDI2NDM5LDI2NDU3LDI2NDUzLDI2NDQ0LDI2NDQwLDI2NDYxLDI2NDQ1LDI2NDU4LDI2NDQzLDI3NjAwLDI3NjczLDI3Njc0LDI3NzY4LDI3NzUxLDI3NzU1LDI3NzgwLDI3Nzg3LDI3NzkxLDI3NzYxLDI3NzU5LDI3NzUzLDI3ODAyLDI3NzU3LDI3NzgzLDI3Nzk3LDI3ODA0LDI3NzUwLDI3NzYzLDI3NzQ5LDI3NzcxLDI3NzkwLDI4Nzg4LDI4Nzk0LDI5MjgzLDI5Mzc1LDI5MzczLDI5Mzc5LDI5MzgyLDI5Mzc3LDI5MzcwLDI5MzgxLDI5NTg5LDI5NTkxLDI5NTg3LDI5NTg4LDI5NTg2LDMwMDEwLDMwMDA5LDMwMTAwLDMwMTAxLDMwMzM3LDMxMDM3LDMyODIwLDMyOTE3LDMyOTIxLDMyOTEyLDMyOTE0LDMyOTI0LDMzNDI0LDMzNDIzLDMzNDEzLDMzNDIyLDMzNDI1LDMzNDI3LDMzNDE4LDMzNDExLDMzNDEyLDM1OTYwLDM2ODA5LDM2Nzk5LDM3MDIzLDM3MDI1LDM3MDI5LDM3MDIyLDM3MDMxLDM3MDI0LDM4NDQ4LDM4NDQwLDM4NDQ3LDM4NDQ1LDIwMDE5LDIwMzc2LDIwMzQ4LDIwMzU3LDIwMzQ5LDIwMzUyLDIwMzU5LDIwMzQyLDIwMzQwLDIwMzYxLDIwMzU2LDIwMzQzLDIwMzAwLDIwMzc1LDIwMzMwLDIwMzc4LDIwMzQ1LDIwMzUzLDIwMzQ0LDIwMzY4LDIwMzgwLDIwMzcyLDIwMzgyLDIwMzcwLDIwMzU0LDIwMzczLDIwMzMxLDIwMzM0LDIwODk0LDIwOTI0LDIwOTI2LDIxMDQ1LDIxMDQyLDIxMDQzLDIxMDYyLDIxMDQxLDIxMTgwLDIxMjU4LDIxMjU5LDIxMzA4LDIxMzk0LDIxMzk2LDIxNjM5LDIxNjMxLDIxNjMzLDIxNjQ5LDIxNjM0LDIxNjQwLDIxNjExLDIxNjI2LDIxNjMwLDIxNjA1LDIxNjEyLDIxNjIwLDIxNjA2LDIxNjQ1LDIxNjE1LDIxNjAxLDIxNjAwLDIxNjU2LDIxNjAzLDIxNjA3LDIxNjA0LDIyMjYzLDIyMjY1LDIyMzgzLDIyMzg2LDIyMzgxLDIyMzc5LDIyMzg1LDIyMzg0LDIyMzkwLDIyNDAwLDIyMzg5LDIyMzk1LDIyMzg3LDIyMzg4LDIyMzcwLDIyMzc2LDIyMzk3LDIyNzk2LDIyODUzLDIyOTY1LDIyOTcwLDIyOTkxLDIyOTkwLDIyOTYyLDIyOTg4LDIyOTc3LDIyOTY2LDIyOTcyLDIyOTc5LDIyOTk4LDIyOTYxLDIyOTczLDIyOTc2LDIyOTg0LDIyOTY0LDIyOTgzLDIzMzk0LDIzMzk3LDIzNDQzLDIzNDQ1LDIzNjIwLDIzNjIzLDIzNzI2LDIzNzE2LDIzNzEyLDIzNzMzLDIzNzI3LDIzNzIwLDIzNzI0LDIzNzExLDIzNzE1LDIzNzI1LDIzNzE0LDIzNzIyLDIzNzE5LDIzNzA5LDIzNzE3LDIzNzM0LDIzNzI4LDIzNzE4LDI0MDg3LDI0MDg0LDI0MDg5LDI0MzYwLDI0MzU0LDI0MzU1LDI0MzU2LDI0NDA0LDI0NDUwLDI0NDQ2LDI0NDQ1LDI0NTQyLDI0NTQ5LDI0NjIxLDI0NjE0LDI0NjAxLDI0NjI2LDI0NTg3LDI0NjI4LDI0NTg2LDI0NTk5LDI0NjI3LDI0NjAyLDI0NjA2LDI0NjIwLDI0NjEwLDI0NTg5LDI0NTkyLDI0NjIyLDI0NTk1LDI0NTkzLDI0NTg4LDI0NTg1LDI0NjA0LDI1MTA4LDI1MTQ5LDI1MjYxLDI1MjY4LDI1Mjk3LDI1Mjc4LDI1MjU4LDI1MjcwLDI1MjkwLDI1MjYyLDI1MjY3LDI1MjYzLDI1Mjc1LDI1MjU3LDI1MjY0LDI1MjcyLDI1OTE3LDI2MDI0LDI2MDQzLDI2MTIxLDI2MTA4LDI2MTE2LDI2MTMwLDI2MTIwLDI2MTA3LDI2MTE1LDI2MTIzLDI2MTI1LDI2MTE3LDI2MTA5LDI2MTI5LDI2MTI4LDI2MzU4LDI2Mzc4LDI2NTAxLDI2NDc2LDI2NTEwLDI2NTE0LDI2NDg2LDI2NDkxLDI2NTIwLDI2NTAyLDI2NTAwLDI2NDg0LDI2NTA5LDI2NTA4LDI2NDkwLDI2NTI3LDI2NTEzLDI2NTIxLDI2NDk5LDI2NDkzLDI2NDk3LDI2NDg4LDI2NDg5LDI2NTE2LDI3NDI5LDI3NTIwLDI3NTE4LDI3NjE0LDI3Njc3LDI3Nzk1LDI3ODg0LDI3ODgzLDI3ODg2LDI3ODY1LDI3ODMwLDI3ODYwLDI3ODIxLDI3ODc5LDI3ODMxLDI3ODU2LDI3ODQyLDI3ODM0LDI3ODQzLDI3ODQ2LDI3ODg1LDI3ODkwLDI3ODU4LDI3ODY5LDI3ODI4LDI3Nzg2LDI3ODA1LDI3Nzc2LDI3ODcwLDI3ODQwLDI3OTUyLDI3ODUzLDI3ODQ3LDI3ODI0LDI3ODk3LDI3ODU1LDI3ODgxLDI3ODU3LDI4ODIwLDI4ODI0LDI4ODA1LDI4ODE5LDI4ODA2LDI4ODA0LDI4ODE3LDI4ODIyLDI4ODAyLDI4ODI2LDI4ODAzLDI5MjkwLDI5Mzk4LDI5Mzg3LDI5NDAwLDI5Mzg1LDI5NDA0LDI5Mzk0LDI5Mzk2LDI5NDAyLDI5Mzg4LDI5MzkzLDI5NjA0LDI5NjAxLDI5NjEzLDI5NjA2LDI5NjAyLDI5NjAwLDI5NjEyLDI5NTk3LDI5OTE3LDI5OTI4LDMwMDE1LDMwMDE2LDMwMDE0LDMwMDkyLDMwMTA0LDMwMzgzLDMwNDUxLDMwNDQ5LDMwNDQ4LDMwNDUzLDMwNzEyLDMwNzE2LDMwNzEzLDMwNzE1LDMwNzE0LDMwNzExLDMxMDQyLDMxMDM5LDMxMTczLDMxMzUyLDMxMzU1LDMxNDgzLDMxODYxLDMxOTk3LDMyODIxLDMyOTExLDMyOTQyLDMyOTMxLDMyOTUyLDMyOTQ5LDMyOTQxLDMzMzEyLDMzNDQwLDMzNDcyLDMzNDUxLDMzNDM0LDMzNDMyLDMzNDM1LDMzNDYxLDMzNDQ3LDMzNDU0LDMzNDY4LDMzNDM4LDMzNDY2LDMzNDYwLDMzNDQ4LDMzNDQxLDMzNDQ5LDMzNDc0LDMzNDQ0LDMzNDc1LDMzNDYyLDMzNDQyLDM0NDE2LDM0NDE1LDM0NDEzLDM0NDE0LDM1OTI2LDM2ODE4LDM2ODExLDM2ODE5LDM2ODEzLDM2ODIyLDM2ODIxLDM2ODIzLDM3MDQyLDM3MDQ0LDM3MDM5LDM3MDQzLDM3MDQwLDM4NDU3LDM4NDYxLDM4NDYwLDM4NDU4LDM4NDY3LDIwNDI5LDIwNDIxLDIwNDM1LDIwNDAyLDIwNDI1LDIwNDI3LDIwNDE3LDIwNDM2LDIwNDQ0LDIwNDQxLDIwNDExLDIwNDAzLDIwNDQzLDIwNDIzLDIwNDM4LDIwNDEwLDIwNDE2LDIwNDA5LDIwNDYwLDIxMDYwLDIxMDY1LDIxMTg0LDIxMTg2LDIxMzA5LDIxMzcyLDIxMzk5LDIxMzk4LDIxNDAxLDIxNDAwLDIxNjkwLDIxNjY1LDIxNjc3LDIxNjY5LDIxNzExLDIxNjk5LDMzNTQ5LDIxNjg3LDIxNjc4LDIxNzE4LDIxNjg2LDIxNzAxLDIxNzAyLDIxNjY0LDIxNjE2LDIxNjkyLDIxNjY2LDIxNjk0LDIxNjE4LDIxNzI2LDIxNjgwLDIyNDUzLDIyNDMwLDIyNDMxLDIyNDM2LDIyNDEyLDIyNDIzLDIyNDI5LDIyNDI3LDIyNDIwLDIyNDI0LDIyNDE1LDIyNDI1LDIyNDM3LDIyNDI2LDIyNDIxLDIyNzcyLDIyNzk3LDIyODY3LDIzMDA5LDIzMDA2LDIzMDIyLDIzMDQwLDIzMDI1LDIzMDA1LDIzMDM0LDIzMDM3LDIzMDM2LDIzMDMwLDIzMDEyLDIzMDI2LDIzMDMxLDIzMDAzLDIzMDE3LDIzMDI3LDIzMDI5LDIzMDA4LDIzMDM4LDIzMDI4LDIzMDIxLDIzNDY0LDIzNjI4LDIzNzYwLDIzNzY4LDIzNzU2LDIzNzY3LDIzNzU1LDIzNzcxLDIzNzc0LDIzNzcwLDIzNzUzLDIzNzUxLDIzNzU0LDIzNzY2LDIzNzYzLDIzNzY0LDIzNzU5LDIzNzUyLDIzNzUwLDIzNzU4LDIzNzc1LDIzODAwLDI0MDU3LDI0MDk3LDI0MDk4LDI0MDk5LDI0MDk2LDI0MTAwLDI0MjQwLDI0MjI4LDI0MjI2LDI0MjE5LDI0MjI3LDI0MjI5LDI0MzI3LDI0MzY2LDI0NDA2LDI0NDU0LDI0NjMxLDI0NjMzLDI0NjYwLDI0NjkwLDI0NjcwLDI0NjQ1LDI0NjU5LDI0NjQ3LDI0NjQ5LDI0NjY3LDI0NjUyLDI0NjQwLDI0NjQyLDI0NjcxLDI0NjEyLDI0NjQ0LDI0NjY0LDI0Njc4LDI0Njg2LDI1MTU0LDI1MTU1LDI1Mjk1LDI1MzU3LDI1MzU1LDI1MzMzLDI1MzU4LDI1MzQ3LDI1MzIzLDI1MzM3LDI1MzU5LDI1MzU2LDI1MzM2LDI1MzM0LDI1MzQ0LDI1MzYzLDI1MzY0LDI1MzM4LDI1MzY1LDI1MzM5LDI1MzI4LDI1OTIxLDI1OTIzLDI2MDI2LDI2MDQ3LDI2MTY2LDI2MTQ1LDI2MTYyLDI2MTY1LDI2MTQwLDI2MTUwLDI2MTQ2LDI2MTYzLDI2MTU1LDI2MTcwLDI2MTQxLDI2MTY0LDI2MTY5LDI2MTU4LDI2MzgzLDI2Mzg0LDI2NTYxLDI2NjEwLDI2NTY4LDI2NTU0LDI2NTg4LDI2NTU1LDI2NjE2LDI2NTg0LDI2NTYwLDI2NTUxLDI2NTY1LDI2NjAzLDI2NTk2LDI2NTkxLDI2NTQ5LDI2NTczLDI2NTQ3LDI2NjE1LDI2NjE0LDI2NjA2LDI2NTk1LDI2NTYyLDI2NTUzLDI2NTc0LDI2NTk5LDI2NjA4LDI2NTQ2LDI2NjIwLDI2NTY2LDI2NjA1LDI2NTcyLDI2NTQyLDI2NTk4LDI2NTg3LDI2NjE4LDI2NTY5LDI2NTcwLDI2NTYzLDI2NjAyLDI2NTcxLDI3NDMyLDI3NTIyLDI3NTI0LDI3NTc0LDI3NjA2LDI3NjA4LDI3NjE2LDI3NjgwLDI3NjgxLDI3OTQ0LDI3OTU2LDI3OTQ5LDI3OTM1LDI3OTY0LDI3OTY3LDI3OTIyLDI3OTE0LDI3ODY2LDI3OTU1LDI3OTA4LDI3OTI5LDI3OTYyLDI3OTMwLDI3OTIxLDI3OTA0LDI3OTMzLDI3OTcwLDI3OTA1LDI3OTI4LDI3OTU5LDI3OTA3LDI3OTE5LDI3OTY4LDI3OTExLDI3OTM2LDI3OTQ4LDI3OTEyLDI3OTM4LDI3OTEzLDI3OTIwLDI4ODU1LDI4ODMxLDI4ODYyLDI4ODQ5LDI4ODQ4LDI4ODMzLDI4ODUyLDI4ODUzLDI4ODQxLDI5MjQ5LDI5MjU3LDI5MjU4LDI5MjkyLDI5Mjk2LDI5Mjk5LDI5Mjk0LDI5Mzg2LDI5NDEyLDI5NDE2LDI5NDE5LDI5NDA3LDI5NDE4LDI5NDE0LDI5NDExLDI5NTczLDI5NjQ0LDI5NjM0LDI5NjQwLDI5NjM3LDI5NjI1LDI5NjIyLDI5NjIxLDI5NjIwLDI5Njc1LDI5NjMxLDI5NjM5LDI5NjMwLDI5NjM1LDI5NjM4LDI5NjI0LDI5NjQzLDI5OTMyLDI5OTM0LDI5OTk4LDMwMDIzLDMwMDI0LDMwMTE5LDMwMTIyLDMwMzI5LDMwNDA0LDMwNDcyLDMwNDY3LDMwNDY4LDMwNDY5LDMwNDc0LDMwNDU1LDMwNDU5LDMwNDU4LDMwNjk1LDMwNjk2LDMwNzI2LDMwNzM3LDMwNzM4LDMwNzI1LDMwNzM2LDMwNzM1LDMwNzM0LDMwNzI5LDMwNzIzLDMwNzM5LDMxMDUwLDMxMDUyLDMxMDUxLDMxMDQ1LDMxMDQ0LDMxMTg5LDMxMTgxLDMxMTgzLDMxMTkwLDMxMTgyLDMxMzYwLDMxMzU4LDMxNDQxLDMxNDg4LDMxNDg5LDMxODY2LDMxODY0LDMxODY1LDMxODcxLDMxODcyLDMxODczLDMyMDAzLDMyMDA4LDMyMDAxLDMyNjAwLDMyNjU3LDMyNjUzLDMyNzAyLDMyNzc1LDMyNzgyLDMyNzgzLDMyNzg4LDMyODIzLDMyOTg0LDMyOTY3LDMyOTkyLDMyOTc3LDMyOTY4LDMyOTYyLDMyOTc2LDMyOTY1LDMyOTk1LDMyOTg1LDMyOTg4LDMyOTcwLDMyOTgxLDMyOTY5LDMyOTc1LDMyOTgzLDMyOTk4LDMyOTczLDMzMjc5LDMzMzEzLDMzNDI4LDMzNDk3LDMzNTM0LDMzNTI5LDMzNTQzLDMzNTEyLDMzNTM2LDMzNDkzLDMzNTk0LDMzNTE1LDMzNDk0LDMzNTI0LDMzNTE2LDMzNTA1LDMzNTIyLDMzNTI1LDMzNTQ4LDMzNTMxLDMzNTI2LDMzNTIwLDMzNTE0LDMzNTA4LDMzNTA0LDMzNTMwLDMzNTIzLDMzNTE3LDM0NDIzLDM0NDIwLDM0NDI4LDM0NDE5LDM0ODgxLDM0ODk0LDM0OTE5LDM0OTIyLDM0OTIxLDM1MjgzLDM1MzMyLDM1MzM1LDM2MjEwLDM2ODM1LDM2ODMzLDM2ODQ2LDM2ODMyLDM3MTA1LDM3MDUzLDM3MDU1LDM3MDc3LDM3MDYxLDM3MDU0LDM3MDYzLDM3MDY3LDM3MDY0LDM3MzMyLDM3MzMxLDM4NDg0LDM4NDc5LDM4NDgxLDM4NDgzLDM4NDc0LDM4NDc4LDIwNTEwLDIwNDg1LDIwNDg3LDIwNDk5LDIwNTE0LDIwNTI4LDIwNTA3LDIwNDY5LDIwNDY4LDIwNTMxLDIwNTM1LDIwNTI0LDIwNDcwLDIwNDcxLDIwNTAzLDIwNTA4LDIwNTEyLDIwNTE5LDIwNTMzLDIwNTI3LDIwNTI5LDIwNDk0LDIwODI2LDIwODg0LDIwODgzLDIwOTM4LDIwOTMyLDIwOTMzLDIwOTM2LDIwOTQyLDIxMDg5LDIxMDgyLDIxMDc0LDIxMDg2LDIxMDg3LDIxMDc3LDIxMDkwLDIxMTk3LDIxMjYyLDIxNDA2LDIxNzk4LDIxNzMwLDIxNzgzLDIxNzc4LDIxNzM1LDIxNzQ3LDIxNzMyLDIxNzg2LDIxNzU5LDIxNzY0LDIxNzY4LDIxNzM5LDIxNzc3LDIxNzY1LDIxNzQ1LDIxNzcwLDIxNzU1LDIxNzUxLDIxNzUyLDIxNzI4LDIxNzc0LDIxNzYzLDIxNzcxLDIyMjczLDIyMjc0LDIyNDc2LDIyNTc4LDIyNDg1LDIyNDgyLDIyNDU4LDIyNDcwLDIyNDYxLDIyNDYwLDIyNDU2LDIyNDU0LDIyNDYzLDIyNDcxLDIyNDgwLDIyNDU3LDIyNDY1LDIyNzk4LDIyODU4LDIzMDY1LDIzMDYyLDIzMDg1LDIzMDg2LDIzMDYxLDIzMDU1LDIzMDYzLDIzMDUwLDIzMDcwLDIzMDkxLDIzNDA0LDIzNDYzLDIzNDY5LDIzNDY4LDIzNTU1LDIzNjM4LDIzNjM2LDIzNzg4LDIzODA3LDIzNzkwLDIzNzkzLDIzNzk5LDIzODA4LDIzODAxLDI0MTA1LDI0MTA0LDI0MjMyLDI0MjM4LDI0MjM0LDI0MjM2LDI0MzcxLDI0MzY4LDI0NDIzLDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NzM4LDI0NzEyLDI0NzA0LDI0NzIyLDI0NzA1LDI0NzMzLDI0NzA3LDI0NzI1LDI0NzMxLDI0NzI3LDI0NzExLDI0NzMyLDI0NzE4LDI1MTEzLDI1MTU4LDI1MzMwLDI1MzYwLDI1NDMwLDI1Mzg4LDI1NDEyLDI1NDEzLDI1Mzk4LDI1NDExLDI1NTcyLDI1NDAxLDI1NDE5LDI1NDE4LDI1NDA0LDI1Mzg1LDI1NDA5LDI1Mzk2LDI1NDMyLDI1NDI4LDI1NDMzLDI1Mzg5LDI1NDE1LDI1Mzk1LDI1NDM0LDI1NDI1LDI1NDAwLDI1NDMxLDI1NDA4LDI1NDE2LDI1OTMwLDI1OTI2LDI2MDU0LDI2MDUxLDI2MDUyLDI2MDUwLDI2MTg2LDI2MjA3LDI2MTgzLDI2MTkzLDI2Mzg2LDI2Mzg3LDI2NjU1LDI2NjUwLDI2Njk3LDI2Njc0LDI2Njc1LDI2NjgzLDI2Njk5LDI2NzAzLDI2NjQ2LDI2NjczLDI2NjUyLDI2Njc3LDI2NjY3LDI2NjY5LDI2NjcxLDI2NzAyLDI2NjkyLDI2Njc2LDI2NjUzLDI2NjQyLDI2NjQ0LDI2NjYyLDI2NjY0LDI2NjcwLDI2NzAxLDI2NjgyLDI2NjYxLDI2NjU2LDI3NDM2LDI3NDM5LDI3NDM3LDI3NDQxLDI3NDQ0LDI3NTAxLDMyODk4LDI3NTI4LDI3NjIyLDI3NjIwLDI3NjI0LDI3NjE5LDI3NjE4LDI3NjIzLDI3Njg1LDI4MDI2LDI4MDAzLDI4MDA0LDI4MDIyLDI3OTE3LDI4MDAxLDI4MDUwLDI3OTkyLDI4MDAyLDI4MDEzLDI4MDE1LDI4MDQ5LDI4MDQ1LDI4MTQzLDI4MDMxLDI4MDM4LDI3OTk4LDI4MDA3LDI4MDAwLDI4MDU1LDI4MDE2LDI4MDI4LDI3OTk5LDI4MDM0LDI4MDU2LDI3OTUxLDI4MDA4LDI4MDQzLDI4MDMwLDI4MDMyLDI4MDM2LDI3OTI2LDI4MDM1LDI4MDI3LDI4MDI5LDI4MDIxLDI4MDQ4LDI4ODkyLDI4ODgzLDI4ODgxLDI4ODkzLDI4ODc1LDMyNTY5LDI4ODk4LDI4ODg3LDI4ODgyLDI4ODk0LDI4ODk2LDI4ODg0LDI4ODc3LDI4ODY5LDI4ODcwLDI4ODcxLDI4ODkwLDI4ODc4LDI4ODk3LDI5MjUwLDI5MzA0LDI5MzAzLDI5MzAyLDI5NDQwLDI5NDM0LDI5NDI4LDI5NDM4LDI5NDMwLDI5NDI3LDI5NDM1LDI5NDQxLDI5NjUxLDI5NjU3LDI5NjY5LDI5NjU0LDI5NjI4LDI5NjcxLDI5NjY3LDI5NjczLDI5NjYwLDI5NjUwLDI5NjU5LDI5NjUyLDI5NjYxLDI5NjU4LDI5NjU1LDI5NjU2LDI5NjcyLDI5OTE4LDI5OTE5LDI5OTQwLDI5OTQxLDI5OTg1LDMwMDQzLDMwMDQ3LDMwMTI4LDMwMTQ1LDMwMTM5LDMwMTQ4LDMwMTQ0LDMwMTQzLDMwMTM0LDMwMTM4LDMwMzQ2LDMwNDA5LDMwNDkzLDMwNDkxLDMwNDgwLDMwNDgzLDMwNDgyLDMwNDk5LDMwNDgxLDMwNDg1LDMwNDg5LDMwNDkwLDMwNDk4LDMwNTAzLDMwNzU1LDMwNzY0LDMwNzU0LDMwNzczLDMwNzY3LDMwNzYwLDMwNzY2LDMwNzYzLDMwNzUzLDMwNzYxLDMwNzcxLDMwNzYyLDMwNzY5LDMxMDYwLDMxMDY3LDMxMDU1LDMxMDY4LDMxMDU5LDMxMDU4LDMxMDU3LDMxMjExLDMxMjEyLDMxMjAwLDMxMjE0LDMxMjEzLDMxMjEwLDMxMTk2LDMxMTk4LDMxMTk3LDMxMzY2LDMxMzY5LDMxMzY1LDMxMzcxLDMxMzcyLDMxMzcwLDMxMzY3LDMxNDQ4LDMxNTA0LDMxNDkyLDMxNTA3LDMxNDkzLDMxNTAzLDMxNDk2LDMxNDk4LDMxNTAyLDMxNDk3LDMxNTA2LDMxODc2LDMxODg5LDMxODgyLDMxODg0LDMxODgwLDMxODg1LDMxODc3LDMyMDMwLDMyMDI5LDMyMDE3LDMyMDE0LDMyMDI0LDMyMDIyLDMyMDE5LDMyMDMxLDMyMDE4LDMyMDE1LDMyMDEyLDMyNjA0LDMyNjA5LDMyNjA2LDMyNjA4LDMyNjA1LDMyNjAzLDMyNjYyLDMyNjU4LDMyNzA3LDMyNzA2LDMyNzA0LDMyNzkwLDMyODMwLDMyODI1LDMzMDE4LDMzMDEwLDMzMDE3LDMzMDEzLDMzMDI1LDMzMDE5LDMzMDI0LDMzMjgxLDMzMzI3LDMzMzE3LDMzNTg3LDMzNTgxLDMzNjA0LDMzNTYxLDMzNjE3LDMzNTczLDMzNjIyLDMzNTk5LDMzNjAxLDMzNTc0LDMzNTY0LDMzNTcwLDMzNjAyLDMzNjE0LDMzNTYzLDMzNTc4LDMzNTQ0LDMzNTk2LDMzNjEzLDMzNTU4LDMzNTcyLDMzNTY4LDMzNTkxLDMzNTgzLDMzNTc3LDMzNjA3LDMzNjA1LDMzNjEyLDMzNjE5LDMzNTY2LDMzNTgwLDMzNjExLDMzNTc1LDMzNjA4LDM0Mzg3LDM0Mzg2LDM0NDY2LDM0NDcyLDM0NDU0LDM0NDQ1LDM0NDQ5LDM0NDYyLDM0NDM5LDM0NDU1LDM0NDM4LDM0NDQzLDM0NDU4LDM0NDM3LDM0NDY5LDM0NDU3LDM0NDY1LDM0NDcxLDM0NDUzLDM0NDU2LDM0NDQ2LDM0NDYxLDM0NDQ4LDM0NDUyLDM0ODgzLDM0ODg0LDM0OTI1LDM0OTMzLDM0OTM0LDM0OTMwLDM0OTQ0LDM0OTI5LDM0OTQzLDM0OTI3LDM0OTQ3LDM0OTQyLDM0OTMyLDM0OTQwLDM1MzQ2LDM1OTExLDM1OTI3LDM1OTYzLDM2MDA0LDM2MDAzLDM2MjE0LDM2MjE2LDM2Mjc3LDM2Mjc5LDM2Mjc4LDM2NTYxLDM2NTYzLDM2ODYyLDM2ODUzLDM2ODY2LDM2ODYzLDM2ODU5LDM2ODY4LDM2ODYwLDM2ODU0LDM3MDc4LDM3MDg4LDM3MDgxLDM3MDgyLDM3MDkxLDM3MDg3LDM3MDkzLDM3MDgwLDM3MDgzLDM3MDc5LDM3MDg0LDM3MDkyLDM3MjAwLDM3MTk4LDM3MTk5LDM3MzMzLDM3MzQ2LDM3MzM4LDM4NDkyLDM4NDk1LDM4NTg4LDM5MTM5LDM5NjQ3LDM5NzI3LDIwMDk1LDIwNTkyLDIwNTg2LDIwNTc3LDIwNTc0LDIwNTc2LDIwNTYzLDIwNTU1LDIwNTczLDIwNTk0LDIwNTUyLDIwNTU3LDIwNTQ1LDIwNTcxLDIwNTU0LDIwNTc4LDIwNTAxLDIwNTQ5LDIwNTc1LDIwNTg1LDIwNTg3LDIwNTc5LDIwNTgwLDIwNTUwLDIwNTQ0LDIwNTkwLDIwNTk1LDIwNTY3LDIwNTYxLDIwOTQ0LDIxMDk5LDIxMTAxLDIxMTAwLDIxMTAyLDIxMjA2LDIxMjAzLDIxMjkzLDIxNDA0LDIxODc3LDIxODc4LDIxODIwLDIxODM3LDIxODQwLDIxODEyLDIxODAyLDIxODQxLDIxODU4LDIxODE0LDIxODEzLDIxODA4LDIxODQyLDIxODI5LDIxNzcyLDIxODEwLDIxODYxLDIxODM4LDIxODE3LDIxODMyLDIxODA1LDIxODE5LDIxODI0LDIxODM1LDIyMjgyLDIyMjc5LDIyNTIzLDIyNTQ4LDIyNDk4LDIyNTE4LDIyNDkyLDIyNTE2LDIyNTI4LDIyNTA5LDIyNTI1LDIyNTM2LDIyNTIwLDIyNTM5LDIyNTE1LDIyNDc5LDIyNTM1LDIyNTEwLDIyNDk5LDIyNTE0LDIyNTAxLDIyNTA4LDIyNDk3LDIyNTQyLDIyNTI0LDIyNTQ0LDIyNTAzLDIyNTI5LDIyNTQwLDIyNTEzLDIyNTA1LDIyNTEyLDIyNTQxLDIyNTMyLDIyODc2LDIzMTM2LDIzMTI4LDIzMTI1LDIzMTQzLDIzMTM0LDIzMDk2LDIzMDkzLDIzMTQ5LDIzMTIwLDIzMTM1LDIzMTQxLDIzMTQ4LDIzMTIzLDIzMTQwLDIzMTI3LDIzMTA3LDIzMTMzLDIzMTIyLDIzMTA4LDIzMTMxLDIzMTEyLDIzMTgyLDIzMTAyLDIzMTE3LDIzMDk3LDIzMTE2LDIzMTUyLDIzMTQ1LDIzMTExLDIzMTIxLDIzMTI2LDIzMTA2LDIzMTMyLDIzNDEwLDIzNDA2LDIzNDg5LDIzNDg4LDIzNjQxLDIzODM4LDIzODE5LDIzODM3LDIzODM0LDIzODQwLDIzODIwLDIzODQ4LDIzODIxLDIzODQ2LDIzODQ1LDIzODIzLDIzODU2LDIzODI2LDIzODQzLDIzODM5LDIzODU0LDI0MTI2LDI0MTE2LDI0MjQxLDI0MjQ0LDI0MjQ5LDI0MjQyLDI0MjQzLDI0Mzc0LDI0Mzc2LDI0NDc1LDI0NDcwLDI0NDc5LDI0NzE0LDI0NzIwLDI0NzEwLDI0NzY2LDI0NzUyLDI0NzYyLDI0Nzg3LDI0Nzg4LDI0NzgzLDI0ODA0LDI0NzkzLDI0Nzk3LDI0Nzc2LDI0NzUzLDI0Nzk1LDI0NzU5LDI0Nzc4LDI0NzY3LDI0NzcxLDI0NzgxLDI0NzY4LDI1Mzk0LDI1NDQ1LDI1NDgyLDI1NDc0LDI1NDY5LDI1NTMzLDI1NTAyLDI1NTE3LDI1NTAxLDI1NDk1LDI1NTE1LDI1NDg2LDI1NDU1LDI1NDc5LDI1NDg4LDI1NDU0LDI1NTE5LDI1NDYxLDI1NTAwLDI1NDUzLDI1NTE4LDI1NDY4LDI1NTA4LDI1NDAzLDI1NTAzLDI1NDY0LDI1NDc3LDI1NDczLDI1NDg5LDI1NDg1LDI1NDU2LDI1OTM5LDI2MDYxLDI2MjEzLDI2MjA5LDI2MjAzLDI2MjAxLDI2MjA0LDI2MjEwLDI2MzkyLDI2NzQ1LDI2NzU5LDI2NzY4LDI2NzgwLDI2NzMzLDI2NzM0LDI2Nzk4LDI2Nzk1LDI2OTY2LDI2NzM1LDI2Nzg3LDI2Nzk2LDI2NzkzLDI2NzQxLDI2NzQwLDI2ODAyLDI2NzY3LDI2NzQzLDI2NzcwLDI2NzQ4LDI2NzMxLDI2NzM4LDI2Nzk0LDI2NzUyLDI2NzM3LDI2NzUwLDI2Nzc5LDI2Nzc0LDI2NzYzLDI2Nzg0LDI2NzYxLDI2Nzg4LDI2NzQ0LDI2NzQ3LDI2NzY5LDI2NzY0LDI2NzYyLDI2NzQ5LDI3NDQ2LDI3NDQzLDI3NDQ3LDI3NDQ4LDI3NTM3LDI3NTM1LDI3NTMzLDI3NTM0LDI3NTMyLDI3NjkwLDI4MDk2LDI4MDc1LDI4MDg0LDI4MDgzLDI4Mjc2LDI4MDc2LDI4MTM3LDI4MTMwLDI4MDg3LDI4MTUwLDI4MTE2LDI4MTYwLDI4MTA0LDI4MTI4LDI4MTI3LDI4MTE4LDI4MDk0LDI4MTMzLDI4MTI0LDI4MTI1LDI4MTIzLDI4MTQ4LDI4MTA2LDI4MDkzLDI4MTQxLDI4MTQ0LDI4MDkwLDI4MTE3LDI4MDk4LDI4MTExLDI4MTA1LDI4MTEyLDI4MTQ2LDI4MTE1LDI4MTU3LDI4MTE5LDI4MTA5LDI4MTMxLDI4MDkxLDI4OTIyLDI4OTQxLDI4OTE5LDI4OTUxLDI4OTE2LDI4OTQwLDI4OTEyLDI4OTMyLDI4OTE1LDI4OTQ0LDI4OTI0LDI4OTI3LDI4OTM0LDI4OTQ3LDI4OTI4LDI4OTIwLDI4OTE4LDI4OTM5LDI4OTMwLDI4OTQyLDI5MzEwLDI5MzA3LDI5MzA4LDI5MzExLDI5NDY5LDI5NDYzLDI5NDQ3LDI5NDU3LDI5NDY0LDI5NDUwLDI5NDQ4LDI5NDM5LDI5NDU1LDI5NDcwLDI5NTc2LDI5Njg2LDI5Njg4LDI5Njg1LDI5NzAwLDI5Njk3LDI5NjkzLDI5NzAzLDI5Njk2LDI5NjkwLDI5NjkyLDI5Njk1LDI5NzA4LDI5NzA3LDI5Njg0LDI5NzA0LDMwMDUyLDMwMDUxLDMwMTU4LDMwMTYyLDMwMTU5LDMwMTU1LDMwMTU2LDMwMTYxLDMwMTYwLDMwMzUxLDMwMzQ1LDMwNDE5LDMwNTIxLDMwNTExLDMwNTA5LDMwNTEzLDMwNTE0LDMwNTE2LDMwNTE1LDMwNTI1LDMwNTAxLDMwNTIzLDMwNTE3LDMwNzkyLDMwODAyLDMwNzkzLDMwNzk3LDMwNzk0LDMwNzk2LDMwNzU4LDMwNzg5LDMwODAwLDMxMDc2LDMxMDc5LDMxMDgxLDMxMDgyLDMxMDc1LDMxMDgzLDMxMDczLDMxMTYzLDMxMjI2LDMxMjI0LDMxMjIyLDMxMjIzLDMxMzc1LDMxMzgwLDMxMzc2LDMxNTQxLDMxNTU5LDMxNTQwLDMxNTI1LDMxNTM2LDMxNTIyLDMxNTI0LDMxNTM5LDMxNTEyLDMxNTMwLDMxNTE3LDMxNTM3LDMxNTMxLDMxNTMzLDMxNTM1LDMxNTM4LDMxNTQ0LDMxNTE0LDMxNTIzLDMxODkyLDMxODk2LDMxODk0LDMxOTA3LDMyMDUzLDMyMDYxLDMyMDU2LDMyMDU0LDMyMDU4LDMyMDY5LDMyMDQ0LDMyMDQxLDMyMDY1LDMyMDcxLDMyMDYyLDMyMDYzLDMyMDc0LDMyMDU5LDMyMDQwLDMyNjExLDMyNjYxLDMyNjY4LDMyNjY5LDMyNjY3LDMyNzE0LDMyNzE1LDMyNzE3LDMyNzIwLDMyNzIxLDMyNzExLDMyNzE5LDMyNzEzLDMyNzk5LDMyNzk4LDMyNzk1LDMyODM5LDMyODM1LDMyODQwLDMzMDQ4LDMzMDYxLDMzMDQ5LDMzMDUxLDMzMDY5LDMzMDU1LDMzMDY4LDMzMDU0LDMzMDU3LDMzMDQ1LDMzMDYzLDMzMDUzLDMzMDU4LDMzMjk3LDMzMzM2LDMzMzMxLDMzMzM4LDMzMzMyLDMzMzMwLDMzMzk2LDMzNjgwLDMzNjk5LDMzNzA0LDMzNjc3LDMzNjU4LDMzNjUxLDMzNzAwLDMzNjUyLDMzNjc5LDMzNjY1LDMzNjg1LDMzNjg5LDMzNjUzLDMzNjg0LDMzNzA1LDMzNjYxLDMzNjY3LDMzNjc2LDMzNjkzLDMzNjkxLDMzNzA2LDMzNjc1LDMzNjYyLDMzNzAxLDMzNzExLDMzNjcyLDMzNjg3LDMzNzEyLDMzNjYzLDMzNzAyLDMzNjcxLDMzNzEwLDMzNjU0LDMzNjkwLDM0MzkzLDM0MzkwLDM0NDk1LDM0NDg3LDM0NDk4LDM0NDk3LDM0NTAxLDM0NDkwLDM0NDgwLDM0NTA0LDM0NDg5LDM0NDgzLDM0NDg4LDM0NTA4LDM0NDg0LDM0NDkxLDM0NDkyLDM0NDk5LDM0NDkzLDM0NDk0LDM0ODk4LDM0OTUzLDM0OTY1LDM0OTg0LDM0OTc4LDM0OTg2LDM0OTcwLDM0OTYxLDM0OTc3LDM0OTc1LDM0OTY4LDM0OTgzLDM0OTY5LDM0OTcxLDM0OTY3LDM0OTgwLDM0OTg4LDM0OTU2LDM0OTYzLDM0OTU4LDM1MjAyLDM1Mjg2LDM1Mjg5LDM1Mjg1LDM1Mzc2LDM1MzY3LDM1MzcyLDM1MzU4LDM1ODk3LDM1ODk5LDM1OTMyLDM1OTMzLDM1OTY1LDM2MDA1LDM2MjIxLDM2MjE5LDM2MjE3LDM2Mjg0LDM2MjkwLDM2MjgxLDM2Mjg3LDM2Mjg5LDM2NTY4LDM2NTc0LDM2NTczLDM2NTcyLDM2NTY3LDM2NTc2LDM2NTc3LDM2OTAwLDM2ODc1LDM2ODgxLDM2ODkyLDM2ODc2LDM2ODk3LDM3MTAzLDM3MDk4LDM3MTA0LDM3MTA4LDM3MTA2LDM3MTA3LDM3MDc2LDM3MDk5LDM3MTAwLDM3MDk3LDM3MjA2LDM3MjA4LDM3MjEwLDM3MjAzLDM3MjA1LDM3MzU2LDM3MzY0LDM3MzYxLDM3MzYzLDM3MzY4LDM3MzQ4LDM3MzY5LDM3MzU0LDM3MzU1LDM3MzY3LDM3MzUyLDM3MzU4LDM4MjY2LDM4Mjc4LDM4MjgwLDM4NTI0LDM4NTA5LDM4NTA3LDM4NTEzLDM4NTExLDM4NTkxLDM4NzYyLDM4OTE2LDM5MTQxLDM5MzE5LDIwNjM1LDIwNjI5LDIwNjI4LDIwNjM4LDIwNjE5LDIwNjQzLDIwNjExLDIwNjIwLDIwNjIyLDIwNjM3LDIwNTg0LDIwNjM2LDIwNjI2LDIwNjEwLDIwNjE1LDIwODMxLDIwOTQ4LDIxMjY2LDIxMjY1LDIxNDEyLDIxNDE1LDIxOTA1LDIxOTI4LDIxOTI1LDIxOTMzLDIxODc5LDIyMDg1LDIxOTIyLDIxOTA3LDIxODk2LDIxOTAzLDIxOTQxLDIxODg5LDIxOTIzLDIxOTA2LDIxOTI0LDIxODg1LDIxOTAwLDIxOTI2LDIxODg3LDIxOTA5LDIxOTIxLDIxOTAyLDIyMjg0LDIyNTY5LDIyNTgzLDIyNTUzLDIyNTU4LDIyNTY3LDIyNTYzLDIyNTY4LDIyNTE3LDIyNjAwLDIyNTY1LDIyNTU2LDIyNTU1LDIyNTc5LDIyNTkxLDIyNTgyLDIyNTc0LDIyNTg1LDIyNTg0LDIyNTczLDIyNTcyLDIyNTg3LDIyODgxLDIzMjE1LDIzMTg4LDIzMTk5LDIzMTYyLDIzMjAyLDIzMTk4LDIzMTYwLDIzMjA2LDIzMTY0LDIzMjA1LDIzMjEyLDIzMTg5LDIzMjE0LDIzMDk1LDIzMTcyLDIzMTc4LDIzMTkxLDIzMTcxLDIzMTc5LDIzMjA5LDIzMTYzLDIzMTY1LDIzMTgwLDIzMTk2LDIzMTgzLDIzMTg3LDIzMTk3LDIzNTMwLDIzNTAxLDIzNDk5LDIzNTA4LDIzNTA1LDIzNDk4LDIzNTAyLDIzNTY0LDIzNjAwLDIzODYzLDIzODc1LDIzOTE1LDIzODczLDIzODgzLDIzODcxLDIzODYxLDIzODg5LDIzODg2LDIzODkzLDIzODU5LDIzODY2LDIzODkwLDIzODY5LDIzODU3LDIzODk3LDIzODc0LDIzODY1LDIzODgxLDIzODY0LDIzODY4LDIzODU4LDIzODYyLDIzODcyLDIzODc3LDI0MTMyLDI0MTI5LDI0NDA4LDI0NDg2LDI0NDg1LDI0NDkxLDI0Nzc3LDI0NzYxLDI0NzgwLDI0ODAyLDI0NzgyLDI0NzcyLDI0ODUyLDI0ODE4LDI0ODQyLDI0ODU0LDI0ODM3LDI0ODIxLDI0ODUxLDI0ODI0LDI0ODI4LDI0ODMwLDI0NzY5LDI0ODM1LDI0ODU2LDI0ODYxLDI0ODQ4LDI0ODMxLDI0ODM2LDI0ODQzLDI1MTYyLDI1NDkyLDI1NTIxLDI1NTIwLDI1NTUwLDI1NTczLDI1NTc2LDI1NTgzLDI1NTM5LDI1NzU3LDI1NTg3LDI1NTQ2LDI1NTY4LDI1NTkwLDI1NTU3LDI1NTg2LDI1NTg5LDI1Njk3LDI1NTY3LDI1NTM0LDI1NTY1LDI1NTY0LDI1NTQwLDI1NTYwLDI1NTU1LDI1NTM4LDI1NTQzLDI1NTQ4LDI1NTQ3LDI1NTQ0LDI1NTg0LDI1NTU5LDI1NTYxLDI1OTA2LDI1OTU5LDI1OTYyLDI1OTU2LDI1OTQ4LDI1OTYwLDI1OTU3LDI1OTk2LDI2MDEzLDI2MDE0LDI2MDMwLDI2MDY0LDI2MDY2LDI2MjM2LDI2MjIwLDI2MjM1LDI2MjQwLDI2MjI1LDI2MjMzLDI2MjE4LDI2MjI2LDI2MzY5LDI2ODkyLDI2ODM1LDI2ODg0LDI2ODQ0LDI2OTIyLDI2ODYwLDI2ODU4LDI2ODY1LDI2ODk1LDI2ODM4LDI2ODcxLDI2ODU5LDI2ODUyLDI2ODcwLDI2ODk5LDI2ODk2LDI2ODY3LDI2ODQ5LDI2ODg3LDI2ODI4LDI2ODg4LDI2OTkyLDI2ODA0LDI2ODk3LDI2ODYzLDI2ODIyLDI2OTAwLDI2ODcyLDI2ODMyLDI2ODc3LDI2ODc2LDI2ODU2LDI2ODkxLDI2ODkwLDI2OTAzLDI2ODMwLDI2ODI0LDI2ODQ1LDI2ODQ2LDI2ODU0LDI2ODY4LDI2ODMzLDI2ODg2LDI2ODM2LDI2ODU3LDI2OTAxLDI2OTE3LDI2ODIzLDI3NDQ5LDI3NDUxLDI3NDU1LDI3NDUyLDI3NTQwLDI3NTQzLDI3NTQ1LDI3NTQxLDI3NTgxLDI3NjMyLDI3NjM0LDI3NjM1LDI3Njk2LDI4MTU2LDI4MjMwLDI4MjMxLDI4MTkxLDI4MjMzLDI4Mjk2LDI4MjIwLDI4MjIxLDI4MjI5LDI4MjU4LDI4MjAzLDI4MjIzLDI4MjI1LDI4MjUzLDI4Mjc1LDI4MTg4LDI4MjExLDI4MjM1LDI4MjI0LDI4MjQxLDI4MjE5LDI4MTYzLDI4MjA2LDI4MjU0LDI4MjY0LDI4MjUyLDI4MjU3LDI4MjA5LDI4MjAwLDI4MjU2LDI4MjczLDI4MjY3LDI4MjE3LDI4MTk0LDI4MjA4LDI4MjQzLDI4MjYxLDI4MTk5LDI4MjgwLDI4MjYwLDI4Mjc5LDI4MjQ1LDI4MjgxLDI4MjQyLDI4MjYyLDI4MjEzLDI4MjE0LDI4MjUwLDI4OTYwLDI4OTU4LDI4OTc1LDI4OTIzLDI4OTc0LDI4OTc3LDI4OTYzLDI4OTY1LDI4OTYyLDI4OTc4LDI4OTU5LDI4OTY4LDI4OTg2LDI4OTU1LDI5MjU5LDI5Mjc0LDI5MzIwLDI5MzIxLDI5MzE4LDI5MzE3LDI5MzIzLDI5NDU4LDI5NDUxLDI5NDg4LDI5NDc0LDI5NDg5LDI5NDkxLDI5NDc5LDI5NDkwLDI5NDg1LDI5NDc4LDI5NDc1LDI5NDkzLDI5NDUyLDI5NzQyLDI5NzQwLDI5NzQ0LDI5NzM5LDI5NzE4LDI5NzIyLDI5NzI5LDI5NzQxLDI5NzQ1LDI5NzMyLDI5NzMxLDI5NzI1LDI5NzM3LDI5NzI4LDI5NzQ2LDI5OTQ3LDI5OTk5LDMwMDYzLDMwMDYwLDMwMTgzLDMwMTcwLDMwMTc3LDMwMTgyLDMwMTczLDMwMTc1LDMwMTgwLDMwMTY3LDMwMzU3LDMwMzU0LDMwNDI2LDMwNTM0LDMwNTM1LDMwNTMyLDMwNTQxLDMwNTMzLDMwNTM4LDMwNTQyLDMwNTM5LDMwNTQwLDMwNjg2LDMwNzAwLDMwODE2LDMwODIwLDMwODIxLDMwODEyLDMwODI5LDMwODMzLDMwODI2LDMwODMwLDMwODMyLDMwODI1LDMwODI0LDMwODE0LDMwODE4LDMxMDkyLDMxMDkxLDMxMDkwLDMxMDg4LDMxMjM0LDMxMjQyLDMxMjM1LDMxMjQ0LDMxMjM2LDMxMzg1LDMxNDYyLDMxNDYwLDMxNTYyLDMxNTQ3LDMxNTU2LDMxNTYwLDMxNTY0LDMxNTY2LDMxNTUyLDMxNTc2LDMxNTU3LDMxOTA2LDMxOTAyLDMxOTEyLDMxOTA1LDMyMDg4LDMyMTExLDMyMDk5LDMyMDgzLDMyMDg2LDMyMTAzLDMyMTA2LDMyMDc5LDMyMTA5LDMyMDkyLDMyMTA3LDMyMDgyLDMyMDg0LDMyMTA1LDMyMDgxLDMyMDk1LDMyMDc4LDMyNTc0LDMyNTc1LDMyNjEzLDMyNjE0LDMyNjc0LDMyNjcyLDMyNjczLDMyNzI3LDMyODQ5LDMyODQ3LDMyODQ4LDMzMDIyLDMyOTgwLDMzMDkxLDMzMDk4LDMzMTA2LDMzMTAzLDMzMDk1LDMzMDg1LDMzMTAxLDMzMDgyLDMzMjU0LDMzMjYyLDMzMjcxLDMzMjcyLDMzMjczLDMzMjg0LDMzMzQwLDMzMzQxLDMzMzQzLDMzMzk3LDMzNTk1LDMzNzQzLDMzNzg1LDMzODI3LDMzNzI4LDMzNzY4LDMzODEwLDMzNzY3LDMzNzY0LDMzNzg4LDMzNzgyLDMzODA4LDMzNzM0LDMzNzM2LDMzNzcxLDMzNzYzLDMzNzI3LDMzNzkzLDMzNzU3LDMzNzY1LDMzNzUyLDMzNzkxLDMzNzYxLDMzNzM5LDMzNzQyLDMzNzUwLDMzNzgxLDMzNzM3LDMzODAxLDMzODA3LDMzNzU4LDMzODA5LDMzNzk4LDMzNzMwLDMzNzc5LDMzNzQ5LDMzNzg2LDMzNzM1LDMzNzQ1LDMzNzcwLDMzODExLDMzNzMxLDMzNzcyLDMzNzc0LDMzNzMyLDMzNzg3LDMzNzUxLDMzNzYyLDMzODE5LDMzNzU1LDMzNzkwLDM0NTIwLDM0NTMwLDM0NTM0LDM0NTE1LDM0NTMxLDM0NTIyLDM0NTM4LDM0NTI1LDM0NTM5LDM0NTI0LDM0NTQwLDM0NTM3LDM0NTE5LDM0NTM2LDM0NTEzLDM0ODg4LDM0OTAyLDM0OTAxLDM1MDAyLDM1MDMxLDM1MDAxLDM1MDAwLDM1MDA4LDM1MDA2LDM0OTk4LDM1MDA0LDM0OTk5LDM1MDA1LDM0OTk0LDM1MDczLDM1MDE3LDM1MjIxLDM1MjI0LDM1MjIzLDM1MjkzLDM1MjkwLDM1MjkxLDM1NDA2LDM1NDA1LDM1Mzg1LDM1NDE3LDM1MzkyLDM1NDE1LDM1NDE2LDM1Mzk2LDM1Mzk3LDM1NDEwLDM1NDAwLDM1NDA5LDM1NDAyLDM1NDA0LDM1NDA3LDM1OTM1LDM1OTY5LDM1OTY4LDM2MDI2LDM2MDMwLDM2MDE2LDM2MDI1LDM2MDIxLDM2MjI4LDM2MjI0LDM2MjMzLDM2MzEyLDM2MzA3LDM2MzAxLDM2Mjk1LDM2MzEwLDM2MzE2LDM2MzAzLDM2MzA5LDM2MzEzLDM2Mjk2LDM2MzExLDM2MjkzLDM2NTkxLDM2NTk5LDM2NjAyLDM2NjAxLDM2NTgyLDM2NTkwLDM2NTgxLDM2NTk3LDM2NTgzLDM2NTg0LDM2NTk4LDM2NTg3LDM2NTkzLDM2NTg4LDM2NTk2LDM2NTg1LDM2OTA5LDM2OTE2LDM2OTExLDM3MTI2LDM3MTY0LDM3MTI0LDM3MTE5LDM3MTE2LDM3MTI4LDM3MTEzLDM3MTE1LDM3MTIxLDM3MTIwLDM3MTI3LDM3MTI1LDM3MTIzLDM3MjE3LDM3MjIwLDM3MjE1LDM3MjE4LDM3MjE2LDM3Mzc3LDM3Mzg2LDM3NDEzLDM3Mzc5LDM3NDAyLDM3NDE0LDM3MzkxLDM3Mzg4LDM3Mzc2LDM3Mzk0LDM3Mzc1LDM3MzczLDM3MzgyLDM3MzgwLDM3NDE1LDM3Mzc4LDM3NDA0LDM3NDEyLDM3NDAxLDM3Mzk5LDM3MzgxLDM3Mzk4LDM4MjY3LDM4Mjg1LDM4Mjg0LDM4Mjg4LDM4NTM1LDM4NTI2LDM4NTM2LDM4NTM3LDM4NTMxLDM4NTI4LDM4NTk0LDM4NjAwLDM4NTk1LDM4NjQxLDM4NjQwLDM4NzY0LDM4NzY4LDM4NzY2LDM4OTE5LDM5MDgxLDM5MTQ3LDQwMTY2LDQwNjk3LDIwMDk5LDIwMTAwLDIwMTUwLDIwNjY5LDIwNjcxLDIwNjc4LDIwNjU0LDIwNjc2LDIwNjgyLDIwNjYwLDIwNjgwLDIwNjc0LDIwNjU2LDIwNjczLDIwNjY2LDIwNjU3LDIwNjgzLDIwNjgxLDIwNjYyLDIwNjY0LDIwOTUxLDIxMTE0LDIxMTEyLDIxMTE1LDIxMTE2LDIxOTU1LDIxOTc5LDIxOTY0LDIxOTY4LDIxOTYzLDIxOTYyLDIxOTgxLDIxOTUyLDIxOTcyLDIxOTU2LDIxOTkzLDIxOTUxLDIxOTcwLDIxOTAxLDIxOTY3LDIxOTczLDIxOTg2LDIxOTc0LDIxOTYwLDIyMDAyLDIxOTY1LDIxOTc3LDIxOTU0LDIyMjkyLDIyNjExLDIyNjMyLDIyNjI4LDIyNjA3LDIyNjA1LDIyNjAxLDIyNjM5LDIyNjEzLDIyNjA2LDIyNjIxLDIyNjE3LDIyNjI5LDIyNjE5LDIyNTg5LDIyNjI3LDIyNjQxLDIyNzgwLDIzMjM5LDIzMjM2LDIzMjQzLDIzMjI2LDIzMjI0LDIzMjE3LDIzMjIxLDIzMjE2LDIzMjMxLDIzMjQwLDIzMjI3LDIzMjM4LDIzMjIzLDIzMjMyLDIzMjQyLDIzMjIwLDIzMjIyLDIzMjQ1LDIzMjI1LDIzMTg0LDIzNTEwLDIzNTEyLDIzNTEzLDIzNTgzLDIzNjAzLDIzOTIxLDIzOTA3LDIzODgyLDIzOTA5LDIzOTIyLDIzOTE2LDIzOTAyLDIzOTEyLDIzOTExLDIzOTA2LDI0MDQ4LDI0MTQzLDI0MTQyLDI0MTM4LDI0MTQxLDI0MTM5LDI0MjYxLDI0MjY4LDI0MjYyLDI0MjY3LDI0MjYzLDI0Mzg0LDI0NDk1LDI0NDkzLDI0ODIzLDI0OTA1LDI0OTA2LDI0ODc1LDI0OTAxLDI0ODg2LDI0ODgyLDI0ODc4LDI0OTAyLDI0ODc5LDI0OTExLDI0ODczLDI0ODk2LDI1MTIwLDM3MjI0LDI1MTIzLDI1MTI1LDI1MTI0LDI1NTQxLDI1NTg1LDI1NTc5LDI1NjE2LDI1NjE4LDI1NjA5LDI1NjMyLDI1NjM2LDI1NjUxLDI1NjY3LDI1NjMxLDI1NjIxLDI1NjI0LDI1NjU3LDI1NjU1LDI1NjM0LDI1NjM1LDI1NjEyLDI1NjM4LDI1NjQ4LDI1NjQwLDI1NjY1LDI1NjUzLDI1NjQ3LDI1NjEwLDI1NjI2LDI1NjY0LDI1NjM3LDI1NjM5LDI1NjExLDI1NTc1LDI1NjI3LDI1NjQ2LDI1NjMzLDI1NjE0LDI1OTY3LDI2MDAyLDI2MDY3LDI2MjQ2LDI2MjUyLDI2MjYxLDI2MjU2LDI2MjUxLDI2MjUwLDI2MjY1LDI2MjYwLDI2MjMyLDI2NDAwLDI2OTgyLDI2OTc1LDI2OTM2LDI2OTU4LDI2OTc4LDI2OTkzLDI2OTQzLDI2OTQ5LDI2OTg2LDI2OTM3LDI2OTQ2LDI2OTY3LDI2OTY5LDI3MDAyLDI2OTUyLDI2OTUzLDI2OTMzLDI2OTg4LDI2OTMxLDI2OTQxLDI2OTgxLDI2ODY0LDI3MDAwLDI2OTMyLDI2OTg1LDI2OTQ0LDI2OTkxLDI2OTQ4LDI2OTk4LDI2OTY4LDI2OTQ1LDI2OTk2LDI2OTU2LDI2OTM5LDI2OTU1LDI2OTM1LDI2OTcyLDI2OTU5LDI2OTYxLDI2OTMwLDI2OTYyLDI2OTI3LDI3MDAzLDI2OTQwLDI3NDYyLDI3NDYxLDI3NDU5LDI3NDU4LDI3NDY0LDI3NDU3LDI3NTQ3LDY0MDEzLDI3NjQzLDI3NjQ0LDI3NjQxLDI3NjM5LDI3NjQwLDI4MzE1LDI4Mzc0LDI4MzYwLDI4MzAzLDI4MzUyLDI4MzE5LDI4MzA3LDI4MzA4LDI4MzIwLDI4MzM3LDI4MzQ1LDI4MzU4LDI4MzcwLDI4MzQ5LDI4MzUzLDI4MzE4LDI4MzYxLDI4MzQzLDI4MzM2LDI4MzY1LDI4MzI2LDI4MzY3LDI4MzM4LDI4MzUwLDI4MzU1LDI4MzgwLDI4Mzc2LDI4MzEzLDI4MzA2LDI4MzAyLDI4MzAxLDI4MzI0LDI4MzIxLDI4MzUxLDI4MzM5LDI4MzY4LDI4MzYyLDI4MzExLDI4MzM0LDI4MzIzLDI4OTk5LDI5MDEyLDI5MDEwLDI5MDI3LDI5MDI0LDI4OTkzLDI5MDIxLDI5MDI2LDI5MDQyLDI5MDQ4LDI5MDM0LDI5MDI1LDI4OTk0LDI5MDE2LDI4OTk1LDI5MDAzLDI5MDQwLDI5MDIzLDI5MDA4LDI5MDExLDI4OTk2LDI5MDA1LDI5MDE4LDI5MjYzLDI5MzI1LDI5MzI0LDI5MzI5LDI5MzI4LDI5MzI2LDI5NTAwLDI5NTA2LDI5NDk5LDI5NDk4LDI5NTA0LDI5NTE0LDI5NTEzLDI5NzY0LDI5NzcwLDI5NzcxLDI5Nzc4LDI5Nzc3LDI5NzgzLDI5NzYwLDI5Nzc1LDI5Nzc2LDI5Nzc0LDI5NzYyLDI5NzY2LDI5NzczLDI5NzgwLDI5OTIxLDI5OTUxLDI5OTUwLDI5OTQ5LDI5OTgxLDMwMDczLDMwMDcxLDI3MDExLDMwMTkxLDMwMjIzLDMwMjExLDMwMTk5LDMwMjA2LDMwMjA0LDMwMjAxLDMwMjAwLDMwMjI0LDMwMjAzLDMwMTk4LDMwMTg5LDMwMTk3LDMwMjA1LDMwMzYxLDMwMzg5LDMwNDI5LDMwNTQ5LDMwNTU5LDMwNTYwLDMwNTQ2LDMwNTUwLDMwNTU0LDMwNTY5LDMwNTY3LDMwNTQ4LDMwNTUzLDMwNTczLDMwNjg4LDMwODU1LDMwODc0LDMwODY4LDMwODYzLDMwODUyLDMwODY5LDMwODUzLDMwODU0LDMwODgxLDMwODUxLDMwODQxLDMwODczLDMwODQ4LDMwODcwLDMwODQzLDMxMTAwLDMxMTA2LDMxMTAxLDMxMDk3LDMxMjQ5LDMxMjU2LDMxMjU3LDMxMjUwLDMxMjU1LDMxMjUzLDMxMjY2LDMxMjUxLDMxMjU5LDMxMjQ4LDMxMzk1LDMxMzk0LDMxMzkwLDMxNDY3LDMxNTkwLDMxNTg4LDMxNTk3LDMxNjA0LDMxNTkzLDMxNjAyLDMxNTg5LDMxNjAzLDMxNjAxLDMxNjAwLDMxNTg1LDMxNjA4LDMxNjA2LDMxNTg3LDMxOTIyLDMxOTI0LDMxOTE5LDMyMTM2LDMyMTM0LDMyMTI4LDMyMTQxLDMyMTI3LDMyMTMzLDMyMTIyLDMyMTQyLDMyMTIzLDMyMTMxLDMyMTI0LDMyMTQwLDMyMTQ4LDMyMTMyLDMyMTI1LDMyMTQ2LDMyNjIxLDMyNjE5LDMyNjE1LDMyNjE2LDMyNjIwLDMyNjc4LDMyNjc3LDMyNjc5LDMyNzMxLDMyNzMyLDMyODAxLDMzMTI0LDMzMTIwLDMzMTQzLDMzMTE2LDMzMTI5LDMzMTE1LDMzMTIyLDMzMTM4LDI2NDAxLDMzMTE4LDMzMTQyLDMzMTI3LDMzMTM1LDMzMDkyLDMzMTIxLDMzMzA5LDMzMzUzLDMzMzQ4LDMzMzQ0LDMzMzQ2LDMzMzQ5LDM0MDMzLDMzODU1LDMzODc4LDMzOTEwLDMzOTEzLDMzOTM1LDMzOTMzLDMzODkzLDMzODczLDMzODU2LDMzOTI2LDMzODk1LDMzODQwLDMzODY5LDMzOTE3LDMzODgyLDMzODgxLDMzOTA4LDMzOTA3LDMzODg1LDM0MDU1LDMzODg2LDMzODQ3LDMzODUwLDMzODQ0LDMzOTE0LDMzODU5LDMzOTEyLDMzODQyLDMzODYxLDMzODMzLDMzNzUzLDMzODY3LDMzODM5LDMzODU4LDMzODM3LDMzODg3LDMzOTA0LDMzODQ5LDMzODcwLDMzODY4LDMzODc0LDMzOTAzLDMzOTg5LDMzOTM0LDMzODUxLDMzODYzLDMzODQ2LDMzODQzLDMzODk2LDMzOTE4LDMzODYwLDMzODM1LDMzODg4LDMzODc2LDMzOTAyLDMzODcyLDM0NTcxLDM0NTY0LDM0NTUxLDM0NTcyLDM0NTU0LDM0NTE4LDM0NTQ5LDM0NjM3LDM0NTUyLDM0NTc0LDM0NTY5LDM0NTYxLDM0NTUwLDM0NTczLDM0NTY1LDM1MDMwLDM1MDE5LDM1MDIxLDM1MDIyLDM1MDM4LDM1MDM1LDM1MDM0LDM1MDIwLDM1MDI0LDM1MjA1LDM1MjI3LDM1Mjk1LDM1MzAxLDM1MzAwLDM1Mjk3LDM1Mjk2LDM1Mjk4LDM1MjkyLDM1MzAyLDM1NDQ2LDM1NDYyLDM1NDU1LDM1NDI1LDM1MzkxLDM1NDQ3LDM1NDU4LDM1NDYwLDM1NDQ1LDM1NDU5LDM1NDU3LDM1NDQ0LDM1NDUwLDM1OTAwLDM1OTE1LDM1OTE0LDM1OTQxLDM1OTQwLDM1OTQyLDM1OTc0LDM1OTcyLDM1OTczLDM2MDQ0LDM2MjAwLDM2MjAxLDM2MjQxLDM2MjM2LDM2MjM4LDM2MjM5LDM2MjM3LDM2MjQzLDM2MjQ0LDM2MjQwLDM2MjQyLDM2MzM2LDM2MzIwLDM2MzMyLDM2MzM3LDM2MzM0LDM2MzA0LDM2MzI5LDM2MzIzLDM2MzIyLDM2MzI3LDM2MzM4LDM2MzMxLDM2MzQwLDM2NjE0LDM2NjA3LDM2NjA5LDM2NjA4LDM2NjEzLDM2NjE1LDM2NjE2LDM2NjEwLDM2NjE5LDM2OTQ2LDM2OTI3LDM2OTMyLDM2OTM3LDM2OTI1LDM3MTM2LDM3MTMzLDM3MTM1LDM3MTM3LDM3MTQyLDM3MTQwLDM3MTMxLDM3MTM0LDM3MjMwLDM3MjMxLDM3NDQ4LDM3NDU4LDM3NDI0LDM3NDM0LDM3NDc4LDM3NDI3LDM3NDc3LDM3NDcwLDM3NTA3LDM3NDIyLDM3NDUwLDM3NDQ2LDM3NDg1LDM3NDg0LDM3NDU1LDM3NDcyLDM3NDc5LDM3NDg3LDM3NDMwLDM3NDczLDM3NDg4LDM3NDI1LDM3NDYwLDM3NDc1LDM3NDU2LDM3NDkwLDM3NDU0LDM3NDU5LDM3NDUyLDM3NDYyLDM3NDI2LDM4MzAzLDM4MzAwLDM4MzAyLDM4Mjk5LDM4NTQ2LDM4NTQ3LDM4NTQ1LDM4NTUxLDM4NjA2LDM4NjUwLDM4NjUzLDM4NjQ4LDM4NjQ1LDM4NzcxLDM4Nzc1LDM4Nzc2LDM4NzcwLDM4OTI3LDM4OTI1LDM4OTI2LDM5MDg0LDM5MTU4LDM5MTYxLDM5MzQzLDM5MzQ2LDM5MzQ0LDM5MzQ5LDM5NTk3LDM5NTk1LDM5NzcxLDQwMTcwLDQwMTczLDQwMTY3LDQwNTc2LDQwNzAxLDIwNzEwLDIwNjkyLDIwNjk1LDIwNzEyLDIwNzIzLDIwNjk5LDIwNzE0LDIwNzAxLDIwNzA4LDIwNjkxLDIwNzE2LDIwNzIwLDIwNzE5LDIwNzA3LDIwNzA0LDIwOTUyLDIxMTIwLDIxMTIxLDIxMjI1LDIxMjI3LDIxMjk2LDIxNDIwLDIyMDU1LDIyMDM3LDIyMDI4LDIyMDM0LDIyMDEyLDIyMDMxLDIyMDQ0LDIyMDE3LDIyMDM1LDIyMDE4LDIyMDEwLDIyMDQ1LDIyMDIwLDIyMDE1LDIyMDA5LDIyNjY1LDIyNjUyLDIyNjcyLDIyNjgwLDIyNjYyLDIyNjU3LDIyNjU1LDIyNjQ0LDIyNjY3LDIyNjUwLDIyNjYzLDIyNjczLDIyNjcwLDIyNjQ2LDIyNjU4LDIyNjY0LDIyNjUxLDIyNjc2LDIyNjcxLDIyNzgyLDIyODkxLDIzMjYwLDIzMjc4LDIzMjY5LDIzMjUzLDIzMjc0LDIzMjU4LDIzMjc3LDIzMjc1LDIzMjgzLDIzMjY2LDIzMjY0LDIzMjU5LDIzMjc2LDIzMjYyLDIzMjYxLDIzMjU3LDIzMjcyLDIzMjYzLDIzNDE1LDIzNTIwLDIzNTIzLDIzNjUxLDIzOTM4LDIzOTM2LDIzOTMzLDIzOTQyLDIzOTMwLDIzOTM3LDIzOTI3LDIzOTQ2LDIzOTQ1LDIzOTQ0LDIzOTM0LDIzOTMyLDIzOTQ5LDIzOTI5LDIzOTM1LDI0MTUyLDI0MTUzLDI0MTQ3LDI0MjgwLDI0MjczLDI0Mjc5LDI0MjcwLDI0Mjg0LDI0Mjc3LDI0MjgxLDI0Mjc0LDI0Mjc2LDI0Mzg4LDI0Mzg3LDI0NDMxLDI0NTAyLDI0ODc2LDI0ODcyLDI0ODk3LDI0OTI2LDI0OTQ1LDI0OTQ3LDI0OTE0LDI0OTE1LDI0OTQ2LDI0OTQwLDI0OTYwLDI0OTQ4LDI0OTE2LDI0OTU0LDI0OTIzLDI0OTMzLDI0ODkxLDI0OTM4LDI0OTI5LDI0OTE4LDI1MTI5LDI1MTI3LDI1MTMxLDI1NjQzLDI1Njc3LDI1NjkxLDI1NjkzLDI1NzE2LDI1NzE4LDI1NzE0LDI1NzE1LDI1NzI1LDI1NzE3LDI1NzAyLDI1NzY2LDI1Njc4LDI1NzMwLDI1Njk0LDI1NjkyLDI1Njc1LDI1NjgzLDI1Njk2LDI1NjgwLDI1NzI3LDI1NjYzLDI1NzA4LDI1NzA3LDI1Njg5LDI1NzAxLDI1NzE5LDI1OTcxLDI2MDE2LDI2MjczLDI2MjcyLDI2MjcxLDI2MzczLDI2MzcyLDI2NDAyLDI3MDU3LDI3MDYyLDI3MDgxLDI3MDQwLDI3MDg2LDI3MDMwLDI3MDU2LDI3MDUyLDI3MDY4LDI3MDI1LDI3MDMzLDI3MDIyLDI3MDQ3LDI3MDIxLDI3MDQ5LDI3MDcwLDI3MDU1LDI3MDcxLDI3MDc2LDI3MDY5LDI3MDQ0LDI3MDkyLDI3MDY1LDI3MDgyLDI3MDM0LDI3MDg3LDI3MDU5LDI3MDI3LDI3MDUwLDI3MDQxLDI3MDM4LDI3MDk3LDI3MDMxLDI3MDI0LDI3MDc0LDI3MDYxLDI3MDQ1LDI3MDc4LDI3NDY2LDI3NDY5LDI3NDY3LDI3NTUwLDI3NTUxLDI3NTUyLDI3NTg3LDI3NTg4LDI3NjQ2LDI4MzY2LDI4NDA1LDI4NDAxLDI4NDE5LDI4NDUzLDI4NDA4LDI4NDcxLDI4NDExLDI4NDYyLDI4NDI1LDI4NDk0LDI4NDQxLDI4NDQyLDI4NDU1LDI4NDQwLDI4NDc1LDI4NDM0LDI4Mzk3LDI4NDI2LDI4NDcwLDI4NTMxLDI4NDA5LDI4Mzk4LDI4NDYxLDI4NDgwLDI4NDY0LDI4NDc2LDI4NDY5LDI4Mzk1LDI4NDIzLDI4NDMwLDI4NDgzLDI4NDIxLDI4NDEzLDI4NDA2LDI4NDczLDI4NDQ0LDI4NDEyLDI4NDc0LDI4NDQ3LDI4NDI5LDI4NDQ2LDI4NDI0LDI4NDQ5LDI5MDYzLDI5MDcyLDI5MDY1LDI5MDU2LDI5MDYxLDI5MDU4LDI5MDcxLDI5MDUxLDI5MDYyLDI5MDU3LDI5MDc5LDI5MjUyLDI5MjY3LDI5MzM1LDI5MzMzLDI5MzMxLDI5NTA3LDI5NTE3LDI5NTIxLDI5NTE2LDI5Nzk0LDI5ODExLDI5ODA5LDI5ODEzLDI5ODEwLDI5Nzk5LDI5ODA2LDI5OTUyLDI5OTU0LDI5OTU1LDMwMDc3LDMwMDk2LDMwMjMwLDMwMjE2LDMwMjIwLDMwMjI5LDMwMjI1LDMwMjE4LDMwMjI4LDMwMzkyLDMwNTkzLDMwNTg4LDMwNTk3LDMwNTk0LDMwNTc0LDMwNTkyLDMwNTc1LDMwNTkwLDMwNTk1LDMwODk4LDMwODkwLDMwOTAwLDMwODkzLDMwODg4LDMwODQ2LDMwODkxLDMwODc4LDMwODg1LDMwODgwLDMwODkyLDMwODgyLDMwODg0LDMxMTI4LDMxMTE0LDMxMTE1LDMxMTI2LDMxMTI1LDMxMTI0LDMxMTIzLDMxMTI3LDMxMTEyLDMxMTIyLDMxMTIwLDMxMjc1LDMxMzA2LDMxMjgwLDMxMjc5LDMxMjcyLDMxMjcwLDMxNDAwLDMxNDAzLDMxNDA0LDMxNDcwLDMxNjI0LDMxNjQ0LDMxNjI2LDMxNjMzLDMxNjMyLDMxNjM4LDMxNjI5LDMxNjI4LDMxNjQzLDMxNjMwLDMxNjIxLDMxNjQwLDIxMTI0LDMxNjQxLDMxNjUyLDMxNjE4LDMxOTMxLDMxOTM1LDMxOTMyLDMxOTMwLDMyMTY3LDMyMTgzLDMyMTk0LDMyMTYzLDMyMTcwLDMyMTkzLDMyMTkyLDMyMTk3LDMyMTU3LDMyMjA2LDMyMTk2LDMyMTk4LDMyMjAzLDMyMjA0LDMyMTc1LDMyMTg1LDMyMTUwLDMyMTg4LDMyMTU5LDMyMTY2LDMyMTc0LDMyMTY5LDMyMTYxLDMyMjAxLDMyNjI3LDMyNzM4LDMyNzM5LDMyNzQxLDMyNzM0LDMyODA0LDMyODYxLDMyODYwLDMzMTYxLDMzMTU4LDMzMTU1LDMzMTU5LDMzMTY1LDMzMTY0LDMzMTYzLDMzMzAxLDMzOTQzLDMzOTU2LDMzOTUzLDMzOTUxLDMzOTc4LDMzOTk4LDMzOTg2LDMzOTY0LDMzOTY2LDMzOTYzLDMzOTc3LDMzOTcyLDMzOTg1LDMzOTk3LDMzOTYyLDMzOTQ2LDMzOTY5LDM0MDAwLDMzOTQ5LDMzOTU5LDMzOTc5LDMzOTU0LDMzOTQwLDMzOTkxLDMzOTk2LDMzOTQ3LDMzOTYxLDMzOTY3LDMzOTYwLDM0MDA2LDMzOTQ0LDMzOTc0LDMzOTk5LDMzOTUyLDM0MDA3LDM0MDA0LDM0MDAyLDM0MDExLDMzOTY4LDMzOTM3LDM0NDAxLDM0NjExLDM0NTk1LDM0NjAwLDM0NjY3LDM0NjI0LDM0NjA2LDM0NTkwLDM0NTkzLDM0NTg1LDM0NTg3LDM0NjI3LDM0NjA0LDM0NjI1LDM0NjIyLDM0NjMwLDM0NTkyLDM0NjEwLDM0NjAyLDM0NjA1LDM0NjIwLDM0NTc4LDM0NjE4LDM0NjA5LDM0NjEzLDM0NjI2LDM0NTk4LDM0NTk5LDM0NjE2LDM0NTk2LDM0NTg2LDM0NjA4LDM0NTc3LDM1MDYzLDM1MDQ3LDM1MDU3LDM1MDU4LDM1MDY2LDM1MDcwLDM1MDU0LDM1MDY4LDM1MDYyLDM1MDY3LDM1MDU2LDM1MDUyLDM1MDUxLDM1MjI5LDM1MjMzLDM1MjMxLDM1MjMwLDM1MzA1LDM1MzA3LDM1MzA0LDM1NDk5LDM1NDgxLDM1NDY3LDM1NDc0LDM1NDcxLDM1NDc4LDM1OTAxLDM1OTQ0LDM1OTQ1LDM2MDUzLDM2MDQ3LDM2MDU1LDM2MjQ2LDM2MzYxLDM2MzU0LDM2MzUxLDM2MzY1LDM2MzQ5LDM2MzYyLDM2MzU1LDM2MzU5LDM2MzU4LDM2MzU3LDM2MzUwLDM2MzUyLDM2MzU2LDM2NjI0LDM2NjI1LDM2NjIyLDM2NjIxLDM3MTU1LDM3MTQ4LDM3MTUyLDM3MTU0LDM3MTUxLDM3MTQ5LDM3MTQ2LDM3MTU2LDM3MTUzLDM3MTQ3LDM3MjQyLDM3MjM0LDM3MjQxLDM3MjM1LDM3NTQxLDM3NTQwLDM3NDk0LDM3NTMxLDM3NDk4LDM3NTM2LDM3NTI0LDM3NTQ2LDM3NTE3LDM3NTQyLDM3NTMwLDM3NTQ3LDM3NDk3LDM3NTI3LDM3NTAzLDM3NTM5LDM3NjE0LDM3NTE4LDM3NTA2LDM3NTI1LDM3NTM4LDM3NTAxLDM3NTEyLDM3NTM3LDM3NTE0LDM3NTEwLDM3NTE2LDM3NTI5LDM3NTQzLDM3NTAyLDM3NTExLDM3NTQ1LDM3NTMzLDM3NTE1LDM3NDIxLDM4NTU4LDM4NTYxLDM4NjU1LDM4NzQ0LDM4NzgxLDM4Nzc4LDM4NzgyLDM4Nzg3LDM4Nzg0LDM4Nzg2LDM4Nzc5LDM4Nzg4LDM4Nzg1LDM4NzgzLDM4ODYyLDM4ODYxLDM4OTM0LDM5MDg1LDM5MDg2LDM5MTcwLDM5MTY4LDM5MTc1LDM5MzI1LDM5MzI0LDM5MzYzLDM5MzUzLDM5MzU1LDM5MzU0LDM5MzYyLDM5MzU3LDM5MzY3LDM5NjAxLDM5NjUxLDM5NjU1LDM5NzQyLDM5NzQzLDM5Nzc2LDM5Nzc3LDM5Nzc1LDQwMTc3LDQwMTc4LDQwMTgxLDQwNjE1LDIwNzM1LDIwNzM5LDIwNzg0LDIwNzI4LDIwNzQyLDIwNzQzLDIwNzI2LDIwNzM0LDIwNzQ3LDIwNzQ4LDIwNzMzLDIwNzQ2LDIxMTMxLDIxMTMyLDIxMjMzLDIxMjMxLDIyMDg4LDIyMDgyLDIyMDkyLDIyMDY5LDIyMDgxLDIyMDkwLDIyMDg5LDIyMDg2LDIyMTA0LDIyMTA2LDIyMDgwLDIyMDY3LDIyMDc3LDIyMDYwLDIyMDc4LDIyMDcyLDIyMDU4LDIyMDc0LDIyMjk4LDIyNjk5LDIyNjg1LDIyNzA1LDIyNjg4LDIyNjkxLDIyNzAzLDIyNzAwLDIyNjkzLDIyNjg5LDIyNzgzLDIzMjk1LDIzMjg0LDIzMjkzLDIzMjg3LDIzMjg2LDIzMjk5LDIzMjg4LDIzMjk4LDIzMjg5LDIzMjk3LDIzMzAzLDIzMzAxLDIzMzExLDIzNjU1LDIzOTYxLDIzOTU5LDIzOTY3LDIzOTU0LDIzOTcwLDIzOTU1LDIzOTU3LDIzOTY4LDIzOTY0LDIzOTY5LDIzOTYyLDIzOTY2LDI0MTY5LDI0MTU3LDI0MTYwLDI0MTU2LDMyMjQzLDI0MjgzLDI0Mjg2LDI0Mjg5LDI0MzkzLDI0NDk4LDI0OTcxLDI0OTYzLDI0OTUzLDI1MDA5LDI1MDA4LDI0OTk0LDI0OTY5LDI0OTg3LDI0OTc5LDI1MDA3LDI1MDA1LDI0OTkxLDI0OTc4LDI1MDAyLDI0OTkzLDI0OTczLDI0OTM0LDI1MDExLDI1MTMzLDI1NzEwLDI1NzEyLDI1NzUwLDI1NzYwLDI1NzMzLDI1NzUxLDI1NzU2LDI1NzQzLDI1NzM5LDI1NzM4LDI1NzQwLDI1NzYzLDI1NzU5LDI1NzA0LDI1Nzc3LDI1NzUyLDI1OTc0LDI1OTc4LDI1OTc3LDI1OTc5LDI2MDM0LDI2MDM1LDI2MjkzLDI2Mjg4LDI2MjgxLDI2MjkwLDI2Mjk1LDI2MjgyLDI2Mjg3LDI3MTM2LDI3MTQyLDI3MTU5LDI3MTA5LDI3MTI4LDI3MTU3LDI3MTIxLDI3MTA4LDI3MTY4LDI3MTM1LDI3MTE2LDI3MTA2LDI3MTYzLDI3MTY1LDI3MTM0LDI3MTc1LDI3MTIyLDI3MTE4LDI3MTU2LDI3MTI3LDI3MTExLDI3MjAwLDI3MTQ0LDI3MTEwLDI3MTMxLDI3MTQ5LDI3MTMyLDI3MTE1LDI3MTQ1LDI3MTQwLDI3MTYwLDI3MTczLDI3MTUxLDI3MTI2LDI3MTc0LDI3MTQzLDI3MTI0LDI3MTU4LDI3NDczLDI3NTU3LDI3NTU1LDI3NTU0LDI3NTU4LDI3NjQ5LDI3NjQ4LDI3NjQ3LDI3NjUwLDI4NDgxLDI4NDU0LDI4NTQyLDI4NTUxLDI4NjE0LDI4NTYyLDI4NTU3LDI4NTUzLDI4NTU2LDI4NTE0LDI4NDk1LDI4NTQ5LDI4NTA2LDI4NTY2LDI4NTM0LDI4NTI0LDI4NTQ2LDI4NTAxLDI4NTMwLDI4NDk4LDI4NDk2LDI4NTAzLDI4NTY0LDI4NTYzLDI4NTA5LDI4NDE2LDI4NTEzLDI4NTIzLDI4NTQxLDI4NTE5LDI4NTYwLDI4NDk5LDI4NTU1LDI4NTIxLDI4NTQzLDI4NTY1LDI4NTE1LDI4NTM1LDI4NTIyLDI4NTM5LDI5MTA2LDI5MTAzLDI5MDgzLDI5MTA0LDI5MDg4LDI5MDgyLDI5MDk3LDI5MTA5LDI5MDg1LDI5MDkzLDI5MDg2LDI5MDkyLDI5MDg5LDI5MDk4LDI5MDg0LDI5MDk1LDI5MTA3LDI5MzM2LDI5MzM4LDI5NTI4LDI5NTIyLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTMzLDI5NTMxLDI5NTM3LDI5NTMwLDI5NTI5LDI5NTM4LDI5ODMxLDI5ODMzLDI5ODM0LDI5ODMwLDI5ODI1LDI5ODIxLDI5ODI5LDI5ODMyLDI5ODIwLDI5ODE3LDI5OTYwLDI5OTU5LDMwMDc4LDMwMjQ1LDMwMjM4LDMwMjMzLDMwMjM3LDMwMjM2LDMwMjQzLDMwMjM0LDMwMjQ4LDMwMjM1LDMwMzY0LDMwMzY1LDMwMzY2LDMwMzYzLDMwNjA1LDMwNjA3LDMwNjAxLDMwNjAwLDMwOTI1LDMwOTA3LDMwOTI3LDMwOTI0LDMwOTI5LDMwOTI2LDMwOTMyLDMwOTIwLDMwOTE1LDMwOTE2LDMwOTIxLDMxMTMwLDMxMTM3LDMxMTM2LDMxMTMyLDMxMTM4LDMxMTMxLDI3NTEwLDMxMjg5LDMxNDEwLDMxNDEyLDMxNDExLDMxNjcxLDMxNjkxLDMxNjc4LDMxNjYwLDMxNjk0LDMxNjYzLDMxNjczLDMxNjkwLDMxNjY5LDMxOTQxLDMxOTQ0LDMxOTQ4LDMxOTQ3LDMyMjQ3LDMyMjE5LDMyMjM0LDMyMjMxLDMyMjE1LDMyMjI1LDMyMjU5LDMyMjUwLDMyMjMwLDMyMjQ2LDMyMjQxLDMyMjQwLDMyMjM4LDMyMjIzLDMyNjMwLDMyNjg0LDMyNjg4LDMyNjg1LDMyNzQ5LDMyNzQ3LDMyNzQ2LDMyNzQ4LDMyNzQyLDMyNzQ0LDMyODY4LDMyODcxLDMzMTg3LDMzMTgzLDMzMTgyLDMzMTczLDMzMTg2LDMzMTc3LDMzMTc1LDMzMzAyLDMzMzU5LDMzMzYzLDMzMzYyLDMzMzYwLDMzMzU4LDMzMzYxLDM0MDg0LDM0MTA3LDM0MDYzLDM0MDQ4LDM0MDg5LDM0MDYyLDM0MDU3LDM0MDYxLDM0MDc5LDM0MDU4LDM0MDg3LDM0MDc2LDM0MDQzLDM0MDkxLDM0MDQyLDM0MDU2LDM0MDYwLDM0MDM2LDM0MDkwLDM0MDM0LDM0MDY5LDM0MDM5LDM0MDI3LDM0MDM1LDM0MDQ0LDM0MDY2LDM0MDI2LDM0MDI1LDM0MDcwLDM0MDQ2LDM0MDg4LDM0MDc3LDM0MDk0LDM0MDUwLDM0MDQ1LDM0MDc4LDM0MDM4LDM0MDk3LDM0MDg2LDM0MDIzLDM0MDI0LDM0MDMyLDM0MDMxLDM0MDQxLDM0MDcyLDM0MDgwLDM0MDk2LDM0MDU5LDM0MDczLDM0MDk1LDM0NDAyLDM0NjQ2LDM0NjU5LDM0NjYwLDM0Njc5LDM0Nzg1LDM0Njc1LDM0NjQ4LDM0NjQ0LDM0NjUxLDM0NjQyLDM0NjU3LDM0NjUwLDM0NjQxLDM0NjU0LDM0NjY5LDM0NjY2LDM0NjQwLDM0NjM4LDM0NjU1LDM0NjUzLDM0NjcxLDM0NjY4LDM0NjgyLDM0NjcwLDM0NjUyLDM0NjYxLDM0NjM5LDM0NjgzLDM0Njc3LDM0NjU4LDM0NjYzLDM0NjY1LDM0OTA2LDM1MDc3LDM1MDg0LDM1MDkyLDM1MDgzLDM1MDk1LDM1MDk2LDM1MDk3LDM1MDc4LDM1MDk0LDM1MDg5LDM1MDg2LDM1MDgxLDM1MjM0LDM1MjM2LDM1MjM1LDM1MzA5LDM1MzEyLDM1MzA4LDM1NTM1LDM1NTI2LDM1NTEyLDM1NTM5LDM1NTM3LDM1NTQwLDM1NTQxLDM1NTE1LDM1NTQzLDM1NTE4LDM1NTIwLDM1NTI1LDM1NTQ0LDM1NTIzLDM1NTE0LDM1NTE3LDM1NTQ1LDM1OTAyLDM1OTE3LDM1OTgzLDM2MDY5LDM2MDYzLDM2MDU3LDM2MDcyLDM2MDU4LDM2MDYxLDM2MDcxLDM2MjU2LDM2MjUyLDM2MjU3LDM2MjUxLDM2Mzg0LDM2Mzg3LDM2Mzg5LDM2Mzg4LDM2Mzk4LDM2MzczLDM2Mzc5LDM2Mzc0LDM2MzY5LDM2Mzc3LDM2MzkwLDM2MzkxLDM2MzcyLDM2MzcwLDM2Mzc2LDM2MzcxLDM2MzgwLDM2Mzc1LDM2Mzc4LDM2NjUyLDM2NjQ0LDM2NjMyLDM2NjM0LDM2NjQwLDM2NjQzLDM2NjMwLDM2NjMxLDM2OTc5LDM2OTc2LDM2OTc1LDM2OTY3LDM2OTcxLDM3MTY3LDM3MTYzLDM3MTYxLDM3MTYyLDM3MTcwLDM3MTU4LDM3MTY2LDM3MjUzLDM3MjU0LDM3MjU4LDM3MjQ5LDM3MjUwLDM3MjUyLDM3MjQ4LDM3NTg0LDM3NTcxLDM3NTcyLDM3NTY4LDM3NTkzLDM3NTU4LDM3NTgzLDM3NjE3LDM3NTk5LDM3NTkyLDM3NjA5LDM3NTkxLDM3NTk3LDM3NTgwLDM3NjE1LDM3NTcwLDM3NjA4LDM3NTc4LDM3NTc2LDM3NTgyLDM3NjA2LDM3NTgxLDM3NTg5LDM3NTc3LDM3NjAwLDM3NTk4LDM3NjA3LDM3NTg1LDM3NTg3LDM3NTU3LDM3NjAxLDM3NTc0LDM3NTU2LDM4MjY4LDM4MzE2LDM4MzE1LDM4MzE4LDM4MzIwLDM4NTY0LDM4NTYyLDM4NjExLDM4NjYxLDM4NjY0LDM4NjU4LDM4NzQ2LDM4Nzk0LDM4Nzk4LDM4NzkyLDM4ODY0LDM4ODYzLDM4OTQyLDM4OTQxLDM4OTUwLDM4OTUzLDM4OTUyLDM4OTQ0LDM4OTM5LDM4OTUxLDM5MDkwLDM5MTc2LDM5MTYyLDM5MTg1LDM5MTg4LDM5MTkwLDM5MTkxLDM5MTg5LDM5Mzg4LDM5MzczLDM5Mzc1LDM5Mzc5LDM5MzgwLDM5Mzc0LDM5MzY5LDM5MzgyLDM5Mzg0LDM5MzcxLDM5MzgzLDM5MzcyLDM5NjAzLDM5NjYwLDM5NjU5LDM5NjY3LDM5NjY2LDM5NjY1LDM5NzUwLDM5NzQ3LDM5NzgzLDM5Nzk2LDM5NzkzLDM5NzgyLDM5Nzk4LDM5Nzk3LDM5NzkyLDM5Nzg0LDM5NzgwLDM5Nzg4LDQwMTg4LDQwMTg2LDQwMTg5LDQwMTkxLDQwMTgzLDQwMTk5LDQwMTkyLDQwMTg1LDQwMTg3LDQwMjAwLDQwMTk3LDQwMTk2LDQwNTc5LDQwNjU5LDQwNzE5LDQwNzIwLDIwNzY0LDIwNzU1LDIwNzU5LDIwNzYyLDIwNzUzLDIwOTU4LDIxMzAwLDIxNDczLDIyMTI4LDIyMTEyLDIyMTI2LDIyMTMxLDIyMTE4LDIyMTE1LDIyMTI1LDIyMTMwLDIyMTEwLDIyMTM1LDIyMzAwLDIyMjk5LDIyNzI4LDIyNzE3LDIyNzI5LDIyNzE5LDIyNzE0LDIyNzIyLDIyNzE2LDIyNzI2LDIzMzE5LDIzMzIxLDIzMzIzLDIzMzI5LDIzMzE2LDIzMzE1LDIzMzEyLDIzMzE4LDIzMzM2LDIzMzIyLDIzMzI4LDIzMzI2LDIzNTM1LDIzOTgwLDIzOTg1LDIzOTc3LDIzOTc1LDIzOTg5LDIzOTg0LDIzOTgyLDIzOTc4LDIzOTc2LDIzOTg2LDIzOTgxLDIzOTgzLDIzOTg4LDI0MTY3LDI0MTY4LDI0MTY2LDI0MTc1LDI0Mjk3LDI0Mjk1LDI0Mjk0LDI0Mjk2LDI0MjkzLDI0Mzk1LDI0NTA4LDI0OTg5LDI1MDAwLDI0OTgyLDI1MDI5LDI1MDEyLDI1MDMwLDI1MDI1LDI1MDM2LDI1MDE4LDI1MDIzLDI1MDE2LDI0OTcyLDI1ODE1LDI1ODE0LDI1ODA4LDI1ODA3LDI1ODAxLDI1Nzg5LDI1NzM3LDI1Nzk1LDI1ODE5LDI1ODQzLDI1ODE3LDI1OTA3LDI1OTgzLDI1OTgwLDI2MDE4LDI2MzEyLDI2MzAyLDI2MzA0LDI2MzE0LDI2MzE1LDI2MzE5LDI2MzAxLDI2Mjk5LDI2Mjk4LDI2MzE2LDI2NDAzLDI3MTg4LDI3MjM4LDI3MjA5LDI3MjM5LDI3MTg2LDI3MjQwLDI3MTk4LDI3MjI5LDI3MjQ1LDI3MjU0LDI3MjI3LDI3MjE3LDI3MTc2LDI3MjI2LDI3MTk1LDI3MTk5LDI3MjAxLDI3MjQyLDI3MjM2LDI3MjE2LDI3MjE1LDI3MjIwLDI3MjQ3LDI3MjQxLDI3MjMyLDI3MTk2LDI3MjMwLDI3MjIyLDI3MjIxLDI3MjEzLDI3MjE0LDI3MjA2LDI3NDc3LDI3NDc2LDI3NDc4LDI3NTU5LDI3NTYyLDI3NTYzLDI3NTkyLDI3NTkxLDI3NjUyLDI3NjUxLDI3NjU0LDI4NTg5LDI4NjE5LDI4NTc5LDI4NjE1LDI4NjA0LDI4NjIyLDI4NjE2LDI4NTEwLDI4NjEyLDI4NjA1LDI4NTc0LDI4NjE4LDI4NTg0LDI4Njc2LDI4NTgxLDI4NTkwLDI4NjAyLDI4NTg4LDI4NTg2LDI4NjIzLDI4NjA3LDI4NjAwLDI4NTc4LDI4NjE3LDI4NTg3LDI4NjIxLDI4NTkxLDI4NTk0LDI4NTkyLDI5MTI1LDI5MTIyLDI5MTE5LDI5MTEyLDI5MTQyLDI5MTIwLDI5MTIxLDI5MTMxLDI5MTQwLDI5MTMwLDI5MTI3LDI5MTM1LDI5MTE3LDI5MTQ0LDI5MTE2LDI5MTI2LDI5MTQ2LDI5MTQ3LDI5MzQxLDI5MzQyLDI5NTQ1LDI5NTQyLDI5NTQzLDI5NTQ4LDI5NTQxLDI5NTQ3LDI5NTQ2LDI5ODIzLDI5ODUwLDI5ODU2LDI5ODQ0LDI5ODQyLDI5ODQ1LDI5ODU3LDI5OTYzLDMwMDgwLDMwMjU1LDMwMjUzLDMwMjU3LDMwMjY5LDMwMjU5LDMwMjY4LDMwMjYxLDMwMjU4LDMwMjU2LDMwMzk1LDMwNDM4LDMwNjE4LDMwNjIxLDMwNjI1LDMwNjIwLDMwNjE5LDMwNjI2LDMwNjI3LDMwNjEzLDMwNjE3LDMwNjE1LDMwOTQxLDMwOTUzLDMwOTQ5LDMwOTU0LDMwOTQyLDMwOTQ3LDMwOTM5LDMwOTQ1LDMwOTQ2LDMwOTU3LDMwOTQzLDMwOTQ0LDMxMTQwLDMxMzAwLDMxMzA0LDMxMzAzLDMxNDE0LDMxNDE2LDMxNDEzLDMxNDA5LDMxNDE1LDMxNzEwLDMxNzE1LDMxNzE5LDMxNzA5LDMxNzAxLDMxNzE3LDMxNzA2LDMxNzIwLDMxNzM3LDMxNzAwLDMxNzIyLDMxNzE0LDMxNzA4LDMxNzIzLDMxNzA0LDMxNzExLDMxOTU0LDMxOTU2LDMxOTU5LDMxOTUyLDMxOTUzLDMyMjc0LDMyMjg5LDMyMjc5LDMyMjY4LDMyMjg3LDMyMjg4LDMyMjc1LDMyMjcwLDMyMjg0LDMyMjc3LDMyMjgyLDMyMjkwLDMyMjY3LDMyMjcxLDMyMjc4LDMyMjY5LDMyMjc2LDMyMjkzLDMyMjkyLDMyNTc5LDMyNjM1LDMyNjM2LDMyNjM0LDMyNjg5LDMyNzUxLDMyODEwLDMyODA5LDMyODc2LDMzMjAxLDMzMTkwLDMzMTk4LDMzMjA5LDMzMjA1LDMzMTk1LDMzMjAwLDMzMTk2LDMzMjA0LDMzMjAyLDMzMjA3LDMzMTkxLDMzMjY2LDMzMzY1LDMzMzY2LDMzMzY3LDM0MTM0LDM0MTE3LDM0MTU1LDM0MTI1LDM0MTMxLDM0MTQ1LDM0MTM2LDM0MTEyLDM0MTE4LDM0MTQ4LDM0MTEzLDM0MTQ2LDM0MTE2LDM0MTI5LDM0MTE5LDM0MTQ3LDM0MTEwLDM0MTM5LDM0MTYxLDM0MTI2LDM0MTU4LDM0MTY1LDM0MTMzLDM0MTUxLDM0MTQ0LDM0MTg4LDM0MTUwLDM0MTQxLDM0MTMyLDM0MTQ5LDM0MTU2LDM0NDAzLDM0NDA1LDM0NDA0LDM0NzE1LDM0NzAzLDM0NzExLDM0NzA3LDM0NzA2LDM0Njk2LDM0Njg5LDM0NzEwLDM0NzEyLDM0NjgxLDM0Njk1LDM0NzIzLDM0NjkzLDM0NzA0LDM0NzA1LDM0NzE3LDM0NjkyLDM0NzA4LDM0NzE2LDM0NzE0LDM0Njk3LDM1MTAyLDM1MTEwLDM1MTIwLDM1MTE3LDM1MTE4LDM1MTExLDM1MTIxLDM1MTA2LDM1MTEzLDM1MTA3LDM1MTE5LDM1MTE2LDM1MTAzLDM1MzEzLDM1NTUyLDM1NTU0LDM1NTcwLDM1NTcyLDM1NTczLDM1NTQ5LDM1NjA0LDM1NTU2LDM1NTUxLDM1NTY4LDM1NTI4LDM1NTUwLDM1NTUzLDM1NTYwLDM1NTgzLDM1NTY3LDM1NTc5LDM1OTg1LDM1OTg2LDM1OTg0LDM2MDg1LDM2MDc4LDM2MDgxLDM2MDgwLDM2MDgzLDM2MjA0LDM2MjA2LDM2MjYxLDM2MjYzLDM2NDAzLDM2NDE0LDM2NDA4LDM2NDE2LDM2NDIxLDM2NDA2LDM2NDEyLDM2NDEzLDM2NDE3LDM2NDAwLDM2NDE1LDM2NTQxLDM2NjYyLDM2NjU0LDM2NjYxLDM2NjU4LDM2NjY1LDM2NjYzLDM2NjYwLDM2OTgyLDM2OTg1LDM2OTg3LDM2OTk4LDM3MTE0LDM3MTcxLDM3MTczLDM3MTc0LDM3MjY3LDM3MjY0LDM3MjY1LDM3MjYxLDM3MjYzLDM3NjcxLDM3NjYyLDM3NjQwLDM3NjYzLDM3NjM4LDM3NjQ3LDM3NzU0LDM3Njg4LDM3NjkyLDM3NjU5LDM3NjY3LDM3NjUwLDM3NjMzLDM3NzAyLDM3Njc3LDM3NjQ2LDM3NjQ1LDM3NTc5LDM3NjYxLDM3NjI2LDM3NjY5LDM3NjUxLDM3NjI1LDM3NjIzLDM3Njg0LDM3NjM0LDM3NjY4LDM3NjMxLDM3NjczLDM3Njg5LDM3Njg1LDM3Njc0LDM3NjUyLDM3NjQ0LDM3NjQzLDM3NjMwLDM3NjQxLDM3NjMyLDM3NjI3LDM3NjU0LDM4MzMyLDM4MzQ5LDM4MzM0LDM4MzI5LDM4MzMwLDM4MzI2LDM4MzM1LDM4MzI1LDM4MzMzLDM4NTY5LDM4NjEyLDM4NjY3LDM4Njc0LDM4NjcyLDM4ODA5LDM4ODA3LDM4ODA0LDM4ODk2LDM4OTA0LDM4OTY1LDM4OTU5LDM4OTYyLDM5MjA0LDM5MTk5LDM5MjA3LDM5MjA5LDM5MzI2LDM5NDA2LDM5NDA0LDM5Mzk3LDM5Mzk2LDM5NDA4LDM5Mzk1LDM5NDAyLDM5NDAxLDM5Mzk5LDM5NjA5LDM5NjE1LDM5NjA0LDM5NjExLDM5NjcwLDM5Njc0LDM5NjczLDM5NjcxLDM5NzMxLDM5ODA4LDM5ODEzLDM5ODE1LDM5ODA0LDM5ODA2LDM5ODAzLDM5ODEwLDM5ODI3LDM5ODI2LDM5ODI0LDM5ODAyLDM5ODI5LDM5ODA1LDM5ODE2LDQwMjI5LDQwMjE1LDQwMjI0LDQwMjIyLDQwMjEyLDQwMjMzLDQwMjIxLDQwMjE2LDQwMjI2LDQwMjA4LDQwMjE3LDQwMjIzLDQwNTg0LDQwNTgyLDQwNTgzLDQwNjIyLDQwNjIxLDQwNjYxLDQwNjYyLDQwNjk4LDQwNzIyLDQwNzY1LDIwNzc0LDIwNzczLDIwNzcwLDIwNzcyLDIwNzY4LDIwNzc3LDIxMjM2LDIyMTYzLDIyMTU2LDIyMTU3LDIyMTUwLDIyMTQ4LDIyMTQ3LDIyMTQyLDIyMTQ2LDIyMTQzLDIyMTQ1LDIyNzQyLDIyNzQwLDIyNzM1LDIyNzM4LDIzMzQxLDIzMzMzLDIzMzQ2LDIzMzMxLDIzMzQwLDIzMzM1LDIzMzM0LDIzMzQzLDIzMzQyLDIzNDE5LDIzNTM3LDIzNTM4LDIzOTkxLDI0MTcyLDI0MTcwLDI0NTEwLDI0NTA3LDI1MDI3LDI1MDEzLDI1MDIwLDI1MDYzLDI1MDU2LDI1MDYxLDI1MDYwLDI1MDY0LDI1MDU0LDI1ODM5LDI1ODMzLDI1ODI3LDI1ODM1LDI1ODI4LDI1ODMyLDI1OTg1LDI1OTg0LDI2MDM4LDI2MDc0LDI2MzIyLDI3Mjc3LDI3Mjg2LDI3MjY1LDI3MzAxLDI3MjczLDI3Mjk1LDI3MjkxLDI3Mjk3LDI3Mjk0LDI3MjcxLDI3MjgzLDI3Mjc4LDI3Mjg1LDI3MjY3LDI3MzA0LDI3MzAwLDI3MjgxLDI3MjYzLDI3MzAyLDI3MjkwLDI3MjY5LDI3Mjc2LDI3MjgyLDI3NDgzLDI3NTY1LDI3NjU3LDI4NjIwLDI4NTg1LDI4NjYwLDI4NjI4LDI4NjQzLDI4NjM2LDI4NjUzLDI4NjQ3LDI4NjQ2LDI4NjM4LDI4NjU4LDI4NjM3LDI4NjQyLDI4NjQ4LDI5MTUzLDI5MTY5LDI5MTYwLDI5MTcwLDI5MTU2LDI5MTY4LDI5MTU0LDI5NTU1LDI5NTUwLDI5NTUxLDI5ODQ3LDI5ODc0LDI5ODY3LDI5ODQwLDI5ODY2LDI5ODY5LDI5ODczLDI5ODYxLDI5ODcxLDI5OTY4LDI5OTY5LDI5OTcwLDI5OTY3LDMwMDg0LDMwMjc1LDMwMjgwLDMwMjgxLDMwMjc5LDMwMzcyLDMwNDQxLDMwNjQ1LDMwNjM1LDMwNjQyLDMwNjQ3LDMwNjQ2LDMwNjQ0LDMwNjQxLDMwNjMyLDMwNzA0LDMwOTYzLDMwOTczLDMwOTc4LDMwOTcxLDMwOTcyLDMwOTYyLDMwOTgxLDMwOTY5LDMwOTc0LDMwOTgwLDMxMTQ3LDMxMTQ0LDMxMzI0LDMxMzIzLDMxMzE4LDMxMzIwLDMxMzE2LDMxMzIyLDMxNDIyLDMxNDI0LDMxNDI1LDMxNzQ5LDMxNzU5LDMxNzMwLDMxNzQ0LDMxNzQzLDMxNzM5LDMxNzU4LDMxNzMyLDMxNzU1LDMxNzMxLDMxNzQ2LDMxNzUzLDMxNzQ3LDMxNzQ1LDMxNzM2LDMxNzQxLDMxNzUwLDMxNzI4LDMxNzI5LDMxNzYwLDMxNzU0LDMxOTc2LDMyMzAxLDMyMzE2LDMyMzIyLDMyMzA3LDM4OTg0LDMyMzEyLDMyMjk4LDMyMzI5LDMyMzIwLDMyMzI3LDMyMjk3LDMyMzMyLDMyMzA0LDMyMzE1LDMyMzEwLDMyMzI0LDMyMzE0LDMyNTgxLDMyNjM5LDMyNjM4LDMyNjM3LDMyNzU2LDMyNzU0LDMyODEyLDMzMjExLDMzMjIwLDMzMjI4LDMzMjI2LDMzMjIxLDMzMjIzLDMzMjEyLDMzMjU3LDMzMzcxLDMzMzcwLDMzMzcyLDM0MTc5LDM0MTc2LDM0MTkxLDM0MjE1LDM0MTk3LDM0MjA4LDM0MTg3LDM0MjExLDM0MTcxLDM0MjEyLDM0MjAyLDM0MjA2LDM0MTY3LDM0MTcyLDM0MTg1LDM0MjA5LDM0MTcwLDM0MTY4LDM0MTM1LDM0MTkwLDM0MTk4LDM0MTgyLDM0MTg5LDM0MjAxLDM0MjA1LDM0MTc3LDM0MjEwLDM0MTc4LDM0MTg0LDM0MTgxLDM0MTY5LDM0MTY2LDM0MjAwLDM0MTkyLDM0MjA3LDM0NDA4LDM0NzUwLDM0NzMwLDM0NzMzLDM0NzU3LDM0NzM2LDM0NzMyLDM0NzQ1LDM0NzQxLDM0NzQ4LDM0NzM0LDM0NzYxLDM0NzU1LDM0NzU0LDM0NzY0LDM0NzQzLDM0NzM1LDM0NzU2LDM0NzYyLDM0NzQwLDM0NzQyLDM0NzUxLDM0NzQ0LDM0NzQ5LDM0NzgyLDM0NzM4LDM1MTI1LDM1MTIzLDM1MTMyLDM1MTM0LDM1MTM3LDM1MTU0LDM1MTI3LDM1MTM4LDM1MjQ1LDM1MjQ3LDM1MjQ2LDM1MzE0LDM1MzE1LDM1NjE0LDM1NjA4LDM1NjA2LDM1NjAxLDM1NTg5LDM1NTk1LDM1NjE4LDM1NTk5LDM1NjAyLDM1NjA1LDM1NTkxLDM1NTk3LDM1NTkyLDM1NTkwLDM1NjEyLDM1NjAzLDM1NjEwLDM1OTE5LDM1OTUyLDM1OTU0LDM1OTUzLDM1OTUxLDM1OTg5LDM1OTg4LDM2MDg5LDM2MjA3LDM2NDMwLDM2NDI5LDM2NDM1LDM2NDMyLDM2NDI4LDM2NDIzLDM2Njc1LDM2NjcyLDM2OTk3LDM2OTkwLDM3MTc2LDM3Mjc0LDM3MjgyLDM3Mjc1LDM3MjczLDM3Mjc5LDM3MjgxLDM3Mjc3LDM3MjgwLDM3NzkzLDM3NzYzLDM3ODA3LDM3NzMyLDM3NzE4LDM3NzAzLDM3NzU2LDM3NzIwLDM3NzI0LDM3NzUwLDM3NzA1LDM3NzEyLDM3NzEzLDM3NzI4LDM3NzQxLDM3Nzc1LDM3NzA4LDM3NzM4LDM3NzUzLDM3NzE5LDM3NzE3LDM3NzE0LDM3NzExLDM3NzQ1LDM3NzUxLDM3NzU1LDM3NzI5LDM3NzI2LDM3NzMxLDM3NzM1LDM3NzYwLDM3NzEwLDM3NzIxLDM4MzQzLDM4MzM2LDM4MzQ1LDM4MzM5LDM4MzQxLDM4MzI3LDM4NTc0LDM4NTc2LDM4NTcyLDM4Njg4LDM4Njg3LDM4NjgwLDM4Njg1LDM4NjgxLDM4ODEwLDM4ODE3LDM4ODEyLDM4ODE0LDM4ODEzLDM4ODY5LDM4ODY4LDM4ODk3LDM4OTc3LDM4OTgwLDM4OTg2LDM4OTg1LDM4OTgxLDM4OTc5LDM5MjA1LDM5MjExLDM5MjEyLDM5MjEwLDM5MjE5LDM5MjE4LDM5MjE1LDM5MjEzLDM5MjE3LDM5MjE2LDM5MzIwLDM5MzMxLDM5MzI5LDM5NDI2LDM5NDE4LDM5NDEyLDM5NDE1LDM5NDE3LDM5NDE2LDM5NDE0LDM5NDE5LDM5NDIxLDM5NDIyLDM5NDIwLDM5NDI3LDM5NjE0LDM5Njc4LDM5Njc3LDM5NjgxLDM5Njc2LDM5NzUyLDM5ODM0LDM5ODQ4LDM5ODM4LDM5ODM1LDM5ODQ2LDM5ODQxLDM5ODQ1LDM5ODQ0LDM5ODE0LDM5ODQyLDM5ODQwLDM5ODU1LDQwMjQzLDQwMjU3LDQwMjk1LDQwMjQ2LDQwMjM4LDQwMjM5LDQwMjQxLDQwMjQ4LDQwMjQwLDQwMjYxLDQwMjU4LDQwMjU5LDQwMjU0LDQwMjQ3LDQwMjU2LDQwMjUzLDMyNzU3LDQwMjM3LDQwNTg2LDQwNTg1LDQwNTg5LDQwNjI0LDQwNjQ4LDQwNjY2LDQwNjk5LDQwNzAzLDQwNzQwLDQwNzM5LDQwNzM4LDQwNzg4LDQwODY0LDIwNzg1LDIwNzgxLDIwNzgyLDIyMTY4LDIyMTcyLDIyMTY3LDIyMTcwLDIyMTczLDIyMTY5LDIyODk2LDIzMzU2LDIzNjU3LDIzNjU4LDI0MDAwLDI0MTczLDI0MTc0LDI1MDQ4LDI1MDU1LDI1MDY5LDI1MDcwLDI1MDczLDI1MDY2LDI1MDcyLDI1MDY3LDI1MDQ2LDI1MDY1LDI1ODU1LDI1ODYwLDI1ODUzLDI1ODQ4LDI1ODU3LDI1ODU5LDI1ODUyLDI2MDA0LDI2MDc1LDI2MzMwLDI2MzMxLDI2MzI4LDI3MzMzLDI3MzIxLDI3MzI1LDI3MzYxLDI3MzM0LDI3MzIyLDI3MzE4LDI3MzE5LDI3MzM1LDI3MzE2LDI3MzA5LDI3NDg2LDI3NTkzLDI3NjU5LDI4Njc5LDI4Njg0LDI4Njg1LDI4NjczLDI4Njc3LDI4NjkyLDI4Njg2LDI4NjcxLDI4NjcyLDI4NjY3LDI4NzEwLDI4NjY4LDI4NjYzLDI4NjgyLDI5MTg1LDI5MTgzLDI5MTc3LDI5MTg3LDI5MTgxLDI5NTU4LDI5ODgwLDI5ODg4LDI5ODc3LDI5ODg5LDI5ODg2LDI5ODc4LDI5ODgzLDI5ODkwLDI5OTcyLDI5OTcxLDMwMzAwLDMwMzA4LDMwMjk3LDMwMjg4LDMwMjkxLDMwMjk1LDMwMjk4LDMwMzc0LDMwMzk3LDMwNDQ0LDMwNjU4LDMwNjUwLDMwOTc1LDMwOTg4LDMwOTk1LDMwOTk2LDMwOTg1LDMwOTkyLDMwOTk0LDMwOTkzLDMxMTQ5LDMxMTQ4LDMxMzI3LDMxNzcyLDMxNzg1LDMxNzY5LDMxNzc2LDMxNzc1LDMxNzg5LDMxNzczLDMxNzgyLDMxNzg0LDMxNzc4LDMxNzgxLDMxNzkyLDMyMzQ4LDMyMzM2LDMyMzQyLDMyMzU1LDMyMzQ0LDMyMzU0LDMyMzUxLDMyMzM3LDMyMzUyLDMyMzQzLDMyMzM5LDMyNjkzLDMyNjkxLDMyNzU5LDMyNzYwLDMyODg1LDMzMjMzLDMzMjM0LDMzMjMyLDMzMzc1LDMzMzc0LDM0MjI4LDM0MjQ2LDM0MjQwLDM0MjQzLDM0MjQyLDM0MjI3LDM0MjI5LDM0MjM3LDM0MjQ3LDM0MjQ0LDM0MjM5LDM0MjUxLDM0MjU0LDM0MjQ4LDM0MjQ1LDM0MjI1LDM0MjMwLDM0MjU4LDM0MzQwLDM0MjMyLDM0MjMxLDM0MjM4LDM0NDA5LDM0NzkxLDM0NzkwLDM0Nzg2LDM0Nzc5LDM0Nzk1LDM0Nzk0LDM0Nzg5LDM0NzgzLDM0ODAzLDM0Nzg4LDM0NzcyLDM0NzgwLDM0NzcxLDM0Nzk3LDM0Nzc2LDM0Nzg3LDM0NzI0LDM0Nzc1LDM0Nzc3LDM0ODE3LDM0ODA0LDM0NzkyLDM0NzgxLDM1MTU1LDM1MTQ3LDM1MTUxLDM1MTQ4LDM1MTQyLDM1MTUyLDM1MTUzLDM1MTQ1LDM1NjI2LDM1NjIzLDM1NjE5LDM1NjM1LDM1NjMyLDM1NjM3LDM1NjU1LDM1NjMxLDM1NjQ0LDM1NjQ2LDM1NjMzLDM1NjIxLDM1NjM5LDM1NjIyLDM1NjM4LDM1NjMwLDM1NjIwLDM1NjQzLDM1NjQ1LDM1NjQyLDM1OTA2LDM1OTU3LDM1OTkzLDM1OTkyLDM1OTkxLDM2MDk0LDM2MTAwLDM2MDk4LDM2MDk2LDM2NDQ0LDM2NDUwLDM2NDQ4LDM2NDM5LDM2NDM4LDM2NDQ2LDM2NDUzLDM2NDU1LDM2NDQzLDM2NDQyLDM2NDQ5LDM2NDQ1LDM2NDU3LDM2NDM2LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgzLDM3MTYwLDM3MTc4LDM3MTc5LDM3MTgyLDM3Mjg4LDM3Mjg1LDM3Mjg3LDM3Mjk1LDM3MjkwLDM3ODEzLDM3NzcyLDM3Nzc4LDM3ODE1LDM3Nzg3LDM3Nzg5LDM3NzY5LDM3Nzk5LDM3Nzc0LDM3ODAyLDM3NzkwLDM3Nzk4LDM3NzgxLDM3NzY4LDM3Nzg1LDM3NzkxLDM3NzczLDM3ODA5LDM3Nzc3LDM3ODEwLDM3Nzk2LDM3ODAwLDM3ODEyLDM3Nzk1LDM3Nzk3LDM4MzU0LDM4MzU1LDM4MzUzLDM4NTc5LDM4NjE1LDM4NjE4LDI0MDAyLDM4NjIzLDM4NjE2LDM4NjIxLDM4NjkxLDM4NjkwLDM4NjkzLDM4ODI4LDM4ODMwLDM4ODI0LDM4ODI3LDM4ODIwLDM4ODI2LDM4ODE4LDM4ODIxLDM4ODcxLDM4ODczLDM4ODcwLDM4ODcyLDM4OTA2LDM4OTkyLDM4OTkzLDM4OTk0LDM5MDk2LDM5MjMzLDM5MjI4LDM5MjI2LDM5NDM5LDM5NDM1LDM5NDMzLDM5NDM3LDM5NDI4LDM5NDQxLDM5NDM0LDM5NDI5LDM5NDMxLDM5NDMwLDM5NjE2LDM5NjQ0LDM5Njg4LDM5Njg0LDM5Njg1LDM5NzIxLDM5NzMzLDM5NzU0LDM5NzU2LDM5NzU1LDM5ODc5LDM5ODc4LDM5ODc1LDM5ODcxLDM5ODczLDM5ODYxLDM5ODY0LDM5ODkxLDM5ODYyLDM5ODc2LDM5ODY1LDM5ODY5LDQwMjg0LDQwMjc1LDQwMjcxLDQwMjY2LDQwMjgzLDQwMjY3LDQwMjgxLDQwMjc4LDQwMjY4LDQwMjc5LDQwMjc0LDQwMjc2LDQwMjg3LDQwMjgwLDQwMjgyLDQwNTkwLDQwNTg4LDQwNjcxLDQwNzA1LDQwNzA0LDQwNzI2LDQwNzQxLDQwNzQ3LDQwNzQ2LDQwNzQ1LDQwNzQ0LDQwNzgwLDQwNzg5LDIwNzg4LDIwNzg5LDIxMTQyLDIxMjM5LDIxNDI4LDIyMTg3LDIyMTg5LDIyMTgyLDIyMTgzLDIyMTg2LDIyMTg4LDIyNzQ2LDIyNzQ5LDIyNzQ3LDIyODAyLDIzMzU3LDIzMzU4LDIzMzU5LDI0MDAzLDI0MTc2LDI0NTExLDI1MDgzLDI1ODYzLDI1ODcyLDI1ODY5LDI1ODY1LDI1ODY4LDI1ODcwLDI1OTg4LDI2MDc4LDI2MDc3LDI2MzM0LDI3MzY3LDI3MzYwLDI3MzQwLDI3MzQ1LDI3MzUzLDI3MzM5LDI3MzU5LDI3MzU2LDI3MzQ0LDI3MzcxLDI3MzQzLDI3MzQxLDI3MzU4LDI3NDg4LDI3NTY4LDI3NjYwLDI4Njk3LDI4NzExLDI4NzA0LDI4Njk0LDI4NzE1LDI4NzA1LDI4NzA2LDI4NzA3LDI4NzEzLDI4Njk1LDI4NzA4LDI4NzAwLDI4NzE0LDI5MTk2LDI5MTk0LDI5MTkxLDI5MTg2LDI5MTg5LDI5MzQ5LDI5MzUwLDI5MzQ4LDI5MzQ3LDI5MzQ1LDI5ODk5LDI5ODkzLDI5ODc5LDI5ODkxLDI5OTc0LDMwMzA0LDMwNjY1LDMwNjY2LDMwNjYwLDMwNzA1LDMxMDA1LDMxMDAzLDMxMDA5LDMxMDA0LDMwOTk5LDMxMDA2LDMxMTUyLDMxMzM1LDMxMzM2LDMxNzk1LDMxODA0LDMxODAxLDMxNzg4LDMxODAzLDMxOTgwLDMxOTc4LDMyMzc0LDMyMzczLDMyMzc2LDMyMzY4LDMyMzc1LDMyMzY3LDMyMzc4LDMyMzcwLDMyMzcyLDMyMzYwLDMyNTg3LDMyNTg2LDMyNjQzLDMyNjQ2LDMyNjk1LDMyNzY1LDMyNzY2LDMyODg4LDMzMjM5LDMzMjM3LDMzMzgwLDMzMzc3LDMzMzc5LDM0MjgzLDM0Mjg5LDM0Mjg1LDM0MjY1LDM0MjczLDM0MjgwLDM0MjY2LDM0MjYzLDM0Mjg0LDM0MjkwLDM0Mjk2LDM0MjY0LDM0MjcxLDM0Mjc1LDM0MjY4LDM0MjU3LDM0Mjg4LDM0Mjc4LDM0Mjg3LDM0MjcwLDM0Mjc0LDM0ODE2LDM0ODEwLDM0ODE5LDM0ODA2LDM0ODA3LDM0ODI1LDM0ODI4LDM0ODI3LDM0ODIyLDM0ODEyLDM0ODI0LDM0ODE1LDM0ODI2LDM0ODE4LDM1MTcwLDM1MTYyLDM1MTYzLDM1MTU5LDM1MTY5LDM1MTY0LDM1MTYwLDM1MTY1LDM1MTYxLDM1MjA4LDM1MjU1LDM1MjU0LDM1MzE4LDM1NjY0LDM1NjU2LDM1NjU4LDM1NjQ4LDM1NjY3LDM1NjcwLDM1NjY4LDM1NjU5LDM1NjY5LDM1NjY1LDM1NjUwLDM1NjY2LDM1NjcxLDM1OTA3LDM1OTU5LDM1OTU4LDM1OTk0LDM2MTAyLDM2MTAzLDM2MTA1LDM2MjY4LDM2MjY2LDM2MjY5LDM2MjY3LDM2NDYxLDM2NDcyLDM2NDY3LDM2NDU4LDM2NDYzLDM2NDc1LDM2NTQ2LDM2NjkwLDM2Njg5LDM2Njg3LDM2Njg4LDM2NjkxLDM2Nzg4LDM3MTg0LDM3MTgzLDM3Mjk2LDM3MjkzLDM3ODU0LDM3ODMxLDM3ODM5LDM3ODI2LDM3ODUwLDM3ODQwLDM3ODgxLDM3ODY4LDM3ODM2LDM3ODQ5LDM3ODAxLDM3ODYyLDM3ODM0LDM3ODQ0LDM3ODcwLDM3ODU5LDM3ODQ1LDM3ODI4LDM3ODM4LDM3ODI0LDM3ODQyLDM3ODYzLDM4MjY5LDM4MzYyLDM4MzYzLDM4NjI1LDM4Njk3LDM4Njk5LDM4NzAwLDM4Njk2LDM4Njk0LDM4ODM1LDM4ODM5LDM4ODM4LDM4ODc3LDM4ODc4LDM4ODc5LDM5MDA0LDM5MDAxLDM5MDA1LDM4OTk5LDM5MTAzLDM5MTAxLDM5MDk5LDM5MTAyLDM5MjQwLDM5MjM5LDM5MjM1LDM5MzM0LDM5MzM1LDM5NDUwLDM5NDQ1LDM5NDYxLDM5NDUzLDM5NDYwLDM5NDUxLDM5NDU4LDM5NDU2LDM5NDYzLDM5NDU5LDM5NDU0LDM5NDUyLDM5NDQ0LDM5NjE4LDM5NjkxLDM5NjkwLDM5Njk0LDM5NjkyLDM5NzM1LDM5OTE0LDM5OTE1LDM5OTA0LDM5OTAyLDM5OTA4LDM5OTEwLDM5OTA2LDM5OTIwLDM5ODkyLDM5ODk1LDM5OTE2LDM5OTAwLDM5ODk3LDM5OTA5LDM5ODkzLDM5OTA1LDM5ODk4LDQwMzExLDQwMzIxLDQwMzMwLDQwMzI0LDQwMzI4LDQwMzA1LDQwMzIwLDQwMzEyLDQwMzI2LDQwMzMxLDQwMzMyLDQwMzE3LDQwMjk5LDQwMzA4LDQwMzA5LDQwMzA0LDQwMjk3LDQwMzI1LDQwMzA3LDQwMzE1LDQwMzIyLDQwMzAzLDQwMzEzLDQwMzE5LDQwMzI3LDQwMjk2LDQwNTk2LDQwNTkzLDQwNjQwLDQwNzAwLDQwNzQ5LDQwNzY4LDQwNzY5LDQwNzgxLDQwNzkwLDQwNzkxLDQwNzkyLDIxMzAzLDIyMTk0LDIyMTk3LDIyMTk1LDIyNzU1LDIzMzY1LDI0MDA2LDI0MDA3LDI0MzAyLDI0MzAzLDI0NTEyLDI0NTEzLDI1MDgxLDI1ODc5LDI1ODc4LDI1ODc3LDI1ODc1LDI2MDc5LDI2MzQ0LDI2MzM5LDI2MzQwLDI3Mzc5LDI3Mzc2LDI3MzcwLDI3MzY4LDI3Mzg1LDI3Mzc3LDI3Mzc0LDI3Mzc1LDI4NzMyLDI4NzI1LDI4NzE5LDI4NzI3LDI4NzI0LDI4NzIxLDI4NzM4LDI4NzI4LDI4NzM1LDI4NzMwLDI4NzI5LDI4NzM2LDI4NzMxLDI4NzIzLDI4NzM3LDI5MjAzLDI5MjA0LDI5MzUyLDI5NTY1LDI5NTY0LDI5ODgyLDMwMzc5LDMwMzc4LDMwMzk4LDMwNDQ1LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjY5LDMwNzA2LDMxMDEzLDMxMDExLDMxMDE1LDMxMDE2LDMxMDEyLDMxMDE3LDMxMTU0LDMxMzQyLDMxMzQwLDMxMzQxLDMxNDc5LDMxODE3LDMxODE2LDMxODE4LDMxODE1LDMxODEzLDMxOTgyLDMyMzc5LDMyMzgyLDMyMzg1LDMyMzg0LDMyNjk4LDMyNzY3LDMyODg5LDMzMjQzLDMzMjQxLDMzMjkxLDMzMzg0LDMzMzg1LDM0MzM4LDM0MzAzLDM0MzA1LDM0MzAyLDM0MzMxLDM0MzA0LDM0Mjk0LDM0MzA4LDM0MzEzLDM0MzA5LDM0MzE2LDM0MzAxLDM0ODQxLDM0ODMyLDM0ODMzLDM0ODM5LDM0ODM1LDM0ODM4LDM1MTcxLDM1MTc0LDM1MjU3LDM1MzE5LDM1NjgwLDM1NjkwLDM1Njc3LDM1Njg4LDM1NjgzLDM1Njg1LDM1Njg3LDM1NjkzLDM2MjcwLDM2NDg2LDM2NDg4LDM2NDg0LDM2Njk3LDM2Njk0LDM2Njk1LDM2NjkzLDM2Njk2LDM2Njk4LDM3MDA1LDM3MTg3LDM3MTg1LDM3MzAzLDM3MzAxLDM3Mjk4LDM3Mjk5LDM3ODk5LDM3OTA3LDM3ODgzLDM3OTIwLDM3OTAzLDM3OTA4LDM3ODg2LDM3OTA5LDM3OTA0LDM3OTI4LDM3OTEzLDM3OTAxLDM3ODc3LDM3ODg4LDM3ODc5LDM3ODk1LDM3OTAyLDM3OTEwLDM3OTA2LDM3ODgyLDM3ODk3LDM3ODgwLDM3ODk4LDM3ODg3LDM3ODg0LDM3OTAwLDM3ODc4LDM3OTA1LDM3ODk0LDM4MzY2LDM4MzY4LDM4MzY3LDM4NzAyLDM4NzAzLDM4ODQxLDM4ODQzLDM4OTA5LDM4OTEwLDM5MDA4LDM5MDEwLDM5MDExLDM5MDA3LDM5MTA1LDM5MTA2LDM5MjQ4LDM5MjQ2LDM5MjU3LDM5MjQ0LDM5MjQzLDM5MjUxLDM5NDc0LDM5NDc2LDM5NDczLDM5NDY4LDM5NDY2LDM5NDc4LDM5NDY1LDM5NDcwLDM5NDgwLDM5NDY5LDM5NjIzLDM5NjI2LDM5NjIyLDM5Njk2LDM5Njk4LDM5Njk3LDM5OTQ3LDM5OTQ0LDM5OTI3LDM5OTQxLDM5OTU0LDM5OTI4LDQwMDAwLDM5OTQzLDM5OTUwLDM5OTQyLDM5OTU5LDM5OTU2LDM5OTQ1LDQwMzUxLDQwMzQ1LDQwMzU2LDQwMzQ5LDQwMzM4LDQwMzQ0LDQwMzM2LDQwMzQ3LDQwMzUyLDQwMzQwLDQwMzQ4LDQwMzYyLDQwMzQzLDQwMzUzLDQwMzQ2LDQwMzU0LDQwMzYwLDQwMzUwLDQwMzU1LDQwMzgzLDQwMzYxLDQwMzQyLDQwMzU4LDQwMzU5LDQwNjAxLDQwNjAzLDQwNjAyLDQwNjc3LDQwNjc2LDQwNjc5LDQwNjc4LDQwNzUyLDQwNzUwLDQwNzk1LDQwODAwLDQwNzk4LDQwNzk3LDQwNzkzLDQwODQ5LDIwNzk0LDIwNzkzLDIxMTQ0LDIxMTQzLDIyMjExLDIyMjA1LDIyMjA2LDIzMzY4LDIzMzY3LDI0MDExLDI0MDE1LDI0MzA1LDI1MDg1LDI1ODgzLDI3Mzk0LDI3Mzg4LDI3Mzk1LDI3Mzg0LDI3MzkyLDI4NzM5LDI4NzQwLDI4NzQ2LDI4NzQ0LDI4NzQ1LDI4NzQxLDI4NzQyLDI5MjEzLDI5MjEwLDI5MjA5LDI5NTY2LDI5OTc1LDMwMzE0LDMwNjcyLDMxMDIxLDMxMDI1LDMxMDIzLDMxODI4LDMxODI3LDMxOTg2LDMyMzk0LDMyMzkxLDMyMzkyLDMyMzk1LDMyMzkwLDMyMzk3LDMyNTg5LDMyNjk5LDMyODE2LDMzMjQ1LDM0MzI4LDM0MzQ2LDM0MzQyLDM0MzM1LDM0MzM5LDM0MzMyLDM0MzI5LDM0MzQzLDM0MzUwLDM0MzM3LDM0MzM2LDM0MzQ1LDM0MzM0LDM0MzQxLDM0ODU3LDM0ODQ1LDM0ODQzLDM0ODQ4LDM0ODUyLDM0ODQ0LDM0ODU5LDM0ODkwLDM1MTgxLDM1MTc3LDM1MTgyLDM1MTc5LDM1MzIyLDM1NzA1LDM1NzA0LDM1NjUzLDM1NzA2LDM1NzA3LDM2MTEyLDM2MTE2LDM2MjcxLDM2NDk0LDM2NDkyLDM2NzAyLDM2Njk5LDM2NzAxLDM3MTkwLDM3MTg4LDM3MTg5LDM3MzA1LDM3OTUxLDM3OTQ3LDM3OTQyLDM3OTI5LDM3OTQ5LDM3OTQ4LDM3OTM2LDM3OTQ1LDM3OTMwLDM3OTQzLDM3OTMyLDM3OTUyLDM3OTM3LDM4MzczLDM4MzcyLDM4MzcxLDM4NzA5LDM4NzE0LDM4ODQ3LDM4ODgxLDM5MDEyLDM5MTEzLDM5MTEwLDM5MTA0LDM5MjU2LDM5MjU0LDM5NDgxLDM5NDg1LDM5NDk0LDM5NDkyLDM5NDkwLDM5NDg5LDM5NDgyLDM5NDg3LDM5NjI5LDM5NzAxLDM5NzAzLDM5NzA0LDM5NzAyLDM5NzM4LDM5NzYyLDM5OTc5LDM5OTY1LDM5OTY0LDM5OTgwLDM5OTcxLDM5OTc2LDM5OTc3LDM5OTcyLDM5OTY5LDQwMzc1LDQwMzc0LDQwMzgwLDQwMzg1LDQwMzkxLDQwMzk0LDQwMzk5LDQwMzgyLDQwMzg5LDQwMzg3LDQwMzc5LDQwMzczLDQwMzk4LDQwMzc3LDQwMzc4LDQwMzY0LDQwMzkyLDQwMzY5LDQwMzY1LDQwMzk2LDQwMzcxLDQwMzk3LDQwMzcwLDQwNTcwLDQwNjA0LDQwNjgzLDQwNjg2LDQwNjg1LDQwNzMxLDQwNzI4LDQwNzMwLDQwNzUzLDQwNzgyLDQwODA1LDQwODA0LDQwODUwLDIwMTUzLDIyMjE0LDIyMjEzLDIyMjE5LDIyODk3LDIzMzcxLDIzMzcyLDI0MDIxLDI0MDE3LDI0MzA2LDI1ODg5LDI1ODg4LDI1ODk0LDI1ODkwLDI3NDAzLDI3NDAwLDI3NDAxLDI3NjYxLDI4NzU3LDI4NzU4LDI4NzU5LDI4NzU0LDI5MjE0LDI5MjE1LDI5MzUzLDI5NTY3LDI5OTEyLDI5OTA5LDI5OTEzLDI5OTExLDMwMzE3LDMwMzgxLDMxMDI5LDMxMTU2LDMxMzQ0LDMxMzQ1LDMxODMxLDMxODM2LDMxODMzLDMxODM1LDMxODM0LDMxOTg4LDMxOTg1LDMyNDAxLDMyNTkxLDMyNjQ3LDMzMjQ2LDMzMzg3LDM0MzU2LDM0MzU3LDM0MzU1LDM0MzQ4LDM0MzU0LDM0MzU4LDM0ODYwLDM0ODU2LDM0ODU0LDM0ODU4LDM0ODUzLDM1MTg1LDM1MjYzLDM1MjYyLDM1MzIzLDM1NzEwLDM1NzE2LDM1NzE0LDM1NzE4LDM1NzE3LDM1NzExLDM2MTE3LDM2NTAxLDM2NTAwLDM2NTA2LDM2NDk4LDM2NDk2LDM2NTAyLDM2NTAzLDM2NzA0LDM2NzA2LDM3MTkxLDM3OTY0LDM3OTY4LDM3OTYyLDM3OTYzLDM3OTY3LDM3OTU5LDM3OTU3LDM3OTYwLDM3OTYxLDM3OTU4LDM4NzE5LDM4ODgzLDM5MDE4LDM5MDE3LDM5MTE1LDM5MjUyLDM5MjU5LDM5NTAyLDM5NTA3LDM5NTA4LDM5NTAwLDM5NTAzLDM5NDk2LDM5NDk4LDM5NDk3LDM5NTA2LDM5NTA0LDM5NjMyLDM5NzA1LDM5NzIzLDM5NzM5LDM5NzY2LDM5NzY1LDQwMDA2LDQwMDA4LDM5OTk5LDQwMDA0LDM5OTkzLDM5OTg3LDQwMDAxLDM5OTk2LDM5OTkxLDM5OTg4LDM5OTg2LDM5OTk3LDM5OTkwLDQwNDExLDQwNDAyLDQwNDE0LDQwNDEwLDQwMzk1LDQwNDAwLDQwNDEyLDQwNDAxLDQwNDE1LDQwNDI1LDQwNDA5LDQwNDA4LDQwNDA2LDQwNDM3LDQwNDA1LDQwNDEzLDQwNjMwLDQwNjg4LDQwNzU3LDQwNzU1LDQwNzU0LDQwNzcwLDQwODExLDQwODUzLDQwODY2LDIwNzk3LDIxMTQ1LDIyNzYwLDIyNzU5LDIyODk4LDIzMzczLDI0MDI0LDM0ODYzLDI0Mzk5LDI1MDg5LDI1MDkxLDI1MDkyLDI1ODk3LDI1ODkzLDI2MDA2LDI2MzQ3LDI3NDA5LDI3NDEwLDI3NDA3LDI3NTk0LDI4NzYzLDI4NzYyLDI5MjE4LDI5NTcwLDI5NTY5LDI5NTcxLDMwMzIwLDMwNjc2LDMxODQ3LDMxODQ2LDMyNDA1LDMzMzg4LDM0MzYyLDM0MzY4LDM0MzYxLDM0MzY0LDM0MzUzLDM0MzYzLDM0MzY2LDM0ODY0LDM0ODY2LDM0ODYyLDM0ODY3LDM1MTkwLDM1MTg4LDM1MTg3LDM1MzI2LDM1NzI0LDM1NzI2LDM1NzIzLDM1NzIwLDM1OTA5LDM2MTIxLDM2NTA0LDM2NzA4LDM2NzA3LDM3MzA4LDM3OTg2LDM3OTczLDM3OTgxLDM3OTc1LDM3OTgyLDM4ODUyLDM4ODUzLDM4OTEyLDM5NTEwLDM5NTEzLDM5NzEwLDM5NzExLDM5NzEyLDQwMDE4LDQwMDI0LDQwMDE2LDQwMDEwLDQwMDEzLDQwMDExLDQwMDIxLDQwMDI1LDQwMDEyLDQwMDE0LDQwNDQzLDQwNDM5LDQwNDMxLDQwNDE5LDQwNDI3LDQwNDQwLDQwNDIwLDQwNDM4LDQwNDE3LDQwNDMwLDQwNDIyLDQwNDM0LDQwNDMyLDQwNDE4LDQwNDI4LDQwNDM2LDQwNDM1LDQwNDI0LDQwNDI5LDQwNjQyLDQwNjU2LDQwNjkwLDQwNjkxLDQwNzEwLDQwNzMyLDQwNzYwLDQwNzU5LDQwNzU4LDQwNzcxLDQwNzgzLDQwODE3LDQwODE2LDQwODE0LDQwODE1LDIyMjI3LDIyMjIxLDIzMzc0LDIzNjYxLDI1OTAxLDI2MzQ5LDI2MzUwLDI3NDExLDI4NzY3LDI4NzY5LDI4NzY1LDI4NzY4LDI5MjE5LDI5OTE1LDI5OTI1LDMwNjc3LDMxMDMyLDMxMTU5LDMxMTU4LDMxODUwLDMyNDA3LDMyNjQ5LDMzMzg5LDM0MzcxLDM0ODcyLDM0ODcxLDM0ODY5LDM0ODkxLDM1NzMyLDM1NzMzLDM2NTEwLDM2NTExLDM2NTEyLDM2NTA5LDM3MzEwLDM3MzA5LDM3MzE0LDM3OTk1LDM3OTkyLDM3OTkzLDM4NjI5LDM4NzI2LDM4NzIzLDM4NzI3LDM4ODU1LDM4ODg1LDM5NTE4LDM5NjM3LDM5NzY5LDQwMDM1LDQwMDM5LDQwMDM4LDQwMDM0LDQwMDMwLDQwMDMyLDQwNDUwLDQwNDQ2LDQwNDU1LDQwNDUxLDQwNDU0LDQwNDUzLDQwNDQ4LDQwNDQ5LDQwNDU3LDQwNDQ3LDQwNDQ1LDQwNDUyLDQwNjA4LDQwNzM0LDQwNzc0LDQwODIwLDQwODIxLDQwODIyLDIyMjI4LDI1OTAyLDI2MDQwLDI3NDE2LDI3NDE3LDI3NDE1LDI3NDE4LDI4NzcwLDI5MjIyLDI5MzU0LDMwNjgwLDMwNjgxLDMxMDMzLDMxODQ5LDMxODUxLDMxOTkwLDMyNDEwLDMyNDA4LDMyNDExLDMyNDA5LDMzMjQ4LDMzMjQ5LDM0Mzc0LDM0Mzc1LDM0Mzc2LDM1MTkzLDM1MTk0LDM1MTk2LDM1MTk1LDM1MzI3LDM1NzM2LDM1NzM3LDM2NTE3LDM2NTE2LDM2NTE1LDM3OTk4LDM3OTk3LDM3OTk5LDM4MDAxLDM4MDAzLDM4NzI5LDM5MDI2LDM5MjYzLDQwMDQwLDQwMDQ2LDQwMDQ1LDQwNDU5LDQwNDYxLDQwNDY0LDQwNDYzLDQwNDY2LDQwNDY1LDQwNjA5LDQwNjkzLDQwNzEzLDQwNzc1LDQwODI0LDQwODI3LDQwODI2LDQwODI1LDIyMzAyLDI4Nzc0LDMxODU1LDM0ODc2LDM2Mjc0LDM2NTE4LDM3MzE1LDM4MDA0LDM4MDA4LDM4MDA2LDM4MDA1LDM5NTIwLDQwMDUyLDQwMDUxLDQwMDQ5LDQwMDUzLDQwNDY4LDQwNDY3LDQwNjk0LDQwNzE0LDQwODY4LDI4Nzc2LDI4NzczLDMxOTkxLDM0NDEwLDM0ODc4LDM0ODc3LDM0ODc5LDM1NzQyLDM1OTk2LDM2NTIxLDM2NTUzLDM4NzMxLDM5MDI3LDM5MDI4LDM5MTE2LDM5MjY1LDM5MzM5LDM5NTI0LDM5NTI2LDM5NTI3LDM5NzE2LDQwNDY5LDQwNDcxLDQwNzc2LDI1MDk1LDI3NDIyLDI5MjIzLDM0MzgwLDM2NTIwLDM4MDE4LDM4MDE2LDM4MDE3LDM5NTI5LDM5NTI4LDM5NzI2LDQwNDczLDI5MjI1LDM0Mzc5LDM1NzQzLDM4MDE5LDQwMDU3LDQwNjMxLDMwMzI1LDM5NTMxLDQwMDU4LDQwNDc3LDI4Nzc3LDI4Nzc4LDQwNjEyLDQwODMwLDQwNzc3LDQwODU2LDMwODQ5LDM3NTYxLDM1MDIzLDIyNzE1LDI0NjU4LDMxOTExLDIzMjkwLDk1NTYsOTU3NCw5NTU5LDk1NjgsOTU4MCw5NTcxLDk1NjIsOTU3Nyw5NTY1LDk1NTQsOTU3Miw5NTU3LDk1NjYsOTU3OCw5NTY5LDk1NjAsOTU3NSw5NTYzLDk1NTUsOTU3Myw5NTU4LDk1NjcsOTU3OSw5NTcwLDk1NjEsOTU3Niw5NTY0LDk1NTMsOTU1Miw5NTgxLDk1ODIsOTU4NCw5NTgzLDY1NTE3LDEzMjQyMywzNzU5NSwxMzI1NzUsMTQ3Mzk3LDM0MTI0LDE3MDc3LDI5Njc5LDIwOTE3LDEzODk3LDE0OTgyNiwxNjYzNzIsMzc3MDAsMTM3NjkxLDMzNTE4LDE0NjYzMiwzMDc4MCwyNjQzNiwyNTMxMSwxNDk4MTEsMTY2MzE0LDEzMTc0NCwxNTg2NDMsMTM1OTQxLDIwMzk1LDE0MDUyNSwyMDQ4OCwxNTkwMTcsMTYyNDM2LDE0NDg5NiwxNTAxOTMsMTQwNTYzLDIwNTIxLDEzMTk2NiwyNDQ4NCwxMzE5NjgsMTMxOTExLDI4Mzc5LDEzMjEyNywyMDYwNSwyMDczNywxMzQzNCwyMDc1MCwzOTAyMCwxNDE0NywzMzgxNCwxNDk5MjQsMTMyMjMxLDIwODMyLDE0NDMwOCwyMDg0MiwxMzQxNDMsMTM5NTE2LDEzMTgxMywxNDA1OTIsMTMyNDk0LDE0MzkyMywxMzc2MDMsMjM0MjYsMzQ2ODUsMTMyNTMxLDE0NjU4NSwyMDkxNCwyMDkyMCw0MDI0NCwyMDkzNywyMDk0MywyMDk0NSwxNTU4MCwyMDk0NywxNTAxODIsMjA5MTUsMjA5NjIsMjEzMTQsMjA5NzMsMzM3NDEsMjY5NDIsMTQ1MTk3LDI0NDQzLDIxMDAzLDIxMDMwLDIxMDUyLDIxMTczLDIxMDc5LDIxMTQwLDIxMTc3LDIxMTg5LDMxNzY1LDM0MTE0LDIxMjE2LDM0MzE3LDE1ODQ4MywyMTI1MywxNjY2MjIsMjE4MzMsMjgzNzcsMTQ3MzI4LDEzMzQ2MCwxNDc0MzYsMjEyOTksMjEzMTYsMTM0MTE0LDI3ODUxLDEzNjk5OCwyNjY1MSwyOTY1MywyNDY1MCwxNjA0MiwxNDU0MCwxMzY5MzYsMjkxNDksMTc1NzAsMjEzNTcsMjEzNjQsMTY1NTQ3LDIxMzc0LDIxMzc1LDEzNjU5OCwxMzY3MjMsMzA2OTQsMjEzOTUsMTY2NTU1LDIxNDA4LDIxNDE5LDIxNDIyLDI5NjA3LDE1MzQ1OCwxNjIxNywyOTU5NiwyMTQ0MSwyMTQ0NSwyNzcyMSwyMDA0MSwyMjUyNiwyMTQ2NSwxNTAxOSwxMzQwMzEsMjE0NzIsMTQ3NDM1LDE0Mjc1NSwyMTQ5NCwxMzQyNjMsMjE1MjMsMjg3OTMsMjE4MDMsMjYxOTksMjc5OTUsMjE2MTMsMTU4NTQ3LDEzNDUxNiwyMTg1MywyMTY0NywyMTY2OCwxODM0MiwxMzY5NzMsMTM0ODc3LDE1Nzk2LDEzNDQ3NywxNjYzMzIsMTQwOTUyLDIxODMxLDE5NjkzLDIxNTUxLDI5NzE5LDIxODk0LDIxOTI5LDIyMDIxLDEzNzQzMSwxNDc1MTQsMTc3NDYsMTQ4NTMzLDI2MjkxLDEzNTM0OCwyMjA3MSwyNjMxNywxNDQwMTAsMjYyNzYsMjYyODUsMjIwOTMsMjIwOTUsMzA5NjEsMjIyNTcsMzg3OTEsMjE1MDIsMjIyNzIsMjIyNTUsMjIyNTMsMTY2NzU4LDEzODU5LDEzNTc1OSwyMjM0MiwxNDc4NzcsMjc3NTgsMjg4MTEsMjIzMzgsMTQwMDEsMTU4ODQ2LDIyNTAyLDEzNjIxNCwyMjUzMSwxMzYyNzYsMTQ4MzIzLDIyNTY2LDE1MDUxNywyMjYyMCwyMjY5OCwxMzY2NSwyMjc1MiwyMjc0OCwxMzU3NDAsMjI3NzksMjM1NTEsMjIzMzksMTcyMzY4LDE0ODA4OCwzNzg0MywxMzcyOSwyMjgxNSwyNjc5MCwxNDAxOSwyODI0OSwxMzY3NjYsMjMwNzYsMjE4NDMsMTM2ODUwLDM0MDUzLDIyOTg1LDEzNDQ3OCwxNTg4NDksMTU5MDE4LDEzNzE4MCwyMzAwMSwxMzcyMTEsMTM3MTM4LDE1OTE0MiwyODAxNywxMzcyNTYsMTM2OTE3LDIzMDMzLDE1OTMwMSwyMzIxMSwyMzEzOSwxNDA1NCwxNDk5MjksMjMxNTksMTQwODgsMjMxOTAsMjk3OTcsMjMyNTEsMTU5NjQ5LDE0MDYyOCwxNTc0OSwxMzc0ODksMTQxMzAsMTM2ODg4LDI0MTk1LDIxMjAwLDIzNDE0LDI1OTkyLDIzNDIwLDE2MjMxOCwxNjM4OCwxODUyNSwxMzE1ODgsMjM1MDksMjQ5MjgsMTM3NzgwLDE1NDA2MCwxMzI1MTcsMjM1MzksMjM0NTMsMTk3MjgsMjM1NTcsMTM4MDUyLDIzNTcxLDI5NjQ2LDIzNTcyLDEzODQwNSwxNTg1MDQsMjM2MjUsMTg2NTMsMjM2ODUsMjM3ODUsMjM3OTEsMjM5NDcsMTM4NzQ1LDEzODgwNywyMzgyNCwyMzgzMiwyMzg3OCwxMzg5MTYsMjM3MzgsMjQwMjMsMzM1MzIsMTQzODEsMTQ5NzYxLDEzOTMzNywxMzk2MzUsMzM0MTUsMTQzOTAsMTUyOTgsMjQxMTAsMjcyNzQsMjQxODEsMjQxODYsMTQ4NjY4LDEzNDM1NSwyMTQxNCwyMDE1MSwyNDI3MiwyMTQxNiwxMzcwNzMsMjQwNzMsMjQzMDgsMTY0OTk0LDI0MzEzLDI0MzE1LDE0NDk2LDI0MzE2LDI2Njg2LDM3OTE1LDI0MzMzLDEzMTUyMSwxOTQ3MDgsMTUwNzAsMTg2MDYsMTM1OTk0LDI0Mzc4LDE1NzgzMiwxNDAyNDAsMjQ0MDgsMTQwNDAxLDI0NDE5LDM4ODQ1LDE1OTM0MiwyNDQzNCwzNzY5NiwxNjY0NTQsMjQ0ODcsMjM5OTAsMTU3MTEsMTUyMTQ0LDEzOTExNCwxNTk5OTIsMTQwOTA0LDM3MzM0LDEzMTc0MiwxNjY0NDEsMjQ2MjUsMjYyNDUsMTM3MzM1LDE0NjkxLDE1ODE1LDEzODgxLDIyNDE2LDE0MTIzNiwzMTA4OSwxNTkzNiwyNDczNCwyNDc0MCwyNDc1NSwxNDk4OTAsMTQ5OTAzLDE2MjM4NywyOTg2MCwyMDcwNSwyMzIwMCwyNDkzMiwzMzgyOCwyNDg5OCwxOTQ3MjYsMTU5NDQyLDI0OTYxLDIwOTgwLDEzMjY5NCwyNDk2NywyMzQ2NiwxNDczODMsMTQxNDA3LDI1MDQzLDE2NjgxMywxNzAzMzMsMjUwNDAsMTQ2NDIsMTQxNjk2LDE0MTUwNSwyNDYxMSwyNDkyNCwyNTg4NiwyNTQ4MywxMzEzNTIsMjUyODUsMTM3MDcyLDI1MzAxLDE0Mjg2MSwyNTQ1MiwxNDk5ODMsMTQ4NzEsMjU2NTYsMjU1OTIsMTM2MDc4LDEzNzIxMiwyNTc0NCwyODU1NCwxNDI5MDIsMzg5MzIsMTQ3NTk2LDE1MzM3MywyNTgyNSwyNTgyOSwzODAxMSwxNDk1MCwyNTY1OCwxNDkzNSwyNTkzMywyODQzOCwxNTAwNTYsMTUwMDUxLDI1OTg5LDI1OTY1LDI1OTUxLDE0MzQ4NiwyNjAzNywxNDk4MjQsMTkyNTUsMjYwNjUsMTY2MDAsMTM3MjU3LDI2MDgwLDI2MDgzLDI0NTQzLDE0NDM4NCwyNjEzNiwxNDM4NjMsMTQzODY0LDI2MTgwLDE0Mzc4MCwxNDM3ODEsMjYxODcsMTM0NzczLDI2MjE1LDE1MjAzOCwyNjIyNywyNjIyOCwxMzg4MTMsMTQzOTIxLDE2NTM2NCwxNDM4MTYsMTUyMzM5LDMwNjYxLDE0MTU1OSwzOTMzMiwyNjM3MCwxNDgzODAsMTUwMDQ5LDE1MTQ3LDI3MTMwLDE0NTM0NiwyNjQ2MiwyNjQ3MSwyNjQ2NiwxNDc5MTcsMTY4MTczLDI2NTgzLDE3NjQxLDI2NjU4LDI4MjQwLDM3NDM2LDI2NjI1LDE0NDM1OCwxNTkxMzYsMjY3MTcsMTQ0NDk1LDI3MTA1LDI3MTQ3LDE2NjYyMywyNjk5NSwyNjgxOSwxNDQ4NDUsMjY4ODEsMjY4ODAsMTU2NjYsMTQ4NDksMTQ0OTU2LDE1MjMyLDI2NTQwLDI2OTc3LDE2NjQ3NCwxNzE0OCwyNjkzNCwyNzAzMiwxNTI2NSwxMzIwNDEsMzM2MzUsMjA2MjQsMjcxMjksMTQ0OTg1LDEzOTU2MiwyNzIwNSwxNDUxNTUsMjcyOTMsMTUzNDcsMjY1NDUsMjczMzYsMTY4MzQ4LDE1MzczLDI3NDIxLDEzMzQxMSwyNDc5OCwyNzQ0NSwyNzUwOCwxNDEyNjEsMjgzNDEsMTQ2MTM5LDEzMjAyMSwxMzc1NjAsMTQxNDQsMjE1MzcsMTQ2MjY2LDI3NjE3LDE0NzE5NiwyNzYxMiwyNzcwMywxNDA0MjcsMTQ5NzQ1LDE1ODU0NSwyNzczOCwzMzMxOCwyNzc2OSwxNDY4NzYsMTc2MDUsMTQ2ODc3LDE0Nzg3NiwxNDk3NzIsMTQ5NzYwLDE0NjYzMywxNDA1MywxNTU5NSwxMzQ0NTAsMzk4MTEsMTQzODY1LDE0MDQzMywzMjY1NSwyNjY3OSwxNTkwMTMsMTU5MTM3LDE1OTIxMSwyODA1NCwyNzk5NiwyODI4NCwyODQyMCwxNDk4ODcsMTQ3NTg5LDE1OTM0NiwzNDA5OSwxNTk2MDQsMjA5MzUsMjc4MDQsMjgxODksMzM4MzgsMTY2Njg5LDI4MjA3LDE0Njk5MSwyOTc3OSwxNDczMzAsMzExODAsMjgyMzksMjMxODUsMTQzNDM1LDI4NjY0LDE0MDkzLDI4NTczLDE0Njk5MiwyODQxMCwxMzYzNDMsMTQ3NTE3LDE3NzQ5LDM3ODcyLDI4NDg0LDI4NTA4LDE1Njk0LDI4NTMyLDE2ODMwNCwxNTY3NSwyODU3NSwxNDc3ODAsMjg2MjcsMTQ3NjAxLDE0Nzc5NywxNDc1MTMsMTQ3NDQwLDE0NzM4MCwxNDc3NzUsMjA5NTksMTQ3Nzk4LDE0Nzc5OSwxNDc3NzYsMTU2MTI1LDI4NzQ3LDI4Nzk4LDI4ODM5LDI4ODAxLDI4ODc2LDI4ODg1LDI4ODg2LDI4ODk1LDE2NjQ0LDE1ODQ4LDI5MTA4LDI5MDc4LDE0ODA4NywyODk3MSwyODk5NywyMzE3NiwyOTAwMiwyOTAzOCwyMzcwOCwxNDgzMjUsMjkwMDcsMzc3MzAsMTQ4MTYxLDI4OTcyLDE0ODU3MCwxNTAwNTUsMTUwMDUwLDI5MTE0LDE2Njg4OCwyODg2MSwyOTE5OCwzNzk1NCwyOTIwNSwyMjgwMSwzNzk1NSwyOTIyMCwzNzY5NywxNTMwOTMsMjkyMzAsMjkyNDgsMTQ5ODc2LDI2ODEzLDI5MjY5LDI5MjcxLDE1OTU3LDE0MzQyOCwyNjYzNywyODQ3NywyOTMxNCwyOTQ4MiwyOTQ4MywxNDk1MzksMTY1OTMxLDE4NjY5LDE2NTg5MiwyOTQ4MCwyOTQ4NiwyOTY0NywyOTYxMCwxMzQyMDIsMTU4MjU0LDI5NjQxLDI5NzY5LDE0NzkzOCwxMzY5MzUsMTUwMDUyLDI2MTQ3LDE0MDIxLDE0OTk0MywxNDk5MDEsMTUwMDExLDI5Njg3LDI5NzE3LDI2ODgzLDE1MDA1NCwyOTc1MywxMzI1NDcsMTYwODcsMjk3ODgsMTQxNDg1LDI5NzkyLDE2NzYwMiwyOTc2NywyOTY2OCwyOTgxNCwzMzcyMSwyOTgwNCwxNDEyOCwyOTgxMiwzNzg3MywyNzE4MCwyOTgyNiwxODc3MSwxNTAxNTYsMTQ3ODA3LDE1MDEzNywxNjY3OTksMjMzNjYsMTY2OTE1LDEzNzM3NCwyOTg5NiwxMzc2MDgsMjk5NjYsMjk5MjksMjk5ODIsMTY3NjQxLDEzNzgwMywyMzUxMSwxNjc1OTYsMzc3NjUsMzAwMjksMzAwMjYsMzAwNTUsMzAwNjIsMTUxNDI2LDE2MTMyLDE1MDgwMywzMDA5NCwyOTc4OSwzMDExMCwzMDEzMiwzMDIxMCwzMDI1MiwzMDI4OSwzMDI4NywzMDMxOSwzMDMyNiwxNTY2NjEsMzAzNTIsMzMyNjMsMTQzMjgsMTU3OTY5LDE1Nzk2NiwzMDM2OSwzMDM3MywzMDM5MSwzMDQxMiwxNTk2NDcsMzM4OTAsMTUxNzA5LDE1MTkzMywxMzg3ODAsMzA0OTQsMzA1MDIsMzA1MjgsMjU3NzUsMTUyMDk2LDMwNTUyLDE0NDA0NCwzMDYzOSwxNjYyNDQsMTY2MjQ4LDEzNjg5NywzMDcwOCwzMDcyOSwxMzYwNTQsMTUwMDM0LDI2ODI2LDMwODk1LDMwOTE5LDMwOTMxLDM4NTY1LDMxMDIyLDE1MzA1NiwzMDkzNSwzMTAyOCwzMDg5NywxNjEyOTIsMzY3OTIsMzQ5NDgsMTY2Njk5LDE1NTc3OSwxNDA4MjgsMzExMTAsMzUwNzIsMjY4ODIsMzExMDQsMTUzNjg3LDMxMTMzLDE2MjYxNywzMTAzNiwzMTE0NSwyODIwMiwxNjAwMzgsMTYwNDAsMzExNzQsMTY4MjA1LDMxMTg4XSxcbiAgXCJldWMta3JcIjpbNDQwMzQsNDQwMzUsNDQwMzcsNDQwMzgsNDQwNDMsNDQwNDQsNDQwNDUsNDQwNDYsNDQwNDcsNDQwNTYsNDQwNjIsNDQwNjMsNDQwNjUsNDQwNjYsNDQwNjcsNDQwNjksNDQwNzAsNDQwNzEsNDQwNzIsNDQwNzMsNDQwNzQsNDQwNzUsNDQwNzgsNDQwODIsNDQwODMsNDQwODQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQwODUsNDQwODYsNDQwODcsNDQwOTAsNDQwOTEsNDQwOTMsNDQwOTQsNDQwOTUsNDQwOTcsNDQwOTgsNDQwOTksNDQxMDAsNDQxMDEsNDQxMDIsNDQxMDMsNDQxMDQsNDQxMDUsNDQxMDYsNDQxMDgsNDQxMTAsNDQxMTEsNDQxMTIsNDQxMTMsNDQxMTQsNDQxMTUsNDQxMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQxMTgsNDQxMTksNDQxMjEsNDQxMjIsNDQxMjMsNDQxMjUsNDQxMjYsNDQxMjcsNDQxMjgsNDQxMjksNDQxMzAsNDQxMzEsNDQxMzIsNDQxMzMsNDQxMzQsNDQxMzUsNDQxMzYsNDQxMzcsNDQxMzgsNDQxMzksNDQxNDAsNDQxNDEsNDQxNDIsNDQxNDMsNDQxNDYsNDQxNDcsNDQxNDksNDQxNTAsNDQxNTMsNDQxNTUsNDQxNTYsNDQxNTcsNDQxNTgsNDQxNTksNDQxNjIsNDQxNjcsNDQxNjgsNDQxNzMsNDQxNzQsNDQxNzUsNDQxNzcsNDQxNzgsNDQxNzksNDQxODEsNDQxODIsNDQxODMsNDQxODQsNDQxODUsNDQxODYsNDQxODcsNDQxOTAsNDQxOTQsNDQxOTUsNDQxOTYsNDQxOTcsNDQxOTgsNDQxOTksNDQyMDMsNDQyMDUsNDQyMDYsNDQyMDksNDQyMTAsNDQyMTEsNDQyMTIsNDQyMTMsNDQyMTQsNDQyMTUsNDQyMTgsNDQyMjIsNDQyMjMsNDQyMjQsNDQyMjYsNDQyMjcsNDQyMjksNDQyMzAsNDQyMzEsNDQyMzMsNDQyMzQsNDQyMzUsNDQyMzcsNDQyMzgsNDQyMzksNDQyNDAsNDQyNDEsNDQyNDIsNDQyNDMsNDQyNDQsNDQyNDYsNDQyNDgsNDQyNDksNDQyNTAsNDQyNTEsNDQyNTIsNDQyNTMsNDQyNTQsNDQyNTUsNDQyNTgsNDQyNTksNDQyNjEsNDQyNjIsNDQyNjUsNDQyNjcsNDQyNjksNDQyNzAsNDQyNzQsNDQyNzYsNDQyNzksNDQyODAsNDQyODEsNDQyODIsNDQyODMsNDQyODYsNDQyODcsNDQyODksNDQyOTAsNDQyOTEsNDQyOTMsNDQyOTUsNDQyOTYsNDQyOTcsNDQyOTgsNDQyOTksNDQzMDIsNDQzMDQsNDQzMDYsNDQzMDcsNDQzMDgsNDQzMDksNDQzMTAsNDQzMTEsNDQzMTMsNDQzMTQsNDQzMTUsNDQzMTcsNDQzMTgsNDQzMTksNDQzMjEsNDQzMjIsNDQzMjMsNDQzMjQsNDQzMjUsNDQzMjYsNDQzMjcsNDQzMjgsNDQzMzAsNDQzMzEsNDQzMzQsNDQzMzUsNDQzMzYsNDQzMzcsNDQzMzgsNDQzMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNDIsNDQzNDMsNDQzNDUsNDQzNDYsNDQzNDcsNDQzNDksNDQzNTAsNDQzNTEsNDQzNTIsNDQzNTMsNDQzNTQsNDQzNTUsNDQzNTgsNDQzNjAsNDQzNjIsNDQzNjMsNDQzNjQsNDQzNjUsNDQzNjYsNDQzNjcsNDQzNjksNDQzNzAsNDQzNzEsNDQzNzMsNDQzNzQsNDQzNzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQzNzcsNDQzNzgsNDQzNzksNDQzODAsNDQzODEsNDQzODIsNDQzODMsNDQzODQsNDQzODYsNDQzODgsNDQzODksNDQzOTAsNDQzOTEsNDQzOTIsNDQzOTMsNDQzOTQsNDQzOTUsNDQzOTgsNDQzOTksNDQ0MDEsNDQ0MDIsNDQ0MDcsNDQ0MDgsNDQ0MDksNDQ0MTAsNDQ0MTQsNDQ0MTYsNDQ0MTksNDQ0MjAsNDQ0MjEsNDQ0MjIsNDQ0MjMsNDQ0MjYsNDQ0MjcsNDQ0MjksNDQ0MzAsNDQ0MzEsNDQ0MzMsNDQ0MzQsNDQ0MzUsNDQ0MzYsNDQ0MzcsNDQ0MzgsNDQ0MzksNDQ0NDAsNDQ0NDEsNDQ0NDIsNDQ0NDMsNDQ0NDYsNDQ0NDcsNDQ0NDgsNDQ0NDksNDQ0NTAsNDQ0NTEsNDQ0NTMsNDQ0NTQsNDQ0NTUsNDQ0NTYsNDQ0NTcsNDQ0NTgsNDQ0NTksNDQ0NjAsNDQ0NjEsNDQ0NjIsNDQ0NjMsNDQ0NjQsNDQ0NjUsNDQ0NjYsNDQ0NjcsNDQ0NjgsNDQ0NjksNDQ0NzAsNDQ0NzIsNDQ0NzMsNDQ0NzQsNDQ0NzUsNDQ0NzYsNDQ0NzcsNDQ0NzgsNDQ0NzksNDQ0ODIsNDQ0ODMsNDQ0ODUsNDQ0ODYsNDQ0ODcsNDQ0ODksNDQ0OTAsNDQ0OTEsNDQ0OTIsNDQ0OTMsNDQ0OTQsNDQ0OTUsNDQ0OTgsNDQ1MDAsNDQ1MDEsNDQ1MDIsNDQ1MDMsNDQ1MDQsNDQ1MDUsNDQ1MDYsNDQ1MDcsNDQ1MDksNDQ1MTAsNDQ1MTEsNDQ1MTMsNDQ1MTQsNDQ1MTUsNDQ1MTcsNDQ1MTgsNDQ1MTksNDQ1MjAsNDQ1MjEsNDQ1MjIsNDQ1MjMsNDQ1MjQsNDQ1MjUsNDQ1MjYsNDQ1MjcsNDQ1MjgsNDQ1MjksNDQ1MzAsNDQ1MzEsNDQ1MzIsNDQ1MzMsNDQ1MzQsNDQ1MzUsNDQ1MzgsNDQ1MzksNDQ1NDEsNDQ1NDIsNDQ1NDYsNDQ1NDcsNDQ1NDgsNDQ1NDksNDQ1NTAsNDQ1NTEsNDQ1NTQsNDQ1NTYsNDQ1NTgsNDQ1NTksNDQ1NjAsNDQ1NjEsNDQ1NjIsNDQ1NjMsNDQ1NjUsNDQ1NjYsNDQ1NjcsNDQ1NjgsNDQ1NjksNDQ1NzAsNDQ1NzEsNDQ1NzIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ1NzMsNDQ1NzQsNDQ1NzUsNDQ1NzYsNDQ1NzcsNDQ1NzgsNDQ1NzksNDQ1ODAsNDQ1ODEsNDQ1ODIsNDQ1ODMsNDQ1ODQsNDQ1ODUsNDQ1ODYsNDQ1ODcsNDQ1ODgsNDQ1ODksNDQ1OTAsNDQ1OTEsNDQ1OTQsNDQ1OTUsNDQ1OTcsNDQ1OTgsNDQ2MDEsNDQ2MDMsNDQ2MDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ2MDUsNDQ2MDYsNDQ2MDcsNDQ2MTAsNDQ2MTIsNDQ2MTUsNDQ2MTYsNDQ2MTcsNDQ2MTksNDQ2MjMsNDQ2MjUsNDQ2MjYsNDQ2MjcsNDQ2MjksNDQ2MzEsNDQ2MzIsNDQ2MzMsNDQ2MzQsNDQ2MzUsNDQ2MzgsNDQ2NDIsNDQ2NDMsNDQ2NDQsNDQ2NDYsNDQ2NDcsNDQ2NTAsNDQ2NTEsNDQ2NTMsNDQ2NTQsNDQ2NTUsNDQ2NTcsNDQ2NTgsNDQ2NTksNDQ2NjAsNDQ2NjEsNDQ2NjIsNDQ2NjMsNDQ2NjYsNDQ2NzAsNDQ2NzEsNDQ2NzIsNDQ2NzMsNDQ2NzQsNDQ2NzUsNDQ2NzgsNDQ2NzksNDQ2ODAsNDQ2ODEsNDQ2ODIsNDQ2ODMsNDQ2ODUsNDQ2ODYsNDQ2ODcsNDQ2ODgsNDQ2ODksNDQ2OTAsNDQ2OTEsNDQ2OTIsNDQ2OTMsNDQ2OTQsNDQ2OTUsNDQ2OTYsNDQ2OTcsNDQ2OTgsNDQ2OTksNDQ3MDAsNDQ3MDEsNDQ3MDIsNDQ3MDMsNDQ3MDQsNDQ3MDUsNDQ3MDYsNDQ3MDcsNDQ3MDgsNDQ3MDksNDQ3MTAsNDQ3MTEsNDQ3MTIsNDQ3MTMsNDQ3MTQsNDQ3MTUsNDQ3MTYsNDQ3MTcsNDQ3MTgsNDQ3MTksNDQ3MjAsNDQ3MjEsNDQ3MjIsNDQ3MjMsNDQ3MjQsNDQ3MjUsNDQ3MjYsNDQ3MjcsNDQ3MjgsNDQ3MjksNDQ3MzAsNDQ3MzEsNDQ3MzUsNDQ3MzcsNDQ3MzgsNDQ3MzksNDQ3NDEsNDQ3NDIsNDQ3NDMsNDQ3NDQsNDQ3NDUsNDQ3NDYsNDQ3NDcsNDQ3NTAsNDQ3NTQsNDQ3NTUsNDQ3NTYsNDQ3NTcsNDQ3NTgsNDQ3NTksNDQ3NjIsNDQ3NjMsNDQ3NjUsNDQ3NjYsNDQ3NjcsNDQ3NjgsNDQ3NjksNDQ3NzAsNDQ3NzEsNDQ3NzIsNDQ3NzMsNDQ3NzQsNDQ3NzUsNDQ3NzcsNDQ3NzgsNDQ3ODAsNDQ3ODIsNDQ3ODMsNDQ3ODQsNDQ3ODUsNDQ3ODYsNDQ3ODcsNDQ3ODksNDQ3OTAsNDQ3OTEsNDQ3OTMsNDQ3OTQsNDQ3OTUsNDQ3OTcsNDQ3OTgsNDQ3OTksNDQ4MDAsNDQ4MDEsNDQ4MDIsNDQ4MDMsNDQ4MDQsNDQ4MDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MDYsNDQ4MDksNDQ4MTAsNDQ4MTEsNDQ4MTIsNDQ4MTQsNDQ4MTUsNDQ4MTcsNDQ4MTgsNDQ4MTksNDQ4MjAsNDQ4MjEsNDQ4MjIsNDQ4MjMsNDQ4MjQsNDQ4MjUsNDQ4MjYsNDQ4MjcsNDQ4MjgsNDQ4MjksNDQ4MzAsNDQ4MzEsNDQ4MzIsNDQ4MzMsNDQ4MzQsNDQ4MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDQ4MzYsNDQ4MzcsNDQ4MzgsNDQ4MzksNDQ4NDAsNDQ4NDEsNDQ4NDIsNDQ4NDMsNDQ4NDYsNDQ4NDcsNDQ4NDksNDQ4NTEsNDQ4NTMsNDQ4NTQsNDQ4NTUsNDQ4NTYsNDQ4NTcsNDQ4NTgsNDQ4NTksNDQ4NjIsNDQ4NjQsNDQ4NjgsNDQ4NjksNDQ4NzAsNDQ4NzEsNDQ4NzQsNDQ4NzUsNDQ4NzYsNDQ4NzcsNDQ4NzgsNDQ4NzksNDQ4ODEsNDQ4ODIsNDQ4ODMsNDQ4ODQsNDQ4ODUsNDQ4ODYsNDQ4ODcsNDQ4ODgsNDQ4ODksNDQ4OTAsNDQ4OTEsNDQ4OTQsNDQ4OTUsNDQ4OTYsNDQ4OTcsNDQ4OTgsNDQ4OTksNDQ5MDIsNDQ5MDMsNDQ5MDQsNDQ5MDUsNDQ5MDYsNDQ5MDcsNDQ5MDgsNDQ5MDksNDQ5MTAsNDQ5MTEsNDQ5MTIsNDQ5MTMsNDQ5MTQsNDQ5MTUsNDQ5MTYsNDQ5MTcsNDQ5MTgsNDQ5MTksNDQ5MjAsNDQ5MjIsNDQ5MjMsNDQ5MjQsNDQ5MjUsNDQ5MjYsNDQ5MjcsNDQ5MjksNDQ5MzAsNDQ5MzEsNDQ5MzMsNDQ5MzQsNDQ5MzUsNDQ5MzcsNDQ5MzgsNDQ5MzksNDQ5NDAsNDQ5NDEsNDQ5NDIsNDQ5NDMsNDQ5NDYsNDQ5NDcsNDQ5NDgsNDQ5NTAsNDQ5NTEsNDQ5NTIsNDQ5NTMsNDQ5NTQsNDQ5NTUsNDQ5NTcsNDQ5NTgsNDQ5NTksNDQ5NjAsNDQ5NjEsNDQ5NjIsNDQ5NjMsNDQ5NjQsNDQ5NjUsNDQ5NjYsNDQ5NjcsNDQ5NjgsNDQ5NjksNDQ5NzAsNDQ5NzEsNDQ5NzIsNDQ5NzMsNDQ5NzQsNDQ5NzUsNDQ5NzYsNDQ5NzcsNDQ5NzgsNDQ5NzksNDQ5ODAsNDQ5ODEsNDQ5ODIsNDQ5ODMsNDQ5ODYsNDQ5ODcsNDQ5ODksNDQ5OTAsNDQ5OTEsNDQ5OTMsNDQ5OTQsNDQ5OTUsNDQ5OTYsNDQ5OTcsNDQ5OTgsNDUwMDIsNDUwMDQsNDUwMDcsNDUwMDgsNDUwMDksNDUwMTAsNDUwMTEsNDUwMTMsNDUwMTQsNDUwMTUsNDUwMTYsNDUwMTcsNDUwMTgsNDUwMTksNDUwMjEsNDUwMjIsNDUwMjMsNDUwMjQsNDUwMjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwMjYsNDUwMjcsNDUwMjgsNDUwMjksNDUwMzAsNDUwMzEsNDUwMzQsNDUwMzUsNDUwMzYsNDUwMzcsNDUwMzgsNDUwMzksNDUwNDIsNDUwNDMsNDUwNDUsNDUwNDYsNDUwNDcsNDUwNDksNDUwNTAsNDUwNTEsNDUwNTIsNDUwNTMsNDUwNTQsNDUwNTUsNDUwNTgsNDUwNTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUwNjEsNDUwNjIsNDUwNjMsNDUwNjQsNDUwNjUsNDUwNjYsNDUwNjcsNDUwNjksNDUwNzAsNDUwNzEsNDUwNzMsNDUwNzQsNDUwNzUsNDUwNzcsNDUwNzgsNDUwNzksNDUwODAsNDUwODEsNDUwODIsNDUwODMsNDUwODYsNDUwODcsNDUwODgsNDUwODksNDUwOTAsNDUwOTEsNDUwOTIsNDUwOTMsNDUwOTQsNDUwOTUsNDUwOTcsNDUwOTgsNDUwOTksNDUxMDAsNDUxMDEsNDUxMDIsNDUxMDMsNDUxMDQsNDUxMDUsNDUxMDYsNDUxMDcsNDUxMDgsNDUxMDksNDUxMTAsNDUxMTEsNDUxMTIsNDUxMTMsNDUxMTQsNDUxMTUsNDUxMTYsNDUxMTcsNDUxMTgsNDUxMTksNDUxMjAsNDUxMjEsNDUxMjIsNDUxMjMsNDUxMjYsNDUxMjcsNDUxMjksNDUxMzEsNDUxMzMsNDUxMzUsNDUxMzYsNDUxMzcsNDUxMzgsNDUxNDIsNDUxNDQsNDUxNDYsNDUxNDcsNDUxNDgsNDUxNTAsNDUxNTEsNDUxNTIsNDUxNTMsNDUxNTQsNDUxNTUsNDUxNTYsNDUxNTcsNDUxNTgsNDUxNTksNDUxNjAsNDUxNjEsNDUxNjIsNDUxNjMsNDUxNjQsNDUxNjUsNDUxNjYsNDUxNjcsNDUxNjgsNDUxNjksNDUxNzAsNDUxNzEsNDUxNzIsNDUxNzMsNDUxNzQsNDUxNzUsNDUxNzYsNDUxNzcsNDUxNzgsNDUxNzksNDUxODIsNDUxODMsNDUxODUsNDUxODYsNDUxODcsNDUxODksNDUxOTAsNDUxOTEsNDUxOTIsNDUxOTMsNDUxOTQsNDUxOTUsNDUxOTgsNDUyMDAsNDUyMDIsNDUyMDMsNDUyMDQsNDUyMDUsNDUyMDYsNDUyMDcsNDUyMTEsNDUyMTMsNDUyMTQsNDUyMTksNDUyMjAsNDUyMjEsNDUyMjIsNDUyMjMsNDUyMjYsNDUyMzIsNDUyMzQsNDUyMzgsNDUyMzksNDUyNDEsNDUyNDIsNDUyNDMsNDUyNDUsNDUyNDYsNDUyNDcsNDUyNDgsNDUyNDksNDUyNTAsNDUyNTEsNDUyNTQsNDUyNTgsNDUyNTksNDUyNjAsNDUyNjEsNDUyNjIsNDUyNjMsNDUyNjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyNjcsNDUyNjksNDUyNzAsNDUyNzEsNDUyNzMsNDUyNzQsNDUyNzUsNDUyNzYsNDUyNzcsNDUyNzgsNDUyNzksNDUyODEsNDUyODIsNDUyODMsNDUyODQsNDUyODYsNDUyODcsNDUyODgsNDUyODksNDUyOTAsNDUyOTEsNDUyOTIsNDUyOTMsNDUyOTQsNDUyOTUsNDUyOTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDUyOTcsNDUyOTgsNDUyOTksNDUzMDAsNDUzMDEsNDUzMDIsNDUzMDMsNDUzMDQsNDUzMDUsNDUzMDYsNDUzMDcsNDUzMDgsNDUzMDksNDUzMTAsNDUzMTEsNDUzMTIsNDUzMTMsNDUzMTQsNDUzMTUsNDUzMTYsNDUzMTcsNDUzMTgsNDUzMTksNDUzMjIsNDUzMjUsNDUzMjYsNDUzMjcsNDUzMjksNDUzMzIsNDUzMzMsNDUzMzQsNDUzMzUsNDUzMzgsNDUzNDIsNDUzNDMsNDUzNDQsNDUzNDUsNDUzNDYsNDUzNTAsNDUzNTEsNDUzNTMsNDUzNTQsNDUzNTUsNDUzNTcsNDUzNTgsNDUzNTksNDUzNjAsNDUzNjEsNDUzNjIsNDUzNjMsNDUzNjYsNDUzNzAsNDUzNzEsNDUzNzIsNDUzNzMsNDUzNzQsNDUzNzUsNDUzNzgsNDUzNzksNDUzODEsNDUzODIsNDUzODMsNDUzODUsNDUzODYsNDUzODcsNDUzODgsNDUzODksNDUzOTAsNDUzOTEsNDUzOTQsNDUzOTUsNDUzOTgsNDUzOTksNDU0MDEsNDU0MDIsNDU0MDMsNDU0MDUsNDU0MDYsNDU0MDcsNDU0MDksNDU0MTAsNDU0MTEsNDU0MTIsNDU0MTMsNDU0MTQsNDU0MTUsNDU0MTYsNDU0MTcsNDU0MTgsNDU0MTksNDU0MjAsNDU0MjEsNDU0MjIsNDU0MjMsNDU0MjQsNDU0MjUsNDU0MjYsNDU0MjcsNDU0MjgsNDU0MjksNDU0MzAsNDU0MzEsNDU0MzQsNDU0MzUsNDU0MzcsNDU0MzgsNDU0MzksNDU0NDEsNDU0NDMsNDU0NDQsNDU0NDUsNDU0NDYsNDU0NDcsNDU0NTAsNDU0NTIsNDU0NTQsNDU0NTUsNDU0NTYsNDU0NTcsNDU0NjEsNDU0NjIsNDU0NjMsNDU0NjUsNDU0NjYsNDU0NjcsNDU0NjksNDU0NzAsNDU0NzEsNDU0NzIsNDU0NzMsNDU0NzQsNDU0NzUsNDU0NzYsNDU0NzcsNDU0NzgsNDU0NzksNDU0ODEsNDU0ODIsNDU0ODMsNDU0ODQsNDU0ODUsNDU0ODYsNDU0ODcsNDU0ODgsNDU0ODksNDU0OTAsNDU0OTEsNDU0OTIsNDU0OTMsNDU0OTQsNDU0OTUsNDU0OTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU0OTcsNDU0OTgsNDU0OTksNDU1MDAsNDU1MDEsNDU1MDIsNDU1MDMsNDU1MDQsNDU1MDUsNDU1MDYsNDU1MDcsNDU1MDgsNDU1MDksNDU1MTAsNDU1MTEsNDU1MTIsNDU1MTMsNDU1MTQsNDU1MTUsNDU1MTcsNDU1MTgsNDU1MTksNDU1MjEsNDU1MjIsNDU1MjMsNDU1MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU1MjYsNDU1MjcsNDU1MjgsNDU1MjksNDU1MzAsNDU1MzEsNDU1MzQsNDU1MzYsNDU1MzcsNDU1MzgsNDU1MzksNDU1NDAsNDU1NDEsNDU1NDIsNDU1NDMsNDU1NDYsNDU1NDcsNDU1NDksNDU1NTAsNDU1NTEsNDU1NTMsNDU1NTQsNDU1NTUsNDU1NTYsNDU1NTcsNDU1NTgsNDU1NTksNDU1NjAsNDU1NjIsNDU1NjQsNDU1NjYsNDU1NjcsNDU1NjgsNDU1NjksNDU1NzAsNDU1NzEsNDU1NzQsNDU1NzUsNDU1NzcsNDU1NzgsNDU1ODEsNDU1ODIsNDU1ODMsNDU1ODQsNDU1ODUsNDU1ODYsNDU1ODcsNDU1OTAsNDU1OTIsNDU1OTQsNDU1OTUsNDU1OTYsNDU1OTcsNDU1OTgsNDU1OTksNDU2MDEsNDU2MDIsNDU2MDMsNDU2MDQsNDU2MDUsNDU2MDYsNDU2MDcsNDU2MDgsNDU2MDksNDU2MTAsNDU2MTEsNDU2MTIsNDU2MTMsNDU2MTQsNDU2MTUsNDU2MTYsNDU2MTcsNDU2MTgsNDU2MTksNDU2MjEsNDU2MjIsNDU2MjMsNDU2MjQsNDU2MjUsNDU2MjYsNDU2MjcsNDU2MjksNDU2MzAsNDU2MzEsNDU2MzIsNDU2MzMsNDU2MzQsNDU2MzUsNDU2MzYsNDU2MzcsNDU2MzgsNDU2MzksNDU2NDAsNDU2NDEsNDU2NDIsNDU2NDMsNDU2NDQsNDU2NDUsNDU2NDYsNDU2NDcsNDU2NDgsNDU2NDksNDU2NTAsNDU2NTEsNDU2NTIsNDU2NTMsNDU2NTQsNDU2NTUsNDU2NTcsNDU2NTgsNDU2NTksNDU2NjEsNDU2NjIsNDU2NjMsNDU2NjUsNDU2NjYsNDU2NjcsNDU2NjgsNDU2NjksNDU2NzAsNDU2NzEsNDU2NzQsNDU2NzUsNDU2NzYsNDU2NzcsNDU2NzgsNDU2NzksNDU2ODAsNDU2ODEsNDU2ODIsNDU2ODMsNDU2ODYsNDU2ODcsNDU2ODgsNDU2ODksNDU2OTAsNDU2OTEsNDU2OTMsNDU2OTQsNDU2OTUsNDU2OTYsNDU2OTcsNDU2OTgsNDU2OTksNDU3MDIsNDU3MDMsNDU3MDQsNDU3MDYsNDU3MDcsNDU3MDgsNDU3MDksNDU3MTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3MTEsNDU3MTQsNDU3MTUsNDU3MTcsNDU3MTgsNDU3MTksNDU3MjMsNDU3MjQsNDU3MjUsNDU3MjYsNDU3MjcsNDU3MzAsNDU3MzIsNDU3MzUsNDU3MzYsNDU3MzcsNDU3MzksNDU3NDEsNDU3NDIsNDU3NDMsNDU3NDUsNDU3NDYsNDU3NDcsNDU3NDksNDU3NTAsNDU3NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU3NTIsNDU3NTMsNDU3NTQsNDU3NTUsNDU3NTYsNDU3NTcsNDU3NTgsNDU3NTksNDU3NjAsNDU3NjEsNDU3NjIsNDU3NjMsNDU3NjQsNDU3NjUsNDU3NjYsNDU3NjcsNDU3NzAsNDU3NzEsNDU3NzMsNDU3NzQsNDU3NzUsNDU3NzcsNDU3NzksNDU3ODAsNDU3ODEsNDU3ODIsNDU3ODMsNDU3ODYsNDU3ODgsNDU3OTAsNDU3OTEsNDU3OTIsNDU3OTMsNDU3OTUsNDU3OTksNDU4MDEsNDU4MDIsNDU4MDgsNDU4MDksNDU4MTAsNDU4MTQsNDU4MjAsNDU4MjEsNDU4MjIsNDU4MjYsNDU4MjcsNDU4MjksNDU4MzAsNDU4MzEsNDU4MzMsNDU4MzQsNDU4MzUsNDU4MzYsNDU4MzcsNDU4MzgsNDU4MzksNDU4NDIsNDU4NDYsNDU4NDcsNDU4NDgsNDU4NDksNDU4NTAsNDU4NTEsNDU4NTMsNDU4NTQsNDU4NTUsNDU4NTYsNDU4NTcsNDU4NTgsNDU4NTksNDU4NjAsNDU4NjEsNDU4NjIsNDU4NjMsNDU4NjQsNDU4NjUsNDU4NjYsNDU4NjcsNDU4NjgsNDU4NjksNDU4NzAsNDU4NzEsNDU4NzIsNDU4NzMsNDU4NzQsNDU4NzUsNDU4NzYsNDU4NzcsNDU4NzgsNDU4NzksNDU4ODAsNDU4ODEsNDU4ODIsNDU4ODMsNDU4ODQsNDU4ODUsNDU4ODYsNDU4ODcsNDU4ODgsNDU4ODksNDU4OTAsNDU4OTEsNDU4OTIsNDU4OTMsNDU4OTQsNDU4OTUsNDU4OTYsNDU4OTcsNDU4OTgsNDU4OTksNDU5MDAsNDU5MDEsNDU5MDIsNDU5MDMsNDU5MDQsNDU5MDUsNDU5MDYsNDU5MDcsNDU5MTEsNDU5MTMsNDU5MTQsNDU5MTcsNDU5MjAsNDU5MjEsNDU5MjIsNDU5MjMsNDU5MjYsNDU5MjgsNDU5MzAsNDU5MzIsNDU5MzMsNDU5MzUsNDU5MzgsNDU5MzksNDU5NDEsNDU5NDIsNDU5NDMsNDU5NDUsNDU5NDYsNDU5NDcsNDU5NDgsNDU5NDksNDU5NTAsNDU5NTEsNDU5NTQsNDU5NTgsNDU5NTksNDU5NjAsNDU5NjEsNDU5NjIsNDU5NjMsNDU5NjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5NjYsNDU5NjcsNDU5NjksNDU5NzAsNDU5NzEsNDU5NzMsNDU5NzQsNDU5NzUsNDU5NzYsNDU5NzcsNDU5NzgsNDU5NzksNDU5ODAsNDU5ODEsNDU5ODIsNDU5ODMsNDU5ODYsNDU5ODcsNDU5ODgsNDU5ODksNDU5OTAsNDU5OTEsNDU5OTMsNDU5OTQsNDU5OTUsNDU5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDU5OTgsNDU5OTksNDYwMDAsNDYwMDEsNDYwMDIsNDYwMDMsNDYwMDQsNDYwMDUsNDYwMDYsNDYwMDcsNDYwMDgsNDYwMDksNDYwMTAsNDYwMTEsNDYwMTIsNDYwMTMsNDYwMTQsNDYwMTUsNDYwMTYsNDYwMTcsNDYwMTgsNDYwMTksNDYwMjIsNDYwMjMsNDYwMjUsNDYwMjYsNDYwMjksNDYwMzEsNDYwMzMsNDYwMzQsNDYwMzUsNDYwMzgsNDYwNDAsNDYwNDIsNDYwNDQsNDYwNDYsNDYwNDcsNDYwNDksNDYwNTAsNDYwNTEsNDYwNTMsNDYwNTQsNDYwNTUsNDYwNTcsNDYwNTgsNDYwNTksNDYwNjAsNDYwNjEsNDYwNjIsNDYwNjMsNDYwNjQsNDYwNjUsNDYwNjYsNDYwNjcsNDYwNjgsNDYwNjksNDYwNzAsNDYwNzEsNDYwNzIsNDYwNzMsNDYwNzQsNDYwNzUsNDYwNzcsNDYwNzgsNDYwNzksNDYwODAsNDYwODEsNDYwODIsNDYwODMsNDYwODQsNDYwODUsNDYwODYsNDYwODcsNDYwODgsNDYwODksNDYwOTAsNDYwOTEsNDYwOTIsNDYwOTMsNDYwOTQsNDYwOTUsNDYwOTcsNDYwOTgsNDYwOTksNDYxMDAsNDYxMDEsNDYxMDIsNDYxMDMsNDYxMDUsNDYxMDYsNDYxMDcsNDYxMDksNDYxMTAsNDYxMTEsNDYxMTMsNDYxMTQsNDYxMTUsNDYxMTYsNDYxMTcsNDYxMTgsNDYxMTksNDYxMjIsNDYxMjQsNDYxMjUsNDYxMjYsNDYxMjcsNDYxMjgsNDYxMjksNDYxMzAsNDYxMzEsNDYxMzMsNDYxMzQsNDYxMzUsNDYxMzYsNDYxMzcsNDYxMzgsNDYxMzksNDYxNDAsNDYxNDEsNDYxNDIsNDYxNDMsNDYxNDQsNDYxNDUsNDYxNDYsNDYxNDcsNDYxNDgsNDYxNDksNDYxNTAsNDYxNTEsNDYxNTIsNDYxNTMsNDYxNTQsNDYxNTUsNDYxNTYsNDYxNTcsNDYxNTgsNDYxNTksNDYxNjIsNDYxNjMsNDYxNjUsNDYxNjYsNDYxNjcsNDYxNjksNDYxNzAsNDYxNzEsNDYxNzIsNDYxNzMsNDYxNzQsNDYxNzUsNDYxNzgsNDYxODAsNDYxODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYxODMsNDYxODQsNDYxODUsNDYxODYsNDYxODcsNDYxODksNDYxOTAsNDYxOTEsNDYxOTIsNDYxOTMsNDYxOTQsNDYxOTUsNDYxOTYsNDYxOTcsNDYxOTgsNDYxOTksNDYyMDAsNDYyMDEsNDYyMDIsNDYyMDMsNDYyMDQsNDYyMDUsNDYyMDYsNDYyMDcsNDYyMDksNDYyMTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDYyMTEsNDYyMTIsNDYyMTMsNDYyMTQsNDYyMTUsNDYyMTcsNDYyMTgsNDYyMTksNDYyMjAsNDYyMjEsNDYyMjIsNDYyMjMsNDYyMjQsNDYyMjUsNDYyMjYsNDYyMjcsNDYyMjgsNDYyMjksNDYyMzAsNDYyMzEsNDYyMzIsNDYyMzMsNDYyMzQsNDYyMzUsNDYyMzYsNDYyMzgsNDYyMzksNDYyNDAsNDYyNDEsNDYyNDIsNDYyNDMsNDYyNDUsNDYyNDYsNDYyNDcsNDYyNDksNDYyNTAsNDYyNTEsNDYyNTMsNDYyNTQsNDYyNTUsNDYyNTYsNDYyNTcsNDYyNTgsNDYyNTksNDYyNjAsNDYyNjIsNDYyNjQsNDYyNjYsNDYyNjcsNDYyNjgsNDYyNjksNDYyNzAsNDYyNzEsNDYyNzMsNDYyNzQsNDYyNzUsNDYyNzcsNDYyNzgsNDYyNzksNDYyODEsNDYyODIsNDYyODMsNDYyODQsNDYyODUsNDYyODYsNDYyODcsNDYyODksNDYyOTAsNDYyOTEsNDYyOTIsNDYyOTQsNDYyOTUsNDYyOTYsNDYyOTcsNDYyOTgsNDYyOTksNDYzMDIsNDYzMDMsNDYzMDUsNDYzMDYsNDYzMDksNDYzMTEsNDYzMTIsNDYzMTMsNDYzMTQsNDYzMTUsNDYzMTgsNDYzMjAsNDYzMjIsNDYzMjMsNDYzMjQsNDYzMjUsNDYzMjYsNDYzMjcsNDYzMjksNDYzMzAsNDYzMzEsNDYzMzIsNDYzMzMsNDYzMzQsNDYzMzUsNDYzMzYsNDYzMzcsNDYzMzgsNDYzMzksNDYzNDAsNDYzNDEsNDYzNDIsNDYzNDMsNDYzNDQsNDYzNDUsNDYzNDYsNDYzNDcsNDYzNDgsNDYzNDksNDYzNTAsNDYzNTEsNDYzNTIsNDYzNTMsNDYzNTQsNDYzNTUsNDYzNTgsNDYzNTksNDYzNjEsNDYzNjIsNDYzNjUsNDYzNjYsNDYzNjcsNDYzNjgsNDYzNjksNDYzNzAsNDYzNzEsNDYzNzQsNDYzNzksNDYzODAsNDYzODEsNDYzODIsNDYzODMsNDYzODYsNDYzODcsNDYzODksNDYzOTAsNDYzOTEsNDYzOTMsNDYzOTQsNDYzOTUsNDYzOTYsNDYzOTcsNDYzOTgsNDYzOTksNDY0MDIsNDY0MDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0MDcsNDY0MDgsNDY0MDksNDY0MTAsNDY0MTQsNDY0MTUsNDY0MTcsNDY0MTgsNDY0MTksNDY0MjEsNDY0MjIsNDY0MjMsNDY0MjQsNDY0MjUsNDY0MjYsNDY0MjcsNDY0MzAsNDY0MzQsNDY0MzUsNDY0MzYsNDY0MzcsNDY0MzgsNDY0MzksNDY0NDAsNDY0NDEsNDY0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY0NDMsNDY0NDQsNDY0NDUsNDY0NDYsNDY0NDcsNDY0NDgsNDY0NDksNDY0NTAsNDY0NTEsNDY0NTIsNDY0NTMsNDY0NTQsNDY0NTUsNDY0NTYsNDY0NTcsNDY0NTgsNDY0NTksNDY0NjAsNDY0NjEsNDY0NjIsNDY0NjMsNDY0NjQsNDY0NjUsNDY0NjYsNDY0NjcsNDY0NjgsNDY0NjksNDY0NzAsNDY0NzEsNDY0NzIsNDY0NzMsNDY0NzQsNDY0NzUsNDY0NzYsNDY0NzcsNDY0NzgsNDY0NzksNDY0ODAsNDY0ODEsNDY0ODIsNDY0ODMsNDY0ODQsNDY0ODUsNDY0ODYsNDY0ODcsNDY0ODgsNDY0ODksNDY0OTAsNDY0OTEsNDY0OTIsNDY0OTMsNDY0OTQsNDY0OTUsNDY0OTgsNDY0OTksNDY1MDEsNDY1MDIsNDY1MDMsNDY1MDUsNDY1MDgsNDY1MDksNDY1MTAsNDY1MTEsNDY1MTQsNDY1MTgsNDY1MTksNDY1MjAsNDY1MjEsNDY1MjIsNDY1MjYsNDY1MjcsNDY1MjksNDY1MzAsNDY1MzEsNDY1MzMsNDY1MzQsNDY1MzUsNDY1MzYsNDY1MzcsNDY1MzgsNDY1MzksNDY1NDIsNDY1NDYsNDY1NDcsNDY1NDgsNDY1NDksNDY1NTAsNDY1NTEsNDY1NTMsNDY1NTQsNDY1NTUsNDY1NTYsNDY1NTcsNDY1NTgsNDY1NTksNDY1NjAsNDY1NjEsNDY1NjIsNDY1NjMsNDY1NjQsNDY1NjUsNDY1NjYsNDY1NjcsNDY1NjgsNDY1NjksNDY1NzAsNDY1NzEsNDY1NzMsNDY1NzQsNDY1NzUsNDY1NzYsNDY1NzcsNDY1NzgsNDY1NzksNDY1ODAsNDY1ODEsNDY1ODIsNDY1ODMsNDY1ODQsNDY1ODUsNDY1ODYsNDY1ODcsNDY1ODgsNDY1ODksNDY1OTAsNDY1OTEsNDY1OTIsNDY1OTMsNDY1OTQsNDY1OTUsNDY1OTYsNDY1OTcsNDY1OTgsNDY1OTksNDY2MDAsNDY2MDEsNDY2MDIsNDY2MDMsNDY2MDQsNDY2MDUsNDY2MDYsNDY2MDcsNDY2MTAsNDY2MTEsNDY2MTMsNDY2MTQsNDY2MTUsNDY2MTcsNDY2MTgsNDY2MTksNDY2MjAsNDY2MjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2MjIsNDY2MjMsNDY2MjQsNDY2MjUsNDY2MjYsNDY2MjcsNDY2MjgsNDY2MzAsNDY2MzEsNDY2MzIsNDY2MzMsNDY2MzQsNDY2MzUsNDY2MzcsNDY2MzgsNDY2MzksNDY2NDAsNDY2NDEsNDY2NDIsNDY2NDMsNDY2NDUsNDY2NDYsNDY2NDcsNDY2NDgsNDY2NDksNDY2NTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY2NTEsNDY2NTIsNDY2NTMsNDY2NTQsNDY2NTUsNDY2NTYsNDY2NTcsNDY2NTgsNDY2NTksNDY2NjAsNDY2NjEsNDY2NjIsNDY2NjMsNDY2NjUsNDY2NjYsNDY2NjcsNDY2NjgsNDY2NjksNDY2NzAsNDY2NzEsNDY2NzIsNDY2NzMsNDY2NzQsNDY2NzUsNDY2NzYsNDY2NzcsNDY2NzgsNDY2NzksNDY2ODAsNDY2ODEsNDY2ODIsNDY2ODMsNDY2ODQsNDY2ODUsNDY2ODYsNDY2ODcsNDY2ODgsNDY2ODksNDY2OTAsNDY2OTEsNDY2OTMsNDY2OTQsNDY2OTUsNDY2OTcsNDY2OTgsNDY2OTksNDY3MDAsNDY3MDEsNDY3MDIsNDY3MDMsNDY3MDQsNDY3MDUsNDY3MDYsNDY3MDcsNDY3MDgsNDY3MDksNDY3MTAsNDY3MTEsNDY3MTIsNDY3MTMsNDY3MTQsNDY3MTUsNDY3MTYsNDY3MTcsNDY3MTgsNDY3MTksNDY3MjAsNDY3MjEsNDY3MjIsNDY3MjMsNDY3MjQsNDY3MjUsNDY3MjYsNDY3MjcsNDY3MjgsNDY3MjksNDY3MzAsNDY3MzEsNDY3MzIsNDY3MzMsNDY3MzQsNDY3MzUsNDY3MzYsNDY3MzcsNDY3MzgsNDY3MzksNDY3NDAsNDY3NDEsNDY3NDIsNDY3NDMsNDY3NDQsNDY3NDUsNDY3NDYsNDY3NDcsNDY3NTAsNDY3NTEsNDY3NTMsNDY3NTQsNDY3NTUsNDY3NTcsNDY3NTgsNDY3NTksNDY3NjAsNDY3NjEsNDY3NjIsNDY3NjUsNDY3NjYsNDY3NjcsNDY3NjgsNDY3NzAsNDY3NzEsNDY3NzIsNDY3NzMsNDY3NzQsNDY3NzUsNDY3NzYsNDY3NzcsNDY3NzgsNDY3NzksNDY3ODAsNDY3ODEsNDY3ODIsNDY3ODMsNDY3ODQsNDY3ODUsNDY3ODYsNDY3ODcsNDY3ODgsNDY3ODksNDY3OTAsNDY3OTEsNDY3OTIsNDY3OTMsNDY3OTQsNDY3OTUsNDY3OTYsNDY3OTcsNDY3OTgsNDY3OTksNDY4MDAsNDY4MDEsNDY4MDIsNDY4MDMsNDY4MDUsNDY4MDYsNDY4MDcsNDY4MDgsNDY4MDksNDY4MTAsNDY4MTEsNDY4MTIsNDY4MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4MTQsNDY4MTUsNDY4MTYsNDY4MTcsNDY4MTgsNDY4MTksNDY4MjAsNDY4MjEsNDY4MjIsNDY4MjMsNDY4MjQsNDY4MjUsNDY4MjYsNDY4MjcsNDY4MjgsNDY4MjksNDY4MzAsNDY4MzEsNDY4MzMsNDY4MzQsNDY4MzUsNDY4MzcsNDY4MzgsNDY4MzksNDY4NDEsNDY4NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDY4NDMsNDY4NDQsNDY4NDUsNDY4NDYsNDY4NDcsNDY4NTAsNDY4NTEsNDY4NTIsNDY4NTQsNDY4NTUsNDY4NTYsNDY4NTcsNDY4NTgsNDY4NTksNDY4NjAsNDY4NjEsNDY4NjIsNDY4NjMsNDY4NjQsNDY4NjUsNDY4NjYsNDY4NjcsNDY4NjgsNDY4NjksNDY4NzAsNDY4NzEsNDY4NzIsNDY4NzMsNDY4NzQsNDY4NzUsNDY4NzYsNDY4NzcsNDY4NzgsNDY4NzksNDY4ODAsNDY4ODEsNDY4ODIsNDY4ODMsNDY4ODQsNDY4ODUsNDY4ODYsNDY4ODcsNDY4OTAsNDY4OTEsNDY4OTMsNDY4OTQsNDY4OTcsNDY4OTgsNDY4OTksNDY5MDAsNDY5MDEsNDY5MDIsNDY5MDMsNDY5MDYsNDY5MDgsNDY5MDksNDY5MTAsNDY5MTEsNDY5MTIsNDY5MTMsNDY5MTQsNDY5MTUsNDY5MTcsNDY5MTgsNDY5MTksNDY5MjEsNDY5MjIsNDY5MjMsNDY5MjUsNDY5MjYsNDY5MjcsNDY5MjgsNDY5MjksNDY5MzAsNDY5MzEsNDY5MzQsNDY5MzUsNDY5MzYsNDY5MzcsNDY5MzgsNDY5MzksNDY5NDAsNDY5NDEsNDY5NDIsNDY5NDMsNDY5NDUsNDY5NDYsNDY5NDcsNDY5NDksNDY5NTAsNDY5NTEsNDY5NTMsNDY5NTQsNDY5NTUsNDY5NTYsNDY5NTcsNDY5NTgsNDY5NTksNDY5NjIsNDY5NjQsNDY5NjYsNDY5NjcsNDY5NjgsNDY5NjksNDY5NzAsNDY5NzEsNDY5NzQsNDY5NzUsNDY5NzcsNDY5NzgsNDY5NzksNDY5ODEsNDY5ODIsNDY5ODMsNDY5ODQsNDY5ODUsNDY5ODYsNDY5ODcsNDY5OTAsNDY5OTUsNDY5OTYsNDY5OTcsNDcwMDIsNDcwMDMsNDcwMDUsNDcwMDYsNDcwMDcsNDcwMDksNDcwMTAsNDcwMTEsNDcwMTIsNDcwMTMsNDcwMTQsNDcwMTUsNDcwMTgsNDcwMjIsNDcwMjMsNDcwMjQsNDcwMjUsNDcwMjYsNDcwMjcsNDcwMzAsNDcwMzEsNDcwMzMsNDcwMzQsNDcwMzUsNDcwMzYsNDcwMzcsNDcwMzgsNDcwMzksNDcwNDAsNDcwNDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNDIsNDcwNDMsNDcwNDQsNDcwNDUsNDcwNDYsNDcwNDgsNDcwNTAsNDcwNTEsNDcwNTIsNDcwNTMsNDcwNTQsNDcwNTUsNDcwNTYsNDcwNTcsNDcwNTgsNDcwNTksNDcwNjAsNDcwNjEsNDcwNjIsNDcwNjMsNDcwNjQsNDcwNjUsNDcwNjYsNDcwNjcsNDcwNjgsNDcwNjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcwNzAsNDcwNzEsNDcwNzIsNDcwNzMsNDcwNzQsNDcwNzUsNDcwNzYsNDcwNzcsNDcwNzgsNDcwNzksNDcwODAsNDcwODEsNDcwODIsNDcwODMsNDcwODYsNDcwODcsNDcwODksNDcwOTAsNDcwOTEsNDcwOTMsNDcwOTQsNDcwOTUsNDcwOTYsNDcwOTcsNDcwOTgsNDcwOTksNDcxMDIsNDcxMDYsNDcxMDcsNDcxMDgsNDcxMDksNDcxMTAsNDcxMTQsNDcxMTUsNDcxMTcsNDcxMTgsNDcxMTksNDcxMjEsNDcxMjIsNDcxMjMsNDcxMjQsNDcxMjUsNDcxMjYsNDcxMjcsNDcxMzAsNDcxMzIsNDcxMzQsNDcxMzUsNDcxMzYsNDcxMzcsNDcxMzgsNDcxMzksNDcxNDIsNDcxNDMsNDcxNDUsNDcxNDYsNDcxNDcsNDcxNDksNDcxNTAsNDcxNTEsNDcxNTIsNDcxNTMsNDcxNTQsNDcxNTUsNDcxNTgsNDcxNjIsNDcxNjMsNDcxNjQsNDcxNjUsNDcxNjYsNDcxNjcsNDcxNjksNDcxNzAsNDcxNzEsNDcxNzMsNDcxNzQsNDcxNzUsNDcxNzYsNDcxNzcsNDcxNzgsNDcxNzksNDcxODAsNDcxODEsNDcxODIsNDcxODMsNDcxODQsNDcxODYsNDcxODgsNDcxODksNDcxOTAsNDcxOTEsNDcxOTIsNDcxOTMsNDcxOTQsNDcxOTUsNDcxOTgsNDcxOTksNDcyMDEsNDcyMDIsNDcyMDMsNDcyMDUsNDcyMDYsNDcyMDcsNDcyMDgsNDcyMDksNDcyMTAsNDcyMTEsNDcyMTQsNDcyMTYsNDcyMTgsNDcyMTksNDcyMjAsNDcyMjEsNDcyMjIsNDcyMjMsNDcyMjUsNDcyMjYsNDcyMjcsNDcyMjksNDcyMzAsNDcyMzEsNDcyMzIsNDcyMzMsNDcyMzQsNDcyMzUsNDcyMzYsNDcyMzcsNDcyMzgsNDcyMzksNDcyNDAsNDcyNDEsNDcyNDIsNDcyNDMsNDcyNDQsNDcyNDYsNDcyNDcsNDcyNDgsNDcyNDksNDcyNTAsNDcyNTEsNDcyNTIsNDcyNTMsNDcyNTQsNDcyNTUsNDcyNTYsNDcyNTcsNDcyNTgsNDcyNTksNDcyNjAsNDcyNjEsNDcyNjIsNDcyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyNjQsNDcyNjUsNDcyNjYsNDcyNjcsNDcyNjgsNDcyNjksNDcyNzAsNDcyNzEsNDcyNzMsNDcyNzQsNDcyNzUsNDcyNzYsNDcyNzcsNDcyNzgsNDcyNzksNDcyODEsNDcyODIsNDcyODMsNDcyODUsNDcyODYsNDcyODcsNDcyODksNDcyOTAsNDcyOTEsNDcyOTIsNDcyOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDcyOTQsNDcyOTUsNDcyOTgsNDczMDAsNDczMDIsNDczMDMsNDczMDQsNDczMDUsNDczMDYsNDczMDcsNDczMDksNDczMTAsNDczMTEsNDczMTMsNDczMTQsNDczMTUsNDczMTcsNDczMTgsNDczMTksNDczMjAsNDczMjEsNDczMjIsNDczMjMsNDczMjQsNDczMjYsNDczMjgsNDczMzAsNDczMzEsNDczMzIsNDczMzMsNDczMzQsNDczMzUsNDczMzgsNDczMzksNDczNDEsNDczNDIsNDczNDMsNDczNDUsNDczNDYsNDczNDcsNDczNDgsNDczNDksNDczNTAsNDczNTEsNDczNTQsNDczNTYsNDczNTgsNDczNTksNDczNjAsNDczNjEsNDczNjIsNDczNjMsNDczNjUsNDczNjYsNDczNjcsNDczNjgsNDczNjksNDczNzAsNDczNzEsNDczNzIsNDczNzMsNDczNzQsNDczNzUsNDczNzYsNDczNzcsNDczNzgsNDczNzksNDczODAsNDczODEsNDczODIsNDczODMsNDczODUsNDczODYsNDczODcsNDczODgsNDczODksNDczOTAsNDczOTEsNDczOTMsNDczOTQsNDczOTUsNDczOTYsNDczOTcsNDczOTgsNDczOTksNDc0MDAsNDc0MDEsNDc0MDIsNDc0MDMsNDc0MDQsNDc0MDUsNDc0MDYsNDc0MDcsNDc0MDgsNDc0MDksNDc0MTAsNDc0MTEsNDc0MTIsNDc0MTMsNDc0MTQsNDc0MTUsNDc0MTYsNDc0MTcsNDc0MTgsNDc0MTksNDc0MjIsNDc0MjMsNDc0MjUsNDc0MjYsNDc0MjcsNDc0MjksNDc0MzAsNDc0MzEsNDc0MzIsNDc0MzMsNDc0MzQsNDc0MzUsNDc0MzcsNDc0MzgsNDc0NDAsNDc0NDIsNDc0NDMsNDc0NDQsNDc0NDUsNDc0NDYsNDc0NDcsNDc0NTAsNDc0NTEsNDc0NTMsNDc0NTQsNDc0NTUsNDc0NTcsNDc0NTgsNDc0NTksNDc0NjAsNDc0NjEsNDc0NjIsNDc0NjMsNDc0NjYsNDc0NjgsNDc0NzAsNDc0NzEsNDc0NzIsNDc0NzMsNDc0NzQsNDc0NzUsNDc0NzgsNDc0NzksNDc0ODEsNDc0ODIsNDc0ODMsNDc0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc0ODYsNDc0ODcsNDc0ODgsNDc0ODksNDc0OTAsNDc0OTEsNDc0OTQsNDc0OTYsNDc0OTksNDc1MDAsNDc1MDMsNDc1MDQsNDc1MDUsNDc1MDYsNDc1MDcsNDc1MDgsNDc1MDksNDc1MTAsNDc1MTEsNDc1MTIsNDc1MTMsNDc1MTQsNDc1MTUsNDc1MTYsNDc1MTcsNDc1MTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc1MTksNDc1MjAsNDc1MjEsNDc1MjIsNDc1MjMsNDc1MjQsNDc1MjUsNDc1MjYsNDc1MjcsNDc1MjgsNDc1MjksNDc1MzAsNDc1MzEsNDc1MzQsNDc1MzUsNDc1MzcsNDc1MzgsNDc1MzksNDc1NDEsNDc1NDIsNDc1NDMsNDc1NDQsNDc1NDUsNDc1NDYsNDc1NDcsNDc1NTAsNDc1NTIsNDc1NTQsNDc1NTUsNDc1NTYsNDc1NTcsNDc1NTgsNDc1NTksNDc1NjIsNDc1NjMsNDc1NjUsNDc1NzEsNDc1NzIsNDc1NzMsNDc1NzQsNDc1NzUsNDc1NzgsNDc1ODAsNDc1ODMsNDc1ODQsNDc1ODYsNDc1OTAsNDc1OTEsNDc1OTMsNDc1OTQsNDc1OTUsNDc1OTcsNDc1OTgsNDc1OTksNDc2MDAsNDc2MDEsNDc2MDIsNDc2MDMsNDc2MDYsNDc2MTEsNDc2MTIsNDc2MTMsNDc2MTQsNDc2MTUsNDc2MTgsNDc2MTksNDc2MjAsNDc2MjEsNDc2MjIsNDc2MjMsNDc2MjUsNDc2MjYsNDc2MjcsNDc2MjgsNDc2MjksNDc2MzAsNDc2MzEsNDc2MzIsNDc2MzMsNDc2MzQsNDc2MzUsNDc2MzYsNDc2MzgsNDc2MzksNDc2NDAsNDc2NDEsNDc2NDIsNDc2NDMsNDc2NDQsNDc2NDUsNDc2NDYsNDc2NDcsNDc2NDgsNDc2NDksNDc2NTAsNDc2NTEsNDc2NTIsNDc2NTMsNDc2NTQsNDc2NTUsNDc2NTYsNDc2NTcsNDc2NTgsNDc2NTksNDc2NjAsNDc2NjEsNDc2NjIsNDc2NjMsNDc2NjQsNDc2NjUsNDc2NjYsNDc2NjcsNDc2NjgsNDc2NjksNDc2NzAsNDc2NzEsNDc2NzQsNDc2NzUsNDc2NzcsNDc2NzgsNDc2NzksNDc2ODEsNDc2ODMsNDc2ODQsNDc2ODUsNDc2ODYsNDc2ODcsNDc2OTAsNDc2OTIsNDc2OTUsNDc2OTYsNDc2OTcsNDc2OTgsNDc3MDIsNDc3MDMsNDc3MDUsNDc3MDYsNDc3MDcsNDc3MDksNDc3MTAsNDc3MTEsNDc3MTIsNDc3MTMsNDc3MTQsNDc3MTUsNDc3MTgsNDc3MjIsNDc3MjMsNDc3MjQsNDc3MjUsNDc3MjYsNDc3MjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3MzAsNDc3MzEsNDc3MzMsNDc3MzQsNDc3MzUsNDc3MzcsNDc3MzgsNDc3MzksNDc3NDAsNDc3NDEsNDc3NDIsNDc3NDMsNDc3NDQsNDc3NDUsNDc3NDYsNDc3NTAsNDc3NTIsNDc3NTMsNDc3NTQsNDc3NTUsNDc3NTcsNDc3NTgsNDc3NTksNDc3NjAsNDc3NjEsNDc3NjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc3NjMsNDc3NjQsNDc3NjUsNDc3NjYsNDc3NjcsNDc3NjgsNDc3NjksNDc3NzAsNDc3NzEsNDc3NzIsNDc3NzMsNDc3NzQsNDc3NzUsNDc3NzYsNDc3NzcsNDc3NzgsNDc3NzksNDc3ODAsNDc3ODEsNDc3ODIsNDc3ODMsNDc3ODYsNDc3ODksNDc3OTAsNDc3OTEsNDc3OTMsNDc3OTUsNDc3OTYsNDc3OTcsNDc3OTgsNDc3OTksNDc4MDIsNDc4MDQsNDc4MDYsNDc4MDcsNDc4MDgsNDc4MDksNDc4MTAsNDc4MTEsNDc4MTMsNDc4MTQsNDc4MTUsNDc4MTcsNDc4MTgsNDc4MTksNDc4MjAsNDc4MjEsNDc4MjIsNDc4MjMsNDc4MjQsNDc4MjUsNDc4MjYsNDc4MjcsNDc4MjgsNDc4MjksNDc4MzAsNDc4MzEsNDc4MzQsNDc4MzUsNDc4MzYsNDc4MzcsNDc4MzgsNDc4MzksNDc4NDAsNDc4NDEsNDc4NDIsNDc4NDMsNDc4NDQsNDc4NDUsNDc4NDYsNDc4NDcsNDc4NDgsNDc4NDksNDc4NTAsNDc4NTEsNDc4NTIsNDc4NTMsNDc4NTQsNDc4NTUsNDc4NTYsNDc4NTcsNDc4NTgsNDc4NTksNDc4NjAsNDc4NjEsNDc4NjIsNDc4NjMsNDc4NjQsNDc4NjUsNDc4NjYsNDc4NjcsNDc4NjksNDc4NzAsNDc4NzEsNDc4NzMsNDc4NzQsNDc4NzUsNDc4NzcsNDc4NzgsNDc4NzksNDc4ODAsNDc4ODEsNDc4ODIsNDc4ODMsNDc4ODQsNDc4ODYsNDc4ODgsNDc4OTAsNDc4OTEsNDc4OTIsNDc4OTMsNDc4OTQsNDc4OTUsNDc4OTcsNDc4OTgsNDc4OTksNDc5MDEsNDc5MDIsNDc5MDMsNDc5MDUsNDc5MDYsNDc5MDcsNDc5MDgsNDc5MDksNDc5MTAsNDc5MTEsNDc5MTIsNDc5MTQsNDc5MTYsNDc5MTcsNDc5MTgsNDc5MTksNDc5MjAsNDc5MjEsNDc5MjIsNDc5MjMsNDc5MjcsNDc5MjksNDc5MzAsNDc5MzUsNDc5MzYsNDc5MzcsNDc5MzgsNDc5MzksNDc5NDIsNDc5NDQsNDc5NDYsNDc5NDcsNDc5NDgsNDc5NTAsNDc5NTMsNDc5NTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5NTUsNDc5NTcsNDc5NTgsNDc5NTksNDc5NjEsNDc5NjIsNDc5NjMsNDc5NjQsNDc5NjUsNDc5NjYsNDc5NjcsNDc5NjgsNDc5NzAsNDc5NzIsNDc5NzMsNDc5NzQsNDc5NzUsNDc5NzYsNDc5NzcsNDc5NzgsNDc5NzksNDc5ODEsNDc5ODIsNDc5ODMsNDc5ODQsNDc5ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDc5ODYsNDc5ODcsNDc5ODgsNDc5ODksNDc5OTAsNDc5OTEsNDc5OTIsNDc5OTMsNDc5OTQsNDc5OTUsNDc5OTYsNDc5OTcsNDc5OTgsNDc5OTksNDgwMDAsNDgwMDEsNDgwMDIsNDgwMDMsNDgwMDQsNDgwMDUsNDgwMDYsNDgwMDcsNDgwMDksNDgwMTAsNDgwMTEsNDgwMTMsNDgwMTQsNDgwMTUsNDgwMTcsNDgwMTgsNDgwMTksNDgwMjAsNDgwMjEsNDgwMjIsNDgwMjMsNDgwMjQsNDgwMjUsNDgwMjYsNDgwMjcsNDgwMjgsNDgwMjksNDgwMzAsNDgwMzEsNDgwMzIsNDgwMzMsNDgwMzQsNDgwMzUsNDgwMzcsNDgwMzgsNDgwMzksNDgwNDEsNDgwNDIsNDgwNDMsNDgwNDUsNDgwNDYsNDgwNDcsNDgwNDgsNDgwNDksNDgwNTAsNDgwNTEsNDgwNTMsNDgwNTQsNDgwNTYsNDgwNTcsNDgwNTgsNDgwNTksNDgwNjAsNDgwNjEsNDgwNjIsNDgwNjMsNDgwNjUsNDgwNjYsNDgwNjcsNDgwNjksNDgwNzAsNDgwNzEsNDgwNzMsNDgwNzQsNDgwNzUsNDgwNzYsNDgwNzcsNDgwNzgsNDgwNzksNDgwODEsNDgwODIsNDgwODQsNDgwODUsNDgwODYsNDgwODcsNDgwODgsNDgwODksNDgwOTAsNDgwOTEsNDgwOTIsNDgwOTMsNDgwOTQsNDgwOTUsNDgwOTYsNDgwOTcsNDgwOTgsNDgwOTksNDgxMDAsNDgxMDEsNDgxMDIsNDgxMDMsNDgxMDQsNDgxMDUsNDgxMDYsNDgxMDcsNDgxMDgsNDgxMDksNDgxMTAsNDgxMTEsNDgxMTIsNDgxMTMsNDgxMTQsNDgxMTUsNDgxMTYsNDgxMTcsNDgxMTgsNDgxMTksNDgxMjIsNDgxMjMsNDgxMjUsNDgxMjYsNDgxMjksNDgxMzEsNDgxMzIsNDgxMzMsNDgxMzQsNDgxMzUsNDgxMzgsNDgxNDIsNDgxNDQsNDgxNDYsNDgxNDcsNDgxNTMsNDgxNTQsNDgxNjAsNDgxNjEsNDgxNjIsNDgxNjMsNDgxNjYsNDgxNjgsNDgxNzAsNDgxNzEsNDgxNzIsNDgxNzQsNDgxNzUsNDgxNzgsNDgxNzksNDgxODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDgxODIsNDgxODMsNDgxODUsNDgxODYsNDgxODcsNDgxODgsNDgxODksNDgxOTAsNDgxOTEsNDgxOTQsNDgxOTgsNDgxOTksNDgyMDAsNDgyMDIsNDgyMDMsNDgyMDYsNDgyMDcsNDgyMDksNDgyMTAsNDgyMTEsNDgyMTIsNDgyMTMsNDgyMTQsNDgyMTUsNDgyMTYsNDgyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDgyMTgsNDgyMTksNDgyMjAsNDgyMjIsNDgyMjMsNDgyMjQsNDgyMjUsNDgyMjYsNDgyMjcsNDgyMjgsNDgyMjksNDgyMzAsNDgyMzEsNDgyMzIsNDgyMzMsNDgyMzQsNDgyMzUsNDgyMzYsNDgyMzcsNDgyMzgsNDgyMzksNDgyNDAsNDgyNDEsNDgyNDIsNDgyNDMsNDgyNDQsNDgyNDUsNDgyNDYsNDgyNDcsNDgyNDgsNDgyNDksNDgyNTAsNDgyNTEsNDgyNTIsNDgyNTMsNDgyNTQsNDgyNTUsNDgyNTYsNDgyNTcsNDgyNTgsNDgyNTksNDgyNjIsNDgyNjMsNDgyNjUsNDgyNjYsNDgyNjksNDgyNzEsNDgyNzIsNDgyNzMsNDgyNzQsNDgyNzUsNDgyNzgsNDgyODAsNDgyODMsNDgyODQsNDgyODUsNDgyODYsNDgyODcsNDgyOTAsNDgyOTEsNDgyOTMsNDgyOTQsNDgyOTcsNDgyOTgsNDgyOTksNDgzMDAsNDgzMDEsNDgzMDIsNDgzMDMsNDgzMDYsNDgzMTAsNDgzMTEsNDgzMTIsNDgzMTMsNDgzMTQsNDgzMTUsNDgzMTgsNDgzMTksNDgzMjEsNDgzMjIsNDgzMjMsNDgzMjUsNDgzMjYsNDgzMjcsNDgzMjgsNDgzMjksNDgzMzAsNDgzMzEsNDgzMzIsNDgzMzQsNDgzMzgsNDgzMzksNDgzNDAsNDgzNDIsNDgzNDMsNDgzNDUsNDgzNDYsNDgzNDcsNDgzNDksNDgzNTAsNDgzNTEsNDgzNTIsNDgzNTMsNDgzNTQsNDgzNTUsNDgzNTYsNDgzNTcsNDgzNTgsNDgzNTksNDgzNjAsNDgzNjEsNDgzNjIsNDgzNjMsNDgzNjQsNDgzNjUsNDgzNjYsNDgzNjcsNDgzNjgsNDgzNjksNDgzNzAsNDgzNzEsNDgzNzUsNDgzNzcsNDgzNzgsNDgzNzksNDgzODEsNDgzODIsNDgzODMsNDgzODQsNDgzODUsNDgzODYsNDgzODcsNDgzOTAsNDgzOTIsNDgzOTQsNDgzOTUsNDgzOTYsNDgzOTcsNDgzOTgsNDgzOTksNDg0MDEsNDg0MDIsNDg0MDMsNDg0MDUsNDg0MDYsNDg0MDcsNDg0MDgsNDg0MDksNDg0MTAsNDg0MTEsNDg0MTIsNDg0MTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg0MTQsNDg0MTUsNDg0MTYsNDg0MTcsNDg0MTgsNDg0MTksNDg0MjEsNDg0MjIsNDg0MjMsNDg0MjQsNDg0MjUsNDg0MjYsNDg0MjcsNDg0MjksNDg0MzAsNDg0MzEsNDg0MzIsNDg0MzMsNDg0MzQsNDg0MzUsNDg0MzYsNDg0MzcsNDg0MzgsNDg0MzksNDg0NDAsNDg0NDEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg0NDIsNDg0NDMsNDg0NDQsNDg0NDUsNDg0NDYsNDg0NDcsNDg0NDksNDg0NTAsNDg0NTEsNDg0NTIsNDg0NTMsNDg0NTQsNDg0NTUsNDg0NTgsNDg0NTksNDg0NjEsNDg0NjIsNDg0NjMsNDg0NjUsNDg0NjYsNDg0NjcsNDg0NjgsNDg0NjksNDg0NzAsNDg0NzEsNDg0NzQsNDg0NzUsNDg0NzYsNDg0NzcsNDg0NzgsNDg0NzksNDg0ODAsNDg0ODEsNDg0ODIsNDg0ODMsNDg0ODUsNDg0ODYsNDg0ODcsNDg0ODksNDg0OTAsNDg0OTEsNDg0OTIsNDg0OTMsNDg0OTQsNDg0OTUsNDg0OTYsNDg0OTcsNDg0OTgsNDg0OTksNDg1MDAsNDg1MDEsNDg1MDIsNDg1MDMsNDg1MDQsNDg1MDUsNDg1MDYsNDg1MDcsNDg1MDgsNDg1MDksNDg1MTAsNDg1MTEsNDg1MTQsNDg1MTUsNDg1MTcsNDg1MTgsNDg1MjMsNDg1MjQsNDg1MjUsNDg1MjYsNDg1MjcsNDg1MzAsNDg1MzIsNDg1MzQsNDg1MzUsNDg1MzYsNDg1MzksNDg1NDEsNDg1NDIsNDg1NDMsNDg1NDQsNDg1NDUsNDg1NDYsNDg1NDcsNDg1NDksNDg1NTAsNDg1NTEsNDg1NTIsNDg1NTMsNDg1NTQsNDg1NTUsNDg1NTYsNDg1NTcsNDg1NTgsNDg1NTksNDg1NjEsNDg1NjIsNDg1NjMsNDg1NjQsNDg1NjUsNDg1NjYsNDg1NjcsNDg1NjksNDg1NzAsNDg1NzEsNDg1NzIsNDg1NzMsNDg1NzQsNDg1NzUsNDg1NzYsNDg1NzcsNDg1NzgsNDg1NzksNDg1ODAsNDg1ODEsNDg1ODIsNDg1ODMsNDg1ODQsNDg1ODUsNDg1ODYsNDg1ODcsNDg1ODgsNDg1ODksNDg1OTAsNDg1OTEsNDg1OTIsNDg1OTMsNDg1OTQsNDg1OTUsNDg1OTgsNDg1OTksNDg2MDEsNDg2MDIsNDg2MDMsNDg2MDUsNDg2MDYsNDg2MDcsNDg2MDgsNDg2MDksNDg2MTAsNDg2MTEsNDg2MTIsNDg2MTMsNDg2MTQsNDg2MTUsNDg2MTYsNDg2MTgsNDg2MTksNDg2MjAsNDg2MjEsNDg2MjIsNDg2MjMsNDg2MjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg2MjYsNDg2MjcsNDg2MjksNDg2MzAsNDg2MzEsNDg2MzMsNDg2MzQsNDg2MzUsNDg2MzYsNDg2MzcsNDg2MzgsNDg2MzksNDg2NDEsNDg2NDIsNDg2NDQsNDg2NDYsNDg2NDcsNDg2NDgsNDg2NDksNDg2NTAsNDg2NTEsNDg2NTQsNDg2NTUsNDg2NTcsNDg2NTgsNDg2NTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg2NjEsNDg2NjIsNDg2NjMsNDg2NjQsNDg2NjUsNDg2NjYsNDg2NjcsNDg2NzAsNDg2NzIsNDg2NzMsNDg2NzQsNDg2NzUsNDg2NzYsNDg2NzcsNDg2NzgsNDg2NzksNDg2ODAsNDg2ODEsNDg2ODIsNDg2ODMsNDg2ODQsNDg2ODUsNDg2ODYsNDg2ODcsNDg2ODgsNDg2ODksNDg2OTAsNDg2OTEsNDg2OTIsNDg2OTMsNDg2OTQsNDg2OTUsNDg2OTYsNDg2OTcsNDg2OTgsNDg2OTksNDg3MDAsNDg3MDEsNDg3MDIsNDg3MDMsNDg3MDQsNDg3MDUsNDg3MDYsNDg3MDcsNDg3MTAsNDg3MTEsNDg3MTMsNDg3MTQsNDg3MTUsNDg3MTcsNDg3MTksNDg3MjAsNDg3MjEsNDg3MjIsNDg3MjMsNDg3MjYsNDg3MjgsNDg3MzIsNDg3MzMsNDg3MzQsNDg3MzUsNDg3MzgsNDg3MzksNDg3NDEsNDg3NDIsNDg3NDMsNDg3NDUsNDg3NDcsNDg3NDgsNDg3NDksNDg3NTAsNDg3NTEsNDg3NTQsNDg3NTgsNDg3NTksNDg3NjAsNDg3NjEsNDg3NjIsNDg3NjYsNDg3NjcsNDg3NjksNDg3NzAsNDg3NzEsNDg3NzMsNDg3NzQsNDg3NzUsNDg3NzYsNDg3NzcsNDg3NzgsNDg3NzksNDg3ODIsNDg3ODYsNDg3ODcsNDg3ODgsNDg3ODksNDg3OTAsNDg3OTEsNDg3OTQsNDg3OTUsNDg3OTYsNDg3OTcsNDg3OTgsNDg3OTksNDg4MDAsNDg4MDEsNDg4MDIsNDg4MDMsNDg4MDQsNDg4MDUsNDg4MDYsNDg4MDcsNDg4MDksNDg4MTAsNDg4MTEsNDg4MTIsNDg4MTMsNDg4MTQsNDg4MTUsNDg4MTYsNDg4MTcsNDg4MTgsNDg4MTksNDg4MjAsNDg4MjEsNDg4MjIsNDg4MjMsNDg4MjQsNDg4MjUsNDg4MjYsNDg4MjcsNDg4MjgsNDg4MjksNDg4MzAsNDg4MzEsNDg4MzIsNDg4MzMsNDg4MzQsNDg4MzUsNDg4MzYsNDg4MzcsNDg4MzgsNDg4MzksNDg4NDAsNDg4NDEsNDg4NDIsNDg4NDMsNDg4NDQsNDg4NDUsNDg4NDYsNDg4NDcsNDg4NTAsNDg4NTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg4NTMsNDg4NTQsNDg4NTcsNDg4NTgsNDg4NTksNDg4NjAsNDg4NjEsNDg4NjIsNDg4NjMsNDg4NjUsNDg4NjYsNDg4NzAsNDg4NzEsNDg4NzIsNDg4NzMsNDg4NzQsNDg4NzUsNDg4NzcsNDg4NzgsNDg4NzksNDg4ODAsNDg4ODEsNDg4ODIsNDg4ODMsNDg4ODQsNDg4ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDg4ODYsNDg4ODcsNDg4ODgsNDg4ODksNDg4OTAsNDg4OTEsNDg4OTIsNDg4OTMsNDg4OTQsNDg4OTUsNDg4OTYsNDg4OTgsNDg4OTksNDg5MDAsNDg5MDEsNDg5MDIsNDg5MDMsNDg5MDYsNDg5MDcsNDg5MDgsNDg5MDksNDg5MTAsNDg5MTEsNDg5MTIsNDg5MTMsNDg5MTQsNDg5MTUsNDg5MTYsNDg5MTcsNDg5MTgsNDg5MTksNDg5MjIsNDg5MjYsNDg5MjcsNDg5MjgsNDg5MjksNDg5MzAsNDg5MzEsNDg5MzIsNDg5MzMsNDg5MzQsNDg5MzUsNDg5MzYsNDg5MzcsNDg5MzgsNDg5MzksNDg5NDAsNDg5NDEsNDg5NDIsNDg5NDMsNDg5NDQsNDg5NDUsNDg5NDYsNDg5NDcsNDg5NDgsNDg5NDksNDg5NTAsNDg5NTEsNDg5NTIsNDg5NTMsNDg5NTQsNDg5NTUsNDg5NTYsNDg5NTcsNDg5NTgsNDg5NTksNDg5NjIsNDg5NjMsNDg5NjUsNDg5NjYsNDg5NjcsNDg5NjksNDg5NzAsNDg5NzEsNDg5NzIsNDg5NzMsNDg5NzQsNDg5NzUsNDg5NzgsNDg5NzksNDg5ODAsNDg5ODIsNDg5ODMsNDg5ODQsNDg5ODUsNDg5ODYsNDg5ODcsNDg5ODgsNDg5ODksNDg5OTAsNDg5OTEsNDg5OTIsNDg5OTMsNDg5OTQsNDg5OTUsNDg5OTYsNDg5OTcsNDg5OTgsNDg5OTksNDkwMDAsNDkwMDEsNDkwMDIsNDkwMDMsNDkwMDQsNDkwMDUsNDkwMDYsNDkwMDcsNDkwMDgsNDkwMDksNDkwMTAsNDkwMTEsNDkwMTIsNDkwMTMsNDkwMTQsNDkwMTUsNDkwMTYsNDkwMTcsNDkwMTgsNDkwMTksNDkwMjAsNDkwMjEsNDkwMjIsNDkwMjMsNDkwMjQsNDkwMjUsNDkwMjYsNDkwMjcsNDkwMjgsNDkwMjksNDkwMzAsNDkwMzEsNDkwMzIsNDkwMzMsNDkwMzQsNDkwMzUsNDkwMzYsNDkwMzcsNDkwMzgsNDkwMzksNDkwNDAsNDkwNDEsNDkwNDIsNDkwNDMsNDkwNDUsNDkwNDYsNDkwNDcsNDkwNDgsNDkwNDksNDkwNTAsNDkwNTEsNDkwNTIsNDkwNTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwNTQsNDkwNTUsNDkwNTYsNDkwNTcsNDkwNTgsNDkwNTksNDkwNjAsNDkwNjEsNDkwNjIsNDkwNjMsNDkwNjQsNDkwNjUsNDkwNjYsNDkwNjcsNDkwNjgsNDkwNjksNDkwNzAsNDkwNzEsNDkwNzMsNDkwNzQsNDkwNzUsNDkwNzYsNDkwNzcsNDkwNzgsNDkwNzksNDkwODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkwODEsNDkwODIsNDkwODMsNDkwODQsNDkwODUsNDkwODYsNDkwODcsNDkwODgsNDkwODksNDkwOTAsNDkwOTEsNDkwOTIsNDkwOTQsNDkwOTUsNDkwOTYsNDkwOTcsNDkwOTgsNDkwOTksNDkxMDIsNDkxMDMsNDkxMDUsNDkxMDYsNDkxMDcsNDkxMDksNDkxMTAsNDkxMTEsNDkxMTIsNDkxMTMsNDkxMTQsNDkxMTUsNDkxMTcsNDkxMTgsNDkxMjAsNDkxMjIsNDkxMjMsNDkxMjQsNDkxMjUsNDkxMjYsNDkxMjcsNDkxMjgsNDkxMjksNDkxMzAsNDkxMzEsNDkxMzIsNDkxMzMsNDkxMzQsNDkxMzUsNDkxMzYsNDkxMzcsNDkxMzgsNDkxMzksNDkxNDAsNDkxNDEsNDkxNDIsNDkxNDMsNDkxNDQsNDkxNDUsNDkxNDYsNDkxNDcsNDkxNDgsNDkxNDksNDkxNTAsNDkxNTEsNDkxNTIsNDkxNTMsNDkxNTQsNDkxNTUsNDkxNTYsNDkxNTcsNDkxNTgsNDkxNTksNDkxNjAsNDkxNjEsNDkxNjIsNDkxNjMsNDkxNjQsNDkxNjUsNDkxNjYsNDkxNjcsNDkxNjgsNDkxNjksNDkxNzAsNDkxNzEsNDkxNzIsNDkxNzMsNDkxNzQsNDkxNzUsNDkxNzYsNDkxNzcsNDkxNzgsNDkxNzksNDkxODAsNDkxODEsNDkxODIsNDkxODMsNDkxODQsNDkxODUsNDkxODYsNDkxODcsNDkxODgsNDkxODksNDkxOTAsNDkxOTEsNDkxOTIsNDkxOTMsNDkxOTQsNDkxOTUsNDkxOTYsNDkxOTcsNDkxOTgsNDkxOTksNDkyMDAsNDkyMDEsNDkyMDIsNDkyMDMsNDkyMDQsNDkyMDUsNDkyMDYsNDkyMDcsNDkyMDgsNDkyMDksNDkyMTAsNDkyMTEsNDkyMTMsNDkyMTQsNDkyMTUsNDkyMTYsNDkyMTcsNDkyMTgsNDkyMTksNDkyMjAsNDkyMjEsNDkyMjIsNDkyMjMsNDkyMjQsNDkyMjUsNDkyMjYsNDkyMjcsNDkyMjgsNDkyMjksNDkyMzAsNDkyMzEsNDkyMzIsNDkyMzQsNDkyMzUsNDkyMzYsNDkyMzcsNDkyMzgsNDkyMzksNDkyNDEsNDkyNDIsNDkyNDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNDUsNDkyNDYsNDkyNDcsNDkyNDksNDkyNTAsNDkyNTEsNDkyNTIsNDkyNTMsNDkyNTQsNDkyNTUsNDkyNTgsNDkyNTksNDkyNjAsNDkyNjEsNDkyNjIsNDkyNjMsNDkyNjQsNDkyNjUsNDkyNjYsNDkyNjcsNDkyNjgsNDkyNjksNDkyNzAsNDkyNzEsNDkyNzIsNDkyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDkyNzQsNDkyNzUsNDkyNzYsNDkyNzcsNDkyNzgsNDkyNzksNDkyODAsNDkyODEsNDkyODIsNDkyODMsNDkyODQsNDkyODUsNDkyODYsNDkyODcsNDkyODgsNDkyODksNDkyOTAsNDkyOTEsNDkyOTIsNDkyOTMsNDkyOTQsNDkyOTUsNDkyOTgsNDkyOTksNDkzMDEsNDkzMDIsNDkzMDMsNDkzMDUsNDkzMDYsNDkzMDcsNDkzMDgsNDkzMDksNDkzMTAsNDkzMTEsNDkzMTQsNDkzMTYsNDkzMTgsNDkzMTksNDkzMjAsNDkzMjEsNDkzMjIsNDkzMjMsNDkzMjYsNDkzMjksNDkzMzAsNDkzMzUsNDkzMzYsNDkzMzcsNDkzMzgsNDkzMzksNDkzNDIsNDkzNDYsNDkzNDcsNDkzNDgsNDkzNTAsNDkzNTEsNDkzNTQsNDkzNTUsNDkzNTcsNDkzNTgsNDkzNTksNDkzNjEsNDkzNjIsNDkzNjMsNDkzNjQsNDkzNjUsNDkzNjYsNDkzNjcsNDkzNzAsNDkzNzQsNDkzNzUsNDkzNzYsNDkzNzcsNDkzNzgsNDkzNzksNDkzODIsNDkzODMsNDkzODUsNDkzODYsNDkzODcsNDkzODksNDkzOTAsNDkzOTEsNDkzOTIsNDkzOTMsNDkzOTQsNDkzOTUsNDkzOTgsNDk0MDAsNDk0MDIsNDk0MDMsNDk0MDQsNDk0MDUsNDk0MDYsNDk0MDcsNDk0MDksNDk0MTAsNDk0MTEsNDk0MTMsNDk0MTQsNDk0MTUsNDk0MTcsNDk0MTgsNDk0MTksNDk0MjAsNDk0MjEsNDk0MjIsNDk0MjMsNDk0MjUsNDk0MjYsNDk0MjcsNDk0MjgsNDk0MzAsNDk0MzEsNDk0MzIsNDk0MzMsNDk0MzQsNDk0MzUsNDk0NDEsNDk0NDIsNDk0NDUsNDk0NDgsNDk0NDksNDk0NTAsNDk0NTEsNDk0NTQsNDk0NTgsNDk0NTksNDk0NjAsNDk0NjEsNDk0NjMsNDk0NjYsNDk0NjcsNDk0NjksNDk0NzAsNDk0NzEsNDk0NzMsNDk0NzQsNDk0NzUsNDk0NzYsNDk0NzcsNDk0NzgsNDk0NzksNDk0ODIsNDk0ODYsNDk0ODcsNDk0ODgsNDk0ODksNDk0OTAsNDk0OTEsNDk0OTQsNDk0OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk0OTcsNDk0OTgsNDk0OTksNDk1MDEsNDk1MDIsNDk1MDMsNDk1MDQsNDk1MDUsNDk1MDYsNDk1MDcsNDk1MTAsNDk1MTQsNDk1MTUsNDk1MTYsNDk1MTcsNDk1MTgsNDk1MTksNDk1MjEsNDk1MjIsNDk1MjMsNDk1MjUsNDk1MjYsNDk1MjcsNDk1MjksNDk1MzAsNDk1MzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk1MzIsNDk1MzMsNDk1MzQsNDk1MzUsNDk1MzYsNDk1MzcsNDk1MzgsNDk1MzksNDk1NDAsNDk1NDIsNDk1NDMsNDk1NDQsNDk1NDUsNDk1NDYsNDk1NDcsNDk1NTEsNDk1NTMsNDk1NTQsNDk1NTUsNDk1NTcsNDk1NTksNDk1NjAsNDk1NjEsNDk1NjIsNDk1NjMsNDk1NjYsNDk1NjgsNDk1NzAsNDk1NzEsNDk1NzIsNDk1NzQsNDk1NzUsNDk1NzgsNDk1NzksNDk1ODEsNDk1ODIsNDk1ODMsNDk1ODUsNDk1ODYsNDk1ODcsNDk1ODgsNDk1ODksNDk1OTAsNDk1OTEsNDk1OTIsNDk1OTMsNDk1OTQsNDk1OTUsNDk1OTYsNDk1OTgsNDk1OTksNDk2MDAsNDk2MDEsNDk2MDIsNDk2MDMsNDk2MDUsNDk2MDYsNDk2MDcsNDk2MDksNDk2MTAsNDk2MTEsNDk2MTMsNDk2MTQsNDk2MTUsNDk2MTYsNDk2MTcsNDk2MTgsNDk2MTksNDk2MjEsNDk2MjIsNDk2MjUsNDk2MjYsNDk2MjcsNDk2MjgsNDk2MjksNDk2MzAsNDk2MzEsNDk2MzMsNDk2MzQsNDk2MzUsNDk2MzcsNDk2MzgsNDk2MzksNDk2NDEsNDk2NDIsNDk2NDMsNDk2NDQsNDk2NDUsNDk2NDYsNDk2NDcsNDk2NTAsNDk2NTIsNDk2NTMsNDk2NTQsNDk2NTUsNDk2NTYsNDk2NTcsNDk2NTgsNDk2NTksNDk2NjIsNDk2NjMsNDk2NjUsNDk2NjYsNDk2NjcsNDk2NjksNDk2NzAsNDk2NzEsNDk2NzIsNDk2NzMsNDk2NzQsNDk2NzUsNDk2NzgsNDk2ODAsNDk2ODIsNDk2ODMsNDk2ODQsNDk2ODUsNDk2ODYsNDk2ODcsNDk2OTAsNDk2OTEsNDk2OTMsNDk2OTQsNDk2OTcsNDk2OTgsNDk2OTksNDk3MDAsNDk3MDEsNDk3MDIsNDk3MDMsNDk3MDYsNDk3MDgsNDk3MTAsNDk3MTIsNDk3MTUsNDk3MTcsNDk3MTgsNDk3MTksNDk3MjAsNDk3MjEsNDk3MjIsNDk3MjMsNDk3MjQsNDk3MjUsNDk3MjYsNDk3MjcsNDk3MjgsNDk3MjksNDk3MzAsNDk3MzEsNDk3MzIsNDk3MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3MzQsNDk3MzUsNDk3MzcsNDk3MzgsNDk3MzksNDk3NDAsNDk3NDEsNDk3NDIsNDk3NDMsNDk3NDYsNDk3NDcsNDk3NDksNDk3NTAsNDk3NTEsNDk3NTMsNDk3NTQsNDk3NTUsNDk3NTYsNDk3NTcsNDk3NTgsNDk3NTksNDk3NjEsNDk3NjIsNDk3NjMsNDk3NjQsNDk3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk3NjcsNDk3NjgsNDk3NjksNDk3NzAsNDk3NzEsNDk3NzQsNDk3NzUsNDk3NzcsNDk3NzgsNDk3NzksNDk3ODEsNDk3ODIsNDk3ODMsNDk3ODQsNDk3ODUsNDk3ODYsNDk3ODcsNDk3OTAsNDk3OTIsNDk3OTQsNDk3OTUsNDk3OTYsNDk3OTcsNDk3OTgsNDk3OTksNDk4MDIsNDk4MDMsNDk4MDQsNDk4MDUsNDk4MDYsNDk4MDcsNDk4MDksNDk4MTAsNDk4MTEsNDk4MTIsNDk4MTMsNDk4MTQsNDk4MTUsNDk4MTcsNDk4MTgsNDk4MjAsNDk4MjIsNDk4MjMsNDk4MjQsNDk4MjUsNDk4MjYsNDk4MjcsNDk4MzAsNDk4MzEsNDk4MzMsNDk4MzQsNDk4MzUsNDk4MzgsNDk4MzksNDk4NDAsNDk4NDEsNDk4NDIsNDk4NDMsNDk4NDYsNDk4NDgsNDk4NTAsNDk4NTEsNDk4NTIsNDk4NTMsNDk4NTQsNDk4NTUsNDk4NTYsNDk4NTcsNDk4NTgsNDk4NTksNDk4NjAsNDk4NjEsNDk4NjIsNDk4NjMsNDk4NjQsNDk4NjUsNDk4NjYsNDk4NjcsNDk4NjgsNDk4NjksNDk4NzAsNDk4NzEsNDk4NzIsNDk4NzMsNDk4NzQsNDk4NzUsNDk4NzYsNDk4NzcsNDk4NzgsNDk4NzksNDk4ODAsNDk4ODEsNDk4ODIsNDk4ODMsNDk4ODYsNDk4ODcsNDk4ODksNDk4OTAsNDk4OTMsNDk4OTQsNDk4OTUsNDk4OTYsNDk4OTcsNDk4OTgsNDk5MDIsNDk5MDQsNDk5MDYsNDk5MDcsNDk5MDgsNDk5MDksNDk5MTEsNDk5MTQsNDk5MTcsNDk5MTgsNDk5MTksNDk5MjEsNDk5MjIsNDk5MjMsNDk5MjQsNDk5MjUsNDk5MjYsNDk5MjcsNDk5MzAsNDk5MzEsNDk5MzQsNDk5MzUsNDk5MzYsNDk5MzcsNDk5MzgsNDk5NDIsNDk5NDMsNDk5NDUsNDk5NDYsNDk5NDcsNDk5NDksNDk5NTAsNDk5NTEsNDk5NTIsNDk5NTMsNDk5NTQsNDk5NTUsNDk5NTgsNDk5NTksNDk5NjIsNDk5NjMsNDk5NjQsNDk5NjUsNDk5NjYsNDk5NjcsNDk5NjgsNDk5NjksNDk5NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5NzEsNDk5NzIsNDk5NzMsNDk5NzQsNDk5NzUsNDk5NzYsNDk5NzcsNDk5NzgsNDk5NzksNDk5ODAsNDk5ODEsNDk5ODIsNDk5ODMsNDk5ODQsNDk5ODUsNDk5ODYsNDk5ODcsNDk5ODgsNDk5OTAsNDk5OTEsNDk5OTIsNDk5OTMsNDk5OTQsNDk5OTUsNDk5OTYsNDk5OTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNDk5OTgsNDk5OTksNTAwMDAsNTAwMDEsNTAwMDIsNTAwMDMsNTAwMDQsNTAwMDUsNTAwMDYsNTAwMDcsNTAwMDgsNTAwMDksNTAwMTAsNTAwMTEsNTAwMTIsNTAwMTMsNTAwMTQsNTAwMTUsNTAwMTYsNTAwMTcsNTAwMTgsNTAwMTksNTAwMjAsNTAwMjEsNTAwMjIsNTAwMjMsNTAwMjYsNTAwMjcsNTAwMjksNTAwMzAsNTAwMzEsNTAwMzMsNTAwMzUsNTAwMzYsNTAwMzcsNTAwMzgsNTAwMzksNTAwNDIsNTAwNDMsNTAwNDYsNTAwNDcsNTAwNDgsNTAwNDksNTAwNTAsNTAwNTEsNTAwNTMsNTAwNTQsNTAwNTUsNTAwNTcsNTAwNTgsNTAwNTksNTAwNjEsNTAwNjIsNTAwNjMsNTAwNjQsNTAwNjUsNTAwNjYsNTAwNjcsNTAwNjgsNTAwNjksNTAwNzAsNTAwNzEsNTAwNzIsNTAwNzMsNTAwNzQsNTAwNzUsNTAwNzYsNTAwNzcsNTAwNzgsNTAwNzksNTAwODAsNTAwODEsNTAwODIsNTAwODMsNTAwODQsNTAwODUsNTAwODYsNTAwODcsNTAwODgsNTAwODksNTAwOTAsNTAwOTEsNTAwOTIsNTAwOTMsNTAwOTQsNTAwOTUsNTAwOTYsNTAwOTcsNTAwOTgsNTAwOTksNTAxMDAsNTAxMDEsNTAxMDIsNTAxMDMsNTAxMDQsNTAxMDUsNTAxMDYsNTAxMDcsNTAxMDgsNTAxMDksNTAxMTAsNTAxMTEsNTAxMTMsNTAxMTQsNTAxMTUsNTAxMTYsNTAxMTcsNTAxMTgsNTAxMTksNTAxMjAsNTAxMjEsNTAxMjIsNTAxMjMsNTAxMjQsNTAxMjUsNTAxMjYsNTAxMjcsNTAxMjgsNTAxMjksNTAxMzAsNTAxMzEsNTAxMzIsNTAxMzMsNTAxMzQsNTAxMzUsNTAxMzgsNTAxMzksNTAxNDEsNTAxNDIsNTAxNDUsNTAxNDcsNTAxNDgsNTAxNDksNTAxNTAsNTAxNTEsNTAxNTQsNTAxNTUsNTAxNTYsNTAxNTgsNTAxNTksNTAxNjAsNTAxNjEsNTAxNjIsNTAxNjMsNTAxNjYsNTAxNjcsNTAxNjksNTAxNzAsNTAxNzEsNTAxNzIsNTAxNzMsNTAxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAxNzUsNTAxNzYsNTAxNzcsNTAxNzgsNTAxNzksNTAxODAsNTAxODEsNTAxODIsNTAxODMsNTAxODUsNTAxODYsNTAxODcsNTAxODgsNTAxODksNTAxOTAsNTAxOTEsNTAxOTMsNTAxOTQsNTAxOTUsNTAxOTYsNTAxOTcsNTAxOTgsNTAxOTksNTAyMDAsNTAyMDEsNTAyMDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAyMDMsNTAyMDQsNTAyMDUsNTAyMDYsNTAyMDcsNTAyMDgsNTAyMDksNTAyMTAsNTAyMTEsNTAyMTMsNTAyMTQsNTAyMTUsNTAyMTYsNTAyMTcsNTAyMTgsNTAyMTksNTAyMjEsNTAyMjIsNTAyMjMsNTAyMjUsNTAyMjYsNTAyMjcsNTAyMjksNTAyMzAsNTAyMzEsNTAyMzIsNTAyMzMsNTAyMzQsNTAyMzUsNTAyMzgsNTAyMzksNTAyNDAsNTAyNDEsNTAyNDIsNTAyNDMsNTAyNDQsNTAyNDUsNTAyNDYsNTAyNDcsNTAyNDksNTAyNTAsNTAyNTEsNTAyNTIsNTAyNTMsNTAyNTQsNTAyNTUsNTAyNTYsNTAyNTcsNTAyNTgsNTAyNTksNTAyNjAsNTAyNjEsNTAyNjIsNTAyNjMsNTAyNjQsNTAyNjUsNTAyNjYsNTAyNjcsNTAyNjgsNTAyNjksNTAyNzAsNTAyNzEsNTAyNzIsNTAyNzMsNTAyNzQsNTAyNzUsNTAyNzgsNTAyNzksNTAyODEsNTAyODIsNTAyODMsNTAyODUsNTAyODYsNTAyODcsNTAyODgsNTAyODksNTAyOTAsNTAyOTEsNTAyOTQsNTAyOTUsNTAyOTYsNTAyOTgsNTAyOTksNTAzMDAsNTAzMDEsNTAzMDIsNTAzMDMsNTAzMDUsNTAzMDYsNTAzMDcsNTAzMDgsNTAzMDksNTAzMTAsNTAzMTEsNTAzMTIsNTAzMTMsNTAzMTQsNTAzMTUsNTAzMTYsNTAzMTcsNTAzMTgsNTAzMTksNTAzMjAsNTAzMjEsNTAzMjIsNTAzMjMsNTAzMjUsNTAzMjYsNTAzMjcsNTAzMjgsNTAzMjksNTAzMzAsNTAzMzEsNTAzMzMsNTAzMzQsNTAzMzUsNTAzMzYsNTAzMzcsNTAzMzgsNTAzMzksNTAzNDAsNTAzNDEsNTAzNDIsNTAzNDMsNTAzNDQsNTAzNDUsNTAzNDYsNTAzNDcsNTAzNDgsNTAzNDksNTAzNTAsNTAzNTEsNTAzNTIsNTAzNTMsNTAzNTQsNTAzNTUsNTAzNTYsNTAzNTcsNTAzNTgsNTAzNTksNTAzNjEsNTAzNjIsNTAzNjMsNTAzNjUsNTAzNjYsNTAzNjcsNTAzNjgsNTAzNjksNTAzNzAsNTAzNzEsNTAzNzIsNTAzNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTAzNzQsNTAzNzUsNTAzNzYsNTAzNzcsNTAzNzgsNTAzNzksNTAzODAsNTAzODEsNTAzODIsNTAzODMsNTAzODQsNTAzODUsNTAzODYsNTAzODcsNTAzODgsNTAzODksNTAzOTAsNTAzOTEsNTAzOTIsNTAzOTMsNTAzOTQsNTAzOTUsNTAzOTYsNTAzOTcsNTAzOTgsNTAzOTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA0MDAsNTA0MDEsNTA0MDIsNTA0MDMsNTA0MDQsNTA0MDUsNTA0MDYsNTA0MDcsNTA0MDgsNTA0MTAsNTA0MTEsNTA0MTIsNTA0MTMsNTA0MTQsNTA0MTUsNTA0MTgsNTA0MTksNTA0MjEsNTA0MjIsNTA0MjMsNTA0MjUsNTA0MjcsNTA0MjgsNTA0MjksNTA0MzAsNTA0MzQsNTA0MzUsNTA0MzYsNTA0MzcsNTA0MzgsNTA0MzksNTA0NDAsNTA0NDEsNTA0NDIsNTA0NDMsNTA0NDUsNTA0NDYsNTA0NDcsNTA0NDksNTA0NTAsNTA0NTEsNTA0NTMsNTA0NTQsNTA0NTUsNTA0NTYsNTA0NTcsNTA0NTgsNTA0NTksNTA0NjEsNTA0NjIsNTA0NjMsNTA0NjQsNTA0NjUsNTA0NjYsNTA0NjcsNTA0NjgsNTA0NjksNTA0NzAsNTA0NzEsNTA0NzQsNTA0NzUsNTA0NzcsNTA0NzgsNTA0NzksNTA0ODEsNTA0ODIsNTA0ODMsNTA0ODQsNTA0ODUsNTA0ODYsNTA0ODcsNTA0OTAsNTA0OTIsNTA0OTQsNTA0OTUsNTA0OTYsNTA0OTcsNTA0OTgsNTA0OTksNTA1MDIsNTA1MDMsNTA1MDcsNTA1MTEsNTA1MTIsNTA1MTMsNTA1MTQsNTA1MTgsNTA1MjIsNTA1MjMsNTA1MjQsNTA1MjcsNTA1MzAsNTA1MzEsNTA1MzMsNTA1MzQsNTA1MzUsNTA1MzcsNTA1MzgsNTA1MzksNTA1NDAsNTA1NDEsNTA1NDIsNTA1NDMsNTA1NDYsNTA1NTAsNTA1NTEsNTA1NTIsNTA1NTMsNTA1NTQsNTA1NTUsNTA1NTgsNTA1NTksNTA1NjEsNTA1NjIsNTA1NjMsNTA1NjUsNTA1NjYsNTA1NjgsNTA1NjksNTA1NzAsNTA1NzEsNTA1NzQsNTA1NzYsNTA1NzgsNTA1NzksNTA1ODAsNTA1ODIsNTA1ODUsNTA1ODYsNTA1ODcsNTA1ODksNTA1OTAsNTA1OTEsNTA1OTMsNTA1OTQsNTA1OTUsNTA1OTYsNTA1OTcsNTA1OTgsNTA1OTksNTA2MDAsNTA2MDIsNTA2MDMsNTA2MDQsNTA2MDUsNTA2MDYsNTA2MDcsNTA2MDgsNTA2MDksNTA2MTAsNTA2MTEsNTA2MTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA2MTUsNTA2MTgsNTA2MjMsNTA2MjQsNTA2MjUsNTA2MjYsNTA2MjcsNTA2MzUsNTA2MzcsNTA2MzksNTA2NDIsNTA2NDMsNTA2NDUsNTA2NDYsNTA2NDcsNTA2NDksNTA2NTAsNTA2NTEsNTA2NTIsNTA2NTMsNTA2NTQsNTA2NTUsNTA2NTgsNTA2NjAsNTA2NjIsNTA2NjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA2NjQsNTA2NjUsNTA2NjYsNTA2NjcsNTA2NzEsNTA2NzMsNTA2NzQsNTA2NzUsNTA2NzcsNTA2ODAsNTA2ODEsNTA2ODIsNTA2ODMsNTA2OTAsNTA2OTEsNTA2OTIsNTA2OTcsNTA2OTgsNTA2OTksNTA3MDEsNTA3MDIsNTA3MDMsNTA3MDUsNTA3MDYsNTA3MDcsNTA3MDgsNTA3MDksNTA3MTAsNTA3MTEsNTA3MTQsNTA3MTcsNTA3MTgsNTA3MTksNTA3MjAsNTA3MjEsNTA3MjIsNTA3MjMsNTA3MjYsNTA3MjcsNTA3MjksNTA3MzAsNTA3MzEsNTA3MzUsNTA3MzcsNTA3MzgsNTA3NDIsNTA3NDQsNTA3NDYsNTA3NDgsNTA3NDksNTA3NTAsNTA3NTEsNTA3NTQsNTA3NTUsNTA3NTcsNTA3NTgsNTA3NTksNTA3NjEsNTA3NjIsNTA3NjMsNTA3NjQsNTA3NjUsNTA3NjYsNTA3NjcsNTA3NzAsNTA3NzQsNTA3NzUsNTA3NzYsNTA3NzcsNTA3NzgsNTA3NzksNTA3ODIsNTA3ODMsNTA3ODUsNTA3ODYsNTA3ODcsNTA3ODgsNTA3ODksNTA3OTAsNTA3OTEsNTA3OTIsNTA3OTMsNTA3OTQsNTA3OTUsNTA3OTcsNTA3OTgsNTA4MDAsNTA4MDIsNTA4MDMsNTA4MDQsNTA4MDUsNTA4MDYsNTA4MDcsNTA4MTAsNTA4MTEsNTA4MTMsNTA4MTQsNTA4MTUsNTA4MTcsNTA4MTgsNTA4MTksNTA4MjAsNTA4MjEsNTA4MjIsNTA4MjMsNTA4MjYsNTA4MjgsNTA4MzAsNTA4MzEsNTA4MzIsNTA4MzMsNTA4MzQsNTA4MzUsNTA4MzgsNTA4MzksNTA4NDEsNTA4NDIsNTA4NDMsNTA4NDUsNTA4NDYsNTA4NDcsNTA4NDgsNTA4NDksNTA4NTAsNTA4NTEsNTA4NTQsNTA4NTYsNTA4NTgsNTA4NTksNTA4NjAsNTA4NjEsNTA4NjIsNTA4NjMsNTA4NjYsNTA4NjcsNTA4NjksNTA4NzAsNTA4NzEsNTA4NzUsNTA4NzYsNTA4NzcsNTA4NzgsNTA4NzksNTA4ODIsNTA4ODQsNTA4ODYsNTA4ODcsNTA4ODgsNTA4ODksNTA4OTAsNTA4OTEsNTA4OTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA4OTUsNTA4OTcsNTA4OTgsNTA4OTksNTA5MDEsNTA5MDIsNTA5MDMsNTA5MDQsNTA5MDUsNTA5MDYsNTA5MDcsNTA5MTAsNTA5MTEsNTA5MTQsNTA5MTUsNTA5MTYsNTA5MTcsNTA5MTgsNTA5MTksNTA5MjIsNTA5MjMsNTA5MjUsNTA5MjYsNTA5MjcsNTA5MjksNTA5MzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTA5MzEsNTA5MzIsNTA5MzMsNTA5MzQsNTA5MzUsNTA5MzgsNTA5MzksNTA5NDAsNTA5NDIsNTA5NDMsNTA5NDQsNTA5NDUsNTA5NDYsNTA5NDcsNTA5NTAsNTA5NTEsNTA5NTMsNTA5NTQsNTA5NTUsNTA5NTcsNTA5NTgsNTA5NTksNTA5NjAsNTA5NjEsNTA5NjIsNTA5NjMsNTA5NjYsNTA5NjgsNTA5NzAsNTA5NzEsNTA5NzIsNTA5NzMsNTA5NzQsNTA5NzUsNTA5NzgsNTA5NzksNTA5ODEsNTA5ODIsNTA5ODMsNTA5ODUsNTA5ODYsNTA5ODcsNTA5ODgsNTA5ODksNTA5OTAsNTA5OTEsNTA5OTQsNTA5OTYsNTA5OTgsNTEwMDAsNTEwMDEsNTEwMDIsNTEwMDMsNTEwMDYsNTEwMDcsNTEwMDksNTEwMTAsNTEwMTEsNTEwMTMsNTEwMTQsNTEwMTUsNTEwMTYsNTEwMTcsNTEwMTksNTEwMjIsNTEwMjQsNTEwMzMsNTEwMzQsNTEwMzUsNTEwMzcsNTEwMzgsNTEwMzksNTEwNDEsNTEwNDIsNTEwNDMsNTEwNDQsNTEwNDUsNTEwNDYsNTEwNDcsNTEwNDksNTEwNTAsNTEwNTIsNTEwNTMsNTEwNTQsNTEwNTUsNTEwNTYsNTEwNTcsNTEwNTgsNTEwNTksNTEwNjIsNTEwNjMsNTEwNjUsNTEwNjYsNTEwNjcsNTEwNzEsNTEwNzIsNTEwNzMsNTEwNzQsNTEwNzgsNTEwODMsNTEwODQsNTEwODUsNTEwODcsNTEwOTAsNTEwOTEsNTEwOTMsNTEwOTcsNTEwOTksNTExMDAsNTExMDEsNTExMDIsNTExMDMsNTExMDYsNTExMTEsNTExMTIsNTExMTMsNTExMTQsNTExMTUsNTExMTgsNTExMTksNTExMjEsNTExMjIsNTExMjMsNTExMjUsNTExMjYsNTExMjcsNTExMjgsNTExMjksNTExMzAsNTExMzEsNTExMzQsNTExMzgsNTExMzksNTExNDAsNTExNDEsNTExNDIsNTExNDMsNTExNDYsNTExNDcsNTExNDksNTExNTEsNTExNTMsNTExNTQsNTExNTUsNTExNTYsNTExNTcsNTExNTgsNTExNTksNTExNjEsNTExNjIsNTExNjMsNTExNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExNjYsNTExNjcsNTExNjgsNTExNjksNTExNzAsNTExNzEsNTExNzMsNTExNzQsNTExNzUsNTExNzcsNTExNzgsNTExNzksNTExODEsNTExODIsNTExODMsNTExODQsNTExODUsNTExODYsNTExODcsNTExODgsNTExODksNTExOTAsNTExOTEsNTExOTIsNTExOTMsNTExOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTExOTUsNTExOTYsNTExOTcsNTExOTgsNTExOTksNTEyMDIsNTEyMDMsNTEyMDUsNTEyMDYsNTEyMDcsNTEyMDksNTEyMTEsNTEyMTIsNTEyMTMsNTEyMTQsNTEyMTUsNTEyMTgsNTEyMjAsNTEyMjMsNTEyMjQsNTEyMjUsNTEyMjYsNTEyMjcsNTEyMzAsNTEyMzEsNTEyMzMsNTEyMzQsNTEyMzUsNTEyMzcsNTEyMzgsNTEyMzksNTEyNDAsNTEyNDEsNTEyNDIsNTEyNDMsNTEyNDYsNTEyNDgsNTEyNTAsNTEyNTEsNTEyNTIsNTEyNTMsNTEyNTQsNTEyNTUsNTEyNTcsNTEyNTgsNTEyNTksNTEyNjEsNTEyNjIsNTEyNjMsNTEyNjUsNTEyNjYsNTEyNjcsNTEyNjgsNTEyNjksNTEyNzAsNTEyNzEsNTEyNzQsNTEyNzUsNTEyNzgsNTEyNzksNTEyODAsNTEyODEsNTEyODIsNTEyODMsNTEyODUsNTEyODYsNTEyODcsNTEyODgsNTEyODksNTEyOTAsNTEyOTEsNTEyOTIsNTEyOTMsNTEyOTQsNTEyOTUsNTEyOTYsNTEyOTcsNTEyOTgsNTEyOTksNTEzMDAsNTEzMDEsNTEzMDIsNTEzMDMsNTEzMDQsNTEzMDUsNTEzMDYsNTEzMDcsNTEzMDgsNTEzMDksNTEzMTAsNTEzMTEsNTEzMTQsNTEzMTUsNTEzMTcsNTEzMTgsNTEzMTksNTEzMjEsNTEzMjMsNTEzMjQsNTEzMjUsNTEzMjYsNTEzMjcsNTEzMzAsNTEzMzIsNTEzMzYsNTEzMzcsNTEzMzgsNTEzNDIsNTEzNDMsNTEzNDQsNTEzNDUsNTEzNDYsNTEzNDcsNTEzNDksNTEzNTAsNTEzNTEsNTEzNTIsNTEzNTMsNTEzNTQsNTEzNTUsNTEzNTYsNTEzNTgsNTEzNjAsNTEzNjIsNTEzNjMsNTEzNjQsNTEzNjUsNTEzNjYsNTEzNjcsNTEzNjksNTEzNzAsNTEzNzEsNTEzNzIsNTEzNzMsNTEzNzQsNTEzNzUsNTEzNzYsNTEzNzcsNTEzNzgsNTEzNzksNTEzODAsNTEzODEsNTEzODIsNTEzODMsNTEzODQsNTEzODUsNTEzODYsNTEzODcsNTEzOTAsNTEzOTEsNTEzOTIsNTEzOTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTEzOTQsNTEzOTUsNTEzOTcsNTEzOTgsNTEzOTksNTE0MDEsNTE0MDIsNTE0MDMsNTE0MDUsNTE0MDYsNTE0MDcsNTE0MDgsNTE0MDksNTE0MTAsNTE0MTEsNTE0MTQsNTE0MTYsNTE0MTgsNTE0MTksNTE0MjAsNTE0MjEsNTE0MjIsNTE0MjMsNTE0MjYsNTE0MjcsNTE0MjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE0MzAsNTE0MzEsNTE0MzIsNTE0MzMsNTE0MzQsNTE0MzUsNTE0MzYsNTE0MzcsNTE0MzgsNTE0MzksNTE0NDAsNTE0NDEsNTE0NDIsNTE0NDMsNTE0NDQsNTE0NDYsNTE0NDcsNTE0NDgsNTE0NDksNTE0NTAsNTE0NTEsNTE0NTQsNTE0NTUsNTE0NTcsNTE0NTgsNTE0NTksNTE0NjMsNTE0NjQsNTE0NjUsNTE0NjYsNTE0NjcsNTE0NzAsMTIyODgsMTIyODksMTIyOTAsMTgzLDgyMjksODIzMCwxNjgsMTIyOTEsMTczLDgyMTMsODc0MSw2NTM0MCw4NzY0LDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODgwMCw4ODA0LDg4MDUsODczNCw4NzU2LDE3Niw4MjQyLDgyNDMsODQ1MSw4NDkxLDY1NTA0LDY1NTA1LDY1NTA5LDk3OTQsOTc5Miw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDE2Nyw4MjUxLDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODU5NCw4NTkyLDg1OTMsODU5NSw4NTk2LDEyMzA3LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsODc0Myw4NzQ0LDY1NTA2LDUxNDcyLDUxNDc0LDUxNDc1LDUxNDc2LDUxNDc3LDUxNDc4LDUxNDc5LDUxNDgxLDUxNDgyLDUxNDgzLDUxNDg0LDUxNDg1LDUxNDg2LDUxNDg3LDUxNDg4LDUxNDg5LDUxNDkwLDUxNDkxLDUxNDkyLDUxNDkzLDUxNDk0LDUxNDk1LDUxNDk2LDUxNDk3LDUxNDk4LDUxNDk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTAxLDUxNTAyLDUxNTAzLDUxNTA0LDUxNTA1LDUxNTA2LDUxNTA3LDUxNTA5LDUxNTEwLDUxNTExLDUxNTEyLDUxNTEzLDUxNTE0LDUxNTE1LDUxNTE2LDUxNTE3LDUxNTE4LDUxNTE5LDUxNTIwLDUxNTIxLDUxNTIyLDUxNTIzLDUxNTI0LDUxNTI1LDUxNTI2LDUxNTI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTI4LDUxNTI5LDUxNTMwLDUxNTMxLDUxNTMyLDUxNTMzLDUxNTM0LDUxNTM1LDUxNTM4LDUxNTM5LDUxNTQxLDUxNTQyLDUxNTQzLDUxNTQ1LDUxNTQ2LDUxNTQ3LDUxNTQ4LDUxNTQ5LDUxNTUwLDUxNTUxLDUxNTU0LDUxNTU2LDUxNTU3LDUxNTU4LDUxNTU5LDUxNTYwLDUxNTYxLDUxNTYyLDUxNTYzLDUxNTY1LDUxNTY2LDUxNTY3LDg2NTgsODY2MCw4NzA0LDg3MDcsMTgwLDY1Mzc0LDcxMSw3MjgsNzMzLDczMCw3MjksMTg0LDczMSwxNjEsMTkxLDcyMCw4NzUwLDg3MjEsODcxOSwxNjQsODQ1Nyw4MjQwLDk2NjUsOTY2NCw5NjU1LDk2NTQsOTgyOCw5ODI0LDk4MjUsOTgyOSw5ODMxLDk4MjcsODg1Nyw5NjcyLDk2MzUsOTY4MCw5NjgxLDk2MTgsOTYzNiw5NjM3LDk2NDAsOTYzOSw5NjM4LDk2NDEsOTgzMiw5NzQzLDk3NDIsOTc1Niw5NzU4LDE4Miw4MjI0LDgyMjUsODU5Nyw4NTk5LDg2MDEsODU5OCw4NjAwLDk4MzcsOTgzMyw5ODM0LDk4MzYsMTI5MjcsMTI4MjgsODQ3MCwxMzI1NSw4NDgyLDEzMjUwLDEzMjcyLDg0ODEsODM2NCwxNzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNTY5LDUxNTcwLDUxNTcxLDUxNTczLDUxNTc0LDUxNTc1LDUxNTc2LDUxNTc3LDUxNTc4LDUxNTc5LDUxNTgxLDUxNTgyLDUxNTgzLDUxNTg0LDUxNTg1LDUxNTg2LDUxNTg3LDUxNTg4LDUxNTg5LDUxNTkwLDUxNTkxLDUxNTk0LDUxNTk1LDUxNTk3LDUxNTk4LDUxNTk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjAxLDUxNjAyLDUxNjAzLDUxNjA0LDUxNjA1LDUxNjA2LDUxNjA3LDUxNjEwLDUxNjEyLDUxNjE0LDUxNjE1LDUxNjE2LDUxNjE3LDUxNjE4LDUxNjE5LDUxNjIwLDUxNjIxLDUxNjIyLDUxNjIzLDUxNjI0LDUxNjI1LDUxNjI2LDUxNjI3LDUxNjI4LDUxNjI5LDUxNjMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNjMxLDUxNjMyLDUxNjMzLDUxNjM0LDUxNjM1LDUxNjM2LDUxNjM3LDUxNjM4LDUxNjM5LDUxNjQwLDUxNjQxLDUxNjQyLDUxNjQzLDUxNjQ0LDUxNjQ1LDUxNjQ2LDUxNjQ3LDUxNjUwLDUxNjUxLDUxNjUzLDUxNjU0LDUxNjU3LDUxNjU5LDUxNjYwLDUxNjYxLDUxNjYyLDUxNjYzLDUxNjY2LDUxNjY4LDUxNjcxLDUxNjcyLDUxNjc1LDY1MjgxLDY1MjgyLDY1MjgzLDY1Mjg0LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1NTEwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1MzczLDY1NTA3LDUxNjc4LDUxNjc5LDUxNjgxLDUxNjgzLDUxNjg1LDUxNjg2LDUxNjg4LDUxNjg5LDUxNjkwLDUxNjkxLDUxNjk0LDUxNjk4LDUxNjk5LDUxNzAwLDUxNzAxLDUxNzAyLDUxNzAzLDUxNzA2LDUxNzA3LDUxNzA5LDUxNzEwLDUxNzExLDUxNzEzLDUxNzE0LDUxNzE1LDUxNzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzE3LDUxNzE4LDUxNzE5LDUxNzIyLDUxNzI2LDUxNzI3LDUxNzI4LDUxNzI5LDUxNzMwLDUxNzMxLDUxNzMzLDUxNzM0LDUxNzM1LDUxNzM3LDUxNzM4LDUxNzM5LDUxNzQwLDUxNzQxLDUxNzQyLDUxNzQzLDUxNzQ0LDUxNzQ1LDUxNzQ2LDUxNzQ3LDUxNzQ4LDUxNzQ5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNzUwLDUxNzUxLDUxNzUyLDUxNzU0LDUxNzU1LDUxNzU2LDUxNzU3LDUxNzU4LDUxNzU5LDUxNzYwLDUxNzYxLDUxNzYyLDUxNzYzLDUxNzY0LDUxNzY1LDUxNzY2LDUxNzY3LDUxNzY4LDUxNzY5LDUxNzcwLDUxNzcxLDUxNzcyLDUxNzczLDUxNzc0LDUxNzc1LDUxNzc2LDUxNzc3LDUxNzc4LDUxNzc5LDUxNzgwLDUxNzgxLDUxNzgyLDEyNTkzLDEyNTk0LDEyNTk1LDEyNTk2LDEyNTk3LDEyNTk4LDEyNTk5LDEyNjAwLDEyNjAxLDEyNjAyLDEyNjAzLDEyNjA0LDEyNjA1LDEyNjA2LDEyNjA3LDEyNjA4LDEyNjA5LDEyNjEwLDEyNjExLDEyNjEyLDEyNjEzLDEyNjE0LDEyNjE1LDEyNjE2LDEyNjE3LDEyNjE4LDEyNjE5LDEyNjIwLDEyNjIxLDEyNjIyLDEyNjIzLDEyNjI0LDEyNjI1LDEyNjI2LDEyNjI3LDEyNjI4LDEyNjI5LDEyNjMwLDEyNjMxLDEyNjMyLDEyNjMzLDEyNjM0LDEyNjM1LDEyNjM2LDEyNjM3LDEyNjM4LDEyNjM5LDEyNjQwLDEyNjQxLDEyNjQyLDEyNjQzLDEyNjQ0LDEyNjQ1LDEyNjQ2LDEyNjQ3LDEyNjQ4LDEyNjQ5LDEyNjUwLDEyNjUxLDEyNjUyLDEyNjUzLDEyNjU0LDEyNjU1LDEyNjU2LDEyNjU3LDEyNjU4LDEyNjU5LDEyNjYwLDEyNjYxLDEyNjYyLDEyNjYzLDEyNjY0LDEyNjY1LDEyNjY2LDEyNjY3LDEyNjY4LDEyNjY5LDEyNjcwLDEyNjcxLDEyNjcyLDEyNjczLDEyNjc0LDEyNjc1LDEyNjc2LDEyNjc3LDEyNjc4LDEyNjc5LDEyNjgwLDEyNjgxLDEyNjgyLDEyNjgzLDEyNjg0LDEyNjg1LDEyNjg2LDUxNzgzLDUxNzg0LDUxNzg1LDUxNzg2LDUxNzg3LDUxNzkwLDUxNzkxLDUxNzkzLDUxNzk0LDUxNzk1LDUxNzk3LDUxNzk4LDUxNzk5LDUxODAwLDUxODAxLDUxODAyLDUxODAzLDUxODA2LDUxODEwLDUxODExLDUxODEyLDUxODEzLDUxODE0LDUxODE1LDUxODE3LDUxODE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODE5LDUxODIwLDUxODIxLDUxODIyLDUxODIzLDUxODI0LDUxODI1LDUxODI2LDUxODI3LDUxODI4LDUxODI5LDUxODMwLDUxODMxLDUxODMyLDUxODMzLDUxODM0LDUxODM1LDUxODM2LDUxODM4LDUxODM5LDUxODQwLDUxODQxLDUxODQyLDUxODQzLDUxODQ1LDUxODQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODQ3LDUxODQ4LDUxODQ5LDUxODUwLDUxODUxLDUxODUyLDUxODUzLDUxODU0LDUxODU1LDUxODU2LDUxODU3LDUxODU4LDUxODU5LDUxODYwLDUxODYxLDUxODYyLDUxODYzLDUxODY1LDUxODY2LDUxODY3LDUxODY4LDUxODY5LDUxODcwLDUxODcxLDUxODcyLDUxODczLDUxODc0LDUxODc1LDUxODc2LDUxODc3LDUxODc4LDUxODc5LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE4ODAsNTE4ODEsNTE4ODIsNTE4ODMsNTE4ODQsNTE4ODUsNTE4ODYsNTE4ODcsNTE4ODgsNTE4ODksNTE4OTAsNTE4OTEsNTE4OTIsNTE4OTMsNTE4OTQsNTE4OTUsNTE4OTYsNTE4OTcsNTE4OTgsNTE4OTksNTE5MDIsNTE5MDMsNTE5MDUsNTE5MDYsNTE5MDcsNTE5MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5MTAsNTE5MTEsNTE5MTIsNTE5MTMsNTE5MTQsNTE5MTUsNTE5MTgsNTE5MjAsNTE5MjIsNTE5MjQsNTE5MjUsNTE5MjYsNTE5MjcsNTE5MzAsNTE5MzEsNTE5MzIsNTE5MzMsNTE5MzQsNTE5MzUsNTE5MzcsNTE5MzgsNTE5MzksNTE5NDAsNTE5NDEsNTE5NDIsNTE5NDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NDQsNTE5NDUsNTE5NDYsNTE5NDcsNTE5NDksNTE5NTAsNTE5NTEsNTE5NTIsNTE5NTMsNTE5NTQsNTE5NTUsNTE5NTcsNTE5NTgsNTE5NTksNTE5NjAsNTE5NjEsNTE5NjIsNTE5NjMsNTE5NjQsNTE5NjUsNTE5NjYsNTE5NjcsNTE5NjgsNTE5NjksNTE5NzAsNTE5NzEsNTE5NzIsNTE5NzMsNTE5NzQsNTE5NzUsNTE5NzcsNTE5NzgsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LDk0OTAsOTQ4OSw5NDk4LDk0OTcsOTQ5NCw5NDkzLDk0ODYsOTQ4NSw5NTAyLDk1MDMsOTUwNSw5NTA2LDk1MTAsOTUxMSw5NTEzLDk1MTQsOTUxNyw5NTE4LDk1MjEsOTUyMiw5NTI1LDk1MjYsOTUyOSw5NTMwLDk1MzMsOTUzNCw5NTM2LDk1MzcsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTk3OSw1MTk4MCw1MTk4MSw1MTk4Miw1MTk4Myw1MTk4NSw1MTk4Niw1MTk4Nyw1MTk4OSw1MTk5MCw1MTk5MSw1MTk5Myw1MTk5NCw1MTk5NSw1MTk5Niw1MTk5Nyw1MTk5OCw1MTk5OSw1MjAwMiw1MjAwMyw1MjAwNCw1MjAwNSw1MjAwNiw1MjAwNyw1MjAwOCw1MjAwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAxMCw1MjAxMSw1MjAxMiw1MjAxMyw1MjAxNCw1MjAxNSw1MjAxNiw1MjAxNyw1MjAxOCw1MjAxOSw1MjAyMCw1MjAyMSw1MjAyMiw1MjAyMyw1MjAyNCw1MjAyNSw1MjAyNiw1MjAyNyw1MjAyOCw1MjAyOSw1MjAzMCw1MjAzMSw1MjAzMiw1MjAzNCw1MjAzNSw1MjAzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjAzNyw1MjAzOCw1MjAzOSw1MjA0Miw1MjA0Myw1MjA0NSw1MjA0Niw1MjA0Nyw1MjA0OSw1MjA1MCw1MjA1MSw1MjA1Miw1MjA1Myw1MjA1NCw1MjA1NSw1MjA1OCw1MjA1OSw1MjA2MCw1MjA2Miw1MjA2Myw1MjA2NCw1MjA2NSw1MjA2Niw1MjA2Nyw1MjA2OSw1MjA3MCw1MjA3MSw1MjA3Miw1MjA3Myw1MjA3NCw1MjA3NSw1MjA3NiwxMzIwNSwxMzIwNiwxMzIwNyw4NDY3LDEzMjA4LDEzMjUyLDEzMjE5LDEzMjIwLDEzMjIxLDEzMjIyLDEzMjA5LDEzMjEwLDEzMjExLDEzMjEyLDEzMjEzLDEzMjE0LDEzMjE1LDEzMjE2LDEzMjE3LDEzMjE4LDEzMjU4LDEzMTk3LDEzMTk4LDEzMTk5LDEzMjYzLDEzMTkyLDEzMTkzLDEzMjU2LDEzMjIzLDEzMjI0LDEzMjMyLDEzMjMzLDEzMjM0LDEzMjM1LDEzMjM2LDEzMjM3LDEzMjM4LDEzMjM5LDEzMjQwLDEzMjQxLDEzMTg0LDEzMTg1LDEzMTg2LDEzMTg3LDEzMTg4LDEzMjQyLDEzMjQzLDEzMjQ0LDEzMjQ1LDEzMjQ2LDEzMjQ3LDEzMjAwLDEzMjAxLDEzMjAyLDEzMjAzLDEzMjA0LDg0ODYsMTMyNDgsMTMyNDksMTMxOTQsMTMxOTUsMTMxOTYsMTMyNzAsMTMyNTMsMTMyMjksMTMyMzAsMTMyMzEsMTMyNzUsMTMyMjUsMTMyMjYsMTMyMjcsMTMyMjgsMTMyNzcsMTMyNjQsMTMyNjcsMTMyNTEsMTMyNTcsMTMyNzYsMTMyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwNzcsNTIwNzgsNTIwNzksNTIwODAsNTIwODEsNTIwODIsNTIwODMsNTIwODQsNTIwODUsNTIwODYsNTIwODcsNTIwOTAsNTIwOTEsNTIwOTIsNTIwOTMsNTIwOTQsNTIwOTUsNTIwOTYsNTIwOTcsNTIwOTgsNTIwOTksNTIxMDAsNTIxMDEsNTIxMDIsNTIxMDMsNTIxMDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMDUsNTIxMDYsNTIxMDcsNTIxMDgsNTIxMDksNTIxMTAsNTIxMTEsNTIxMTIsNTIxMTMsNTIxMTQsNTIxMTUsNTIxMTYsNTIxMTcsNTIxMTgsNTIxMTksNTIxMjAsNTIxMjEsNTIxMjIsNTIxMjMsNTIxMjUsNTIxMjYsNTIxMjcsNTIxMjgsNTIxMjksNTIxMzAsNTIxMzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxMzIsNTIxMzMsNTIxMzQsNTIxMzUsNTIxMzYsNTIxMzcsNTIxMzgsNTIxMzksNTIxNDAsNTIxNDEsNTIxNDIsNTIxNDMsNTIxNDQsNTIxNDUsNTIxNDYsNTIxNDcsNTIxNDgsNTIxNDksNTIxNTAsNTIxNTEsNTIxNTMsNTIxNTQsNTIxNTUsNTIxNTYsNTIxNTcsNTIxNTgsNTIxNTksNTIxNjAsNTIxNjEsNTIxNjIsNTIxNjMsNTIxNjQsMTk4LDIwOCwxNzAsMjk0LG51bGwsMzA2LG51bGwsMzE5LDMyMSwyMTYsMzM4LDE4NiwyMjIsMzU4LDMzMCxudWxsLDEyODk2LDEyODk3LDEyODk4LDEyODk5LDEyOTAwLDEyOTAxLDEyOTAyLDEyOTAzLDEyOTA0LDEyOTA1LDEyOTA2LDEyOTA3LDEyOTA4LDEyOTA5LDEyOTEwLDEyOTExLDEyOTEyLDEyOTEzLDEyOTE0LDEyOTE1LDEyOTE2LDEyOTE3LDEyOTE4LDEyOTE5LDEyOTIwLDEyOTIxLDEyOTIyLDEyOTIzLDk0MjQsOTQyNSw5NDI2LDk0MjcsOTQyOCw5NDI5LDk0MzAsOTQzMSw5NDMyLDk0MzMsOTQzNCw5NDM1LDk0MzYsOTQzNyw5NDM4LDk0MzksOTQ0MCw5NDQxLDk0NDIsOTQ0Myw5NDQ0LDk0NDUsOTQ0Niw5NDQ3LDk0NDgsOTQ0OSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMjIsOTMyMyw5MzI0LDkzMjUsOTMyNiwxODksODUzMSw4NTMyLDE4OCwxOTAsODUzOSw4NTQwLDg1NDEsODU0Miw1MjE2NSw1MjE2Niw1MjE2Nyw1MjE2OCw1MjE2OSw1MjE3MCw1MjE3MSw1MjE3Miw1MjE3Myw1MjE3NCw1MjE3NSw1MjE3Niw1MjE3Nyw1MjE3OCw1MjE3OSw1MjE4MSw1MjE4Miw1MjE4Myw1MjE4NCw1MjE4NSw1MjE4Niw1MjE4Nyw1MjE4OCw1MjE4OSw1MjE5MCw1MjE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjE5Miw1MjE5Myw1MjE5NCw1MjE5NSw1MjE5Nyw1MjE5OCw1MjIwMCw1MjIwMiw1MjIwMyw1MjIwNCw1MjIwNSw1MjIwNiw1MjIwNyw1MjIwOCw1MjIwOSw1MjIxMCw1MjIxMSw1MjIxMiw1MjIxMyw1MjIxNCw1MjIxNSw1MjIxNiw1MjIxNyw1MjIxOCw1MjIxOSw1MjIyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjIyMSw1MjIyMiw1MjIyMyw1MjIyNCw1MjIyNSw1MjIyNiw1MjIyNyw1MjIyOCw1MjIyOSw1MjIzMCw1MjIzMSw1MjIzMiw1MjIzMyw1MjIzNCw1MjIzNSw1MjIzOCw1MjIzOSw1MjI0MSw1MjI0Miw1MjI0Myw1MjI0NSw1MjI0Niw1MjI0Nyw1MjI0OCw1MjI0OSw1MjI1MCw1MjI1MSw1MjI1NCw1MjI1NSw1MjI1Niw1MjI1OSw1MjI2MCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIwLDMyMiwyNDgsMzM5LDIyMywyNTQsMzU5LDMzMSwzMjksMTI4MDAsMTI4MDEsMTI4MDIsMTI4MDMsMTI4MDQsMTI4MDUsMTI4MDYsMTI4MDcsMTI4MDgsMTI4MDksMTI4MTAsMTI4MTEsMTI4MTIsMTI4MTMsMTI4MTQsMTI4MTUsMTI4MTYsMTI4MTcsMTI4MTgsMTI4MTksMTI4MjAsMTI4MjEsMTI4MjIsMTI4MjMsMTI4MjQsMTI4MjUsMTI4MjYsMTI4MjcsOTM3Miw5MzczLDkzNzQsOTM3NSw5Mzc2LDkzNzcsOTM3OCw5Mzc5LDkzODAsOTM4MSw5MzgyLDkzODMsOTM4NCw5Mzg1LDkzODYsOTM4Nyw5Mzg4LDkzODksOTM5MCw5MzkxLDkzOTIsOTM5Myw5Mzk0LDkzOTUsOTM5Niw5Mzk3LDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDE4NSwxNzgsMTc5LDgzMDgsODMxOSw4MzIxLDgzMjIsODMyMyw4MzI0LDUyMjYxLDUyMjYyLDUyMjY2LDUyMjY3LDUyMjY5LDUyMjcxLDUyMjczLDUyMjc0LDUyMjc1LDUyMjc2LDUyMjc3LDUyMjc4LDUyMjc5LDUyMjgyLDUyMjg3LDUyMjg4LDUyMjg5LDUyMjkwLDUyMjkxLDUyMjk0LDUyMjk1LDUyMjk3LDUyMjk4LDUyMjk5LDUyMzAxLDUyMzAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzAzLDUyMzA0LDUyMzA1LDUyMzA2LDUyMzA3LDUyMzEwLDUyMzE0LDUyMzE1LDUyMzE2LDUyMzE3LDUyMzE4LDUyMzE5LDUyMzIxLDUyMzIyLDUyMzIzLDUyMzI1LDUyMzI3LDUyMzI5LDUyMzMwLDUyMzMxLDUyMzMyLDUyMzMzLDUyMzM0LDUyMzM1LDUyMzM3LDUyMzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMzM5LDUyMzQwLDUyMzQyLDUyMzQzLDUyMzQ0LDUyMzQ1LDUyMzQ2LDUyMzQ3LDUyMzQ4LDUyMzQ5LDUyMzUwLDUyMzUxLDUyMzUyLDUyMzUzLDUyMzU0LDUyMzU1LDUyMzU2LDUyMzU3LDUyMzU4LDUyMzU5LDUyMzYwLDUyMzYxLDUyMzYyLDUyMzYzLDUyMzY0LDUyMzY1LDUyMzY2LDUyMzY3LDUyMzY4LDUyMzY5LDUyMzcwLDUyMzcxLDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjM3Miw1MjM3Myw1MjM3NCw1MjM3NSw1MjM3OCw1MjM3OSw1MjM4MSw1MjM4Miw1MjM4Myw1MjM4NSw1MjM4Niw1MjM4Nyw1MjM4OCw1MjM4OSw1MjM5MCw1MjM5MSw1MjM5NCw1MjM5OCw1MjM5OSw1MjQwMCw1MjQwMSw1MjQwMiw1MjQwMyw1MjQwNiw1MjQwNyw1MjQwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQxMCw1MjQxMSw1MjQxMyw1MjQxNCw1MjQxNSw1MjQxNiw1MjQxNyw1MjQxOCw1MjQxOSw1MjQyMiw1MjQyNCw1MjQyNiw1MjQyNyw1MjQyOCw1MjQyOSw1MjQzMCw1MjQzMSw1MjQzMyw1MjQzNCw1MjQzNSw1MjQzNyw1MjQzOCw1MjQzOSw1MjQ0MCw1MjQ0MSw1MjQ0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjQ0Myw1MjQ0NCw1MjQ0NSw1MjQ0Niw1MjQ0Nyw1MjQ0OCw1MjQ0OSw1MjQ1MCw1MjQ1MSw1MjQ1Myw1MjQ1NCw1MjQ1NSw1MjQ1Niw1MjQ1Nyw1MjQ1OCw1MjQ1OSw1MjQ2MSw1MjQ2Miw1MjQ2Myw1MjQ2NSw1MjQ2Niw1MjQ2Nyw1MjQ2OCw1MjQ2OSw1MjQ3MCw1MjQ3MSw1MjQ3Miw1MjQ3Myw1MjQ3NCw1MjQ3NSw1MjQ3Niw1MjQ3NywxMjQ0OSwxMjQ1MCwxMjQ1MSwxMjQ1MiwxMjQ1MywxMjQ1NCwxMjQ1NSwxMjQ1NiwxMjQ1NywxMjQ1OCwxMjQ1OSwxMjQ2MCwxMjQ2MSwxMjQ2MiwxMjQ2MywxMjQ2NCwxMjQ2NSwxMjQ2NiwxMjQ2NywxMjQ2OCwxMjQ2OSwxMjQ3MCwxMjQ3MSwxMjQ3MiwxMjQ3MywxMjQ3NCwxMjQ3NSwxMjQ3NiwxMjQ3NywxMjQ3OCwxMjQ3OSwxMjQ4MCwxMjQ4MSwxMjQ4MiwxMjQ4MywxMjQ4NCwxMjQ4NSwxMjQ4NiwxMjQ4NywxMjQ4OCwxMjQ4OSwxMjQ5MCwxMjQ5MSwxMjQ5MiwxMjQ5MywxMjQ5NCwxMjQ5NSwxMjQ5NiwxMjQ5NywxMjQ5OCwxMjQ5OSwxMjUwMCwxMjUwMSwxMjUwMiwxMjUwMywxMjUwNCwxMjUwNSwxMjUwNiwxMjUwNywxMjUwOCwxMjUwOSwxMjUxMCwxMjUxMSwxMjUxMiwxMjUxMywxMjUxNCwxMjUxNSwxMjUxNiwxMjUxNywxMjUxOCwxMjUxOSwxMjUyMCwxMjUyMSwxMjUyMiwxMjUyMywxMjUyNCwxMjUyNSwxMjUyNiwxMjUyNywxMjUyOCwxMjUyOSwxMjUzMCwxMjUzMSwxMjUzMiwxMjUzMywxMjUzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NzgsNTI0NzksNTI0ODAsNTI0ODIsNTI0ODMsNTI0ODQsNTI0ODUsNTI0ODYsNTI0ODcsNTI0OTAsNTI0OTEsNTI0OTMsNTI0OTQsNTI0OTUsNTI0OTcsNTI0OTgsNTI0OTksNTI1MDAsNTI1MDEsNTI1MDIsNTI1MDMsNTI1MDYsNTI1MDgsNTI1MTAsNTI1MTEsNTI1MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1MTMsNTI1MTQsNTI1MTUsNTI1MTcsNTI1MTgsNTI1MTksNTI1MjEsNTI1MjIsNTI1MjMsNTI1MjUsNTI1MjYsNTI1MjcsNTI1MjgsNTI1MjksNTI1MzAsNTI1MzEsNTI1MzIsNTI1MzMsNTI1MzQsNTI1MzUsNTI1MzYsNTI1MzgsNTI1MzksNTI1NDAsNTI1NDEsNTI1NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NDMsNTI1NDQsNTI1NDUsNTI1NDYsNTI1NDcsNTI1NDgsNTI1NDksNTI1NTAsNTI1NTEsNTI1NTIsNTI1NTMsNTI1NTQsNTI1NTUsNTI1NTYsNTI1NTcsNTI1NTgsNTI1NTksNTI1NjAsNTI1NjEsNTI1NjIsNTI1NjMsNTI1NjQsNTI1NjUsNTI1NjYsNTI1NjcsNTI1NjgsNTI1NjksNTI1NzAsNTI1NzEsNTI1NzMsNTI1NzQsNTI1NzUsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjU3Nyw1MjU3OCw1MjU3OSw1MjU4MSw1MjU4Miw1MjU4Myw1MjU4NCw1MjU4NSw1MjU4Niw1MjU4Nyw1MjU5MCw1MjU5Miw1MjU5NCw1MjU5NSw1MjU5Niw1MjU5Nyw1MjU5OCw1MjU5OSw1MjYwMSw1MjYwMiw1MjYwMyw1MjYwNCw1MjYwNSw1MjYwNiw1MjYwNyw1MjYwOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjYwOSw1MjYxMCw1MjYxMSw1MjYxMiw1MjYxMyw1MjYxNCw1MjYxNSw1MjYxNyw1MjYxOCw1MjYxOSw1MjYyMCw1MjYyMSw1MjYyMiw1MjYyMyw1MjYyNCw1MjYyNSw1MjYyNiw1MjYyNyw1MjYzMCw1MjYzMSw1MjYzMyw1MjYzNCw1MjYzNSw1MjYzNyw1MjYzOCw1MjYzOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY0MCw1MjY0MSw1MjY0Miw1MjY0Myw1MjY0Niw1MjY0OCw1MjY1MCw1MjY1MSw1MjY1Miw1MjY1Myw1MjY1NCw1MjY1NSw1MjY1Nyw1MjY1OCw1MjY1OSw1MjY2MCw1MjY2MSw1MjY2Miw1MjY2Myw1MjY2NCw1MjY2NSw1MjY2Niw1MjY2Nyw1MjY2OCw1MjY2OSw1MjY3MCw1MjY3MSw1MjY3Miw1MjY3Myw1MjY3NCw1MjY3NSw1MjY3NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNjc4LDUyNjc5LDUyNjgwLDUyNjgxLDUyNjgyLDUyNjgzLDUyNjg1LDUyNjg2LDUyNjg3LDUyNjg5LDUyNjkwLDUyNjkxLDUyNjkyLDUyNjkzLDUyNjk0LDUyNjk1LDUyNjk2LDUyNjk3LDUyNjk4LDUyNjk5LDUyNzAwLDUyNzAxLDUyNzAyLDUyNzAzLDUyNzA0LDUyNzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzA2LDUyNzA3LDUyNzA4LDUyNzA5LDUyNzEwLDUyNzExLDUyNzEzLDUyNzE0LDUyNzE1LDUyNzE3LDUyNzE4LDUyNzE5LDUyNzIxLDUyNzIyLDUyNzIzLDUyNzI0LDUyNzI1LDUyNzI2LDUyNzI3LDUyNzMwLDUyNzMyLDUyNzM0LDUyNzM1LDUyNzM2LDUyNzM3LDUyNzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzM5LDUyNzQxLDUyNzQyLDUyNzQzLDUyNzQ1LDUyNzQ2LDUyNzQ3LDUyNzQ5LDUyNzUwLDUyNzUxLDUyNzUyLDUyNzUzLDUyNzU0LDUyNzU1LDUyNzU3LDUyNzU4LDUyNzU5LDUyNzYwLDUyNzYyLDUyNzYzLDUyNzY0LDUyNzY1LDUyNzY2LDUyNzY3LDUyNzcwLDUyNzcxLDUyNzczLDUyNzc0LDUyNzc1LDUyNzc3LDUyNzc4LDUyNzc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI3ODAsNTI3ODEsNTI3ODIsNTI3ODMsNTI3ODYsNTI3ODgsNTI3OTAsNTI3OTEsNTI3OTIsNTI3OTMsNTI3OTQsNTI3OTUsNTI3OTYsNTI3OTcsNTI3OTgsNTI3OTksNTI4MDAsNTI4MDEsNTI4MDIsNTI4MDMsNTI4MDQsNTI4MDUsNTI4MDYsNTI4MDcsNTI4MDgsNTI4MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4MTAsNTI4MTEsNTI4MTIsNTI4MTMsNTI4MTQsNTI4MTUsNTI4MTYsNTI4MTcsNTI4MTgsNTI4MTksNTI4MjAsNTI4MjEsNTI4MjIsNTI4MjMsNTI4MjYsNTI4MjcsNTI4MjksNTI4MzAsNTI4MzQsNTI4MzUsNTI4MzYsNTI4MzcsNTI4MzgsNTI4MzksNTI4NDIsNTI4NDQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4NDYsNTI4NDcsNTI4NDgsNTI4NDksNTI4NTAsNTI4NTEsNTI4NTQsNTI4NTUsNTI4NTcsNTI4NTgsNTI4NTksNTI4NjEsNTI4NjIsNTI4NjMsNTI4NjQsNTI4NjUsNTI4NjYsNTI4NjcsNTI4NzAsNTI4NzIsNTI4NzQsNTI4NzUsNTI4NzYsNTI4NzcsNTI4NzgsNTI4NzksNTI4ODIsNTI4ODMsNTI4ODUsNTI4ODYsNTI4ODcsNTI4ODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjg5MCw1Mjg5MSw1Mjg5Miw1Mjg5Myw1Mjg5NCw1Mjg5NSw1Mjg5OCw1MjkwMiw1MjkwMyw1MjkwNCw1MjkwNSw1MjkwNiw1MjkwNyw1MjkxMCw1MjkxMSw1MjkxMiw1MjkxMyw1MjkxNCw1MjkxNSw1MjkxNiw1MjkxNyw1MjkxOCw1MjkxOSw1MjkyMCw1MjkyMSw1MjkyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjkyMyw1MjkyNCw1MjkyNSw1MjkyNiw1MjkyNyw1MjkyOCw1MjkzMCw1MjkzMSw1MjkzMiw1MjkzMyw1MjkzNCw1MjkzNSw1MjkzNiw1MjkzNyw1MjkzOCw1MjkzOSw1Mjk0MCw1Mjk0MSw1Mjk0Miw1Mjk0Myw1Mjk0NCw1Mjk0NSw1Mjk0Niw1Mjk0Nyw1Mjk0OCw1Mjk0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mjk1MCw1Mjk1MSw1Mjk1Miw1Mjk1Myw1Mjk1NCw1Mjk1NSw1Mjk1Niw1Mjk1Nyw1Mjk1OCw1Mjk1OSw1Mjk2MCw1Mjk2MSw1Mjk2Miw1Mjk2Myw1Mjk2Niw1Mjk2Nyw1Mjk2OSw1Mjk3MCw1Mjk3Myw1Mjk3NCw1Mjk3NSw1Mjk3Niw1Mjk3Nyw1Mjk3OCw1Mjk3OSw1Mjk4Miw1Mjk4Niw1Mjk4Nyw1Mjk4OCw1Mjk4OSw1Mjk5MCw1Mjk5MSw0NDAzMiw0NDAzMyw0NDAzNiw0NDAzOSw0NDA0MCw0NDA0MSw0NDA0Miw0NDA0OCw0NDA0OSw0NDA1MCw0NDA1MSw0NDA1Miw0NDA1Myw0NDA1NCw0NDA1NSw0NDA1Nyw0NDA1OCw0NDA1OSw0NDA2MCw0NDA2MSw0NDA2NCw0NDA2OCw0NDA3Niw0NDA3Nyw0NDA3OSw0NDA4MCw0NDA4MSw0NDA4OCw0NDA4OSw0NDA5Miw0NDA5Niw0NDEwNyw0NDEwOSw0NDExNiw0NDEyMCw0NDEyNCw0NDE0NCw0NDE0NSw0NDE0OCw0NDE1MSw0NDE1Miw0NDE1NCw0NDE2MCw0NDE2MSw0NDE2Myw0NDE2NCw0NDE2NSw0NDE2Niw0NDE2OSw0NDE3MCw0NDE3MSw0NDE3Miw0NDE3Niw0NDE4MCw0NDE4OCw0NDE4OSw0NDE5MSw0NDE5Miw0NDE5Myw0NDIwMCw0NDIwMSw0NDIwMiw0NDIwNCw0NDIwNyw0NDIwOCw0NDIxNiw0NDIxNyw0NDIxOSw0NDIyMCw0NDIyMSw0NDIyNSw0NDIyOCw0NDIzMiw0NDIzNiw0NDI0NSw0NDI0Nyw0NDI1Niw0NDI1Nyw0NDI2MCw0NDI2Myw0NDI2NCw0NDI2Niw0NDI2OCw0NDI3MSw0NDI3Miw0NDI3Myw0NDI3NSw0NDI3Nyw0NDI3OCw0NDI4NCw0NDI4NSw0NDI4OCw0NDI5Miw0NDI5NCw1Mjk5NCw1Mjk5NSw1Mjk5Nyw1Mjk5OCw1Mjk5OSw1MzAwMSw1MzAwMiw1MzAwMyw1MzAwNCw1MzAwNSw1MzAwNiw1MzAwNyw1MzAxMCw1MzAxMiw1MzAxNCw1MzAxNSw1MzAxNiw1MzAxNyw1MzAxOCw1MzAxOSw1MzAyMSw1MzAyMiw1MzAyMyw1MzAyNSw1MzAyNiw1MzAyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzAyOSw1MzAzMCw1MzAzMSw1MzAzMiw1MzAzMyw1MzAzNCw1MzAzNSw1MzAzOCw1MzA0Miw1MzA0Myw1MzA0NCw1MzA0NSw1MzA0Niw1MzA0Nyw1MzA0OSw1MzA1MCw1MzA1MSw1MzA1Miw1MzA1Myw1MzA1NCw1MzA1NSw1MzA1Niw1MzA1Nyw1MzA1OCw1MzA1OSw1MzA2MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzA2MSw1MzA2Miw1MzA2Myw1MzA2NCw1MzA2NSw1MzA2Niw1MzA2Nyw1MzA2OCw1MzA2OSw1MzA3MCw1MzA3MSw1MzA3Miw1MzA3Myw1MzA3NCw1MzA3NSw1MzA3OCw1MzA3OSw1MzA4MSw1MzA4Miw1MzA4Myw1MzA4NSw1MzA4Niw1MzA4Nyw1MzA4OCw1MzA4OSw1MzA5MCw1MzA5MSw1MzA5NCw1MzA5Niw1MzA5OCw1MzA5OSw1MzEwMCw0NDMwMCw0NDMwMSw0NDMwMyw0NDMwNSw0NDMxMiw0NDMxNiw0NDMyMCw0NDMyOSw0NDMzMiw0NDMzMyw0NDM0MCw0NDM0MSw0NDM0NCw0NDM0OCw0NDM1Niw0NDM1Nyw0NDM1OSw0NDM2MSw0NDM2OCw0NDM3Miw0NDM3Niw0NDM4NSw0NDM4Nyw0NDM5Niw0NDM5Nyw0NDQwMCw0NDQwMyw0NDQwNCw0NDQwNSw0NDQwNiw0NDQxMSw0NDQxMiw0NDQxMyw0NDQxNSw0NDQxNyw0NDQxOCw0NDQyNCw0NDQyNSw0NDQyOCw0NDQzMiw0NDQ0NCw0NDQ0NSw0NDQ1Miw0NDQ3MSw0NDQ4MCw0NDQ4MSw0NDQ4NCw0NDQ4OCw0NDQ5Niw0NDQ5Nyw0NDQ5OSw0NDUwOCw0NDUxMiw0NDUxNiw0NDUzNiw0NDUzNyw0NDU0MCw0NDU0Myw0NDU0NCw0NDU0NSw0NDU1Miw0NDU1Myw0NDU1NSw0NDU1Nyw0NDU2NCw0NDU5Miw0NDU5Myw0NDU5Niw0NDU5OSw0NDYwMCw0NDYwMiw0NDYwOCw0NDYwOSw0NDYxMSw0NDYxMyw0NDYxNCw0NDYxOCw0NDYyMCw0NDYyMSw0NDYyMiw0NDYyNCw0NDYyOCw0NDYzMCw0NDYzNiw0NDYzNyw0NDYzOSw0NDY0MCw0NDY0MSw0NDY0NSw0NDY0OCw0NDY0OSw0NDY1Miw0NDY1Niw0NDY2NCw1MzEwMSw1MzEwMiw1MzEwMyw1MzEwNiw1MzEwNyw1MzEwOSw1MzExMCw1MzExMSw1MzExMyw1MzExNCw1MzExNSw1MzExNiw1MzExNyw1MzExOCw1MzExOSw1MzEyMSw1MzEyMiw1MzEyMyw1MzEyNCw1MzEyNiw1MzEyNyw1MzEyOCw1MzEyOSw1MzEzMCw1MzEzMSw1MzEzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzEzNCw1MzEzNSw1MzEzNiw1MzEzNyw1MzEzOCw1MzEzOSw1MzE0MCw1MzE0MSw1MzE0Miw1MzE0Myw1MzE0NCw1MzE0NSw1MzE0Niw1MzE0Nyw1MzE0OCw1MzE0OSw1MzE1MCw1MzE1MSw1MzE1Miw1MzE1NCw1MzE1NSw1MzE1Niw1MzE1Nyw1MzE1OCw1MzE1OSw1MzE2MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzE2Miw1MzE2Myw1MzE2NCw1MzE2NSw1MzE2Niw1MzE2Nyw1MzE2OSw1MzE3MCw1MzE3MSw1MzE3Miw1MzE3Myw1MzE3NCw1MzE3NSw1MzE3Niw1MzE3Nyw1MzE3OCw1MzE3OSw1MzE4MCw1MzE4MSw1MzE4Miw1MzE4Myw1MzE4NCw1MzE4NSw1MzE4Niw1MzE4Nyw1MzE4OSw1MzE5MCw1MzE5MSw1MzE5Miw1MzE5Myw1MzE5NCw1MzE5NSw0NDY2NSw0NDY2Nyw0NDY2OCw0NDY2OSw0NDY3Niw0NDY3Nyw0NDY4NCw0NDczMiw0NDczMyw0NDczNCw0NDczNiw0NDc0MCw0NDc0OCw0NDc0OSw0NDc1MSw0NDc1Miw0NDc1Myw0NDc2MCw0NDc2MSw0NDc2NCw0NDc3Niw0NDc3OSw0NDc4MSw0NDc4OCw0NDc5Miw0NDc5Niw0NDgwNyw0NDgwOCw0NDgxMyw0NDgxNiw0NDg0NCw0NDg0NSw0NDg0OCw0NDg1MCw0NDg1Miw0NDg2MCw0NDg2MSw0NDg2Myw0NDg2NSw0NDg2Niw0NDg2Nyw0NDg3Miw0NDg3Myw0NDg4MCw0NDg5Miw0NDg5Myw0NDkwMCw0NDkwMSw0NDkyMSw0NDkyOCw0NDkzMiw0NDkzNiw0NDk0NCw0NDk0NSw0NDk0OSw0NDk1Niw0NDk4NCw0NDk4NSw0NDk4OCw0NDk5Miw0NDk5OSw0NTAwMCw0NTAwMSw0NTAwMyw0NTAwNSw0NTAwNiw0NTAxMiw0NTAyMCw0NTAzMiw0NTAzMyw0NTA0MCw0NTA0MSw0NTA0NCw0NTA0OCw0NTA1Niw0NTA1Nyw0NTA2MCw0NTA2OCw0NTA3Miw0NTA3Niw0NTA4NCw0NTA4NSw0NTA5Niw0NTEyNCw0NTEyNSw0NTEyOCw0NTEzMCw0NTEzMiw0NTEzNCw0NTEzOSw0NTE0MCw0NTE0MSw0NTE0Myw0NTE0NSw1MzE5Niw1MzE5Nyw1MzE5OCw1MzE5OSw1MzIwMCw1MzIwMSw1MzIwMiw1MzIwMyw1MzIwNCw1MzIwNSw1MzIwNiw1MzIwNyw1MzIwOCw1MzIwOSw1MzIxMCw1MzIxMSw1MzIxMiw1MzIxMyw1MzIxNCw1MzIxNSw1MzIxOCw1MzIxOSw1MzIyMSw1MzIyMiw1MzIyMyw1MzIyNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzIyNiw1MzIyNyw1MzIyOCw1MzIyOSw1MzIzMCw1MzIzMSw1MzIzNCw1MzIzNiw1MzIzOCw1MzIzOSw1MzI0MCw1MzI0MSw1MzI0Miw1MzI0Myw1MzI0NSw1MzI0Niw1MzI0Nyw1MzI0OSw1MzI1MCw1MzI1MSw1MzI1Myw1MzI1NCw1MzI1NSw1MzI1Niw1MzI1Nyw1MzI1OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzI1OSw1MzI2MCw1MzI2MSw1MzI2Miw1MzI2Myw1MzI2NCw1MzI2Niw1MzI2Nyw1MzI2OCw1MzI2OSw1MzI3MCw1MzI3MSw1MzI3Myw1MzI3NCw1MzI3NSw1MzI3Niw1MzI3Nyw1MzI3OCw1MzI3OSw1MzI4MCw1MzI4MSw1MzI4Miw1MzI4Myw1MzI4NCw1MzI4NSw1MzI4Niw1MzI4Nyw1MzI4OCw1MzI4OSw1MzI5MCw1MzI5MSw1MzI5Miw0NTE0OSw0NTE4MCw0NTE4MSw0NTE4NCw0NTE4OCw0NTE5Niw0NTE5Nyw0NTE5OSw0NTIwMSw0NTIwOCw0NTIwOSw0NTIxMCw0NTIxMiw0NTIxNSw0NTIxNiw0NTIxNyw0NTIxOCw0NTIyNCw0NTIyNSw0NTIyNyw0NTIyOCw0NTIyOSw0NTIzMCw0NTIzMSw0NTIzMyw0NTIzNSw0NTIzNiw0NTIzNyw0NTI0MCw0NTI0NCw0NTI1Miw0NTI1Myw0NTI1NSw0NTI1Niw0NTI1Nyw0NTI2NCw0NTI2NSw0NTI2OCw0NTI3Miw0NTI4MCw0NTI4NSw0NTMyMCw0NTMyMSw0NTMyMyw0NTMyNCw0NTMyOCw0NTMzMCw0NTMzMSw0NTMzNiw0NTMzNyw0NTMzOSw0NTM0MCw0NTM0MSw0NTM0Nyw0NTM0OCw0NTM0OSw0NTM1Miw0NTM1Niw0NTM2NCw0NTM2NSw0NTM2Nyw0NTM2OCw0NTM2OSw0NTM3Niw0NTM3Nyw0NTM4MCw0NTM4NCw0NTM5Miw0NTM5Myw0NTM5Niw0NTM5Nyw0NTQwMCw0NTQwNCw0NTQwOCw0NTQzMiw0NTQzMyw0NTQzNiw0NTQ0MCw0NTQ0Miw0NTQ0OCw0NTQ0OSw0NTQ1MSw0NTQ1Myw0NTQ1OCw0NTQ1OSw0NTQ2MCw0NTQ2NCw0NTQ2OCw0NTQ4MCw0NTUxNiw0NTUyMCw0NTUyNCw0NTUzMiw0NTUzMyw1MzI5NCw1MzI5NSw1MzI5Niw1MzI5Nyw1MzI5OCw1MzI5OSw1MzMwMiw1MzMwMyw1MzMwNSw1MzMwNiw1MzMwNyw1MzMwOSw1MzMxMCw1MzMxMSw1MzMxMiw1MzMxMyw1MzMxNCw1MzMxNSw1MzMxOCw1MzMyMCw1MzMyMiw1MzMyMyw1MzMyNCw1MzMyNSw1MzMyNiw1MzMyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzMyOSw1MzMzMCw1MzMzMSw1MzMzMyw1MzMzNCw1MzMzNSw1MzMzNyw1MzMzOCw1MzMzOSw1MzM0MCw1MzM0MSw1MzM0Miw1MzM0Myw1MzM0NSw1MzM0Niw1MzM0Nyw1MzM0OCw1MzM0OSw1MzM1MCw1MzM1MSw1MzM1Miw1MzM1Myw1MzM1NCw1MzM1NSw1MzM1OCw1MzM1OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzM2MSw1MzM2Miw1MzM2Myw1MzM2NSw1MzM2Niw1MzM2Nyw1MzM2OCw1MzM2OSw1MzM3MCw1MzM3MSw1MzM3NCw1MzM3NSw1MzM3Niw1MzM3OCw1MzM3OSw1MzM4MCw1MzM4MSw1MzM4Miw1MzM4Myw1MzM4NCw1MzM4NSw1MzM4Niw1MzM4Nyw1MzM4OCw1MzM4OSw1MzM5MCw1MzM5MSw1MzM5Miw1MzM5Myw1MzM5NCw1MzM5NSw1MzM5Niw0NTUzNSw0NTU0NCw0NTU0NSw0NTU0OCw0NTU1Miw0NTU2MSw0NTU2Myw0NTU2NSw0NTU3Miw0NTU3Myw0NTU3Niw0NTU3OSw0NTU4MCw0NTU4OCw0NTU4OSw0NTU5MSw0NTU5Myw0NTYwMCw0NTYyMCw0NTYyOCw0NTY1Niw0NTY2MCw0NTY2NCw0NTY3Miw0NTY3Myw0NTY4NCw0NTY4NSw0NTY5Miw0NTcwMCw0NTcwMSw0NTcwNSw0NTcxMiw0NTcxMyw0NTcxNiw0NTcyMCw0NTcyMSw0NTcyMiw0NTcyOCw0NTcyOSw0NTczMSw0NTczMyw0NTczNCw0NTczOCw0NTc0MCw0NTc0NCw0NTc0OCw0NTc2OCw0NTc2OSw0NTc3Miw0NTc3Niw0NTc3OCw0NTc4NCw0NTc4NSw0NTc4Nyw0NTc4OSw0NTc5NCw0NTc5Niw0NTc5Nyw0NTc5OCw0NTgwMCw0NTgwMyw0NTgwNCw0NTgwNSw0NTgwNiw0NTgwNyw0NTgxMSw0NTgxMiw0NTgxMyw0NTgxNSw0NTgxNiw0NTgxNyw0NTgxOCw0NTgxOSw0NTgyMyw0NTgyNCw0NTgyNSw0NTgyOCw0NTgzMiw0NTg0MCw0NTg0MSw0NTg0Myw0NTg0NCw0NTg0NSw0NTg1Miw0NTkwOCw0NTkwOSw0NTkxMCw0NTkxMiw0NTkxNSw0NTkxNiw0NTkxOCw0NTkxOSw0NTkyNCw0NTkyNSw1MzM5Nyw1MzM5OCw1MzM5OSw1MzQwMCw1MzQwMSw1MzQwMiw1MzQwMyw1MzQwNCw1MzQwNSw1MzQwNiw1MzQwNyw1MzQwOCw1MzQwOSw1MzQxMCw1MzQxMSw1MzQxNCw1MzQxNSw1MzQxNyw1MzQxOCw1MzQxOSw1MzQyMSw1MzQyMiw1MzQyMyw1MzQyNCw1MzQyNSw1MzQyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQyNyw1MzQzMCw1MzQzMiw1MzQzNCw1MzQzNSw1MzQzNiw1MzQzNyw1MzQzOCw1MzQzOSw1MzQ0Miw1MzQ0Myw1MzQ0NSw1MzQ0Niw1MzQ0Nyw1MzQ1MCw1MzQ1MSw1MzQ1Miw1MzQ1Myw1MzQ1NCw1MzQ1NSw1MzQ1OCw1MzQ2Miw1MzQ2Myw1MzQ2NCw1MzQ2NSw1MzQ2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzQ2Nyw1MzQ3MCw1MzQ3MSw1MzQ3Myw1MzQ3NCw1MzQ3NSw1MzQ3Nyw1MzQ3OCw1MzQ3OSw1MzQ4MCw1MzQ4MSw1MzQ4Miw1MzQ4Myw1MzQ4Niw1MzQ5MCw1MzQ5MSw1MzQ5Miw1MzQ5Myw1MzQ5NCw1MzQ5NSw1MzQ5Nyw1MzQ5OCw1MzQ5OSw1MzUwMCw1MzUwMSw1MzUwMiw1MzUwMyw1MzUwNCw1MzUwNSw1MzUwNiw1MzUwNyw1MzUwOCw0NTkyNyw0NTkyOSw0NTkzMSw0NTkzNCw0NTkzNiw0NTkzNyw0NTk0MCw0NTk0NCw0NTk1Miw0NTk1Myw0NTk1NSw0NTk1Niw0NTk1Nyw0NTk2NCw0NTk2OCw0NTk3Miw0NTk4NCw0NTk4NSw0NTk5Miw0NTk5Niw0NjAyMCw0NjAyMSw0NjAyNCw0NjAyNyw0NjAyOCw0NjAzMCw0NjAzMiw0NjAzNiw0NjAzNyw0NjAzOSw0NjA0MSw0NjA0Myw0NjA0NSw0NjA0OCw0NjA1Miw0NjA1Niw0NjA3Niw0NjA5Niw0NjEwNCw0NjEwOCw0NjExMiw0NjEyMCw0NjEyMSw0NjEyMyw0NjEzMiw0NjE2MCw0NjE2MSw0NjE2NCw0NjE2OCw0NjE3Niw0NjE3Nyw0NjE3OSw0NjE4MSw0NjE4OCw0NjIwOCw0NjIxNiw0NjIzNyw0NjI0NCw0NjI0OCw0NjI1Miw0NjI2MSw0NjI2Myw0NjI2NSw0NjI3Miw0NjI3Niw0NjI4MCw0NjI4OCw0NjI5Myw0NjMwMCw0NjMwMSw0NjMwNCw0NjMwNyw0NjMwOCw0NjMxMCw0NjMxNiw0NjMxNyw0NjMxOSw0NjMyMSw0NjMyOCw0NjM1Niw0NjM1Nyw0NjM2MCw0NjM2Myw0NjM2NCw0NjM3Miw0NjM3Myw0NjM3NSw0NjM3Niw0NjM3Nyw0NjM3OCw0NjM4NCw0NjM4NSw0NjM4OCw0NjM5Miw1MzUwOSw1MzUxMCw1MzUxMSw1MzUxMiw1MzUxMyw1MzUxNCw1MzUxNSw1MzUxNiw1MzUxOCw1MzUxOSw1MzUyMCw1MzUyMSw1MzUyMiw1MzUyMyw1MzUyNCw1MzUyNSw1MzUyNiw1MzUyNyw1MzUyOCw1MzUyOSw1MzUzMCw1MzUzMSw1MzUzMiw1MzUzMyw1MzUzNCw1MzUzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzUzNiw1MzUzNyw1MzUzOCw1MzUzOSw1MzU0MCw1MzU0MSw1MzU0Miw1MzU0Myw1MzU0NCw1MzU0NSw1MzU0Niw1MzU0Nyw1MzU0OCw1MzU0OSw1MzU1MCw1MzU1MSw1MzU1NCw1MzU1NSw1MzU1Nyw1MzU1OCw1MzU1OSw1MzU2MSw1MzU2Myw1MzU2NCw1MzU2NSw1MzU2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzU2Nyw1MzU3MCw1MzU3NCw1MzU3NSw1MzU3Niw1MzU3Nyw1MzU3OCw1MzU3OSw1MzU4Miw1MzU4Myw1MzU4NSw1MzU4Niw1MzU4Nyw1MzU4OSw1MzU5MCw1MzU5MSw1MzU5Miw1MzU5Myw1MzU5NCw1MzU5NSw1MzU5OCw1MzYwMCw1MzYwMiw1MzYwMyw1MzYwNCw1MzYwNSw1MzYwNiw1MzYwNyw1MzYwOSw1MzYxMCw1MzYxMSw1MzYxMyw0NjQwMCw0NjQwMSw0NjQwMyw0NjQwNCw0NjQwNSw0NjQxMSw0NjQxMiw0NjQxMyw0NjQxNiw0NjQyMCw0NjQyOCw0NjQyOSw0NjQzMSw0NjQzMiw0NjQzMyw0NjQ5Niw0NjQ5Nyw0NjUwMCw0NjUwNCw0NjUwNiw0NjUwNyw0NjUxMiw0NjUxMyw0NjUxNSw0NjUxNiw0NjUxNyw0NjUyMyw0NjUyNCw0NjUyNSw0NjUyOCw0NjUzMiw0NjU0MCw0NjU0MSw0NjU0Myw0NjU0NCw0NjU0NSw0NjU1Miw0NjU3Miw0NjYwOCw0NjYwOSw0NjYxMiw0NjYxNiw0NjYyOSw0NjYzNiw0NjY0NCw0NjY2NCw0NjY5Miw0NjY5Niw0Njc0OCw0Njc0OSw0Njc1Miw0Njc1Niw0Njc2Myw0Njc2NCw0Njc2OSw0NjgwNCw0NjgzMiw0NjgzNiw0Njg0MCw0Njg0OCw0Njg0OSw0Njg1Myw0Njg4OCw0Njg4OSw0Njg5Miw0Njg5NSw0Njg5Niw0NjkwNCw0NjkwNSw0NjkwNyw0NjkxNiw0NjkyMCw0NjkyNCw0NjkzMiw0NjkzMyw0Njk0NCw0Njk0OCw0Njk1Miw0Njk2MCw0Njk2MSw0Njk2Myw0Njk2NSw0Njk3Miw0Njk3Myw0Njk3Niw0Njk4MCw0Njk4OCw0Njk4OSw0Njk5MSw0Njk5Miw0Njk5Myw0Njk5NCw0Njk5OCw0Njk5OSw1MzYxNCw1MzYxNSw1MzYxNiw1MzYxNyw1MzYxOCw1MzYxOSw1MzYyMCw1MzYyMSw1MzYyMiw1MzYyMyw1MzYyNCw1MzYyNSw1MzYyNiw1MzYyNyw1MzYyOSw1MzYzMCw1MzYzMSw1MzYzMiw1MzYzMyw1MzYzNCw1MzYzNSw1MzYzNyw1MzYzOCw1MzYzOSw1MzY0MSw1MzY0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY0Myw1MzY0NCw1MzY0NSw1MzY0Niw1MzY0Nyw1MzY0OCw1MzY0OSw1MzY1MCw1MzY1MSw1MzY1Miw1MzY1Myw1MzY1NCw1MzY1NSw1MzY1Niw1MzY1Nyw1MzY1OCw1MzY1OSw1MzY2MCw1MzY2MSw1MzY2Miw1MzY2Myw1MzY2Niw1MzY2Nyw1MzY2OSw1MzY3MCw1MzY3MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzY3Myw1MzY3NCw1MzY3NSw1MzY3Niw1MzY3Nyw1MzY3OCw1MzY3OSw1MzY4Miw1MzY4NCw1MzY4Niw1MzY4Nyw1MzY4OCw1MzY4OSw1MzY5MSw1MzY5Myw1MzY5NCw1MzY5NSw1MzY5Nyw1MzY5OCw1MzY5OSw1MzcwMCw1MzcwMSw1MzcwMiw1MzcwMyw1MzcwNCw1MzcwNSw1MzcwNiw1MzcwNyw1MzcwOCw1MzcwOSw1MzcxMCw1MzcxMSw0NzAwMCw0NzAwMSw0NzAwNCw0NzAwOCw0NzAxNiw0NzAxNyw0NzAxOSw0NzAyMCw0NzAyMSw0NzAyOCw0NzAyOSw0NzAzMiw0NzA0Nyw0NzA0OSw0NzA4NCw0NzA4NSw0NzA4OCw0NzA5Miw0NzEwMCw0NzEwMSw0NzEwMyw0NzEwNCw0NzEwNSw0NzExMSw0NzExMiw0NzExMyw0NzExNiw0NzEyMCw0NzEyOCw0NzEyOSw0NzEzMSw0NzEzMyw0NzE0MCw0NzE0MSw0NzE0NCw0NzE0OCw0NzE1Niw0NzE1Nyw0NzE1OSw0NzE2MCw0NzE2MSw0NzE2OCw0NzE3Miw0NzE4NSw0NzE4Nyw0NzE5Niw0NzE5Nyw0NzIwMCw0NzIwNCw0NzIxMiw0NzIxMyw0NzIxNSw0NzIxNyw0NzIyNCw0NzIyOCw0NzI0NSw0NzI3Miw0NzI4MCw0NzI4NCw0NzI4OCw0NzI5Niw0NzI5Nyw0NzI5OSw0NzMwMSw0NzMwOCw0NzMxMiw0NzMxNiw0NzMyNSw0NzMyNyw0NzMyOSw0NzMzNiw0NzMzNyw0NzM0MCw0NzM0NCw0NzM1Miw0NzM1Myw0NzM1NSw0NzM1Nyw0NzM2NCw0NzM4NCw0NzM5Miw0NzQyMCw0NzQyMSw0NzQyNCw0NzQyOCw0NzQzNiw0NzQzOSw0NzQ0MSw0NzQ0OCw0NzQ0OSw0NzQ1Miw0NzQ1Niw0NzQ2NCw0NzQ2NSw1MzcxMiw1MzcxMyw1MzcxNCw1MzcxNSw1MzcxNiw1MzcxNyw1MzcxOCw1MzcxOSw1MzcyMSw1MzcyMiw1MzcyMyw1MzcyNCw1MzcyNSw1MzcyNiw1MzcyNyw1MzcyOCw1MzcyOSw1MzczMCw1MzczMSw1MzczMiw1MzczMyw1MzczNCw1MzczNSw1MzczNiw1MzczNyw1MzczOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzczOSw1Mzc0MCw1Mzc0MSw1Mzc0Miw1Mzc0Myw1Mzc0NCw1Mzc0NSw1Mzc0Niw1Mzc0Nyw1Mzc0OSw1Mzc1MCw1Mzc1MSw1Mzc1Myw1Mzc1NCw1Mzc1NSw1Mzc1Niw1Mzc1Nyw1Mzc1OCw1Mzc1OSw1Mzc2MCw1Mzc2MSw1Mzc2Miw1Mzc2Myw1Mzc2NCw1Mzc2NSw1Mzc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzc2OCw1Mzc3MCw1Mzc3MSw1Mzc3Miw1Mzc3Myw1Mzc3NCw1Mzc3NSw1Mzc3Nyw1Mzc3OCw1Mzc3OSw1Mzc4MCw1Mzc4MSw1Mzc4Miw1Mzc4Myw1Mzc4NCw1Mzc4NSw1Mzc4Niw1Mzc4Nyw1Mzc4OCw1Mzc4OSw1Mzc5MCw1Mzc5MSw1Mzc5Miw1Mzc5Myw1Mzc5NCw1Mzc5NSw1Mzc5Niw1Mzc5Nyw1Mzc5OCw1Mzc5OSw1MzgwMCw1MzgwMSw0NzQ2Nyw0NzQ2OSw0NzQ3Niw0NzQ3Nyw0NzQ4MCw0NzQ4NCw0NzQ5Miw0NzQ5Myw0NzQ5NSw0NzQ5Nyw0NzQ5OCw0NzUwMSw0NzUwMiw0NzUzMiw0NzUzMyw0NzUzNiw0NzU0MCw0NzU0OCw0NzU0OSw0NzU1MSw0NzU1Myw0NzU2MCw0NzU2MSw0NzU2NCw0NzU2Niw0NzU2Nyw0NzU2OCw0NzU2OSw0NzU3MCw0NzU3Niw0NzU3Nyw0NzU3OSw0NzU4MSw0NzU4Miw0NzU4NSw0NzU4Nyw0NzU4OCw0NzU4OSw0NzU5Miw0NzU5Niw0NzYwNCw0NzYwNSw0NzYwNyw0NzYwOCw0NzYwOSw0NzYxMCw0NzYxNiw0NzYxNyw0NzYyNCw0NzYzNyw0NzY3Miw0NzY3Myw0NzY3Niw0NzY4MCw0NzY4Miw0NzY4OCw0NzY4OSw0NzY5MSw0NzY5Myw0NzY5NCw0NzY5OSw0NzcwMCw0NzcwMSw0NzcwNCw0NzcwOCw0NzcxNiw0NzcxNyw0NzcxOSw0NzcyMCw0NzcyMSw0NzcyOCw0NzcyOSw0NzczMiw0NzczNiw0Nzc0Nyw0Nzc0OCw0Nzc0OSw0Nzc1MSw0Nzc1Niw0Nzc4NCw0Nzc4NSw0Nzc4Nyw0Nzc4OCw0Nzc5Miw0Nzc5NCw0NzgwMCw0NzgwMSw0NzgwMyw0NzgwNSw0NzgxMiw0NzgxNiw0NzgzMiw0NzgzMyw0Nzg2OCw1MzgwMiw1MzgwMyw1MzgwNiw1MzgwNyw1MzgwOSw1MzgxMCw1MzgxMSw1MzgxMyw1MzgxNCw1MzgxNSw1MzgxNiw1MzgxNyw1MzgxOCw1MzgxOSw1MzgyMiw1MzgyNCw1MzgyNiw1MzgyNyw1MzgyOCw1MzgyOSw1MzgzMCw1MzgzMSw1MzgzMyw1MzgzNCw1MzgzNSw1MzgzNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzgzNyw1MzgzOCw1MzgzOSw1Mzg0MCw1Mzg0MSw1Mzg0Miw1Mzg0Myw1Mzg0NCw1Mzg0NSw1Mzg0Niw1Mzg0Nyw1Mzg0OCw1Mzg0OSw1Mzg1MCw1Mzg1MSw1Mzg1Myw1Mzg1NCw1Mzg1NSw1Mzg1Niw1Mzg1Nyw1Mzg1OCw1Mzg1OSw1Mzg2MSw1Mzg2Miw1Mzg2Myw1Mzg2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzg2NSw1Mzg2Niw1Mzg2Nyw1Mzg2OCw1Mzg2OSw1Mzg3MCw1Mzg3MSw1Mzg3Miw1Mzg3Myw1Mzg3NCw1Mzg3NSw1Mzg3Niw1Mzg3Nyw1Mzg3OCw1Mzg3OSw1Mzg4MCw1Mzg4MSw1Mzg4Miw1Mzg4Myw1Mzg4NCw1Mzg4NSw1Mzg4Niw1Mzg4Nyw1Mzg5MCw1Mzg5MSw1Mzg5Myw1Mzg5NCw1Mzg5NSw1Mzg5Nyw1Mzg5OCw1Mzg5OSw1MzkwMCw0Nzg3Miw0Nzg3Niw0Nzg4NSw0Nzg4Nyw0Nzg4OSw0Nzg5Niw0NzkwMCw0NzkwNCw0NzkxMyw0NzkxNSw0NzkyNCw0NzkyNSw0NzkyNiw0NzkyOCw0NzkzMSw0NzkzMiw0NzkzMyw0NzkzNCw0Nzk0MCw0Nzk0MSw0Nzk0Myw0Nzk0NSw0Nzk0OSw0Nzk1MSw0Nzk1Miw0Nzk1Niw0Nzk2MCw0Nzk2OSw0Nzk3MSw0Nzk4MCw0ODAwOCw0ODAxMiw0ODAxNiw0ODAzNiw0ODA0MCw0ODA0NCw0ODA1Miw0ODA1NSw0ODA2NCw0ODA2OCw0ODA3Miw0ODA4MCw0ODA4Myw0ODEyMCw0ODEyMSw0ODEyNCw0ODEyNyw0ODEyOCw0ODEzMCw0ODEzNiw0ODEzNyw0ODEzOSw0ODE0MCw0ODE0MSw0ODE0Myw0ODE0NSw0ODE0OCw0ODE0OSw0ODE1MCw0ODE1MSw0ODE1Miw0ODE1NSw0ODE1Niw0ODE1Nyw0ODE1OCw0ODE1OSw0ODE2NCw0ODE2NSw0ODE2Nyw0ODE2OSw0ODE3Myw0ODE3Niw0ODE3Nyw0ODE4MCw0ODE4NCw0ODE5Miw0ODE5Myw0ODE5NSw0ODE5Niw0ODE5Nyw0ODIwMSw0ODIwNCw0ODIwNSw0ODIwOCw0ODIyMSw0ODI2MCw0ODI2MSw0ODI2NCw0ODI2Nyw0ODI2OCw0ODI3MCw0ODI3Niw0ODI3Nyw0ODI3OSw1MzkwMSw1MzkwMiw1MzkwMyw1MzkwNiw1MzkwNyw1MzkwOCw1MzkxMCw1MzkxMSw1MzkxMiw1MzkxMyw1MzkxNCw1MzkxNSw1MzkxNyw1MzkxOCw1MzkxOSw1MzkyMSw1MzkyMiw1MzkyMyw1MzkyNSw1MzkyNiw1MzkyNyw1MzkyOCw1MzkyOSw1MzkzMCw1MzkzMSw1MzkzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MzkzNCw1MzkzNSw1MzkzNiw1MzkzOCw1MzkzOSw1Mzk0MCw1Mzk0MSw1Mzk0Miw1Mzk0Myw1Mzk0Niw1Mzk0Nyw1Mzk0OSw1Mzk1MCw1Mzk1Myw1Mzk1NSw1Mzk1Niw1Mzk1Nyw1Mzk1OCw1Mzk1OSw1Mzk2Miw1Mzk2NCw1Mzk2NSw1Mzk2Niw1Mzk2Nyw1Mzk2OCw1Mzk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzk3MCw1Mzk3MSw1Mzk3Myw1Mzk3NCw1Mzk3NSw1Mzk3Nyw1Mzk3OCw1Mzk3OSw1Mzk4MSw1Mzk4Miw1Mzk4Myw1Mzk4NCw1Mzk4NSw1Mzk4Niw1Mzk4Nyw1Mzk5MCw1Mzk5MSw1Mzk5Miw1Mzk5Myw1Mzk5NCw1Mzk5NSw1Mzk5Niw1Mzk5Nyw1Mzk5OCw1Mzk5OSw1NDAwMiw1NDAwMyw1NDAwNSw1NDAwNiw1NDAwNyw1NDAwOSw1NDAxMCw0ODI4MSw0ODI4Miw0ODI4OCw0ODI4OSw0ODI5Miw0ODI5NSw0ODI5Niw0ODMwNCw0ODMwNSw0ODMwNyw0ODMwOCw0ODMwOSw0ODMxNiw0ODMxNyw0ODMyMCw0ODMyNCw0ODMzMyw0ODMzNSw0ODMzNiw0ODMzNyw0ODM0MSw0ODM0NCw0ODM0OCw0ODM3Miw0ODM3Myw0ODM3NCw0ODM3Niw0ODM4MCw0ODM4OCw0ODM4OSw0ODM5MSw0ODM5Myw0ODQwMCw0ODQwNCw0ODQyMCw0ODQyOCw0ODQ0OCw0ODQ1Niw0ODQ1Nyw0ODQ2MCw0ODQ2NCw0ODQ3Miw0ODQ3Myw0ODQ4NCw0ODQ4OCw0ODUxMiw0ODUxMyw0ODUxNiw0ODUxOSw0ODUyMCw0ODUyMSw0ODUyMiw0ODUyOCw0ODUyOSw0ODUzMSw0ODUzMyw0ODUzNyw0ODUzOCw0ODU0MCw0ODU0OCw0ODU2MCw0ODU2OCw0ODU5Niw0ODU5Nyw0ODYwMCw0ODYwNCw0ODYxNyw0ODYyNCw0ODYyOCw0ODYzMiw0ODY0MCw0ODY0Myw0ODY0NSw0ODY1Miw0ODY1Myw0ODY1Niw0ODY2MCw0ODY2OCw0ODY2OSw0ODY3MSw0ODcwOCw0ODcwOSw0ODcxMiw0ODcxNiw0ODcxOCw0ODcyNCw0ODcyNSw0ODcyNyw0ODcyOSw0ODczMCw0ODczMSw0ODczNiw0ODczNyw0ODc0MCw1NDAxMSw1NDAxMiw1NDAxMyw1NDAxNCw1NDAxNSw1NDAxOCw1NDAyMCw1NDAyMiw1NDAyMyw1NDAyNCw1NDAyNSw1NDAyNiw1NDAyNyw1NDAzMSw1NDAzMyw1NDAzNCw1NDAzNSw1NDAzNyw1NDAzOSw1NDA0MCw1NDA0MSw1NDA0Miw1NDA0Myw1NDA0Niw1NDA1MCw1NDA1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDA1Miw1NDA1NCw1NDA1NSw1NDA1OCw1NDA1OSw1NDA2MSw1NDA2Miw1NDA2Myw1NDA2NSw1NDA2Niw1NDA2Nyw1NDA2OCw1NDA2OSw1NDA3MCw1NDA3MSw1NDA3NCw1NDA3OCw1NDA3OSw1NDA4MCw1NDA4MSw1NDA4Miw1NDA4Myw1NDA4Niw1NDA4Nyw1NDA4OCw1NDA4OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDA5MCw1NDA5MSw1NDA5Miw1NDA5Myw1NDA5NCw1NDA5NSw1NDA5Niw1NDA5Nyw1NDA5OCw1NDA5OSw1NDEwMCw1NDEwMSw1NDEwMiw1NDEwMyw1NDEwNCw1NDEwNSw1NDEwNiw1NDEwNyw1NDEwOCw1NDEwOSw1NDExMCw1NDExMSw1NDExMiw1NDExMyw1NDExNCw1NDExNSw1NDExNiw1NDExNyw1NDExOCw1NDExOSw1NDEyMCw1NDEyMSw0ODc0NCw0ODc0Niw0ODc1Miw0ODc1Myw0ODc1NSw0ODc1Niw0ODc1Nyw0ODc2Myw0ODc2NCw0ODc2NSw0ODc2OCw0ODc3Miw0ODc4MCw0ODc4MSw0ODc4Myw0ODc4NCw0ODc4NSw0ODc5Miw0ODc5Myw0ODgwOCw0ODg0OCw0ODg0OSw0ODg1Miw0ODg1NSw0ODg1Niw0ODg2NCw0ODg2Nyw0ODg2OCw0ODg2OSw0ODg3Niw0ODg5Nyw0ODkwNCw0ODkwNSw0ODkyMCw0ODkyMSw0ODkyMyw0ODkyNCw0ODkyNSw0ODk2MCw0ODk2MSw0ODk2NCw0ODk2OCw0ODk3Niw0ODk3Nyw0ODk4MSw0OTA0NCw0OTA3Miw0OTA5Myw0OTEwMCw0OTEwMSw0OTEwNCw0OTEwOCw0OTExNiw0OTExOSw0OTEyMSw0OTIxMiw0OTIzMyw0OTI0MCw0OTI0NCw0OTI0OCw0OTI1Niw0OTI1Nyw0OTI5Niw0OTI5Nyw0OTMwMCw0OTMwNCw0OTMxMiw0OTMxMyw0OTMxNSw0OTMxNyw0OTMyNCw0OTMyNSw0OTMyNyw0OTMyOCw0OTMzMSw0OTMzMiw0OTMzMyw0OTMzNCw0OTM0MCw0OTM0MSw0OTM0Myw0OTM0NCw0OTM0NSw0OTM0OSw0OTM1Miw0OTM1Myw0OTM1Niw0OTM2MCw0OTM2OCw0OTM2OSw0OTM3MSw0OTM3Miw0OTM3Myw0OTM4MCw1NDEyMiw1NDEyMyw1NDEyNCw1NDEyNSw1NDEyNiw1NDEyNyw1NDEyOCw1NDEyOSw1NDEzMCw1NDEzMSw1NDEzMiw1NDEzMyw1NDEzNCw1NDEzNSw1NDEzNiw1NDEzNyw1NDEzOCw1NDEzOSw1NDE0Miw1NDE0Myw1NDE0NSw1NDE0Niw1NDE0Nyw1NDE0OSw1NDE1MCw1NDE1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDE1Miw1NDE1Myw1NDE1NCw1NDE1NSw1NDE1OCw1NDE2Miw1NDE2Myw1NDE2NCw1NDE2NSw1NDE2Niw1NDE2Nyw1NDE3MCw1NDE3MSw1NDE3Myw1NDE3NCw1NDE3NSw1NDE3Nyw1NDE3OCw1NDE3OSw1NDE4MCw1NDE4MSw1NDE4Miw1NDE4Myw1NDE4Niw1NDE4OCw1NDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDE5MSw1NDE5Miw1NDE5Myw1NDE5NCw1NDE5NSw1NDE5Nyw1NDE5OCw1NDE5OSw1NDIwMSw1NDIwMiw1NDIwMyw1NDIwNSw1NDIwNiw1NDIwNyw1NDIwOCw1NDIwOSw1NDIxMCw1NDIxMSw1NDIxNCw1NDIxNSw1NDIxOCw1NDIxOSw1NDIyMCw1NDIyMSw1NDIyMiw1NDIyMyw1NDIyNSw1NDIyNiw1NDIyNyw1NDIyOCw1NDIyOSw1NDIzMCw0OTM4MSw0OTM4NCw0OTM4OCw0OTM5Niw0OTM5Nyw0OTM5OSw0OTQwMSw0OTQwOCw0OTQxMiw0OTQxNiw0OTQyNCw0OTQyOSw0OTQzNiw0OTQzNyw0OTQzOCw0OTQzOSw0OTQ0MCw0OTQ0Myw0OTQ0NCw0OTQ0Niw0OTQ0Nyw0OTQ1Miw0OTQ1Myw0OTQ1NSw0OTQ1Niw0OTQ1Nyw0OTQ2Miw0OTQ2NCw0OTQ2NSw0OTQ2OCw0OTQ3Miw0OTQ4MCw0OTQ4MSw0OTQ4Myw0OTQ4NCw0OTQ4NSw0OTQ5Miw0OTQ5Myw0OTQ5Niw0OTUwMCw0OTUwOCw0OTUwOSw0OTUxMSw0OTUxMiw0OTUxMyw0OTUyMCw0OTUyNCw0OTUyOCw0OTU0MSw0OTU0OCw0OTU0OSw0OTU1MCw0OTU1Miw0OTU1Niw0OTU1OCw0OTU2NCw0OTU2NSw0OTU2Nyw0OTU2OSw0OTU3Myw0OTU3Niw0OTU3Nyw0OTU4MCw0OTU4NCw0OTU5Nyw0OTYwNCw0OTYwOCw0OTYxMiw0OTYyMCw0OTYyMyw0OTYyNCw0OTYzMiw0OTYzNiw0OTY0MCw0OTY0OCw0OTY0OSw0OTY1MSw0OTY2MCw0OTY2MSw0OTY2NCw0OTY2OCw0OTY3Niw0OTY3Nyw0OTY3OSw0OTY4MSw0OTY4OCw0OTY4OSw0OTY5Miw0OTY5NSw0OTY5Niw0OTcwNCw0OTcwNSw0OTcwNyw0OTcwOSw1NDIzMSw1NDIzMyw1NDIzNCw1NDIzNSw1NDIzNiw1NDIzNyw1NDIzOCw1NDIzOSw1NDI0MCw1NDI0Miw1NDI0NCw1NDI0NSw1NDI0Niw1NDI0Nyw1NDI0OCw1NDI0OSw1NDI1MCw1NDI1MSw1NDI1NCw1NDI1NSw1NDI1Nyw1NDI1OCw1NDI1OSw1NDI2MSw1NDI2Miw1NDI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI2NCw1NDI2NSw1NDI2Niw1NDI2Nyw1NDI3MCw1NDI3Miw1NDI3NCw1NDI3NSw1NDI3Niw1NDI3Nyw1NDI3OCw1NDI3OSw1NDI4MSw1NDI4Miw1NDI4Myw1NDI4NCw1NDI4NSw1NDI4Niw1NDI4Nyw1NDI4OCw1NDI4OSw1NDI5MCw1NDI5MSw1NDI5Miw1NDI5Myw1NDI5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI5NSw1NDI5Niw1NDI5Nyw1NDI5OCw1NDI5OSw1NDMwMCw1NDMwMiw1NDMwMyw1NDMwNCw1NDMwNSw1NDMwNiw1NDMwNyw1NDMwOCw1NDMwOSw1NDMxMCw1NDMxMSw1NDMxMiw1NDMxMyw1NDMxNCw1NDMxNSw1NDMxNiw1NDMxNyw1NDMxOCw1NDMxOSw1NDMyMCw1NDMyMSw1NDMyMiw1NDMyMyw1NDMyNCw1NDMyNSw1NDMyNiw1NDMyNyw0OTcxMSw0OTcxMyw0OTcxNCw0OTcxNiw0OTczNiw0OTc0NCw0OTc0NSw0OTc0OCw0OTc1Miw0OTc2MCw0OTc2NSw0OTc3Miw0OTc3Myw0OTc3Niw0OTc4MCw0OTc4OCw0OTc4OSw0OTc5MSw0OTc5Myw0OTgwMCw0OTgwMSw0OTgwOCw0OTgxNiw0OTgxOSw0OTgyMSw0OTgyOCw0OTgyOSw0OTgzMiw0OTgzNiw0OTgzNyw0OTg0NCw0OTg0NSw0OTg0Nyw0OTg0OSw0OTg4NCw0OTg4NSw0OTg4OCw0OTg5MSw0OTg5Miw0OTg5OSw0OTkwMCw0OTkwMSw0OTkwMyw0OTkwNSw0OTkxMCw0OTkxMiw0OTkxMyw0OTkxNSw0OTkxNiw0OTkyMCw0OTkyOCw0OTkyOSw0OTkzMiw0OTkzMyw0OTkzOSw0OTk0MCw0OTk0MSw0OTk0NCw0OTk0OCw0OTk1Niw0OTk1Nyw0OTk2MCw0OTk2MSw0OTk4OSw1MDAyNCw1MDAyNSw1MDAyOCw1MDAzMiw1MDAzNCw1MDA0MCw1MDA0MSw1MDA0NCw1MDA0NSw1MDA1Miw1MDA1Niw1MDA2MCw1MDExMiw1MDEzNiw1MDEzNyw1MDE0MCw1MDE0Myw1MDE0NCw1MDE0Niw1MDE1Miw1MDE1Myw1MDE1Nyw1MDE2NCw1MDE2NSw1MDE2OCw1MDE4NCw1MDE5Miw1MDIxMiw1MDIyMCw1MDIyNCw1NDMyOCw1NDMyOSw1NDMzMCw1NDMzMSw1NDMzMiw1NDMzMyw1NDMzNCw1NDMzNSw1NDMzNyw1NDMzOCw1NDMzOSw1NDM0MSw1NDM0Miw1NDM0Myw1NDM0NCw1NDM0NSw1NDM0Niw1NDM0Nyw1NDM0OCw1NDM0OSw1NDM1MCw1NDM1MSw1NDM1Miw1NDM1Myw1NDM1NCw1NDM1NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDM1Niw1NDM1Nyw1NDM1OCw1NDM1OSw1NDM2MCw1NDM2MSw1NDM2Miw1NDM2Myw1NDM2NSw1NDM2Niw1NDM2Nyw1NDM2OSw1NDM3MCw1NDM3MSw1NDM3Myw1NDM3NCw1NDM3NSw1NDM3Niw1NDM3Nyw1NDM3OCw1NDM3OSw1NDM4MCw1NDM4Miw1NDM4NCw1NDM4NSw1NDM4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDM4Nyw1NDM4OCw1NDM4OSw1NDM5MCw1NDM5MSw1NDM5NCw1NDM5NSw1NDM5Nyw1NDM5OCw1NDQwMSw1NDQwMyw1NDQwNCw1NDQwNSw1NDQwNiw1NDQwNyw1NDQxMCw1NDQxMiw1NDQxNCw1NDQxNSw1NDQxNiw1NDQxNyw1NDQxOCw1NDQxOSw1NDQyMSw1NDQyMiw1NDQyMyw1NDQyNCw1NDQyNSw1NDQyNiw1NDQyNyw1NDQyOCw1NDQyOSw1MDIyOCw1MDIzNiw1MDIzNyw1MDI0OCw1MDI3Niw1MDI3Nyw1MDI4MCw1MDI4NCw1MDI5Miw1MDI5Myw1MDI5Nyw1MDMwNCw1MDMyNCw1MDMzMiw1MDM2MCw1MDM2NCw1MDQwOSw1MDQxNiw1MDQxNyw1MDQyMCw1MDQyNCw1MDQyNiw1MDQzMSw1MDQzMiw1MDQzMyw1MDQ0NCw1MDQ0OCw1MDQ1Miw1MDQ2MCw1MDQ3Miw1MDQ3Myw1MDQ3Niw1MDQ4MCw1MDQ4OCw1MDQ4OSw1MDQ5MSw1MDQ5Myw1MDUwMCw1MDUwMSw1MDUwNCw1MDUwNSw1MDUwNiw1MDUwOCw1MDUwOSw1MDUxMCw1MDUxNSw1MDUxNiw1MDUxNyw1MDUxOSw1MDUyMCw1MDUyMSw1MDUyNSw1MDUyNiw1MDUyOCw1MDUyOSw1MDUzMiw1MDUzNiw1MDU0NCw1MDU0NSw1MDU0Nyw1MDU0OCw1MDU0OSw1MDU1Niw1MDU1Nyw1MDU2MCw1MDU2NCw1MDU2Nyw1MDU3Miw1MDU3Myw1MDU3NSw1MDU3Nyw1MDU4MSw1MDU4Myw1MDU4NCw1MDU4OCw1MDU5Miw1MDYwMSw1MDYxMiw1MDYxMyw1MDYxNiw1MDYxNyw1MDYxOSw1MDYyMCw1MDYyMSw1MDYyMiw1MDYyOCw1MDYyOSw1MDYzMCw1MDYzMSw1MDYzMiw1MDYzMyw1MDYzNCw1MDYzNiw1MDYzOCw1NDQzMCw1NDQzMSw1NDQzMiw1NDQzMyw1NDQzNCw1NDQzNSw1NDQzNiw1NDQzNyw1NDQzOCw1NDQzOSw1NDQ0MCw1NDQ0Miw1NDQ0Myw1NDQ0NCw1NDQ0NSw1NDQ0Niw1NDQ0Nyw1NDQ0OCw1NDQ0OSw1NDQ1MCw1NDQ1MSw1NDQ1Miw1NDQ1Myw1NDQ1NCw1NDQ1NSw1NDQ1NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDQ1Nyw1NDQ1OCw1NDQ1OSw1NDQ2MCw1NDQ2MSw1NDQ2Miw1NDQ2Myw1NDQ2NCw1NDQ2NSw1NDQ2Niw1NDQ2Nyw1NDQ2OCw1NDQ2OSw1NDQ3MCw1NDQ3MSw1NDQ3Miw1NDQ3Myw1NDQ3NCw1NDQ3NSw1NDQ3Nyw1NDQ3OCw1NDQ3OSw1NDQ4MSw1NDQ4Miw1NDQ4Myw1NDQ4NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDQ4Niw1NDQ4Nyw1NDQ4OCw1NDQ4OSw1NDQ5MCw1NDQ5MSw1NDQ5Myw1NDQ5NCw1NDQ5Niw1NDQ5Nyw1NDQ5OCw1NDQ5OSw1NDUwMCw1NDUwMSw1NDUwMiw1NDUwMyw1NDUwNSw1NDUwNiw1NDUwNyw1NDUwOSw1NDUxMCw1NDUxMSw1NDUxMyw1NDUxNCw1NDUxNSw1NDUxNiw1NDUxNyw1NDUxOCw1NDUxOSw1NDUyMSw1NDUyMiw1NDUyNCw1MDY0MCw1MDY0MSw1MDY0NCw1MDY0OCw1MDY1Niw1MDY1Nyw1MDY1OSw1MDY2MSw1MDY2OCw1MDY2OSw1MDY3MCw1MDY3Miw1MDY3Niw1MDY3OCw1MDY3OSw1MDY4NCw1MDY4NSw1MDY4Niw1MDY4Nyw1MDY4OCw1MDY4OSw1MDY5Myw1MDY5NCw1MDY5NSw1MDY5Niw1MDcwMCw1MDcwNCw1MDcxMiw1MDcxMyw1MDcxNSw1MDcxNiw1MDcyNCw1MDcyNSw1MDcyOCw1MDczMiw1MDczMyw1MDczNCw1MDczNiw1MDczOSw1MDc0MCw1MDc0MSw1MDc0Myw1MDc0NSw1MDc0Nyw1MDc1Miw1MDc1Myw1MDc1Niw1MDc2MCw1MDc2OCw1MDc2OSw1MDc3MSw1MDc3Miw1MDc3Myw1MDc4MCw1MDc4MSw1MDc4NCw1MDc5Niw1MDc5OSw1MDgwMSw1MDgwOCw1MDgwOSw1MDgxMiw1MDgxNiw1MDgyNCw1MDgyNSw1MDgyNyw1MDgyOSw1MDgzNiw1MDgzNyw1MDg0MCw1MDg0NCw1MDg1Miw1MDg1Myw1MDg1NSw1MDg1Nyw1MDg2NCw1MDg2NSw1MDg2OCw1MDg3Miw1MDg3Myw1MDg3NCw1MDg4MCw1MDg4MSw1MDg4Myw1MDg4NSw1MDg5Miw1MDg5Myw1MDg5Niw1MDkwMCw1MDkwOCw1MDkwOSw1MDkxMiw1MDkxMyw1MDkyMCw1NDUyNiw1NDUyNyw1NDUyOCw1NDUyOSw1NDUzMCw1NDUzMSw1NDUzMyw1NDUzNCw1NDUzNSw1NDUzNyw1NDUzOCw1NDUzOSw1NDU0MSw1NDU0Miw1NDU0Myw1NDU0NCw1NDU0NSw1NDU0Niw1NDU0Nyw1NDU1MCw1NDU1Miw1NDU1Myw1NDU1NCw1NDU1NSw1NDU1Niw1NDU1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDU1OCw1NDU1OSw1NDU2MCw1NDU2MSw1NDU2Miw1NDU2Myw1NDU2NCw1NDU2NSw1NDU2Niw1NDU2Nyw1NDU2OCw1NDU2OSw1NDU3MCw1NDU3MSw1NDU3Miw1NDU3Myw1NDU3NCw1NDU3NSw1NDU3Niw1NDU3Nyw1NDU3OCw1NDU3OSw1NDU4MCw1NDU4MSw1NDU4Miw1NDU4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDU4NCw1NDU4NSw1NDU4Niw1NDU4Nyw1NDU5MCw1NDU5MSw1NDU5Myw1NDU5NCw1NDU5NSw1NDU5Nyw1NDU5OCw1NDU5OSw1NDYwMCw1NDYwMSw1NDYwMiw1NDYwMyw1NDYwNiw1NDYwOCw1NDYxMCw1NDYxMSw1NDYxMiw1NDYxMyw1NDYxNCw1NDYxNSw1NDYxOCw1NDYxOSw1NDYyMSw1NDYyMiw1NDYyMyw1NDYyNSw1NDYyNiw1NDYyNyw1MDkyMSw1MDkyNCw1MDkyOCw1MDkzNiw1MDkzNyw1MDk0MSw1MDk0OCw1MDk0OSw1MDk1Miw1MDk1Niw1MDk2NCw1MDk2NSw1MDk2Nyw1MDk2OSw1MDk3Niw1MDk3Nyw1MDk4MCw1MDk4NCw1MDk5Miw1MDk5Myw1MDk5NSw1MDk5Nyw1MDk5OSw1MTAwNCw1MTAwNSw1MTAwOCw1MTAxMiw1MTAxOCw1MTAyMCw1MTAyMSw1MTAyMyw1MTAyNSw1MTAyNiw1MTAyNyw1MTAyOCw1MTAyOSw1MTAzMCw1MTAzMSw1MTAzMiw1MTAzNiw1MTA0MCw1MTA0OCw1MTA1MSw1MTA2MCw1MTA2MSw1MTA2NCw1MTA2OCw1MTA2OSw1MTA3MCw1MTA3NSw1MTA3Niw1MTA3Nyw1MTA3OSw1MTA4MCw1MTA4MSw1MTA4Miw1MTA4Niw1MTA4OCw1MTA4OSw1MTA5Miw1MTA5NCw1MTA5NSw1MTA5Niw1MTA5OCw1MTEwNCw1MTEwNSw1MTEwNyw1MTEwOCw1MTEwOSw1MTExMCw1MTExNiw1MTExNyw1MTEyMCw1MTEyNCw1MTEzMiw1MTEzMyw1MTEzNSw1MTEzNiw1MTEzNyw1MTE0NCw1MTE0NSw1MTE0OCw1MTE1MCw1MTE1Miw1MTE2MCw1MTE2NSw1MTE3Miw1MTE3Niw1MTE4MCw1MTIwMCw1MTIwMSw1MTIwNCw1MTIwOCw1MTIxMCw1NDYyOCw1NDYzMCw1NDYzMSw1NDYzNCw1NDYzNiw1NDYzOCw1NDYzOSw1NDY0MCw1NDY0MSw1NDY0Miw1NDY0Myw1NDY0Niw1NDY0Nyw1NDY0OSw1NDY1MCw1NDY1MSw1NDY1Myw1NDY1NCw1NDY1NSw1NDY1Niw1NDY1Nyw1NDY1OCw1NDY1OSw1NDY2Miw1NDY2Niw1NDY2NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDY2OCw1NDY2OSw1NDY3MCw1NDY3MSw1NDY3Myw1NDY3NCw1NDY3NSw1NDY3Niw1NDY3Nyw1NDY3OCw1NDY3OSw1NDY4MCw1NDY4MSw1NDY4Miw1NDY4Myw1NDY4NCw1NDY4NSw1NDY4Niw1NDY4Nyw1NDY4OCw1NDY4OSw1NDY5MCw1NDY5MSw1NDY5Miw1NDY5NCw1NDY5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDY5Niw1NDY5Nyw1NDY5OCw1NDY5OSw1NDcwMCw1NDcwMSw1NDcwMiw1NDcwMyw1NDcwNCw1NDcwNSw1NDcwNiw1NDcwNyw1NDcwOCw1NDcwOSw1NDcxMCw1NDcxMSw1NDcxMiw1NDcxMyw1NDcxNCw1NDcxNSw1NDcxNiw1NDcxNyw1NDcxOCw1NDcxOSw1NDcyMCw1NDcyMSw1NDcyMiw1NDcyMyw1NDcyNCw1NDcyNSw1NDcyNiw1NDcyNyw1MTIxNiw1MTIxNyw1MTIxOSw1MTIyMSw1MTIyMiw1MTIyOCw1MTIyOSw1MTIzMiw1MTIzNiw1MTI0NCw1MTI0NSw1MTI0Nyw1MTI0OSw1MTI1Niw1MTI2MCw1MTI2NCw1MTI3Miw1MTI3Myw1MTI3Niw1MTI3Nyw1MTI4NCw1MTMxMiw1MTMxMyw1MTMxNiw1MTMyMCw1MTMyMiw1MTMyOCw1MTMyOSw1MTMzMSw1MTMzMyw1MTMzNCw1MTMzNSw1MTMzOSw1MTM0MCw1MTM0MSw1MTM0OCw1MTM1Nyw1MTM1OSw1MTM2MSw1MTM2OCw1MTM4OCw1MTM4OSw1MTM5Niw1MTQwMCw1MTQwNCw1MTQxMiw1MTQxMyw1MTQxNSw1MTQxNyw1MTQyNCw1MTQyNSw1MTQyOCw1MTQ0NSw1MTQ1Miw1MTQ1Myw1MTQ1Niw1MTQ2MCw1MTQ2MSw1MTQ2Miw1MTQ2OCw1MTQ2OSw1MTQ3MSw1MTQ3Myw1MTQ4MCw1MTUwMCw1MTUwOCw1MTUzNiw1MTUzNyw1MTU0MCw1MTU0NCw1MTU1Miw1MTU1Myw1MTU1NSw1MTU2NCw1MTU2OCw1MTU3Miw1MTU4MCw1MTU5Miw1MTU5Myw1MTU5Niw1MTYwMCw1MTYwOCw1MTYwOSw1MTYxMSw1MTYxMyw1MTY0OCw1MTY0OSw1MTY1Miw1MTY1NSw1MTY1Niw1MTY1OCw1MTY2NCw1MTY2NSw1MTY2Nyw1NDczMCw1NDczMSw1NDczMyw1NDczNCw1NDczNSw1NDczNyw1NDczOSw1NDc0MCw1NDc0MSw1NDc0Miw1NDc0Myw1NDc0Niw1NDc0OCw1NDc1MCw1NDc1MSw1NDc1Miw1NDc1Myw1NDc1NCw1NDc1NSw1NDc1OCw1NDc1OSw1NDc2MSw1NDc2Miw1NDc2Myw1NDc2NSw1NDc2NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDc2Nyw1NDc2OCw1NDc2OSw1NDc3MCw1NDc3MSw1NDc3NCw1NDc3Niw1NDc3OCw1NDc3OSw1NDc4MCw1NDc4MSw1NDc4Miw1NDc4Myw1NDc4Niw1NDc4Nyw1NDc4OSw1NDc5MCw1NDc5MSw1NDc5Myw1NDc5NCw1NDc5NSw1NDc5Niw1NDc5Nyw1NDc5OCw1NDc5OSw1NDgwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgwNiw1NDgwNyw1NDgwOCw1NDgwOSw1NDgxMCw1NDgxMSw1NDgxMyw1NDgxNCw1NDgxNSw1NDgxNyw1NDgxOCw1NDgxOSw1NDgyMSw1NDgyMiw1NDgyMyw1NDgyNCw1NDgyNSw1NDgyNiw1NDgyNyw1NDgyOCw1NDgzMCw1NDgzMSw1NDgzMiw1NDgzMyw1NDgzNCw1NDgzNSw1NDgzNiw1NDgzNyw1NDgzOCw1NDgzOSw1NDg0Miw1NDg0Myw1MTY2OSw1MTY3MCw1MTY3Myw1MTY3NCw1MTY3Niw1MTY3Nyw1MTY4MCw1MTY4Miw1MTY4NCw1MTY4Nyw1MTY5Miw1MTY5Myw1MTY5NSw1MTY5Niw1MTY5Nyw1MTcwNCw1MTcwNSw1MTcwOCw1MTcxMiw1MTcyMCw1MTcyMSw1MTcyMyw1MTcyNCw1MTcyNSw1MTczMiw1MTczNiw1MTc1Myw1MTc4OCw1MTc4OSw1MTc5Miw1MTc5Niw1MTgwNCw1MTgwNSw1MTgwNyw1MTgwOCw1MTgwOSw1MTgxNiw1MTgzNyw1MTg0NCw1MTg2NCw1MTkwMCw1MTkwMSw1MTkwNCw1MTkwOCw1MTkxNiw1MTkxNyw1MTkxOSw1MTkyMSw1MTkyMyw1MTkyOCw1MTkyOSw1MTkzNiw1MTk0OCw1MTk1Niw1MTk3Niw1MTk4NCw1MTk4OCw1MTk5Miw1MjAwMCw1MjAwMSw1MjAzMyw1MjA0MCw1MjA0MSw1MjA0NCw1MjA0OCw1MjA1Niw1MjA1Nyw1MjA2MSw1MjA2OCw1MjA4OCw1MjA4OSw1MjEyNCw1MjE1Miw1MjE4MCw1MjE5Niw1MjE5OSw1MjIwMSw1MjIzNiw1MjIzNyw1MjI0MCw1MjI0NCw1MjI1Miw1MjI1Myw1MjI1Nyw1MjI1OCw1MjI2Myw1MjI2NCw1MjI2NSw1MjI2OCw1MjI3MCw1MjI3Miw1MjI4MCw1MjI4MSw1MjI4Myw1NDg0NSw1NDg0Niw1NDg0Nyw1NDg0OSw1NDg1MCw1NDg1MSw1NDg1Miw1NDg1NCw1NDg1NSw1NDg1OCw1NDg2MCw1NDg2Miw1NDg2Myw1NDg2NCw1NDg2Niw1NDg2Nyw1NDg3MCw1NDg3MSw1NDg3Myw1NDg3NCw1NDg3NSw1NDg3Nyw1NDg3OCw1NDg3OSw1NDg4MCw1NDg4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDg4Miw1NDg4Myw1NDg4NCw1NDg4NSw1NDg4Niw1NDg4OCw1NDg5MCw1NDg5MSw1NDg5Miw1NDg5Myw1NDg5NCw1NDg5NSw1NDg5OCw1NDg5OSw1NDkwMSw1NDkwMiw1NDkwMyw1NDkwNCw1NDkwNSw1NDkwNiw1NDkwNyw1NDkwOCw1NDkwOSw1NDkxMCw1NDkxMSw1NDkxMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDkxMyw1NDkxNCw1NDkxNiw1NDkxOCw1NDkxOSw1NDkyMCw1NDkyMSw1NDkyMiw1NDkyMyw1NDkyNiw1NDkyNyw1NDkyOSw1NDkzMCw1NDkzMSw1NDkzMyw1NDkzNCw1NDkzNSw1NDkzNiw1NDkzNyw1NDkzOCw1NDkzOSw1NDk0MCw1NDk0Miw1NDk0NCw1NDk0Niw1NDk0Nyw1NDk0OCw1NDk0OSw1NDk1MCw1NDk1MSw1NDk1Myw1NDk1NCw1MjI4NCw1MjI4NSw1MjI4Niw1MjI5Miw1MjI5Myw1MjI5Niw1MjMwMCw1MjMwOCw1MjMwOSw1MjMxMSw1MjMxMiw1MjMxMyw1MjMyMCw1MjMyNCw1MjMyNiw1MjMyOCw1MjMzNiw1MjM0MSw1MjM3Niw1MjM3Nyw1MjM4MCw1MjM4NCw1MjM5Miw1MjM5Myw1MjM5NSw1MjM5Niw1MjM5Nyw1MjQwNCw1MjQwNSw1MjQwOCw1MjQxMiw1MjQyMCw1MjQyMSw1MjQyMyw1MjQyNSw1MjQzMiw1MjQzNiw1MjQ1Miw1MjQ2MCw1MjQ2NCw1MjQ4MSw1MjQ4OCw1MjQ4OSw1MjQ5Miw1MjQ5Niw1MjUwNCw1MjUwNSw1MjUwNyw1MjUwOSw1MjUxNiw1MjUyMCw1MjUyNCw1MjUzNyw1MjU3Miw1MjU3Niw1MjU4MCw1MjU4OCw1MjU4OSw1MjU5MSw1MjU5Myw1MjYwMCw1MjYxNiw1MjYyOCw1MjYyOSw1MjYzMiw1MjYzNiw1MjY0NCw1MjY0NSw1MjY0Nyw1MjY0OSw1MjY1Niw1MjY3Niw1MjY4NCw1MjY4OCw1MjcxMiw1MjcxNiw1MjcyMCw1MjcyOCw1MjcyOSw1MjczMSw1MjczMyw1Mjc0MCw1Mjc0NCw1Mjc0OCw1Mjc1Niw1Mjc2MSw1Mjc2OCw1Mjc2OSw1Mjc3Miw1Mjc3Niw1Mjc4NCw1Mjc4NSw1Mjc4Nyw1Mjc4OSw1NDk1NSw1NDk1Nyw1NDk1OCw1NDk1OSw1NDk2MSw1NDk2Miw1NDk2Myw1NDk2NCw1NDk2NSw1NDk2Niw1NDk2Nyw1NDk2OCw1NDk3MCw1NDk3Miw1NDk3Myw1NDk3NCw1NDk3NSw1NDk3Niw1NDk3Nyw1NDk3OCw1NDk3OSw1NDk4Miw1NDk4Myw1NDk4NSw1NDk4Niw1NDk4NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDk4OSw1NDk5MCw1NDk5MSw1NDk5Miw1NDk5NCw1NDk5NSw1NDk5Nyw1NDk5OCw1NTAwMCw1NTAwMiw1NTAwMyw1NTAwNCw1NTAwNSw1NTAwNiw1NTAwNyw1NTAwOSw1NTAxMCw1NTAxMSw1NTAxMyw1NTAxNCw1NTAxNSw1NTAxNyw1NTAxOCw1NTAxOSw1NTAyMCw1NTAyMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTAyMiw1NTAyMyw1NTAyNSw1NTAyNiw1NTAyNyw1NTAyOCw1NTAzMCw1NTAzMSw1NTAzMiw1NTAzMyw1NTAzNCw1NTAzNSw1NTAzOCw1NTAzOSw1NTA0MSw1NTA0Miw1NTA0Myw1NTA0NSw1NTA0Niw1NTA0Nyw1NTA0OCw1NTA0OSw1NTA1MCw1NTA1MSw1NTA1Miw1NTA1Myw1NTA1NCw1NTA1NSw1NTA1Niw1NTA1OCw1NTA1OSw1NTA2MCw1MjgyNCw1MjgyNSw1MjgyOCw1MjgzMSw1MjgzMiw1MjgzMyw1Mjg0MCw1Mjg0MSw1Mjg0Myw1Mjg0NSw1Mjg1Miw1Mjg1Myw1Mjg1Niw1Mjg2MCw1Mjg2OCw1Mjg2OSw1Mjg3MSw1Mjg3Myw1Mjg4MCw1Mjg4MSw1Mjg4NCw1Mjg4OCw1Mjg5Niw1Mjg5Nyw1Mjg5OSw1MjkwMCw1MjkwMSw1MjkwOCw1MjkwOSw1MjkyOSw1Mjk2NCw1Mjk2NSw1Mjk2OCw1Mjk3MSw1Mjk3Miw1Mjk4MCw1Mjk4MSw1Mjk4Myw1Mjk4NCw1Mjk4NSw1Mjk5Miw1Mjk5Myw1Mjk5Niw1MzAwMCw1MzAwOCw1MzAwOSw1MzAxMSw1MzAxMyw1MzAyMCw1MzAyNCw1MzAyOCw1MzAzNiw1MzAzNyw1MzAzOSw1MzA0MCw1MzA0MSw1MzA0OCw1MzA3Niw1MzA3Nyw1MzA4MCw1MzA4NCw1MzA5Miw1MzA5Myw1MzA5NSw1MzA5Nyw1MzEwNCw1MzEwNSw1MzEwOCw1MzExMiw1MzEyMCw1MzEyNSw1MzEzMiw1MzE1Myw1MzE2MCw1MzE2OCw1MzE4OCw1MzIxNiw1MzIxNyw1MzIyMCw1MzIyNCw1MzIzMiw1MzIzMyw1MzIzNSw1MzIzNyw1MzI0NCw1MzI0OCw1MzI1Miw1MzI2NSw1MzI3Miw1MzI5Myw1MzMwMCw1MzMwMSw1MzMwNCw1MzMwOCw1NTA2MSw1NTA2Miw1NTA2Myw1NTA2Niw1NTA2Nyw1NTA2OSw1NTA3MCw1NTA3MSw1NTA3Myw1NTA3NCw1NTA3NSw1NTA3Niw1NTA3Nyw1NTA3OCw1NTA3OSw1NTA4Miw1NTA4NCw1NTA4Niw1NTA4Nyw1NTA4OCw1NTA4OSw1NTA5MCw1NTA5MSw1NTA5NCw1NTA5NSw1NTA5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTA5OCw1NTA5OSw1NTEwMSw1NTEwMiw1NTEwMyw1NTEwNCw1NTEwNSw1NTEwNiw1NTEwNyw1NTEwOSw1NTExMCw1NTExMiw1NTExNCw1NTExNSw1NTExNiw1NTExNyw1NTExOCw1NTExOSw1NTEyMiw1NTEyMyw1NTEyNSw1NTEzMCw1NTEzMSw1NTEzMiw1NTEzMyw1NTEzNCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NTEzNSw1NTEzOCw1NTE0MCw1NTE0Miw1NTE0Myw1NTE0NCw1NTE0Niw1NTE0Nyw1NTE0OSw1NTE1MCw1NTE1MSw1NTE1Myw1NTE1NCw1NTE1NSw1NTE1Nyw1NTE1OCw1NTE1OSw1NTE2MCw1NTE2MSw1NTE2Miw1NTE2Myw1NTE2Niw1NTE2Nyw1NTE2OCw1NTE3MCw1NTE3MSw1NTE3Miw1NTE3Myw1NTE3NCw1NTE3NSw1NTE3OCw1NTE3OSw1MzMxNiw1MzMxNyw1MzMxOSw1MzMyMSw1MzMyOCw1MzMzMiw1MzMzNiw1MzM0NCw1MzM1Niw1MzM1Nyw1MzM2MCw1MzM2NCw1MzM3Miw1MzM3Myw1MzM3Nyw1MzQxMiw1MzQxMyw1MzQxNiw1MzQyMCw1MzQyOCw1MzQyOSw1MzQzMSw1MzQzMyw1MzQ0MCw1MzQ0MSw1MzQ0NCw1MzQ0OCw1MzQ0OSw1MzQ1Niw1MzQ1Nyw1MzQ1OSw1MzQ2MCw1MzQ2MSw1MzQ2OCw1MzQ2OSw1MzQ3Miw1MzQ3Niw1MzQ4NCw1MzQ4NSw1MzQ4Nyw1MzQ4OCw1MzQ4OSw1MzQ5Niw1MzUxNyw1MzU1Miw1MzU1Myw1MzU1Niw1MzU2MCw1MzU2Miw1MzU2OCw1MzU2OSw1MzU3MSw1MzU3Miw1MzU3Myw1MzU4MCw1MzU4MSw1MzU4NCw1MzU4OCw1MzU5Niw1MzU5Nyw1MzU5OSw1MzYwMSw1MzYwOCw1MzYxMiw1MzYyOCw1MzYzNiw1MzY0MCw1MzY2NCw1MzY2NSw1MzY2OCw1MzY3Miw1MzY4MCw1MzY4MSw1MzY4Myw1MzY4NSw1MzY5MCw1MzY5Miw1MzY5Niw1MzcyMCw1Mzc0OCw1Mzc1Miw1Mzc2Nyw1Mzc2OSw1Mzc3Niw1MzgwNCw1MzgwNSw1MzgwOCw1MzgxMiw1MzgyMCw1MzgyMSw1MzgyMyw1MzgyNSw1MzgzMiw1Mzg1Miw1NTE4MSw1NTE4Miw1NTE4Myw1NTE4NSw1NTE4Niw1NTE4Nyw1NTE4OCw1NTE4OSw1NTE5MCw1NTE5MSw1NTE5NCw1NTE5Niw1NTE5OCw1NTE5OSw1NTIwMCw1NTIwMSw1NTIwMiw1NTIwMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1Mzg2MCw1Mzg4OCw1Mzg4OSw1Mzg5Miw1Mzg5Niw1MzkwNCw1MzkwNSw1MzkwOSw1MzkxNiw1MzkyMCw1MzkyNCw1MzkzMiw1MzkzNyw1Mzk0NCw1Mzk0NSw1Mzk0OCw1Mzk1MSw1Mzk1Miw1Mzk1NCw1Mzk2MCw1Mzk2MSw1Mzk2Myw1Mzk3Miw1Mzk3Niw1Mzk4MCw1Mzk4OCw1Mzk4OSw1NDAwMCw1NDAwMSw1NDAwNCw1NDAwOCw1NDAxNiw1NDAxNyw1NDAxOSw1NDAyMSw1NDAyOCw1NDAyOSw1NDAzMCw1NDAzMiw1NDAzNiw1NDAzOCw1NDA0NCw1NDA0NSw1NDA0Nyw1NDA0OCw1NDA0OSw1NDA1Myw1NDA1Niw1NDA1Nyw1NDA2MCw1NDA2NCw1NDA3Miw1NDA3Myw1NDA3NSw1NDA3Niw1NDA3Nyw1NDA4NCw1NDA4NSw1NDE0MCw1NDE0MSw1NDE0NCw1NDE0OCw1NDE1Niw1NDE1Nyw1NDE1OSw1NDE2MCw1NDE2MSw1NDE2OCw1NDE2OSw1NDE3Miw1NDE3Niw1NDE4NCw1NDE4NSw1NDE4Nyw1NDE4OSw1NDE5Niw1NDIwMCw1NDIwNCw1NDIxMiw1NDIxMyw1NDIxNiw1NDIxNyw1NDIyNCw1NDIzMiw1NDI0MSw1NDI0Myw1NDI1Miw1NDI1Myw1NDI1Niw1NDI2MCw1NDI2OCw1NDI2OSw1NDI3MSw1NDI3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDI4MCw1NDMwMSw1NDMzNiw1NDM0MCw1NDM2NCw1NDM2OCw1NDM3Miw1NDM4MSw1NDM4Myw1NDM5Miw1NDM5Myw1NDM5Niw1NDM5OSw1NDQwMCw1NDQwMiw1NDQwOCw1NDQwOSw1NDQxMSw1NDQxMyw1NDQyMCw1NDQ0MSw1NDQ3Niw1NDQ4MCw1NDQ4NCw1NDQ5Miw1NDQ5NSw1NDUwNCw1NDUwOCw1NDUxMiw1NDUyMCw1NDUyMyw1NDUyNSw1NDUzMiw1NDUzNiw1NDU0MCw1NDU0OCw1NDU0OSw1NDU1MSw1NDU4OCw1NDU4OSw1NDU5Miw1NDU5Niw1NDYwNCw1NDYwNSw1NDYwNyw1NDYwOSw1NDYxNiw1NDYxNyw1NDYyMCw1NDYyNCw1NDYyOSw1NDYzMiw1NDYzMyw1NDYzNSw1NDYzNyw1NDY0NCw1NDY0NSw1NDY0OCw1NDY1Miw1NDY2MCw1NDY2MSw1NDY2Myw1NDY2NCw1NDY2NSw1NDY3Miw1NDY5Myw1NDcyOCw1NDcyOSw1NDczMiw1NDczNiw1NDczOCw1NDc0NCw1NDc0NSw1NDc0Nyw1NDc0OSw1NDc1Niw1NDc1Nyw1NDc2MCw1NDc2NCw1NDc3Miw1NDc3Myw1NDc3NSw1NDc3Nyw1NDc4NCw1NDc4NSw1NDc4OCw1NDc5Miw1NDgwMCw1NDgwMSw1NDgwMyw1NDgwNCw1NDgwNSw1NDgxMiw1NDgxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1NDgyMCw1NDgyOSw1NDg0MCw1NDg0MSw1NDg0NCw1NDg0OCw1NDg1Myw1NDg1Niw1NDg1Nyw1NDg1OSw1NDg2MSw1NDg2NSw1NDg2OCw1NDg2OSw1NDg3Miw1NDg3Niw1NDg4Nyw1NDg4OSw1NDg5Niw1NDg5Nyw1NDkwMCw1NDkxNSw1NDkxNyw1NDkyNCw1NDkyNSw1NDkyOCw1NDkzMiw1NDk0MSw1NDk0Myw1NDk0NSw1NDk1Miw1NDk1Niw1NDk2MCw1NDk2OSw1NDk3MSw1NDk4MCw1NDk4MSw1NDk4NCw1NDk4OCw1NDk5Myw1NDk5Niw1NDk5OSw1NTAwMSw1NTAwOCw1NTAxMiw1NTAxNiw1NTAyNCw1NTAyOSw1NTAzNiw1NTAzNyw1NTA0MCw1NTA0NCw1NTA1Nyw1NTA2NCw1NTA2NSw1NTA2OCw1NTA3Miw1NTA4MCw1NTA4MSw1NTA4Myw1NTA4NSw1NTA5Miw1NTA5Myw1NTA5Niw1NTEwMCw1NTEwOCw1NTExMSw1NTExMyw1NTEyMCw1NTEyMSw1NTEyNCw1NTEyNiw1NTEyNyw1NTEyOCw1NTEyOSw1NTEzNiw1NTEzNyw1NTEzOSw1NTE0MSw1NTE0NSw1NTE0OCw1NTE1Miw1NTE1Niw1NTE2NCw1NTE2NSw1NTE2OSw1NTE3Niw1NTE3Nyw1NTE4MCw1NTE4NCw1NTE5Miw1NTE5Myw1NTE5NSw1NTE5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMjg1LDIwMzM5LDIwNTUxLDIwNzI5LDIxMTUyLDIxNDg3LDIxNjIxLDIxNzMzLDIyMDI1LDIzMjMzLDIzNDc4LDI2MjQ3LDI2NTUwLDI2NTUxLDI2NjA3LDI3NDY4LDI5NjM0LDMwMTQ2LDMxMjkyLDMzNDk5LDMzNTQwLDM0OTAzLDM0OTUyLDM1MzgyLDM2MDQwLDM2MzAzLDM2NjAzLDM2ODM4LDM5MzgxLDIxMDUxLDIxMzY0LDIxNTA4LDI0NjgyLDI0OTMyLDI3NTgwLDI5NjQ3LDMzMDUwLDM1MjU4LDM1MjgyLDM4MzA3LDIwMzU1LDIxMDAyLDIyNzE4LDIyOTA0LDIzMDE0LDI0MTc4LDI0MTg1LDI1MDMxLDI1NTM2LDI2NDM4LDI2NjA0LDI2NzUxLDI4NTY3LDMwMjg2LDMwNDc1LDMwOTY1LDMxMjQwLDMxNDg3LDMxNzc3LDMyOTI1LDMzMzkwLDMzMzkzLDM1NTYzLDM4MjkxLDIwMDc1LDIxOTE3LDI2MzU5LDI4MjEyLDMwODgzLDMxNDY5LDMzODgzLDM1MDg4LDM0NjM4LDM4ODI0LDIxMjA4LDIyMzUwLDIyNTcwLDIzODg0LDI0ODYzLDI1MDIyLDI1MTIxLDI1OTU0LDI2NTc3LDI3MjA0LDI4MTg3LDI5OTc2LDMwMTMxLDMwNDM1LDMwNjQwLDMyMDU4LDM3MDM5LDM3OTY5LDM3OTcwLDQwODUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMjgzLDIzNzI0LDMwMDAyLDMyOTg3LDM3NDQwLDM4Mjk2LDIxMDgzLDIyNTM2LDIzMDA0LDIzNzEzLDIzODMxLDI0MjQ3LDI0Mzc4LDI0Mzk0LDI0OTUxLDI3NzQzLDMwMDc0LDMwMDg2LDMxOTY4LDMyMTE1LDMyMTc3LDMyNjUyLDMzMTA4LDMzMzEzLDM0MTkzLDM1MTM3LDM1NjExLDM3NjI4LDM4NDc3LDQwMDA3LDIwMTcxLDIwMjE1LDIwNDkxLDIwOTc3LDIyNjA3LDI0ODg3LDI0ODk0LDI0OTM2LDI1OTEzLDI3MTE0LDI4NDMzLDMwMTE3LDMwMzQyLDMwNDIyLDMxNjIzLDMzNDQ1LDMzOTk1LDYzNzQ0LDM3Nzk5LDM4MjgzLDIxODg4LDIzNDU4LDIyMzUzLDYzNzQ1LDMxOTIzLDMyNjk3LDM3MzAxLDIwNTIwLDIxNDM1LDIzNjIxLDI0MDQwLDI1Mjk4LDI1NDU0LDI1ODE4LDI1ODMxLDI4MTkyLDI4ODQ0LDMxMDY3LDM2MzE3LDM2MzgyLDYzNzQ2LDM2OTg5LDM3NDQ1LDM3NjI0LDIwMDk0LDIwMjE0LDIwNTgxLDI0MDYyLDI0MzE0LDI0ODM4LDI2OTY3LDMzMTM3LDM0Mzg4LDM2NDIzLDM3NzQ5LDM5NDY3LDIwMDYyLDIwNjI1LDI2NDgwLDI2Njg4LDIwNzQ1LDIxMTMzLDIxMTM4LDI3Mjk4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwNjUyLDM3MzkyLDQwNjYwLDIxMTYzLDI0NjIzLDM2ODUwLDIwNTUyLDI1MDAxLDI1NTgxLDI1ODAyLDI2Njg0LDI3MjY4LDI4NjA4LDMzMTYwLDM1MjMzLDM4NTQ4LDIyNTMzLDI5MzA5LDI5MzU2LDI5OTU2LDMyMTIxLDMyMzY1LDMyOTM3LDM1MjExLDM1NzAwLDM2OTYzLDQwMjczLDI1MjI1LDI3NzcwLDI4NTAwLDMyMDgwLDMyNTcwLDM1MzYzLDIwODYwLDI0OTA2LDMxNjQ1LDM1NjA5LDM3NDYzLDM3NzcyLDIwMTQwLDIwNDM1LDIwNTEwLDIwNjcwLDIwNzQyLDIxMTg1LDIxMTk3LDIxMzc1LDIyMzg0LDIyNjU5LDI0MjE4LDI0NDY1LDI0OTUwLDI1MDA0LDI1ODA2LDI1OTY0LDI2MjIzLDI2Mjk5LDI2MzU2LDI2Nzc1LDI4MDM5LDI4ODA1LDI4OTEzLDI5ODU1LDI5ODYxLDI5ODk4LDMwMTY5LDMwODI4LDMwOTU2LDMxNDU1LDMxNDc4LDMyMDY5LDMyMTQ3LDMyNzg5LDMyODMxLDMzMDUxLDMzNjg2LDM1Njg2LDM2NjI5LDM2ODg1LDM3ODU3LDM4OTE1LDM4OTY4LDM5NTE0LDM5OTEyLDIwNDE4LDIxODQzLDIyNTg2LDIyODY1LDIzMzk1LDIzNjIyLDI0NzYwLDI1MTA2LDI2NjkwLDI2ODAwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODU2LDI4MzMwLDMwMDI4LDMwMzI4LDMwOTI2LDMxMjkzLDMxOTk1LDMyMzYzLDMyMzgwLDM1MzM2LDM1NDg5LDM1OTAzLDM4NTQyLDQwMzg4LDIxNDc2LDIxNDgxLDIxNTc4LDIxNjE3LDIyMjY2LDIyOTkzLDIzMzk2LDIzNjExLDI0MjM1LDI1MzM1LDI1OTExLDI1OTI1LDI1OTcwLDI2MjcyLDI2NTQzLDI3MDczLDI3ODM3LDMwMjA0LDMwMzUyLDMwNTkwLDMxMjk1LDMyNjYwLDMyNzcxLDMyOTI5LDMzMTY3LDMzNTEwLDMzNTMzLDMzNzc2LDM0MjQxLDM0ODY1LDM0OTk2LDM1NDkzLDYzNzQ3LDM2NzY0LDM3Njc4LDM4NTk5LDM5MDE1LDM5NjQwLDQwNzIzLDIxNzQxLDI2MDExLDI2MzU0LDI2NzY3LDMxMjk2LDM1ODk1LDQwMjg4LDIyMjU2LDIyMzcyLDIzODI1LDI2MTE4LDI2ODAxLDI2ODI5LDI4NDE0LDI5NzM2LDM0OTc0LDM5OTA4LDI3NzUyLDYzNzQ4LDM5NTkyLDIwMzc5LDIwODQ0LDIwODQ5LDIxMTUxLDIzMzgwLDI0MDM3LDI0NjU2LDI0Njg1LDI1MzI5LDI1NTExLDI1OTE1LDI5NjU3LDMxMzU0LDM0NDY3LDM2MDAyLDM4Nzk5LDIwMDE4LDIzNTIxLDI1MDk2LDI2NTI0LDI5OTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTg1LDMzNzQ3LDM1NDYzLDM1NTA2LDM2MzI4LDM2OTQyLDM3NzA3LDM4OTgyLDI0Mjc1LDI3MTEyLDM0MzAzLDM3MTAxLDYzNzQ5LDIwODk2LDIzNDQ4LDIzNTMyLDI0OTMxLDI2ODc0LDI3NDU0LDI4NzQ4LDI5NzQzLDI5OTEyLDMxNjQ5LDMyNTkyLDMzNzMzLDM1MjY0LDM2MDExLDM4MzY0LDM5MjA4LDIxMDM4LDI0NjY5LDI1MzI0LDM2ODY2LDIwMzYyLDIwODA5LDIxMjgxLDIyNzQ1LDI0MjkxLDI2MzM2LDI3OTYwLDI4ODI2LDI5Mzc4LDI5NjU0LDMxNTY4LDMzMDA5LDM3OTc5LDIxMzUwLDI1NDk5LDMyNjE5LDIwMDU0LDIwNjA4LDIyNjAyLDIyNzUwLDI0NjE4LDI0ODcxLDI1Mjk2LDI3MDg4LDM5NzQ1LDIzNDM5LDMyMDI0LDMyOTQ1LDM2NzAzLDIwMTMyLDIwNjg5LDIxNjc2LDIxOTMyLDIzMzA4LDIzOTY4LDI0MDM5LDI1ODk4LDI1OTM0LDI2NjU3LDI3MjExLDI5NDA5LDMwMzUwLDMwNzAzLDMyMDk0LDMyNzYxLDMzMTg0LDM0MTI2LDM0NTI3LDM2NjExLDM2Njg2LDM3MDY2LDM5MTcxLDM5NTA5LDM5ODUxLDE5OTkyLDIwMDM3LDIwMDYxLDIwMTY3LDIwNDY1LDIwODU1LDIxMjQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxMzEyLDIxNDc1LDIxNDc3LDIxNjQ2LDIyMDM2LDIyMzg5LDIyNDM0LDIzNDk1LDIzOTQzLDI0MjcyLDI1MDg0LDI1MzA0LDI1OTM3LDI2NTUyLDI2NjAxLDI3MDgzLDI3NDcyLDI3NTkwLDI3NjI4LDI3NzE0LDI4MzE3LDI4NzkyLDI5Mzk5LDI5NTkwLDI5Njk5LDMwNjU1LDMwNjk3LDMxMzUwLDMyMTI3LDMyNzc3LDMzMjc2LDMzMjg1LDMzMjkwLDMzNTAzLDM0OTE0LDM1NjM1LDM2MDkyLDM2NTQ0LDM2ODgxLDM3MDQxLDM3NDc2LDM3NTU4LDM5Mzc4LDM5NDkzLDQwMTY5LDQwNDA3LDQwODYwLDIyMjgzLDIzNjE2LDMzNzM4LDM4ODE2LDM4ODI3LDQwNjI4LDIxNTMxLDMxMzg0LDMyNjc2LDM1MDMzLDM2NTU3LDM3MDg5LDIyNTI4LDIzNjI0LDI1NDk2LDMxMzkxLDIzNDcwLDI0MzM5LDMxMzUzLDMxNDA2LDMzNDIyLDM2NTI0LDIwNTE4LDIxMDQ4LDIxMjQwLDIxMzY3LDIyMjgwLDI1MzMxLDI1NDU4LDI3NDAyLDI4MDk5LDMwNTE5LDIxNDEzLDI5NTI3LDM0MTUyLDM2NDcwLDM4MzU3LDI2NDI2LDI3MzMxLDI4NTI4LDM1NDM3LDM2NTU2LDM5MjQzLDYzNzUwLDI2MjMxLDI3NTEyLDM2MDIwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM5NzQwLDYzNzUxLDIxNDgzLDIyMzE3LDIyODYyLDI1NTQyLDI3MTMxLDI5Njc0LDMwNzg5LDMxNDE4LDMxNDI5LDMxOTk4LDMzOTA5LDM1MjE1LDM2MjExLDM2OTE3LDM4MzEyLDIxMjQzLDIyMzQzLDMwMDIzLDMxNTg0LDMzNzQwLDM3NDA2LDYzNzUyLDI3MjI0LDIwODExLDIxMDY3LDIxMTI3LDI1MTE5LDI2ODQwLDI2OTk3LDM4NTUzLDIwNjc3LDIxMTU2LDIxMjIwLDI1MDI3LDI2MDIwLDI2NjgxLDI3MTM1LDI5ODIyLDMxNTYzLDMzNDY1LDMzNzcxLDM1MjUwLDM1NjQxLDM2ODE3LDM5MjQxLDYzNzUzLDIwMTcwLDIyOTM1LDI1ODEwLDI2MTI5LDI3Mjc4LDI5NzQ4LDMxMTA1LDMxMTY1LDMzNDQ5LDM0OTQyLDM0OTQzLDM1MTY3LDYzNzU0LDM3NjcwLDIwMjM1LDIxNDUwLDI0NjEzLDI1MjAxLDI3NzYyLDMyMDI2LDMyMTAyLDIwMTIwLDIwODM0LDMwNjg0LDMyOTQzLDIwMjI1LDIwMjM4LDIwODU0LDIwODY0LDIxOTgwLDIyMTIwLDIyMzMxLDIyNTIyLDIyNTI0LDIyODA0LDIyODU1LDIyOTMxLDIzNDkyLDIzNjk2LDIzODIyLDI0MDQ5LDI0MTkwLDI0NTI0LDI1MjE2LDI2MDcxLDI2MDgzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2Mzk4LDI2Mzk5LDI2NDYyLDI2ODI3LDI2ODIwLDI3MjMxLDI3NDUwLDI3NjgzLDI3NzczLDI3Nzc4LDI4MTAzLDI5NTkyLDI5NzM0LDI5NzM4LDI5ODI2LDI5ODU5LDMwMDcyLDMwMDc5LDMwODQ5LDMwOTU5LDMxMDQxLDMxMDQ3LDMxMDQ4LDMxMDk4LDMxNjM3LDMyMDAwLDMyMTg2LDMyNjQ4LDMyNzc0LDMyODEzLDMyOTA4LDM1MzUyLDM1NjYzLDM1OTEyLDM2MjE1LDM3NjY1LDM3NjY4LDM5MTM4LDM5MjQ5LDM5NDM4LDM5NDM5LDM5NTI1LDQwNTk0LDMyMjAyLDIwMzQyLDIxNTEzLDI1MzI2LDI2NzA4LDM3MzI5LDIxOTMxLDIwNzk0LDYzNzU1LDYzNzU2LDIzMDY4LDI1MDYyLDYzNzU3LDI1Mjk1LDI1MzQzLDYzNzU4LDYzNzU5LDYzNzYwLDYzNzYxLDYzNzYyLDYzNzYzLDM3MDI3LDYzNzY0LDYzNzY1LDYzNzY2LDYzNzY3LDYzNzY4LDM1NTgyLDYzNzY5LDYzNzcwLDYzNzcxLDYzNzcyLDI2MjYyLDYzNzczLDI5MDE0LDYzNzc0LDYzNzc1LDM4NjI3LDYzNzc2LDI1NDIzLDI1NDY2LDIxMzM1LDYzNzc3LDI2NTExLDI2OTc2LDI4Mjc1LDYzNzc4LDMwMDA3LDYzNzc5LDYzNzgwLDYzNzgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyMDEzLDYzNzgyLDYzNzgzLDM0OTMwLDIyMjE4LDIzMDY0LDYzNzg0LDYzNzg1LDYzNzg2LDYzNzg3LDYzNzg4LDIwMDM1LDYzNzg5LDIwODM5LDIyODU2LDI2NjA4LDMyNzg0LDYzNzkwLDIyODk5LDI0MTgwLDI1NzU0LDMxMTc4LDI0NTY1LDI0Njg0LDI1Mjg4LDI1NDY3LDIzNTI3LDIzNTExLDIxMTYyLDYzNzkxLDIyOTAwLDI0MzYxLDI0NTk0LDYzNzkyLDYzNzkzLDYzNzk0LDI5Nzg1LDYzNzk1LDYzNzk2LDYzNzk3LDYzNzk4LDYzNzk5LDYzODAwLDM5Mzc3LDYzODAxLDYzODAyLDYzODAzLDYzODA0LDYzODA1LDYzODA2LDYzODA3LDYzODA4LDYzODA5LDYzODEwLDYzODExLDI4NjExLDYzODEyLDYzODEzLDMzMjE1LDM2Nzg2LDI0ODE3LDYzODE0LDYzODE1LDMzMTI2LDYzODE2LDYzODE3LDIzNjE1LDYzODE4LDYzODE5LDYzODIwLDYzODIxLDYzODIyLDYzODIzLDYzODI0LDYzODI1LDIzMjczLDM1MzY1LDI2NDkxLDMyMDE2LDYzODI2LDYzODI3LDYzODI4LDYzODI5LDYzODMwLDYzODMxLDMzMDIxLDYzODMyLDYzODMzLDIzNjEyLDI3ODc3LDIxMzExLDI4MzQ2LDIyODEwLDMzNTkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwMDI1LDIwMTUwLDIwMjk0LDIxOTM0LDIyMjk2LDIyNzI3LDI0NDA2LDI2MDM5LDI2MDg2LDI3MjY0LDI3NTczLDI4MjM3LDMwNzAxLDMxNDcxLDMxNzc0LDMyMjIyLDM0NTA3LDM0OTYyLDM3MTcwLDM3NzIzLDI1Nzg3LDI4NjA2LDI5NTYyLDMwMTM2LDM2OTQ4LDIxODQ2LDIyMzQ5LDI1MDE4LDI1ODEyLDI2MzExLDI4MTI5LDI4MjUxLDI4NTI1LDI4NjAxLDMwMTkyLDMyODM1LDMzMjEzLDM0MTEzLDM1MjAzLDM1NTI3LDM1Njc0LDM3NjYzLDI3Nzk1LDMwMDM1LDMxNTcyLDM2MzY3LDM2OTU3LDIxNzc2LDIyNTMwLDIyNjE2LDI0MTYyLDI1MDk1LDI1NzU4LDI2ODQ4LDMwMDcwLDMxOTU4LDM0NzM5LDQwNjgwLDIwMTk1LDIyNDA4LDIyMzgyLDIyODIzLDIzNTY1LDIzNzI5LDI0MTE4LDI0NDUzLDI1MTQwLDI1ODI1LDI5NjE5LDMzMjc0LDM0OTU1LDM2MDI0LDM4NTM4LDQwNjY3LDIzNDI5LDI0NTAzLDI0NzU1LDIwNDk4LDIwOTkyLDIxMDQwLDIyMjk0LDIyNTgxLDIyNjE1LDIzNTY2LDIzNjQ4LDIzNzk4LDIzOTQ3LDI0MjMwLDI0NDY2LDI0NzY0LDI1MzYxLDI1NDgxLDI1NjIzLDI2NjkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODczLDI3MzMwLDI4MTIwLDI4MTkzLDI4MzcyLDI4NjQ0LDI5MTgyLDMwNDI4LDMwNTg1LDMxMTUzLDMxMjkxLDMzNzk2LDM1MjQxLDM2MDc3LDM2MzM5LDM2NDI0LDM2ODY3LDM2ODg0LDM2OTQ3LDM3MTE3LDM3NzA5LDM4NTE4LDM4ODc2LDI3NjAyLDI4Njc4LDI5MjcyLDI5MzQ2LDI5NTQ0LDMwNTYzLDMxMTY3LDMxNzE2LDMyNDExLDM1NzEyLDIyNjk3LDI0Nzc1LDI1OTU4LDI2MTA5LDI2MzAyLDI3Nzg4LDI4OTU4LDI5MTI5LDM1OTMwLDM4OTMxLDIwMDc3LDMxMzYxLDIwMTg5LDIwOTA4LDIwOTQxLDIxMjA1LDIxNTE2LDI0OTk5LDI2NDgxLDI2NzA0LDI2ODQ3LDI3OTM0LDI4NTQwLDMwMTQwLDMwNjQzLDMxNDYxLDMzMDEyLDMzODkxLDM3NTA5LDIwODI4LDI2MDA3LDI2NDYwLDI2NTE1LDMwMTY4LDMxNDMxLDMzNjUxLDYzODM0LDM1OTEwLDM2ODg3LDM4OTU3LDIzNjYzLDMzMjE2LDMzNDM0LDM2OTI5LDM2OTc1LDM3Mzg5LDI0NDcxLDIzOTY1LDI3MjI1LDI5MTI4LDMwMzMxLDMxNTYxLDM0Mjc2LDM1NTg4LDM3MTU5LDM5NDcyLDIxODk1LDI1MDc4LDYzODM1LDMwMzEzLDMyNjQ1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MzY3LDM0NzQ2LDM1MDY0LDM3MDA3LDYzODM2LDI3OTMxLDI4ODg5LDI5NjYyLDMyMDk3LDMzODUzLDYzODM3LDM3MjI2LDM5NDA5LDYzODM4LDIwMDk4LDIxMzY1LDI3Mzk2LDI3NDEwLDI4NzM0LDI5MjExLDM0MzQ5LDQwNDc4LDIxMDY4LDM2NzcxLDIzODg4LDI1ODI5LDI1OTAwLDI3NDE0LDI4NjUxLDMxODExLDMyNDEyLDM0MjUzLDM1MTcyLDM1MjYxLDI1Mjg5LDMzMjQwLDM0ODQ3LDI0MjY2LDI2MzkxLDI4MDEwLDI5NDM2LDI5NzAxLDI5ODA3LDM0NjkwLDM3MDg2LDIwMzU4LDIzODIxLDI0NDgwLDMzODAyLDIwOTE5LDI1NTA0LDMwMDUzLDIwMTQyLDIwNDg2LDIwODQxLDIwOTM3LDI2NzUzLDI3MTUzLDMxOTE4LDMxOTIxLDMxOTc1LDMzMzkxLDM1NTM4LDM2NjM1LDM3MzI3LDIwNDA2LDIwNzkxLDIxMjM3LDIxNTcwLDI0MzAwLDI0OTQyLDI1MTUwLDI2MDUzLDI3MzU0LDI4NjcwLDMxMDE4LDM0MjY4LDM0ODUxLDM4MzE3LDM5NTIyLDM5NTMwLDQwNTk5LDQwNjU0LDIxMTQ3LDI2MzEwLDI3NTExLDI4NzAxLDMxMDE5LDM2NzA2LDM4NzIyLDI0OTc2LDI1MDg4LDI1ODkxLDI4NDUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDAxLDI5ODMzLDMyMjQ0LDMyODc5LDM0MDMwLDM2NjQ2LDM2ODk5LDM3NzA2LDIwOTI1LDIxMDE1LDIxMTU1LDI3OTE2LDI4ODcyLDM1MDEwLDI0MjY1LDI1OTg2LDI3NTY2LDI4NjEwLDMxODA2LDI5NTU3LDIwMTk2LDIwMjc4LDIyMjY1LDYzODM5LDIzNzM4LDIzOTk0LDI0NjA0LDI5NjE4LDMxNTMzLDMyNjY2LDMyNzE4LDMyODM4LDM2ODk0LDM3NDI4LDM4NjQ2LDM4NzI4LDM4OTM2LDQwODAxLDIwMzYzLDI4NTgzLDMxMTUwLDM3MzAwLDM4NTgzLDIxMjE0LDYzODQwLDI1NzM2LDI1Nzk2LDI3MzQ3LDI4NTEwLDI4Njk2LDI5MjAwLDMwNDM5LDMyNzY5LDM0MzEwLDM0Mzk2LDM2MzM1LDM2NjEzLDM4NzA2LDM5NzkxLDQwNDQyLDQwNTY1LDMwODYwLDMxMTAzLDMyMTYwLDMzNzM3LDM3NjM2LDQwNTc1LDQwNTk1LDM1NTQyLDIyNzUxLDI0MzI0LDI2NDA3LDI4NzExLDI5OTAzLDMxODQwLDMyODk0LDIwNzY5LDI4NzEyLDI5MjgyLDMwOTIyLDM2MDM0LDM2MDU4LDM2MDg0LDM4NjQ3LDIwMTAyLDIwNjk4LDIzNTM0LDI0Mjc4LDI2MDA5LDI5MTM0LDMwMjc0LDMwNjM3LDMyODQyLDM0MDQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTg4LDM5NzE5LDQwODQ1LDIyNzQ0LDIzMTA1LDIzNjUwLDI3MTU1LDI4MTIyLDI4NDMxLDMwMjY3LDMyMDQ3LDMyMzExLDM0MDc4LDM1MTI4LDM3ODYwLDM4NDc1LDIxMTI5LDI2MDY2LDI2NjExLDI3MDYwLDI3OTY5LDI4MzE2LDI4Njg3LDI5NzA1LDI5NzkyLDMwMDQxLDMwMjQ0LDMwODI3LDM1NjI4LDM5MDA2LDIwODQ1LDI1MTM0LDM4NTIwLDIwMzc0LDIwNTIzLDIzODMzLDI4MTM4LDMyMTg0LDM2NjUwLDI0NDU5LDI0OTAwLDI2NjQ3LDYzODQxLDM4NTM0LDIxMjAyLDMyOTA3LDIwOTU2LDIwOTQwLDI2OTc0LDMxMjYwLDMyMTkwLDMzNzc3LDM4NTE3LDIwNDQyLDIxMDMzLDIxNDAwLDIxNTE5LDIxNzc0LDIzNjUzLDI0NzQzLDI2NDQ2LDI2NzkyLDI4MDEyLDI5MzEzLDI5NDMyLDI5NzAyLDI5ODI3LDYzODQyLDMwMTc4LDMxODUyLDMyNjMzLDMyNjk2LDMzNjczLDM1MDIzLDM1MDQxLDM3MzI0LDM3MzI4LDM4NjI2LDM5ODgxLDIxNTMzLDI4NTQyLDI5MTM2LDI5ODQ4LDM0Mjk4LDM2NTIyLDM4NTYzLDQwMDIzLDQwNjA3LDI2NTE5LDI4MTA3LDI5NzQ3LDMzMjU2LDM4Njc4LDMwNzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxNDM1LDMxNTIwLDMxODkwLDI1NzA1LDI5ODAyLDMwMTk0LDMwOTA4LDMwOTUyLDM5MzQwLDM5NzY0LDQwNjM1LDIzNTE4LDI0MTQ5LDI4NDQ4LDMzMTgwLDMzNzA3LDM3MDAwLDE5OTc1LDIxMzI1LDIzMDgxLDI0MDE4LDI0Mzk4LDI0OTMwLDI1NDA1LDI2MjE3LDI2MzY0LDI4NDE1LDI4NDU5LDI4NzcxLDMwNjIyLDMzODM2LDM0MDY3LDM0ODc1LDM2NjI3LDM5MjM3LDM5OTk1LDIxNzg4LDI1MjczLDI2NDExLDI3ODE5LDMzNTQ1LDM1MTc4LDM4Nzc4LDIwMTI5LDIyOTE2LDI0NTM2LDI0NTM3LDI2Mzk1LDMyMTc4LDMyNTk2LDMzNDI2LDMzNTc5LDMzNzI1LDM2NjM4LDM3MDE3LDIyNDc1LDIyOTY5LDIzMTg2LDIzNTA0LDI2MTUxLDI2NTIyLDI2NzU3LDI3NTk5LDI5MDI4LDMyNjI5LDM2MDIzLDM2MDY3LDM2OTkzLDM5NzQ5LDMzMDMyLDM1OTc4LDM4NDc2LDM5NDg4LDQwNjEzLDIzMzkxLDI3NjY3LDI5NDY3LDMwNDUwLDMwNDMxLDMzODA0LDIwOTA2LDM1MjE5LDIwODEzLDIwODg1LDIxMTkzLDI2ODI1LDI3Nzk2LDMwNDY4LDMwNDk2LDMyMTkxLDMyMjM2LDM4NzU0LDQwNjI5LDI4MzU3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM0MDY1LDIwOTAxLDIxNTE3LDIxNjI5LDI2MTI2LDI2MjY5LDI2OTE5LDI4MzE5LDMwMzk5LDMwNjA5LDMzNTU5LDMzOTg2LDM0NzE5LDM3MjI1LDM3NTI4LDQwMTgwLDM0OTQ2LDIwMzk4LDIwODgyLDIxMjE1LDIyOTgyLDI0MTI1LDI0OTE3LDI1NzIwLDI1NzIxLDI2Mjg2LDI2NTc2LDI3MTY5LDI3NTk3LDI3NjExLDI5Mjc5LDI5MjgxLDI5NzYxLDMwNTIwLDMwNjgzLDMyNzkxLDMzNDY4LDMzNTQxLDM1NTg0LDM1NjI0LDM1OTgwLDI2NDA4LDI3NzkyLDI5Mjg3LDMwNDQ2LDMwNTY2LDMxMzAyLDQwMzYxLDI3NTE5LDI3Nzk0LDIyODE4LDI2NDA2LDMzOTQ1LDIxMzU5LDIyNjc1LDIyOTM3LDI0Mjg3LDI1NTUxLDI2MTY0LDI2NDgzLDI4MjE4LDI5NDgzLDMxNDQ3LDMzNDk1LDM3NjcyLDIxMjA5LDI0MDQzLDI1MDA2LDI1MDM1LDI1MDk4LDI1Mjg3LDI1NzcxLDI2MDgwLDI2OTY5LDI3NDk0LDI3NTk1LDI4OTYxLDI5Njg3LDMwMDQ1LDMyMzI2LDMzMzEwLDMzNTM4LDM0MTU0LDM1NDkxLDM2MDMxLDM4Njk1LDQwMjg5LDIyNjk2LDQwNjY0LDIwNDk3LDIxMDA2LDIxNTYzLDIxODM5LDI1OTkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3NzY2LDMyMDEwLDMyMDExLDMyODYyLDM0NDQyLDM4MjcyLDM4NjM5LDIxMjQ3LDI3Nzk3LDI5Mjg5LDIxNjE5LDIzMTk0LDIzNjE0LDIzODgzLDI0Mzk2LDI0NDk0LDI2NDEwLDI2ODA2LDI2OTc5LDI4MjIwLDI4MjI4LDMwNDczLDMxODU5LDMyNjU0LDM0MTgzLDM1NTk4LDM2ODU1LDM4NzUzLDQwNjkyLDIzNzM1LDI0NzU4LDI0ODQ1LDI1MDAzLDI1OTM1LDI2MTA3LDI2MTA4LDI3NjY1LDI3ODg3LDI5NTk5LDI5NjQxLDMyMjI1LDM4MjkyLDIzNDk0LDM0NTg4LDM1NjAwLDIxMDg1LDIxMzM4LDI1MjkzLDI1NjE1LDI1Nzc4LDI2NDIwLDI3MTkyLDI3ODUwLDI5NjMyLDI5ODU0LDMxNjM2LDMxODkzLDMyMjgzLDMzMTYyLDMzMzM0LDM0MTgwLDM2ODQzLDM4NjQ5LDM5MzYxLDIwMjc2LDIxMzIyLDIxNDUzLDIxNDY3LDI1MjkyLDI1NjQ0LDI1ODU2LDI2MDAxLDI3MDc1LDI3ODg2LDI4NTA0LDI5Njc3LDMwMDM2LDMwMjQyLDMwNDM2LDMwNDYwLDMwOTI4LDMwOTcxLDMxMDIwLDMyMDcwLDMzMzI0LDM0Nzg0LDM2ODIwLDM4OTMwLDM5MTUxLDIxMTg3LDI1MzAwLDI1NzY1LDI4MTk2LDI4NDk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwMzMyLDM2Mjk5LDM3Mjk3LDM3NDc0LDM5NjYyLDM5NzQ3LDIwNTE1LDIwNjIxLDIyMzQ2LDIyOTUyLDIzNTkyLDI0MTM1LDI0NDM5LDI1MTUxLDI1OTE4LDI2MDQxLDI2MDQ5LDI2MTIxLDI2NTA3LDI3MDM2LDI4MzU0LDMwOTE3LDMyMDMzLDMyOTM4LDMzMTUyLDMzMzIzLDMzNDU5LDMzOTUzLDM0NDQ0LDM1MzcwLDM1NjA3LDM3MDMwLDM4NDUwLDQwODQ4LDIwNDkzLDIwNDY3LDYzODQzLDIyNTIxLDI0NDcyLDI1MzA4LDI1NDkwLDI2NDc5LDI4MjI3LDI4OTUzLDMwNDAzLDMyOTcyLDMyOTg2LDM1MDYwLDM1MDYxLDM1MDk3LDM2MDY0LDM2NjQ5LDM3MTk3LDM4NTA2LDIwMjcxLDIwMzM2LDI0MDkxLDI2NTc1LDI2NjU4LDMwMzMzLDMwMzM0LDM5NzQ4LDI0MTYxLDI3MTQ2LDI5MDMzLDI5MTQwLDMwMDU4LDYzODQ0LDMyMzIxLDM0MTE1LDM0MjgxLDM5MTMyLDIwMjQwLDMxNTY3LDMyNjI0LDM4MzA5LDIwOTYxLDI0MDcwLDI2ODA1LDI3NzEwLDI3NzI2LDI3ODY3LDI5MzU5LDMxNjg0LDMzNTM5LDI3ODYxLDI5NzU0LDIwNzMxLDIxMTI4LDIyNzIxLDI1ODE2LDI3Mjg3LDI5ODYzLDMwMjk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMwODg3LDM0MzI3LDM4MzcwLDM4NzEzLDYzODQ1LDIxMzQyLDI0MzIxLDM1NzIyLDM2Nzc2LDM2NzgzLDM3MDAyLDIxMDI5LDMwNjI5LDQwMDA5LDQwNzEyLDE5OTkzLDIwNDgyLDIwODUzLDIzNjQzLDI0MTgzLDI2MTQyLDI2MTcwLDI2NTY0LDI2ODIxLDI4ODUxLDI5OTUzLDMwMTQ5LDMxMTc3LDMxNDUzLDM2NjQ3LDM5MjAwLDM5NDMyLDIwNDQ1LDIyNTYxLDIyNTc3LDIzNTQyLDI2MjIyLDI3NDkzLDI3OTIxLDI4MjgyLDI4NTQxLDI5NjY4LDI5OTk1LDMzNzY5LDM1MDM2LDM1MDkxLDM1Njc2LDM2NjI4LDIwMjM5LDIwNjkzLDIxMjY0LDIxMzQwLDIzNDQzLDI0NDg5LDI2MzgxLDMxMTE5LDMzMTQ1LDMzNTgzLDM0MDY4LDM1MDc5LDM1MjA2LDM2NjY1LDM2NjY3LDM5MzMzLDM5OTU0LDI2NDEyLDIwMDg2LDIwNDcyLDIyODU3LDIzNTUzLDIzNzkxLDIzNzkyLDI1NDQ3LDI2ODM0LDI4OTI1LDI5MDkwLDI5NzM5LDMyMjk5LDM0MDI4LDM0NTYyLDM2ODk4LDM3NTg2LDQwMTc5LDE5OTgxLDIwMTg0LDIwNDYzLDIwNjEzLDIxMDc4LDIxMTAzLDIxNTQyLDIxNjQ4LDIyNDk2LDIyODI3LDIzMTQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMzg2LDIzNDEzLDIzNTAwLDI0MjIwLDYzODQ2LDI1MjA2LDI1OTc1LDI2MDIzLDI4MDE0LDI4MzI1LDI5MjM4LDMxNTI2LDMxODA3LDMyNTY2LDMzMTA0LDMzMTA1LDMzMTc4LDMzMzQ0LDMzNDMzLDMzNzA1LDM1MzMxLDM2MDAwLDM2MDcwLDM2MDkxLDM2MjEyLDM2MjgyLDM3MDk2LDM3MzQwLDM4NDI4LDM4NDY4LDM5Mzg1LDQwMTY3LDIxMjcxLDIwOTk4LDIxNTQ1LDIyMTMyLDIyNzA3LDIyODY4LDIyODk0LDI0NTc1LDI0OTk2LDI1MTk4LDI2MTI4LDI3Nzc0LDI4OTU0LDMwNDA2LDMxODgxLDMxOTY2LDMyMDI3LDMzNDUyLDM2MDMzLDM4NjQwLDYzODQ3LDIwMzE1LDI0MzQzLDI0NDQ3LDI1MjgyLDIzODQ5LDI2Mzc5LDI2ODQyLDMwODQ0LDMyMzIzLDQwMzAwLDE5OTg5LDIwNjMzLDIxMjY5LDIxMjkwLDIxMzI5LDIyOTE1LDIzMTM4LDI0MTk5LDI0NzU0LDI0OTcwLDI1MTYxLDI1MjA5LDI2MDAwLDI2NTAzLDI3MDQ3LDI3NjA0LDI3NjA2LDI3NjA3LDI3NjA4LDI3ODMyLDYzODQ4LDI5NzQ5LDMwMjAyLDMwNzM4LDMwODY1LDMxMTg5LDMxMTkyLDMxODc1LDMyMjAzLDMyNzM3LDMyOTMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMzMDg2LDMzMjE4LDMzNzc4LDM0NTg2LDM1MDQ4LDM1NTEzLDM1NjkyLDM2MDI3LDM3MTQ1LDM4NzUwLDM5MTMxLDQwNzYzLDIyMTg4LDIzMzM4LDI0NDI4LDI1OTk2LDI3MzE1LDI3NTY3LDI3OTk2LDI4NjU3LDI4NjkzLDI5Mjc3LDI5NjEzLDM2MDA3LDM2MDUxLDM4OTcxLDI0OTc3LDI3NzAzLDMyODU2LDM5NDI1LDIwMDQ1LDIwMTA3LDIwMTIzLDIwMTgxLDIwMjgyLDIwMjg0LDIwMzUxLDIwNDQ3LDIwNzM1LDIxNDkwLDIxNDk2LDIxNzY2LDIxOTg3LDIyMjM1LDIyNzYzLDIyODgyLDIzMDU3LDIzNTMxLDIzNTQ2LDIzNTU2LDI0MDUxLDI0MTA3LDI0NDczLDI0NjA1LDI1NDQ4LDI2MDEyLDI2MDMxLDI2NjE0LDI2NjE5LDI2Nzk3LDI3NTE1LDI3ODAxLDI3ODYzLDI4MTk1LDI4NjgxLDI5NTA5LDMwNzIyLDMxMDM4LDMxMDQwLDMxMDcyLDMxMTY5LDMxNzIxLDMyMDIzLDMyMTE0LDMyOTAyLDMzMjkzLDMzNjc4LDM0MDAxLDM0NTAzLDM1MDM5LDM1NDA4LDM1NDIyLDM1NjEzLDM2MDYwLDM2MTk4LDM2NzgxLDM3MDM0LDM5MTY0LDM5MzkxLDQwNjA1LDIxMDY2LDYzODQ5LDI2Mzg4LDYzODUwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIwNjMyLDIxMDM0LDIzNjY1LDI1OTU1LDI3NzMzLDI5NjQyLDI5OTg3LDMwMTA5LDMxNjM5LDMzOTQ4LDM3MjQwLDM4NzA0LDIwMDg3LDI1NzQ2LDI3NTc4LDI5MDIyLDM0MjE3LDE5OTc3LDYzODUxLDI2NDQxLDI2ODYyLDI4MTgzLDMzNDM5LDM0MDcyLDM0OTIzLDI1NTkxLDI4NTQ1LDM3Mzk0LDM5MDg3LDE5OTc4LDIwNjYzLDIwNjg3LDIwNzY3LDIxODMwLDIxOTMwLDIyMDM5LDIzMzYwLDIzNTc3LDIzNzc2LDI0MTIwLDI0MjAyLDI0MjI0LDI0MjU4LDI0ODE5LDI2NzA1LDI3MjMzLDI4MjQ4LDI5MjQ1LDI5MjQ4LDI5Mzc2LDMwNDU2LDMxMDc3LDMxNjY1LDMyNzI0LDM1MDU5LDM1MzE2LDM1NDQzLDM1OTM3LDM2MDYyLDM4Njg0LDIyNjIyLDI5ODg1LDM2MDkzLDIxOTU5LDYzODUyLDMxMzI5LDMyMDM0LDMzMzk0LDI5Mjk4LDI5OTgzLDI5OTg5LDYzODUzLDMxNTEzLDIyNjYxLDIyNzc5LDIzOTk2LDI0MjA3LDI0MjQ2LDI0NDY0LDI0NjYxLDI1MjM0LDI1NDcxLDI1OTMzLDI2MjU3LDI2MzI5LDI2MzYwLDI2NjQ2LDI2ODY2LDI5MzEyLDI5NzkwLDMxNTk4LDMyMTEwLDMyMjE0LDMyNjI2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyOTk3LDMzMjk4LDM0MjIzLDM1MTk5LDM1NDc1LDM2ODkzLDM3NjA0LDQwNjUzLDQwNzM2LDIyODA1LDIyODkzLDI0MTA5LDI0Nzk2LDI2MTMyLDI2MjI3LDI2NTEyLDI3NzI4LDI4MTAxLDI4NTExLDMwNzA3LDMwODg5LDMzOTkwLDM3MzIzLDM3Njc1LDIwMTg1LDIwNjgyLDIwODA4LDIxODkyLDIzMzA3LDIzNDU5LDI1MTU5LDI1OTgyLDI2MDU5LDI4MjEwLDI5MDUzLDI5Njk3LDI5NzY0LDI5ODMxLDI5ODg3LDMwMzE2LDMxMTQ2LDMyMjE4LDMyMzQxLDMyNjgwLDMzMTQ2LDMzMjAzLDMzMzM3LDM0MzMwLDM0Nzk2LDM1NDQ1LDM2MzIzLDM2OTg0LDM3NTIxLDM3OTI1LDM5MjQ1LDM5ODU0LDIxMzUyLDIzNjMzLDI2OTY0LDI3ODQ0LDI3OTQ1LDI4MjAzLDMzMjkyLDM0MjAzLDM1MTMxLDM1MzczLDM1NDk4LDM4NjM0LDQwODA3LDIxMDg5LDI2Mjk3LDI3NTcwLDMyNDA2LDM0ODE0LDM2MTA5LDM4Mjc1LDM4NDkzLDI1ODg1LDI4MDQxLDI5MTY2LDYzODU0LDIyNDc4LDIyOTk1LDIzNDY4LDI0NjE1LDI0ODI2LDI1MTA0LDI2MTQzLDI2MjA3LDI5NDgxLDI5Njg5LDMwNDI3LDMwNDY1LDMxNTk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMyODU0LDMyODgyLDMzMTI1LDM1NDg4LDM3MjY2LDE5OTkwLDIxMjE4LDI3NTA2LDI3OTI3LDMxMjM3LDMxNTQ1LDMyMDQ4LDYzODU1LDM2MDE2LDIxNDg0LDIyMDYzLDIyNjA5LDIzNDc3LDIzNTY3LDIzNTY5LDI0MDM0LDI1MTUyLDI1NDc1LDI1NjIwLDI2MTU3LDI2ODAzLDI3ODM2LDI4MDQwLDI4MzM1LDI4NzAzLDI4ODM2LDI5MTM4LDI5OTkwLDMwMDk1LDMwMDk0LDMwMjMzLDMxNTA1LDMxNzEyLDMxNzg3LDMyMDMyLDMyMDU3LDM0MDkyLDM0MTU3LDM0MzExLDM1MzgwLDM2ODc3LDM2OTYxLDM3MDQ1LDM3NTU5LDM4OTAyLDM5NDc5LDIwNDM5LDIzNjYwLDI2NDYzLDI4MDQ5LDMxOTAzLDMyMzk2LDM1NjA2LDM2MTE4LDM2ODk1LDIzNDAzLDI0MDYxLDI1NjEzLDMzOTg0LDM2OTU2LDM5MTM3LDI5NTc1LDIzNDM1LDI0NzMwLDI2NDk0LDI4MTI2LDM1MzU5LDM1NDk0LDM2ODY1LDM4OTI0LDIxMDQ3LDYzODU2LDI4NzUzLDMwODYyLDM3NzgyLDM0OTI4LDM3MzM1LDIwNDYyLDIxNDYzLDIyMDEzLDIyMjM0LDIyNDAyLDIyNzgxLDIzMjM0LDIzNDMyLDIzNzIzLDIzNzQ0LDI0MTAxLDI0ODMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI1MTAxLDI1MTYzLDI1NDgwLDI1NjI4LDI1OTEwLDI1OTc2LDI3MTkzLDI3NTMwLDI3NzAwLDI3OTI5LDI4NDY1LDI5MTU5LDI5NDE3LDI5NTYwLDI5NzAzLDI5ODc0LDMwMjQ2LDMwNTYxLDMxMTY4LDMxMzE5LDMxNDY2LDMxOTI5LDMyMTQzLDMyMTcyLDMyMzUzLDMyNjcwLDMzMDY1LDMzNTg1LDMzOTM2LDM0MDEwLDM0MjgyLDM0OTY2LDM1NTA0LDM1NzI4LDM2NjY0LDM2OTMwLDM2OTk1LDM3MjI4LDM3NTI2LDM3NTYxLDM4NTM5LDM4NTY3LDM4NTY4LDM4NjE0LDM4NjU2LDM4OTIwLDM5MzE4LDM5NjM1LDM5NzA2LDIxNDYwLDIyNjU0LDIyODA5LDIzNDA4LDIzNDg3LDI4MTEzLDI4NTA2LDI5MDg3LDI5NzI5LDI5ODgxLDMyOTAxLDMzNzg5LDI0MDMzLDI0NDU1LDI0NDkwLDI0NjQyLDI2MDkyLDI2NjQyLDI2OTkxLDI3MjE5LDI3NTI5LDI3OTU3LDI4MTQ3LDI5NjY3LDMwNDYyLDMwNjM2LDMxNTY1LDMyMDIwLDMzMDU5LDMzMzA4LDMzNjAwLDM0MDM2LDM0MTQ3LDM1NDI2LDM1NTI0LDM3MjU1LDM3NjYyLDM4OTE4LDM5MzQ4LDI1MTAwLDM0ODk5LDM2ODQ4LDM3NDc3LDIzODE1LDIzODQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzOTEzLDI5NzkxLDMzMTgxLDM0NjY0LDI4NjI5LDI1MzQyLDMyNzIyLDM1MTI2LDM1MTg2LDE5OTk4LDIwMDU2LDIwNzExLDIxMjEzLDIxMzE5LDI1MjE1LDI2MTE5LDMyMzYxLDM0ODIxLDM4NDk0LDIwMzY1LDIxMjczLDIyMDcwLDIyOTg3LDIzMjA0LDIzNjA4LDIzNjMwLDIzNjI5LDI0MDY2LDI0MzM3LDI0NjQzLDI2MDQ1LDI2MTU5LDI2MTc4LDI2NTU4LDI2NjEyLDI5NDY4LDMwNjkwLDMxMDM0LDMyNzA5LDMzOTQwLDMzOTk3LDM1MjIyLDM1NDMwLDM1NDMzLDM1NTUzLDM1OTI1LDM1OTYyLDIyNTE2LDIzNTA4LDI0MzM1LDI0Njg3LDI1MzI1LDI2ODkzLDI3NTQyLDI4MjUyLDI5MDYwLDMxNjk4LDM0NjQ1LDM1NjcyLDM2NjA2LDM5MTM1LDM5MTY2LDIwMjgwLDIwMzUzLDIwNDQ5LDIxNjI3LDIzMDcyLDIzNDgwLDI0ODkyLDI2MDMyLDI2MjE2LDI5MTgwLDMwMDAzLDMxMDcwLDMyMDUxLDMzMTAyLDMzMjUxLDMzNjg4LDM0MjE4LDM0MjU0LDM0NTYzLDM1MzM4LDM2NTIzLDM2NzYzLDYzODU3LDM2ODA1LDIyODMzLDIzNDYwLDIzNTI2LDI0NzEzLDIzNTI5LDIzNTYzLDI0NTE1LDI3Nzc3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODU4LDI4MTQ1LDI4NjgzLDI5OTc4LDMzNDU1LDM1NTc0LDIwMTYwLDIxMzEzLDYzODU5LDM4NjE3LDI3NjYzLDIwMTI2LDIwNDIwLDIwODE4LDIxODU0LDIzMDc3LDIzNzg0LDI1MTA1LDI5MjczLDMzNDY5LDMzNzA2LDM0NTU4LDM0OTA1LDM1MzU3LDM4NDYzLDM4NTk3LDM5MTg3LDQwMjAxLDQwMjg1LDIyNTM4LDIzNzMxLDIzOTk3LDI0MTMyLDI0ODAxLDI0ODUzLDI1NTY5LDI3MTM4LDI4MTk3LDM3MTIyLDM3NzE2LDM4OTkwLDM5OTUyLDQwODIzLDIzNDMzLDIzNzM2LDI1MzUzLDI2MTkxLDI2Njk2LDMwNTI0LDM4NTkzLDM4Nzk3LDM4OTk2LDM5ODM5LDI2MDE3LDM1NTg1LDM2NTU1LDM4MzMyLDIxODEzLDIzNzIxLDI0MDIyLDI0MjQ1LDI2MjYzLDMwMjg0LDMzNzgwLDM4MzQzLDIyNzM5LDI1Mjc2LDI5MzkwLDQwMjMyLDIwMjA4LDIyODMwLDI0NTkxLDI2MTcxLDI3NTIzLDMxMjA3LDQwMjMwLDIxMzk1LDIxNjk2LDIyNDY3LDIzODMwLDI0ODU5LDI2MzI2LDI4MDc5LDMwODYxLDMzNDA2LDM4NTUyLDM4NzI0LDIxMzgwLDI1MjEyLDI1NDk0LDI4MDgyLDMyMjY2LDMzMDk5LDM4OTg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI3Mzg3LDMyNTg4LDQwMzY3LDQwNDc0LDIwMDYzLDIwNTM5LDIwOTE4LDIyODEyLDI0ODI1LDI1NTkwLDI2OTI4LDI5MjQyLDMyODIyLDYzODYwLDM3MzI2LDI0MzY5LDYzODYxLDYzODYyLDMyMDA0LDMzNTA5LDMzOTAzLDMzOTc5LDM0Mjc3LDM2NDkzLDYzODYzLDIwMzM1LDYzODY0LDYzODY1LDIyNzU2LDIzMzYzLDI0NjY1LDI1NTYyLDI1ODgwLDI1OTY1LDI2MjY0LDYzODY2LDI2OTU0LDI3MTcxLDI3OTE1LDI4NjczLDI5MDM2LDMwMTYyLDMwMjIxLDMxMTU1LDMxMzQ0LDYzODY3LDMyNjUwLDYzODY4LDM1MTQwLDYzODY5LDM1NzMxLDM3MzEyLDM4NTI1LDYzODcwLDM5MTc4LDIyMjc2LDI0NDgxLDI2MDQ0LDI4NDE3LDMwMjA4LDMxMTQyLDM1NDg2LDM5MzQxLDM5NzcwLDQwODEyLDIwNzQwLDI1MDE0LDI1MjMzLDI3Mjc3LDMzMjIyLDIwNTQ3LDIyNTc2LDI0NDIyLDI4OTM3LDM1MzI4LDM1NTc4LDIzNDIwLDM0MzI2LDIwNDc0LDIwNzk2LDIyMTk2LDIyODUyLDI1NTEzLDI4MTUzLDIzOTc4LDI2OTg5LDIwODcwLDIwMTA0LDIwMzEzLDYzODcxLDYzODcyLDYzODczLDIyOTE0LDYzODc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzODc1LDI3NDg3LDI3NzQxLDYzODc2LDI5ODc3LDMwOTk4LDYzODc3LDMzMjg3LDMzMzQ5LDMzNTkzLDM2NjcxLDM2NzAxLDYzODc4LDM5MTkyLDYzODc5LDYzODgwLDYzODgxLDIwMTM0LDYzODgyLDIyNDk1LDI0NDQxLDI2MTMxLDYzODgzLDYzODg0LDMwMTIzLDMyMzc3LDM1Njk1LDYzODg1LDM2ODcwLDM5NTE1LDIyMTgxLDIyNTY3LDIzMDMyLDIzMDcxLDIzNDc2LDYzODg2LDI0MzEwLDYzODg3LDYzODg4LDI1NDI0LDI1NDAzLDYzODg5LDI2OTQxLDI3NzgzLDI3ODM5LDI4MDQ2LDI4MDUxLDI4MTQ5LDI4NDM2LDYzODkwLDI4ODk1LDI4OTgyLDI5MDE3LDYzODkxLDI5MTIzLDI5MTQxLDYzODkyLDMwNzk5LDMwODMxLDYzODkzLDMxNjA1LDMyMjI3LDYzODk0LDMyMzAzLDYzODk1LDM0ODkzLDM2NTc1LDYzODk2LDYzODk3LDYzODk4LDM3NDY3LDYzODk5LDQwMTgyLDYzOTAwLDYzOTAxLDYzOTAyLDI0NzA5LDI4MDM3LDYzOTAzLDI5MTA1LDYzOTA0LDYzOTA1LDM4MzIxLDIxNDIxLDYzOTA2LDYzOTA3LDYzOTA4LDI2NTc5LDYzOTA5LDI4ODE0LDI4OTc2LDI5NzQ0LDMzMzk4LDMzNDkwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTEwLDM4MzMxLDM5NjUzLDQwNTczLDI2MzA4LDYzOTExLDI5MTIxLDMzODY1LDYzOTEyLDYzOTEzLDIyNjAzLDYzOTE0LDYzOTE1LDIzOTkyLDI0NDMzLDYzOTE2LDI2MTQ0LDI2MjU0LDI3MDAxLDI3MDU0LDI3NzA0LDI3ODkxLDI4MjE0LDI4NDgxLDI4NjM0LDI4Njk5LDI4NzE5LDI5MDA4LDI5MTUxLDI5NTUyLDYzOTE3LDI5Nzg3LDYzOTE4LDI5OTA4LDMwNDA4LDMxMzEwLDMyNDAzLDYzOTE5LDYzOTIwLDMzNTIxLDM1NDI0LDM2ODE0LDYzOTIxLDM3NzA0LDYzOTIyLDM4NjgxLDYzOTIzLDYzOTI0LDIwMDM0LDIwNTIyLDYzOTI1LDIxMDAwLDIxNDczLDI2MzU1LDI3NzU3LDI4NjE4LDI5NDUwLDMwNTkxLDMxMzMwLDMzNDU0LDM0MjY5LDM0MzA2LDYzOTI2LDM1MDI4LDM1NDI3LDM1NzA5LDM1OTQ3LDYzOTI3LDM3NTU1LDYzOTI4LDM4Njc1LDM4OTI4LDIwMTE2LDIwMjM3LDIwNDI1LDIwNjU4LDIxMzIwLDIxNTY2LDIxNTU1LDIxOTc4LDIyNjI2LDIyNzE0LDIyODg3LDIzMDY3LDIzNTI0LDI0NzM1LDYzOTI5LDI1MDM0LDI1OTQyLDI2MTExLDI2MjEyLDI2NzkxLDI3NzM4LDI4NTk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4ODc5LDI5MTAwLDI5NTIyLDMxNjEzLDM0NTY4LDM1NDkyLDM5OTg2LDQwNzExLDIzNjI3LDI3Nzc5LDI5NTA4LDI5NTc3LDM3NDM0LDI4MzMxLDI5Nzk3LDMwMjM5LDMxMzM3LDMyMjc3LDM0MzE0LDIwODAwLDIyNzI1LDI1NzkzLDI5OTM0LDI5OTczLDMwMzIwLDMyNzA1LDM3MDEzLDM4NjA1LDM5MjUyLDI4MTk4LDI5OTI2LDMxNDAxLDMxNDAyLDMzMjUzLDM0NTIxLDM0NjgwLDM1MzU1LDIzMTEzLDIzNDM2LDIzNDUxLDI2Nzg1LDI2ODgwLDI4MDAzLDI5NjA5LDI5NzE1LDI5NzQwLDMwODcxLDMyMjMzLDMyNzQ3LDMzMDQ4LDMzMTA5LDMzNjk0LDM1OTE2LDM4NDQ2LDM4OTI5LDI2MzUyLDI0NDQ4LDI2MTA2LDI2NTA1LDI3NzU0LDI5NTc5LDIwNTI1LDIzMDQzLDI3NDk4LDMwNzAyLDIyODA2LDIzOTE2LDI0MDEzLDI5NDc3LDMwMDMxLDYzOTMwLDYzOTMxLDIwNzA5LDIwOTg1LDIyNTc1LDIyODI5LDIyOTM0LDIzMDAyLDIzNTI1LDYzOTMyLDYzOTMzLDIzOTcwLDI1MzAzLDI1NjIyLDI1NzQ3LDI1ODU0LDYzOTM0LDI2MzMyLDYzOTM1LDI3MjA4LDYzOTM2LDI5MTgzLDI5Nzk2LDYzOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMzY4LDMxNDA3LDMyMzI3LDMyMzUwLDMyNzY4LDMzMTM2LDYzOTM4LDM0Nzk5LDM1MjAxLDM1NjE2LDM2OTUzLDYzOTM5LDM2OTkyLDM5MjUwLDI0OTU4LDI3NDQyLDI4MDIwLDMyMjg3LDM1MTA5LDM2Nzg1LDIwNDMzLDIwNjUzLDIwODg3LDIxMTkxLDIyNDcxLDIyNjY1LDIzNDgxLDI0MjQ4LDI0ODk4LDI3MDI5LDI4MDQ0LDI4MjYzLDI4MzQyLDI5MDc2LDI5Nzk0LDI5OTkyLDI5OTk2LDMyODgzLDMzNTkyLDMzOTkzLDM2MzYyLDM3NzgwLDM3ODU0LDYzOTQwLDIwMTEwLDIwMzA1LDIwNTk4LDIwNzc4LDIxNDQ4LDIxNDUxLDIxNDkxLDIzNDMxLDIzNTA3LDIzNTg4LDI0ODU4LDI0OTYyLDI2MTAwLDI5Mjc1LDI5NTkxLDI5NzYwLDMwNDAyLDMxMDU2LDMxMTIxLDMxMTYxLDMyMDA2LDMyNzAxLDMzNDE5LDM0MjYxLDM0Mzk4LDM2ODAyLDM2OTM1LDM3MTA5LDM3MzU0LDM4NTMzLDM4NjMyLDM4NjMzLDIxMjA2LDI0NDIzLDI2MDkzLDI2MTYxLDI2NjcxLDI5MDIwLDMxMjg2LDM3MDU3LDM4OTIyLDIwMTEzLDYzOTQxLDI3MjE4LDI3NTUwLDI4NTYwLDI5MDY1LDMyNzkyLDMzNDY0LDM0MTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2OTM5LDM4NTQ5LDM4NjQyLDM4OTA3LDM0MDc0LDM5NzI5LDIwMTEyLDI5MDY2LDM4NTk2LDIwODAzLDIxNDA3LDIxNzI5LDIyMjkxLDIyMjkwLDIyNDM1LDIzMTk1LDIzMjM2LDIzNDkxLDI0NjE2LDI0ODk1LDI1NTg4LDI3NzgxLDI3OTYxLDI4Mjc0LDI4MzA0LDI5MjMyLDI5NTAzLDI5NzgzLDMzNDg5LDM0OTQ1LDM2Njc3LDM2OTYwLDYzOTQyLDM4NDk4LDM5MDAwLDQwMjE5LDI2Mzc2LDM2MjM0LDM3NDcwLDIwMzAxLDIwNTUzLDIwNzAyLDIxMzYxLDIyMjg1LDIyOTk2LDIzMDQxLDIzNTYxLDI0OTQ0LDI2MjU2LDI4MjA1LDI5MjM0LDI5NzcxLDMyMjM5LDMyOTYzLDMzODA2LDMzODk0LDM0MTExLDM0NjU1LDM0OTA3LDM1MDk2LDM1NTg2LDM2OTQ5LDM4ODU5LDM5NzU5LDIwMDgzLDIwMzY5LDIwNzU0LDIwODQyLDYzOTQzLDIxODA3LDIxOTI5LDIzNDE4LDIzNDYxLDI0MTg4LDI0MTg5LDI0MjU0LDI0NzM2LDI0Nzk5LDI0ODQwLDI0ODQxLDI1NTQwLDI1OTEyLDI2Mzc3LDYzOTQ0LDI2NTgwLDI2NTg2LDYzOTQ1LDI2OTc3LDI2OTc4LDI3ODMzLDI3OTQzLDYzOTQ2LDI4MjE2LDYzOTQ3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI4NjQxLDI5NDk0LDI5NDk1LDYzOTQ4LDI5Nzg4LDMwMDAxLDYzOTQ5LDMwMjkwLDYzOTUwLDYzOTUxLDMyMTczLDMzMjc4LDMzODQ4LDM1MDI5LDM1NDgwLDM1NTQ3LDM1NTY1LDM2NDAwLDM2NDE4LDM2OTM4LDM2OTI2LDM2OTg2LDM3MTkzLDM3MzIxLDM3NzQyLDYzOTUyLDYzOTUzLDIyNTM3LDYzOTU0LDI3NjAzLDMyOTA1LDMyOTQ2LDYzOTU1LDYzOTU2LDIwODAxLDIyODkxLDIzNjA5LDYzOTU3LDYzOTU4LDI4NTE2LDI5NjA3LDMyOTk2LDM2MTAzLDYzOTU5LDM3Mzk5LDM4Mjg3LDYzOTYwLDYzOTYxLDYzOTYyLDYzOTYzLDMyODk1LDI1MTAyLDI4NzAwLDMyMTA0LDM0NzAxLDYzOTY0LDIyNDMyLDI0NjgxLDI0OTAzLDI3NTc1LDM1NTE4LDM3NTA0LDM4NTc3LDIwMDU3LDIxNTM1LDI4MTM5LDM0MDkzLDM4NTEyLDM4ODk5LDM5MTUwLDI1NTU4LDI3ODc1LDM3MDA5LDIwOTU3LDI1MDMzLDMzMjEwLDQwNDQxLDIwMzgxLDIwNTA2LDIwNzM2LDIzNDUyLDI0ODQ3LDI1MDg3LDI1ODM2LDI2ODg1LDI3NTg5LDMwMDk3LDMwNjkxLDMyNjgxLDMzMzgwLDM0MTkxLDM0ODExLDM0OTE1LDM1NTE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM1Njk2LDM3MjkxLDIwMTA4LDIwMTk3LDIwMjM0LDYzOTY1LDYzOTY2LDIyODM5LDIzMDE2LDYzOTY3LDI0MDUwLDI0MzQ3LDI0NDExLDI0NjA5LDYzOTY4LDYzOTY5LDYzOTcwLDYzOTcxLDI5MjQ2LDI5NjY5LDYzOTcyLDMwMDY0LDMwMTU3LDYzOTczLDMxMjI3LDYzOTc0LDMyNzgwLDMyODE5LDMyOTAwLDMzNTA1LDMzNjE3LDYzOTc1LDYzOTc2LDM2MDI5LDM2MDE5LDM2OTk5LDYzOTc3LDYzOTc4LDM5MTU2LDM5MTgwLDYzOTc5LDYzOTgwLDI4NzI3LDMwNDEwLDMyNzE0LDMyNzE2LDMyNzY0LDM1NjEwLDIwMTU0LDIwMTYxLDIwOTk1LDIxMzYwLDYzOTgxLDIxNjkzLDIyMjQwLDIzMDM1LDIzNDkzLDI0MzQxLDI0NTI1LDI4MjcwLDYzOTgyLDYzOTgzLDMyMTA2LDMzNTg5LDYzOTg0LDM0NDUxLDM1NDY5LDYzOTg1LDM4NzY1LDM4Nzc1LDYzOTg2LDYzOTg3LDE5OTY4LDIwMzE0LDIwMzUwLDIyNzc3LDI2MDg1LDI4MzIyLDM2OTIwLDM3ODA4LDM5MzUzLDIwMjE5LDIyNzY0LDIyOTIyLDIzMDAxLDI0NjQxLDYzOTg4LDYzOTg5LDMxMjUyLDYzOTkwLDMzNjE1LDM2MDM1LDIwODM3LDIxMzE2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDYzOTkxLDYzOTkyLDYzOTkzLDIwMTczLDIxMDk3LDIzMzgxLDMzNDcxLDIwMTgwLDIxMDUwLDIxNjcyLDIyOTg1LDIzMDM5LDIzMzc2LDIzMzgzLDIzMzg4LDI0Njc1LDI0OTA0LDI4MzYzLDI4ODI1LDI5MDM4LDI5NTc0LDI5OTQzLDMwMTMzLDMwOTEzLDMyMDQzLDMyNzczLDMzMjU4LDMzNTc2LDM0MDcxLDM0MjQ5LDM1NTY2LDM2MDM5LDM4NjA0LDIwMzE2LDIxMjQyLDIyMjA0LDI2MDI3LDI2MTUyLDI4Nzk2LDI4ODU2LDI5MjM3LDMyMTg5LDMzNDIxLDM3MTk2LDM4NTkyLDQwMzA2LDIzNDA5LDI2ODU1LDI3NTQ0LDI4NTM4LDMwNDMwLDIzNjk3LDI2MjgzLDI4NTA3LDMxNjY4LDMxNzg2LDM0ODcwLDM4NjIwLDE5OTc2LDIwMTgzLDIxMjgwLDIyNTgwLDIyNzE1LDIyNzY3LDIyODkyLDIzNTU5LDI0MTE1LDI0MTk2LDI0MzczLDI1NDg0LDI2MjkwLDI2NDU0LDI3MTY3LDI3Mjk5LDI3NDA0LDI4NDc5LDI5MjU0LDYzOTk0LDI5NTIwLDI5ODM1LDMxNDU2LDMxOTExLDMzMTQ0LDMzMjQ3LDMzMjU1LDMzNjc0LDMzOTAwLDM0MDgzLDM0MTk2LDM0MjU1LDM1MDM3LDM2MTE1LDM3MjkyLDM4MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NTU2LDIwODc3LDIxNzA1LDIyMzEyLDIzNDcyLDI1MTY1LDI2NDQ4LDI2Njg1LDI2NzcxLDI4MjIxLDI4MzcxLDI4Nzk3LDMyMjg5LDM1MDA5LDM2MDAxLDM2NjE3LDQwNzc5LDQwNzgyLDI5MjI5LDMxNjMxLDM1NTMzLDM3NjU4LDIwMjk1LDIwMzAyLDIwNzg2LDIxNjMyLDIyOTkyLDI0MjEzLDI1MjY5LDI2NDg1LDI2OTkwLDI3MTU5LDI3ODIyLDI4MTg2LDI5NDAxLDI5NDgyLDMwMTQxLDMxNjcyLDMyMDUzLDMzNTExLDMzNzg1LDMzODc5LDM0Mjk1LDM1NDE5LDM2MDE1LDM2NDg3LDM2ODg5LDM3MDQ4LDM4NjA2LDQwNzk5LDIxMjE5LDIxNTE0LDIzMjY1LDIzNDkwLDI1Njg4LDI1OTczLDI4NDA0LDI5MzgwLDYzOTk1LDMwMzQwLDMxMzA5LDMxNTE1LDMxODIxLDMyMzE4LDMyNzM1LDMzNjU5LDM1NjI3LDM2MDQyLDM2MTk2LDM2MzIxLDM2NDQ3LDM2ODQyLDM2ODU3LDM2OTY5LDM3ODQxLDIwMjkxLDIwMzQ2LDIwNjU5LDIwODQwLDIwODU2LDIxMDY5LDIxMDk4LDIyNjI1LDIyNjUyLDIyODgwLDIzNTYwLDIzNjM3LDI0MjgzLDI0NzMxLDI1MTM2LDI2NjQzLDI3NTgzLDI3NjU2LDI4NTkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MDA2LDI5NzI4LDMwMDAwLDMwMDA4LDMwMDMzLDMwMzIyLDMxNTY0LDMxNjI3LDMxNjYxLDMxNjg2LDMyMzk5LDM1NDM4LDM2NjcwLDM2NjgxLDM3NDM5LDM3NTIzLDM3NjY2LDM3OTMxLDM4NjUxLDM5MDAyLDM5MDE5LDM5MTk4LDIwOTk5LDI1MTMwLDI1MjQwLDI3OTkzLDMwMzA4LDMxNDM0LDMxNjgwLDMyMTE4LDIxMzQ0LDIzNzQyLDI0MjE1LDI4NDcyLDI4ODU3LDMxODk2LDM4NjczLDM5ODIyLDQwNjcwLDI1NTA5LDI1NzIyLDM0Njc4LDE5OTY5LDIwMTE3LDIwMTQxLDIwNTcyLDIwNTk3LDIxNTc2LDIyOTc5LDIzNDUwLDI0MTI4LDI0MjM3LDI0MzExLDI0NDQ5LDI0NzczLDI1NDAyLDI1OTE5LDI1OTcyLDI2MDYwLDI2MjMwLDI2MjMyLDI2NjIyLDI2OTg0LDI3MjczLDI3NDkxLDI3NzEyLDI4MDk2LDI4MTM2LDI4MTkxLDI4MjU0LDI4NzAyLDI4ODMzLDI5NTgyLDI5NjkzLDMwMDEwLDMwNTU1LDMwODU1LDMxMTE4LDMxMjQzLDMxMzU3LDMxOTM0LDMyMTQyLDMzMzUxLDM1MzMwLDM1NTYyLDM1OTk4LDM3MTY1LDM3MTk0LDM3MzM2LDM3NDc4LDM3NTgwLDM3NjY0LDM4NjYyLDM4NzQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NzQ4LDM4OTE0LDQwNzE4LDIxMDQ2LDIxMTM3LDIxODg0LDIyNTY0LDI0MDkzLDI0MzUxLDI0NzE2LDI1NTUyLDI2Nzk5LDI4NjM5LDMxMDg1LDMxNTMyLDMzMjI5LDM0MjM0LDM1MDY5LDM1NTc2LDM2NDIwLDM3MjYxLDM4NTAwLDM4NTU1LDM4NzE3LDM4OTg4LDQwNzc4LDIwNDMwLDIwODA2LDIwOTM5LDIxMTYxLDIyMDY2LDI0MzQwLDI0NDI3LDI1NTE0LDI1ODA1LDI2MDg5LDI2MTc3LDI2MzYyLDI2MzYxLDI2Mzk3LDI2NzgxLDI2ODM5LDI3MTMzLDI4NDM3LDI4NTI2LDI5MDMxLDI5MTU3LDI5MjI2LDI5ODY2LDMwNTIyLDMxMDYyLDMxMDY2LDMxMTk5LDMxMjY0LDMxMzgxLDMxODk1LDMxOTY3LDMyMDY4LDMyMzY4LDMyOTAzLDM0Mjk5LDM0NDY4LDM1NDEyLDM1NTE5LDM2MjQ5LDM2NDgxLDM2ODk2LDM2OTczLDM3MzQ3LDM4NDU5LDM4NjEzLDQwMTY1LDI2MDYzLDMxNzUxLDM2Mjc1LDM3ODI3LDIzMzg0LDIzNTYyLDIxMzMwLDI1MzA1LDI5NDY5LDIwNTE5LDIzNDQ3LDI0NDc4LDI0NzUyLDI0OTM5LDI2ODM3LDI4MTIxLDI5NzQyLDMxMjc4LDMyMDY2LDMyMTU2LDMyMzA1LDMzMTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2Mzk0LDM2NDA1LDM3NzU4LDM3OTEyLDIwMzA0LDIyMzUyLDI0MDM4LDI0MjMxLDI1Mzg3LDMyNjE4LDIwMDI3LDIwMzAzLDIwMzY3LDIwNTcwLDIzMDA1LDMyOTY0LDIxNjEwLDIxNjA4LDIyMDE0LDIyODYzLDIzNDQ5LDI0MDMwLDI0MjgyLDI2MjA1LDI2NDE3LDI2NjA5LDI2NjY2LDI3ODgwLDI3OTU0LDI4MjM0LDI4NTU3LDI4ODU1LDI5NjY0LDMwMDg3LDMxODIwLDMyMDAyLDMyMDQ0LDMyMTYyLDMzMzExLDM0NTIzLDM1Mzg3LDM1NDYxLDM2MjA4LDM2NDkwLDM2NjU5LDM2OTEzLDM3MTk4LDM3MjAyLDM3OTU2LDM5Mzc2LDMxNDgxLDMxOTA5LDIwNDI2LDIwNzM3LDIwOTM0LDIyNDcyLDIzNTM1LDIzODAzLDI2MjAxLDI3MTk3LDI3OTk0LDI4MzEwLDI4NjUyLDI4OTQwLDMwMDYzLDMxNDU5LDM0ODUwLDM2ODk3LDM2OTgxLDM4NjAzLDM5NDIzLDMzNTM3LDIwMDEzLDIwMjEwLDM0ODg2LDM3MzI1LDIxMzczLDI3MzU1LDI2OTg3LDI3NzEzLDMzOTE0LDIyNjg2LDI0OTc0LDI2MzY2LDI1MzI3LDI4ODkzLDI5OTY5LDMwMTUxLDMyMzM4LDMzOTc2LDM1NjU3LDM2MTA0LDIwMDQzLDIxNDgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjc1LDIyMzIwLDIyMzM2LDI0NTM1LDI1MzQ1LDI1MzUxLDI1NzExLDI1OTAzLDI2MDg4LDI2MjM0LDI2NTI1LDI2NTQ3LDI3NDkwLDI3NzQ0LDI3ODAyLDI4NDYwLDMwNjkzLDMwNzU3LDMxMDQ5LDMxMDYzLDMyMDI1LDMyOTMwLDMzMDI2LDMzMjY3LDMzNDM3LDMzNDYzLDM0NTg0LDM1NDY4LDYzOTk2LDM2MTAwLDM2Mjg2LDM2OTc4LDMwNDUyLDMxMjU3LDMxMjg3LDMyMzQwLDMyODg3LDIxNzY3LDIxOTcyLDIyNjQ1LDI1MzkxLDI1NjM0LDI2MTg1LDI2MTg3LDI2NzMzLDI3MDM1LDI3NTI0LDI3OTQxLDI4MzM3LDI5NjQ1LDI5ODAwLDI5ODU3LDMwMDQzLDMwMTM3LDMwNDMzLDMwNDk0LDMwNjAzLDMxMjA2LDMyMjY1LDMyMjg1LDMzMjc1LDM0MDk1LDM0OTY3LDM1Mzg2LDM2MDQ5LDM2NTg3LDM2Nzg0LDM2OTE0LDM3ODA1LDM4NDk5LDM4NTE1LDM4NjYzLDIwMzU2LDIxNDg5LDIzMDE4LDIzMjQxLDI0MDg5LDI2NzAyLDI5ODk0LDMwMTQyLDMxMjA5LDMxMzc4LDMzMTg3LDM0NTQxLDM2MDc0LDM2MzAwLDM2ODQ1LDI2MDE1LDI2Mzg5LDYzOTk3LDIyNTE5LDI4NTAzLDMyMjIxLDM2NjU1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3ODc4LDM4NTk4LDI0NTAxLDI1MDc0LDI4NTQ4LDE5OTg4LDIwMzc2LDIwNTExLDIxNDQ5LDIxOTgzLDIzOTE5LDI0MDQ2LDI3NDI1LDI3NDkyLDMwOTIzLDMxNjQyLDYzOTk4LDM2NDI1LDM2NTU0LDM2OTc0LDI1NDE3LDI1NjYyLDMwNTI4LDMxMzY0LDM3Njc5LDM4MDE1LDQwODEwLDI1Nzc2LDI4NTkxLDI5MTU4LDI5ODY0LDI5OTE0LDMxNDI4LDMxNzYyLDMyMzg2LDMxOTIyLDMyNDA4LDM1NzM4LDM2MTA2LDM4MDEzLDM5MTg0LDM5MjQ0LDIxMDQ5LDIzNTE5LDI1ODMwLDI2NDEzLDMyMDQ2LDIwNzE3LDIxNDQzLDIyNjQ5LDI0OTIwLDI0OTIxLDI1MDgyLDI2MDI4LDMxNDQ5LDM1NzMwLDM1NzM0LDIwNDg5LDIwNTEzLDIxMTA5LDIxODA5LDIzMTAwLDI0Mjg4LDI0NDMyLDI0ODg0LDI1OTUwLDI2MTI0LDI2MTY2LDI2Mjc0LDI3MDg1LDI4MzU2LDI4NDY2LDI5NDYyLDMwMjQxLDMxMzc5LDMzMDgxLDMzMzY5LDMzNzUwLDMzOTgwLDIwNjYxLDIyNTEyLDIzNDg4LDIzNTI4LDI0NDI1LDI1NTA1LDMwNzU4LDMyMTgxLDMzNzU2LDM0MDgxLDM3MzE5LDM3MzY1LDIwODc0LDI2NjEzLDMxNTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MDEyLDIwOTMyLDIyOTcxLDI0NzY1LDM0Mzg5LDIwNTA4LDYzOTk5LDIxMDc2LDIzNjEwLDI0OTU3LDI1MTE0LDI1Mjk5LDI1ODQyLDI2MDIxLDI4MzY0LDMwMjQwLDMzMDM0LDM2NDQ4LDM4NDk1LDM4NTg3LDIwMTkxLDIxMzE1LDIxOTEyLDIyODI1LDI0MDI5LDI1Nzk3LDI3ODQ5LDI4MTU0LDI5NTg4LDMxMzU5LDMzMzA3LDM0MjE0LDM2MDY4LDM2MzY4LDM2OTgzLDM3MzUxLDM4MzY5LDM4NDMzLDM4ODU0LDIwOTg0LDIxNzQ2LDIxODk0LDI0NTA1LDI1NzY0LDI4NTUyLDMyMTgwLDM2NjM5LDM2Njg1LDM3OTQxLDIwNjgxLDIzNTc0LDI3ODM4LDI4MTU1LDI5OTc5LDMwNjUxLDMxODA1LDMxODQ0LDM1NDQ5LDM1NTIyLDIyNTU4LDIyOTc0LDI0MDg2LDI1NDYzLDI5MjY2LDMwMDkwLDMwNTcxLDM1NTQ4LDM2MDI4LDM2NjI2LDI0MzA3LDI2MjI4LDI4MTUyLDMyODkzLDMzNzI5LDM1NTMxLDM4NzM3LDM5ODk0LDY0MDAwLDIxMDU5LDI2MzY3LDI4MDUzLDI4Mzk5LDMyMjI0LDM1NTU4LDM2OTEwLDM2OTU4LDM5NjM2LDIxMDIxLDIxMTE5LDIxNzM2LDI0OTgwLDI1MjIwLDI1MzA3LDI2Nzg2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI2ODk4LDI2OTcwLDI3MTg5LDI4ODE4LDI4OTY2LDMwODEzLDMwOTc3LDMwOTkwLDMxMTg2LDMxMjQ1LDMyOTE4LDMzNDAwLDMzNDkzLDMzNjA5LDM0MTIxLDM1OTcwLDM2MjI5LDM3MjE4LDM3MjU5LDM3Mjk0LDIwNDE5LDIyMjI1LDI5MTY1LDMwNjc5LDM0NTYwLDM1MzIwLDIzNTQ0LDI0NTM0LDI2NDQ5LDM3MDMyLDIxNDc0LDIyNjE4LDIzNTQxLDI0NzQwLDI0OTYxLDI1Njk2LDMyMzE3LDMyODgwLDM0MDg1LDM3NTA3LDI1Nzc0LDIwNjUyLDIzODI4LDI2MzY4LDIyNjg0LDI1Mjc3LDI1NTEyLDI2ODk0LDI3MDAwLDI3MTY2LDI4MjY3LDMwMzk0LDMxMTc5LDMzNDY3LDMzODMzLDM1NTM1LDM2MjY0LDM2ODYxLDM3MTM4LDM3MTk1LDM3Mjc2LDM3NjQ4LDM3NjU2LDM3Nzg2LDM4NjE5LDM5NDc4LDM5OTQ5LDE5OTg1LDMwMDQ0LDMxMDY5LDMxNDgyLDMxNTY5LDMxNjg5LDMyMzAyLDMzOTg4LDM2NDQxLDM2NDY4LDM2NjAwLDM2ODgwLDI2MTQ5LDI2OTQzLDI5NzYzLDIwOTg2LDI2NDE0LDQwNjY4LDIwODA1LDI0NTQ0LDI3Nzk4LDM0ODAyLDM0OTA5LDM0OTM1LDI0NzU2LDMzMjA1LDMzNzk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM2MTAxLDIxNDYyLDIxNTYxLDIyMDY4LDIzMDk0LDIzNjAxLDI4ODEwLDMyNzM2LDMyODU4LDMzMDMwLDMzMjYxLDM2MjU5LDM3MjU3LDM5NTE5LDQwNDM0LDIwNTk2LDIwMTY0LDIxNDA4LDI0ODI3LDI4MjA0LDIzNjUyLDIwMzYwLDIwNTE2LDIxOTg4LDIzNzY5LDI0MTU5LDI0Njc3LDI2NzcyLDI3ODM1LDI4MTAwLDI5MTE4LDMwMTY0LDMwMTk2LDMwMzA1LDMxMjU4LDMxMzA1LDMyMTk5LDMyMjUxLDMyNjIyLDMzMjY4LDM0NDczLDM2NjM2LDM4NjAxLDM5MzQ3LDQwNzg2LDIxMDYzLDIxMTg5LDM5MTQ5LDM1MjQyLDE5OTcxLDI2NTc4LDI4NDIyLDIwNDA1LDIzNTIyLDI2NTE3LDI3Nzg0LDI4MDI0LDI5NzIzLDMwNzU5LDM3MzQxLDM3NzU2LDM0NzU2LDMxMjA0LDMxMjgxLDI0NTU1LDIwMTgyLDIxNjY4LDIxODIyLDIyNzAyLDIyOTQ5LDI0ODE2LDI1MTcxLDI1MzAyLDI2NDIyLDI2OTY1LDMzMzMzLDM4NDY0LDM5MzQ1LDM5Mzg5LDIwNTI0LDIxMzMxLDIxODI4LDIyMzk2LDY0MDAxLDI1MTc2LDY0MDAyLDI1ODI2LDI2MjE5LDI2NTg5LDI4NjA5LDI4NjU1LDI5NzMwLDI5NzUyLDM1MzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM3OTQ0LDIxNTg1LDIyMDIyLDIyMzc0LDI0MzkyLDI0OTg2LDI3NDcwLDI4NzYwLDI4ODQ1LDMyMTg3LDM1NDc3LDIyODkwLDMzMDY3LDI1NTA2LDMwNDcyLDMyODI5LDM2MDEwLDIyNjEyLDI1NjQ1LDI3MDY3LDIzNDQ1LDI0MDgxLDI4MjcxLDY0MDAzLDM0MTUzLDIwODEyLDIxNDg4LDIyODI2LDI0NjA4LDI0OTA3LDI3NTI2LDI3NzYwLDI3ODg4LDMxNTE4LDMyOTc0LDMzNDkyLDM2Mjk0LDM3MDQwLDM5MDg5LDY0MDA0LDI1Nzk5LDI4NTgwLDI1NzQ1LDI1ODYwLDIwODE0LDIxNTIwLDIyMzAzLDM1MzQyLDI0OTI3LDI2NzQyLDY0MDA1LDMwMTcxLDMxNTcwLDMyMTEzLDM2ODkwLDIyNTM0LDI3MDg0LDMzMTUxLDM1MTE0LDM2ODY0LDM4OTY5LDIwNjAwLDIyODcxLDIyOTU2LDI1MjM3LDM2ODc5LDM5NzIyLDI0OTI1LDI5MzA1LDM4MzU4LDIyMzY5LDIzMTEwLDI0MDUyLDI1MjI2LDI1NzczLDI1ODUwLDI2NDg3LDI3ODc0LDI3OTY2LDI5MjI4LDI5NzUwLDMwNzcyLDMyNjMxLDMzNDUzLDM2MzE1LDM4OTM1LDIxMDI4LDIyMzM4LDI2NDk1LDI5MjU2LDI5OTIzLDM2MDA5LDM2Nzc0LDM3MzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDM4NDQyLDIwODQzLDIxNDg1LDI1NDIwLDIwMzI5LDIxNzY0LDI0NzI2LDI1OTQzLDI3ODAzLDI4MDMxLDI5MjYwLDI5NDM3LDMxMjU1LDM1MjA3LDM1OTk3LDI0NDI5LDI4NTU4LDI4OTIxLDMzMTkyLDI0ODQ2LDIwNDE1LDIwNTU5LDI1MTUzLDI5MjU1LDMxNjg3LDMyMjMyLDMyNzQ1LDM2OTQxLDM4ODI5LDM5NDQ5LDM2MDIyLDIyMzc4LDI0MTc5LDI2NTQ0LDMzODA1LDM1NDEzLDIxNTM2LDIzMzE4LDI0MTYzLDI0MjkwLDI0MzMwLDI1OTg3LDMyOTU0LDM0MTA5LDM4MjgxLDM4NDkxLDIwMjk2LDIxMjUzLDIxMjYxLDIxMjYzLDIxNjM4LDIxNzU0LDIyMjc1LDI0MDY3LDI0NTk4LDI1MjQzLDI1MjY1LDI1NDI5LDY0MDA2LDI3ODczLDI4MDA2LDMwMTI5LDMwNzcwLDMyOTkwLDMzMDcxLDMzNTAyLDMzODg5LDMzOTcwLDM0OTU3LDM1MDkwLDM2ODc1LDM3NjEwLDM5MTY1LDM5ODI1LDI0MTMzLDI2MjkyLDI2MzMzLDI4Njg5LDI5MTkwLDY0MDA3LDIwNDY5LDIxMTE3LDI0NDI2LDI0OTE1LDI2NDUxLDI3MTYxLDI4NDE4LDI5OTIyLDMxMDgwLDM0OTIwLDM1OTYxLDM5MTExLDM5MTA4LDM5NDkxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIxNjk3LDMxMjYzLDI2OTYzLDM1NTc1LDM1OTE0LDM5MDgwLDM5MzQyLDI0NDQ0LDI1MjU5LDMwMTMwLDMwMzgyLDM0OTg3LDM2OTkxLDM4NDY2LDIxMzA1LDI0MzgwLDI0NTE3LDI3ODUyLDI5NjQ0LDMwMDUwLDMwMDkxLDMxNTU4LDMzNTM0LDM5MzI1LDIwMDQ3LDM2OTI0LDE5OTc5LDIwMzA5LDIxNDE0LDIyNzk5LDI0MjY0LDI2MTYwLDI3ODI3LDI5NzgxLDMzNjU1LDM0NjYyLDM2MDMyLDM2OTQ0LDM4Njg2LDM5OTU3LDIyNzM3LDIzNDE2LDM0Mzg0LDM1NjA0LDQwMzcyLDIzNTA2LDI0NjgwLDI0NzE3LDI2MDk3LDI3NzM1LDI4NDUwLDI4NTc5LDI4Njk4LDMyNTk3LDMyNzUyLDM4Mjg5LDM4MjkwLDM4NDgwLDM4ODY3LDIxMTA2LDM2Njc2LDIwOTg5LDIxNTQ3LDIxNjg4LDIxODU5LDIxODk4LDI3MzIzLDI4MDg1LDMyMjE2LDMzMzgyLDM3NTMyLDM4NTE5LDQwNTY5LDIxNTEyLDIxNzA0LDMwNDE4LDM0NTMyLDM4MzA4LDM4MzU2LDM4NDkyLDIwMTMwLDIwMjMzLDIzMDIyLDIzMjcwLDI0MDU1LDI0NjU4LDI1MjM5LDI2NDc3LDI2Njg5LDI3NzgyLDI4MjA3LDMyNTY4LDMyOTIzLDMzMzIyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY0MDA4LDY0MDA5LDM4OTE3LDIwMTMzLDIwNTY1LDIxNjgzLDIyNDE5LDIyODc0LDIzNDAxLDIzNDc1LDI1MDMyLDI2OTk5LDI4MDIzLDI4NzA3LDM0ODA5LDM1Mjk5LDM1NDQyLDM1NTU5LDM2OTk0LDM5NDA1LDM5NjA4LDIxMTgyLDI2NjgwLDIwNTAyLDI0MTg0LDI2NDQ3LDMzNjA3LDM0ODkyLDIwMTM5LDIxNTIxLDIyMTkwLDI5NjcwLDM3MTQxLDM4OTExLDM5MTc3LDM5MjU1LDM5MzIxLDIyMDk5LDIyNjg3LDM0Mzk1LDM1Mzc3LDI1MDEwLDI3MzgyLDI5NTYzLDM2NTYyLDI3NDYzLDM4NTcwLDM5NTExLDIyODY5LDI5MTg0LDM2MjAzLDM4NzYxLDIwNDM2LDIzNzk2LDI0MzU4LDI1MDgwLDI2MjAzLDI3ODgzLDI4ODQzLDI5NTcyLDI5NjI1LDI5Njk0LDMwNTA1LDMwNTQxLDMyMDY3LDMyMDk4LDMyMjkxLDMzMzM1LDM0ODk4LDY0MDEwLDM2MDY2LDM3NDQ5LDM5MDIzLDIzMzc3LDMxMzQ4LDM0ODgwLDM4OTEzLDIzMjQ0LDIwNDQ4LDIxMzMyLDIyODQ2LDIzODA1LDI1NDA2LDI4MDI1LDI5NDMzLDMzMDI5LDMzMDMxLDMzNjk4LDM3NTgzLDM4OTYwLDIwMTM2LDIwODA0LDIxMDA5LDIyNDExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0NDE4LDI3ODQyLDI4MzY2LDI4Njc3LDI4NzUyLDI4ODQ3LDI5MDc0LDI5NjczLDI5ODAxLDMzNjEwLDM0NzIyLDM0OTEzLDM2ODcyLDM3MDI2LDM3Nzk1LDM5MzM2LDIwODQ2LDI0NDA3LDI0ODAwLDI0OTM1LDI2MjkxLDM0MTM3LDM2NDI2LDM3Mjk1LDM4Nzk1LDIwMDQ2LDIwMTE0LDIxNjI4LDIyNzQxLDIyNzc4LDIyOTA5LDIzNzMzLDI0MzU5LDI1MTQyLDI1MTYwLDI2MTIyLDI2MjE1LDI3NjI3LDI4MDA5LDI4MTExLDI4MjQ2LDI4NDA4LDI4NTY0LDI4NjQwLDI4NjQ5LDI4NzY1LDI5MzkyLDI5NzMzLDI5Nzg2LDI5OTIwLDMwMzU1LDMxMDY4LDMxOTQ2LDMyMjg2LDMyOTkzLDMzNDQ2LDMzODk5LDMzOTgzLDM0MzgyLDM0Mzk5LDM0Njc2LDM1NzAzLDM1OTQ2LDM3ODA0LDM4OTEyLDM5MDEzLDI0Nzg1LDI1MTEwLDM3MjM5LDIzMTMwLDI2MTI3LDI4MTUxLDI4MjIyLDI5NzU5LDM5NzQ2LDI0NTczLDI0Nzk0LDMxNTAzLDIxNzAwLDI0MzQ0LDI3NzQyLDI3ODU5LDI3OTQ2LDI4ODg4LDMyMDA1LDM0NDI1LDM1MzQwLDQwMjUxLDIxMjcwLDIxNjQ0LDIzMzAxLDI3MTk0LDI4Nzc5LDMwMDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDMxMTE3LDMxMTY2LDMzNDU3LDMzNzc1LDM1NDQxLDM1NjQ5LDM2MDA4LDM4NzcyLDY0MDExLDI1ODQ0LDI1ODk5LDMwOTA2LDMwOTA3LDMxMzM5LDIwMDI0LDIxOTE0LDIyODY0LDIzNDYyLDI0MTg3LDI0NzM5LDI1NTYzLDI3NDg5LDI2MjEzLDI2NzA3LDI4MTg1LDI5MDI5LDI5ODcyLDMyMDA4LDM2OTk2LDM5NTI5LDM5OTczLDI3OTYzLDI4MzY5LDI5NTAyLDM1OTA1LDM4MzQ2LDIwOTc2LDI0MTQwLDI0NDg4LDI0NjUzLDI0ODIyLDI0ODgwLDI0OTA4LDI2MTc5LDI2MTgwLDI3MDQ1LDI3ODQxLDI4MjU1LDI4MzYxLDI4NTE0LDI5MDA0LDI5ODUyLDMwMzQzLDMxNjgxLDMxNzgzLDMzNjE4LDM0NjQ3LDM2OTQ1LDM4NTQxLDQwNjQzLDIxMjk1LDIyMjM4LDI0MzE1LDI0NDU4LDI0Njc0LDI0NzI0LDI1MDc5LDI2MjE0LDI2MzcxLDI3MjkyLDI4MTQyLDI4NTkwLDI4Nzg0LDI5NTQ2LDMyMzYyLDMzMjE0LDMzNTg4LDM0NTE2LDM1NDk2LDM2MDM2LDIxMTIzLDI5NTU0LDIzNDQ2LDI3MjQzLDM3ODkyLDIxNzQyLDIyMTUwLDIzMzg5LDI1OTI4LDI1OTg5LDI2MzEzLDI2NzgzLDI4MDQ1LDI4MTAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI5MjQzLDMyOTQ4LDM3MjM3LDM5NTAxLDIwMzk5LDIwNTA1LDIxNDAyLDIxNTE4LDIxNTY0LDIxODk3LDIxOTU3LDI0MTI3LDI0NDYwLDI2NDI5LDI5MDMwLDI5NjYxLDM2ODY5LDIxMjExLDIxMjM1LDIyNjI4LDIyNzM0LDI4OTMyLDI5MDcxLDI5MTc5LDM0MjI0LDM1MzQ3LDI2MjQ4LDM0MjE2LDIxOTI3LDI2MjQ0LDI5MDAyLDMzODQxLDIxMzIxLDIxOTEzLDI3NTg1LDI0NDA5LDI0NTA5LDI1NTgyLDI2MjQ5LDI4OTk5LDM1NTY5LDM2NjM3LDQwNjM4LDIwMjQxLDI1NjU4LDI4ODc1LDMwMDU0LDM0NDA3LDI0Njc2LDM1NjYyLDQwNDQwLDIwODA3LDIwOTgyLDIxMjU2LDI3OTU4LDMzMDE2LDQwNjU3LDI2MTMzLDI3NDI3LDI4ODI0LDMwMTY1LDIxNTA3LDIzNjczLDMyMDA3LDM1MzUwLDI3NDI0LDI3NDUzLDI3NDYyLDIxNTYwLDI0Njg4LDI3OTY1LDMyNzI1LDMzMjg4LDIwNjk0LDIwOTU4LDIxOTE2LDIyMTIzLDIyMjIxLDIzMDIwLDIzMzA1LDI0MDc2LDI0OTg1LDI0OTg0LDI1MTM3LDI2MjA2LDI2MzQyLDI5MDgxLDI5MTEzLDI5MTE0LDI5MzUxLDMxMTQzLDMxMjMyLDMyNjkwLDM1NDQwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImdiMTgwMzBcIjpbMTk5NzAsMTk5NzIsMTk5NzMsMTk5NzQsMTk5ODMsMTk5ODYsMTk5OTEsMTk5OTksMjAwMDAsMjAwMDEsMjAwMDMsMjAwMDYsMjAwMDksMjAwMTQsMjAwMTUsMjAwMTcsMjAwMTksMjAwMjEsMjAwMjMsMjAwMjgsMjAwMzIsMjAwMzMsMjAwMzQsMjAwMzYsMjAwMzgsMjAwNDIsMjAwNDksMjAwNTMsMjAwNTUsMjAwNTgsMjAwNTksMjAwNjYsMjAwNjcsMjAwNjgsMjAwNjksMjAwNzEsMjAwNzIsMjAwNzQsMjAwNzUsMjAwNzYsMjAwNzcsMjAwNzgsMjAwNzksMjAwODIsMjAwODQsMjAwODUsMjAwODYsMjAwODcsMjAwODgsMjAwODksMjAwOTAsMjAwOTEsMjAwOTIsMjAwOTMsMjAwOTUsMjAwOTYsMjAwOTcsMjAwOTgsMjAwOTksMjAxMDAsMjAxMDEsMjAxMDMsMjAxMDYsMjAxMTIsMjAxMTgsMjAxMTksMjAxMjEsMjAxMjQsMjAxMjUsMjAxMjYsMjAxMzEsMjAxMzgsMjAxNDMsMjAxNDQsMjAxNDUsMjAxNDgsMjAxNTAsMjAxNTEsMjAxNTIsMjAxNTMsMjAxNTYsMjAxNTcsMjAxNTgsMjAxNjgsMjAxNzIsMjAxNzUsMjAxNzYsMjAxNzgsMjAxODYsMjAxODcsMjAxODgsMjAxOTIsMjAxOTQsMjAxOTgsMjAxOTksMjAyMDEsMjAyMDUsMjAyMDYsMjAyMDcsMjAyMDksMjAyMTIsMjAyMTYsMjAyMTcsMjAyMTgsMjAyMjAsMjAyMjIsMjAyMjQsMjAyMjYsMjAyMjcsMjAyMjgsMjAyMjksMjAyMzAsMjAyMzEsMjAyMzIsMjAyMzUsMjAyMzYsMjAyNDIsMjAyNDMsMjAyNDQsMjAyNDUsMjAyNDYsMjAyNTIsMjAyNTMsMjAyNTcsMjAyNTksMjAyNjQsMjAyNjUsMjAyNjgsMjAyNjksMjAyNzAsMjAyNzMsMjAyNzUsMjAyNzcsMjAyNzksMjAyODEsMjAyODMsMjAyODYsMjAyODcsMjAyODgsMjAyODksMjAyOTAsMjAyOTIsMjAyOTMsMjAyOTUsMjAyOTYsMjAyOTcsMjAyOTgsMjAyOTksMjAzMDAsMjAzMDYsMjAzMDgsMjAzMTAsMjAzMjEsMjAzMjIsMjAzMjYsMjAzMjgsMjAzMzAsMjAzMzEsMjAzMzMsMjAzMzQsMjAzMzcsMjAzMzgsMjAzNDEsMjAzNDMsMjAzNDQsMjAzNDUsMjAzNDYsMjAzNDksMjAzNTIsMjAzNTMsMjAzNTQsMjAzNTcsMjAzNTgsMjAzNTksMjAzNjIsMjAzNjQsMjAzNjYsMjAzNjgsMjAzNzAsMjAzNzEsMjAzNzMsMjAzNzQsMjAzNzYsMjAzNzcsMjAzNzgsMjAzODAsMjAzODIsMjAzODMsMjAzODUsMjAzODYsMjAzODgsMjAzOTUsMjAzOTcsMjA0MDAsMjA0MDEsMjA0MDIsMjA0MDMsMjA0MDQsMjA0MDYsMjA0MDcsMjA0MDgsMjA0MDksMjA0MTAsMjA0MTEsMjA0MTIsMjA0MTMsMjA0MTQsMjA0MTYsMjA0MTcsMjA0MTgsMjA0MjIsMjA0MjMsMjA0MjQsMjA0MjUsMjA0MjcsMjA0MjgsMjA0MjksMjA0MzQsMjA0MzUsMjA0MzYsMjA0MzcsMjA0MzgsMjA0NDEsMjA0NDMsMjA0NDgsMjA0NTAsMjA0NTIsMjA0NTMsMjA0NTUsMjA0NTksMjA0NjAsMjA0NjQsMjA0NjYsMjA0NjgsMjA0NjksMjA0NzAsMjA0NzEsMjA0NzMsMjA0NzUsMjA0NzYsMjA0NzcsMjA0NzksMjA0ODAsMjA0ODEsMjA0ODIsMjA0ODMsMjA0ODQsMjA0ODUsMjA0ODYsMjA0ODcsMjA0ODgsMjA0ODksMjA0OTAsMjA0OTEsMjA0OTQsMjA0OTYsMjA0OTcsMjA0OTksMjA1MDEsMjA1MDIsMjA1MDMsMjA1MDcsMjA1MDksMjA1MTAsMjA1MTIsMjA1MTQsMjA1MTUsMjA1MTYsMjA1MTksMjA1MjMsMjA1MjcsMjA1MjgsMjA1MjksMjA1MzAsMjA1MzEsMjA1MzIsMjA1MzMsMjA1MzQsMjA1MzUsMjA1MzYsMjA1MzcsMjA1MzksMjA1NDEsMjA1NDMsMjA1NDQsMjA1NDUsMjA1NDYsMjA1NDgsMjA1NDksMjA1NTAsMjA1NTMsMjA1NTQsMjA1NTUsMjA1NTcsMjA1NjAsMjA1NjEsMjA1NjIsMjA1NjMsMjA1NjQsMjA1NjYsMjA1NjcsMjA1NjgsMjA1NjksMjA1NzEsMjA1NzMsMjA1NzQsMjA1NzUsMjA1NzYsMjA1NzcsMjA1NzgsMjA1NzksMjA1ODAsMjA1ODIsMjA1ODMsMjA1ODQsMjA1ODUsMjA1ODYsMjA1ODcsMjA1ODksMjA1OTAsMjA1OTEsMjA1OTIsMjA1OTMsMjA1OTQsMjA1OTUsMjA1OTYsMjA1OTcsMjA2MDAsMjA2MDEsMjA2MDIsMjA2MDQsMjA2MDUsMjA2MDksMjA2MTAsMjA2MTEsMjA2MTIsMjA2MTQsMjA2MTUsMjA2MTcsMjA2MTgsMjA2MTksMjA2MjAsMjA2MjIsMjA2MjMsMjA2MjQsMjA2MjUsMjA2MjYsMjA2MjcsMjA2MjgsMjA2MjksMjA2MzAsMjA2MzEsMjA2MzIsMjA2MzMsMjA2MzQsMjA2MzUsMjA2MzYsMjA2MzcsMjA2MzgsMjA2MzksMjA2NDAsMjA2NDEsMjA2NDIsMjA2NDQsMjA2NDYsMjA2NTAsMjA2NTEsMjA2NTMsMjA2NTQsMjA2NTUsMjA2NTYsMjA2NTcsMjA2NTksMjA2NjAsMjA2NjEsMjA2NjIsMjA2NjMsMjA2NjQsMjA2NjUsMjA2NjgsMjA2NjksMjA2NzAsMjA2NzEsMjA2NzIsMjA2NzMsMjA2NzQsMjA2NzUsMjA2NzYsMjA2NzcsMjA2NzgsMjA2NzksMjA2ODAsMjA2ODEsMjA2ODIsMjA2ODMsMjA2ODQsMjA2ODUsMjA2ODYsMjA2ODgsMjA2ODksMjA2OTAsMjA2OTEsMjA2OTIsMjA2OTMsMjA2OTUsMjA2OTYsMjA2OTcsMjA2OTksMjA3MDAsMjA3MDEsMjA3MDIsMjA3MDMsMjA3MDQsMjA3MDUsMjA3MDYsMjA3MDcsMjA3MDgsMjA3MDksMjA3MTIsMjA3MTMsMjA3MTQsMjA3MTUsMjA3MTksMjA3MjAsMjA3MjEsMjA3MjIsMjA3MjQsMjA3MjYsMjA3MjcsMjA3MjgsMjA3MjksMjA3MzAsMjA3MzIsMjA3MzMsMjA3MzQsMjA3MzUsMjA3MzYsMjA3MzcsMjA3MzgsMjA3MzksMjA3NDAsMjA3NDEsMjA3NDQsMjA3NDUsMjA3NDYsMjA3NDgsMjA3NDksMjA3NTAsMjA3NTEsMjA3NTIsMjA3NTMsMjA3NTUsMjA3NTYsMjA3NTcsMjA3NTgsMjA3NTksMjA3NjAsMjA3NjEsMjA3NjIsMjA3NjMsMjA3NjQsMjA3NjUsMjA3NjYsMjA3NjcsMjA3NjgsMjA3NzAsMjA3NzEsMjA3NzIsMjA3NzMsMjA3NzQsMjA3NzUsMjA3NzYsMjA3NzcsMjA3NzgsMjA3NzksMjA3ODAsMjA3ODEsMjA3ODIsMjA3ODMsMjA3ODQsMjA3ODUsMjA3ODYsMjA3ODcsMjA3ODgsMjA3ODksMjA3OTAsMjA3OTEsMjA3OTIsMjA3OTMsMjA3OTQsMjA3OTUsMjA3OTYsMjA3OTcsMjA3OTgsMjA4MDIsMjA4MDcsMjA4MTAsMjA4MTIsMjA4MTQsMjA4MTUsMjA4MTYsMjA4MTgsMjA4MTksMjA4MjMsMjA4MjQsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjA4MzEsMjA4MzIsMjA4MzMsMjA4MzUsMjA4MzYsMjA4MzgsMjA4MzksMjA4NDEsMjA4NDIsMjA4NDcsMjA4NTAsMjA4NTgsMjA4NjIsMjA4NjMsMjA4NjcsMjA4NjgsMjA4NzAsMjA4NzEsMjA4NzQsMjA4NzUsMjA4NzgsMjA4NzksMjA4ODAsMjA4ODEsMjA4ODMsMjA4ODQsMjA4ODgsMjA4OTAsMjA4OTMsMjA4OTQsMjA4OTUsMjA4OTcsMjA4OTksMjA5MDIsMjA5MDMsMjA5MDQsMjA5MDUsMjA5MDYsMjA5MDksMjA5MTAsMjA5MTYsMjA5MjAsMjA5MjEsMjA5MjIsMjA5MjYsMjA5MjcsMjA5MjksMjA5MzAsMjA5MzEsMjA5MzMsMjA5MzYsMjA5MzgsMjA5NDEsMjA5NDIsMjA5NDQsMjA5NDYsMjA5NDcsMjA5NDgsMjA5NDksMjA5NTAsMjA5NTEsMjA5NTIsMjA5NTMsMjA5NTQsMjA5NTYsMjA5NTgsMjA5NTksMjA5NjIsMjA5NjMsMjA5NjUsMjA5NjYsMjA5NjcsMjA5NjgsMjA5NjksMjA5NzAsMjA5NzIsMjA5NzQsMjA5NzcsMjA5NzgsMjA5ODAsMjA5ODMsMjA5OTAsMjA5OTYsMjA5OTcsMjEwMDEsMjEwMDMsMjEwMDQsMjEwMDcsMjEwMDgsMjEwMTEsMjEwMTIsMjEwMTMsMjEwMjAsMjEwMjIsMjEwMjMsMjEwMjUsMjEwMjYsMjEwMjcsMjEwMjksMjEwMzAsMjEwMzEsMjEwMzQsMjEwMzYsMjEwMzksMjEwNDEsMjEwNDIsMjEwNDQsMjEwNDUsMjEwNTIsMjEwNTQsMjEwNjAsMjEwNjEsMjEwNjIsMjEwNjMsMjEwNjQsMjEwNjUsMjEwNjcsMjEwNzAsMjEwNzEsMjEwNzQsMjEwNzUsMjEwNzcsMjEwNzksMjEwODAsMjEwODEsMjEwODIsMjEwODMsMjEwODUsMjEwODcsMjEwODgsMjEwOTAsMjEwOTEsMjEwOTIsMjEwOTQsMjEwOTYsMjEwOTksMjExMDAsMjExMDEsMjExMDIsMjExMDQsMjExMDUsMjExMDcsMjExMDgsMjExMDksMjExMTAsMjExMTEsMjExMTIsMjExMTMsMjExMTQsMjExMTUsMjExMTYsMjExMTgsMjExMjAsMjExMjMsMjExMjQsMjExMjUsMjExMjYsMjExMjcsMjExMjksMjExMzAsMjExMzEsMjExMzIsMjExMzMsMjExMzQsMjExMzUsMjExMzcsMjExMzgsMjExNDAsMjExNDEsMjExNDIsMjExNDMsMjExNDQsMjExNDUsMjExNDYsMjExNDgsMjExNTYsMjExNTcsMjExNTgsMjExNTksMjExNjYsMjExNjcsMjExNjgsMjExNzIsMjExNzMsMjExNzQsMjExNzUsMjExNzYsMjExNzcsMjExNzgsMjExNzksMjExODAsMjExODEsMjExODQsMjExODUsMjExODYsMjExODgsMjExODksMjExOTAsMjExOTIsMjExOTQsMjExOTYsMjExOTcsMjExOTgsMjExOTksMjEyMDEsMjEyMDMsMjEyMDQsMjEyMDUsMjEyMDcsMjEyMDksMjEyMTAsMjEyMTEsMjEyMTIsMjEyMTMsMjEyMTQsMjEyMTYsMjEyMTcsMjEyMTgsMjEyMTksMjEyMjEsMjEyMjIsMjEyMjMsMjEyMjQsMjEyMjUsMjEyMjYsMjEyMjcsMjEyMjgsMjEyMjksMjEyMzAsMjEyMzEsMjEyMzMsMjEyMzQsMjEyMzUsMjEyMzYsMjEyMzcsMjEyMzgsMjEyMzksMjEyNDAsMjEyNDMsMjEyNDQsMjEyNDUsMjEyNDksMjEyNTAsMjEyNTEsMjEyNTIsMjEyNTUsMjEyNTcsMjEyNTgsMjEyNTksMjEyNjAsMjEyNjIsMjEyNjUsMjEyNjYsMjEyNjcsMjEyNjgsMjEyNzIsMjEyNzUsMjEyNzYsMjEyNzgsMjEyNzksMjEyODIsMjEyODQsMjEyODUsMjEyODcsMjEyODgsMjEyODksMjEyOTEsMjEyOTIsMjEyOTMsMjEyOTUsMjEyOTYsMjEyOTcsMjEyOTgsMjEyOTksMjEzMDAsMjEzMDEsMjEzMDIsMjEzMDMsMjEzMDQsMjEzMDgsMjEzMDksMjEzMTIsMjEzMTQsMjEzMTYsMjEzMTgsMjEzMjMsMjEzMjQsMjEzMjUsMjEzMjgsMjEzMzIsMjEzMzYsMjEzMzcsMjEzMzksMjEzNDEsMjEzNDksMjEzNTIsMjEzNTQsMjEzNTYsMjEzNTcsMjEzNjIsMjEzNjYsMjEzNjksMjEzNzEsMjEzNzIsMjEzNzMsMjEzNzQsMjEzNzYsMjEzNzcsMjEzNzksMjEzODMsMjEzODQsMjEzODYsMjEzOTAsMjEzOTEsMjEzOTIsMjEzOTMsMjEzOTQsMjEzOTUsMjEzOTYsMjEzOTgsMjEzOTksMjE0MDEsMjE0MDMsMjE0MDQsMjE0MDYsMjE0MDgsMjE0MDksMjE0MTIsMjE0MTUsMjE0MTgsMjE0MTksMjE0MjAsMjE0MjEsMjE0MjMsMjE0MjQsMjE0MjUsMjE0MjYsMjE0MjcsMjE0MjgsMjE0MjksMjE0MzEsMjE0MzIsMjE0MzMsMjE0MzQsMjE0MzYsMjE0MzcsMjE0MzgsMjE0NDAsMjE0NDMsMjE0NDQsMjE0NDUsMjE0NDYsMjE0NDcsMjE0NTQsMjE0NTUsMjE0NTYsMjE0NTgsMjE0NTksMjE0NjEsMjE0NjYsMjE0NjgsMjE0NjksMjE0NzAsMjE0NzMsMjE0NzQsMjE0NzksMjE0OTIsMjE0OTgsMjE1MDIsMjE1MDMsMjE1MDQsMjE1MDYsMjE1MDksMjE1MTEsMjE1MTUsMjE1MjQsMjE1MjgsMjE1MjksMjE1MzAsMjE1MzIsMjE1MzgsMjE1NDAsMjE1NDEsMjE1NDYsMjE1NTIsMjE1NTUsMjE1NTgsMjE1NTksMjE1NjIsMjE1NjUsMjE1NjcsMjE1NjksMjE1NzAsMjE1NzIsMjE1NzMsMjE1NzUsMjE1NzcsMjE1ODAsMjE1ODEsMjE1ODIsMjE1ODMsMjE1ODUsMjE1OTQsMjE1OTcsMjE1OTgsMjE1OTksMjE2MDAsMjE2MDEsMjE2MDMsMjE2MDUsMjE2MDcsMjE2MDksMjE2MTAsMjE2MTEsMjE2MTIsMjE2MTMsMjE2MTQsMjE2MTUsMjE2MTYsMjE2MjAsMjE2MjUsMjE2MjYsMjE2MzAsMjE2MzEsMjE2MzMsMjE2MzUsMjE2MzcsMjE2MzksMjE2NDAsMjE2NDEsMjE2NDIsMjE2NDUsMjE2NDksMjE2NTEsMjE2NTUsMjE2NTYsMjE2NjAsMjE2NjIsMjE2NjMsMjE2NjQsMjE2NjUsMjE2NjYsMjE2NjksMjE2NzgsMjE2ODAsMjE2ODIsMjE2ODUsMjE2ODYsMjE2ODcsMjE2ODksMjE2OTAsMjE2OTIsMjE2OTQsMjE2OTksMjE3MDEsMjE3MDYsMjE3MDcsMjE3MTgsMjE3MjAsMjE3MjMsMjE3MjgsMjE3MjksMjE3MzAsMjE3MzEsMjE3MzIsMjE3MzksMjE3NDAsMjE3NDMsMjE3NDQsMjE3NDUsMjE3NDgsMjE3NDksMjE3NTAsMjE3NTEsMjE3NTIsMjE3NTMsMjE3NTUsMjE3NTgsMjE3NjAsMjE3NjIsMjE3NjMsMjE3NjQsMjE3NjUsMjE3NjgsMjE3NzAsMjE3NzEsMjE3NzIsMjE3NzMsMjE3NzQsMjE3NzgsMjE3NzksMjE3ODEsMjE3ODIsMjE3ODMsMjE3ODQsMjE3ODUsMjE3ODYsMjE3ODgsMjE3ODksMjE3OTAsMjE3OTEsMjE3OTMsMjE3OTcsMjE3OTgsMjE4MDAsMjE4MDEsMjE4MDMsMjE4MDUsMjE4MTAsMjE4MTIsMjE4MTMsMjE4MTQsMjE4MTYsMjE4MTcsMjE4MTgsMjE4MTksMjE4MjEsMjE4MjQsMjE4MjYsMjE4MjksMjE4MzEsMjE4MzIsMjE4MzUsMjE4MzYsMjE4MzcsMjE4MzgsMjE4MzksMjE4NDEsMjE4NDIsMjE4NDMsMjE4NDQsMjE4NDcsMjE4NDgsMjE4NDksMjE4NTAsMjE4NTEsMjE4NTMsMjE4NTQsMjE4NTUsMjE4NTYsMjE4NTgsMjE4NTksMjE4NjQsMjE4NjUsMjE4NjcsMjE4NzEsMjE4NzIsMjE4NzMsMjE4NzQsMjE4NzUsMjE4NzYsMjE4ODEsMjE4ODIsMjE4ODUsMjE4ODcsMjE4OTMsMjE4OTQsMjE5MDAsMjE5MDEsMjE5MDIsMjE5MDQsMjE5MDYsMjE5MDcsMjE5MDksMjE5MTAsMjE5MTEsMjE5MTQsMjE5MTUsMjE5MTgsMjE5MjAsMjE5MjEsMjE5MjIsMjE5MjMsMjE5MjQsMjE5MjUsMjE5MjYsMjE5MjgsMjE5MjksMjE5MzAsMjE5MzEsMjE5MzIsMjE5MzMsMjE5MzQsMjE5MzUsMjE5MzYsMjE5MzgsMjE5NDAsMjE5NDIsMjE5NDQsMjE5NDYsMjE5NDgsMjE5NTEsMjE5NTIsMjE5NTMsMjE5NTQsMjE5NTUsMjE5NTgsMjE5NTksMjE5NjAsMjE5NjIsMjE5NjMsMjE5NjYsMjE5NjcsMjE5NjgsMjE5NzMsMjE5NzUsMjE5NzYsMjE5NzcsMjE5NzgsMjE5NzksMjE5ODIsMjE5ODQsMjE5ODYsMjE5OTEsMjE5OTMsMjE5OTcsMjE5OTgsMjIwMDAsMjIwMDEsMjIwMDQsMjIwMDYsMjIwMDgsMjIwMDksMjIwMTAsMjIwMTEsMjIwMTIsMjIwMTUsMjIwMTgsMjIwMTksMjIwMjAsMjIwMjEsMjIwMjIsMjIwMjMsMjIwMjYsMjIwMjcsMjIwMjksMjIwMzIsMjIwMzMsMjIwMzQsMjIwMzUsMjIwMzYsMjIwMzcsMjIwMzgsMjIwMzksMjIwNDEsMjIwNDIsMjIwNDQsMjIwNDUsMjIwNDgsMjIwNDksMjIwNTAsMjIwNTMsMjIwNTQsMjIwNTYsMjIwNTcsMjIwNTgsMjIwNTksMjIwNjIsMjIwNjMsMjIwNjQsMjIwNjcsMjIwNjksMjIwNzEsMjIwNzIsMjIwNzQsMjIwNzYsMjIwNzcsMjIwNzgsMjIwODAsMjIwODEsMjIwODIsMjIwODMsMjIwODQsMjIwODUsMjIwODYsMjIwODcsMjIwODgsMjIwODksMjIwOTAsMjIwOTEsMjIwOTUsMjIwOTYsMjIwOTcsMjIwOTgsMjIwOTksMjIxMDEsMjIxMDIsMjIxMDYsMjIxMDcsMjIxMDksMjIxMTAsMjIxMTEsMjIxMTIsMjIxMTMsMjIxMTUsMjIxMTcsMjIxMTgsMjIxMTksMjIxMjUsMjIxMjYsMjIxMjcsMjIxMjgsMjIxMzAsMjIxMzEsMjIxMzIsMjIxMzMsMjIxMzUsMjIxMzYsMjIxMzcsMjIxMzgsMjIxNDEsMjIxNDIsMjIxNDMsMjIxNDQsMjIxNDUsMjIxNDYsMjIxNDcsMjIxNDgsMjIxNTEsMjIxNTIsMjIxNTMsMjIxNTQsMjIxNTUsMjIxNTYsMjIxNTcsMjIxNjAsMjIxNjEsMjIxNjIsMjIxNjQsMjIxNjUsMjIxNjYsMjIxNjcsMjIxNjgsMjIxNjksMjIxNzAsMjIxNzEsMjIxNzIsMjIxNzMsMjIxNzQsMjIxNzUsMjIxNzYsMjIxNzcsMjIxNzgsMjIxODAsMjIxODEsMjIxODIsMjIxODMsMjIxODQsMjIxODUsMjIxODYsMjIxODcsMjIxODgsMjIxODksMjIxOTAsMjIxOTIsMjIxOTMsMjIxOTQsMjIxOTUsMjIxOTYsMjIxOTcsMjIxOTgsMjIyMDAsMjIyMDEsMjIyMDIsMjIyMDMsMjIyMDUsMjIyMDYsMjIyMDcsMjIyMDgsMjIyMDksMjIyMTAsMjIyMTEsMjIyMTIsMjIyMTMsMjIyMTQsMjIyMTUsMjIyMTYsMjIyMTcsMjIyMTksMjIyMjAsMjIyMjEsMjIyMjIsMjIyMjMsMjIyMjQsMjIyMjUsMjIyMjYsMjIyMjcsMjIyMjksMjIyMzAsMjIyMzIsMjIyMzMsMjIyMzYsMjIyNDMsMjIyNDUsMjIyNDYsMjIyNDcsMjIyNDgsMjIyNDksMjIyNTAsMjIyNTIsMjIyNTQsMjIyNTUsMjIyNTgsMjIyNTksMjIyNjIsMjIyNjMsMjIyNjQsMjIyNjcsMjIyNjgsMjIyNzIsMjIyNzMsMjIyNzQsMjIyNzcsMjIyNzksMjIyODMsMjIyODQsMjIyODUsMjIyODYsMjIyODcsMjIyODgsMjIyODksMjIyOTAsMjIyOTEsMjIyOTIsMjIyOTMsMjIyOTQsMjIyOTUsMjIyOTYsMjIyOTcsMjIyOTgsMjIyOTksMjIzMDEsMjIzMDIsMjIzMDQsMjIzMDUsMjIzMDYsMjIzMDgsMjIzMDksMjIzMTAsMjIzMTEsMjIzMTUsMjIzMjEsMjIzMjIsMjIzMjQsMjIzMjUsMjIzMjYsMjIzMjcsMjIzMjgsMjIzMzIsMjIzMzMsMjIzMzUsMjIzMzcsMjIzMzksMjIzNDAsMjIzNDEsMjIzNDIsMjIzNDQsMjIzNDUsMjIzNDcsMjIzNTQsMjIzNTUsMjIzNTYsMjIzNTcsMjIzNTgsMjIzNjAsMjIzNjEsMjIzNzAsMjIzNzEsMjIzNzMsMjIzNzUsMjIzODAsMjIzODIsMjIzODQsMjIzODUsMjIzODYsMjIzODgsMjIzODksMjIzOTIsMjIzOTMsMjIzOTQsMjIzOTcsMjIzOTgsMjIzOTksMjI0MDAsMjI0MDEsMjI0MDcsMjI0MDgsMjI0MDksMjI0MTAsMjI0MTMsMjI0MTQsMjI0MTUsMjI0MTYsMjI0MTcsMjI0MjAsMjI0MjEsMjI0MjIsMjI0MjMsMjI0MjQsMjI0MjUsMjI0MjYsMjI0MjgsMjI0MjksMjI0MzAsMjI0MzEsMjI0MzcsMjI0NDAsMjI0NDIsMjI0NDQsMjI0NDcsMjI0NDgsMjI0NDksMjI0NTEsMjI0NTMsMjI0NTQsMjI0NTUsMjI0NTcsMjI0NTgsMjI0NTksMjI0NjAsMjI0NjEsMjI0NjIsMjI0NjMsMjI0NjQsMjI0NjUsMjI0NjgsMjI0NjksMjI0NzAsMjI0NzEsMjI0NzIsMjI0NzMsMjI0NzQsMjI0NzYsMjI0NzcsMjI0ODAsMjI0ODEsMjI0ODMsMjI0ODYsMjI0ODcsMjI0OTEsMjI0OTIsMjI0OTQsMjI0OTcsMjI0OTgsMjI0OTksMjI1MDEsMjI1MDIsMjI1MDMsMjI1MDQsMjI1MDUsMjI1MDYsMjI1MDcsMjI1MDgsMjI1MTAsMjI1MTIsMjI1MTMsMjI1MTQsMjI1MTUsMjI1MTcsMjI1MTgsMjI1MTksMjI1MjMsMjI1MjQsMjI1MjYsMjI1MjcsMjI1MjksMjI1MzEsMjI1MzIsMjI1MzMsMjI1MzYsMjI1MzcsMjI1MzgsMjI1NDAsMjI1NDIsMjI1NDMsMjI1NDQsMjI1NDYsMjI1NDcsMjI1NDgsMjI1NTAsMjI1NTEsMjI1NTIsMjI1NTQsMjI1NTUsMjI1NTYsMjI1NTcsMjI1NTksMjI1NjIsMjI1NjMsMjI1NjUsMjI1NjYsMjI1NjcsMjI1NjgsMjI1NjksMjI1NzEsMjI1NzIsMjI1NzMsMjI1NzQsMjI1NzUsMjI1NzcsMjI1NzgsMjI1NzksMjI1ODAsMjI1ODIsMjI1ODMsMjI1ODQsMjI1ODUsMjI1ODYsMjI1ODcsMjI1ODgsMjI1ODksMjI1OTAsMjI1OTEsMjI1OTIsMjI1OTMsMjI1OTQsMjI1OTUsMjI1OTcsMjI1OTgsMjI1OTksMjI2MDAsMjI2MDEsMjI2MDIsMjI2MDMsMjI2MDYsMjI2MDcsMjI2MDgsMjI2MTAsMjI2MTEsMjI2MTMsMjI2MTQsMjI2MTUsMjI2MTcsMjI2MTgsMjI2MTksMjI2MjAsMjI2MjEsMjI2MjMsMjI2MjQsMjI2MjUsMjI2MjYsMjI2MjcsMjI2MjgsMjI2MzAsMjI2MzEsMjI2MzIsMjI2MzMsMjI2MzQsMjI2MzcsMjI2MzgsMjI2MzksMjI2NDAsMjI2NDEsMjI2NDIsMjI2NDMsMjI2NDQsMjI2NDUsMjI2NDYsMjI2NDcsMjI2NDgsMjI2NDksMjI2NTAsMjI2NTEsMjI2NTIsMjI2NTMsMjI2NTUsMjI2NTgsMjI2NjAsMjI2NjIsMjI2NjMsMjI2NjQsMjI2NjYsMjI2NjcsMjI2NjgsMjI2NjksMjI2NzAsMjI2NzEsMjI2NzIsMjI2NzMsMjI2NzYsMjI2NzcsMjI2NzgsMjI2NzksMjI2ODAsMjI2ODMsMjI2ODQsMjI2ODUsMjI2ODgsMjI2ODksMjI2OTAsMjI2OTEsMjI2OTIsMjI2OTMsMjI2OTQsMjI2OTUsMjI2OTgsMjI2OTksMjI3MDAsMjI3MDEsMjI3MDIsMjI3MDMsMjI3MDQsMjI3MDUsMjI3MDYsMjI3MDcsMjI3MDgsMjI3MDksMjI3MTAsMjI3MTEsMjI3MTIsMjI3MTMsMjI3MTQsMjI3MTUsMjI3MTcsMjI3MTgsMjI3MTksMjI3MjAsMjI3MjIsMjI3MjMsMjI3MjQsMjI3MjYsMjI3MjcsMjI3MjgsMjI3MjksMjI3MzAsMjI3MzEsMjI3MzIsMjI3MzMsMjI3MzQsMjI3MzUsMjI3MzYsMjI3MzgsMjI3MzksMjI3NDAsMjI3NDIsMjI3NDMsMjI3NDQsMjI3NDUsMjI3NDYsMjI3NDcsMjI3NDgsMjI3NDksMjI3NTAsMjI3NTEsMjI3NTIsMjI3NTMsMjI3NTQsMjI3NTUsMjI3NTcsMjI3NTgsMjI3NTksMjI3NjAsMjI3NjEsMjI3NjIsMjI3NjUsMjI3NjcsMjI3NjksMjI3NzAsMjI3NzIsMjI3NzMsMjI3NzUsMjI3NzYsMjI3NzgsMjI3NzksMjI3ODAsMjI3ODEsMjI3ODIsMjI3ODMsMjI3ODQsMjI3ODUsMjI3ODcsMjI3ODksMjI3OTAsMjI3OTIsMjI3OTMsMjI3OTQsMjI3OTUsMjI3OTYsMjI3OTgsMjI4MDAsMjI4MDEsMjI4MDIsMjI4MDMsMjI4MDcsMjI4MDgsMjI4MTEsMjI4MTMsMjI4MTQsMjI4MTYsMjI4MTcsMjI4MTgsMjI4MTksMjI4MjIsMjI4MjQsMjI4MjgsMjI4MzIsMjI4MzQsMjI4MzUsMjI4MzcsMjI4MzgsMjI4NDMsMjI4NDUsMjI4NDYsMjI4NDcsMjI4NDgsMjI4NTEsMjI4NTMsMjI4NTQsMjI4NTgsMjI4NjAsMjI4NjEsMjI4NjQsMjI4NjYsMjI4NjcsMjI4NzMsMjI4NzUsMjI4NzYsMjI4NzcsMjI4NzgsMjI4NzksMjI4ODEsMjI4ODMsMjI4ODQsMjI4ODYsMjI4ODcsMjI4ODgsMjI4ODksMjI4OTAsMjI4OTEsMjI4OTIsMjI4OTMsMjI4OTQsMjI4OTUsMjI4OTYsMjI4OTcsMjI4OTgsMjI5MDEsMjI5MDMsMjI5MDYsMjI5MDcsMjI5MDgsMjI5MTAsMjI5MTEsMjI5MTIsMjI5MTcsMjI5MjEsMjI5MjMsMjI5MjQsMjI5MjYsMjI5MjcsMjI5MjgsMjI5MjksMjI5MzIsMjI5MzMsMjI5MzYsMjI5MzgsMjI5MzksMjI5NDAsMjI5NDEsMjI5NDMsMjI5NDQsMjI5NDUsMjI5NDYsMjI5NTAsMjI5NTEsMjI5NTYsMjI5NTcsMjI5NjAsMjI5NjEsMjI5NjMsMjI5NjQsMjI5NjUsMjI5NjYsMjI5NjcsMjI5NjgsMjI5NzAsMjI5NzIsMjI5NzMsMjI5NzUsMjI5NzYsMjI5NzcsMjI5NzgsMjI5NzksMjI5ODAsMjI5ODEsMjI5ODMsMjI5ODQsMjI5ODUsMjI5ODgsMjI5ODksMjI5OTAsMjI5OTEsMjI5OTcsMjI5OTgsMjMwMDEsMjMwMDMsMjMwMDYsMjMwMDcsMjMwMDgsMjMwMDksMjMwMTAsMjMwMTIsMjMwMTQsMjMwMTUsMjMwMTcsMjMwMTgsMjMwMTksMjMwMjEsMjMwMjIsMjMwMjMsMjMwMjQsMjMwMjUsMjMwMjYsMjMwMjcsMjMwMjgsMjMwMjksMjMwMzAsMjMwMzEsMjMwMzIsMjMwMzQsMjMwMzYsMjMwMzcsMjMwMzgsMjMwNDAsMjMwNDIsMjMwNTAsMjMwNTEsMjMwNTMsMjMwNTQsMjMwNTUsMjMwNTYsMjMwNTgsMjMwNjAsMjMwNjEsMjMwNjIsMjMwNjMsMjMwNjUsMjMwNjYsMjMwNjcsMjMwNjksMjMwNzAsMjMwNzMsMjMwNzQsMjMwNzYsMjMwNzgsMjMwNzksMjMwODAsMjMwODIsMjMwODMsMjMwODQsMjMwODUsMjMwODYsMjMwODcsMjMwODgsMjMwOTEsMjMwOTMsMjMwOTUsMjMwOTYsMjMwOTcsMjMwOTgsMjMwOTksMjMxMDEsMjMxMDIsMjMxMDMsMjMxMDUsMjMxMDYsMjMxMDcsMjMxMDgsMjMxMDksMjMxMTEsMjMxMTIsMjMxMTUsMjMxMTYsMjMxMTcsMjMxMTgsMjMxMTksMjMxMjAsMjMxMjEsMjMxMjIsMjMxMjMsMjMxMjQsMjMxMjYsMjMxMjcsMjMxMjgsMjMxMjksMjMxMzEsMjMxMzIsMjMxMzMsMjMxMzQsMjMxMzUsMjMxMzYsMjMxMzcsMjMxMzksMjMxNDAsMjMxNDEsMjMxNDIsMjMxNDQsMjMxNDUsMjMxNDcsMjMxNDgsMjMxNDksMjMxNTAsMjMxNTEsMjMxNTIsMjMxNTMsMjMxNTQsMjMxNTUsMjMxNjAsMjMxNjEsMjMxNjMsMjMxNjQsMjMxNjUsMjMxNjYsMjMxNjgsMjMxNjksMjMxNzAsMjMxNzEsMjMxNzIsMjMxNzMsMjMxNzQsMjMxNzUsMjMxNzYsMjMxNzcsMjMxNzgsMjMxNzksMjMxODAsMjMxODEsMjMxODIsMjMxODMsMjMxODQsMjMxODUsMjMxODcsMjMxODgsMjMxODksMjMxOTAsMjMxOTEsMjMxOTIsMjMxOTMsMjMxOTYsMjMxOTcsMjMxOTgsMjMxOTksMjMyMDAsMjMyMDEsMjMyMDIsMjMyMDMsMjMyMDQsMjMyMDUsMjMyMDYsMjMyMDcsMjMyMDgsMjMyMDksMjMyMTEsMjMyMTIsMjMyMTMsMjMyMTQsMjMyMTUsMjMyMTYsMjMyMTcsMjMyMjAsMjMyMjIsMjMyMjMsMjMyMjUsMjMyMjYsMjMyMjcsMjMyMjgsMjMyMjksMjMyMzEsMjMyMzIsMjMyMzUsMjMyMzYsMjMyMzcsMjMyMzgsMjMyMzksMjMyNDAsMjMyNDIsMjMyNDMsMjMyNDUsMjMyNDYsMjMyNDcsMjMyNDgsMjMyNDksMjMyNTEsMjMyNTMsMjMyNTUsMjMyNTcsMjMyNTgsMjMyNTksMjMyNjEsMjMyNjIsMjMyNjMsMjMyNjYsMjMyNjgsMjMyNjksMjMyNzEsMjMyNzIsMjMyNzQsMjMyNzYsMjMyNzcsMjMyNzgsMjMyNzksMjMyODAsMjMyODIsMjMyODMsMjMyODQsMjMyODUsMjMyODYsMjMyODcsMjMyODgsMjMyODksMjMyOTAsMjMyOTEsMjMyOTIsMjMyOTMsMjMyOTQsMjMyOTUsMjMyOTYsMjMyOTcsMjMyOTgsMjMyOTksMjMzMDAsMjMzMDEsMjMzMDIsMjMzMDMsMjMzMDQsMjMzMDYsMjMzMDcsMjMzMDgsMjMzMDksMjMzMTAsMjMzMTEsMjMzMTIsMjMzMTMsMjMzMTQsMjMzMTUsMjMzMTYsMjMzMTcsMjMzMjAsMjMzMjEsMjMzMjIsMjMzMjMsMjMzMjQsMjMzMjUsMjMzMjYsMjMzMjcsMjMzMjgsMjMzMjksMjMzMzAsMjMzMzEsMjMzMzIsMjMzMzMsMjMzMzQsMjMzMzUsMjMzMzYsMjMzMzcsMjMzMzgsMjMzMzksMjMzNDAsMjMzNDEsMjMzNDIsMjMzNDMsMjMzNDQsMjMzNDUsMjMzNDcsMjMzNDksMjMzNTAsMjMzNTIsMjMzNTMsMjMzNTQsMjMzNTUsMjMzNTYsMjMzNTcsMjMzNTgsMjMzNTksMjMzNjEsMjMzNjIsMjMzNjMsMjMzNjQsMjMzNjUsMjMzNjYsMjMzNjcsMjMzNjgsMjMzNjksMjMzNzAsMjMzNzEsMjMzNzIsMjMzNzMsMjMzNzQsMjMzNzUsMjMzNzgsMjMzODIsMjMzOTAsMjMzOTIsMjMzOTMsMjMzOTksMjM0MDAsMjM0MDMsMjM0MDUsMjM0MDYsMjM0MDcsMjM0MTAsMjM0MTIsMjM0MTQsMjM0MTUsMjM0MTYsMjM0MTcsMjM0MTksMjM0MjAsMjM0MjIsMjM0MjMsMjM0MjYsMjM0MzAsMjM0MzQsMjM0MzcsMjM0MzgsMjM0NDAsMjM0NDEsMjM0NDIsMjM0NDQsMjM0NDYsMjM0NTUsMjM0NjMsMjM0NjQsMjM0NjUsMjM0NjgsMjM0NjksMjM0NzAsMjM0NzEsMjM0NzMsMjM0NzQsMjM0NzksMjM0ODIsMjM0ODMsMjM0ODQsMjM0ODgsMjM0ODksMjM0OTEsMjM0OTYsMjM0OTcsMjM0OTgsMjM0OTksMjM1MDEsMjM1MDIsMjM1MDMsMjM1MDUsMjM1MDgsMjM1MDksMjM1MTAsMjM1MTEsMjM1MTIsMjM1MTMsMjM1MTQsMjM1MTUsMjM1MTYsMjM1MjAsMjM1MjIsMjM1MjMsMjM1MjYsMjM1MjcsMjM1MjksMjM1MzAsMjM1MzEsMjM1MzIsMjM1MzMsMjM1MzUsMjM1MzcsMjM1MzgsMjM1MzksMjM1NDAsMjM1NDEsMjM1NDIsMjM1NDMsMjM1NDksMjM1NTAsMjM1NTIsMjM1NTQsMjM1NTUsMjM1NTcsMjM1NTksMjM1NjAsMjM1NjMsMjM1NjQsMjM1NjUsMjM1NjYsMjM1NjgsMjM1NzAsMjM1NzEsMjM1NzUsMjM1NzcsMjM1NzksMjM1ODIsMjM1ODMsMjM1ODQsMjM1ODUsMjM1ODcsMjM1OTAsMjM1OTIsMjM1OTMsMjM1OTQsMjM1OTUsMjM1OTcsMjM1OTgsMjM1OTksMjM2MDAsMjM2MDIsMjM2MDMsMjM2MDUsMjM2MDYsMjM2MDcsMjM2MTksMjM2MjAsMjM2MjIsMjM2MjMsMjM2MjgsMjM2MjksMjM2MzQsMjM2MzUsMjM2MzYsMjM2MzgsMjM2MzksMjM2NDAsMjM2NDIsMjM2NDMsMjM2NDQsMjM2NDUsMjM2NDcsMjM2NTAsMjM2NTIsMjM2NTUsMjM2NTYsMjM2NTcsMjM2NTgsMjM2NTksMjM2NjAsMjM2NjEsMjM2NjQsMjM2NjYsMjM2NjcsMjM2NjgsMjM2NjksMjM2NzAsMjM2NzEsMjM2NzIsMjM2NzUsMjM2NzYsMjM2NzcsMjM2NzgsMjM2ODAsMjM2ODMsMjM2ODQsMjM2ODUsMjM2ODYsMjM2ODcsMjM2ODksMjM2OTAsMjM2OTEsMjM2OTQsMjM2OTUsMjM2OTgsMjM2OTksMjM3MDEsMjM3MDksMjM3MTAsMjM3MTEsMjM3MTIsMjM3MTMsMjM3MTYsMjM3MTcsMjM3MTgsMjM3MTksMjM3MjAsMjM3MjIsMjM3MjYsMjM3MjcsMjM3MjgsMjM3MzAsMjM3MzIsMjM3MzQsMjM3MzcsMjM3MzgsMjM3MzksMjM3NDAsMjM3NDIsMjM3NDQsMjM3NDYsMjM3NDcsMjM3NDksMjM3NTAsMjM3NTEsMjM3NTIsMjM3NTMsMjM3NTQsMjM3NTYsMjM3NTcsMjM3NTgsMjM3NTksMjM3NjAsMjM3NjEsMjM3NjMsMjM3NjQsMjM3NjUsMjM3NjYsMjM3NjcsMjM3NjgsMjM3NzAsMjM3NzEsMjM3NzIsMjM3NzMsMjM3NzQsMjM3NzUsMjM3NzYsMjM3NzgsMjM3NzksMjM3ODMsMjM3ODUsMjM3ODcsMjM3ODgsMjM3OTAsMjM3OTEsMjM3OTMsMjM3OTQsMjM3OTUsMjM3OTYsMjM3OTcsMjM3OTgsMjM3OTksMjM4MDAsMjM4MDEsMjM4MDIsMjM4MDQsMjM4MDUsMjM4MDYsMjM4MDcsMjM4MDgsMjM4MDksMjM4MTIsMjM4MTMsMjM4MTYsMjM4MTcsMjM4MTgsMjM4MTksMjM4MjAsMjM4MjEsMjM4MjMsMjM4MjQsMjM4MjUsMjM4MjYsMjM4MjcsMjM4MjksMjM4MzEsMjM4MzIsMjM4MzMsMjM4MzQsMjM4MzYsMjM4MzcsMjM4MzksMjM4NDAsMjM4NDEsMjM4NDIsMjM4NDMsMjM4NDUsMjM4NDgsMjM4NTAsMjM4NTEsMjM4NTIsMjM4NTUsMjM4NTYsMjM4NTcsMjM4NTgsMjM4NTksMjM4NjEsMjM4NjIsMjM4NjMsMjM4NjQsMjM4NjUsMjM4NjYsMjM4NjcsMjM4NjgsMjM4NzEsMjM4NzIsMjM4NzMsMjM4NzQsMjM4NzUsMjM4NzYsMjM4NzcsMjM4NzgsMjM4ODAsMjM4ODEsMjM4ODUsMjM4ODYsMjM4ODcsMjM4ODgsMjM4ODksMjM4OTAsMjM4OTEsMjM4OTIsMjM4OTMsMjM4OTQsMjM4OTUsMjM4OTcsMjM4OTgsMjM5MDAsMjM5MDIsMjM5MDMsMjM5MDQsMjM5MDUsMjM5MDYsMjM5MDcsMjM5MDgsMjM5MDksMjM5MTAsMjM5MTEsMjM5MTIsMjM5MTQsMjM5MTcsMjM5MTgsMjM5MjAsMjM5MjEsMjM5MjIsMjM5MjMsMjM5MjUsMjM5MjYsMjM5MjcsMjM5MjgsMjM5MjksMjM5MzAsMjM5MzEsMjM5MzIsMjM5MzMsMjM5MzQsMjM5MzUsMjM5MzYsMjM5MzcsMjM5MzksMjM5NDAsMjM5NDEsMjM5NDIsMjM5NDMsMjM5NDQsMjM5NDUsMjM5NDYsMjM5NDcsMjM5NDgsMjM5NDksMjM5NTAsMjM5NTEsMjM5NTIsMjM5NTMsMjM5NTQsMjM5NTUsMjM5NTYsMjM5NTcsMjM5NTgsMjM5NTksMjM5NjAsMjM5NjIsMjM5NjMsMjM5NjQsMjM5NjYsMjM5NjcsMjM5NjgsMjM5NjksMjM5NzAsMjM5NzEsMjM5NzIsMjM5NzMsMjM5NzQsMjM5NzUsMjM5NzYsMjM5NzcsMjM5NzgsMjM5NzksMjM5ODAsMjM5ODEsMjM5ODIsMjM5ODMsMjM5ODQsMjM5ODUsMjM5ODYsMjM5ODcsMjM5ODgsMjM5ODksMjM5OTAsMjM5OTIsMjM5OTMsMjM5OTQsMjM5OTUsMjM5OTYsMjM5OTcsMjM5OTgsMjM5OTksMjQwMDAsMjQwMDEsMjQwMDIsMjQwMDMsMjQwMDQsMjQwMDYsMjQwMDcsMjQwMDgsMjQwMDksMjQwMTAsMjQwMTEsMjQwMTIsMjQwMTQsMjQwMTUsMjQwMTYsMjQwMTcsMjQwMTgsMjQwMTksMjQwMjAsMjQwMjEsMjQwMjIsMjQwMjMsMjQwMjQsMjQwMjUsMjQwMjYsMjQwMjgsMjQwMzEsMjQwMzIsMjQwMzUsMjQwMzYsMjQwNDIsMjQwNDQsMjQwNDUsMjQwNDgsMjQwNTMsMjQwNTQsMjQwNTYsMjQwNTcsMjQwNTgsMjQwNTksMjQwNjAsMjQwNjMsMjQwNjQsMjQwNjgsMjQwNzEsMjQwNzMsMjQwNzQsMjQwNzUsMjQwNzcsMjQwNzgsMjQwODIsMjQwODMsMjQwODcsMjQwOTQsMjQwOTUsMjQwOTYsMjQwOTcsMjQwOTgsMjQwOTksMjQxMDAsMjQxMDEsMjQxMDQsMjQxMDUsMjQxMDYsMjQxMDcsMjQxMDgsMjQxMTEsMjQxMTIsMjQxMTQsMjQxMTUsMjQxMTYsMjQxMTcsMjQxMTgsMjQxMjEsMjQxMjIsMjQxMjYsMjQxMjcsMjQxMjgsMjQxMjksMjQxMzEsMjQxMzQsMjQxMzUsMjQxMzYsMjQxMzcsMjQxMzgsMjQxMzksMjQxNDEsMjQxNDIsMjQxNDMsMjQxNDQsMjQxNDUsMjQxNDYsMjQxNDcsMjQxNTAsMjQxNTEsMjQxNTIsMjQxNTMsMjQxNTQsMjQxNTYsMjQxNTcsMjQxNTksMjQxNjAsMjQxNjMsMjQxNjQsMjQxNjUsMjQxNjYsMjQxNjcsMjQxNjgsMjQxNjksMjQxNzAsMjQxNzEsMjQxNzIsMjQxNzMsMjQxNzQsMjQxNzUsMjQxNzYsMjQxNzcsMjQxODEsMjQxODMsMjQxODUsMjQxOTAsMjQxOTMsMjQxOTQsMjQxOTUsMjQxOTcsMjQyMDAsMjQyMDEsMjQyMDQsMjQyMDUsMjQyMDYsMjQyMTAsMjQyMTYsMjQyMTksMjQyMjEsMjQyMjUsMjQyMjYsMjQyMjcsMjQyMjgsMjQyMzIsMjQyMzMsMjQyMzQsMjQyMzUsMjQyMzYsMjQyMzgsMjQyMzksMjQyNDAsMjQyNDEsMjQyNDIsMjQyNDQsMjQyNTAsMjQyNTEsMjQyNTIsMjQyNTMsMjQyNTUsMjQyNTYsMjQyNTcsMjQyNTgsMjQyNTksMjQyNjAsMjQyNjEsMjQyNjIsMjQyNjMsMjQyNjQsMjQyNjcsMjQyNjgsMjQyNjksMjQyNzAsMjQyNzEsMjQyNzIsMjQyNzYsMjQyNzcsMjQyNzksMjQyODAsMjQyODEsMjQyODIsMjQyODQsMjQyODUsMjQyODYsMjQyODcsMjQyODgsMjQyODksMjQyOTAsMjQyOTEsMjQyOTIsMjQyOTMsMjQyOTQsMjQyOTUsMjQyOTcsMjQyOTksMjQzMDAsMjQzMDEsMjQzMDIsMjQzMDMsMjQzMDQsMjQzMDUsMjQzMDYsMjQzMDcsMjQzMDksMjQzMTIsMjQzMTMsMjQzMTUsMjQzMTYsMjQzMTcsMjQzMjUsMjQzMjYsMjQzMjcsMjQzMjksMjQzMzIsMjQzMzMsMjQzMzQsMjQzMzYsMjQzMzgsMjQzNDAsMjQzNDIsMjQzNDUsMjQzNDYsMjQzNDgsMjQzNDksMjQzNTAsMjQzNTMsMjQzNTQsMjQzNTUsMjQzNTYsMjQzNjAsMjQzNjMsMjQzNjQsMjQzNjYsMjQzNjgsMjQzNzAsMjQzNzEsMjQzNzIsMjQzNzMsMjQzNzQsMjQzNzUsMjQzNzYsMjQzNzksMjQzODEsMjQzODIsMjQzODMsMjQzODUsMjQzODYsMjQzODcsMjQzODgsMjQzODksMjQzOTAsMjQzOTEsMjQzOTIsMjQzOTMsMjQzOTQsMjQzOTUsMjQzOTYsMjQzOTcsMjQzOTgsMjQzOTksMjQ0MDEsMjQ0MDQsMjQ0MDksMjQ0MTAsMjQ0MTEsMjQ0MTIsMjQ0MTQsMjQ0MTUsMjQ0MTYsMjQ0MTksMjQ0MjEsMjQ0MjMsMjQ0MjQsMjQ0MjcsMjQ0MzAsMjQ0MzEsMjQ0MzQsMjQ0MzYsMjQ0MzcsMjQ0MzgsMjQ0NDAsMjQ0NDIsMjQ0NDUsMjQ0NDYsMjQ0NDcsMjQ0NTEsMjQ0NTQsMjQ0NjEsMjQ0NjIsMjQ0NjMsMjQ0NjUsMjQ0NjcsMjQ0NjgsMjQ0NzAsMjQ0NzQsMjQ0NzUsMjQ0NzcsMjQ0NzgsMjQ0NzksMjQ0ODAsMjQ0ODIsMjQ0ODMsMjQ0ODQsMjQ0ODUsMjQ0ODYsMjQ0ODcsMjQ0ODksMjQ0OTEsMjQ0OTIsMjQ0OTUsMjQ0OTYsMjQ0OTcsMjQ0OTgsMjQ0OTksMjQ1MDAsMjQ1MDIsMjQ1MDQsMjQ1MDUsMjQ1MDYsMjQ1MDcsMjQ1MTAsMjQ1MTEsMjQ1MTIsMjQ1MTMsMjQ1MTQsMjQ1MTksMjQ1MjAsMjQ1MjIsMjQ1MjMsMjQ1MjYsMjQ1MzEsMjQ1MzIsMjQ1MzMsMjQ1MzgsMjQ1MzksMjQ1NDAsMjQ1NDIsMjQ1NDMsMjQ1NDYsMjQ1NDcsMjQ1NDksMjQ1NTAsMjQ1NTIsMjQ1NTMsMjQ1NTYsMjQ1NTksMjQ1NjAsMjQ1NjIsMjQ1NjMsMjQ1NjQsMjQ1NjYsMjQ1NjcsMjQ1NjksMjQ1NzAsMjQ1NzIsMjQ1ODMsMjQ1ODQsMjQ1ODUsMjQ1ODcsMjQ1ODgsMjQ1OTIsMjQ1OTMsMjQ1OTUsMjQ1OTksMjQ2MDAsMjQ2MDIsMjQ2MDYsMjQ2MDcsMjQ2MTAsMjQ2MTEsMjQ2MTIsMjQ2MjAsMjQ2MjEsMjQ2MjIsMjQ2MjQsMjQ2MjUsMjQ2MjYsMjQ2MjcsMjQ2MjgsMjQ2MzAsMjQ2MzEsMjQ2MzIsMjQ2MzMsMjQ2MzQsMjQ2MzcsMjQ2MzgsMjQ2NDAsMjQ2NDQsMjQ2NDUsMjQ2NDYsMjQ2NDcsMjQ2NDgsMjQ2NDksMjQ2NTAsMjQ2NTIsMjQ2NTQsMjQ2NTUsMjQ2NTcsMjQ2NTksMjQ2NjAsMjQ2NjIsMjQ2NjMsMjQ2NjQsMjQ2NjcsMjQ2NjgsMjQ2NzAsMjQ2NzEsMjQ2NzIsMjQ2NzMsMjQ2NzcsMjQ2NzgsMjQ2ODYsMjQ2ODksMjQ2OTAsMjQ2OTIsMjQ2OTMsMjQ2OTUsMjQ3MDIsMjQ3MDQsMjQ3MDUsMjQ3MDYsMjQ3MDksMjQ3MTAsMjQ3MTEsMjQ3MTIsMjQ3MTQsMjQ3MTUsMjQ3MTgsMjQ3MTksMjQ3MjAsMjQ3MjEsMjQ3MjMsMjQ3MjUsMjQ3MjcsMjQ3MjgsMjQ3MjksMjQ3MzIsMjQ3MzQsMjQ3MzcsMjQ3MzgsMjQ3NDAsMjQ3NDEsMjQ3NDMsMjQ3NDUsMjQ3NDYsMjQ3NTAsMjQ3NTIsMjQ3NTUsMjQ3NTcsMjQ3NTgsMjQ3NTksMjQ3NjEsMjQ3NjIsMjQ3NjUsMjQ3NjYsMjQ3NjcsMjQ3NjgsMjQ3NjksMjQ3NzAsMjQ3NzEsMjQ3NzIsMjQ3NzUsMjQ3NzYsMjQ3NzcsMjQ3ODAsMjQ3ODEsMjQ3ODIsMjQ3ODMsMjQ3ODQsMjQ3ODYsMjQ3ODcsMjQ3ODgsMjQ3OTAsMjQ3OTEsMjQ3OTMsMjQ3OTUsMjQ3OTgsMjQ4MDEsMjQ4MDIsMjQ4MDMsMjQ4MDQsMjQ4MDUsMjQ4MTAsMjQ4MTcsMjQ4MTgsMjQ4MjEsMjQ4MjMsMjQ4MjQsMjQ4MjcsMjQ4MjgsMjQ4MjksMjQ4MzAsMjQ4MzEsMjQ4MzQsMjQ4MzUsMjQ4MzYsMjQ4MzcsMjQ4MzksMjQ4NDIsMjQ4NDMsMjQ4NDQsMjQ4NDgsMjQ4NDksMjQ4NTAsMjQ4NTEsMjQ4NTIsMjQ4NTQsMjQ4NTUsMjQ4NTYsMjQ4NTcsMjQ4NTksMjQ4NjAsMjQ4NjEsMjQ4NjIsMjQ4NjUsMjQ4NjYsMjQ4NjksMjQ4NzIsMjQ4NzMsMjQ4NzQsMjQ4NzYsMjQ4NzcsMjQ4NzgsMjQ4NzksMjQ4ODAsMjQ4ODEsMjQ4ODIsMjQ4ODMsMjQ4ODQsMjQ4ODUsMjQ4ODYsMjQ4ODcsMjQ4ODgsMjQ4ODksMjQ4OTAsMjQ4OTEsMjQ4OTIsMjQ4OTMsMjQ4OTQsMjQ4OTYsMjQ4OTcsMjQ4OTgsMjQ4OTksMjQ5MDAsMjQ5MDEsMjQ5MDIsMjQ5MDMsMjQ5MDUsMjQ5MDcsMjQ5MDksMjQ5MTEsMjQ5MTIsMjQ5MTQsMjQ5MTUsMjQ5MTYsMjQ5MTgsMjQ5MTksMjQ5MjAsMjQ5MjEsMjQ5MjIsMjQ5MjMsMjQ5MjQsMjQ5MjYsMjQ5MjcsMjQ5MjgsMjQ5MjksMjQ5MzEsMjQ5MzIsMjQ5MzMsMjQ5MzQsMjQ5MzcsMjQ5MzgsMjQ5MzksMjQ5NDAsMjQ5NDEsMjQ5NDIsMjQ5NDMsMjQ5NDUsMjQ5NDYsMjQ5NDcsMjQ5NDgsMjQ5NTAsMjQ5NTIsMjQ5NTMsMjQ5NTQsMjQ5NTUsMjQ5NTYsMjQ5NTcsMjQ5NTgsMjQ5NTksMjQ5NjAsMjQ5NjEsMjQ5NjIsMjQ5NjMsMjQ5NjQsMjQ5NjUsMjQ5NjYsMjQ5NjcsMjQ5NjgsMjQ5NjksMjQ5NzAsMjQ5NzIsMjQ5NzMsMjQ5NzUsMjQ5NzYsMjQ5NzcsMjQ5NzgsMjQ5NzksMjQ5ODEsMjQ5ODIsMjQ5ODMsMjQ5ODQsMjQ5ODUsMjQ5ODYsMjQ5ODcsMjQ5ODgsMjQ5OTAsMjQ5OTEsMjQ5OTIsMjQ5OTMsMjQ5OTQsMjQ5OTUsMjQ5OTYsMjQ5OTcsMjQ5OTgsMjUwMDIsMjUwMDMsMjUwMDUsMjUwMDYsMjUwMDcsMjUwMDgsMjUwMDksMjUwMTAsMjUwMTEsMjUwMTIsMjUwMTMsMjUwMTQsMjUwMTYsMjUwMTcsMjUwMTgsMjUwMTksMjUwMjAsMjUwMjEsMjUwMjMsMjUwMjQsMjUwMjUsMjUwMjcsMjUwMjgsMjUwMjksMjUwMzAsMjUwMzEsMjUwMzMsMjUwMzYsMjUwMzcsMjUwMzgsMjUwMzksMjUwNDAsMjUwNDMsMjUwNDUsMjUwNDYsMjUwNDcsMjUwNDgsMjUwNDksMjUwNTAsMjUwNTEsMjUwNTIsMjUwNTMsMjUwNTQsMjUwNTUsMjUwNTYsMjUwNTcsMjUwNTgsMjUwNTksMjUwNjAsMjUwNjEsMjUwNjMsMjUwNjQsMjUwNjUsMjUwNjYsMjUwNjcsMjUwNjgsMjUwNjksMjUwNzAsMjUwNzEsMjUwNzIsMjUwNzMsMjUwNzQsMjUwNzUsMjUwNzYsMjUwNzgsMjUwNzksMjUwODAsMjUwODEsMjUwODIsMjUwODMsMjUwODQsMjUwODUsMjUwODYsMjUwODgsMjUwODksMjUwOTAsMjUwOTEsMjUwOTIsMjUwOTMsMjUwOTUsMjUwOTcsMjUxMDcsMjUxMDgsMjUxMTMsMjUxMTYsMjUxMTcsMjUxMTgsMjUxMjAsMjUxMjMsMjUxMjYsMjUxMjcsMjUxMjgsMjUxMjksMjUxMzEsMjUxMzMsMjUxMzUsMjUxMzYsMjUxMzcsMjUxMzgsMjUxNDEsMjUxNDIsMjUxNDQsMjUxNDUsMjUxNDYsMjUxNDcsMjUxNDgsMjUxNTQsMjUxNTYsMjUxNTcsMjUxNTgsMjUxNjIsMjUxNjcsMjUxNjgsMjUxNzMsMjUxNzQsMjUxNzUsMjUxNzcsMjUxNzgsMjUxODAsMjUxODEsMjUxODIsMjUxODMsMjUxODQsMjUxODUsMjUxODYsMjUxODgsMjUxODksMjUxOTIsMjUyMDEsMjUyMDIsMjUyMDQsMjUyMDUsMjUyMDcsMjUyMDgsMjUyMTAsMjUyMTEsMjUyMTMsMjUyMTcsMjUyMTgsMjUyMTksMjUyMjEsMjUyMjIsMjUyMjMsMjUyMjQsMjUyMjcsMjUyMjgsMjUyMjksMjUyMzAsMjUyMzEsMjUyMzIsMjUyMzYsMjUyNDEsMjUyNDQsMjUyNDUsMjUyNDYsMjUyNTEsMjUyNTQsMjUyNTUsMjUyNTcsMjUyNTgsMjUyNjEsMjUyNjIsMjUyNjMsMjUyNjQsMjUyNjYsMjUyNjcsMjUyNjgsMjUyNzAsMjUyNzEsMjUyNzIsMjUyNzQsMjUyNzgsMjUyODAsMjUyODEsMjUyODMsMjUyOTEsMjUyOTUsMjUyOTcsMjUzMDEsMjUzMDksMjUzMTAsMjUzMTIsMjUzMTMsMjUzMTYsMjUzMjIsMjUzMjMsMjUzMjgsMjUzMzAsMjUzMzMsMjUzMzYsMjUzMzcsMjUzMzgsMjUzMzksMjUzNDQsMjUzNDcsMjUzNDgsMjUzNDksMjUzNTAsMjUzNTQsMjUzNTUsMjUzNTYsMjUzNTcsMjUzNTksMjUzNjAsMjUzNjIsMjUzNjMsMjUzNjQsMjUzNjUsMjUzNjcsMjUzNjgsMjUzNjksMjUzNzIsMjUzODIsMjUzODMsMjUzODUsMjUzODgsMjUzODksMjUzOTAsMjUzOTIsMjUzOTMsMjUzOTUsMjUzOTYsMjUzOTcsMjUzOTgsMjUzOTksMjU0MDAsMjU0MDMsMjU0MDQsMjU0MDYsMjU0MDcsMjU0MDgsMjU0MDksMjU0MTIsMjU0MTUsMjU0MTYsMjU0MTgsMjU0MjUsMjU0MjYsMjU0MjcsMjU0MjgsMjU0MzAsMjU0MzEsMjU0MzIsMjU0MzMsMjU0MzQsMjU0MzUsMjU0MzYsMjU0MzcsMjU0NDAsMjU0NDQsMjU0NDUsMjU0NDYsMjU0NDgsMjU0NTAsMjU0NTEsMjU0NTIsMjU0NTUsMjU0NTYsMjU0NTgsMjU0NTksMjU0NjAsMjU0NjEsMjU0NjQsMjU0NjUsMjU0NjgsMjU0NjksMjU0NzAsMjU0NzEsMjU0NzMsMjU0NzUsMjU0NzYsMjU0NzcsMjU0NzgsMjU0ODMsMjU0ODUsMjU0ODksMjU0OTEsMjU0OTIsMjU0OTMsMjU0OTUsMjU0OTcsMjU0OTgsMjU0OTksMjU1MDAsMjU1MDEsMjU1MDIsMjU1MDMsMjU1MDUsMjU1MDgsMjU1MTAsMjU1MTUsMjU1MTksMjU1MjEsMjU1MjIsMjU1MjUsMjU1MjYsMjU1MjksMjU1MzEsMjU1MzMsMjU1MzUsMjU1MzYsMjU1MzcsMjU1MzgsMjU1MzksMjU1NDEsMjU1NDMsMjU1NDQsMjU1NDYsMjU1NDcsMjU1NDgsMjU1NTMsMjU1NTUsMjU1NTYsMjU1NTcsMjU1NTksMjU1NjAsMjU1NjEsMjU1NjIsMjU1NjMsMjU1NjQsMjU1NjUsMjU1NjcsMjU1NzAsMjU1NzIsMjU1NzMsMjU1NzQsMjU1NzUsMjU1NzYsMjU1NzksMjU1ODAsMjU1ODIsMjU1ODMsMjU1ODQsMjU1ODUsMjU1ODcsMjU1ODksMjU1OTEsMjU1OTMsMjU1OTQsMjU1OTUsMjU1OTYsMjU1OTgsMjU2MDMsMjU2MDQsMjU2MDYsMjU2MDcsMjU2MDgsMjU2MDksMjU2MTAsMjU2MTMsMjU2MTQsMjU2MTcsMjU2MTgsMjU2MjEsMjU2MjIsMjU2MjMsMjU2MjQsMjU2MjUsMjU2MjYsMjU2MjksMjU2MzEsMjU2MzQsMjU2MzUsMjU2MzYsMjU2MzcsMjU2MzksMjU2NDAsMjU2NDEsMjU2NDMsMjU2NDYsMjU2NDcsMjU2NDgsMjU2NDksMjU2NTAsMjU2NTEsMjU2NTMsMjU2NTQsMjU2NTUsMjU2NTYsMjU2NTcsMjU2NTksMjU2NjAsMjU2NjIsMjU2NjQsMjU2NjYsMjU2NjcsMjU2NzMsMjU2NzUsMjU2NzYsMjU2NzcsMjU2NzgsMjU2NzksMjU2ODAsMjU2ODEsMjU2ODMsMjU2ODUsMjU2ODYsMjU2ODcsMjU2ODksMjU2OTAsMjU2OTEsMjU2OTIsMjU2OTMsMjU2OTUsMjU2OTYsMjU2OTcsMjU2OTgsMjU2OTksMjU3MDAsMjU3MDEsMjU3MDIsMjU3MDQsMjU3MDYsMjU3MDcsMjU3MDgsMjU3MTAsMjU3MTEsMjU3MTIsMjU3MTMsMjU3MTQsMjU3MTUsMjU3MTYsMjU3MTcsMjU3MTgsMjU3MTksMjU3MjMsMjU3MjQsMjU3MjUsMjU3MjYsMjU3MjcsMjU3MjgsMjU3MjksMjU3MzEsMjU3MzQsMjU3MzYsMjU3MzcsMjU3MzgsMjU3MzksMjU3NDAsMjU3NDEsMjU3NDIsMjU3NDMsMjU3NDQsMjU3NDcsMjU3NDgsMjU3NTEsMjU3NTIsMjU3NTQsMjU3NTUsMjU3NTYsMjU3NTcsMjU3NTksMjU3NjAsMjU3NjEsMjU3NjIsMjU3NjMsMjU3NjUsMjU3NjYsMjU3NjcsMjU3NjgsMjU3NzAsMjU3NzEsMjU3NzUsMjU3NzcsMjU3NzgsMjU3NzksMjU3ODAsMjU3ODIsMjU3ODUsMjU3ODcsMjU3ODksMjU3OTAsMjU3OTEsMjU3OTMsMjU3OTUsMjU3OTYsMjU3OTgsMjU3OTksMjU4MDAsMjU4MDEsMjU4MDIsMjU4MDMsMjU4MDQsMjU4MDcsMjU4MDksMjU4MTEsMjU4MTIsMjU4MTMsMjU4MTQsMjU4MTcsMjU4MTgsMjU4MTksMjU4MjAsMjU4MjEsMjU4MjMsMjU4MjQsMjU4MjUsMjU4MjcsMjU4MjksMjU4MzEsMjU4MzIsMjU4MzMsMjU4MzQsMjU4MzUsMjU4MzYsMjU4MzcsMjU4MzgsMjU4MzksMjU4NDAsMjU4NDEsMjU4NDIsMjU4NDMsMjU4NDQsMjU4NDUsMjU4NDYsMjU4NDcsMjU4NDgsMjU4NDksMjU4NTAsMjU4NTEsMjU4NTIsMjU4NTMsMjU4NTQsMjU4NTUsMjU4NTcsMjU4NTgsMjU4NTksMjU4NjAsMjU4NjEsMjU4NjIsMjU4NjMsMjU4NjQsMjU4NjYsMjU4NjcsMjU4NjgsMjU4NjksMjU4NzAsMjU4NzEsMjU4NzIsMjU4NzMsMjU4NzUsMjU4NzYsMjU4NzcsMjU4NzgsMjU4NzksMjU4ODEsMjU4ODIsMjU4ODMsMjU4ODQsMjU4ODUsMjU4ODYsMjU4ODcsMjU4ODgsMjU4ODksMjU4OTAsMjU4OTEsMjU4OTIsMjU4OTQsMjU4OTUsMjU4OTYsMjU4OTcsMjU4OTgsMjU5MDAsMjU5MDEsMjU5MDQsMjU5MDUsMjU5MDYsMjU5MDcsMjU5MTEsMjU5MTQsMjU5MTYsMjU5MTcsMjU5MjAsMjU5MjEsMjU5MjIsMjU5MjMsMjU5MjQsMjU5MjYsMjU5MjcsMjU5MzAsMjU5MzEsMjU5MzMsMjU5MzQsMjU5MzYsMjU5MzgsMjU5MzksMjU5NDAsMjU5NDMsMjU5NDQsMjU5NDYsMjU5NDgsMjU5NTEsMjU5NTIsMjU5NTMsMjU5NTYsMjU5NTcsMjU5NTksMjU5NjAsMjU5NjEsMjU5NjIsMjU5NjUsMjU5NjYsMjU5NjcsMjU5NjksMjU5NzEsMjU5NzMsMjU5NzQsMjU5NzYsMjU5NzcsMjU5NzgsMjU5NzksMjU5ODAsMjU5ODEsMjU5ODIsMjU5ODMsMjU5ODQsMjU5ODUsMjU5ODYsMjU5ODcsMjU5ODgsMjU5ODksMjU5OTAsMjU5OTIsMjU5OTMsMjU5OTQsMjU5OTcsMjU5OTgsMjU5OTksMjYwMDIsMjYwMDQsMjYwMDUsMjYwMDYsMjYwMDgsMjYwMTAsMjYwMTMsMjYwMTQsMjYwMTYsMjYwMTgsMjYwMTksMjYwMjIsMjYwMjQsMjYwMjYsMjYwMjgsMjYwMzAsMjYwMzMsMjYwMzQsMjYwMzUsMjYwMzYsMjYwMzcsMjYwMzgsMjYwMzksMjYwNDAsMjYwNDIsMjYwNDMsMjYwNDYsMjYwNDcsMjYwNDgsMjYwNTAsMjYwNTUsMjYwNTYsMjYwNTcsMjYwNTgsMjYwNjEsMjYwNjQsMjYwNjUsMjYwNjcsMjYwNjgsMjYwNjksMjYwNzIsMjYwNzMsMjYwNzQsMjYwNzUsMjYwNzYsMjYwNzcsMjYwNzgsMjYwNzksMjYwODEsMjYwODMsMjYwODQsMjYwOTAsMjYwOTEsMjYwOTgsMjYwOTksMjYxMDAsMjYxMDEsMjYxMDQsMjYxMDUsMjYxMDcsMjYxMDgsMjYxMDksMjYxMTAsMjYxMTEsMjYxMTMsMjYxMTYsMjYxMTcsMjYxMTksMjYxMjAsMjYxMjEsMjYxMjMsMjYxMjUsMjYxMjgsMjYxMjksMjYxMzAsMjYxMzQsMjYxMzUsMjYxMzYsMjYxMzgsMjYxMzksMjYxNDAsMjYxNDIsMjYxNDUsMjYxNDYsMjYxNDcsMjYxNDgsMjYxNTAsMjYxNTMsMjYxNTQsMjYxNTUsMjYxNTYsMjYxNTgsMjYxNjAsMjYxNjIsMjYxNjMsMjYxNjcsMjYxNjgsMjYxNjksMjYxNzAsMjYxNzEsMjYxNzMsMjYxNzUsMjYxNzYsMjYxNzgsMjYxODAsMjYxODEsMjYxODIsMjYxODMsMjYxODQsMjYxODUsMjYxODYsMjYxODksMjYxOTAsMjYxOTIsMjYxOTMsMjYyMDAsMjYyMDEsMjYyMDMsMjYyMDQsMjYyMDUsMjYyMDYsMjYyMDgsMjYyMTAsMjYyMTEsMjYyMTMsMjYyMTUsMjYyMTcsMjYyMTgsMjYyMTksMjYyMjAsMjYyMjEsMjYyMjUsMjYyMjYsMjYyMjcsMjYyMjksMjYyMzIsMjYyMzMsMjYyMzUsMjYyMzYsMjYyMzcsMjYyMzksMjYyNDAsMjYyNDEsMjYyNDMsMjYyNDUsMjYyNDYsMjYyNDgsMjYyNDksMjYyNTAsMjYyNTEsMjYyNTMsMjYyNTQsMjYyNTUsMjYyNTYsMjYyNTgsMjYyNTksMjYyNjAsMjYyNjEsMjYyNjQsMjYyNjUsMjYyNjYsMjYyNjcsMjYyNjgsMjYyNzAsMjYyNzEsMjYyNzIsMjYyNzMsMjYyNzQsMjYyNzUsMjYyNzYsMjYyNzcsMjYyNzgsMjYyODEsMjYyODIsMjYyODMsMjYyODQsMjYyODUsMjYyODcsMjYyODgsMjYyODksMjYyOTAsMjYyOTEsMjYyOTMsMjYyOTQsMjYyOTUsMjYyOTYsMjYyOTgsMjYyOTksMjYzMDAsMjYzMDEsMjYzMDMsMjYzMDQsMjYzMDUsMjYzMDYsMjYzMDcsMjYzMDgsMjYzMDksMjYzMTAsMjYzMTEsMjYzMTIsMjYzMTMsMjYzMTQsMjYzMTUsMjYzMTYsMjYzMTcsMjYzMTgsMjYzMTksMjYzMjAsMjYzMjEsMjYzMjIsMjYzMjMsMjYzMjQsMjYzMjUsMjYzMjYsMjYzMjcsMjYzMjgsMjYzMzAsMjYzMzQsMjYzMzUsMjYzMzYsMjYzMzcsMjYzMzgsMjYzMzksMjYzNDAsMjYzNDEsMjYzNDMsMjYzNDQsMjYzNDYsMjYzNDcsMjYzNDgsMjYzNDksMjYzNTAsMjYzNTEsMjYzNTMsMjYzNTcsMjYzNTgsMjYzNjAsMjYzNjIsMjYzNjMsMjYzNjUsMjYzNjksMjYzNzAsMjYzNzEsMjYzNzIsMjYzNzMsMjYzNzQsMjYzNzUsMjYzODAsMjYzODIsMjYzODMsMjYzODUsMjYzODYsMjYzODcsMjYzOTAsMjYzOTIsMjYzOTMsMjYzOTQsMjYzOTYsMjYzOTgsMjY0MDAsMjY0MDEsMjY0MDIsMjY0MDMsMjY0MDQsMjY0MDUsMjY0MDcsMjY0MDksMjY0MTQsMjY0MTYsMjY0MTgsMjY0MTksMjY0MjIsMjY0MjMsMjY0MjQsMjY0MjUsMjY0MjcsMjY0MjgsMjY0MzAsMjY0MzEsMjY0MzMsMjY0MzYsMjY0MzcsMjY0MzksMjY0NDIsMjY0NDMsMjY0NDUsMjY0NTAsMjY0NTIsMjY0NTMsMjY0NTUsMjY0NTYsMjY0NTcsMjY0NTgsMjY0NTksMjY0NjEsMjY0NjYsMjY0NjcsMjY0NjgsMjY0NzAsMjY0NzEsMjY0NzUsMjY0NzYsMjY0NzgsMjY0ODEsMjY0ODQsMjY0ODYsMjY0ODgsMjY0ODksMjY0OTAsMjY0OTEsMjY0OTMsMjY0OTYsMjY0OTgsMjY0OTksMjY1MDEsMjY1MDIsMjY1MDQsMjY1MDYsMjY1MDgsMjY1MDksMjY1MTAsMjY1MTEsMjY1MTMsMjY1MTQsMjY1MTUsMjY1MTYsMjY1MTgsMjY1MjEsMjY1MjMsMjY1MjcsMjY1MjgsMjY1MjksMjY1MzIsMjY1MzQsMjY1MzcsMjY1NDAsMjY1NDIsMjY1NDUsMjY1NDYsMjY1NDgsMjY1NTMsMjY1NTQsMjY1NTUsMjY1NTYsMjY1NTcsMjY1NTgsMjY1NTksMjY1NjAsMjY1NjIsMjY1NjUsMjY1NjYsMjY1NjcsMjY1NjgsMjY1NjksMjY1NzAsMjY1NzEsMjY1NzIsMjY1NzMsMjY1NzQsMjY1ODEsMjY1ODIsMjY1ODMsMjY1ODcsMjY1OTEsMjY1OTMsMjY1OTUsMjY1OTYsMjY1OTgsMjY1OTksMjY2MDAsMjY2MDIsMjY2MDMsMjY2MDUsMjY2MDYsMjY2MTAsMjY2MTMsMjY2MTQsMjY2MTUsMjY2MTYsMjY2MTcsMjY2MTgsMjY2MTksMjY2MjAsMjY2MjIsMjY2MjUsMjY2MjYsMjY2MjcsMjY2MjgsMjY2MzAsMjY2MzcsMjY2NDAsMjY2NDIsMjY2NDQsMjY2NDUsMjY2NDgsMjY2NDksMjY2NTAsMjY2NTEsMjY2NTIsMjY2NTQsMjY2NTUsMjY2NTYsMjY2NTgsMjY2NTksMjY2NjAsMjY2NjEsMjY2NjIsMjY2NjMsMjY2NjQsMjY2NjcsMjY2NjgsMjY2NjksMjY2NzAsMjY2NzEsMjY2NzIsMjY2NzMsMjY2NzYsMjY2NzcsMjY2NzgsMjY2ODIsMjY2ODMsMjY2ODcsMjY2OTUsMjY2OTksMjY3MDEsMjY3MDMsMjY3MDYsMjY3MTAsMjY3MTEsMjY3MTIsMjY3MTMsMjY3MTQsMjY3MTUsMjY3MTYsMjY3MTcsMjY3MTgsMjY3MTksMjY3MzAsMjY3MzIsMjY3MzMsMjY3MzQsMjY3MzUsMjY3MzYsMjY3MzcsMjY3MzgsMjY3MzksMjY3NDEsMjY3NDQsMjY3NDUsMjY3NDYsMjY3NDcsMjY3NDgsMjY3NDksMjY3NTAsMjY3NTEsMjY3NTIsMjY3NTQsMjY3NTYsMjY3NTksMjY3NjAsMjY3NjEsMjY3NjIsMjY3NjMsMjY3NjQsMjY3NjUsMjY3NjYsMjY3NjgsMjY3NjksMjY3NzAsMjY3NzIsMjY3NzMsMjY3NzQsMjY3NzYsMjY3NzcsMjY3NzgsMjY3NzksMjY3ODAsMjY3ODEsMjY3ODIsMjY3ODMsMjY3ODQsMjY3ODUsMjY3ODcsMjY3ODgsMjY3ODksMjY3OTMsMjY3OTQsMjY3OTUsMjY3OTYsMjY3OTgsMjY4MDEsMjY4MDIsMjY4MDQsMjY4MDYsMjY4MDcsMjY4MDgsMjY4MDksMjY4MTAsMjY4MTEsMjY4MTIsMjY4MTMsMjY4MTQsMjY4MTUsMjY4MTcsMjY4MTksMjY4MjAsMjY4MjEsMjY4MjIsMjY4MjMsMjY4MjQsMjY4MjYsMjY4MjgsMjY4MzAsMjY4MzEsMjY4MzIsMjY4MzMsMjY4MzUsMjY4MzYsMjY4MzgsMjY4MzksMjY4NDEsMjY4NDMsMjY4NDQsMjY4NDUsMjY4NDYsMjY4NDcsMjY4NDksMjY4NTAsMjY4NTIsMjY4NTMsMjY4NTQsMjY4NTUsMjY4NTYsMjY4NTcsMjY4NTgsMjY4NTksMjY4NjAsMjY4NjEsMjY4NjMsMjY4NjYsMjY4NjcsMjY4NjgsMjY4NzAsMjY4NzEsMjY4NzIsMjY4NzUsMjY4NzcsMjY4NzgsMjY4NzksMjY4ODAsMjY4ODIsMjY4ODMsMjY4ODQsMjY4ODYsMjY4ODcsMjY4ODgsMjY4ODksMjY4OTAsMjY4OTIsMjY4OTUsMjY4OTcsMjY4OTksMjY5MDAsMjY5MDEsMjY5MDIsMjY5MDMsMjY5MDQsMjY5MDUsMjY5MDYsMjY5MDcsMjY5MDgsMjY5MDksMjY5MTAsMjY5MTMsMjY5MTQsMjY5MTUsMjY5MTcsMjY5MTgsMjY5MTksMjY5MjAsMjY5MjEsMjY5MjIsMjY5MjMsMjY5MjQsMjY5MjYsMjY5MjcsMjY5MjksMjY5MzAsMjY5MzEsMjY5MzMsMjY5MzQsMjY5MzUsMjY5MzYsMjY5MzgsMjY5MzksMjY5NDAsMjY5NDIsMjY5NDQsMjY5NDUsMjY5NDcsMjY5NDgsMjY5NDksMjY5NTAsMjY5NTEsMjY5NTIsMjY5NTMsMjY5NTQsMjY5NTUsMjY5NTYsMjY5NTcsMjY5NTgsMjY5NTksMjY5NjAsMjY5NjEsMjY5NjIsMjY5NjMsMjY5NjUsMjY5NjYsMjY5NjgsMjY5NjksMjY5NzEsMjY5NzIsMjY5NzUsMjY5NzcsMjY5NzgsMjY5ODAsMjY5ODEsMjY5ODMsMjY5ODQsMjY5ODUsMjY5ODYsMjY5ODgsMjY5ODksMjY5OTEsMjY5OTIsMjY5OTQsMjY5OTUsMjY5OTYsMjY5OTcsMjY5OTgsMjcwMDIsMjcwMDMsMjcwMDUsMjcwMDYsMjcwMDcsMjcwMDksMjcwMTEsMjcwMTMsMjcwMTgsMjcwMTksMjcwMjAsMjcwMjIsMjcwMjMsMjcwMjQsMjcwMjUsMjcwMjYsMjcwMjcsMjcwMzAsMjcwMzEsMjcwMzMsMjcwMzQsMjcwMzcsMjcwMzgsMjcwMzksMjcwNDAsMjcwNDEsMjcwNDIsMjcwNDMsMjcwNDQsMjcwNDUsMjcwNDYsMjcwNDksMjcwNTAsMjcwNTIsMjcwNTQsMjcwNTUsMjcwNTYsMjcwNTgsMjcwNTksMjcwNjEsMjcwNjIsMjcwNjQsMjcwNjUsMjcwNjYsMjcwNjgsMjcwNjksMjcwNzAsMjcwNzEsMjcwNzIsMjcwNzQsMjcwNzUsMjcwNzYsMjcwNzcsMjcwNzgsMjcwNzksMjcwODAsMjcwODEsMjcwODMsMjcwODUsMjcwODcsMjcwODksMjcwOTAsMjcwOTEsMjcwOTMsMjcwOTQsMjcwOTUsMjcwOTYsMjcwOTcsMjcwOTgsMjcxMDAsMjcxMDEsMjcxMDIsMjcxMDUsMjcxMDYsMjcxMDcsMjcxMDgsMjcxMDksMjcxMTAsMjcxMTEsMjcxMTIsMjcxMTMsMjcxMTQsMjcxMTUsMjcxMTYsMjcxMTgsMjcxMTksMjcxMjAsMjcxMjEsMjcxMjMsMjcxMjQsMjcxMjUsMjcxMjYsMjcxMjcsMjcxMjgsMjcxMjksMjcxMzAsMjcxMzEsMjcxMzIsMjcxMzQsMjcxMzYsMjcxMzcsMjcxMzgsMjcxMzksMjcxNDAsMjcxNDEsMjcxNDIsMjcxNDMsMjcxNDQsMjcxNDUsMjcxNDcsMjcxNDgsMjcxNDksMjcxNTAsMjcxNTEsMjcxNTIsMjcxNTMsMjcxNTQsMjcxNTUsMjcxNTYsMjcxNTcsMjcxNTgsMjcxNjEsMjcxNjIsMjcxNjMsMjcxNjQsMjcxNjUsMjcxNjYsMjcxNjgsMjcxNzAsMjcxNzEsMjcxNzIsMjcxNzMsMjcxNzQsMjcxNzUsMjcxNzcsMjcxNzksMjcxODAsMjcxODEsMjcxODIsMjcxODQsMjcxODYsMjcxODcsMjcxODgsMjcxOTAsMjcxOTEsMjcxOTIsMjcxOTMsMjcxOTQsMjcxOTUsMjcxOTYsMjcxOTksMjcyMDAsMjcyMDEsMjcyMDIsMjcyMDMsMjcyMDUsMjcyMDYsMjcyMDgsMjcyMDksMjcyMTAsMjcyMTEsMjcyMTIsMjcyMTMsMjcyMTQsMjcyMTUsMjcyMTcsMjcyMTgsMjcyMTksMjcyMjAsMjcyMjEsMjcyMjIsMjcyMjMsMjcyMjYsMjcyMjgsMjcyMjksMjcyMzAsMjcyMzEsMjcyMzIsMjcyMzQsMjcyMzUsMjcyMzYsMjcyMzgsMjcyMzksMjcyNDAsMjcyNDEsMjcyNDIsMjcyNDMsMjcyNDQsMjcyNDUsMjcyNDYsMjcyNDcsMjcyNDgsMjcyNTAsMjcyNTEsMjcyNTIsMjcyNTMsMjcyNTQsMjcyNTUsMjcyNTYsMjcyNTgsMjcyNTksMjcyNjEsMjcyNjIsMjcyNjMsMjcyNjUsMjcyNjYsMjcyNjcsMjcyNjksMjcyNzAsMjcyNzEsMjcyNzIsMjcyNzMsMjcyNzQsMjcyNzUsMjcyNzYsMjcyNzcsMjcyNzksMjcyODIsMjcyODMsMjcyODQsMjcyODUsMjcyODYsMjcyODgsMjcyODksMjcyOTAsMjcyOTEsMjcyOTIsMjcyOTMsMjcyOTQsMjcyOTUsMjcyOTcsMjcyOTgsMjcyOTksMjczMDAsMjczMDEsMjczMDIsMjczMDMsMjczMDQsMjczMDYsMjczMDksMjczMTAsMjczMTEsMjczMTIsMjczMTMsMjczMTQsMjczMTUsMjczMTYsMjczMTcsMjczMTgsMjczMTksMjczMjAsMjczMjEsMjczMjIsMjczMjMsMjczMjQsMjczMjUsMjczMjYsMjczMjcsMjczMjgsMjczMjksMjczMzAsMjczMzEsMjczMzIsMjczMzMsMjczMzQsMjczMzUsMjczMzYsMjczMzcsMjczMzgsMjczMzksMjczNDAsMjczNDEsMjczNDIsMjczNDMsMjczNDQsMjczNDUsMjczNDYsMjczNDcsMjczNDgsMjczNDksMjczNTAsMjczNTEsMjczNTIsMjczNTMsMjczNTQsMjczNTUsMjczNTYsMjczNTcsMjczNTgsMjczNTksMjczNjAsMjczNjEsMjczNjIsMjczNjMsMjczNjQsMjczNjUsMjczNjYsMjczNjcsMjczNjgsMjczNjksMjczNzAsMjczNzEsMjczNzIsMjczNzMsMjczNzQsMjczNzUsMjczNzYsMjczNzcsMjczNzgsMjczNzksMjczODAsMjczODEsMjczODIsMjczODMsMjczODQsMjczODUsMjczODYsMjczODcsMjczODgsMjczODksMjczOTAsMjczOTEsMjczOTIsMjczOTMsMjczOTQsMjczOTUsMjczOTYsMjczOTcsMjczOTgsMjczOTksMjc0MDAsMjc0MDEsMjc0MDIsMjc0MDMsMjc0MDQsMjc0MDUsMjc0MDYsMjc0MDcsMjc0MDgsMjc0MDksMjc0MTAsMjc0MTEsMjc0MTIsMjc0MTMsMjc0MTQsMjc0MTUsMjc0MTYsMjc0MTcsMjc0MTgsMjc0MTksMjc0MjAsMjc0MjEsMjc0MjIsMjc0MjMsMjc0MjksMjc0MzAsMjc0MzIsMjc0MzMsMjc0MzQsMjc0MzUsMjc0MzYsMjc0MzcsMjc0MzgsMjc0MzksMjc0NDAsMjc0NDEsMjc0NDMsMjc0NDQsMjc0NDUsMjc0NDYsMjc0NDgsMjc0NTEsMjc0NTIsMjc0NTMsMjc0NTUsMjc0NTYsMjc0NTcsMjc0NTgsMjc0NjAsMjc0NjEsMjc0NjQsMjc0NjYsMjc0NjcsMjc0NjksMjc0NzAsMjc0NzEsMjc0NzIsMjc0NzMsMjc0NzQsMjc0NzUsMjc0NzYsMjc0NzcsMjc0NzgsMjc0NzksMjc0ODAsMjc0ODIsMjc0ODMsMjc0ODQsMjc0ODUsMjc0ODYsMjc0ODcsMjc0ODgsMjc0ODksMjc0OTYsMjc0OTcsMjc0OTksMjc1MDAsMjc1MDEsMjc1MDIsMjc1MDMsMjc1MDQsMjc1MDUsMjc1MDYsMjc1MDcsMjc1MDgsMjc1MDksMjc1MTAsMjc1MTEsMjc1MTIsMjc1MTQsMjc1MTcsMjc1MTgsMjc1MTksMjc1MjAsMjc1MjUsMjc1MjgsMjc1MzIsMjc1MzQsMjc1MzUsMjc1MzYsMjc1MzcsMjc1NDAsMjc1NDEsMjc1NDMsMjc1NDQsMjc1NDUsMjc1NDgsMjc1NDksMjc1NTAsMjc1NTEsMjc1NTIsMjc1NTQsMjc1NTUsMjc1NTYsMjc1NTcsMjc1NTgsMjc1NTksMjc1NjAsMjc1NjEsMjc1NjMsMjc1NjQsMjc1NjUsMjc1NjYsMjc1NjcsMjc1NjgsMjc1NjksMjc1NzAsMjc1NzQsMjc1NzYsMjc1NzcsMjc1NzgsMjc1NzksMjc1ODAsMjc1ODEsMjc1ODIsMjc1ODQsMjc1ODcsMjc1ODgsMjc1OTAsMjc1OTEsMjc1OTIsMjc1OTMsMjc1OTQsMjc1OTYsMjc1OTgsMjc2MDAsMjc2MDEsMjc2MDgsMjc2MTAsMjc2MTIsMjc2MTMsMjc2MTQsMjc2MTUsMjc2MTYsMjc2MTgsMjc2MTksMjc2MjAsMjc2MjEsMjc2MjIsMjc2MjMsMjc2MjQsMjc2MjUsMjc2MjgsMjc2MjksMjc2MzAsMjc2MzIsMjc2MzMsMjc2MzQsMjc2MzYsMjc2MzgsMjc2MzksMjc2NDAsMjc2NDIsMjc2NDMsMjc2NDQsMjc2NDYsMjc2NDcsMjc2NDgsMjc2NDksMjc2NTAsMjc2NTEsMjc2NTIsMjc2NTYsMjc2NTcsMjc2NTgsMjc2NTksMjc2NjAsMjc2NjIsMjc2NjYsMjc2NzEsMjc2NzYsMjc2NzcsMjc2NzgsMjc2ODAsMjc2ODMsMjc2ODUsMjc2OTEsMjc2OTIsMjc2OTMsMjc2OTcsMjc2OTksMjc3MDIsMjc3MDMsMjc3MDUsMjc3MDYsMjc3MDcsMjc3MDgsMjc3MTAsMjc3MTEsMjc3MTUsMjc3MTYsMjc3MTcsMjc3MjAsMjc3MjMsMjc3MjQsMjc3MjUsMjc3MjYsMjc3MjcsMjc3MjksMjc3MzAsMjc3MzEsMjc3MzQsMjc3MzYsMjc3MzcsMjc3MzgsMjc3NDYsMjc3NDcsMjc3NDksMjc3NTAsMjc3NTEsMjc3NTUsMjc3NTYsMjc3NTcsMjc3NTgsMjc3NTksMjc3NjEsMjc3NjMsMjc3NjUsMjc3NjcsMjc3NjgsMjc3NzAsMjc3NzEsMjc3NzIsMjc3NzUsMjc3NzYsMjc3ODAsMjc3ODMsMjc3ODYsMjc3ODcsMjc3ODksMjc3OTAsMjc3OTMsMjc3OTQsMjc3OTcsMjc3OTgsMjc3OTksMjc4MDAsMjc4MDIsMjc4MDQsMjc4MDUsMjc4MDYsMjc4MDgsMjc4MTAsMjc4MTYsMjc4MjAsMjc4MjMsMjc4MjQsMjc4MjgsMjc4MjksMjc4MzAsMjc4MzEsMjc4MzQsMjc4NDAsMjc4NDEsMjc4NDIsMjc4NDMsMjc4NDYsMjc4NDcsMjc4NDgsMjc4NTEsMjc4NTMsMjc4NTQsMjc4NTUsMjc4NTcsMjc4NTgsMjc4NjQsMjc4NjUsMjc4NjYsMjc4NjgsMjc4NjksMjc4NzEsMjc4NzYsMjc4NzgsMjc4NzksMjc4ODEsMjc4ODQsMjc4ODUsMjc4OTAsMjc4OTIsMjc4OTcsMjc5MDMsMjc5MDQsMjc5MDYsMjc5MDcsMjc5MDksMjc5MTAsMjc5MTIsMjc5MTMsMjc5MTQsMjc5MTcsMjc5MTksMjc5MjAsMjc5MjEsMjc5MjMsMjc5MjQsMjc5MjUsMjc5MjYsMjc5MjgsMjc5MzIsMjc5MzMsMjc5MzUsMjc5MzYsMjc5MzcsMjc5MzgsMjc5MzksMjc5NDAsMjc5NDIsMjc5NDQsMjc5NDUsMjc5NDgsMjc5NDksMjc5NTEsMjc5NTIsMjc5NTYsMjc5NTgsMjc5NTksMjc5NjAsMjc5NjIsMjc5NjcsMjc5NjgsMjc5NzAsMjc5NzIsMjc5NzcsMjc5ODAsMjc5ODQsMjc5ODksMjc5OTAsMjc5OTEsMjc5OTIsMjc5OTUsMjc5OTcsMjc5OTksMjgwMDEsMjgwMDIsMjgwMDQsMjgwMDUsMjgwMDcsMjgwMDgsMjgwMTEsMjgwMTIsMjgwMTMsMjgwMTYsMjgwMTcsMjgwMTgsMjgwMTksMjgwMjEsMjgwMjIsMjgwMjUsMjgwMjYsMjgwMjcsMjgwMjksMjgwMzAsMjgwMzEsMjgwMzIsMjgwMzMsMjgwMzUsMjgwMzYsMjgwMzgsMjgwMzksMjgwNDIsMjgwNDMsMjgwNDUsMjgwNDcsMjgwNDgsMjgwNTAsMjgwNTQsMjgwNTUsMjgwNTYsMjgwNTcsMjgwNTgsMjgwNjAsMjgwNjYsMjgwNjksMjgwNzYsMjgwNzcsMjgwODAsMjgwODEsMjgwODMsMjgwODQsMjgwODYsMjgwODcsMjgwODksMjgwOTAsMjgwOTEsMjgwOTIsMjgwOTMsMjgwOTQsMjgwOTcsMjgwOTgsMjgwOTksMjgxMDQsMjgxMDUsMjgxMDYsMjgxMDksMjgxMTAsMjgxMTEsMjgxMTIsMjgxMTQsMjgxMTUsMjgxMTYsMjgxMTcsMjgxMTksMjgxMjIsMjgxMjMsMjgxMjQsMjgxMjcsMjgxMzAsMjgxMzEsMjgxMzMsMjgxMzUsMjgxMzYsMjgxMzcsMjgxMzgsMjgxNDEsMjgxNDMsMjgxNDQsMjgxNDYsMjgxNDgsMjgxNDksMjgxNTAsMjgxNTIsMjgxNTQsMjgxNTcsMjgxNTgsMjgxNTksMjgxNjAsMjgxNjEsMjgxNjIsMjgxNjMsMjgxNjQsMjgxNjYsMjgxNjcsMjgxNjgsMjgxNjksMjgxNzEsMjgxNzUsMjgxNzgsMjgxNzksMjgxODEsMjgxODQsMjgxODUsMjgxODcsMjgxODgsMjgxOTAsMjgxOTEsMjgxOTQsMjgxOTgsMjgxOTksMjgyMDAsMjgyMDIsMjgyMDQsMjgyMDYsMjgyMDgsMjgyMDksMjgyMTEsMjgyMTMsMjgyMTQsMjgyMTUsMjgyMTcsMjgyMTksMjgyMjAsMjgyMjEsMjgyMjIsMjgyMjMsMjgyMjQsMjgyMjUsMjgyMjYsMjgyMjksMjgyMzAsMjgyMzEsMjgyMzIsMjgyMzMsMjgyMzQsMjgyMzUsMjgyMzYsMjgyMzksMjgyNDAsMjgyNDEsMjgyNDIsMjgyNDUsMjgyNDcsMjgyNDksMjgyNTAsMjgyNTIsMjgyNTMsMjgyNTQsMjgyNTYsMjgyNTcsMjgyNTgsMjgyNTksMjgyNjAsMjgyNjEsMjgyNjIsMjgyNjMsMjgyNjQsMjgyNjUsMjgyNjYsMjgyNjgsMjgyNjksMjgyNzEsMjgyNzIsMjgyNzMsMjgyNzQsMjgyNzUsMjgyNzYsMjgyNzcsMjgyNzgsMjgyNzksMjgyODAsMjgyODEsMjgyODIsMjgyODMsMjgyODQsMjgyODUsMjgyODgsMjgyODksMjgyOTAsMjgyOTIsMjgyOTUsMjgyOTYsMjgyOTgsMjgyOTksMjgzMDAsMjgzMDEsMjgzMDIsMjgzMDUsMjgzMDYsMjgzMDcsMjgzMDgsMjgzMDksMjgzMTAsMjgzMTEsMjgzMTMsMjgzMTQsMjgzMTUsMjgzMTcsMjgzMTgsMjgzMjAsMjgzMjEsMjgzMjMsMjgzMjQsMjgzMjYsMjgzMjgsMjgzMjksMjgzMzEsMjgzMzIsMjgzMzMsMjgzMzQsMjgzMzYsMjgzMzksMjgzNDEsMjgzNDQsMjgzNDUsMjgzNDgsMjgzNTAsMjgzNTEsMjgzNTIsMjgzNTUsMjgzNTYsMjgzNTcsMjgzNTgsMjgzNjAsMjgzNjEsMjgzNjIsMjgzNjQsMjgzNjUsMjgzNjYsMjgzNjgsMjgzNzAsMjgzNzQsMjgzNzYsMjgzNzcsMjgzNzksMjgzODAsMjgzODEsMjgzODcsMjgzOTEsMjgzOTQsMjgzOTUsMjgzOTYsMjgzOTcsMjgzOTgsMjgzOTksMjg0MDAsMjg0MDEsMjg0MDIsMjg0MDMsMjg0MDUsMjg0MDYsMjg0MDcsMjg0MDgsMjg0MTAsMjg0MTEsMjg0MTIsMjg0MTMsMjg0MTQsMjg0MTUsMjg0MTYsMjg0MTcsMjg0MTksMjg0MjAsMjg0MjEsMjg0MjMsMjg0MjQsMjg0MjYsMjg0MjcsMjg0MjgsMjg0MjksMjg0MzAsMjg0MzIsMjg0MzMsMjg0MzQsMjg0MzgsMjg0MzksMjg0NDAsMjg0NDEsMjg0NDIsMjg0NDMsMjg0NDQsMjg0NDUsMjg0NDYsMjg0NDcsMjg0NDksMjg0NTAsMjg0NTEsMjg0NTMsMjg0NTQsMjg0NTUsMjg0NTYsMjg0NjAsMjg0NjIsMjg0NjQsMjg0NjYsMjg0NjgsMjg0NjksMjg0NzEsMjg0NzIsMjg0NzMsMjg0NzQsMjg0NzUsMjg0NzYsMjg0NzcsMjg0NzksMjg0ODAsMjg0ODEsMjg0ODIsMjg0ODMsMjg0ODQsMjg0ODUsMjg0ODgsMjg0ODksMjg0OTAsMjg0OTIsMjg0OTQsMjg0OTUsMjg0OTYsMjg0OTcsMjg0OTgsMjg0OTksMjg1MDAsMjg1MDEsMjg1MDIsMjg1MDMsMjg1MDUsMjg1MDYsMjg1MDcsMjg1MDksMjg1MTEsMjg1MTIsMjg1MTMsMjg1MTUsMjg1MTYsMjg1MTcsMjg1MTksMjg1MjAsMjg1MjEsMjg1MjIsMjg1MjMsMjg1MjQsMjg1MjcsMjg1MjgsMjg1MjksMjg1MzEsMjg1MzMsMjg1MzQsMjg1MzUsMjg1MzcsMjg1MzksMjg1NDEsMjg1NDIsMjg1NDMsMjg1NDQsMjg1NDUsMjg1NDYsMjg1NDcsMjg1NDksMjg1NTAsMjg1NTEsMjg1NTQsMjg1NTUsMjg1NTksMjg1NjAsMjg1NjEsMjg1NjIsMjg1NjMsMjg1NjQsMjg1NjUsMjg1NjYsMjg1NjcsMjg1NjgsMjg1NjksMjg1NzAsMjg1NzEsMjg1NzMsMjg1NzQsMjg1NzUsMjg1NzYsMjg1NzgsMjg1NzksMjg1ODAsMjg1ODEsMjg1ODIsMjg1ODQsMjg1ODUsMjg1ODYsMjg1ODcsMjg1ODgsMjg1ODksMjg1OTAsMjg1OTEsMjg1OTIsMjg1OTMsMjg1OTQsMjg1OTYsMjg1OTcsMjg1OTksMjg2MDAsMjg2MDIsMjg2MDMsMjg2MDQsMjg2MDUsMjg2MDYsMjg2MDcsMjg2MDksMjg2MTEsMjg2MTIsMjg2MTMsMjg2MTQsMjg2MTUsMjg2MTYsMjg2MTgsMjg2MTksMjg2MjAsMjg2MjEsMjg2MjIsMjg2MjMsMjg2MjQsMjg2MjcsMjg2MjgsMjg2MjksMjg2MzAsMjg2MzEsMjg2MzIsMjg2MzMsMjg2MzQsMjg2MzUsMjg2MzYsMjg2MzcsMjg2MzksMjg2NDIsMjg2NDMsMjg2NDQsMjg2NDUsMjg2NDYsMjg2NDcsMjg2NDgsMjg2NDksMjg2NTAsMjg2NTEsMjg2NTIsMjg2NTMsMjg2NTYsMjg2NTcsMjg2NTgsMjg2NTksMjg2NjAsMjg2NjEsMjg2NjIsMjg2NjMsMjg2NjQsMjg2NjUsMjg2NjYsMjg2NjcsMjg2NjgsMjg2NjksMjg2NzAsMjg2NzEsMjg2NzIsMjg2NzMsMjg2NzQsMjg2NzUsMjg2NzYsMjg2NzcsMjg2NzgsMjg2NzksMjg2ODAsMjg2ODEsMjg2ODIsMjg2ODMsMjg2ODQsMjg2ODUsMjg2ODYsMjg2ODcsMjg2ODgsMjg2OTAsMjg2OTEsMjg2OTIsMjg2OTMsMjg2OTQsMjg2OTUsMjg2OTYsMjg2OTcsMjg3MDAsMjg3MDEsMjg3MDIsMjg3MDMsMjg3MDQsMjg3MDUsMjg3MDYsMjg3MDgsMjg3MDksMjg3MTAsMjg3MTEsMjg3MTIsMjg3MTMsMjg3MTQsMjg3MTUsMjg3MTYsMjg3MTcsMjg3MTgsMjg3MTksMjg3MjAsMjg3MjEsMjg3MjIsMjg3MjMsMjg3MjQsMjg3MjYsMjg3MjcsMjg3MjgsMjg3MzAsMjg3MzEsMjg3MzIsMjg3MzMsMjg3MzQsMjg3MzUsMjg3MzYsMjg3MzcsMjg3MzgsMjg3MzksMjg3NDAsMjg3NDEsMjg3NDIsMjg3NDMsMjg3NDQsMjg3NDUsMjg3NDYsMjg3NDcsMjg3NDksMjg3NTAsMjg3NTIsMjg3NTMsMjg3NTQsMjg3NTUsMjg3NTYsMjg3NTcsMjg3NTgsMjg3NTksMjg3NjAsMjg3NjEsMjg3NjIsMjg3NjMsMjg3NjQsMjg3NjUsMjg3NjcsMjg3NjgsMjg3NjksMjg3NzAsMjg3NzEsMjg3NzIsMjg3NzMsMjg3NzQsMjg3NzUsMjg3NzYsMjg3NzcsMjg3NzgsMjg3ODIsMjg3ODUsMjg3ODYsMjg3ODcsMjg3ODgsMjg3OTEsMjg3OTMsMjg3OTQsMjg3OTUsMjg3OTcsMjg4MDEsMjg4MDIsMjg4MDMsMjg4MDQsMjg4MDYsMjg4MDcsMjg4MDgsMjg4MTEsMjg4MTIsMjg4MTMsMjg4MTUsMjg4MTYsMjg4MTcsMjg4MTksMjg4MjMsMjg4MjQsMjg4MjYsMjg4MjcsMjg4MzAsMjg4MzEsMjg4MzIsMjg4MzMsMjg4MzQsMjg4MzUsMjg4MzYsMjg4MzcsMjg4MzgsMjg4MzksMjg4NDAsMjg4NDEsMjg4NDIsMjg4NDgsMjg4NTAsMjg4NTIsMjg4NTMsMjg4NTQsMjg4NTgsMjg4NjIsMjg4NjMsMjg4NjgsMjg4NjksMjg4NzAsMjg4NzEsMjg4NzMsMjg4NzUsMjg4NzYsMjg4NzcsMjg4NzgsMjg4NzksMjg4ODAsMjg4ODEsMjg4ODIsMjg4ODMsMjg4ODQsMjg4ODUsMjg4ODYsMjg4ODcsMjg4OTAsMjg4OTIsMjg4OTMsMjg4OTQsMjg4OTYsMjg4OTcsMjg4OTgsMjg4OTksMjg5MDEsMjg5MDYsMjg5MTAsMjg5MTIsMjg5MTMsMjg5MTQsMjg5MTUsMjg5MTYsMjg5MTcsMjg5MTgsMjg5MjAsMjg5MjIsMjg5MjMsMjg5MjQsMjg5MjYsMjg5MjcsMjg5MjgsMjg5MjksMjg5MzAsMjg5MzEsMjg5MzIsMjg5MzMsMjg5MzQsMjg5MzUsMjg5MzYsMjg5MzksMjg5NDAsMjg5NDEsMjg5NDIsMjg5NDMsMjg5NDUsMjg5NDYsMjg5NDgsMjg5NTEsMjg5NTUsMjg5NTYsMjg5NTcsMjg5NTgsMjg5NTksMjg5NjAsMjg5NjEsMjg5NjIsMjg5NjMsMjg5NjQsMjg5NjUsMjg5NjcsMjg5NjgsMjg5NjksMjg5NzAsMjg5NzEsMjg5NzIsMjg5NzMsMjg5NzQsMjg5NzgsMjg5NzksMjg5ODAsMjg5ODEsMjg5ODMsMjg5ODQsMjg5ODUsMjg5ODYsMjg5ODcsMjg5ODgsMjg5ODksMjg5OTAsMjg5OTEsMjg5OTIsMjg5OTMsMjg5OTQsMjg5OTUsMjg5OTYsMjg5OTgsMjg5OTksMjkwMDAsMjkwMDEsMjkwMDMsMjkwMDUsMjkwMDcsMjkwMDgsMjkwMDksMjkwMTAsMjkwMTEsMjkwMTIsMjkwMTMsMjkwMTQsMjkwMTUsMjkwMTYsMjkwMTcsMjkwMTgsMjkwMTksMjkwMjEsMjkwMjMsMjkwMjQsMjkwMjUsMjkwMjYsMjkwMjcsMjkwMjksMjkwMzMsMjkwMzQsMjkwMzUsMjkwMzYsMjkwMzcsMjkwMzksMjkwNDAsMjkwNDEsMjkwNDQsMjkwNDUsMjkwNDYsMjkwNDcsMjkwNDksMjkwNTEsMjkwNTIsMjkwNTQsMjkwNTUsMjkwNTYsMjkwNTcsMjkwNTgsMjkwNTksMjkwNjEsMjkwNjIsMjkwNjMsMjkwNjQsMjkwNjUsMjkwNjcsMjkwNjgsMjkwNjksMjkwNzAsMjkwNzIsMjkwNzMsMjkwNzQsMjkwNzUsMjkwNzcsMjkwNzgsMjkwNzksMjkwODIsMjkwODMsMjkwODQsMjkwODUsMjkwODYsMjkwODksMjkwOTAsMjkwOTEsMjkwOTIsMjkwOTMsMjkwOTQsMjkwOTUsMjkwOTcsMjkwOTgsMjkwOTksMjkxMDEsMjkxMDIsMjkxMDMsMjkxMDQsMjkxMDUsMjkxMDYsMjkxMDgsMjkxMTAsMjkxMTEsMjkxMTIsMjkxMTQsMjkxMTUsMjkxMTYsMjkxMTcsMjkxMTgsMjkxMTksMjkxMjAsMjkxMjEsMjkxMjIsMjkxMjQsMjkxMjUsMjkxMjYsMjkxMjcsMjkxMjgsMjkxMjksMjkxMzAsMjkxMzEsMjkxMzIsMjkxMzMsMjkxMzUsMjkxMzYsMjkxMzcsMjkxMzgsMjkxMzksMjkxNDIsMjkxNDMsMjkxNDQsMjkxNDUsMjkxNDYsMjkxNDcsMjkxNDgsMjkxNDksMjkxNTAsMjkxNTEsMjkxNTMsMjkxNTQsMjkxNTUsMjkxNTYsMjkxNTgsMjkxNjAsMjkxNjEsMjkxNjIsMjkxNjMsMjkxNjQsMjkxNjUsMjkxNjcsMjkxNjgsMjkxNjksMjkxNzAsMjkxNzEsMjkxNzIsMjkxNzMsMjkxNzQsMjkxNzUsMjkxNzYsMjkxNzgsMjkxNzksMjkxODAsMjkxODEsMjkxODIsMjkxODMsMjkxODQsMjkxODUsMjkxODYsMjkxODcsMjkxODgsMjkxODksMjkxOTEsMjkxOTIsMjkxOTMsMjkxOTQsMjkxOTUsMjkxOTYsMjkxOTcsMjkxOTgsMjkxOTksMjkyMDAsMjkyMDEsMjkyMDIsMjkyMDMsMjkyMDQsMjkyMDUsMjkyMDYsMjkyMDcsMjkyMDgsMjkyMDksMjkyMTAsMjkyMTEsMjkyMTIsMjkyMTQsMjkyMTUsMjkyMTYsMjkyMTcsMjkyMTgsMjkyMTksMjkyMjAsMjkyMjEsMjkyMjIsMjkyMjMsMjkyMjUsMjkyMjcsMjkyMjksMjkyMzAsMjkyMzEsMjkyMzQsMjkyMzUsMjkyMzYsMjkyNDIsMjkyNDQsMjkyNDYsMjkyNDgsMjkyNDksMjkyNTAsMjkyNTEsMjkyNTIsMjkyNTMsMjkyNTQsMjkyNTcsMjkyNTgsMjkyNTksMjkyNjIsMjkyNjMsMjkyNjQsMjkyNjUsMjkyNjcsMjkyNjgsMjkyNjksMjkyNzEsMjkyNzIsMjkyNzQsMjkyNzYsMjkyNzgsMjkyODAsMjkyODMsMjkyODQsMjkyODUsMjkyODgsMjkyOTAsMjkyOTEsMjkyOTIsMjkyOTMsMjkyOTYsMjkyOTcsMjkyOTksMjkzMDAsMjkzMDIsMjkzMDMsMjkzMDQsMjkzMDcsMjkzMDgsMjkzMDksMjkzMTQsMjkzMTUsMjkzMTcsMjkzMTgsMjkzMTksMjkzMjAsMjkzMjEsMjkzMjQsMjkzMjYsMjkzMjgsMjkzMjksMjkzMzEsMjkzMzIsMjkzMzMsMjkzMzQsMjkzMzUsMjkzMzYsMjkzMzcsMjkzMzgsMjkzMzksMjkzNDAsMjkzNDEsMjkzNDIsMjkzNDQsMjkzNDUsMjkzNDYsMjkzNDcsMjkzNDgsMjkzNDksMjkzNTAsMjkzNTEsMjkzNTIsMjkzNTMsMjkzNTQsMjkzNTUsMjkzNTgsMjkzNjEsMjkzNjIsMjkzNjMsMjkzNjUsMjkzNzAsMjkzNzEsMjkzNzIsMjkzNzMsMjkzNzQsMjkzNzUsMjkzNzYsMjkzODEsMjkzODIsMjkzODMsMjkzODUsMjkzODYsMjkzODcsMjkzODgsMjkzOTEsMjkzOTMsMjkzOTUsMjkzOTYsMjkzOTcsMjkzOTgsMjk0MDAsMjk0MDIsMjk0MDMsNTg1NjYsNTg1NjcsNTg1NjgsNTg1NjksNTg1NzAsNTg1NzEsNTg1NzIsNTg1NzMsNTg1NzQsNTg1NzUsNTg1NzYsNTg1NzcsNTg1NzgsNTg1NzksNTg1ODAsNTg1ODEsNTg1ODIsNTg1ODMsNTg1ODQsNTg1ODUsNTg1ODYsNTg1ODcsNTg1ODgsNTg1ODksNTg1OTAsNTg1OTEsNTg1OTIsNTg1OTMsNTg1OTQsNTg1OTUsNTg1OTYsNTg1OTcsNTg1OTgsNTg1OTksNTg2MDAsNTg2MDEsNTg2MDIsNTg2MDMsNTg2MDQsNTg2MDUsNTg2MDYsNTg2MDcsNTg2MDgsNTg2MDksNTg2MTAsNTg2MTEsNTg2MTIsNTg2MTMsNTg2MTQsNTg2MTUsNTg2MTYsNTg2MTcsNTg2MTgsNTg2MTksNTg2MjAsNTg2MjEsNTg2MjIsNTg2MjMsNTg2MjQsNTg2MjUsNTg2MjYsNTg2MjcsNTg2MjgsNTg2MjksNTg2MzAsNTg2MzEsNTg2MzIsNTg2MzMsNTg2MzQsNTg2MzUsNTg2MzYsNTg2MzcsNTg2MzgsNTg2MzksNTg2NDAsNTg2NDEsNTg2NDIsNTg2NDMsNTg2NDQsNTg2NDUsNTg2NDYsNTg2NDcsNTg2NDgsNTg2NDksNTg2NTAsNTg2NTEsNTg2NTIsNTg2NTMsNTg2NTQsNTg2NTUsNTg2NTYsNTg2NTcsNTg2NTgsNTg2NTksNTg2NjAsNTg2NjEsMTIyODgsMTIyODksMTIyOTAsMTgzLDcxMyw3MTEsMTY4LDEyMjkxLDEyMjkzLDgyMTIsNjUzNzQsODIxNCw4MjMwLDgyMTYsODIxNyw4MjIwLDgyMjEsMTIzMDgsMTIzMDksMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMTAsMTIzMTEsMTIzMDQsMTIzMDUsMTc3LDIxNSwyNDcsODc1OCw4NzQzLDg3NDQsODcyMSw4NzE5LDg3NDYsODc0NSw4NzEyLDg3NTksODczMCw4ODY5LDg3NDEsODczNiw4OTc4LDg4NTcsODc0Nyw4NzUwLDg4MDEsODc4MCw4Nzc2LDg3NjUsODczMyw4ODAwLDg4MTQsODgxNSw4ODA0LDg4MDUsODczNCw4NzU3LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTI4NCwxNjQsNjU1MDQsNjU1MDUsODI0MCwxNjcsODQ3MCw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsODI1MSw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3LDU4NjYyLDU4NjYzLDU4NjY0LDU4NjY1LDU4NjY2LDU4NjY3LDU4NjY4LDU4NjY5LDU4NjcwLDU4NjcxLDU4NjcyLDU4NjczLDU4Njc0LDU4Njc1LDU4Njc2LDU4Njc3LDU4Njc4LDU4Njc5LDU4NjgwLDU4NjgxLDU4NjgyLDU4NjgzLDU4Njg0LDU4Njg1LDU4Njg2LDU4Njg3LDU4Njg4LDU4Njg5LDU4NjkwLDU4NjkxLDU4NjkyLDU4NjkzLDU4Njk0LDU4Njk1LDU4Njk2LDU4Njk3LDU4Njk4LDU4Njk5LDU4NzAwLDU4NzAxLDU4NzAyLDU4NzAzLDU4NzA0LDU4NzA1LDU4NzA2LDU4NzA3LDU4NzA4LDU4NzA5LDU4NzEwLDU4NzExLDU4NzEyLDU4NzEzLDU4NzE0LDU4NzE1LDU4NzE2LDU4NzE3LDU4NzE4LDU4NzE5LDU4NzIwLDU4NzIxLDU4NzIyLDU4NzIzLDU4NzI0LDU4NzI1LDU4NzI2LDU4NzI3LDU4NzI4LDU4NzI5LDU4NzMwLDU4NzMxLDU4NzMyLDU4NzMzLDU4NzM0LDU4NzM1LDU4NzM2LDU4NzM3LDU4NzM4LDU4NzM5LDU4NzQwLDU4NzQxLDU4NzQyLDU4NzQzLDU4NzQ0LDU4NzQ1LDU4NzQ2LDU4NzQ3LDU4NzQ4LDU4NzQ5LDU4NzUwLDU4NzUxLDU4NzUyLDU4NzUzLDU4NzU0LDU4NzU1LDU4NzU2LDU4NzU3LDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksNTkyMzgsNTkyMzksNTkyNDAsNTkyNDEsNTkyNDIsNTkyNDMsOTM1Miw5MzUzLDkzNTQsOTM1NSw5MzU2LDkzNTcsOTM1OCw5MzU5LDkzNjAsOTM2MSw5MzYyLDkzNjMsOTM2NCw5MzY1LDkzNjYsOTM2Nyw5MzY4LDkzNjksOTM3MCw5MzcxLDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsOTM0Miw5MzQzLDkzNDQsOTM0NSw5MzQ2LDkzNDcsOTM0OCw5MzQ5LDkzNTAsOTM1MSw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDgzNjQsNTkyNDUsMTI4MzIsMTI4MzMsMTI4MzQsMTI4MzUsMTI4MzYsMTI4MzcsMTI4MzgsMTI4MzksMTI4NDAsMTI4NDEsNTkyNDYsNTkyNDcsODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw4NTU0LDg1NTUsNTkyNDgsNTkyNDksNTg3NTgsNTg3NTksNTg3NjAsNTg3NjEsNTg3NjIsNTg3NjMsNTg3NjQsNTg3NjUsNTg3NjYsNTg3NjcsNTg3NjgsNTg3NjksNTg3NzAsNTg3NzEsNTg3NzIsNTg3NzMsNTg3NzQsNTg3NzUsNTg3NzYsNTg3NzcsNTg3NzgsNTg3NzksNTg3ODAsNTg3ODEsNTg3ODIsNTg3ODMsNTg3ODQsNTg3ODUsNTg3ODYsNTg3ODcsNTg3ODgsNTg3ODksNTg3OTAsNTg3OTEsNTg3OTIsNTg3OTMsNTg3OTQsNTg3OTUsNTg3OTYsNTg3OTcsNTg3OTgsNTg3OTksNTg4MDAsNTg4MDEsNTg4MDIsNTg4MDMsNTg4MDQsNTg4MDUsNTg4MDYsNTg4MDcsNTg4MDgsNTg4MDksNTg4MTAsNTg4MTEsNTg4MTIsNTg4MTMsNTg4MTQsNTg4MTUsNTg4MTYsNTg4MTcsNTg4MTgsNTg4MTksNTg4MjAsNTg4MjEsNTg4MjIsNTg4MjMsNTg4MjQsNTg4MjUsNTg4MjYsNTg4MjcsNTg4MjgsNTg4MjksNTg4MzAsNTg4MzEsNTg4MzIsNTg4MzMsNTg4MzQsNTg4MzUsNTg4MzYsNTg4MzcsNTg4MzgsNTg4MzksNTg4NDAsNTg4NDEsNTg4NDIsNTg4NDMsNTg4NDQsNTg4NDUsNTg4NDYsNTg4NDcsNTg4NDgsNTg4NDksNTg4NTAsNTg4NTEsNTg4NTIsMTIyODgsNjUyODEsNjUyODIsNjUyODMsNjU1MDksNjUyODUsNjUyODYsNjUyODcsNjUyODgsNjUyODksNjUyOTAsNjUyOTEsNjUyOTIsNjUyOTMsNjUyOTQsNjUyOTUsNjUyOTYsNjUyOTcsNjUyOTgsNjUyOTksNjUzMDAsNjUzMDEsNjUzMDIsNjUzMDMsNjUzMDQsNjUzMDUsNjUzMDYsNjUzMDcsNjUzMDgsNjUzMDksNjUzMTAsNjUzMTEsNjUzMTIsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzMzksNjUzNDAsNjUzNDEsNjUzNDIsNjUzNDMsNjUzNDQsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsNjUzNzEsNjUzNzIsNjUzNzMsNjU1MDcsNTg4NTQsNTg4NTUsNTg4NTYsNTg4NTcsNTg4NTgsNTg4NTksNTg4NjAsNTg4NjEsNTg4NjIsNTg4NjMsNTg4NjQsNTg4NjUsNTg4NjYsNTg4NjcsNTg4NjgsNTg4NjksNTg4NzAsNTg4NzEsNTg4NzIsNTg4NzMsNTg4NzQsNTg4NzUsNTg4NzYsNTg4NzcsNTg4NzgsNTg4NzksNTg4ODAsNTg4ODEsNTg4ODIsNTg4ODMsNTg4ODQsNTg4ODUsNTg4ODYsNTg4ODcsNTg4ODgsNTg4ODksNTg4OTAsNTg4OTEsNTg4OTIsNTg4OTMsNTg4OTQsNTg4OTUsNTg4OTYsNTg4OTcsNTg4OTgsNTg4OTksNTg5MDAsNTg5MDEsNTg5MDIsNTg5MDMsNTg5MDQsNTg5MDUsNTg5MDYsNTg5MDcsNTg5MDgsNTg5MDksNTg5MTAsNTg5MTEsNTg5MTIsNTg5MTMsNTg5MTQsNTg5MTUsNTg5MTYsNTg5MTcsNTg5MTgsNTg5MTksNTg5MjAsNTg5MjEsNTg5MjIsNTg5MjMsNTg5MjQsNTg5MjUsNTg5MjYsNTg5MjcsNTg5MjgsNTg5MjksNTg5MzAsNTg5MzEsNTg5MzIsNTg5MzMsNTg5MzQsNTg5MzUsNTg5MzYsNTg5MzcsNTg5MzgsNTg5MzksNTg5NDAsNTg5NDEsNTg5NDIsNTg5NDMsNTg5NDQsNTg5NDUsNTg5NDYsNTg5NDcsNTg5NDgsNTg5NDksMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsNTkyNTAsNTkyNTEsNTkyNTIsNTkyNTMsNTkyNTQsNTkyNTUsNTkyNTYsNTkyNTcsNTkyNTgsNTkyNTksNTkyNjAsNTg5NTAsNTg5NTEsNTg5NTIsNTg5NTMsNTg5NTQsNTg5NTUsNTg5NTYsNTg5NTcsNTg5NTgsNTg5NTksNTg5NjAsNTg5NjEsNTg5NjIsNTg5NjMsNTg5NjQsNTg5NjUsNTg5NjYsNTg5NjcsNTg5NjgsNTg5NjksNTg5NzAsNTg5NzEsNTg5NzIsNTg5NzMsNTg5NzQsNTg5NzUsNTg5NzYsNTg5NzcsNTg5NzgsNTg5NzksNTg5ODAsNTg5ODEsNTg5ODIsNTg5ODMsNTg5ODQsNTg5ODUsNTg5ODYsNTg5ODcsNTg5ODgsNTg5ODksNTg5OTAsNTg5OTEsNTg5OTIsNTg5OTMsNTg5OTQsNTg5OTUsNTg5OTYsNTg5OTcsNTg5OTgsNTg5OTksNTkwMDAsNTkwMDEsNTkwMDIsNTkwMDMsNTkwMDQsNTkwMDUsNTkwMDYsNTkwMDcsNTkwMDgsNTkwMDksNTkwMTAsNTkwMTEsNTkwMTIsNTkwMTMsNTkwMTQsNTkwMTUsNTkwMTYsNTkwMTcsNTkwMTgsNTkwMTksNTkwMjAsNTkwMjEsNTkwMjIsNTkwMjMsNTkwMjQsNTkwMjUsNTkwMjYsNTkwMjcsNTkwMjgsNTkwMjksNTkwMzAsNTkwMzEsNTkwMzIsNTkwMzMsNTkwMzQsNTkwMzUsNTkwMzYsNTkwMzcsNTkwMzgsNTkwMzksNTkwNDAsNTkwNDEsNTkwNDIsNTkwNDMsNTkwNDQsNTkwNDUsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsNTkyNjEsNTkyNjIsNTkyNjMsNTkyNjQsNTkyNjUsNTkyNjYsNTkyNjcsNTkyNjgsNTkwNDYsNTkwNDcsNTkwNDgsNTkwNDksNTkwNTAsNTkwNTEsNTkwNTIsNTkwNTMsNTkwNTQsNTkwNTUsNTkwNTYsNTkwNTcsNTkwNTgsNTkwNTksNTkwNjAsNTkwNjEsNTkwNjIsNTkwNjMsNTkwNjQsNTkwNjUsNTkwNjYsNTkwNjcsNTkwNjgsNTkwNjksNTkwNzAsNTkwNzEsNTkwNzIsNTkwNzMsNTkwNzQsNTkwNzUsNTkwNzYsNTkwNzcsNTkwNzgsNTkwNzksNTkwODAsNTkwODEsNTkwODIsNTkwODMsNTkwODQsNTkwODUsNTkwODYsNTkwODcsNTkwODgsNTkwODksNTkwOTAsNTkwOTEsNTkwOTIsNTkwOTMsNTkwOTQsNTkwOTUsNTkwOTYsNTkwOTcsNTkwOTgsNTkwOTksNTkxMDAsNTkxMDEsNTkxMDIsNTkxMDMsNTkxMDQsNTkxMDUsNTkxMDYsNTkxMDcsNTkxMDgsNTkxMDksNTkxMTAsNTkxMTEsNTkxMTIsNTkxMTMsNTkxMTQsNTkxMTUsNTkxMTYsNTkxMTcsNTkxMTgsNTkxMTksNTkxMjAsNTkxMjEsNTkxMjIsNTkxMjMsNTkxMjQsNTkxMjUsNTkxMjYsNTkxMjcsNTkxMjgsNTkxMjksNTkxMzAsNTkxMzEsNTkxMzIsNTkxMzMsNTkxMzQsNTkxMzUsNTkxMzYsNTkxMzcsNTkxMzgsNTkxMzksNTkxNDAsNTkxNDEsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsNTkyNjksNTkyNzAsNTkyNzEsNTkyNzIsNTkyNzMsNTkyNzQsNTkyNzUsNTkyNzYsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksNTkyNzcsNTkyNzgsNTkyNzksNTkyODAsNTkyODEsNTkyODIsNTkyODMsNjUwNzcsNjUwNzgsNjUwODEsNjUwODIsNjUwODcsNjUwODgsNjUwODUsNjUwODYsNjUwODksNjUwOTAsNjUwOTEsNjUwOTIsNTkyODQsNTkyODUsNjUwODMsNjUwODQsNjUwNzksNjUwODAsNjUwNzMsNTkyODYsNjUwNzUsNjUwNzYsNTkyODcsNTkyODgsNTkyODksNTkyOTAsNTkyOTEsNTkyOTIsNTkyOTMsNTkyOTQsNTkyOTUsNTkxNDIsNTkxNDMsNTkxNDQsNTkxNDUsNTkxNDYsNTkxNDcsNTkxNDgsNTkxNDksNTkxNTAsNTkxNTEsNTkxNTIsNTkxNTMsNTkxNTQsNTkxNTUsNTkxNTYsNTkxNTcsNTkxNTgsNTkxNTksNTkxNjAsNTkxNjEsNTkxNjIsNTkxNjMsNTkxNjQsNTkxNjUsNTkxNjYsNTkxNjcsNTkxNjgsNTkxNjksNTkxNzAsNTkxNzEsNTkxNzIsNTkxNzMsNTkxNzQsNTkxNzUsNTkxNzYsNTkxNzcsNTkxNzgsNTkxNzksNTkxODAsNTkxODEsNTkxODIsNTkxODMsNTkxODQsNTkxODUsNTkxODYsNTkxODcsNTkxODgsNTkxODksNTkxOTAsNTkxOTEsNTkxOTIsNTkxOTMsNTkxOTQsNTkxOTUsNTkxOTYsNTkxOTcsNTkxOTgsNTkxOTksNTkyMDAsNTkyMDEsNTkyMDIsNTkyMDMsNTkyMDQsNTkyMDUsNTkyMDYsNTkyMDcsNTkyMDgsNTkyMDksNTkyMTAsNTkyMTEsNTkyMTIsNTkyMTMsNTkyMTQsNTkyMTUsNTkyMTYsNTkyMTcsNTkyMTgsNTkyMTksNTkyMjAsNTkyMjEsNTkyMjIsNTkyMjMsNTkyMjQsNTkyMjUsNTkyMjYsNTkyMjcsNTkyMjgsNTkyMjksNTkyMzAsNTkyMzEsNTkyMzIsNTkyMzMsNTkyMzQsNTkyMzUsNTkyMzYsNTkyMzcsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsNTkyOTYsNTkyOTcsNTkyOTgsNTkyOTksNTkzMDAsNTkzMDEsNTkzMDIsNTkzMDMsNTkzMDQsNTkzMDUsNTkzMDYsNTkzMDcsNTkzMDgsNTkzMDksNTkzMTAsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsNTkzMTEsNTkzMTIsNTkzMTMsNTkzMTQsNTkzMTUsNTkzMTYsNTkzMTcsNTkzMTgsNTkzMTksNTkzMjAsNTkzMjEsNTkzMjIsNTkzMjMsNzE0LDcxNSw3MjksODIxMSw4MjEzLDgyMjksODI0NSw4NDUzLDg0NTcsODU5OCw4NTk5LDg2MDAsODYwMSw4NzI1LDg3MzUsODczOSw4Nzg2LDg4MDYsODgwNyw4ODk1LDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NTgxLDk1ODIsOTU4Myw5NTg0LDk1ODUsOTU4Niw5NTg3LDk2MDEsOTYwMiw5NjAzLDk2MDQsOTYwNSw5NjA2LDk2MDcsOTYwOCw5NjA5LDk2MTAsOTYxMSw5NjEyLDk2MTMsOTYxNCw5NjE1LDk2MTksOTYyMCw5NjIxLDk2NjAsOTY2MSw5Njk4LDk2OTksOTcwMCw5NzAxLDk3MzcsODg1MywxMjMwNiwxMjMxNywxMjMxOCw1OTMyNCw1OTMyNSw1OTMyNiw1OTMyNyw1OTMyOCw1OTMyOSw1OTMzMCw1OTMzMSw1OTMzMiw1OTMzMyw1OTMzNCwyNTcsMjI1LDQ2MiwyMjQsMjc1LDIzMywyODMsMjMyLDI5OSwyMzcsNDY0LDIzNiwzMzMsMjQzLDQ2NiwyNDIsMzYzLDI1MCw0NjgsMjQ5LDQ3MCw0NzIsNDc0LDQ3NiwyNTIsMjM0LDU5Myw1OTMzNSwzMjQsMzI4LDUwNSw2MDksNTkzMzcsNTkzMzgsNTkzMzksNTkzNDAsMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNTkzNDEsNTkzNDIsNTkzNDMsNTkzNDQsNTkzNDUsNTkzNDYsNTkzNDcsNTkzNDgsNTkzNDksNTkzNTAsNTkzNTEsNTkzNTIsNTkzNTMsNTkzNTQsNTkzNTUsNTkzNTYsNTkzNTcsNTkzNTgsNTkzNTksNTkzNjAsNTkzNjEsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMTI5NjMsMTMxOTgsMTMxOTksMTMyMTIsMTMyMTMsMTMyMTQsMTMyMTcsMTMyNTIsMTMyNjIsMTMyNjUsMTMyNjYsMTMyNjksNjUwNzIsNjU1MDYsNjU1MDgsNTkzNjIsODQ4MSwxMjg0OSw1OTM2Myw4MjA4LDU5MzY0LDU5MzY1LDU5MzY2LDEyNTQwLDEyNDQzLDEyNDQ0LDEyNTQxLDEyNTQyLDEyMjk0LDEyNDQ1LDEyNDQ2LDY1MDk3LDY1MDk4LDY1MDk5LDY1MTAwLDY1MTAxLDY1MTAyLDY1MTAzLDY1MTA0LDY1MTA1LDY1MTA2LDY1MTA4LDY1MTA5LDY1MTEwLDY1MTExLDY1MTEzLDY1MTE0LDY1MTE1LDY1MTE2LDY1MTE3LDY1MTE4LDY1MTE5LDY1MTIwLDY1MTIxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1MTI4LDY1MTI5LDY1MTMwLDY1MTMxLDEyMzUwLDEyMjcyLDEyMjczLDEyMjc0LDEyMjc1LDEyMjc2LDEyMjc3LDEyMjc4LDEyMjc5LDEyMjgwLDEyMjgxLDEyMjgyLDEyMjgzLDEyMjk1LDU5MzgwLDU5MzgxLDU5MzgyLDU5MzgzLDU5Mzg0LDU5Mzg1LDU5Mzg2LDU5Mzg3LDU5Mzg4LDU5Mzg5LDU5MzkwLDU5MzkxLDU5MzkyLDk0NzIsOTQ3Myw5NDc0LDk0NzUsOTQ3Niw5NDc3LDk0NzgsOTQ3OSw5NDgwLDk0ODEsOTQ4Miw5NDgzLDk0ODQsOTQ4NSw5NDg2LDk0ODcsOTQ4OCw5NDg5LDk0OTAsOTQ5MSw5NDkyLDk0OTMsOTQ5NCw5NDk1LDk0OTYsOTQ5Nyw5NDk4LDk0OTksOTUwMCw5NTAxLDk1MDIsOTUwMyw5NTA0LDk1MDUsOTUwNiw5NTA3LDk1MDgsOTUwOSw5NTEwLDk1MTEsOTUxMiw5NTEzLDk1MTQsOTUxNSw5NTE2LDk1MTcsOTUxOCw5NTE5LDk1MjAsOTUyMSw5NTIyLDk1MjMsOTUyNCw5NTI1LDk1MjYsOTUyNyw5NTI4LDk1MjksOTUzMCw5NTMxLDk1MzIsOTUzMyw5NTM0LDk1MzUsOTUzNiw5NTM3LDk1MzgsOTUzOSw5NTQwLDk1NDEsOTU0Miw5NTQzLDk1NDQsOTU0NSw5NTQ2LDk1NDcsNTkzOTMsNTkzOTQsNTkzOTUsNTkzOTYsNTkzOTcsNTkzOTgsNTkzOTksNTk0MDAsNTk0MDEsNTk0MDIsNTk0MDMsNTk0MDQsNTk0MDUsNTk0MDYsNTk0MDcsMjk0MDQsMjk0MDUsMjk0MDcsMjk0MTAsMjk0MTEsMjk0MTIsMjk0MTMsMjk0MTQsMjk0MTUsMjk0MTgsMjk0MTksMjk0MjksMjk0MzAsMjk0MzMsMjk0MzcsMjk0MzgsMjk0MzksMjk0NDAsMjk0NDIsMjk0NDQsMjk0NDUsMjk0NDYsMjk0NDcsMjk0NDgsMjk0NDksMjk0NTEsMjk0NTIsMjk0NTMsMjk0NTUsMjk0NTYsMjk0NTcsMjk0NTgsMjk0NjAsMjk0NjQsMjk0NjUsMjk0NjYsMjk0NzEsMjk0NzIsMjk0NzUsMjk0NzYsMjk0NzgsMjk0NzksMjk0ODAsMjk0ODUsMjk0ODcsMjk0ODgsMjk0OTAsMjk0OTEsMjk0OTMsMjk0OTQsMjk0OTgsMjk0OTksMjk1MDAsMjk1MDEsMjk1MDQsMjk1MDUsMjk1MDYsMjk1MDcsMjk1MDgsMjk1MDksMjk1MTAsMjk1MTEsMjk1MTIsMjk1MTMsMjk1MTQsMjk1MTUsMjk1MTYsMjk1MTgsMjk1MTksMjk1MjEsMjk1MjMsMjk1MjQsMjk1MjUsMjk1MjYsMjk1MjgsMjk1MjksMjk1MzAsMjk1MzEsMjk1MzIsMjk1MzMsMjk1MzQsMjk1MzUsMjk1MzcsMjk1MzgsMjk1MzksMjk1NDAsMjk1NDEsMjk1NDIsMjk1NDMsMjk1NDQsMjk1NDUsMjk1NDYsMjk1NDcsMjk1NTAsMjk1NTIsMjk1NTMsNTczNDQsNTczNDUsNTczNDYsNTczNDcsNTczNDgsNTczNDksNTczNTAsNTczNTEsNTczNTIsNTczNTMsNTczNTQsNTczNTUsNTczNTYsNTczNTcsNTczNTgsNTczNTksNTczNjAsNTczNjEsNTczNjIsNTczNjMsNTczNjQsNTczNjUsNTczNjYsNTczNjcsNTczNjgsNTczNjksNTczNzAsNTczNzEsNTczNzIsNTczNzMsNTczNzQsNTczNzUsNTczNzYsNTczNzcsNTczNzgsNTczNzksNTczODAsNTczODEsNTczODIsNTczODMsNTczODQsNTczODUsNTczODYsNTczODcsNTczODgsNTczODksNTczOTAsNTczOTEsNTczOTIsNTczOTMsNTczOTQsNTczOTUsNTczOTYsNTczOTcsNTczOTgsNTczOTksNTc0MDAsNTc0MDEsNTc0MDIsNTc0MDMsNTc0MDQsNTc0MDUsNTc0MDYsNTc0MDcsNTc0MDgsNTc0MDksNTc0MTAsNTc0MTEsNTc0MTIsNTc0MTMsNTc0MTQsNTc0MTUsNTc0MTYsNTc0MTcsNTc0MTgsNTc0MTksNTc0MjAsNTc0MjEsNTc0MjIsNTc0MjMsNTc0MjQsNTc0MjUsNTc0MjYsNTc0MjcsNTc0MjgsNTc0MjksNTc0MzAsNTc0MzEsNTc0MzIsNTc0MzMsNTc0MzQsNTc0MzUsNTc0MzYsNTc0MzcsMjk1NTQsMjk1NTUsMjk1NTYsMjk1NTcsMjk1NTgsMjk1NTksMjk1NjAsMjk1NjEsMjk1NjIsMjk1NjMsMjk1NjQsMjk1NjUsMjk1NjcsMjk1NjgsMjk1NjksMjk1NzAsMjk1NzEsMjk1NzMsMjk1NzQsMjk1NzYsMjk1NzgsMjk1ODAsMjk1ODEsMjk1ODMsMjk1ODQsMjk1ODYsMjk1ODcsMjk1ODgsMjk1ODksMjk1OTEsMjk1OTIsMjk1OTMsMjk1OTQsMjk1OTYsMjk1OTcsMjk1OTgsMjk2MDAsMjk2MDEsMjk2MDMsMjk2MDQsMjk2MDUsMjk2MDYsMjk2MDcsMjk2MDgsMjk2MTAsMjk2MTIsMjk2MTMsMjk2MTcsMjk2MjAsMjk2MjEsMjk2MjIsMjk2MjQsMjk2MjUsMjk2MjgsMjk2MjksMjk2MzAsMjk2MzEsMjk2MzMsMjk2MzUsMjk2MzYsMjk2MzcsMjk2MzgsMjk2MzksMjk2NDMsMjk2NDQsMjk2NDYsMjk2NTAsMjk2NTEsMjk2NTIsMjk2NTMsMjk2NTQsMjk2NTUsMjk2NTYsMjk2NTgsMjk2NTksMjk2NjAsMjk2NjEsMjk2NjMsMjk2NjUsMjk2NjYsMjk2NjcsMjk2NjgsMjk2NzAsMjk2NzIsMjk2NzQsMjk2NzUsMjk2NzYsMjk2NzgsMjk2NzksMjk2ODAsMjk2ODEsMjk2ODMsMjk2ODQsMjk2ODUsMjk2ODYsMjk2ODcsNTc0MzgsNTc0MzksNTc0NDAsNTc0NDEsNTc0NDIsNTc0NDMsNTc0NDQsNTc0NDUsNTc0NDYsNTc0NDcsNTc0NDgsNTc0NDksNTc0NTAsNTc0NTEsNTc0NTIsNTc0NTMsNTc0NTQsNTc0NTUsNTc0NTYsNTc0NTcsNTc0NTgsNTc0NTksNTc0NjAsNTc0NjEsNTc0NjIsNTc0NjMsNTc0NjQsNTc0NjUsNTc0NjYsNTc0NjcsNTc0NjgsNTc0NjksNTc0NzAsNTc0NzEsNTc0NzIsNTc0NzMsNTc0NzQsNTc0NzUsNTc0NzYsNTc0NzcsNTc0NzgsNTc0NzksNTc0ODAsNTc0ODEsNTc0ODIsNTc0ODMsNTc0ODQsNTc0ODUsNTc0ODYsNTc0ODcsNTc0ODgsNTc0ODksNTc0OTAsNTc0OTEsNTc0OTIsNTc0OTMsNTc0OTQsNTc0OTUsNTc0OTYsNTc0OTcsNTc0OTgsNTc0OTksNTc1MDAsNTc1MDEsNTc1MDIsNTc1MDMsNTc1MDQsNTc1MDUsNTc1MDYsNTc1MDcsNTc1MDgsNTc1MDksNTc1MTAsNTc1MTEsNTc1MTIsNTc1MTMsNTc1MTQsNTc1MTUsNTc1MTYsNTc1MTcsNTc1MTgsNTc1MTksNTc1MjAsNTc1MjEsNTc1MjIsNTc1MjMsNTc1MjQsNTc1MjUsNTc1MjYsNTc1MjcsNTc1MjgsNTc1MjksNTc1MzAsNTc1MzEsMjk2ODgsMjk2ODksMjk2OTAsMjk2OTEsMjk2OTIsMjk2OTMsMjk2OTQsMjk2OTUsMjk2OTYsMjk2OTcsMjk2OTgsMjk3MDAsMjk3MDMsMjk3MDQsMjk3MDcsMjk3MDgsMjk3MDksMjk3MTAsMjk3MTMsMjk3MTQsMjk3MTUsMjk3MTYsMjk3MTcsMjk3MTgsMjk3MTksMjk3MjAsMjk3MjEsMjk3MjQsMjk3MjUsMjk3MjYsMjk3MjcsMjk3MjgsMjk3MjksMjk3MzEsMjk3MzIsMjk3MzUsMjk3MzcsMjk3MzksMjk3NDEsMjk3NDMsMjk3NDUsMjk3NDYsMjk3NTEsMjk3NTIsMjk3NTMsMjk3NTQsMjk3NTUsMjk3NTcsMjk3NTgsMjk3NTksMjk3NjAsMjk3NjIsMjk3NjMsMjk3NjQsMjk3NjUsMjk3NjYsMjk3NjcsMjk3NjgsMjk3NjksMjk3NzAsMjk3NzEsMjk3NzIsMjk3NzMsMjk3NzQsMjk3NzUsMjk3NzYsMjk3NzcsMjk3NzgsMjk3NzksMjk3ODAsMjk3ODIsMjk3ODQsMjk3ODksMjk3OTIsMjk3OTMsMjk3OTQsMjk3OTUsMjk3OTYsMjk3OTcsMjk3OTgsMjk3OTksMjk4MDAsMjk4MDEsMjk4MDIsMjk4MDMsMjk4MDQsMjk4MDYsMjk4MDcsMjk4MDksMjk4MTAsMjk4MTEsMjk4MTIsMjk4MTMsMjk4MTYsMjk4MTcsMjk4MTgsNTc1MzIsNTc1MzMsNTc1MzQsNTc1MzUsNTc1MzYsNTc1MzcsNTc1MzgsNTc1MzksNTc1NDAsNTc1NDEsNTc1NDIsNTc1NDMsNTc1NDQsNTc1NDUsNTc1NDYsNTc1NDcsNTc1NDgsNTc1NDksNTc1NTAsNTc1NTEsNTc1NTIsNTc1NTMsNTc1NTQsNTc1NTUsNTc1NTYsNTc1NTcsNTc1NTgsNTc1NTksNTc1NjAsNTc1NjEsNTc1NjIsNTc1NjMsNTc1NjQsNTc1NjUsNTc1NjYsNTc1NjcsNTc1NjgsNTc1NjksNTc1NzAsNTc1NzEsNTc1NzIsNTc1NzMsNTc1NzQsNTc1NzUsNTc1NzYsNTc1NzcsNTc1NzgsNTc1NzksNTc1ODAsNTc1ODEsNTc1ODIsNTc1ODMsNTc1ODQsNTc1ODUsNTc1ODYsNTc1ODcsNTc1ODgsNTc1ODksNTc1OTAsNTc1OTEsNTc1OTIsNTc1OTMsNTc1OTQsNTc1OTUsNTc1OTYsNTc1OTcsNTc1OTgsNTc1OTksNTc2MDAsNTc2MDEsNTc2MDIsNTc2MDMsNTc2MDQsNTc2MDUsNTc2MDYsNTc2MDcsNTc2MDgsNTc2MDksNTc2MTAsNTc2MTEsNTc2MTIsNTc2MTMsNTc2MTQsNTc2MTUsNTc2MTYsNTc2MTcsNTc2MTgsNTc2MTksNTc2MjAsNTc2MjEsNTc2MjIsNTc2MjMsNTc2MjQsNTc2MjUsMjk4MTksMjk4MjAsMjk4MjEsMjk4MjMsMjk4MjYsMjk4MjgsMjk4MjksMjk4MzAsMjk4MzIsMjk4MzMsMjk4MzQsMjk4MzYsMjk4MzcsMjk4MzksMjk4NDEsMjk4NDIsMjk4NDMsMjk4NDQsMjk4NDUsMjk4NDYsMjk4NDcsMjk4NDgsMjk4NDksMjk4NTAsMjk4NTEsMjk4NTMsMjk4NTUsMjk4NTYsMjk4NTcsMjk4NTgsMjk4NTksMjk4NjAsMjk4NjEsMjk4NjIsMjk4NjYsMjk4NjcsMjk4NjgsMjk4NjksMjk4NzAsMjk4NzEsMjk4NzIsMjk4NzMsMjk4NzQsMjk4NzUsMjk4NzYsMjk4NzcsMjk4NzgsMjk4NzksMjk4ODAsMjk4ODEsMjk4ODMsMjk4ODQsMjk4ODUsMjk4ODYsMjk4ODcsMjk4ODgsMjk4ODksMjk4OTAsMjk4OTEsMjk4OTIsMjk4OTMsMjk4OTQsMjk4OTUsMjk4OTYsMjk4OTcsMjk4OTgsMjk4OTksMjk5MDAsMjk5MDEsMjk5MDIsMjk5MDMsMjk5MDQsMjk5MDUsMjk5MDcsMjk5MDgsMjk5MDksMjk5MTAsMjk5MTEsMjk5MTIsMjk5MTMsMjk5MTQsMjk5MTUsMjk5MTcsMjk5MTksMjk5MjEsMjk5MjUsMjk5MjcsMjk5MjgsMjk5MjksMjk5MzAsMjk5MzEsMjk5MzIsMjk5MzMsMjk5MzYsMjk5MzcsMjk5MzgsNTc2MjYsNTc2MjcsNTc2MjgsNTc2MjksNTc2MzAsNTc2MzEsNTc2MzIsNTc2MzMsNTc2MzQsNTc2MzUsNTc2MzYsNTc2MzcsNTc2MzgsNTc2MzksNTc2NDAsNTc2NDEsNTc2NDIsNTc2NDMsNTc2NDQsNTc2NDUsNTc2NDYsNTc2NDcsNTc2NDgsNTc2NDksNTc2NTAsNTc2NTEsNTc2NTIsNTc2NTMsNTc2NTQsNTc2NTUsNTc2NTYsNTc2NTcsNTc2NTgsNTc2NTksNTc2NjAsNTc2NjEsNTc2NjIsNTc2NjMsNTc2NjQsNTc2NjUsNTc2NjYsNTc2NjcsNTc2NjgsNTc2NjksNTc2NzAsNTc2NzEsNTc2NzIsNTc2NzMsNTc2NzQsNTc2NzUsNTc2NzYsNTc2NzcsNTc2NzgsNTc2NzksNTc2ODAsNTc2ODEsNTc2ODIsNTc2ODMsNTc2ODQsNTc2ODUsNTc2ODYsNTc2ODcsNTc2ODgsNTc2ODksNTc2OTAsNTc2OTEsNTc2OTIsNTc2OTMsNTc2OTQsNTc2OTUsNTc2OTYsNTc2OTcsNTc2OTgsNTc2OTksNTc3MDAsNTc3MDEsNTc3MDIsNTc3MDMsNTc3MDQsNTc3MDUsNTc3MDYsNTc3MDcsNTc3MDgsNTc3MDksNTc3MTAsNTc3MTEsNTc3MTIsNTc3MTMsNTc3MTQsNTc3MTUsNTc3MTYsNTc3MTcsNTc3MTgsNTc3MTksMjk5MzksMjk5NDEsMjk5NDQsMjk5NDUsMjk5NDYsMjk5NDcsMjk5NDgsMjk5NDksMjk5NTAsMjk5NTIsMjk5NTMsMjk5NTQsMjk5NTUsMjk5NTcsMjk5NTgsMjk5NTksMjk5NjAsMjk5NjEsMjk5NjIsMjk5NjMsMjk5NjQsMjk5NjYsMjk5NjgsMjk5NzAsMjk5NzIsMjk5NzMsMjk5NzQsMjk5NzUsMjk5NzksMjk5ODEsMjk5ODIsMjk5ODQsMjk5ODUsMjk5ODYsMjk5ODcsMjk5ODgsMjk5OTAsMjk5OTEsMjk5OTQsMjk5OTgsMzAwMDQsMzAwMDYsMzAwMDksMzAwMTIsMzAwMTMsMzAwMTUsMzAwMTcsMzAwMTgsMzAwMTksMzAwMjAsMzAwMjIsMzAwMjMsMzAwMjUsMzAwMjYsMzAwMjksMzAwMzIsMzAwMzMsMzAwMzQsMzAwMzUsMzAwMzcsMzAwMzgsMzAwMzksMzAwNDAsMzAwNDUsMzAwNDYsMzAwNDcsMzAwNDgsMzAwNDksMzAwNTAsMzAwNTEsMzAwNTIsMzAwNTUsMzAwNTYsMzAwNTcsMzAwNTksMzAwNjAsMzAwNjEsMzAwNjIsMzAwNjMsMzAwNjQsMzAwNjUsMzAwNjcsMzAwNjksMzAwNzAsMzAwNzEsMzAwNzQsMzAwNzUsMzAwNzYsMzAwNzcsMzAwNzgsMzAwODAsMzAwODEsMzAwODIsMzAwODQsMzAwODUsMzAwODcsNTc3MjAsNTc3MjEsNTc3MjIsNTc3MjMsNTc3MjQsNTc3MjUsNTc3MjYsNTc3MjcsNTc3MjgsNTc3MjksNTc3MzAsNTc3MzEsNTc3MzIsNTc3MzMsNTc3MzQsNTc3MzUsNTc3MzYsNTc3MzcsNTc3MzgsNTc3MzksNTc3NDAsNTc3NDEsNTc3NDIsNTc3NDMsNTc3NDQsNTc3NDUsNTc3NDYsNTc3NDcsNTc3NDgsNTc3NDksNTc3NTAsNTc3NTEsNTc3NTIsNTc3NTMsNTc3NTQsNTc3NTUsNTc3NTYsNTc3NTcsNTc3NTgsNTc3NTksNTc3NjAsNTc3NjEsNTc3NjIsNTc3NjMsNTc3NjQsNTc3NjUsNTc3NjYsNTc3NjcsNTc3NjgsNTc3NjksNTc3NzAsNTc3NzEsNTc3NzIsNTc3NzMsNTc3NzQsNTc3NzUsNTc3NzYsNTc3NzcsNTc3NzgsNTc3NzksNTc3ODAsNTc3ODEsNTc3ODIsNTc3ODMsNTc3ODQsNTc3ODUsNTc3ODYsNTc3ODcsNTc3ODgsNTc3ODksNTc3OTAsNTc3OTEsNTc3OTIsNTc3OTMsNTc3OTQsNTc3OTUsNTc3OTYsNTc3OTcsNTc3OTgsNTc3OTksNTc4MDAsNTc4MDEsNTc4MDIsNTc4MDMsNTc4MDQsNTc4MDUsNTc4MDYsNTc4MDcsNTc4MDgsNTc4MDksNTc4MTAsNTc4MTEsNTc4MTIsNTc4MTMsMzAwODgsMzAwODksMzAwOTAsMzAwOTIsMzAwOTMsMzAwOTQsMzAwOTYsMzAwOTksMzAxMDEsMzAxMDQsMzAxMDcsMzAxMDgsMzAxMTAsMzAxMTQsMzAxMTgsMzAxMTksMzAxMjAsMzAxMjEsMzAxMjIsMzAxMjUsMzAxMzQsMzAxMzUsMzAxMzgsMzAxMzksMzAxNDMsMzAxNDQsMzAxNDUsMzAxNTAsMzAxNTUsMzAxNTYsMzAxNTgsMzAxNTksMzAxNjAsMzAxNjEsMzAxNjMsMzAxNjcsMzAxNjksMzAxNzAsMzAxNzIsMzAxNzMsMzAxNzUsMzAxNzYsMzAxNzcsMzAxODEsMzAxODUsMzAxODgsMzAxODksMzAxOTAsMzAxOTEsMzAxOTQsMzAxOTUsMzAxOTcsMzAxOTgsMzAxOTksMzAyMDAsMzAyMDIsMzAyMDMsMzAyMDUsMzAyMDYsMzAyMTAsMzAyMTIsMzAyMTQsMzAyMTUsMzAyMTYsMzAyMTcsMzAyMTksMzAyMjEsMzAyMjIsMzAyMjMsMzAyMjUsMzAyMjYsMzAyMjcsMzAyMjgsMzAyMzAsMzAyMzQsMzAyMzYsMzAyMzcsMzAyMzgsMzAyNDEsMzAyNDMsMzAyNDcsMzAyNDgsMzAyNTIsMzAyNTQsMzAyNTUsMzAyNTcsMzAyNTgsMzAyNjIsMzAyNjMsMzAyNjUsMzAyNjYsMzAyNjcsMzAyNjksMzAyNzMsMzAyNzQsMzAyNzYsNTc4MTQsNTc4MTUsNTc4MTYsNTc4MTcsNTc4MTgsNTc4MTksNTc4MjAsNTc4MjEsNTc4MjIsNTc4MjMsNTc4MjQsNTc4MjUsNTc4MjYsNTc4MjcsNTc4MjgsNTc4MjksNTc4MzAsNTc4MzEsNTc4MzIsNTc4MzMsNTc4MzQsNTc4MzUsNTc4MzYsNTc4MzcsNTc4MzgsNTc4MzksNTc4NDAsNTc4NDEsNTc4NDIsNTc4NDMsNTc4NDQsNTc4NDUsNTc4NDYsNTc4NDcsNTc4NDgsNTc4NDksNTc4NTAsNTc4NTEsNTc4NTIsNTc4NTMsNTc4NTQsNTc4NTUsNTc4NTYsNTc4NTcsNTc4NTgsNTc4NTksNTc4NjAsNTc4NjEsNTc4NjIsNTc4NjMsNTc4NjQsNTc4NjUsNTc4NjYsNTc4NjcsNTc4NjgsNTc4NjksNTc4NzAsNTc4NzEsNTc4NzIsNTc4NzMsNTc4NzQsNTc4NzUsNTc4NzYsNTc4NzcsNTc4NzgsNTc4NzksNTc4ODAsNTc4ODEsNTc4ODIsNTc4ODMsNTc4ODQsNTc4ODUsNTc4ODYsNTc4ODcsNTc4ODgsNTc4ODksNTc4OTAsNTc4OTEsNTc4OTIsNTc4OTMsNTc4OTQsNTc4OTUsNTc4OTYsNTc4OTcsNTc4OTgsNTc4OTksNTc5MDAsNTc5MDEsNTc5MDIsNTc5MDMsNTc5MDQsNTc5MDUsNTc5MDYsNTc5MDcsMzAyNzcsMzAyNzgsMzAyNzksMzAyODAsMzAyODEsMzAyODIsMzAyODMsMzAyODYsMzAyODcsMzAyODgsMzAyODksMzAyOTAsMzAyOTEsMzAyOTMsMzAyOTUsMzAyOTYsMzAyOTcsMzAyOTgsMzAyOTksMzAzMDEsMzAzMDMsMzAzMDQsMzAzMDUsMzAzMDYsMzAzMDgsMzAzMDksMzAzMTAsMzAzMTEsMzAzMTIsMzAzMTMsMzAzMTQsMzAzMTYsMzAzMTcsMzAzMTgsMzAzMjAsMzAzMjEsMzAzMjIsMzAzMjMsMzAzMjQsMzAzMjUsMzAzMjYsMzAzMjcsMzAzMjksMzAzMzAsMzAzMzIsMzAzMzUsMzAzMzYsMzAzMzcsMzAzMzksMzAzNDEsMzAzNDUsMzAzNDYsMzAzNDgsMzAzNDksMzAzNTEsMzAzNTIsMzAzNTQsMzAzNTYsMzAzNTcsMzAzNTksMzAzNjAsMzAzNjIsMzAzNjMsMzAzNjQsMzAzNjUsMzAzNjYsMzAzNjcsMzAzNjgsMzAzNjksMzAzNzAsMzAzNzEsMzAzNzMsMzAzNzQsMzAzNzUsMzAzNzYsMzAzNzcsMzAzNzgsMzAzNzksMzAzODAsMzAzODEsMzAzODMsMzAzODQsMzAzODcsMzAzODksMzAzOTAsMzAzOTEsMzAzOTIsMzAzOTMsMzAzOTQsMzAzOTUsMzAzOTYsMzAzOTcsMzAzOTgsMzA0MDAsMzA0MDEsMzA0MDMsMjE4MzQsMzg0NjMsMjI0NjcsMjUzODQsMjE3MTAsMjE3NjksMjE2OTYsMzAzNTMsMzAyODQsMzQxMDgsMzA3MDIsMzM0MDYsMzA4NjEsMjkyMzMsMzg1NTIsMzg3OTcsMjc2ODgsMjM0MzMsMjA0NzQsMjUzNTMsMjYyNjMsMjM3MzYsMzMwMTgsMjY2OTYsMzI5NDIsMjYxMTQsMzA0MTQsMjA5ODUsMjU5NDIsMjkxMDAsMzI3NTMsMzQ5NDgsMjA2NTgsMjI4ODUsMjUwMzQsMjg1OTUsMzM0NTMsMjU0MjAsMjUxNzAsMjE0ODUsMjE1NDMsMzE0OTQsMjA4NDMsMzAxMTYsMjQwNTIsMjUzMDAsMzYyOTksMzg3NzQsMjUyMjYsMzI3OTMsMjIzNjUsMzg3MTIsMzI2MTAsMjkyNDAsMzAzMzMsMjY1NzUsMzAzMzQsMjU2NzAsMjAzMzYsMzYxMzMsMjUzMDgsMzEyNTUsMjYwMDEsMjk2NzcsMjU2NDQsMjUyMDMsMzMzMjQsMzkwNDEsMjY0OTUsMjkyNTYsMjUxOTgsMjUyOTIsMjAyNzYsMjk5MjMsMjEzMjIsMjExNTAsMzI0NTgsMzcwMzAsMjQxMTAsMjY3NTgsMjcwMzYsMzMxNTIsMzI0NjUsMjY4MzQsMzA5MTcsMzQ0NDQsMzgyMjUsMjA2MjEsMzU4NzYsMzM1MDIsMzI5OTAsMjEyNTMsMzUwOTAsMjEwOTMsMzA0MDQsMzA0MDcsMzA0MDksMzA0MTEsMzA0MTIsMzA0MTksMzA0MjEsMzA0MjUsMzA0MjYsMzA0MjgsMzA0MjksMzA0MzAsMzA0MzIsMzA0MzMsMzA0MzQsMzA0MzUsMzA0MzYsMzA0MzgsMzA0MzksMzA0NDAsMzA0NDEsMzA0NDIsMzA0NDMsMzA0NDQsMzA0NDUsMzA0NDgsMzA0NTEsMzA0NTMsMzA0NTQsMzA0NTUsMzA0NTgsMzA0NTksMzA0NjEsMzA0NjMsMzA0NjQsMzA0NjYsMzA0NjcsMzA0NjksMzA0NzAsMzA0NzQsMzA0NzYsMzA0NzgsMzA0NzksMzA0ODAsMzA0ODEsMzA0ODIsMzA0ODMsMzA0ODQsMzA0ODUsMzA0ODYsMzA0ODcsMzA0ODgsMzA0OTEsMzA0OTIsMzA0OTMsMzA0OTQsMzA0OTcsMzA0OTksMzA1MDAsMzA1MDEsMzA1MDMsMzA1MDYsMzA1MDcsMzA1MDgsMzA1MTAsMzA1MTIsMzA1MTMsMzA1MTQsMzA1MTUsMzA1MTYsMzA1MjEsMzA1MjMsMzA1MjUsMzA1MjYsMzA1MjcsMzA1MzAsMzA1MzIsMzA1MzMsMzA1MzQsMzA1MzYsMzA1MzcsMzA1MzgsMzA1MzksMzA1NDAsMzA1NDEsMzA1NDIsMzA1NDMsMzA1NDYsMzA1NDcsMzA1NDgsMzA1NDksMzA1NTAsMzA1NTEsMzA1NTIsMzA1NTMsMzA1NTYsMzQxODAsMzg2NDksMjA0NDUsMjI1NjEsMzkyODEsMjM0NTMsMjUyNjUsMjUyNTMsMjYyOTIsMzU5NjEsNDAwNzcsMjkxOTAsMjY0NzksMzA4NjUsMjQ3NTQsMjEzMjksMjEyNzEsMzY3NDQsMzI5NzIsMzYxMjUsMzgwNDksMjA0OTMsMjkzODQsMjI3OTEsMjQ4MTEsMjg5NTMsMzQ5ODcsMjI4NjgsMzM1MTksMjY0MTIsMzE1MjgsMjM4NDksMzI1MDMsMjk5OTcsMjc4OTMsMzY0NTQsMzY4NTYsMzY5MjQsNDA3NjMsMjc2MDQsMzcxNDUsMzE1MDgsMjQ0NDQsMzA4ODcsMzQwMDYsMzQxMDksMjc2MDUsMjc2MDksMjc2MDYsMjQwNjUsMjQxOTksMzAyMDEsMzgzODEsMjU5NDksMjQzMzAsMjQ1MTcsMzY3NjcsMjI3MjEsMzMyMTgsMzY5OTEsMzg0OTEsMzg4MjksMzY3OTMsMzI1MzQsMzYxNDAsMjUxNTMsMjA0MTUsMjE0NjQsMjEzNDIsMzY3NzYsMzY3NzcsMzY3NzksMzY5NDEsMjY2MzEsMjQ0MjYsMzMxNzYsMzQ5MjAsNDAxNTAsMjQ5NzEsMjEwMzUsMzAyNTAsMjQ0MjgsMjU5OTYsMjg2MjYsMjgzOTIsMjM0ODYsMjU2NzIsMjA4NTMsMjA5MTIsMjY1NjQsMTk5OTMsMzExNzcsMzkyOTIsMjg4NTEsMzA1NTcsMzA1NTgsMzA1NTksMzA1NjAsMzA1NjQsMzA1NjcsMzA1NjksMzA1NzAsMzA1NzMsMzA1NzQsMzA1NzUsMzA1NzYsMzA1NzcsMzA1NzgsMzA1NzksMzA1ODAsMzA1ODEsMzA1ODIsMzA1ODMsMzA1ODQsMzA1ODYsMzA1ODcsMzA1ODgsMzA1OTMsMzA1OTQsMzA1OTUsMzA1OTgsMzA1OTksMzA2MDAsMzA2MDEsMzA2MDIsMzA2MDMsMzA2MDcsMzA2MDgsMzA2MTEsMzA2MTIsMzA2MTMsMzA2MTQsMzA2MTUsMzA2MTYsMzA2MTcsMzA2MTgsMzA2MTksMzA2MjAsMzA2MjEsMzA2MjIsMzA2MjUsMzA2MjcsMzA2MjgsMzA2MzAsMzA2MzIsMzA2MzUsMzA2MzcsMzA2MzgsMzA2MzksMzA2NDEsMzA2NDIsMzA2NDQsMzA2NDYsMzA2NDcsMzA2NDgsMzA2NDksMzA2NTAsMzA2NTIsMzA2NTQsMzA2NTYsMzA2NTcsMzA2NTgsMzA2NTksMzA2NjAsMzA2NjEsMzA2NjIsMzA2NjMsMzA2NjQsMzA2NjUsMzA2NjYsMzA2NjcsMzA2NjgsMzA2NzAsMzA2NzEsMzA2NzIsMzA2NzMsMzA2NzQsMzA2NzUsMzA2NzYsMzA2NzcsMzA2NzgsMzA2ODAsMzA2ODEsMzA2ODIsMzA2ODUsMzA2ODYsMzA2ODcsMzA2ODgsMzA2ODksMzA2OTIsMzAxNDksMjQxODIsMjk2MjcsMzM3NjAsMjU3NzMsMjUzMjAsMzgwNjksMjc4NzQsMjEzMzgsMjExODcsMjU2MTUsMzgwODIsMzE2MzYsMjAyNzEsMjQwOTEsMzMzMzQsMzMwNDYsMzMxNjIsMjgxOTYsMjc4NTAsMzk1MzksMjU0MjksMjEzNDAsMjE3NTQsMzQ5MTcsMjI0OTYsMTk5ODEsMjQwNjcsMjc0OTMsMzE4MDcsMzcwOTYsMjQ1OTgsMjU4MzAsMjk0NjgsMzUwMDksMjY0NDgsMjUxNjUsMzYxMzAsMzA1NzIsMzYzOTMsMzczMTksMjQ0MjUsMzM3NTYsMzQwODEsMzkxODQsMjE0NDIsMzQ0NTMsMjc1MzEsMjQ4MTMsMjQ4MDgsMjg3OTksMzM0ODUsMzMzMjksMjAxNzksMjc4MTUsMzQyNTUsMjU4MDUsMzE5NjEsMjcxMzMsMjYzNjEsMzM2MDksMjEzOTcsMzE1NzQsMjAzOTEsMjA4NzYsMjc5NzksMjM2MTgsMzY0NjEsMjU1NTQsMjE0NDksMzM1ODAsMzM1OTAsMjY1OTcsMzA5MDAsMjU2NjEsMjM1MTksMjM3MDAsMjQwNDYsMzU4MTUsMjUyODYsMjY2MTIsMzU5NjIsMjU2MDAsMjU1MzAsMzQ2MzMsMzkzMDcsMzU4NjMsMzI1NDQsMzgxMzAsMjAxMzUsMzg0MTYsMzkwNzYsMjYxMjQsMjk0NjIsMzA2OTQsMzA2OTYsMzA2OTgsMzA3MDMsMzA3MDQsMzA3MDUsMzA3MDYsMzA3MDgsMzA3MDksMzA3MTEsMzA3MTMsMzA3MTQsMzA3MTUsMzA3MTYsMzA3MjMsMzA3MjQsMzA3MjUsMzA3MjYsMzA3MjcsMzA3MjgsMzA3MzAsMzA3MzEsMzA3MzQsMzA3MzUsMzA3MzYsMzA3MzksMzA3NDEsMzA3NDUsMzA3NDcsMzA3NTAsMzA3NTIsMzA3NTMsMzA3NTQsMzA3NTYsMzA3NjAsMzA3NjIsMzA3NjMsMzA3NjYsMzA3NjcsMzA3NjksMzA3NzAsMzA3NzEsMzA3NzMsMzA3NzQsMzA3ODEsMzA3ODMsMzA3ODUsMzA3ODYsMzA3ODcsMzA3ODgsMzA3OTAsMzA3OTIsMzA3OTMsMzA3OTQsMzA3OTUsMzA3OTcsMzA3OTksMzA4MDEsMzA4MDMsMzA4MDQsMzA4MDgsMzA4MDksMzA4MTAsMzA4MTEsMzA4MTIsMzA4MTQsMzA4MTUsMzA4MTYsMzA4MTcsMzA4MTgsMzA4MTksMzA4MjAsMzA4MjEsMzA4MjIsMzA4MjMsMzA4MjQsMzA4MjUsMzA4MzEsMzA4MzIsMzA4MzMsMzA4MzQsMzA4MzUsMzA4MzYsMzA4MzcsMzA4MzgsMzA4NDAsMzA4NDEsMzA4NDIsMzA4NDMsMzA4NDUsMzA4NDYsMzA4NDcsMzA4NDgsMzA4NDksMzA4NTAsMzA4NTEsMjIzMzAsMjM1ODEsMjQxMjAsMzgyNzEsMjA2MDcsMzI5MjgsMjEzNzgsMjU5NTAsMzAwMjEsMjE4MDksMjA1MTMsMzYyMjksMjUyMjAsMzgwNDYsMjYzOTcsMjIwNjYsMjg1MjYsMjQwMzQsMjE1NTcsMjg4MTgsMzY3MTAsMjUxOTksMjU3NjQsMjU1MDcsMjQ0NDMsMjg1NTIsMzcxMDgsMzMyNTEsMzY3ODQsMjM1NzYsMjYyMTYsMjQ1NjEsMjc3ODUsMzg0NzIsMzYyMjUsMzQ5MjQsMjU3NDUsMzEyMTYsMjI0NzgsMjcyMjUsMjUxMDQsMjE1NzYsMjAwNTYsMzEyNDMsMjQ4MDksMjg1NDgsMzU4MDIsMjUyMTUsMzY4OTQsMzk1NjMsMzEyMDQsMjE1MDcsMzAxOTYsMjUzNDUsMjEyNzMsMjc3NDQsMzY4MzEsMjQzNDcsMzk1MzYsMzI4MjcsNDA4MzEsMjAzNjAsMjM2MTAsMzYxOTYsMzI3MDksMjYwMjEsMjg4NjEsMjA4MDUsMjA5MTQsMzQ0MTEsMjM4MTUsMjM0NTYsMjUyNzcsMzcyMjgsMzAwNjgsMzYzNjQsMzEyNjQsMjQ4MzMsMzE2MDksMjAxNjcsMzI1MDQsMzA1OTcsMTk5ODUsMzMyNjEsMjEwMjEsMjA5ODYsMjcyNDksMjE0MTYsMzY0ODcsMzgxNDgsMzg2MDcsMjgzNTMsMzg1MDAsMjY5NzAsMzA4NTIsMzA4NTMsMzA4NTQsMzA4NTYsMzA4NTgsMzA4NTksMzA4NjMsMzA4NjQsMzA4NjYsMzA4NjgsMzA4NjksMzA4NzAsMzA4NzMsMzA4NzcsMzA4NzgsMzA4ODAsMzA4ODIsMzA4ODQsMzA4ODYsMzA4ODgsMzA4ODksMzA4OTAsMzA4OTEsMzA4OTIsMzA4OTMsMzA4OTQsMzA4OTUsMzA5MDEsMzA5MDIsMzA5MDMsMzA5MDQsMzA5MDYsMzA5MDcsMzA5MDgsMzA5MDksMzA5MTEsMzA5MTIsMzA5MTQsMzA5MTUsMzA5MTYsMzA5MTgsMzA5MTksMzA5MjAsMzA5MjQsMzA5MjUsMzA5MjYsMzA5MjcsMzA5MjksMzA5MzAsMzA5MzEsMzA5MzQsMzA5MzUsMzA5MzYsMzA5MzgsMzA5MzksMzA5NDAsMzA5NDEsMzA5NDIsMzA5NDMsMzA5NDQsMzA5NDUsMzA5NDYsMzA5NDcsMzA5NDgsMzA5NDksMzA5NTAsMzA5NTEsMzA5NTMsMzA5NTQsMzA5NTUsMzA5NTcsMzA5NTgsMzA5NTksMzA5NjAsMzA5NjEsMzA5NjMsMzA5NjUsMzA5NjYsMzA5NjgsMzA5NjksMzA5NzEsMzA5NzIsMzA5NzMsMzA5NzQsMzA5NzUsMzA5NzYsMzA5NzgsMzA5NzksMzA5ODAsMzA5ODIsMzA5ODMsMzA5ODQsMzA5ODUsMzA5ODYsMzA5ODcsMzA5ODgsMzA3ODQsMjA2NDgsMzA2NzksMjU2MTYsMzUzMDIsMjI3ODgsMjU1NzEsMjQwMjksMzEzNTksMjY5NDEsMjAyNTYsMzMzMzcsMjE5MTIsMjAwMTgsMzAxMjYsMzEzODMsMjQxNjIsMjQyMDIsMzgzODMsMjEwMTksMjE1NjEsMjg4MTAsMjU0NjIsMzgxODAsMjI0MDIsMjYxNDksMjY5NDMsMzcyNTUsMjE3NjcsMjgxNDcsMzI0MzEsMzQ4NTAsMjUxMzksMzI0OTYsMzAxMzMsMzM1NzYsMzA5MTMsMzg2MDQsMzY3NjYsMjQ5MDQsMjk5NDMsMzU3ODksMjc0OTIsMjEwNTAsMzYxNzYsMjc0MjUsMzI4NzQsMzM5MDUsMjIyNTcsMjEyNTQsMjAxNzQsMTk5OTUsMjA5NDUsMzE4OTUsMzcyNTksMzE3NTEsMjA0MTksMzY0NzksMzE3MTMsMzEzODgsMjU3MDMsMjM4MjgsMjA2NTIsMzMwMzAsMzAyMDksMzE5MjksMjgxNDAsMzI3MzYsMjY0NDksMjMzODQsMjM1NDQsMzA5MjMsMjU3NzQsMjU2MTksMjU1MTQsMjUzODcsMzgxNjksMjU2NDUsMzY3OTgsMzE1NzIsMzAyNDksMjUxNzEsMjI4MjMsMjE1NzQsMjc1MTMsMjA2NDMsMjUxNDAsMjQxMDIsMjc1MjYsMjAxOTUsMzYxNTEsMzQ5NTUsMjQ0NTMsMzY5MTAsMzA5ODksMzA5OTAsMzA5OTEsMzA5OTIsMzA5OTMsMzA5OTQsMzA5OTYsMzA5OTcsMzA5OTgsMzA5OTksMzEwMDAsMzEwMDEsMzEwMDIsMzEwMDMsMzEwMDQsMzEwMDUsMzEwMDcsMzEwMDgsMzEwMDksMzEwMTAsMzEwMTEsMzEwMTMsMzEwMTQsMzEwMTUsMzEwMTYsMzEwMTcsMzEwMTgsMzEwMTksMzEwMjAsMzEwMjEsMzEwMjIsMzEwMjMsMzEwMjQsMzEwMjUsMzEwMjYsMzEwMjcsMzEwMjksMzEwMzAsMzEwMzEsMzEwMzIsMzEwMzMsMzEwMzcsMzEwMzksMzEwNDIsMzEwNDMsMzEwNDQsMzEwNDUsMzEwNDcsMzEwNTAsMzEwNTEsMzEwNTIsMzEwNTMsMzEwNTQsMzEwNTUsMzEwNTYsMzEwNTcsMzEwNTgsMzEwNjAsMzEwNjEsMzEwNjQsMzEwNjUsMzEwNzMsMzEwNzUsMzEwNzYsMzEwNzgsMzEwODEsMzEwODIsMzEwODMsMzEwODQsMzEwODYsMzEwODgsMzEwODksMzEwOTAsMzEwOTEsMzEwOTIsMzEwOTMsMzEwOTQsMzEwOTcsMzEwOTksMzExMDAsMzExMDEsMzExMDIsMzExMDMsMzExMDYsMzExMDcsMzExMTAsMzExMTEsMzExMTIsMzExMTMsMzExMTUsMzExMTYsMzExMTcsMzExMTgsMzExMjAsMzExMjEsMzExMjIsMjQ2MDgsMzI4MjksMjUyODUsMjAwMjUsMjEzMzMsMzcxMTIsMjU1MjgsMzI5NjYsMjYwODYsMjc2OTQsMjAyOTQsMjQ4MTQsMjgxMjksMzU4MDYsMjQzNzcsMzQ1MDcsMjQ0MDMsMjUzNzcsMjA4MjYsMzM2MzMsMjY3MjMsMjA5OTIsMjU0NDMsMzY0MjQsMjA0OTgsMjM3MDcsMzEwOTUsMjM1NDgsMjEwNDAsMzEyOTEsMjQ3NjQsMzY5NDcsMzA0MjMsMjQ1MDMsMjQ0NzEsMzAzNDAsMzY0NjAsMjg3ODMsMzAzMzEsMzE1NjEsMzA2MzQsMjA5NzksMzcwMTEsMjI1NjQsMjAzMDIsMjg0MDQsMzY4NDIsMjU5MzIsMzE1MTUsMjkzODAsMjgwNjgsMzI3MzUsMjMyNjUsMjUyNjksMjQyMTMsMjIzMjAsMzM5MjIsMzE1MzIsMjQwOTMsMjQzNTEsMzY4ODIsMzI1MzIsMzkwNzIsMjU0NzQsMjgzNTksMzA4NzIsMjg4NTcsMjA4NTYsMzg3NDcsMjI0NDMsMzAwMDUsMjAyOTEsMzAwMDgsMjQyMTUsMjQ4MDYsMjI4ODAsMjgwOTYsMjc1ODMsMzA4NTcsMjE1MDAsMzg2MTMsMjA5MzksMjA5OTMsMjU0ODEsMjE1MTQsMzgwMzUsMzU4NDMsMzYzMDAsMjkyNDEsMzA4NzksMzQ2NzgsMzY4NDUsMzU4NTMsMjE0NzIsMzExMjMsMzExMjQsMzExMjUsMzExMjYsMzExMjcsMzExMjgsMzExMjksMzExMzEsMzExMzIsMzExMzMsMzExMzQsMzExMzUsMzExMzYsMzExMzcsMzExMzgsMzExMzksMzExNDAsMzExNDEsMzExNDIsMzExNDQsMzExNDUsMzExNDYsMzExNDcsMzExNDgsMzExNDksMzExNTAsMzExNTEsMzExNTIsMzExNTMsMzExNTQsMzExNTYsMzExNTcsMzExNTgsMzExNTksMzExNjAsMzExNjQsMzExNjcsMzExNzAsMzExNzIsMzExNzMsMzExNzUsMzExNzYsMzExNzgsMzExODAsMzExODIsMzExODMsMzExODQsMzExODcsMzExODgsMzExOTAsMzExOTEsMzExOTMsMzExOTQsMzExOTUsMzExOTYsMzExOTcsMzExOTgsMzEyMDAsMzEyMDEsMzEyMDIsMzEyMDUsMzEyMDgsMzEyMTAsMzEyMTIsMzEyMTQsMzEyMTcsMzEyMTgsMzEyMTksMzEyMjAsMzEyMjEsMzEyMjIsMzEyMjMsMzEyMjUsMzEyMjYsMzEyMjgsMzEyMzAsMzEyMzEsMzEyMzMsMzEyMzYsMzEyMzcsMzEyMzksMzEyNDAsMzEyNDEsMzEyNDIsMzEyNDQsMzEyNDcsMzEyNDgsMzEyNDksMzEyNTAsMzEyNTEsMzEyNTMsMzEyNTQsMzEyNTYsMzEyNTcsMzEyNTksMzEyNjAsMTk5NjksMzA0NDcsMjE0ODYsMzgwMjUsMzkwMzAsNDA3MTgsMzgxODksMjM0NTAsMzU3NDYsMjAwMDIsMTk5OTYsMjA5MDgsMzM4OTEsMjUwMjYsMjExNjAsMjY2MzUsMjAzNzUsMjQ2ODMsMjA5MjMsMjc5MzQsMjA4MjgsMjUyMzgsMjYwMDcsMzg0OTcsMzU5MTAsMzY4ODcsMzAxNjgsMzcxMTcsMzA1NjMsMjc2MDIsMjkzMjIsMjk0MjAsMzU4MzUsMjI1ODEsMzA1ODUsMzYxNzIsMjY0NjAsMzgyMDgsMzI5MjIsMjQyMzAsMjgxOTMsMjI5MzAsMzE0NzEsMzA3MDEsMzgyMDMsMjc1NzMsMjYwMjksMzI1MjYsMjI1MzQsMjA4MTcsMzg0MzEsMjM1NDUsMjI2OTcsMjE1NDQsMzY0NjYsMjU5NTgsMzkwMzksMjIyNDQsMzgwNDUsMzA0NjIsMzY5MjksMjU0NzksMjE3MDIsMjI4MTAsMjI4NDIsMjI0MjcsMzY1MzAsMjY0MjEsMzYzNDYsMzMzMzMsMjEwNTcsMjQ4MTYsMjI1NDksMzQ1NTgsMjM3ODQsNDA1MTcsMjA0MjAsMzkwNjksMzU3NjksMjMwNzcsMjQ2OTQsMjEzODAsMjUyMTIsMzY5NDMsMzcxMjIsMzkyOTUsMjQ2ODEsMzI3ODAsMjA3OTksMzI4MTksMjM1NzIsMzkyODUsMjc5NTMsMjAxMDgsMzEyNjEsMzEyNjMsMzEyNjUsMzEyNjYsMzEyNjgsMzEyNjksMzEyNzAsMzEyNzEsMzEyNzIsMzEyNzMsMzEyNzQsMzEyNzUsMzEyNzYsMzEyNzcsMzEyNzgsMzEyNzksMzEyODAsMzEyODEsMzEyODIsMzEyODQsMzEyODUsMzEyODYsMzEyODgsMzEyOTAsMzEyOTQsMzEyOTYsMzEyOTcsMzEyOTgsMzEyOTksMzEzMDAsMzEzMDEsMzEzMDMsMzEzMDQsMzEzMDUsMzEzMDYsMzEzMDcsMzEzMDgsMzEzMDksMzEzMTAsMzEzMTEsMzEzMTIsMzEzMTQsMzEzMTUsMzEzMTYsMzEzMTcsMzEzMTgsMzEzMjAsMzEzMjEsMzEzMjIsMzEzMjMsMzEzMjQsMzEzMjUsMzEzMjYsMzEzMjcsMzEzMjgsMzEzMjksMzEzMzAsMzEzMzEsMzEzMzIsMzEzMzMsMzEzMzQsMzEzMzUsMzEzMzYsMzEzMzcsMzEzMzgsMzEzMzksMzEzNDAsMzEzNDEsMzEzNDIsMzEzNDMsMzEzNDUsMzEzNDYsMzEzNDcsMzEzNDksMzEzNTUsMzEzNTYsMzEzNTcsMzEzNTgsMzEzNjIsMzEzNjUsMzEzNjcsMzEzNjksMzEzNzAsMzEzNzEsMzEzNzIsMzEzNzQsMzEzNzUsMzEzNzYsMzEzNzksMzEzODAsMzEzODUsMzEzODYsMzEzODcsMzEzOTAsMzEzOTMsMzEzOTQsMzYxNDQsMjE0NTcsMzI2MDIsMzE1NjcsMjAyNDAsMjAwNDcsMzg0MDAsMjc4NjEsMjk2NDgsMzQyODEsMjQwNzAsMzAwNTgsMzI3NjMsMjcxNDYsMzA3MTgsMzgwMzQsMzIzMjEsMjA5NjEsMjg5MDIsMjE0NTMsMzY4MjAsMzM1MzksMzYxMzcsMjkzNTksMzkyNzcsMjc4NjcsMjIzNDYsMzM0NTksMjYwNDEsMzI5MzgsMjUxNTEsMzg0NTAsMjI5NTIsMjAyMjMsMzU3NzUsMzI0NDIsMjU5MTgsMzM3NzgsMzg3NTAsMjE4NTcsMzkxMzQsMzI5MzMsMjEyOTAsMzU4MzcsMjE1MzYsMzI5NTQsMjQyMjMsMjc4MzIsMzYxNTMsMzM0NTIsMzcyMTAsMjE1NDUsMjc2NzUsMjA5OTgsMzI0MzksMjIzNjcsMjg5NTQsMjc3NzQsMzE4ODEsMjI4NTksMjAyMjEsMjQ1NzUsMjQ4NjgsMzE5MTQsMjAwMTYsMjM1NTMsMjY1MzksMzQ1NjIsMjM3OTIsMzgxNTUsMzkxMTgsMzAxMjcsMjg5MjUsMzY4OTgsMjA5MTEsMzI1NDEsMzU3NzMsMjI4NTcsMjA5NjQsMjAzMTUsMjE1NDIsMjI4MjcsMjU5NzUsMzI5MzIsMjM0MTMsMjUyMDYsMjUyODIsMzY3NTIsMjQxMzMsMjc2NzksMzE1MjYsMjAyMzksMjA0NDAsMjYzODEsMzEzOTUsMzEzOTYsMzEzOTksMzE0MDEsMzE0MDIsMzE0MDMsMzE0MDYsMzE0MDcsMzE0MDgsMzE0MDksMzE0MTAsMzE0MTIsMzE0MTMsMzE0MTQsMzE0MTUsMzE0MTYsMzE0MTcsMzE0MTgsMzE0MTksMzE0MjAsMzE0MjEsMzE0MjIsMzE0MjQsMzE0MjUsMzE0MjYsMzE0MjcsMzE0MjgsMzE0MjksMzE0MzAsMzE0MzEsMzE0MzIsMzE0MzMsMzE0MzQsMzE0MzYsMzE0MzcsMzE0MzgsMzE0MzksMzE0NDAsMzE0NDEsMzE0NDIsMzE0NDMsMzE0NDQsMzE0NDUsMzE0NDcsMzE0NDgsMzE0NTAsMzE0NTEsMzE0NTIsMzE0NTMsMzE0NTcsMzE0NTgsMzE0NjAsMzE0NjMsMzE0NjQsMzE0NjUsMzE0NjYsMzE0NjcsMzE0NjgsMzE0NzAsMzE0NzIsMzE0NzMsMzE0NzQsMzE0NzUsMzE0NzYsMzE0NzcsMzE0NzgsMzE0NzksMzE0ODAsMzE0ODMsMzE0ODQsMzE0ODYsMzE0ODgsMzE0ODksMzE0OTAsMzE0OTMsMzE0OTUsMzE0OTcsMzE1MDAsMzE1MDEsMzE1MDIsMzE1MDQsMzE1MDYsMzE1MDcsMzE1MTAsMzE1MTEsMzE1MTIsMzE1MTQsMzE1MTYsMzE1MTcsMzE1MTksMzE1MjEsMzE1MjIsMzE1MjMsMzE1MjcsMzE1MjksMzE1MzMsMjgwMTQsMjgwNzQsMzExMTksMzQ5OTMsMjQzNDMsMjk5OTUsMjUyNDIsMzY3NDEsMjA0NjMsMzczNDAsMjYwMjMsMzMwNzEsMzMxMDUsMjQyMjAsMzMxMDQsMzYyMTIsMjExMDMsMzUyMDYsMzYxNzEsMjI3OTcsMjA2MTMsMjAxODQsMzg0MjgsMjkyMzgsMzMxNDUsMzYxMjcsMjM1MDAsMzU3NDcsMzg0NjgsMjI5MTksMzI1MzgsMjE2NDgsMjIxMzQsMjIwMzAsMzU4MTMsMjU5MTMsMjcwMTAsMzgwNDEsMzA0MjIsMjgyOTcsMjQxNzgsMjk5NzYsMjY0MzgsMjY1NzcsMzE0ODcsMzI5MjUsMzYyMTQsMjQ4NjMsMzExNzQsMjU5NTQsMzYxOTUsMjA4NzIsMjEwMTgsMzgwNTAsMzI1NjgsMzI5MjMsMzI0MzQsMjM3MDMsMjgyMDcsMjY0NjQsMzE3MDUsMzAzNDcsMzk2NDAsMzMxNjcsMzI2NjAsMzE5NTcsMjU2MzAsMzgyMjQsMzEyOTUsMjE1NzgsMjE3MzMsMjc0NjgsMjU2MDEsMjUwOTYsNDA1MDksMzMwMTEsMzAxMDUsMjExMDYsMzg3NjEsMzM4ODMsMjY2ODQsMzQ1MzIsMzg0MDEsMzg1NDgsMzgxMjQsMjAwMTAsMjE1MDgsMzI0NzMsMjY2ODEsMzYzMTksMzI3ODksMjYzNTYsMjQyMTgsMzI2OTcsMzE1MzUsMzE1MzYsMzE1MzgsMzE1NDAsMzE1NDEsMzE1NDIsMzE1NDMsMzE1NDUsMzE1NDcsMzE1NDksMzE1NTEsMzE1NTIsMzE1NTMsMzE1NTQsMzE1NTUsMzE1NTYsMzE1NTgsMzE1NjAsMzE1NjIsMzE1NjUsMzE1NjYsMzE1NzEsMzE1NzMsMzE1NzUsMzE1NzcsMzE1ODAsMzE1ODIsMzE1ODMsMzE1ODUsMzE1ODcsMzE1ODgsMzE1ODksMzE1OTAsMzE1OTEsMzE1OTIsMzE1OTMsMzE1OTQsMzE1OTUsMzE1OTYsMzE1OTcsMzE1OTksMzE2MDAsMzE2MDMsMzE2MDQsMzE2MDYsMzE2MDgsMzE2MTAsMzE2MTIsMzE2MTMsMzE2MTUsMzE2MTcsMzE2MTgsMzE2MTksMzE2MjAsMzE2MjIsMzE2MjMsMzE2MjQsMzE2MjUsMzE2MjYsMzE2MjcsMzE2MjgsMzE2MzAsMzE2MzEsMzE2MzMsMzE2MzQsMzE2MzUsMzE2MzgsMzE2NDAsMzE2NDEsMzE2NDIsMzE2NDMsMzE2NDYsMzE2NDcsMzE2NDgsMzE2NTEsMzE2NTIsMzE2NTMsMzE2NjIsMzE2NjMsMzE2NjQsMzE2NjYsMzE2NjcsMzE2NjksMzE2NzAsMzE2NzEsMzE2NzMsMzE2NzQsMzE2NzUsMzE2NzYsMzE2NzcsMzE2NzgsMzE2NzksMzE2ODAsMzE2ODIsMzE2ODMsMzE2ODQsMjI0NjYsMzI4MzEsMjY3NzUsMjQwMzcsMjU5MTUsMjExNTEsMjQ2ODUsNDA4NTgsMjAzNzksMzY1MjQsMjA4NDQsMjM0NjcsMjQzMzksMjQwNDEsMjc3NDIsMjUzMjksMzYxMjksMjA4NDksMzgwNTcsMjEyNDYsMjc4MDcsMzM1MDMsMjkzOTksMjI0MzQsMjY1MDAsMzYxNDEsMjI4MTUsMzY3NjQsMzM3MzUsMjE2NTMsMzE2MjksMjAyNzIsMjc4MzcsMjMzOTYsMjI5OTMsNDA3MjMsMjE0NzYsMzQ1MDYsMzk1OTIsMzU4OTUsMzI5MjksMjU5MjUsMzkwMzgsMjIyNjYsMzg1OTksMjEwMzgsMjk5MTYsMjEwNzIsMjM1MjEsMjUzNDYsMzUwNzQsMjAwNTQsMjUyOTYsMjQ2MTgsMjY4NzQsMjA4NTEsMjM0NDgsMjA4OTYsMzUyNjYsMzE2NDksMzkzMDIsMzI1OTIsMjQ4MTUsMjg3NDgsMzYxNDMsMjA4MDksMjQxOTEsMzY4OTEsMjk4MDgsMzUyNjgsMjIzMTcsMzA3ODksMjQ0MDIsNDA4NjMsMzgzOTQsMzY3MTIsMzk3NDAsMzU4MDksMzAzMjgsMjY2OTAsMjY1ODgsMzYzMzAsMzYxNDksMjEwNTMsMzY3NDYsMjgzNzgsMjY4MjksMzgxNDksMzcxMDEsMjIyNjksMjY1MjQsMzUwNjUsMzY4MDcsMjE3MDQsMzE2ODUsMzE2ODgsMzE2ODksMzE2OTAsMzE2OTEsMzE2OTMsMzE2OTQsMzE2OTUsMzE2OTYsMzE2OTgsMzE3MDAsMzE3MDEsMzE3MDIsMzE3MDMsMzE3MDQsMzE3MDcsMzE3MDgsMzE3MTAsMzE3MTEsMzE3MTIsMzE3MTQsMzE3MTUsMzE3MTYsMzE3MTksMzE3MjAsMzE3MjEsMzE3MjMsMzE3MjQsMzE3MjUsMzE3MjcsMzE3MjgsMzE3MzAsMzE3MzEsMzE3MzIsMzE3MzMsMzE3MzQsMzE3MzYsMzE3MzcsMzE3MzgsMzE3MzksMzE3NDEsMzE3NDMsMzE3NDQsMzE3NDUsMzE3NDYsMzE3NDcsMzE3NDgsMzE3NDksMzE3NTAsMzE3NTIsMzE3NTMsMzE3NTQsMzE3NTcsMzE3NTgsMzE3NjAsMzE3NjEsMzE3NjIsMzE3NjMsMzE3NjQsMzE3NjUsMzE3NjcsMzE3NjgsMzE3NjksMzE3NzAsMzE3NzEsMzE3NzIsMzE3NzMsMzE3NzQsMzE3NzYsMzE3NzcsMzE3NzgsMzE3NzksMzE3ODAsMzE3ODEsMzE3ODQsMzE3ODUsMzE3ODcsMzE3ODgsMzE3ODksMzE3OTAsMzE3OTEsMzE3OTIsMzE3OTMsMzE3OTQsMzE3OTUsMzE3OTYsMzE3OTcsMzE3OTgsMzE3OTksMzE4MDEsMzE4MDIsMzE4MDMsMzE4MDQsMzE4MDUsMzE4MDYsMzE4MTAsMzk2MDgsMjM0MDEsMjgwMjMsMjc2ODYsMjAxMzMsMjM0NzUsMzk1NTksMzcyMTksMjUwMDAsMzcwMzksMzg4ODksMjE1NDcsMjgwODUsMjM1MDYsMjA5ODksMjE4OTgsMzI1OTcsMzI3NTIsMjU3ODgsMjU0MjEsMjYwOTcsMjUwMjIsMjQ3MTcsMjg5MzgsMjc3MzUsMjc3MjEsMjI4MzEsMjY0NzcsMzMzMjIsMjI3NDEsMjIxNTgsMzU5NDYsMjc2MjcsMzcwODUsMjI5MDksMzI3OTEsMjE0OTUsMjgwMDksMjE2MjEsMjE5MTcsMzM2NTUsMzM3NDMsMjY2ODAsMzExNjYsMjE2NDQsMjAzMDksMjE1MTIsMzA0MTgsMzU5NzcsMzg0MDIsMjc4MjcsMjgwODgsMzYyMDMsMzUwODgsNDA1NDgsMzYxNTQsMjIwNzksNDA2NTcsMzAxNjUsMjQ0NTYsMjk0MDgsMjQ2ODAsMjE3NTYsMjAxMzYsMjcxNzgsMzQ5MTMsMjQ2NTgsMzY3MjAsMjE3MDAsMjg4ODgsMzQ0MjUsNDA1MTEsMjc5NDYsMjM0MzksMjQzNDQsMzI0MTgsMjE4OTcsMjAzOTksMjk0OTIsMjE1NjQsMjE0MDIsMjA1MDUsMjE1MTgsMjE2MjgsMjAwNDYsMjQ1NzMsMjk3ODYsMjI3NzQsMzM4OTksMzI5OTMsMzQ2NzYsMjkzOTIsMzE5NDYsMjgyNDYsMzE4MTEsMzE4MTIsMzE4MTMsMzE4MTQsMzE4MTUsMzE4MTYsMzE4MTcsMzE4MTgsMzE4MTksMzE4MjAsMzE4MjIsMzE4MjMsMzE4MjQsMzE4MjUsMzE4MjYsMzE4MjcsMzE4MjgsMzE4MjksMzE4MzAsMzE4MzEsMzE4MzIsMzE4MzMsMzE4MzQsMzE4MzUsMzE4MzYsMzE4MzcsMzE4MzgsMzE4MzksMzE4NDAsMzE4NDEsMzE4NDIsMzE4NDMsMzE4NDQsMzE4NDUsMzE4NDYsMzE4NDcsMzE4NDgsMzE4NDksMzE4NTAsMzE4NTEsMzE4NTIsMzE4NTMsMzE4NTQsMzE4NTUsMzE4NTYsMzE4NTcsMzE4NTgsMzE4NjEsMzE4NjIsMzE4NjMsMzE4NjQsMzE4NjUsMzE4NjYsMzE4NzAsMzE4NzEsMzE4NzIsMzE4NzMsMzE4NzQsMzE4NzUsMzE4NzYsMzE4NzcsMzE4NzgsMzE4NzksMzE4ODAsMzE4ODIsMzE4ODMsMzE4ODQsMzE4ODUsMzE4ODYsMzE4ODcsMzE4ODgsMzE4OTEsMzE4OTIsMzE4OTQsMzE4OTcsMzE4OTgsMzE4OTksMzE5MDQsMzE5MDUsMzE5MDcsMzE5MTAsMzE5MTEsMzE5MTIsMzE5MTMsMzE5MTUsMzE5MTYsMzE5MTcsMzE5MTksMzE5MjAsMzE5MjQsMzE5MjUsMzE5MjYsMzE5MjcsMzE5MjgsMzE5MzAsMzE5MzEsMjQzNTksMzQzODIsMjE4MDQsMjUyNTIsMjAxMTQsMjc4MTgsMjUxNDMsMzM0NTcsMjE3MTksMjEzMjYsMjk1MDIsMjgzNjksMzAwMTEsMjEwMTAsMjEyNzAsMzU4MDUsMjcwODgsMjQ0NTgsMjQ1NzYsMjgxNDIsMjIzNTEsMjc0MjYsMjk2MTUsMjY3MDcsMzY4MjQsMzI1MzEsMjU0NDIsMjQ3MzksMjE3OTYsMzAxODYsMzU5MzgsMjg5NDksMjgwNjcsMjM0NjIsMjQxODcsMzM2MTgsMjQ5MDgsNDA2NDQsMzA5NzAsMzQ2NDcsMzE3ODMsMzAzNDMsMjA5NzYsMjQ4MjIsMjkwMDQsMjYxNzksMjQxNDAsMjQ2NTMsMzU4NTQsMjg3ODQsMjUzODEsMzY3NDUsMjQ1MDksMjQ2NzQsMzQ1MTYsMjIyMzgsMjc1ODUsMjQ3MjQsMjQ5MzUsMjEzMjEsMjQ4MDAsMjYyMTQsMzYxNTksMzEyMjksMjAyNTAsMjg5MDUsMjc3MTksMzU3NjMsMzU4MjYsMzI0NzIsMzM2MzYsMjYxMjcsMjMxMzAsMzk3NDYsMjc5ODUsMjgxNTEsMzU5MDUsMjc5NjMsMjAyNDksMjg3NzksMzM3MTksMjUxMTAsMjQ3ODUsMzg2NjksMzYxMzUsMzEwOTYsMjA5ODcsMjIzMzQsMjI1MjIsMjY0MjYsMzAwNzIsMzEyOTMsMzEyMTUsMzE2MzcsMzE5MzUsMzE5MzYsMzE5MzgsMzE5MzksMzE5NDAsMzE5NDIsMzE5NDUsMzE5NDcsMzE5NTAsMzE5NTEsMzE5NTIsMzE5NTMsMzE5NTQsMzE5NTUsMzE5NTYsMzE5NjAsMzE5NjIsMzE5NjMsMzE5NjUsMzE5NjYsMzE5NjksMzE5NzAsMzE5NzEsMzE5NzIsMzE5NzMsMzE5NzQsMzE5NzUsMzE5NzcsMzE5NzgsMzE5NzksMzE5ODAsMzE5ODEsMzE5ODIsMzE5ODQsMzE5ODUsMzE5ODYsMzE5ODcsMzE5ODgsMzE5ODksMzE5OTAsMzE5OTEsMzE5OTMsMzE5OTQsMzE5OTYsMzE5OTcsMzE5OTgsMzE5OTksMzIwMDAsMzIwMDEsMzIwMDIsMzIwMDMsMzIwMDQsMzIwMDUsMzIwMDYsMzIwMDcsMzIwMDgsMzIwMDksMzIwMTEsMzIwMTIsMzIwMTMsMzIwMTQsMzIwMTUsMzIwMTYsMzIwMTcsMzIwMTgsMzIwMTksMzIwMjAsMzIwMjEsMzIwMjIsMzIwMjMsMzIwMjQsMzIwMjUsMzIwMjYsMzIwMjcsMzIwMjgsMzIwMjksMzIwMzAsMzIwMzEsMzIwMzMsMzIwMzUsMzIwMzYsMzIwMzcsMzIwMzgsMzIwNDAsMzIwNDEsMzIwNDIsMzIwNDQsMzIwNDUsMzIwNDYsMzIwNDgsMzIwNDksMzIwNTAsMzIwNTEsMzIwNTIsMzIwNTMsMzIwNTQsMzI5MDgsMzkyNjksMzY4NTcsMjg2MDgsMzU3NDksNDA0ODEsMjMwMjAsMzI0ODksMzI1MjEsMjE1MTMsMjY0OTcsMjY4NDAsMzY3NTMsMzE4MjEsMzg1OTgsMjE0NTAsMjQ2MTMsMzAxNDIsMjc3NjIsMjEzNjMsMjMyNDEsMzI0MjMsMjUzODAsMjA5NjAsMzMwMzQsMjQwNDksMzQwMTUsMjUyMTYsMjA4NjQsMjMzOTUsMjAyMzgsMzEwODUsMjEwNTgsMjQ3NjAsMjc5ODIsMjM0OTIsMjM0OTAsMzU3NDUsMzU3NjAsMjYwODIsMjQ1MjQsMzg0NjksMjI5MzEsMzI0ODcsMzI0MjYsMjIwMjUsMjY1NTEsMjI4NDEsMjAzMzksMjM0NzgsMjExNTIsMzM2MjYsMzkwNTAsMzYxNTgsMzAwMDIsMzgwNzgsMjA1NTEsMzEyOTIsMjAyMTUsMjY1NTAsMzk1NTAsMjMyMzMsMjc1MTYsMzA0MTcsMjIzNjIsMjM1NzQsMzE1NDYsMzgzODgsMjkwMDYsMjA4NjAsMzI5MzcsMzMzOTIsMjI5MDQsMzI1MTYsMzM1NzUsMjY4MTYsMjY2MDQsMzA4OTcsMzA4MzksMjUzMTUsMjU0NDEsMzE2MTYsMjA0NjEsMjEwOTgsMjA5NDMsMzM2MTYsMjcwOTksMzc0OTIsMzYzNDEsMzYxNDUsMzUyNjUsMzgxOTAsMzE2NjEsMjAyMTQsMzIwNTUsMzIwNTYsMzIwNTcsMzIwNTgsMzIwNTksMzIwNjAsMzIwNjEsMzIwNjIsMzIwNjMsMzIwNjQsMzIwNjUsMzIwNjYsMzIwNjcsMzIwNjgsMzIwNjksMzIwNzAsMzIwNzEsMzIwNzIsMzIwNzMsMzIwNzQsMzIwNzUsMzIwNzYsMzIwNzcsMzIwNzgsMzIwNzksMzIwODAsMzIwODEsMzIwODIsMzIwODMsMzIwODQsMzIwODUsMzIwODYsMzIwODcsMzIwODgsMzIwODksMzIwOTAsMzIwOTEsMzIwOTIsMzIwOTMsMzIwOTQsMzIwOTUsMzIwOTYsMzIwOTcsMzIwOTgsMzIwOTksMzIxMDAsMzIxMDEsMzIxMDIsMzIxMDMsMzIxMDQsMzIxMDUsMzIxMDYsMzIxMDcsMzIxMDgsMzIxMDksMzIxMTEsMzIxMTIsMzIxMTMsMzIxMTQsMzIxMTUsMzIxMTYsMzIxMTcsMzIxMTgsMzIxMjAsMzIxMjEsMzIxMjIsMzIxMjMsMzIxMjQsMzIxMjUsMzIxMjYsMzIxMjcsMzIxMjgsMzIxMjksMzIxMzAsMzIxMzEsMzIxMzIsMzIxMzMsMzIxMzQsMzIxMzUsMzIxMzYsMzIxMzcsMzIxMzgsMzIxMzksMzIxNDAsMzIxNDEsMzIxNDIsMzIxNDMsMzIxNDQsMzIxNDUsMzIxNDYsMzIxNDcsMzIxNDgsMzIxNDksMzIxNTAsMzIxNTEsMzIxNTIsMjA1ODEsMzMzMjgsMjEwNzMsMzkyNzksMjgxNzYsMjgyOTMsMjgwNzEsMjQzMTQsMjA3MjUsMjMwMDQsMjM1NTgsMjc5NzQsMjc3NDMsMzAwODYsMzM5MzEsMjY3MjgsMjI4NzAsMzU3NjIsMjEyODAsMzcyMzMsMzg0NzcsMzQxMjEsMjY4OTgsMzA5NzcsMjg5NjYsMzMwMTQsMjAxMzIsMzcwNjYsMjc5NzUsMzk1NTYsMjMwNDcsMjIyMDQsMjU2MDUsMzgxMjgsMzA2OTksMjAzODksMzMwNTAsMjk0MDksMzUyODIsMzkyOTAsMzI1NjQsMzI0NzgsMjExMTksMjU5NDUsMzcyMzcsMzY3MzUsMzY3MzksMjE0ODMsMzEzODIsMjU1ODEsMjU1MDksMzAzNDIsMzEyMjQsMzQ5MDMsMzg0NTQsMjUxMzAsMjExNjMsMzM0MTAsMjY3MDgsMjY0ODAsMjU0NjMsMzA1NzEsMzE0NjksMjc5MDUsMzI0NjcsMzUyOTksMjI5OTIsMjUxMDYsMzQyNDksMzM0NDUsMzAwMjgsMjA1MTEsMjAxNzEsMzAxMTcsMzU4MTksMjM2MjYsMjQwNjIsMzE1NjMsMjYwMjAsMzczMjksMjAxNzAsMjc5NDEsMzUxNjcsMzIwMzksMzgxODIsMjAxNjUsMzU4ODAsMzY4MjcsMzg3NzEsMjYxODcsMzExMDUsMzY4MTcsMjg5MDgsMjgwMjQsMzIxNTMsMzIxNTQsMzIxNTUsMzIxNTYsMzIxNTcsMzIxNTgsMzIxNTksMzIxNjAsMzIxNjEsMzIxNjIsMzIxNjMsMzIxNjQsMzIxNjUsMzIxNjcsMzIxNjgsMzIxNjksMzIxNzAsMzIxNzEsMzIxNzIsMzIxNzMsMzIxNzUsMzIxNzYsMzIxNzcsMzIxNzgsMzIxNzksMzIxODAsMzIxODEsMzIxODIsMzIxODMsMzIxODQsMzIxODUsMzIxODYsMzIxODcsMzIxODgsMzIxODksMzIxOTAsMzIxOTEsMzIxOTIsMzIxOTMsMzIxOTQsMzIxOTUsMzIxOTYsMzIxOTcsMzIxOTgsMzIxOTksMzIyMDAsMzIyMDEsMzIyMDIsMzIyMDMsMzIyMDQsMzIyMDUsMzIyMDYsMzIyMDcsMzIyMDgsMzIyMDksMzIyMTAsMzIyMTEsMzIyMTIsMzIyMTMsMzIyMTQsMzIyMTUsMzIyMTYsMzIyMTcsMzIyMTgsMzIyMTksMzIyMjAsMzIyMjEsMzIyMjIsMzIyMjMsMzIyMjQsMzIyMjUsMzIyMjYsMzIyMjcsMzIyMjgsMzIyMjksMzIyMzAsMzIyMzEsMzIyMzIsMzIyMzMsMzIyMzQsMzIyMzUsMzIyMzYsMzIyMzcsMzIyMzgsMzIyMzksMzIyNDAsMzIyNDEsMzIyNDIsMzIyNDMsMzIyNDQsMzIyNDUsMzIyNDYsMzIyNDcsMzIyNDgsMzIyNDksMzIyNTAsMjM2MTMsMjExNzAsMzM2MDYsMjA4MzQsMzM1NTAsMzA1NTUsMjYyMzAsNDAxMjAsMjAxNDAsMjQ3NzgsMzE5MzQsMzE5MjMsMzI0NjMsMjAxMTcsMzU2ODYsMjYyMjMsMzkwNDgsMzg3NDUsMjI2NTksMjU5NjQsMzgyMzYsMjQ0NTIsMzAxNTMsMzg3NDIsMzE0NTUsMzE0NTQsMjA5MjgsMjg4NDcsMzEzODQsMjU1NzgsMzEzNTAsMzI0MTYsMjk1OTAsMzg4OTMsMjAwMzcsMjg3OTIsMjAwNjEsMzcyMDIsMjE0MTcsMjU5MzcsMjYwODcsMzMyNzYsMzMyODUsMjE2NDYsMjM2MDEsMzAxMDYsMzg4MTYsMjUzMDQsMjk0MDEsMzAxNDEsMjM2MjEsMzk1NDUsMzM3MzgsMjM2MTYsMjE2MzIsMzA2OTcsMjAwMzAsMjc4MjIsMzI4NTgsMjUyOTgsMjU0NTQsMjQwNDAsMjA4NTUsMzYzMTcsMzYzODIsMzgxOTEsMjA0NjUsMjE0NzcsMjQ4MDcsMjg4NDQsMjEwOTUsMjU0MjQsNDA1MTUsMjMwNzEsMjA1MTgsMzA1MTksMjEzNjcsMzI0ODIsMjU3MzMsMjU4OTksMjUyMjUsMjU0OTYsMjA1MDAsMjkyMzcsMzUyNzMsMjA5MTUsMzU3NzYsMzI0NzcsMjIzNDMsMzM3NDAsMzgwNTUsMjA4OTEsMjE1MzEsMjM4MDMsMzIyNTEsMzIyNTIsMzIyNTMsMzIyNTQsMzIyNTUsMzIyNTYsMzIyNTcsMzIyNTgsMzIyNTksMzIyNjAsMzIyNjEsMzIyNjIsMzIyNjMsMzIyNjQsMzIyNjUsMzIyNjYsMzIyNjcsMzIyNjgsMzIyNjksMzIyNzAsMzIyNzEsMzIyNzIsMzIyNzMsMzIyNzQsMzIyNzUsMzIyNzYsMzIyNzcsMzIyNzgsMzIyNzksMzIyODAsMzIyODEsMzIyODIsMzIyODMsMzIyODQsMzIyODUsMzIyODYsMzIyODcsMzIyODgsMzIyODksMzIyOTAsMzIyOTEsMzIyOTIsMzIyOTMsMzIyOTQsMzIyOTUsMzIyOTYsMzIyOTcsMzIyOTgsMzIyOTksMzIzMDAsMzIzMDEsMzIzMDIsMzIzMDMsMzIzMDQsMzIzMDUsMzIzMDYsMzIzMDcsMzIzMDgsMzIzMDksMzIzMTAsMzIzMTEsMzIzMTIsMzIzMTMsMzIzMTQsMzIzMTYsMzIzMTcsMzIzMTgsMzIzMTksMzIzMjAsMzIzMjIsMzIzMjMsMzIzMjQsMzIzMjUsMzIzMjYsMzIzMjgsMzIzMjksMzIzMzAsMzIzMzEsMzIzMzIsMzIzMzMsMzIzMzQsMzIzMzUsMzIzMzYsMzIzMzcsMzIzMzgsMzIzMzksMzIzNDAsMzIzNDEsMzIzNDIsMzIzNDMsMzIzNDQsMzIzNDUsMzIzNDYsMzIzNDcsMzIzNDgsMzIzNDksMjA0MjYsMzE0NTksMjc5OTQsMzcwODksMzk1NjcsMjE4ODgsMjE2NTQsMjEzNDUsMjE2NzksMjQzMjAsMjU1NzcsMjY5OTksMjA5NzUsMjQ5MzYsMjEwMDIsMjI1NzAsMjEyMDgsMjIzNTAsMzA3MzMsMzA0NzUsMjQyNDcsMjQ5NTEsMzE5NjgsMjUxNzksMjUyMzksMjAxMzAsMjg4MjEsMzI3NzEsMjUzMzUsMjg5MDAsMzg3NTIsMjIzOTEsMzM0OTksMjY2MDcsMjY4NjksMzA5MzMsMzkwNjMsMzExODUsMjI3NzEsMjE2ODMsMjE0ODcsMjgyMTIsMjA4MTEsMjEwNTEsMjM0NTgsMzU4MzgsMzI5NDMsMjE4MjcsMjI0MzgsMjQ2OTEsMjIzNTMsMjE1NDksMzEzNTQsMjQ2NTYsMjMzODAsMjU1MTEsMjUyNDgsMjE0NzUsMjUxODcsMjM0OTUsMjY1NDMsMjE3NDEsMzEzOTEsMzM1MTAsMzcyMzksMjQyMTEsMzUwNDQsMjI4NDAsMjI0NDYsMjUzNTgsMzYzMjgsMzMwMDcsMjIzNTksMzE2MDcsMjAzOTMsMjQ1NTUsMjM0ODUsMjc0NTQsMjEyODEsMzE1NjgsMjkzNzgsMjY2OTQsMzA3MTksMzA1MTgsMjYxMDMsMjA5MTcsMjAxMTEsMzA0MjAsMjM3NDMsMzEzOTcsMzM5MDksMjI4NjIsMzk3NDUsMjA2MDgsMzIzNTAsMzIzNTEsMzIzNTIsMzIzNTMsMzIzNTQsMzIzNTUsMzIzNTYsMzIzNTcsMzIzNTgsMzIzNTksMzIzNjAsMzIzNjEsMzIzNjIsMzIzNjMsMzIzNjQsMzIzNjUsMzIzNjYsMzIzNjcsMzIzNjgsMzIzNjksMzIzNzAsMzIzNzEsMzIzNzIsMzIzNzMsMzIzNzQsMzIzNzUsMzIzNzYsMzIzNzcsMzIzNzgsMzIzNzksMzIzODAsMzIzODEsMzIzODIsMzIzODMsMzIzODQsMzIzODUsMzIzODcsMzIzODgsMzIzODksMzIzOTAsMzIzOTEsMzIzOTIsMzIzOTMsMzIzOTQsMzIzOTUsMzIzOTYsMzIzOTcsMzIzOTgsMzIzOTksMzI0MDAsMzI0MDEsMzI0MDIsMzI0MDMsMzI0MDQsMzI0MDUsMzI0MDYsMzI0MDcsMzI0MDgsMzI0MDksMzI0MTAsMzI0MTIsMzI0MTMsMzI0MTQsMzI0MzAsMzI0MzYsMzI0NDMsMzI0NDQsMzI0NzAsMzI0ODQsMzI0OTIsMzI1MDUsMzI1MjIsMzI1MjgsMzI1NDIsMzI1NjcsMzI1NjksMzI1NzEsMzI1NzIsMzI1NzMsMzI1NzQsMzI1NzUsMzI1NzYsMzI1NzcsMzI1NzksMzI1ODIsMzI1ODMsMzI1ODQsMzI1ODUsMzI1ODYsMzI1ODcsMzI1ODgsMzI1ODksMzI1OTAsMzI1OTEsMzI1OTQsMzI1OTUsMzkzMDQsMjQ4NzEsMjgyOTEsMjIzNzIsMjYxMTgsMjU0MTQsMjIyNTYsMjUzMjQsMjUxOTMsMjQyNzUsMzg0MjAsMjI0MDMsMjUyODksMjE4OTUsMzQ1OTMsMzMwOTgsMzY3NzEsMjE4NjIsMzM3MTMsMjY0NjksMzYxODIsMzQwMTMsMjMxNDYsMjY2MzksMjUzMTgsMzE3MjYsMzg0MTcsMjA4NDgsMjg1NzIsMzU4ODgsMjU1OTcsMzUyNzIsMjUwNDIsMzI1MTgsMjg4NjYsMjgzODksMjk3MDEsMjcwMjgsMjk0MzYsMjQyNjYsMzcwNzAsMjYzOTEsMjgwMTAsMjU0MzgsMjExNzEsMjkyODIsMzI3NjksMjAzMzIsMjMwMTMsMzcyMjYsMjg4ODksMjgwNjEsMjEyMDIsMjAwNDgsMzg2NDcsMzgyNTMsMzQxNzQsMzA5MjIsMzIwNDcsMjA3NjksMjI0MTgsMjU3OTQsMzI5MDcsMzE4NjcsMjc4ODIsMjY4NjUsMjY5NzQsMjA5MTksMjE0MDAsMjY3OTIsMjkzMTMsNDA2NTQsMzE3MjksMjk0MzIsMzExNjMsMjg0MzUsMjk3MDIsMjY0NDYsMzczMjQsNDAxMDAsMzEwMzYsMzM2NzMsMzM2MjAsMjE1MTksMjY2NDcsMjAwMjksMjEzODUsMjExNjksMzA3ODIsMjEzODIsMjEwMzMsMjA2MTYsMjAzNjMsMjA0MzIsMzI1OTgsMzI2MDEsMzI2MDMsMzI2MDQsMzI2MDUsMzI2MDYsMzI2MDgsMzI2MTEsMzI2MTIsMzI2MTMsMzI2MTQsMzI2MTUsMzI2MTksMzI2MjAsMzI2MjEsMzI2MjMsMzI2MjQsMzI2MjcsMzI2MjksMzI2MzAsMzI2MzEsMzI2MzIsMzI2MzQsMzI2MzUsMzI2MzYsMzI2MzcsMzI2MzksMzI2NDAsMzI2NDIsMzI2NDMsMzI2NDQsMzI2NDUsMzI2NDYsMzI2NDcsMzI2NDgsMzI2NDksMzI2NTEsMzI2NTMsMzI2NTUsMzI2NTYsMzI2NTcsMzI2NTgsMzI2NTksMzI2NjEsMzI2NjIsMzI2NjMsMzI2NjQsMzI2NjUsMzI2NjcsMzI2NjgsMzI2NzIsMzI2NzQsMzI2NzUsMzI2NzcsMzI2NzgsMzI2ODAsMzI2ODEsMzI2ODIsMzI2ODMsMzI2ODQsMzI2ODUsMzI2ODYsMzI2ODksMzI2OTEsMzI2OTIsMzI2OTMsMzI2OTQsMzI2OTUsMzI2OTgsMzI2OTksMzI3MDIsMzI3MDQsMzI3MDYsMzI3MDcsMzI3MDgsMzI3MTAsMzI3MTEsMzI3MTIsMzI3MTMsMzI3MTUsMzI3MTcsMzI3MTksMzI3MjAsMzI3MjEsMzI3MjIsMzI3MjMsMzI3MjYsMzI3MjcsMzI3MjksMzI3MzAsMzI3MzEsMzI3MzIsMzI3MzMsMzI3MzQsMzI3MzgsMzI3MzksMzAxNzgsMzE0MzUsMzE4OTAsMjc4MTMsMzg1ODIsMjExNDcsMjk4MjcsMjE3MzcsMjA0NTcsMzI4NTIsMzM3MTQsMzY4MzAsMzgyNTYsMjQyNjUsMjQ2MDQsMjgwNjMsMjQwODgsMjU5NDcsMzMwODAsMzgxNDIsMjQ2NTEsMjg4NjAsMzI0NTEsMzE5MTgsMjA5MzcsMjY3NTMsMzE5MjEsMzMzOTEsMjAwMDQsMzY3NDIsMzczMjcsMjYyMzgsMjAxNDIsMzU4NDUsMjU3NjksMzI4NDIsMjA2OTgsMzAxMDMsMjkxMzQsMjM1MjUsMzY3OTcsMjg1MTgsMjAxMDIsMjU3MzAsMzgyNDMsMjQyNzgsMjYwMDksMjEwMTUsMzUwMTAsMjg4NzIsMjExNTUsMjk0NTQsMjk3NDcsMjY1MTksMzA5NjcsMzg2NzgsMjAwMjAsMzcwNTEsNDAxNTgsMjgxMDcsMjA5NTUsMzYxNjEsMjE1MzMsMjUyOTQsMjk2MTgsMzM3NzcsMzg2NDYsNDA4MzYsMzgwODMsMjAyNzgsMzI2NjYsMjA5NDAsMjg3ODksMzg1MTcsMjM3MjUsMzkwNDYsMjE0NzgsMjAxOTYsMjgzMTYsMjk3MDUsMjcwNjAsMzA4MjcsMzkzMTEsMzAwNDEsMjEwMTYsMzAyNDQsMjc5NjksMjY2MTEsMjA4NDUsNDA4NTcsMzI4NDMsMjE2NTcsMzE1NDgsMzE0MjMsMzI3NDAsMzI3NDMsMzI3NDQsMzI3NDYsMzI3NDcsMzI3NDgsMzI3NDksMzI3NTEsMzI3NTQsMzI3NTYsMzI3NTcsMzI3NTgsMzI3NTksMzI3NjAsMzI3NjEsMzI3NjIsMzI3NjUsMzI3NjYsMzI3NjcsMzI3NzAsMzI3NzUsMzI3NzYsMzI3NzcsMzI3NzgsMzI3ODIsMzI3ODMsMzI3ODUsMzI3ODcsMzI3OTQsMzI3OTUsMzI3OTcsMzI3OTgsMzI3OTksMzI4MDEsMzI4MDMsMzI4MDQsMzI4MTEsMzI4MTIsMzI4MTMsMzI4MTQsMzI4MTUsMzI4MTYsMzI4MTgsMzI4MjAsMzI4MjUsMzI4MjYsMzI4MjgsMzI4MzAsMzI4MzIsMzI4MzMsMzI4MzYsMzI4MzcsMzI4MzksMzI4NDAsMzI4NDEsMzI4NDYsMzI4NDcsMzI4NDgsMzI4NDksMzI4NTEsMzI4NTMsMzI4NTQsMzI4NTUsMzI4NTcsMzI4NTksMzI4NjAsMzI4NjEsMzI4NjIsMzI4NjMsMzI4NjQsMzI4NjUsMzI4NjYsMzI4NjcsMzI4NjgsMzI4NjksMzI4NzAsMzI4NzEsMzI4NzIsMzI4NzUsMzI4NzYsMzI4NzcsMzI4NzgsMzI4NzksMzI4ODAsMzI4ODIsMzI4ODMsMzI4ODQsMzI4ODUsMzI4ODYsMzI4ODcsMzI4ODgsMzI4ODksMzI4OTAsMzI4OTEsMzI4OTIsMzI4OTMsMzg1MzQsMjI0MDQsMjUzMTQsMzg0NzEsMjcwMDQsMjMwNDQsMjU2MDIsMzE2OTksMjg0MzEsMzg0NzUsMzM0NDYsMjEzNDYsMzkwNDUsMjQyMDgsMjg4MDksMjU1MjMsMjEzNDgsMzQzODMsNDAwNjUsNDA1OTUsMzA4NjAsMzg3MDYsMzYzMzUsMzYxNjIsNDA1NzUsMjg1MTAsMzExMDgsMjQ0MDUsMzg0NzAsMjUxMzQsMzk1NDAsMjE1MjUsMzgxMDksMjAzODcsMjYwNTMsMjM2NTMsMjM2NDksMzI1MzMsMzQzODUsMjc2OTUsMjQ0NTksMjk1NzUsMjgzODgsMzI1MTEsMjM3ODIsMjUzNzEsMjM0MDIsMjgzOTAsMjEzNjUsMjAwODEsMjU1MDQsMzAwNTMsMjUyNDksMzY3MTgsMjAyNjIsMjAxNzcsMjc4MTQsMzI0MzgsMzU3NzAsMzM4MjEsMzQ3NDYsMzI1OTksMzY5MjMsMzgxNzksMzE2NTcsMzk1ODUsMzUwNjQsMzM4NTMsMjc5MzEsMzk1NTgsMzI0NzYsMjI5MjAsNDA2MzUsMjk1OTUsMzA3MjEsMzQ0MzQsMzk1MzIsMzk1NTQsMjIwNDMsMjE1MjcsMjI0NzUsMjAwODAsNDA2MTQsMjEzMzQsMzY4MDgsMzMwMzMsMzA2MTAsMzkzMTQsMzQ1NDIsMjgzODUsMzQwNjcsMjYzNjQsMjQ5MzAsMjg0NTksMzI4OTQsMzI4OTcsMzI4OTgsMzI5MDEsMzI5MDQsMzI5MDYsMzI5MDksMzI5MTAsMzI5MTEsMzI5MTIsMzI5MTMsMzI5MTQsMzI5MTYsMzI5MTcsMzI5MTksMzI5MjEsMzI5MjYsMzI5MzEsMzI5MzQsMzI5MzUsMzI5MzYsMzI5NDAsMzI5NDQsMzI5NDcsMzI5NDksMzI5NTAsMzI5NTIsMzI5NTMsMzI5NTUsMzI5NjUsMzI5NjcsMzI5NjgsMzI5NjksMzI5NzAsMzI5NzEsMzI5NzUsMzI5NzYsMzI5NzcsMzI5NzgsMzI5NzksMzI5ODAsMzI5ODEsMzI5ODQsMzI5OTEsMzI5OTIsMzI5OTQsMzI5OTUsMzI5OTgsMzMwMDYsMzMwMTMsMzMwMTUsMzMwMTcsMzMwMTksMzMwMjIsMzMwMjMsMzMwMjQsMzMwMjUsMzMwMjcsMzMwMjgsMzMwMjksMzMwMzEsMzMwMzIsMzMwMzUsMzMwMzYsMzMwNDUsMzMwNDcsMzMwNDksMzMwNTEsMzMwNTIsMzMwNTMsMzMwNTUsMzMwNTYsMzMwNTcsMzMwNTgsMzMwNTksMzMwNjAsMzMwNjEsMzMwNjIsMzMwNjMsMzMwNjQsMzMwNjUsMzMwNjYsMzMwNjcsMzMwNjksMzMwNzAsMzMwNzIsMzMwNzUsMzMwNzYsMzMwNzcsMzMwNzksMzMwODEsMzMwODIsMzMwODMsMzMwODQsMzMwODUsMzMwODcsMzU4ODEsMzM0MjYsMzM1NzksMzA0NTAsMjc2NjcsMjQ1MzcsMzM3MjUsMjk0ODMsMzM1NDEsMzgxNzAsMjc2MTEsMzA2ODMsMzgwODYsMjEzNTksMzM1MzgsMjA4ODIsMjQxMjUsMzU5ODAsMzYxNTIsMjAwNDAsMjk2MTEsMjY1MjIsMjY3NTcsMzcyMzgsMzg2NjUsMjkwMjgsMjc4MDksMzA0NzMsMjMxODYsMzgyMDksMjc1OTksMzI2NTQsMjYxNTEsMjM1MDQsMjI5NjksMjMxOTQsMzgzNzYsMzgzOTEsMjAyMDQsMzM4MDQsMzM5NDUsMjczMDgsMzA0MzEsMzgxOTIsMjk0NjcsMjY3OTAsMjMzOTEsMzA1MTEsMzcyNzQsMzg3NTMsMzE5NjQsMzY4NTUsMzU4NjgsMjQzNTcsMzE4NTksMzExOTIsMzUyNjksMjc4NTIsMzQ1ODgsMjM0OTQsMjQxMzAsMjY4MjUsMzA0OTYsMzI1MDEsMjA4ODUsMjA4MTMsMjExOTMsMjMwODEsMzI1MTcsMzg3NTQsMzM0OTUsMjU1NTEsMzA1OTYsMzQyNTYsMzExODYsMjgyMTgsMjQyMTcsMjI5MzcsMzQwNjUsMjg3ODEsMjc2NjUsMjUyNzksMzAzOTksMjU5MzUsMjQ3NTEsMzgzOTcsMjYxMjYsMzQ3MTksNDA0ODMsMzgxMjUsMjE1MTcsMjE2MjksMzU4ODQsMjU3MjAsMzMwODgsMzMwODksMzMwOTAsMzMwOTEsMzMwOTIsMzMwOTMsMzMwOTUsMzMwOTcsMzMxMDEsMzMxMDIsMzMxMDMsMzMxMDYsMzMxMTAsMzMxMTEsMzMxMTIsMzMxMTUsMzMxMTYsMzMxMTcsMzMxMTgsMzMxMTksMzMxMjEsMzMxMjIsMzMxMjMsMzMxMjQsMzMxMjYsMzMxMjgsMzMxMzAsMzMxMzEsMzMxMzIsMzMxMzUsMzMxMzgsMzMxMzksMzMxNDEsMzMxNDIsMzMxNDMsMzMxNDQsMzMxNTMsMzMxNTUsMzMxNTYsMzMxNTcsMzMxNTgsMzMxNTksMzMxNjEsMzMxNjMsMzMxNjQsMzMxNjUsMzMxNjYsMzMxNjgsMzMxNzAsMzMxNzEsMzMxNzIsMzMxNzMsMzMxNzQsMzMxNzUsMzMxNzcsMzMxNzgsMzMxODIsMzMxODMsMzMxODQsMzMxODUsMzMxODYsMzMxODgsMzMxODksMzMxOTEsMzMxOTMsMzMxOTUsMzMxOTYsMzMxOTcsMzMxOTgsMzMxOTksMzMyMDAsMzMyMDEsMzMyMDIsMzMyMDQsMzMyMDUsMzMyMDYsMzMyMDcsMzMyMDgsMzMyMDksMzMyMTIsMzMyMTMsMzMyMTQsMzMyMTUsMzMyMjAsMzMyMjEsMzMyMjMsMzMyMjQsMzMyMjUsMzMyMjcsMzMyMjksMzMyMzAsMzMyMzEsMzMyMzIsMzMyMzMsMzMyMzQsMzMyMzUsMjU3MjEsMzQzMjEsMjcxNjksMzMxODAsMzA5NTIsMjU3MDUsMzk3NjQsMjUyNzMsMjY0MTEsMzM3MDcsMjI2OTYsNDA2NjQsMjc4MTksMjg0NDgsMjM1MTgsMzg0NzYsMzU4NTEsMjkyNzksMjY1NzYsMjUyODcsMjkyODEsMjAxMzcsMjI5ODIsMjc1OTcsMjI2NzUsMjYyODYsMjQxNDksMjEyMTUsMjQ5MTcsMjY0MDgsMzA0NDYsMzA1NjYsMjkyODcsMzEzMDIsMjUzNDMsMjE3MzgsMjE1ODQsMzgwNDgsMzcwMjcsMjMwNjgsMzI0MzUsMjc2NzAsMjAwMzUsMjI5MDIsMzI3ODQsMjI4NTYsMjEzMzUsMzAwMDcsMzg1OTAsMjIyMTgsMjUzNzYsMzMwNDEsMjQ3MDAsMzgzOTMsMjgxMTgsMjE2MDIsMzkyOTcsMjA4NjksMjMyNzMsMzMwMjEsMjI5NTgsMzg2NzUsMjA1MjIsMjc4NzcsMjM2MTIsMjUzMTEsMjAzMjAsMjEzMTEsMzMxNDcsMzY4NzAsMjgzNDYsMzQwOTEsMjUyODgsMjQxODAsMzA5MTAsMjU3ODEsMjU0NjcsMjQ1NjUsMjMwNjQsMzcyNDcsNDA0NzksMjM2MTUsMjU0MjMsMzI4MzQsMjM0MjEsMjE4NzAsMzgyMTgsMzgyMjEsMjgwMzcsMjQ3NDQsMjY1OTIsMjk0MDYsMjA5NTcsMjM0MjUsMzMyMzYsMzMyMzcsMzMyMzgsMzMyMzksMzMyNDAsMzMyNDEsMzMyNDIsMzMyNDMsMzMyNDQsMzMyNDUsMzMyNDYsMzMyNDcsMzMyNDgsMzMyNDksMzMyNTAsMzMyNTIsMzMyNTMsMzMyNTQsMzMyNTYsMzMyNTcsMzMyNTksMzMyNjIsMzMyNjMsMzMyNjQsMzMyNjUsMzMyNjYsMzMyNjksMzMyNzAsMzMyNzEsMzMyNzIsMzMyNzMsMzMyNzQsMzMyNzcsMzMyNzksMzMyODMsMzMyODcsMzMyODgsMzMyODksMzMyOTAsMzMyOTEsMzMyOTQsMzMyOTUsMzMyOTcsMzMyOTksMzMzMDEsMzMzMDIsMzMzMDMsMzMzMDQsMzMzMDUsMzMzMDYsMzMzMDksMzMzMTIsMzMzMTYsMzMzMTcsMzMzMTgsMzMzMTksMzMzMjEsMzMzMjYsMzMzMzAsMzMzMzgsMzMzNDAsMzMzNDEsMzMzNDMsMzMzNDQsMzMzNDUsMzMzNDYsMzMzNDcsMzMzNDksMzMzNTAsMzMzNTIsMzMzNTQsMzMzNTYsMzMzNTcsMzMzNTgsMzMzNjAsMzMzNjEsMzMzNjIsMzMzNjMsMzMzNjQsMzMzNjUsMzMzNjYsMzMzNjcsMzMzNjksMzMzNzEsMzMzNzIsMzMzNzMsMzMzNzQsMzMzNzYsMzMzNzcsMzMzNzgsMzMzNzksMzMzODAsMzMzODEsMzMzODIsMzMzODMsMzMzODUsMjUzMTksMjc4NzAsMjkyNzUsMjUxOTcsMzgwNjIsMzI0NDUsMzMwNDMsMjc5ODcsMjA4OTIsMjQzMjQsMjI5MDAsMjExNjIsMjQ1OTQsMjI4OTksMjYyNjIsMzQzODQsMzAxMTEsMjUzODYsMjUwNjIsMzE5ODMsMzU4MzQsMjE3MzQsMjc0MzEsNDA0ODUsMjc1NzIsMzQyNjEsMjE1ODksMjA1OTgsMjc4MTIsMjE4NjYsMzYyNzYsMjkyMjgsMjQwODUsMjQ1OTcsMjk3NTAsMjUyOTMsMjU0OTAsMjkyNjAsMjQ0NzIsMjgyMjcsMjc5NjYsMjU4NTYsMjg1MDQsMzA0MjQsMzA5MjgsMzA0NjAsMzAwMzYsMjEwMjgsMjE0NjcsMjAwNTEsMjQyMjIsMjYwNDksMzI4MTAsMzI5ODIsMjUyNDMsMjE2MzgsMjEwMzIsMjg4NDYsMzQ5NTcsMzYzMDUsMjc4NzMsMjE2MjQsMzI5ODYsMjI1MjEsMzUwNjAsMzYxODAsMzg1MDYsMzcxOTcsMjAzMjksMjc4MDMsMjE5NDMsMzA0MDYsMzA3NjgsMjUyNTYsMjg5MjEsMjg1NTgsMjQ0MjksMzQwMjgsMjY4NDIsMzA4NDQsMzE3MzUsMzMxOTIsMjYzNzksNDA1MjcsMjU0NDcsMzA4OTYsMjIzODMsMzA3MzgsMzg3MTMsMjUyMDksMjUyNTksMjExMjgsMjk3NDksMjc2MDcsMzMzODYsMzMzODcsMzMzODgsMzMzODksMzMzOTMsMzMzOTcsMzMzOTgsMzMzOTksMzM0MDAsMzM0MDMsMzM0MDQsMzM0MDgsMzM0MDksMzM0MTEsMzM0MTMsMzM0MTQsMzM0MTUsMzM0MTcsMzM0MjAsMzM0MjQsMzM0MjcsMzM0MjgsMzM0MjksMzM0MzAsMzM0MzQsMzM0MzUsMzM0MzgsMzM0NDAsMzM0NDIsMzM0NDMsMzM0NDcsMzM0NTgsMzM0NjEsMzM0NjIsMzM0NjYsMzM0NjcsMzM0NjgsMzM0NzEsMzM0NzIsMzM0NzQsMzM0NzUsMzM0NzcsMzM0NzgsMzM0ODEsMzM0ODgsMzM0OTQsMzM0OTcsMzM0OTgsMzM1MDEsMzM1MDYsMzM1MTEsMzM1MTIsMzM1MTMsMzM1MTQsMzM1MTYsMzM1MTcsMzM1MTgsMzM1MjAsMzM1MjIsMzM1MjMsMzM1MjUsMzM1MjYsMzM1MjgsMzM1MzAsMzM1MzIsMzM1MzMsMzM1MzQsMzM1MzUsMzM1MzYsMzM1NDYsMzM1NDcsMzM1NDksMzM1NTIsMzM1NTQsMzM1NTUsMzM1NTgsMzM1NjAsMzM1NjEsMzM1NjUsMzM1NjYsMzM1NjcsMzM1NjgsMzM1NjksMzM1NzAsMzM1NzEsMzM1NzIsMzM1NzMsMzM1NzQsMzM1NzcsMzM1NzgsMzM1ODIsMzM1ODQsMzM1ODYsMzM1OTEsMzM1OTUsMzM1OTcsMjE4NjAsMzMwODYsMzAxMzAsMzAzODIsMjEzMDUsMzAxNzQsMjA3MzEsMjM2MTcsMzU2OTIsMzE2ODcsMjA1NTksMjkyNTUsMzk1NzUsMzkxMjgsMjg0MTgsMjk5MjIsMzEwODAsMjU3MzUsMzA2MjksMjUzNDAsMzkwNTcsMzYxMzksMjE2OTcsMzI4NTYsMjAwNTAsMjIzNzgsMzM1MjksMzM4MDUsMjQxNzksMjA5NzMsMjk5NDIsMzU3ODAsMjM2MzEsMjIzNjksMjc5MDAsMzkwNDcsMjMxMTAsMzA3NzIsMzk3NDgsMzY4NDMsMzE4OTMsMjEwNzgsMjUxNjksMzgxMzgsMjAxNjYsMzM2NzAsMzM4ODksMzM3NjksMzM5NzAsMjI0ODQsMjY0MjAsMjIyNzUsMjYyMjIsMjgwMDYsMzU4ODksMjYzMzMsMjg2ODksMjYzOTksMjc0NTAsMjY2NDYsMjUxMTQsMjI5NzEsMTk5NzEsMjA5MzIsMjg0MjIsMjY1NzgsMjc3OTEsMjA4NTQsMjY4MjcsMjI4NTUsMjc0OTUsMzAwNTQsMjM4MjIsMzMwNDAsNDA3ODQsMjYwNzEsMzEwNDgsMzEwNDEsMzk1NjksMzYyMTUsMjM2ODIsMjAwNjIsMjAyMjUsMjE1NTEsMjI4NjUsMzA3MzIsMjIxMjAsMjc2NjgsMzY4MDQsMjQzMjMsMjc3NzMsMjc4NzUsMzU3NTUsMjU0ODgsMzM1OTgsMzM1OTksMzM2MDEsMzM2MDIsMzM2MDQsMzM2MDUsMzM2MDgsMzM2MTAsMzM2MTEsMzM2MTIsMzM2MTMsMzM2MTQsMzM2MTksMzM2MjEsMzM2MjIsMzM2MjMsMzM2MjQsMzM2MjUsMzM2MjksMzM2MzQsMzM2NDgsMzM2NDksMzM2NTAsMzM2NTEsMzM2NTIsMzM2NTMsMzM2NTQsMzM2NTcsMzM2NTgsMzM2NjIsMzM2NjMsMzM2NjQsMzM2NjUsMzM2NjYsMzM2NjcsMzM2NjgsMzM2NzEsMzM2NzIsMzM2NzQsMzM2NzUsMzM2NzYsMzM2NzcsMzM2NzksMzM2ODAsMzM2ODEsMzM2ODQsMzM2ODUsMzM2ODYsMzM2ODcsMzM2ODksMzM2OTAsMzM2OTMsMzM2OTUsMzM2OTcsMzM2OTgsMzM2OTksMzM3MDAsMzM3MDEsMzM3MDIsMzM3MDMsMzM3MDgsMzM3MDksMzM3MTAsMzM3MTEsMzM3MTcsMzM3MjMsMzM3MjYsMzM3MjcsMzM3MzAsMzM3MzEsMzM3MzIsMzM3MzQsMzM3MzYsMzM3MzcsMzM3MzksMzM3NDEsMzM3NDIsMzM3NDQsMzM3NDUsMzM3NDYsMzM3NDcsMzM3NDksMzM3NTEsMzM3NTMsMzM3NTQsMzM3NTUsMzM3NTgsMzM3NjIsMzM3NjMsMzM3NjQsMzM3NjYsMzM3NjcsMzM3NjgsMzM3NzEsMzM3NzIsMzM3NzMsMjQ2ODgsMjc5NjUsMjkzMDEsMjUxOTAsMzgwMzAsMzgwODUsMjEzMTUsMzY4MDEsMzE2MTQsMjAxOTEsMzU4NzgsMjAwOTQsNDA2NjAsMzgwNjUsMzgwNjcsMjEwNjksMjg1MDgsMzY5NjMsMjc5NzMsMzU4OTIsMjI1NDUsMjM4ODQsMjc0MjQsMjc0NjUsMjY1MzgsMjE1OTUsMzMxMDgsMzI2NTIsMjI2ODEsMzQxMDMsMjQzNzgsMjUyNTAsMjcyMDcsMzgyMDEsMjU5NzAsMjQ3MDgsMjY3MjUsMzA2MzEsMjAwNTIsMjAzOTIsMjQwMzksMzg4MDgsMjU3NzIsMzI3MjgsMjM3ODksMjA0MzEsMzEzNzMsMjA5OTksMzM1NDAsMTk5ODgsMjQ2MjMsMzEzNjMsMzgwNTQsMjA0MDUsMjAxNDYsMzEyMDYsMjk3NDgsMjEyMjAsMzM0NjUsMjU4MTAsMzExNjUsMjM1MTcsMjc3NzcsMzg3MzgsMzY3MzEsMjc2ODIsMjA1NDIsMjEzNzUsMjgxNjUsMjU4MDYsMjYyMjgsMjc2OTYsMjQ3NzMsMzkwMzEsMzU4MzEsMjQxOTgsMjk3NTYsMzEzNTEsMzExNzksMTk5OTIsMzcwNDEsMjk2OTksMjc3MTQsMjIyMzQsMzcxOTUsMjc4NDUsMzYyMzUsMjEzMDYsMzQ1MDIsMjYzNTQsMzY1MjcsMjM2MjQsMzk1MzcsMjgxOTIsMzM3NzQsMzM3NzUsMzM3NzksMzM3ODAsMzM3ODEsMzM3ODIsMzM3ODMsMzM3ODYsMzM3ODcsMzM3ODgsMzM3OTAsMzM3OTEsMzM3OTIsMzM3OTQsMzM3OTcsMzM3OTksMzM4MDAsMzM4MDEsMzM4MDIsMzM4MDgsMzM4MTAsMzM4MTEsMzM4MTIsMzM4MTMsMzM4MTQsMzM4MTUsMzM4MTcsMzM4MTgsMzM4MTksMzM4MjIsMzM4MjMsMzM4MjQsMzM4MjUsMzM4MjYsMzM4MjcsMzM4MzMsMzM4MzQsMzM4MzUsMzM4MzYsMzM4MzcsMzM4MzgsMzM4MzksMzM4NDAsMzM4NDIsMzM4NDMsMzM4NDQsMzM4NDUsMzM4NDYsMzM4NDcsMzM4NDksMzM4NTAsMzM4NTEsMzM4NTQsMzM4NTUsMzM4NTYsMzM4NTcsMzM4NTgsMzM4NTksMzM4NjAsMzM4NjEsMzM4NjMsMzM4NjQsMzM4NjUsMzM4NjYsMzM4NjcsMzM4NjgsMzM4NjksMzM4NzAsMzM4NzEsMzM4NzIsMzM4NzQsMzM4NzUsMzM4NzYsMzM4NzcsMzM4NzgsMzM4ODAsMzM4ODUsMzM4ODYsMzM4ODcsMzM4ODgsMzM4OTAsMzM4OTIsMzM4OTMsMzM4OTQsMzM4OTUsMzM4OTYsMzM4OTgsMzM5MDIsMzM5MDMsMzM5MDQsMzM5MDYsMzM5MDgsMzM5MTEsMzM5MTMsMzM5MTUsMzM5MTYsMjE0NjIsMjMwOTQsNDA4NDMsMzYyNTksMjE0MzUsMjIyODAsMzkwNzksMjY0MzUsMzcyNzUsMjc4NDksMjA4NDAsMzAxNTQsMjUzMzEsMjkzNTYsMjEwNDgsMjExNDksMzI1NzAsMjg4MjAsMzAyNjQsMjEzNjQsNDA1MjIsMjcwNjMsMzA4MzAsMzg1OTIsMzUwMzMsMzI2NzYsMjg5ODIsMjkxMjMsMjA4NzMsMjY1NzksMjk5MjQsMjI3NTYsMjU4ODAsMjIxOTksMzU3NTMsMzkyODYsMjUyMDAsMzI0NjksMjQ4MjUsMjg5MDksMjI3NjQsMjAxNjEsMjAxNTQsMjQ1MjUsMzg4ODcsMjAyMTksMzU3NDgsMjA5OTUsMjI5MjIsMzI0MjcsMjUxNzIsMjAxNzMsMjYwODUsMjUxMDIsMzM1OTIsMzM5OTMsMzM2MzUsMzQ3MDEsMjkwNzYsMjgzNDIsMjM0ODEsMzI0NjYsMjA4ODcsMjU1NDUsMjY1ODAsMzI5MDUsMzM1OTMsMzQ4MzcsMjA3NTQsMjM0MTgsMjI5MTQsMzY3ODUsMjAwODMsMjc3NDEsMjA4MzcsMzUxMDksMzY3MTksMzg0NDYsMzQxMjIsMjk3OTAsMzgxNjAsMzgzODQsMjgwNzAsMzM1MDksMjQzNjksMjU3NDYsMjc5MjIsMzM4MzIsMzMxMzQsNDAxMzEsMjI2MjIsMzYxODcsMTk5NzcsMjE0NDEsMzM5MTcsMzM5MTgsMzM5MTksMzM5MjAsMzM5MjEsMzM5MjMsMzM5MjQsMzM5MjUsMzM5MjYsMzM5MzAsMzM5MzMsMzM5MzUsMzM5MzYsMzM5MzcsMzM5MzgsMzM5MzksMzM5NDAsMzM5NDEsMzM5NDIsMzM5NDQsMzM5NDYsMzM5NDcsMzM5NDksMzM5NTAsMzM5NTEsMzM5NTIsMzM5NTQsMzM5NTUsMzM5NTYsMzM5NTcsMzM5NTgsMzM5NTksMzM5NjAsMzM5NjEsMzM5NjIsMzM5NjMsMzM5NjQsMzM5NjUsMzM5NjYsMzM5NjgsMzM5NjksMzM5NzEsMzM5NzMsMzM5NzQsMzM5NzUsMzM5NzksMzM5ODAsMzM5ODIsMzM5ODQsMzM5ODYsMzM5ODcsMzM5ODksMzM5OTAsMzM5OTEsMzM5OTIsMzM5OTUsMzM5OTYsMzM5OTgsMzM5OTksMzQwMDIsMzQwMDQsMzQwMDUsMzQwMDcsMzQwMDgsMzQwMDksMzQwMTAsMzQwMTEsMzQwMTIsMzQwMTQsMzQwMTcsMzQwMTgsMzQwMjAsMzQwMjMsMzQwMjQsMzQwMjUsMzQwMjYsMzQwMjcsMzQwMjksMzQwMzAsMzQwMzEsMzQwMzMsMzQwMzQsMzQwMzUsMzQwMzYsMzQwMzcsMzQwMzgsMzQwMzksMzQwNDAsMzQwNDEsMzQwNDIsMzQwNDMsMzQwNDUsMzQwNDYsMzQwNDgsMzQwNDksMzQwNTAsMjAyNTQsMjU5NTUsMjY3MDUsMjE5NzEsMjAwMDcsMjU2MjAsMzk1NzgsMjUxOTUsMjMyMzQsMjk3OTEsMzMzOTQsMjgwNzMsMjY4NjIsMjA3MTEsMzM2NzgsMzA3MjIsMjY0MzIsMjEwNDksMjc4MDEsMzI0MzMsMjA2NjcsMjE4NjEsMjkwMjIsMzE1NzksMjYxOTQsMjk2NDIsMzM1MTUsMjY0NDEsMjM2NjUsMjEwMjQsMjkwNTMsMzQ5MjMsMzgzNzgsMzg0ODUsMjU3OTcsMzYxOTMsMzMyMDMsMjE4OTIsMjc3MzMsMjUxNTksMzI1NTgsMjI2NzQsMjAyNjAsMjE4MzAsMzYxNzUsMjYxODgsMTk5NzgsMjM1NzgsMzUwNTksMjY3ODYsMjU0MjIsMzEyNDUsMjg5MDMsMzM0MjEsMjEyNDIsMzg5MDIsMjM1NjksMjE3MzYsMzcwNDUsMzI0NjEsMjI4ODIsMzYxNzAsMzQ1MDMsMzMyOTIsMzMyOTMsMzYxOTgsMjU2NjgsMjM1NTYsMjQ5MTMsMjgwNDEsMzEwMzgsMzU3NzQsMzA3NzUsMzAwMDMsMjE2MjcsMjAyODAsMzY1MjMsMjgxNDUsMjMwNzIsMzI0NTMsMzEwNzAsMjc3ODQsMjM0NTcsMjMxNTgsMjk5NzgsMzI5NTgsMjQ5MTAsMjgxODMsMjI3NjgsMjk5ODMsMjk5ODksMjkyOTgsMjEzMTksMzI0OTksMzQwNTEsMzQwNTIsMzQwNTMsMzQwNTQsMzQwNTUsMzQwNTYsMzQwNTcsMzQwNTgsMzQwNTksMzQwNjEsMzQwNjIsMzQwNjMsMzQwNjQsMzQwNjYsMzQwNjgsMzQwNjksMzQwNzAsMzQwNzIsMzQwNzMsMzQwNzUsMzQwNzYsMzQwNzcsMzQwNzgsMzQwODAsMzQwODIsMzQwODMsMzQwODQsMzQwODUsMzQwODYsMzQwODcsMzQwODgsMzQwODksMzQwOTAsMzQwOTMsMzQwOTQsMzQwOTUsMzQwOTYsMzQwOTcsMzQwOTgsMzQwOTksMzQxMDAsMzQxMDEsMzQxMDIsMzQxMTAsMzQxMTEsMzQxMTIsMzQxMTMsMzQxMTQsMzQxMTYsMzQxMTcsMzQxMTgsMzQxMTksMzQxMjMsMzQxMjQsMzQxMjUsMzQxMjYsMzQxMjcsMzQxMjgsMzQxMjksMzQxMzAsMzQxMzEsMzQxMzIsMzQxMzMsMzQxMzUsMzQxMzYsMzQxMzgsMzQxMzksMzQxNDAsMzQxNDEsMzQxNDMsMzQxNDQsMzQxNDUsMzQxNDYsMzQxNDcsMzQxNDksMzQxNTAsMzQxNTEsMzQxNTMsMzQxNTQsMzQxNTUsMzQxNTYsMzQxNTcsMzQxNTgsMzQxNTksMzQxNjAsMzQxNjEsMzQxNjMsMzQxNjUsMzQxNjYsMzQxNjcsMzQxNjgsMzQxNzIsMzQxNzMsMzQxNzUsMzQxNzYsMzQxNzcsMzA0NjUsMzA0MjcsMjEwOTcsMzI5ODgsMjIzMDcsMjQwNzIsMjI4MzMsMjk0MjIsMjYwNDUsMjgyODcsMzU3OTksMjM2MDgsMzQ0MTcsMjEzMTMsMzA3MDcsMjUzNDIsMjYxMDIsMjAxNjAsMzkxMzUsMzQ0MzIsMjM0NTQsMzU3ODIsMjE0OTAsMzA2OTAsMjAzNTEsMjM2MzAsMzk1NDIsMjI5ODcsMjQzMzUsMzEwMzQsMjI3NjMsMTk5OTAsMjY2MjMsMjAxMDcsMjUzMjUsMzU0NzUsMzY4OTMsMjExODMsMjYxNTksMjE5ODAsMjIxMjQsMzY4NjYsMjAxODEsMjAzNjUsMzczMjIsMzkyODAsMjc2NjMsMjQwNjYsMjQ2NDMsMjM0NjAsMzUyNzAsMzU3OTcsMjU5MTAsMjUxNjMsMzkzMTgsMjM0MzIsMjM1NTEsMjU0ODAsMjE4MDYsMjE0NjMsMzAyNDYsMjA4NjEsMzQwOTIsMjY1MzAsMjY4MDMsMjc1MzAsMjUyMzQsMzY3NTUsMjE0NjAsMzMyOTgsMjgxMTMsMzAwOTUsMjAwNzAsMzYxNzQsMjM0MDgsMjkwODcsMzQyMjMsMjYyNTcsMjYzMjksMzI2MjYsMzQ1NjAsNDA2NTMsNDA3MzYsMjM2NDYsMjY0MTUsMzY4NDgsMjY2NDEsMjY0NjMsMjUxMDEsMzE0NDYsMjI2NjEsMjQyNDYsMjU5NjgsMjg0NjUsMzQxNzgsMzQxNzksMzQxODIsMzQxODQsMzQxODUsMzQxODYsMzQxODcsMzQxODgsMzQxODksMzQxOTAsMzQxOTIsMzQxOTMsMzQxOTQsMzQxOTUsMzQxOTYsMzQxOTcsMzQxOTgsMzQxOTksMzQyMDAsMzQyMDEsMzQyMDIsMzQyMDUsMzQyMDYsMzQyMDcsMzQyMDgsMzQyMDksMzQyMTAsMzQyMTEsMzQyMTMsMzQyMTQsMzQyMTUsMzQyMTcsMzQyMTksMzQyMjAsMzQyMjEsMzQyMjUsMzQyMjYsMzQyMjcsMzQyMjgsMzQyMjksMzQyMzAsMzQyMzIsMzQyMzQsMzQyMzUsMzQyMzYsMzQyMzcsMzQyMzgsMzQyMzksMzQyNDAsMzQyNDIsMzQyNDMsMzQyNDQsMzQyNDUsMzQyNDYsMzQyNDcsMzQyNDgsMzQyNTAsMzQyNTEsMzQyNTIsMzQyNTMsMzQyNTQsMzQyNTcsMzQyNTgsMzQyNjAsMzQyNjIsMzQyNjMsMzQyNjQsMzQyNjUsMzQyNjYsMzQyNjcsMzQyNjksMzQyNzAsMzQyNzEsMzQyNzIsMzQyNzMsMzQyNzQsMzQyNzUsMzQyNzcsMzQyNzgsMzQyNzksMzQyODAsMzQyODIsMzQyODMsMzQyODQsMzQyODUsMzQyODYsMzQyODcsMzQyODgsMzQyODksMzQyOTAsMzQyOTEsMzQyOTIsMzQyOTMsMzQyOTQsMzQyOTUsMzQyOTYsMjQ2NjEsMjEwNDcsMzI3ODEsMjU2ODQsMzQ5MjgsMjk5OTMsMjQwNjksMjY2NDMsMjUzMzIsMzg2ODQsMjE0NTIsMjkyNDUsMzU4NDEsMjc3MDAsMzA1NjEsMzEyNDYsMjE1NTAsMzA2MzYsMzkwMzQsMzMzMDgsMzU4MjgsMzA4MDUsMjYzODgsMjg4NjUsMjYwMzEsMjU3NDksMjIwNzAsMjQ2MDUsMzExNjksMjE0OTYsMTk5OTcsMjc1MTUsMzI5MDIsMjM1NDYsMjE5ODcsMjIyMzUsMjAyODIsMjAyODQsMzkyODIsMjQwNTEsMjY0OTQsMzI4MjQsMjQ1NzgsMzkwNDIsMzY4NjUsMjM0MzUsMzU3NzIsMzU4MjksMjU2MjgsMzMzNjgsMjU4MjIsMjIwMTMsMzM0ODcsMzcyMjEsMjA0MzksMzIwMzIsMzY4OTUsMzE5MDMsMjA3MjMsMjI2MDksMjgzMzUsMjM0ODcsMzU3ODUsMzI4OTksMzcyNDAsMzM5NDgsMzE2MzksMzQ0MjksMzg1MzksMzg1NDMsMzI0ODUsMzk2MzUsMzA4NjIsMjM2ODEsMzEzMTksMzY5MzAsMzg1NjcsMzEwNzEsMjMzODUsMjU0MzksMzE0OTksMzQwMDEsMjY3OTcsMjE3NjYsMzI1NTMsMjk3MTIsMzIwMzQsMzgxNDUsMjUxNTIsMjI2MDQsMjAxODIsMjM0MjcsMjI5MDUsMjI2MTIsMzQyOTcsMzQyOTgsMzQzMDAsMzQzMDEsMzQzMDIsMzQzMDQsMzQzMDUsMzQzMDYsMzQzMDcsMzQzMDgsMzQzMTAsMzQzMTEsMzQzMTIsMzQzMTMsMzQzMTQsMzQzMTUsMzQzMTYsMzQzMTcsMzQzMTgsMzQzMTksMzQzMjAsMzQzMjIsMzQzMjMsMzQzMjQsMzQzMjUsMzQzMjcsMzQzMjgsMzQzMjksMzQzMzAsMzQzMzEsMzQzMzIsMzQzMzMsMzQzMzQsMzQzMzUsMzQzMzYsMzQzMzcsMzQzMzgsMzQzMzksMzQzNDAsMzQzNDEsMzQzNDIsMzQzNDQsMzQzNDYsMzQzNDcsMzQzNDgsMzQzNDksMzQzNTAsMzQzNTEsMzQzNTIsMzQzNTMsMzQzNTQsMzQzNTUsMzQzNTYsMzQzNTcsMzQzNTgsMzQzNTksMzQzNjEsMzQzNjIsMzQzNjMsMzQzNjUsMzQzNjYsMzQzNjcsMzQzNjgsMzQzNjksMzQzNzAsMzQzNzEsMzQzNzIsMzQzNzMsMzQzNzQsMzQzNzUsMzQzNzYsMzQzNzcsMzQzNzgsMzQzNzksMzQzODAsMzQzODYsMzQzODcsMzQzODksMzQzOTAsMzQzOTEsMzQzOTIsMzQzOTMsMzQzOTUsMzQzOTYsMzQzOTcsMzQzOTksMzQ0MDAsMzQ0MDEsMzQ0MDMsMzQ0MDQsMzQ0MDUsMzQ0MDYsMzQ0MDcsMzQ0MDgsMzQ0MDksMzQ0MTAsMjk1NDksMjUzNzQsMzY0MjcsMzYzNjcsMzI5NzQsMzM0OTIsMjUyNjAsMjE0ODgsMjc4ODgsMzcyMTQsMjI4MjYsMjQ1NzcsMjc3NjAsMjIzNDksMjU2NzQsMzYxMzgsMzAyNTEsMjgzOTMsMjIzNjMsMjcyNjQsMzAxOTIsMjg1MjUsMzU4ODUsMzU4NDgsMjIzNzQsMjc2MzEsMzQ5NjIsMzA4OTksMjU1MDYsMjE0OTcsMjg4NDUsMjc3NDgsMjI2MTYsMjU2NDIsMjI1MzAsMjY4NDgsMzMxNzksMjE3NzYsMzE5NTgsMjA1MDQsMzY1MzgsMjgxMDgsMzYyNTUsMjg5MDcsMjU0ODcsMjgwNTksMjgzNzIsMzI0ODYsMzM3OTYsMjY2OTEsMzY4NjcsMjgxMjAsMzg1MTgsMzU3NTIsMjI4NzEsMjkzMDUsMzQyNzYsMzMxNTAsMzAxNDAsMzU0NjYsMjY3OTksMjEwNzYsMzYzODYsMzgxNjEsMjU1NTIsMzkwNjQsMzY0MjAsMjE4ODQsMjAzMDcsMjYzNjcsMjIxNTksMjQ3ODksMjgwNTMsMjEwNTksMjM2MjUsMjI4MjUsMjgxNTUsMjI2MzUsMzAwMDAsMjk5ODAsMjQ2ODQsMzMzMDAsMzMwOTQsMjUzNjEsMjY0NjUsMzY4MzQsMzA1MjIsMzYzMzksMzYxNDgsMzgwODEsMjQwODYsMjEzODEsMjE1NDgsMjg4NjcsMzQ0MTMsMzQ0MTUsMzQ0MTYsMzQ0MTgsMzQ0MTksMzQ0MjAsMzQ0MjEsMzQ0MjIsMzQ0MjMsMzQ0MjQsMzQ0MzUsMzQ0MzYsMzQ0MzcsMzQ0MzgsMzQ0MzksMzQ0NDAsMzQ0NDEsMzQ0NDYsMzQ0NDcsMzQ0NDgsMzQ0NDksMzQ0NTAsMzQ0NTIsMzQ0NTQsMzQ0NTUsMzQ0NTYsMzQ0NTcsMzQ0NTgsMzQ0NTksMzQ0NjIsMzQ0NjMsMzQ0NjQsMzQ0NjUsMzQ0NjYsMzQ0NjksMzQ0NzAsMzQ0NzUsMzQ0NzcsMzQ0NzgsMzQ0ODIsMzQ0ODMsMzQ0ODcsMzQ0ODgsMzQ0ODksMzQ0OTEsMzQ0OTIsMzQ0OTMsMzQ0OTQsMzQ0OTUsMzQ0OTcsMzQ0OTgsMzQ0OTksMzQ1MDEsMzQ1MDQsMzQ1MDgsMzQ1MDksMzQ1MTQsMzQ1MTUsMzQ1MTcsMzQ1MTgsMzQ1MTksMzQ1MjIsMzQ1MjQsMzQ1MjUsMzQ1MjgsMzQ1MjksMzQ1MzAsMzQ1MzEsMzQ1MzMsMzQ1MzQsMzQ1MzUsMzQ1MzYsMzQ1MzgsMzQ1MzksMzQ1NDAsMzQ1NDMsMzQ1NDksMzQ1NTAsMzQ1NTEsMzQ1NTQsMzQ1NTUsMzQ1NTYsMzQ1NTcsMzQ1NTksMzQ1NjEsMzQ1NjQsMzQ1NjUsMzQ1NjYsMzQ1NzEsMzQ1NzIsMzQ1NzQsMzQ1NzUsMzQ1NzYsMzQ1NzcsMzQ1ODAsMzQ1ODIsMjc3MTIsMjQzMTEsMjA1NzIsMjAxNDEsMjQyMzcsMjU0MDIsMzMzNTEsMzY4OTAsMjY3MDQsMzcyMzAsMzA2NDMsMjE1MTYsMzgxMDgsMjQ0MjAsMzE0NjEsMjY3NDIsMjU0MTMsMzE1NzAsMzI0NzksMzAxNzEsMjA1OTksMjUyMzcsMjI4MzYsMzY4NzksMjA5ODQsMzExNzEsMzEzNjEsMjIyNzAsMjQ0NjYsMzY4ODQsMjgwMzQsMjM2NDgsMjIzMDMsMjE1MjAsMjA4MjAsMjgyMzcsMjIyNDIsMjU1MTIsMzkwNTksMzMxNTEsMzQ1ODEsMzUxMTQsMzY4NjQsMjE1MzQsMjM2NjMsMzMyMTYsMjUzMDIsMjUxNzYsMzMwNzMsNDA1MDEsMzg0NjQsMzk1MzQsMzk1NDgsMjY5MjUsMjI5NDksMjUyOTksMjE4MjIsMjUzNjYsMjE3MDMsMzQ1MjEsMjc5NjQsMjMwNDMsMjk5MjYsMzQ5NzIsMjc0OTgsMjI4MDYsMzU5MTYsMjQzNjcsMjgyODYsMjk2MDksMzkwMzcsMjAwMjQsMjg5MTksMjM0MzYsMzA4NzEsMjU0MDUsMjYyMDIsMzAzNTgsMjQ3NzksMjM0NTEsMjMxMTMsMTk5NzUsMzMxMDksMjc3NTQsMjk1NzksMjAxMjksMjY1MDUsMzI1OTMsMjQ0NDgsMjYxMDYsMjYzOTUsMjQ1MzYsMjI5MTYsMjMwNDEsMzQ1ODUsMzQ1ODcsMzQ1ODksMzQ1OTEsMzQ1OTIsMzQ1OTYsMzQ1OTgsMzQ1OTksMzQ2MDAsMzQ2MDIsMzQ2MDMsMzQ2MDQsMzQ2MDUsMzQ2MDcsMzQ2MDgsMzQ2MTAsMzQ2MTEsMzQ2MTMsMzQ2MTQsMzQ2MTYsMzQ2MTcsMzQ2MTgsMzQ2MjAsMzQ2MjEsMzQ2MjQsMzQ2MjUsMzQ2MjYsMzQ2MjcsMzQ2MjgsMzQ2MjksMzQ2MzAsMzQ2MzQsMzQ2MzUsMzQ2MzcsMzQ2MzksMzQ2NDAsMzQ2NDEsMzQ2NDIsMzQ2NDQsMzQ2NDUsMzQ2NDYsMzQ2NDgsMzQ2NTAsMzQ2NTEsMzQ2NTIsMzQ2NTMsMzQ2NTQsMzQ2NTUsMzQ2NTcsMzQ2NTgsMzQ2NjIsMzQ2NjMsMzQ2NjQsMzQ2NjUsMzQ2NjYsMzQ2NjcsMzQ2NjgsMzQ2NjksMzQ2NzEsMzQ2NzMsMzQ2NzQsMzQ2NzUsMzQ2NzcsMzQ2NzksMzQ2ODAsMzQ2ODEsMzQ2ODIsMzQ2ODcsMzQ2ODgsMzQ2ODksMzQ2OTIsMzQ2OTQsMzQ2OTUsMzQ2OTcsMzQ2OTgsMzQ3MDAsMzQ3MDIsMzQ3MDMsMzQ3MDQsMzQ3MDUsMzQ3MDYsMzQ3MDgsMzQ3MDksMzQ3MTAsMzQ3MTIsMzQ3MTMsMzQ3MTQsMzQ3MTUsMzQ3MTYsMzQ3MTcsMzQ3MTgsMzQ3MjAsMzQ3MjEsMzQ3MjIsMzQ3MjMsMzQ3MjQsMjQwMTMsMjQ0OTQsMjEzNjEsMzg4ODYsMzY4MjksMjY2OTMsMjIyNjAsMjE4MDcsMjQ3OTksMjAwMjYsMjg0OTMsMzI1MDAsMzM0NzksMzM4MDYsMjI5OTYsMjAyNTUsMjAyNjYsMjM2MTQsMzI0MjgsMjY0MTAsMzQwNzQsMjE2MTksMzAwMzEsMzI5NjMsMjE4OTAsMzk3NTksMjAzMDEsMjgyMDUsMzU4NTksMjM1NjEsMjQ5NDQsMjEzNTUsMzAyMzksMjgyMDEsMzQ0NDIsMjU5OTEsMzgzOTUsMzI0NDEsMjE1NjMsMzEyODMsMzIwMTAsMzgzODIsMjE5ODUsMzI3MDUsMjk5MzQsMjUzNzMsMzQ1ODMsMjgwNjUsMzEzODksMjUxMDUsMjYwMTcsMjEzNTEsMjU1NjksMjc3NzksMjQwNDMsMjE1OTYsMzgwNTYsMjAwNDQsMjc3NDUsMzU4MjAsMjM2MjcsMjYwODAsMzM0MzYsMjY3OTEsMjE1NjYsMjE1NTYsMjc1OTUsMjc0OTQsMjAxMTYsMjU0MTAsMjEzMjAsMzMzMTAsMjAyMzcsMjAzOTgsMjIzNjYsMjUwOTgsMzg2NTQsMjYyMTIsMjkyODksMjEyNDcsMjExNTMsMjQ3MzUsMzU4MjMsMjYxMzIsMjkwODEsMjY1MTIsMzUxOTksMzA4MDIsMzA3MTcsMjYyMjQsMjIwNzUsMjE1NjAsMzgxNzcsMjkzMDYsMzQ3MjUsMzQ3MjYsMzQ3MjcsMzQ3MjksMzQ3MzAsMzQ3MzQsMzQ3MzYsMzQ3MzcsMzQ3MzgsMzQ3NDAsMzQ3NDIsMzQ3NDMsMzQ3NDQsMzQ3NDUsMzQ3NDcsMzQ3NDgsMzQ3NTAsMzQ3NTEsMzQ3NTMsMzQ3NTQsMzQ3NTUsMzQ3NTYsMzQ3NTcsMzQ3NTksMzQ3NjAsMzQ3NjEsMzQ3NjQsMzQ3NjUsMzQ3NjYsMzQ3NjcsMzQ3NjgsMzQ3NzIsMzQ3NzMsMzQ3NzQsMzQ3NzUsMzQ3NzYsMzQ3NzcsMzQ3NzgsMzQ3ODAsMzQ3ODEsMzQ3ODIsMzQ3ODMsMzQ3ODUsMzQ3ODYsMzQ3ODcsMzQ3ODgsMzQ3OTAsMzQ3OTEsMzQ3OTIsMzQ3OTMsMzQ3OTUsMzQ3OTYsMzQ3OTcsMzQ3OTksMzQ4MDAsMzQ4MDEsMzQ4MDIsMzQ4MDMsMzQ4MDQsMzQ4MDUsMzQ4MDYsMzQ4MDcsMzQ4MDgsMzQ4MTAsMzQ4MTEsMzQ4MTIsMzQ4MTMsMzQ4MTUsMzQ4MTYsMzQ4MTcsMzQ4MTgsMzQ4MjAsMzQ4MjEsMzQ4MjIsMzQ4MjMsMzQ4MjQsMzQ4MjUsMzQ4MjcsMzQ4MjgsMzQ4MjksMzQ4MzAsMzQ4MzEsMzQ4MzIsMzQ4MzMsMzQ4MzQsMzQ4MzYsMzQ4MzksMzQ4NDAsMzQ4NDEsMzQ4NDIsMzQ4NDQsMzQ4NDUsMzQ4NDYsMzQ4NDcsMzQ4NDgsMzQ4NTEsMzEyMzIsMjQ2ODcsMjQwNzYsMjQ3MTMsMzMxODEsMjI4MDUsMjQ3OTYsMjkwNjAsMjg5MTEsMjgzMzAsMjc3MjgsMjkzMTIsMjcyNjgsMzQ5ODksMjQxMDksMjAwNjQsMjMyMTksMjE5MTYsMzgxMTUsMjc5MjcsMzE5OTUsMzg1NTMsMjUxMDMsMzI0NTQsMzA2MDYsMzQ0MzAsMjEyODMsMzg2ODYsMzY3NTgsMjYyNDcsMjM3NzcsMjAzODQsMjk0MjEsMTk5NzksMjE0MTQsMjI3OTksMjE1MjMsMjU0NzIsMzgxODQsMjA4MDgsMjAxODUsNDAwOTIsMzI0MjAsMjE2ODgsMzYxMzIsMzQ5MDAsMzMzMzUsMzgzODYsMjgwNDYsMjQzNTgsMjMyNDQsMjYxNzQsMzg1MDUsMjk2MTYsMjk0ODYsMjE0MzksMzMxNDYsMzkzMDEsMzI2NzMsMjM0NjYsMzg1MTksMzg0ODAsMzI0NDcsMzA0NTYsMjE0MTAsMzgyNjIsMzkzMjEsMzE2NjUsMzUxNDAsMjgyNDgsMjAwNjUsMzI3MjQsMzEwNzcsMzU4MTQsMjQ4MTksMjE3MDksMjAxMzksMzkwMzMsMjQwNTUsMjcyMzMsMjA2ODcsMjE1MjEsMzU5MzcsMzM4MzEsMzA4MTMsMzg2NjAsMjEwNjYsMjE3NDIsMjIxNzksMzgxNDQsMjgwNDAsMjM0NzcsMjgxMDIsMjYxOTUsMzQ4NTIsMzQ4NTMsMzQ4NTQsMzQ4NTUsMzQ4NTYsMzQ4NTcsMzQ4NTgsMzQ4NTksMzQ4NjAsMzQ4NjEsMzQ4NjIsMzQ4NjMsMzQ4NjQsMzQ4NjUsMzQ4NjcsMzQ4NjgsMzQ4NjksMzQ4NzAsMzQ4NzEsMzQ4NzIsMzQ4NzQsMzQ4NzUsMzQ4NzcsMzQ4NzgsMzQ4NzksMzQ4ODEsMzQ4ODIsMzQ4ODMsMzQ4ODYsMzQ4ODcsMzQ4ODgsMzQ4ODksMzQ4OTAsMzQ4OTEsMzQ4OTQsMzQ4OTUsMzQ4OTYsMzQ4OTcsMzQ4OTgsMzQ4OTksMzQ5MDEsMzQ5MDIsMzQ5MDQsMzQ5MDYsMzQ5MDcsMzQ5MDgsMzQ5MDksMzQ5MTAsMzQ5MTEsMzQ5MTIsMzQ5MTgsMzQ5MTksMzQ5MjIsMzQ5MjUsMzQ5MjcsMzQ5MjksMzQ5MzEsMzQ5MzIsMzQ5MzMsMzQ5MzQsMzQ5MzYsMzQ5MzcsMzQ5MzgsMzQ5MzksMzQ5NDAsMzQ5NDQsMzQ5NDcsMzQ5NTAsMzQ5NTEsMzQ5NTMsMzQ5NTQsMzQ5NTYsMzQ5NTgsMzQ5NTksMzQ5NjAsMzQ5NjEsMzQ5NjMsMzQ5NjQsMzQ5NjUsMzQ5NjcsMzQ5NjgsMzQ5NjksMzQ5NzAsMzQ5NzEsMzQ5NzMsMzQ5NzQsMzQ5NzUsMzQ5NzYsMzQ5NzcsMzQ5NzksMzQ5ODEsMzQ5ODIsMzQ5ODMsMzQ5ODQsMzQ5ODUsMzQ5ODYsMjM1NjcsMjMzODksMjY2NTcsMzI5MTgsMjE4ODAsMzE1MDUsMjU5MjgsMjY5NjQsMjAxMjMsMjc0NjMsMzQ2MzgsMzg3OTUsMjEzMjcsMjUzNzUsMjU2NTgsMzcwMzQsMjYwMTIsMzI5NjEsMzU4NTYsMjA4ODksMjY4MDAsMjEzNjgsMzQ4MDksMjUwMzIsMjc4NDQsMjc4OTksMzU4NzQsMjM2MzMsMzQyMTgsMzM0NTUsMzgxNTYsMjc0MjcsMzY3NjMsMjYwMzIsMjQ1NzEsMjQ1MTUsMjA0NDksMzQ4ODUsMjYxNDMsMzMxMjUsMjk0ODEsMjQ4MjYsMjA4NTIsMjEwMDksMjI0MTEsMjQ0MTgsMzcwMjYsMzQ4OTIsMzcyNjYsMjQxODQsMjY0NDcsMjQ2MTUsMjI5OTUsMjA4MDQsMjA5ODIsMzMwMTYsMjEyNTYsMjc3NjksMzg1OTYsMjkwNjYsMjAyNDEsMjA0NjIsMzI2NzAsMjY0MjksMjE5NTcsMzgxNTIsMzExNjgsMzQ5NjYsMzI0ODMsMjI2ODcsMjUxMDAsMzg2NTYsMzQzOTQsMjIwNDAsMzkwMzUsMjQ0NjQsMzU3NjgsMzM5ODgsMzcyMDcsMjE0NjUsMjYwOTMsMjQyMDcsMzAwNDQsMjQ2NzYsMzIxMTAsMjMxNjcsMzI0OTAsMzI0OTMsMzY3MTMsMjE5MjcsMjM0NTksMjQ3NDgsMjYwNTksMjk1NzIsMzQ5ODgsMzQ5OTAsMzQ5OTEsMzQ5OTIsMzQ5OTQsMzQ5OTUsMzQ5OTYsMzQ5OTcsMzQ5OTgsMzUwMDAsMzUwMDEsMzUwMDIsMzUwMDMsMzUwMDUsMzUwMDYsMzUwMDcsMzUwMDgsMzUwMTEsMzUwMTIsMzUwMTUsMzUwMTYsMzUwMTgsMzUwMTksMzUwMjAsMzUwMjEsMzUwMjMsMzUwMjQsMzUwMjUsMzUwMjcsMzUwMzAsMzUwMzEsMzUwMzQsMzUwMzUsMzUwMzYsMzUwMzcsMzUwMzgsMzUwNDAsMzUwNDEsMzUwNDYsMzUwNDcsMzUwNDksMzUwNTAsMzUwNTEsMzUwNTIsMzUwNTMsMzUwNTQsMzUwNTUsMzUwNTgsMzUwNjEsMzUwNjIsMzUwNjMsMzUwNjYsMzUwNjcsMzUwNjksMzUwNzEsMzUwNzIsMzUwNzMsMzUwNzUsMzUwNzYsMzUwNzcsMzUwNzgsMzUwNzksMzUwODAsMzUwODEsMzUwODMsMzUwODQsMzUwODUsMzUwODYsMzUwODcsMzUwODksMzUwOTIsMzUwOTMsMzUwOTQsMzUwOTUsMzUwOTYsMzUxMDAsMzUxMDEsMzUxMDIsMzUxMDMsMzUxMDQsMzUxMDYsMzUxMDcsMzUxMDgsMzUxMTAsMzUxMTEsMzUxMTIsMzUxMTMsMzUxMTYsMzUxMTcsMzUxMTgsMzUxMTksMzUxMjEsMzUxMjIsMzUxMjMsMzUxMjUsMzUxMjcsMzY4NzMsMzAzMDcsMzA1MDUsMzI0NzQsMzg3NzIsMzQyMDMsMjMzOTgsMzEzNDgsMzg2MzQsMzQ4ODAsMjExOTUsMjkwNzEsMjQ0OTAsMjYwOTIsMzU4MTAsMjM1NDcsMzk1MzUsMjQwMzMsMjc1MjksMjc3MzksMzU3NTcsMzU3NTksMzY4NzQsMzY4MDUsMjEzODcsMjUyNzYsNDA0ODYsNDA0OTMsMjE1NjgsMjAwMTEsMzM0NjksMjkyNzMsMzQ0NjAsMjM4MzAsMzQ5MDUsMjgwNzksMzg1OTcsMjE3MTMsMjAxMjIsMzU3NjYsMjg5MzcsMjE2OTMsMzg0MDksMjg4OTUsMjgxNTMsMzA0MTYsMjAwMDUsMzA3NDAsMzQ1NzgsMjM3MjEsMjQzMTAsMzUzMjgsMzkwNjgsMzg0MTQsMjg4MTQsMjc4MzksMjI4NTIsMjU1MTMsMzA1MjQsMzQ4OTMsMjg0MzYsMzMzOTUsMjI1NzYsMjkxNDEsMjEzODgsMzA3NDYsMzg1OTMsMjE3NjEsMjQ0MjIsMjg5NzYsMjM0NzYsMzU4NjYsMzk1NjQsMjc1MjMsMjI4MzAsNDA0OTUsMzEyMDcsMjY0NzIsMjUxOTYsMjAzMzUsMzAxMTMsMzI2NTAsMjc5MTUsMzg0NTEsMjc2ODcsMjAyMDgsMzAxNjIsMjA4NTksMjY2NzksMjg0NzgsMzY5OTIsMzMxMzYsMjI5MzQsMjk4MTQsMzUxMjgsMzUxMjksMzUxMzAsMzUxMzEsMzUxMzIsMzUxMzMsMzUxMzQsMzUxMzUsMzUxMzYsMzUxMzgsMzUxMzksMzUxNDEsMzUxNDIsMzUxNDMsMzUxNDQsMzUxNDUsMzUxNDYsMzUxNDcsMzUxNDgsMzUxNDksMzUxNTAsMzUxNTEsMzUxNTIsMzUxNTMsMzUxNTQsMzUxNTUsMzUxNTYsMzUxNTcsMzUxNTgsMzUxNTksMzUxNjAsMzUxNjEsMzUxNjIsMzUxNjMsMzUxNjQsMzUxNjUsMzUxNjgsMzUxNjksMzUxNzAsMzUxNzEsMzUxNzIsMzUxNzMsMzUxNzUsMzUxNzYsMzUxNzcsMzUxNzgsMzUxNzksMzUxODAsMzUxODEsMzUxODIsMzUxODMsMzUxODQsMzUxODUsMzUxODYsMzUxODcsMzUxODgsMzUxODksMzUxOTAsMzUxOTEsMzUxOTIsMzUxOTMsMzUxOTQsMzUxOTYsMzUxOTcsMzUxOTgsMzUyMDAsMzUyMDIsMzUyMDQsMzUyMDUsMzUyMDcsMzUyMDgsMzUyMDksMzUyMTAsMzUyMTEsMzUyMTIsMzUyMTMsMzUyMTQsMzUyMTUsMzUyMTYsMzUyMTcsMzUyMTgsMzUyMTksMzUyMjAsMzUyMjEsMzUyMjIsMzUyMjMsMzUyMjQsMzUyMjUsMzUyMjYsMzUyMjcsMzUyMjgsMzUyMjksMzUyMzAsMzUyMzEsMzUyMzIsMzUyMzMsMjU2NzEsMjM1OTEsMzY5NjUsMzEzNzcsMzU4NzUsMjMwMDIsMjE2NzYsMzMyODAsMzM2NDcsMzUyMDEsMzI3NjgsMjY5MjgsMjIwOTQsMzI4MjIsMjkyMzksMzczMjYsMjA5MTgsMjAwNjMsMzkwMjksMjU0OTQsMTk5OTQsMjE0OTQsMjYzNTUsMzMwOTksMjI4MTIsMjgwODIsMTk5NjgsMjI3NzcsMjEzMDcsMjU1NTgsMzgxMjksMjAzODEsMjAyMzQsMzQ5MTUsMzkwNTYsMjI4MzksMzY5NTEsMzEyMjcsMjAyMDIsMzMwMDgsMzAwOTcsMjc3NzgsMjM0NTIsMjMwMTYsMjQ0MTMsMjY4ODUsMzQ0MzMsMjA1MDYsMjQwNTAsMjAwNTcsMzA2OTEsMjAxOTcsMzM0MDIsMjUyMzMsMjYxMzEsMzcwMDksMjM2NzMsMjAxNTksMjQ0NDEsMzMyMjIsMzY5MjAsMzI5MDAsMzAxMjMsMjAxMzQsMzUwMjgsMjQ4NDcsMjc1ODksMjQ1MTgsMjAwNDEsMzA0MTAsMjgzMjIsMzU4MTEsMzU3NTgsMzU4NTAsMzU3OTMsMjQzMjIsMzI3NjQsMzI3MTYsMzI0NjIsMzM1ODksMzM2NDMsMjIyNDAsMjc1NzUsMzg4OTksMzg0NTIsMjMwMzUsMjE1MzUsMzgxMzQsMjgxMzksMjM0OTMsMzkyNzgsMjM2MDksMjQzNDEsMzg1NDQsMzUyMzQsMzUyMzUsMzUyMzYsMzUyMzcsMzUyMzgsMzUyMzksMzUyNDAsMzUyNDEsMzUyNDIsMzUyNDMsMzUyNDQsMzUyNDUsMzUyNDYsMzUyNDcsMzUyNDgsMzUyNDksMzUyNTAsMzUyNTEsMzUyNTIsMzUyNTMsMzUyNTQsMzUyNTUsMzUyNTYsMzUyNTcsMzUyNTgsMzUyNTksMzUyNjAsMzUyNjEsMzUyNjIsMzUyNjMsMzUyNjQsMzUyNjcsMzUyNzcsMzUyODMsMzUyODQsMzUyODUsMzUyODcsMzUyODgsMzUyODksMzUyOTEsMzUyOTMsMzUyOTUsMzUyOTYsMzUyOTcsMzUyOTgsMzUzMDAsMzUzMDMsMzUzMDQsMzUzMDUsMzUzMDYsMzUzMDgsMzUzMDksMzUzMTAsMzUzMTIsMzUzMTMsMzUzMTQsMzUzMTYsMzUzMTcsMzUzMTgsMzUzMTksMzUzMjAsMzUzMjEsMzUzMjIsMzUzMjMsMzUzMjQsMzUzMjUsMzUzMjYsMzUzMjcsMzUzMjksMzUzMzAsMzUzMzEsMzUzMzIsMzUzMzMsMzUzMzQsMzUzMzYsMzUzMzcsMzUzMzgsMzUzMzksMzUzNDAsMzUzNDEsMzUzNDIsMzUzNDMsMzUzNDQsMzUzNDUsMzUzNDYsMzUzNDcsMzUzNDgsMzUzNDksMzUzNTAsMzUzNTEsMzUzNTIsMzUzNTMsMzUzNTQsMzUzNTUsMzUzNTYsMzUzNTcsMjEzNjAsMzM1MjEsMjcxODUsMjMxNTYsNDA1NjAsMjQyMTIsMzI1NTIsMzM3MjEsMzM4MjgsMzM4MjksMzM2MzksMzQ2MzEsMzY4MTQsMzYxOTQsMzA0MDgsMjQ0MzMsMzkwNjIsMzA4MjgsMjYxNDQsMjE3MjcsMjUzMTcsMjAzMjMsMzMyMTksMzAxNTIsMjQyNDgsMzg2MDUsMzYzNjIsMzQ1NTMsMjE2NDcsMjc4OTEsMjgwNDQsMjc3MDQsMjQ3MDMsMjExOTEsMjk5OTIsMjQxODksMjAyNDgsMjQ3MzYsMjQ1NTEsMjM1ODgsMzAwMDEsMzcwMzgsMzgwODAsMjkzNjksMjc4MzMsMjgyMTYsMzcxOTMsMjYzNzcsMjE0NTEsMjE0OTEsMjAzMDUsMzczMjEsMzU4MjUsMjE0NDgsMjQxODgsMzY4MDIsMjgxMzIsMjAxMTAsMzA0MDIsMjcwMTQsMzQzOTgsMjQ4NTgsMzMyODYsMjAzMTMsMjA0NDYsMzY5MjYsNDAwNjAsMjQ4NDEsMjgxODksMjgxODAsMzg1MzMsMjAxMDQsMjMwODksMzg2MzIsMTk5ODIsMjM2NzksMzExNjEsMjM0MzEsMzU4MjEsMzI3MDEsMjk1NzcsMjI0OTUsMzM0MTksMzcwNTcsMjE1MDUsMzY5MzUsMjE5NDcsMjM3ODYsMjQ0ODEsMjQ4NDAsMjc0NDIsMjk0MjUsMzI5NDYsMzU0NjUsMzUzNTgsMzUzNTksMzUzNjAsMzUzNjEsMzUzNjIsMzUzNjMsMzUzNjQsMzUzNjUsMzUzNjYsMzUzNjcsMzUzNjgsMzUzNjksMzUzNzAsMzUzNzEsMzUzNzIsMzUzNzMsMzUzNzQsMzUzNzUsMzUzNzYsMzUzNzcsMzUzNzgsMzUzNzksMzUzODAsMzUzODEsMzUzODIsMzUzODMsMzUzODQsMzUzODUsMzUzODYsMzUzODcsMzUzODgsMzUzODksMzUzOTEsMzUzOTIsMzUzOTMsMzUzOTQsMzUzOTUsMzUzOTYsMzUzOTcsMzUzOTgsMzUzOTksMzU0MDEsMzU0MDIsMzU0MDMsMzU0MDQsMzU0MDUsMzU0MDYsMzU0MDcsMzU0MDgsMzU0MDksMzU0MTAsMzU0MTEsMzU0MTIsMzU0MTMsMzU0MTQsMzU0MTUsMzU0MTYsMzU0MTcsMzU0MTgsMzU0MTksMzU0MjAsMzU0MjEsMzU0MjIsMzU0MjMsMzU0MjQsMzU0MjUsMzU0MjYsMzU0MjcsMzU0MjgsMzU0MjksMzU0MzAsMzU0MzEsMzU0MzIsMzU0MzMsMzU0MzQsMzU0MzUsMzU0MzYsMzU0MzcsMzU0MzgsMzU0MzksMzU0NDAsMzU0NDEsMzU0NDIsMzU0NDMsMzU0NDQsMzU0NDUsMzU0NDYsMzU0NDcsMzU0NDgsMzU0NTAsMzU0NTEsMzU0NTIsMzU0NTMsMzU0NTQsMzU0NTUsMzU0NTYsMjgwMjAsMjM1MDcsMzUwMjksMzkwNDQsMzU5NDcsMzk1MzMsNDA0OTksMjgxNzAsMjA5MDAsMjA4MDMsMjI0MzUsMzQ5NDUsMjE0MDcsMjU1ODgsMzY3NTcsMjIyNTMsMjE1OTIsMjIyNzgsMjk1MDMsMjgzMDQsMzI1MzYsMzY4MjgsMzM0ODksMjQ4OTUsMjQ2MTYsMzg0OTgsMjYzNTIsMzI0MjIsMzYyMzQsMzYyOTEsMzgwNTMsMjM3MzEsMzE5MDgsMjYzNzYsMjQ3NDIsMzg0MDUsMzI3OTIsMjAxMTMsMzcwOTUsMjEyNDgsMzg1MDQsMjA4MDEsMzY4MTYsMzQxNjQsMzcyMTMsMjYxOTcsMzg5MDEsMjMzODEsMjEyNzcsMzA3NzYsMjY0MzQsMjY2ODUsMjE3MDUsMjg3OTgsMjM0NzIsMzY3MzMsMjA4NzcsMjIzMTIsMjE2ODEsMjU4NzQsMjYyNDIsMzYxOTAsMzYxNjMsMzMwMzksMzM5MDAsMzY5NzMsMzE5NjcsMjA5OTEsMzQyOTksMjY1MzEsMjYwODksMjg1NzcsMzQ0NjgsMzY0ODEsMjIxMjIsMzY4OTYsMzAzMzgsMjg3OTAsMjkxNTcsMzYxMzEsMjUzMjEsMjEwMTcsMjc5MDEsMzYxNTYsMjQ1OTAsMjI2ODYsMjQ5NzQsMjYzNjYsMzYxOTIsMjUxNjYsMjE5MzksMjgxOTUsMjY0MTMsMzY3MTEsMzU0NTcsMzU0NTgsMzU0NTksMzU0NjAsMzU0NjEsMzU0NjIsMzU0NjMsMzU0NjQsMzU0NjcsMzU0NjgsMzU0NjksMzU0NzAsMzU0NzEsMzU0NzIsMzU0NzMsMzU0NzQsMzU0NzYsMzU0NzcsMzU0NzgsMzU0NzksMzU0ODAsMzU0ODEsMzU0ODIsMzU0ODMsMzU0ODQsMzU0ODUsMzU0ODYsMzU0ODcsMzU0ODgsMzU0ODksMzU0OTAsMzU0OTEsMzU0OTIsMzU0OTMsMzU0OTQsMzU0OTUsMzU0OTYsMzU0OTcsMzU0OTgsMzU0OTksMzU1MDAsMzU1MDEsMzU1MDIsMzU1MDMsMzU1MDQsMzU1MDUsMzU1MDYsMzU1MDcsMzU1MDgsMzU1MDksMzU1MTAsMzU1MTEsMzU1MTIsMzU1MTMsMzU1MTQsMzU1MTUsMzU1MTYsMzU1MTcsMzU1MTgsMzU1MTksMzU1MjAsMzU1MjEsMzU1MjIsMzU1MjMsMzU1MjQsMzU1MjUsMzU1MjYsMzU1MjcsMzU1MjgsMzU1MjksMzU1MzAsMzU1MzEsMzU1MzIsMzU1MzMsMzU1MzQsMzU1MzUsMzU1MzYsMzU1MzcsMzU1MzgsMzU1MzksMzU1NDAsMzU1NDEsMzU1NDIsMzU1NDMsMzU1NDQsMzU1NDUsMzU1NDYsMzU1NDcsMzU1NDgsMzU1NDksMzU1NTAsMzU1NTEsMzU1NTIsMzU1NTMsMzU1NTQsMzU1NTUsMzgxMTMsMzgzOTIsMzA1MDQsMjY2MjksMjcwNDgsMjE2NDMsMjAwNDUsMjg4NTYsMzU3ODQsMjU2ODgsMjU5OTUsMjM0MjksMzEzNjQsMjA1MzgsMjM1MjgsMzA2NTEsMjc2MTcsMzU0NDksMzE4OTYsMjc4MzgsMzA0MTUsMjYwMjUsMzY3NTksMjM4NTMsMjM2MzcsMzQzNjAsMjY2MzIsMjEzNDQsMjUxMTIsMzE0NDksMjgyNTEsMzI1MDksMjcxNjcsMzE0NTYsMjQ0MzIsMjg0NjcsMjQzNTIsMjU0ODQsMjgwNzIsMjY0NTQsMTk5NzYsMjQwODAsMzYxMzQsMjAxODMsMzI5NjAsMzAyNjAsMzg1NTYsMjUzMDcsMjYxNTcsMjUyMTQsMjc4MzYsMzYyMTMsMjkwMzEsMzI2MTcsMjA4MDYsMzI5MDMsMjE0ODQsMzY5NzQsMjUyNDAsMjE3NDYsMzQ1NDQsMzY3NjEsMzI3NzMsMzgxNjcsMzQwNzEsMzY4MjUsMjc5OTMsMjk2NDUsMjYwMTUsMzA0OTUsMjk5NTYsMzA3NTksMzMyNzUsMzYxMjYsMzgwMjQsMjAzOTAsMjY1MTcsMzAxMzcsMzU3ODYsMzg2NjMsMjUzOTEsMzgyMTUsMzg0NTMsMzM5NzYsMjUzNzksMzA1MjksMjQ0NDksMjk0MjQsMjAxMDUsMjQ1OTYsMjU5NzIsMjUzMjcsMjc0OTEsMjU5MTksMzU1NTYsMzU1NTcsMzU1NTgsMzU1NTksMzU1NjAsMzU1NjEsMzU1NjIsMzU1NjMsMzU1NjQsMzU1NjUsMzU1NjYsMzU1NjcsMzU1NjgsMzU1NjksMzU1NzAsMzU1NzEsMzU1NzIsMzU1NzMsMzU1NzQsMzU1NzUsMzU1NzYsMzU1NzcsMzU1NzgsMzU1NzksMzU1ODAsMzU1ODEsMzU1ODIsMzU1ODMsMzU1ODQsMzU1ODUsMzU1ODYsMzU1ODcsMzU1ODgsMzU1ODksMzU1OTAsMzU1OTIsMzU1OTMsMzU1OTQsMzU1OTUsMzU1OTYsMzU1OTcsMzU1OTgsMzU1OTksMzU2MDAsMzU2MDEsMzU2MDIsMzU2MDMsMzU2MDQsMzU2MDUsMzU2MDYsMzU2MDcsMzU2MDgsMzU2MDksMzU2MTAsMzU2MTEsMzU2MTIsMzU2MTMsMzU2MTQsMzU2MTUsMzU2MTYsMzU2MTcsMzU2MTgsMzU2MTksMzU2MjAsMzU2MjEsMzU2MjMsMzU2MjQsMzU2MjUsMzU2MjYsMzU2MjcsMzU2MjgsMzU2MjksMzU2MzAsMzU2MzEsMzU2MzIsMzU2MzMsMzU2MzQsMzU2MzUsMzU2MzYsMzU2MzcsMzU2MzgsMzU2MzksMzU2NDAsMzU2NDEsMzU2NDIsMzU2NDMsMzU2NDQsMzU2NDUsMzU2NDYsMzU2NDcsMzU2NDgsMzU2NDksMzU2NTAsMzU2NTEsMzU2NTIsMzU2NTMsMjQxMDMsMzAxNTEsMzcwNzMsMzU3NzcsMzM0MzcsMjY1MjUsMjU5MDMsMjE1NTMsMzQ1ODQsMzA2OTMsMzI5MzAsMzMwMjYsMjc3MTMsMjAwNDMsMzI0NTUsMzI4NDQsMzA0NTIsMjY4OTMsMjc1NDIsMjUxOTEsMjA1NDAsMjAzNTYsMjIzMzYsMjUzNTEsMjc0OTAsMzYyODYsMjE0ODIsMjYwODgsMzI0NDAsMjQ1MzUsMjUzNzAsMjU1MjcsMzMyNjcsMzMyNjgsMzI2MjIsMjQwOTIsMjM3NjksMjEwNDYsMjYyMzQsMzEyMDksMzEyNTgsMzYxMzYsMjg4MjUsMzAxNjQsMjgzODIsMjc4MzUsMzEzNzgsMjAwMTMsMzA0MDUsMjQ1NDQsMzgwNDcsMzQ5MzUsMzI0NTYsMzExODEsMzI5NTksMzczMjUsMjAyMTAsMjAyNDcsMzMzMTEsMjE2MDgsMjQwMzAsMjc5NTQsMzU3ODgsMzE5MDksMzY3MjQsMzI5MjAsMjQwOTAsMjE2NTAsMzAzODUsMjM0NDksMjYxNzIsMzk1ODgsMjk2NjQsMjY2NjYsMzQ1MjMsMjY0MTcsMjk0ODIsMzU4MzIsMzU4MDMsMzY4ODAsMzE0ODEsMjg4OTEsMjkwMzgsMjUyODQsMzA2MzMsMjIwNjUsMjAwMjcsMzM4NzksMjY2MDksMjExNjEsMzQ0OTYsMzYxNDIsMzgxMzYsMzE1NjksMzU2NTQsMzU2NTUsMzU2NTYsMzU2NTcsMzU2NTgsMzU2NTksMzU2NjAsMzU2NjEsMzU2NjIsMzU2NjMsMzU2NjQsMzU2NjUsMzU2NjYsMzU2NjcsMzU2NjgsMzU2NjksMzU2NzAsMzU2NzEsMzU2NzIsMzU2NzMsMzU2NzQsMzU2NzUsMzU2NzYsMzU2NzcsMzU2NzgsMzU2NzksMzU2ODAsMzU2ODEsMzU2ODIsMzU2ODMsMzU2ODQsMzU2ODUsMzU2ODcsMzU2ODgsMzU2ODksMzU2OTAsMzU2OTEsMzU2OTMsMzU2OTQsMzU2OTUsMzU2OTYsMzU2OTcsMzU2OTgsMzU2OTksMzU3MDAsMzU3MDEsMzU3MDIsMzU3MDMsMzU3MDQsMzU3MDUsMzU3MDYsMzU3MDcsMzU3MDgsMzU3MDksMzU3MTAsMzU3MTEsMzU3MTIsMzU3MTMsMzU3MTQsMzU3MTUsMzU3MTYsMzU3MTcsMzU3MTgsMzU3MTksMzU3MjAsMzU3MjEsMzU3MjIsMzU3MjMsMzU3MjQsMzU3MjUsMzU3MjYsMzU3MjcsMzU3MjgsMzU3MjksMzU3MzAsMzU3MzEsMzU3MzIsMzU3MzMsMzU3MzQsMzU3MzUsMzU3MzYsMzU3MzcsMzU3MzgsMzU3MzksMzU3NDAsMzU3NDEsMzU3NDIsMzU3NDMsMzU3NTYsMzU3NjEsMzU3NzEsMzU3ODMsMzU3OTIsMzU4MTgsMzU4NDksMzU4NzAsMjAzMDMsMjc4ODAsMzEwNjksMzk1NDcsMjUyMzUsMjkyMjYsMjUzNDEsMTk5ODcsMzA3NDIsMzY3MTYsMjU3NzYsMzYxODYsMzE2ODYsMjY3MjksMjQxOTYsMzUwMTMsMjI5MTgsMjU3NTgsMjI3NjYsMjkzNjYsMjY4OTQsMzgxODEsMzY4NjEsMzYxODQsMjIzNjgsMzI1MTIsMzU4NDYsMjA5MzQsMjU0MTcsMjUzMDUsMjEzMzEsMjY3MDAsMjk3MzAsMzM1MzcsMzcxOTYsMjE4MjgsMzA1MjgsMjg3OTYsMjc5NzgsMjA4NTcsMjE2NzIsMzYxNjQsMjMwMzksMjgzNjMsMjgxMDAsMjMzODgsMzIwNDMsMjAxODAsMzE4NjksMjgzNzEsMjMzNzYsMzMyNTgsMjgxNzMsMjMzODMsMzk2ODMsMjY4MzcsMzYzOTQsMjM0NDcsMzI1MDgsMjQ2MzUsMzI0MzcsMzcwNDksMzYyMDgsMjI4NjMsMjU1NDksMzExOTksMzYyNzUsMjEzMzAsMjYwNjMsMzEwNjIsMzU3ODEsMzg0NTksMzI0NTIsMzgwNzUsMzIzODYsMjIwNjgsMzcyNTcsMjYzNjgsMzI2MTgsMjM1NjIsMzY5ODEsMjYxNTIsMjQwMzgsMjAzMDQsMjY1OTAsMjA1NzAsMjAzMTYsMjIzNTIsMjQyMzEsNTk0MDgsNTk0MDksNTk0MTAsNTk0MTEsNTk0MTIsMzU4OTYsMzU4OTcsMzU4OTgsMzU4OTksMzU5MDAsMzU5MDEsMzU5MDIsMzU5MDMsMzU5MDQsMzU5MDYsMzU5MDcsMzU5MDgsMzU5MDksMzU5MTIsMzU5MTQsMzU5MTUsMzU5MTcsMzU5MTgsMzU5MTksMzU5MjAsMzU5MjEsMzU5MjIsMzU5MjMsMzU5MjQsMzU5MjYsMzU5MjcsMzU5MjgsMzU5MjksMzU5MzEsMzU5MzIsMzU5MzMsMzU5MzQsMzU5MzUsMzU5MzYsMzU5MzksMzU5NDAsMzU5NDEsMzU5NDIsMzU5NDMsMzU5NDQsMzU5NDUsMzU5NDgsMzU5NDksMzU5NTAsMzU5NTEsMzU5NTIsMzU5NTMsMzU5NTQsMzU5NTYsMzU5NTcsMzU5NTgsMzU5NTksMzU5NjMsMzU5NjQsMzU5NjUsMzU5NjYsMzU5NjcsMzU5NjgsMzU5NjksMzU5NzEsMzU5NzIsMzU5NzQsMzU5NzUsMzU5NzYsMzU5NzksMzU5ODEsMzU5ODIsMzU5ODMsMzU5ODQsMzU5ODUsMzU5ODYsMzU5ODcsMzU5ODksMzU5OTAsMzU5OTEsMzU5OTMsMzU5OTQsMzU5OTUsMzU5OTYsMzU5OTcsMzU5OTgsMzU5OTksMzYwMDAsMzYwMDEsMzYwMDIsMzYwMDMsMzYwMDQsMzYwMDUsMzYwMDYsMzYwMDcsMzYwMDgsMzYwMDksMzYwMTAsMzYwMTEsMzYwMTIsMzYwMTMsMjAxMDksMTk5ODAsMjA4MDAsMTk5ODQsMjQzMTksMjEzMTcsMTk5ODksMjAxMjAsMTk5OTgsMzk3MzAsMjM0MDQsMjIxMjEsMjAwMDgsMzExNjIsMjAwMzEsMjEyNjksMjAwMzksMjI4MjksMjkyNDMsMjEzNTgsMjc2NjQsMjIyMzksMzI5OTYsMzkzMTksMjc2MDMsMzA1OTAsNDA3MjcsMjAwMjIsMjAxMjcsNDA3MjAsMjAwNjAsMjAwNzMsMjAxMTUsMzM0MTYsMjMzODcsMjE4NjgsMjIwMzEsMjAxNjQsMjEzODksMjE0MDUsMjE0MTEsMjE0MTMsMjE0MjIsMzg3NTcsMzYxODksMjEyNzQsMjE0OTMsMjEyODYsMjEyOTQsMjEzMTAsMzYxODgsMjEzNTAsMjEzNDcsMjA5OTQsMjEwMDAsMjEwMDYsMjEwMzcsMjEwNDMsMjEwNTUsMjEwNTYsMjEwNjgsMjEwODYsMjEwODksMjEwODQsMzM5NjcsMjExMTcsMjExMjIsMjExMjEsMjExMzYsMjExMzksMjA4NjYsMzI1OTYsMjAxNTUsMjAxNjMsMjAxNjksMjAxNjIsMjAyMDAsMjAxOTMsMjAyMDMsMjAxOTAsMjAyNTEsMjAyMTEsMjAyNTgsMjAzMjQsMjAyMTMsMjAyNjEsMjAyNjMsMjAyMzMsMjAyNjcsMjAzMTgsMjAzMjcsMjU5MTIsMjAzMTQsMjAzMTcsMzYwMTQsMzYwMTUsMzYwMTYsMzYwMTcsMzYwMTgsMzYwMTksMzYwMjAsMzYwMjEsMzYwMjIsMzYwMjMsMzYwMjQsMzYwMjUsMzYwMjYsMzYwMjcsMzYwMjgsMzYwMjksMzYwMzAsMzYwMzEsMzYwMzIsMzYwMzMsMzYwMzQsMzYwMzUsMzYwMzYsMzYwMzcsMzYwMzgsMzYwMzksMzYwNDAsMzYwNDEsMzYwNDIsMzYwNDMsMzYwNDQsMzYwNDUsMzYwNDYsMzYwNDcsMzYwNDgsMzYwNDksMzYwNTAsMzYwNTEsMzYwNTIsMzYwNTMsMzYwNTQsMzYwNTUsMzYwNTYsMzYwNTcsMzYwNTgsMzYwNTksMzYwNjAsMzYwNjEsMzYwNjIsMzYwNjMsMzYwNjQsMzYwNjUsMzYwNjYsMzYwNjcsMzYwNjgsMzYwNjksMzYwNzAsMzYwNzEsMzYwNzIsMzYwNzMsMzYwNzQsMzYwNzUsMzYwNzYsMzYwNzcsMzYwNzgsMzYwNzksMzYwODAsMzYwODEsMzYwODIsMzYwODMsMzYwODQsMzYwODUsMzYwODYsMzYwODcsMzYwODgsMzYwODksMzYwOTAsMzYwOTEsMzYwOTIsMzYwOTMsMzYwOTQsMzYwOTUsMzYwOTYsMzYwOTcsMzYwOTgsMzYwOTksMzYxMDAsMzYxMDEsMzYxMDIsMzYxMDMsMzYxMDQsMzYxMDUsMzYxMDYsMzYxMDcsMzYxMDgsMzYxMDksMjAzMTksMjAzMTEsMjAyNzQsMjAyODUsMjAzNDIsMjAzNDAsMjAzNjksMjAzNjEsMjAzNTUsMjAzNjcsMjAzNTAsMjAzNDcsMjAzOTQsMjAzNDgsMjAzOTYsMjAzNzIsMjA0NTQsMjA0NTYsMjA0NTgsMjA0MjEsMjA0NDIsMjA0NTEsMjA0NDQsMjA0MzMsMjA0NDcsMjA0NzIsMjA1MjEsMjA1NTYsMjA0NjcsMjA1MjQsMjA0OTUsMjA1MjYsMjA1MjUsMjA0NzgsMjA1MDgsMjA0OTIsMjA1MTcsMjA1MjAsMjA2MDYsMjA1NDcsMjA1NjUsMjA1NTIsMjA1NTgsMjA1ODgsMjA2MDMsMjA2NDUsMjA2NDcsMjA2NDksMjA2NjYsMjA2OTQsMjA3NDIsMjA3MTcsMjA3MTYsMjA3MTAsMjA3MTgsMjA3NDMsMjA3NDcsMjAxODksMjc3MDksMjAzMTIsMjAzMjUsMjA0MzAsNDA4NjQsMjc3MTgsMzE4NjAsMjA4NDYsMjQwNjEsNDA2NDksMzkzMjAsMjA4NjUsMjI4MDQsMjEyNDEsMjEyNjEsMzUzMzUsMjEyNjQsMjA5NzEsMjI4MDksMjA4MjEsMjAxMjgsMjA4MjIsMjAxNDcsMzQ5MjYsMzQ5ODAsMjAxNDksMzMwNDQsMzUwMjYsMzExMDQsMjMzNDgsMzQ4MTksMzI2OTYsMjA5MDcsMjA5MTMsMjA5MjUsMjA5MjQsMzYxMTAsMzYxMTEsMzYxMTIsMzYxMTMsMzYxMTQsMzYxMTUsMzYxMTYsMzYxMTcsMzYxMTgsMzYxMTksMzYxMjAsMzYxMjEsMzYxMjIsMzYxMjMsMzYxMjQsMzYxMjgsMzYxNzcsMzYxNzgsMzYxODMsMzYxOTEsMzYxOTcsMzYyMDAsMzYyMDEsMzYyMDIsMzYyMDQsMzYyMDYsMzYyMDcsMzYyMDksMzYyMTAsMzYyMTYsMzYyMTcsMzYyMTgsMzYyMTksMzYyMjAsMzYyMjEsMzYyMjIsMzYyMjMsMzYyMjQsMzYyMjYsMzYyMjcsMzYyMzAsMzYyMzEsMzYyMzIsMzYyMzMsMzYyMzYsMzYyMzcsMzYyMzgsMzYyMzksMzYyNDAsMzYyNDIsMzYyNDMsMzYyNDUsMzYyNDYsMzYyNDcsMzYyNDgsMzYyNDksMzYyNTAsMzYyNTEsMzYyNTIsMzYyNTMsMzYyNTQsMzYyNTYsMzYyNTcsMzYyNTgsMzYyNjAsMzYyNjEsMzYyNjIsMzYyNjMsMzYyNjQsMzYyNjUsMzYyNjYsMzYyNjcsMzYyNjgsMzYyNjksMzYyNzAsMzYyNzEsMzYyNzIsMzYyNzQsMzYyNzgsMzYyNzksMzYyODEsMzYyODMsMzYyODUsMzYyODgsMzYyODksMzYyOTAsMzYyOTMsMzYyOTUsMzYyOTYsMzYyOTcsMzYyOTgsMzYzMDEsMzYzMDQsMzYzMDYsMzYzMDcsMzYzMDgsMjA5MzUsMjA4ODYsMjA4OTgsMjA5MDEsMzU3NDQsMzU3NTAsMzU3NTEsMzU3NTQsMzU3NjQsMzU3NjUsMzU3NjcsMzU3NzgsMzU3NzksMzU3ODcsMzU3OTEsMzU3OTAsMzU3OTQsMzU3OTUsMzU3OTYsMzU3OTgsMzU4MDAsMzU4MDEsMzU4MDQsMzU4MDcsMzU4MDgsMzU4MTIsMzU4MTYsMzU4MTcsMzU4MjIsMzU4MjQsMzU4MjcsMzU4MzAsMzU4MzMsMzU4MzYsMzU4MzksMzU4NDAsMzU4NDIsMzU4NDQsMzU4NDcsMzU4NTIsMzU4NTUsMzU4NTcsMzU4NTgsMzU4NjAsMzU4NjEsMzU4NjIsMzU4NjUsMzU4NjcsMzU4NjQsMzU4NjksMzU4NzEsMzU4NzIsMzU4NzMsMzU4NzcsMzU4NzksMzU4ODIsMzU4ODMsMzU4ODYsMzU4ODcsMzU4OTAsMzU4OTEsMzU4OTMsMzU4OTQsMjEzNTMsMjEzNzAsMzg0MjksMzg0MzQsMzg0MzMsMzg0NDksMzg0NDIsMzg0NjEsMzg0NjAsMzg0NjYsMzg0NzMsMzg0ODQsMzg0OTUsMzg1MDMsMzg1MDgsMzg1MTQsMzg1MTYsMzg1MzYsMzg1NDEsMzg1NTEsMzg1NzYsMzcwMTUsMzcwMTksMzcwMjEsMzcwMTcsMzcwMzYsMzcwMjUsMzcwNDQsMzcwNDMsMzcwNDYsMzcwNTAsMzYzMDksMzYzMTIsMzYzMTMsMzYzMTYsMzYzMjAsMzYzMjEsMzYzMjIsMzYzMjUsMzYzMjYsMzYzMjcsMzYzMjksMzYzMzMsMzYzMzQsMzYzMzYsMzYzMzcsMzYzMzgsMzYzNDAsMzYzNDIsMzYzNDgsMzYzNTAsMzYzNTEsMzYzNTIsMzYzNTMsMzYzNTQsMzYzNTUsMzYzNTYsMzYzNTgsMzYzNTksMzYzNjAsMzYzNjMsMzYzNjUsMzYzNjYsMzYzNjgsMzYzNjksMzYzNzAsMzYzNzEsMzYzNzMsMzYzNzQsMzYzNzUsMzYzNzYsMzYzNzcsMzYzNzgsMzYzNzksMzYzODAsMzYzODQsMzYzODUsMzYzODgsMzYzODksMzYzOTAsMzYzOTEsMzYzOTIsMzYzOTUsMzYzOTcsMzY0MDAsMzY0MDIsMzY0MDMsMzY0MDQsMzY0MDYsMzY0MDcsMzY0MDgsMzY0MTEsMzY0MTIsMzY0MTQsMzY0MTUsMzY0MTksMzY0MjEsMzY0MjIsMzY0MjgsMzY0MjksMzY0MzAsMzY0MzEsMzY0MzIsMzY0MzUsMzY0MzYsMzY0MzcsMzY0MzgsMzY0MzksMzY0NDAsMzY0NDIsMzY0NDMsMzY0NDQsMzY0NDUsMzY0NDYsMzY0NDcsMzY0NDgsMzY0NDksMzY0NTAsMzY0NTEsMzY0NTIsMzY0NTMsMzY0NTUsMzY0NTYsMzY0NTgsMzY0NTksMzY0NjIsMzY0NjUsMzcwNDgsMzcwNDAsMzcwNzEsMzcwNjEsMzcwNTQsMzcwNzIsMzcwNjAsMzcwNjMsMzcwNzUsMzcwOTQsMzcwOTAsMzcwODQsMzcwNzksMzcwODMsMzcwOTksMzcxMDMsMzcxMTgsMzcxMjQsMzcxNTQsMzcxNTAsMzcxNTUsMzcxNjksMzcxNjcsMzcxNzcsMzcxODcsMzcxOTAsMjEwMDUsMjI4NTAsMjExNTQsMjExNjQsMjExNjUsMjExODIsMjE3NTksMjEyMDAsMjEyMDYsMjEyMzIsMjE0NzEsMjkxNjYsMzA2NjksMjQzMDgsMjA5ODEsMjA5ODgsMzk3MjcsMjE0MzAsMjQzMjEsMzAwNDIsMjQwNDcsMjIzNDgsMjI0NDEsMjI0MzMsMjI2NTQsMjI3MTYsMjI3MjUsMjI3MzcsMjIzMTMsMjIzMTYsMjIzMTQsMjIzMjMsMjIzMjksMjIzMTgsMjIzMTksMjIzNjQsMjIzMzEsMjIzMzgsMjIzNzcsMjI0MDUsMjIzNzksMjI0MDYsMjIzOTYsMjIzOTUsMjIzNzYsMjIzODEsMjIzOTAsMjIzODcsMjI0NDUsMjI0MzYsMjI0MTIsMjI0NTAsMjI0NzksMjI0MzksMjI0NTIsMjI0MTksMjI0MzIsMjI0ODUsMjI0ODgsMjI0OTAsMjI0ODksMjI0ODIsMjI0NTYsMjI1MTYsMjI1MTEsMjI1MjAsMjI1MDAsMjI0OTMsMzY0NjcsMzY0NjksMzY0NzEsMzY0NzIsMzY0NzMsMzY0NzQsMzY0NzUsMzY0NzcsMzY0NzgsMzY0ODAsMzY0ODIsMzY0ODMsMzY0ODQsMzY0ODYsMzY0ODgsMzY0ODksMzY0OTAsMzY0OTEsMzY0OTIsMzY0OTMsMzY0OTQsMzY0OTcsMzY0OTgsMzY0OTksMzY1MDEsMzY1MDIsMzY1MDMsMzY1MDQsMzY1MDUsMzY1MDYsMzY1MDcsMzY1MDksMzY1MTEsMzY1MTIsMzY1MTMsMzY1MTQsMzY1MTUsMzY1MTYsMzY1MTcsMzY1MTgsMzY1MTksMzY1MjAsMzY1MjEsMzY1MjIsMzY1MjUsMzY1MjYsMzY1MjgsMzY1MjksMzY1MzEsMzY1MzIsMzY1MzMsMzY1MzQsMzY1MzUsMzY1MzYsMzY1MzcsMzY1MzksMzY1NDAsMzY1NDEsMzY1NDIsMzY1NDMsMzY1NDQsMzY1NDUsMzY1NDYsMzY1NDcsMzY1NDgsMzY1NDksMzY1NTAsMzY1NTEsMzY1NTIsMzY1NTMsMzY1NTQsMzY1NTUsMzY1NTYsMzY1NTcsMzY1NTksMzY1NjAsMzY1NjEsMzY1NjIsMzY1NjMsMzY1NjQsMzY1NjUsMzY1NjYsMzY1NjcsMzY1NjgsMzY1NjksMzY1NzAsMzY1NzEsMzY1NzIsMzY1NzMsMzY1NzQsMzY1NzUsMzY1NzYsMzY1NzcsMzY1NzgsMzY1NzksMzY1ODAsMjI1MzksMjI1NDEsMjI1MjUsMjI1MDksMjI1MjgsMjI1NTgsMjI1NTMsMjI1OTYsMjI1NjAsMjI2MjksMjI2MzYsMjI2NTcsMjI2NjUsMjI2ODIsMjI2NTYsMzkzMzYsNDA3MjksMjUwODcsMzM0MDEsMzM0MDUsMzM0MDcsMzM0MjMsMzM0MTgsMzM0NDgsMzM0MTIsMzM0MjIsMzM0MjUsMzM0MzEsMzM0MzMsMzM0NTEsMzM0NjQsMzM0NzAsMzM0NTYsMzM0ODAsMzM0ODIsMzM1MDcsMzM0MzIsMzM0NjMsMzM0NTQsMzM0ODMsMzM0ODQsMzM0NzMsMzM0NDksMzM0NjAsMzM0NDEsMzM0NTAsMzM0MzksMzM0NzYsMzM0ODYsMzM0NDQsMzM1MDUsMzM1NDUsMzM1MjcsMzM1MDgsMzM1NTEsMzM1NDMsMzM1MDAsMzM1MjQsMzM0OTAsMzM0OTYsMzM1NDgsMzM1MzEsMzM0OTEsMzM1NTMsMzM1NjIsMzM1NDIsMzM1NTYsMzM1NTcsMzM1MDQsMzM0OTMsMzM1NjQsMzM2MTcsMzM2MjcsMzM2MjgsMzM1NDQsMzM2ODIsMzM1OTYsMzM1ODgsMzM1ODUsMzM2OTEsMzM2MzAsMzM1ODMsMzM2MTUsMzM2MDcsMzM2MDMsMzM2MzEsMzM2MDAsMzM1NTksMzM2MzIsMzM1ODEsMzM1OTQsMzM1ODcsMzM2MzgsMzM2MzcsMzY1ODEsMzY1ODIsMzY1ODMsMzY1ODQsMzY1ODUsMzY1ODYsMzY1ODcsMzY1ODgsMzY1ODksMzY1OTAsMzY1OTEsMzY1OTIsMzY1OTMsMzY1OTQsMzY1OTUsMzY1OTYsMzY1OTcsMzY1OTgsMzY1OTksMzY2MDAsMzY2MDEsMzY2MDIsMzY2MDMsMzY2MDQsMzY2MDUsMzY2MDYsMzY2MDcsMzY2MDgsMzY2MDksMzY2MTAsMzY2MTEsMzY2MTIsMzY2MTMsMzY2MTQsMzY2MTUsMzY2MTYsMzY2MTcsMzY2MTgsMzY2MTksMzY2MjAsMzY2MjEsMzY2MjIsMzY2MjMsMzY2MjQsMzY2MjUsMzY2MjYsMzY2MjcsMzY2MjgsMzY2MjksMzY2MzAsMzY2MzEsMzY2MzIsMzY2MzMsMzY2MzQsMzY2MzUsMzY2MzYsMzY2MzcsMzY2MzgsMzY2MzksMzY2NDAsMzY2NDEsMzY2NDIsMzY2NDMsMzY2NDQsMzY2NDUsMzY2NDYsMzY2NDcsMzY2NDgsMzY2NDksMzY2NTAsMzY2NTEsMzY2NTIsMzY2NTMsMzY2NTQsMzY2NTUsMzY2NTYsMzY2NTcsMzY2NTgsMzY2NTksMzY2NjAsMzY2NjEsMzY2NjIsMzY2NjMsMzY2NjQsMzY2NjUsMzY2NjYsMzY2NjcsMzY2NjgsMzY2NjksMzY2NzAsMzY2NzEsMzY2NzIsMzY2NzMsMzY2NzQsMzY2NzUsMzY2NzYsMzM2NDAsMzM1NjMsMzM2NDEsMzM2NDQsMzM2NDIsMzM2NDUsMzM2NDYsMzM3MTIsMzM2NTYsMzM3MTUsMzM3MTYsMzM2OTYsMzM3MDYsMzM2ODMsMzM2OTIsMzM2NjksMzM2NjAsMzM3MTgsMzM3MDUsMzM2NjEsMzM3MjAsMzM2NTksMzM2ODgsMzM2OTQsMzM3MDQsMzM3MjIsMzM3MjQsMzM3MjksMzM3OTMsMzM3NjUsMzM3NTIsMjI1MzUsMzM4MTYsMzM4MDMsMzM3NTcsMzM3ODksMzM3NTAsMzM4MjAsMzM4NDgsMzM4MDksMzM3OTgsMzM3NDgsMzM3NTksMzM4MDcsMzM3OTUsMzM3ODQsMzM3ODUsMzM3NzAsMzM3MzMsMzM3MjgsMzM4MzAsMzM3NzYsMzM3NjEsMzM4ODQsMzM4NzMsMzM4ODIsMzM4ODEsMzM5MDcsMzM5MjcsMzM5MjgsMzM5MTQsMzM5MjksMzM5MTIsMzM4NTIsMzM4NjIsMzM4OTcsMzM5MTAsMzM5MzIsMzM5MzQsMzM4NDEsMzM5MDEsMzM5ODUsMzM5OTcsMzQwMDAsMzQwMjIsMzM5ODEsMzQwMDMsMzM5OTQsMzM5ODMsMzM5NzgsMzQwMTYsMzM5NTMsMzM5NzcsMzM5NzIsMzM5NDMsMzQwMjEsMzQwMTksMzQwNjAsMjk5NjUsMzQxMDQsMzQwMzIsMzQxMDUsMzQwNzksMzQxMDYsMzY2NzcsMzY2NzgsMzY2NzksMzY2ODAsMzY2ODEsMzY2ODIsMzY2ODMsMzY2ODQsMzY2ODUsMzY2ODYsMzY2ODcsMzY2ODgsMzY2ODksMzY2OTAsMzY2OTEsMzY2OTIsMzY2OTMsMzY2OTQsMzY2OTUsMzY2OTYsMzY2OTcsMzY2OTgsMzY2OTksMzY3MDAsMzY3MDEsMzY3MDIsMzY3MDMsMzY3MDQsMzY3MDUsMzY3MDYsMzY3MDcsMzY3MDgsMzY3MDksMzY3MTQsMzY3MzYsMzY3NDgsMzY3NTQsMzY3NjUsMzY3NjgsMzY3NjksMzY3NzAsMzY3NzIsMzY3NzMsMzY3NzQsMzY3NzUsMzY3NzgsMzY3ODAsMzY3ODEsMzY3ODIsMzY3ODMsMzY3ODYsMzY3ODcsMzY3ODgsMzY3ODksMzY3OTEsMzY3OTIsMzY3OTQsMzY3OTUsMzY3OTYsMzY3OTksMzY4MDAsMzY4MDMsMzY4MDYsMzY4MDksMzY4MTAsMzY4MTEsMzY4MTIsMzY4MTMsMzY4MTUsMzY4MTgsMzY4MjIsMzY4MjMsMzY4MjYsMzY4MzIsMzY4MzMsMzY4MzUsMzY4MzksMzY4NDQsMzY4NDcsMzY4NDksMzY4NTAsMzY4NTIsMzY4NTMsMzY4NTQsMzY4NTgsMzY4NTksMzY4NjAsMzY4NjIsMzY4NjMsMzY4NzEsMzY4NzIsMzY4NzYsMzY4NzgsMzY4ODMsMzY4ODUsMzY4ODgsMzQxMzQsMzQxMDcsMzQwNDcsMzQwNDQsMzQxMzcsMzQxMjAsMzQxNTIsMzQxNDgsMzQxNDIsMzQxNzAsMzA2MjYsMzQxMTUsMzQxNjIsMzQxNzEsMzQyMTIsMzQyMTYsMzQxODMsMzQxOTEsMzQxNjksMzQyMjIsMzQyMDQsMzQxODEsMzQyMzMsMzQyMzEsMzQyMjQsMzQyNTksMzQyNDEsMzQyNjgsMzQzMDMsMzQzNDMsMzQzMDksMzQzNDUsMzQzMjYsMzQzNjQsMjQzMTgsMjQzMjgsMjI4NDQsMjI4NDksMzI4MjMsMjI4NjksMjI4NzQsMjI4NzIsMjEyNjMsMjM1ODYsMjM1ODksMjM1OTYsMjM2MDQsMjUxNjQsMjUxOTQsMjUyNDcsMjUyNzUsMjUyOTAsMjUzMDYsMjUzMDMsMjUzMjYsMjUzNzgsMjUzMzQsMjU0MDEsMjU0MTksMjU0MTEsMjU1MTcsMjU1OTAsMjU0NTcsMjU0NjYsMjU0ODYsMjU1MjQsMjU0NTMsMjU1MTYsMjU0ODIsMjU0NDksMjU1MTgsMjU1MzIsMjU1ODYsMjU1OTIsMjU1NjgsMjU1OTksMjU1NDAsMjU1NjYsMjU1NTAsMjU2ODIsMjU1NDIsMjU1MzQsMjU2NjksMjU2NjUsMjU2MTEsMjU2MjcsMjU2MzIsMjU2MTIsMjU2MzgsMjU2MzMsMjU2OTQsMjU3MzIsMjU3MDksMjU3NTAsMzY4ODksMzY4OTIsMzY4OTksMzY5MDAsMzY5MDEsMzY5MDMsMzY5MDQsMzY5MDUsMzY5MDYsMzY5MDcsMzY5MDgsMzY5MTIsMzY5MTMsMzY5MTQsMzY5MTUsMzY5MTYsMzY5MTksMzY5MjEsMzY5MjIsMzY5MjUsMzY5MjcsMzY5MjgsMzY5MzEsMzY5MzMsMzY5MzQsMzY5MzYsMzY5MzcsMzY5MzgsMzY5MzksMzY5NDAsMzY5NDIsMzY5NDgsMzY5NDksMzY5NTAsMzY5NTMsMzY5NTQsMzY5NTYsMzY5NTcsMzY5NTgsMzY5NTksMzY5NjAsMzY5NjEsMzY5NjQsMzY5NjYsMzY5NjcsMzY5NjksMzY5NzAsMzY5NzEsMzY5NzIsMzY5NzUsMzY5NzYsMzY5NzcsMzY5NzgsMzY5NzksMzY5ODIsMzY5ODMsMzY5ODQsMzY5ODUsMzY5ODYsMzY5ODcsMzY5ODgsMzY5OTAsMzY5OTMsMzY5OTYsMzY5OTcsMzY5OTgsMzY5OTksMzcwMDEsMzcwMDIsMzcwMDQsMzcwMDUsMzcwMDYsMzcwMDcsMzcwMDgsMzcwMTAsMzcwMTIsMzcwMTQsMzcwMTYsMzcwMTgsMzcwMjAsMzcwMjIsMzcwMjMsMzcwMjQsMzcwMjgsMzcwMjksMzcwMzEsMzcwMzIsMzcwMzMsMzcwMzUsMzcwMzcsMzcwNDIsMzcwNDcsMzcwNTIsMzcwNTMsMzcwNTUsMzcwNTYsMjU3MjIsMjU3ODMsMjU3ODQsMjU3NTMsMjU3ODYsMjU3OTIsMjU4MDgsMjU4MTUsMjU4MjgsMjU4MjYsMjU4NjUsMjU4OTMsMjU5MDIsMjQzMzEsMjQ1MzAsMjk5NzcsMjQzMzcsMjEzNDMsMjE0ODksMjE1MDEsMjE0ODEsMjE0ODAsMjE0OTksMjE1MjIsMjE1MjYsMjE1MTAsMjE1NzksMjE1ODYsMjE1ODcsMjE1ODgsMjE1OTAsMjE1NzEsMjE1MzcsMjE1OTEsMjE1OTMsMjE1MzksMjE1NTQsMjE2MzQsMjE2NTIsMjE2MjMsMjE2MTcsMjE2MDQsMjE2NTgsMjE2NTksMjE2MzYsMjE2MjIsMjE2MDYsMjE2NjEsMjE3MTIsMjE2NzcsMjE2OTgsMjE2ODQsMjE3MTQsMjE2NzEsMjE2NzAsMjE3MTUsMjE3MTYsMjE2MTgsMjE2NjcsMjE3MTcsMjE2OTEsMjE2OTUsMjE3MDgsMjE3MjEsMjE3MjIsMjE3MjQsMjE2NzMsMjE2NzQsMjE2NjgsMjE3MjUsMjE3MTEsMjE3MjYsMjE3ODcsMjE3MzUsMjE3OTIsMjE3NTcsMjE3ODAsMjE3NDcsMjE3OTQsMjE3OTUsMjE3NzUsMjE3NzcsMjE3OTksMjE4MDIsMjE4NjMsMjE5MDMsMjE5NDEsMjE4MzMsMjE4NjksMjE4MjUsMjE4NDUsMjE4MjMsMjE4NDAsMjE4MjAsMzcwNTgsMzcwNTksMzcwNjIsMzcwNjQsMzcwNjUsMzcwNjcsMzcwNjgsMzcwNjksMzcwNzQsMzcwNzYsMzcwNzcsMzcwNzgsMzcwODAsMzcwODEsMzcwODIsMzcwODYsMzcwODcsMzcwODgsMzcwOTEsMzcwOTIsMzcwOTMsMzcwOTcsMzcwOTgsMzcxMDAsMzcxMDIsMzcxMDQsMzcxMDUsMzcxMDYsMzcxMDcsMzcxMDksMzcxMTAsMzcxMTEsMzcxMTMsMzcxMTQsMzcxMTUsMzcxMTYsMzcxMTksMzcxMjAsMzcxMjEsMzcxMjMsMzcxMjUsMzcxMjYsMzcxMjcsMzcxMjgsMzcxMjksMzcxMzAsMzcxMzEsMzcxMzIsMzcxMzMsMzcxMzQsMzcxMzUsMzcxMzYsMzcxMzcsMzcxMzgsMzcxMzksMzcxNDAsMzcxNDEsMzcxNDIsMzcxNDMsMzcxNDQsMzcxNDYsMzcxNDcsMzcxNDgsMzcxNDksMzcxNTEsMzcxNTIsMzcxNTMsMzcxNTYsMzcxNTcsMzcxNTgsMzcxNTksMzcxNjAsMzcxNjEsMzcxNjIsMzcxNjMsMzcxNjQsMzcxNjUsMzcxNjYsMzcxNjgsMzcxNzAsMzcxNzEsMzcxNzIsMzcxNzMsMzcxNzQsMzcxNzUsMzcxNzYsMzcxNzgsMzcxNzksMzcxODAsMzcxODEsMzcxODIsMzcxODMsMzcxODQsMzcxODUsMzcxODYsMzcxODgsMjE4MTUsMjE4NDYsMjE4NzcsMjE4NzgsMjE4NzksMjE4MTEsMjE4MDgsMjE4NTIsMjE4OTksMjE5NzAsMjE4OTEsMjE5MzcsMjE5NDUsMjE4OTYsMjE4ODksMjE5MTksMjE4ODYsMjE5NzQsMjE5MDUsMjE4ODMsMjE5ODMsMjE5NDksMjE5NTAsMjE5MDgsMjE5MTMsMjE5OTQsMjIwMDcsMjE5NjEsMjIwNDcsMjE5NjksMjE5OTUsMjE5OTYsMjE5NzIsMjE5OTAsMjE5ODEsMjE5NTYsMjE5OTksMjE5ODksMjIwMDIsMjIwMDMsMjE5NjQsMjE5NjUsMjE5OTIsMjIwMDUsMjE5ODgsMzY3NTYsMjIwNDYsMjIwMjQsMjIwMjgsMjIwMTcsMjIwNTIsMjIwNTEsMjIwMTQsMjIwMTYsMjIwNTUsMjIwNjEsMjIxMDQsMjIwNzMsMjIxMDMsMjIwNjAsMjIwOTMsMjIxMTQsMjIxMDUsMjIxMDgsMjIwOTIsMjIxMDAsMjIxNTAsMjIxMTYsMjIxMjksMjIxMjMsMjIxMzksMjIxNDAsMjIxNDksMjIxNjMsMjIxOTEsMjIyMjgsMjIyMzEsMjIyMzcsMjIyNDEsMjIyNjEsMjIyNTEsMjIyNjUsMjIyNzEsMjIyNzYsMjIyODIsMjIyODEsMjIzMDAsMjQwNzksMjQwODksMjQwODQsMjQwODEsMjQxMTMsMjQxMjMsMjQxMjQsMzcxODksMzcxOTEsMzcxOTIsMzcyMDEsMzcyMDMsMzcyMDQsMzcyMDUsMzcyMDYsMzcyMDgsMzcyMDksMzcyMTEsMzcyMTIsMzcyMTUsMzcyMTYsMzcyMjIsMzcyMjMsMzcyMjQsMzcyMjcsMzcyMjksMzcyMzUsMzcyNDIsMzcyNDMsMzcyNDQsMzcyNDgsMzcyNDksMzcyNTAsMzcyNTEsMzcyNTIsMzcyNTQsMzcyNTYsMzcyNTgsMzcyNjIsMzcyNjMsMzcyNjcsMzcyNjgsMzcyNjksMzcyNzAsMzcyNzEsMzcyNzIsMzcyNzMsMzcyNzYsMzcyNzcsMzcyNzgsMzcyNzksMzcyODAsMzcyODEsMzcyODQsMzcyODUsMzcyODYsMzcyODcsMzcyODgsMzcyODksMzcyOTEsMzcyOTIsMzcyOTYsMzcyOTcsMzcyOTgsMzcyOTksMzczMDIsMzczMDMsMzczMDQsMzczMDUsMzczMDcsMzczMDgsMzczMDksMzczMTAsMzczMTEsMzczMTIsMzczMTMsMzczMTQsMzczMTUsMzczMTYsMzczMTcsMzczMTgsMzczMjAsMzczMjMsMzczMjgsMzczMzAsMzczMzEsMzczMzIsMzczMzMsMzczMzQsMzczMzUsMzczMzYsMzczMzcsMzczMzgsMzczMzksMzczNDEsMzczNDIsMzczNDMsMzczNDQsMzczNDUsMzczNDYsMzczNDcsMzczNDgsMzczNDksMjQxMTksMjQxMzIsMjQxNDgsMjQxNTUsMjQxNTgsMjQxNjEsMjM2OTIsMjM2NzQsMjM2OTMsMjM2OTYsMjM3MDIsMjM2ODgsMjM3MDQsMjM3MDUsMjM2OTcsMjM3MDYsMjM3MDgsMjM3MzMsMjM3MTQsMjM3NDEsMjM3MjQsMjM3MjMsMjM3MjksMjM3MTUsMjM3NDUsMjM3MzUsMjM3NDgsMjM3NjIsMjM3ODAsMjM3NTUsMjM3ODEsMjM4MTAsMjM4MTEsMjM4NDcsMjM4NDYsMjM4NTQsMjM4NDQsMjM4MzgsMjM4MTQsMjM4MzUsMjM4OTYsMjM4NzAsMjM4NjAsMjM4NjksMjM5MTYsMjM4OTksMjM5MTksMjM5MDEsMjM5MTUsMjM4ODMsMjM4ODIsMjM5MTMsMjM5MjQsMjM5MzgsMjM5NjEsMjM5NjUsMzU5NTUsMjM5OTEsMjQwMDUsMjQ0MzUsMjQ0MzksMjQ0NTAsMjQ0NTUsMjQ0NTcsMjQ0NjAsMjQ0NjksMjQ0NzMsMjQ0NzYsMjQ0ODgsMjQ0OTMsMjQ1MDEsMjQ1MDgsMzQ5MTQsMjQ0MTcsMjkzNTcsMjkzNjAsMjkzNjQsMjkzNjcsMjkzNjgsMjkzNzksMjkzNzcsMjkzOTAsMjkzODksMjkzOTQsMjk0MTYsMjk0MjMsMjk0MTcsMjk0MjYsMjk0MjgsMjk0MzEsMjk0NDEsMjk0MjcsMjk0NDMsMjk0MzQsMzczNTAsMzczNTEsMzczNTIsMzczNTMsMzczNTQsMzczNTUsMzczNTYsMzczNTcsMzczNTgsMzczNTksMzczNjAsMzczNjEsMzczNjIsMzczNjMsMzczNjQsMzczNjUsMzczNjYsMzczNjcsMzczNjgsMzczNjksMzczNzAsMzczNzEsMzczNzIsMzczNzMsMzczNzQsMzczNzUsMzczNzYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQsMzczODUsMzczODYsMzczODcsMzczODgsMzczODksMzczOTAsMzczOTEsMzczOTIsMzczOTMsMzczOTQsMzczOTUsMzczOTYsMzczOTcsMzczOTgsMzczOTksMzc0MDAsMzc0MDEsMzc0MDIsMzc0MDMsMzc0MDQsMzc0MDUsMzc0MDYsMzc0MDcsMzc0MDgsMzc0MDksMzc0MTAsMzc0MTEsMzc0MTIsMzc0MTMsMzc0MTQsMzc0MTUsMzc0MTYsMzc0MTcsMzc0MTgsMzc0MTksMzc0MjAsMzc0MjEsMzc0MjIsMzc0MjMsMzc0MjQsMzc0MjUsMzc0MjYsMzc0MjcsMzc0MjgsMzc0MjksMzc0MzAsMzc0MzEsMzc0MzIsMzc0MzMsMzc0MzQsMzc0MzUsMzc0MzYsMzc0MzcsMzc0MzgsMzc0MzksMzc0NDAsMzc0NDEsMzc0NDIsMzc0NDMsMzc0NDQsMzc0NDUsMjk0MzUsMjk0NjMsMjk0NTksMjk0NzMsMjk0NTAsMjk0NzAsMjk0NjksMjk0NjEsMjk0NzQsMjk0OTcsMjk0NzcsMjk0ODQsMjk0OTYsMjk0ODksMjk1MjAsMjk1MTcsMjk1MjcsMjk1MzYsMjk1NDgsMjk1NTEsMjk1NjYsMzMzMDcsMjI4MjEsMzkxNDMsMjI4MjAsMjI3ODYsMzkyNjcsMzkyNzEsMzkyNzIsMzkyNzMsMzkyNzQsMzkyNzUsMzkyNzYsMzkyODQsMzkyODcsMzkyOTMsMzkyOTYsMzkzMDAsMzkzMDMsMzkzMDYsMzkzMDksMzkzMTIsMzkzMTMsMzkzMTUsMzkzMTYsMzkzMTcsMjQxOTIsMjQyMDksMjQyMDMsMjQyMTQsMjQyMjksMjQyMjQsMjQyNDksMjQyNDUsMjQyNTQsMjQyNDMsMzYxNzksMjQyNzQsMjQyNzMsMjQyODMsMjQyOTYsMjQyOTgsMzMyMTAsMjQ1MTYsMjQ1MjEsMjQ1MzQsMjQ1MjcsMjQ1NzksMjQ1NTgsMjQ1ODAsMjQ1NDUsMjQ1NDgsMjQ1NzQsMjQ1ODEsMjQ1ODIsMjQ1NTQsMjQ1NTcsMjQ1NjgsMjQ2MDEsMjQ2MjksMjQ2MTQsMjQ2MDMsMjQ1OTEsMjQ1ODksMjQ2MTcsMjQ2MTksMjQ1ODYsMjQ2MzksMjQ2MDksMjQ2OTYsMjQ2OTcsMjQ2OTksMjQ2OTgsMjQ2NDIsMzc0NDYsMzc0NDcsMzc0NDgsMzc0NDksMzc0NTAsMzc0NTEsMzc0NTIsMzc0NTMsMzc0NTQsMzc0NTUsMzc0NTYsMzc0NTcsMzc0NTgsMzc0NTksMzc0NjAsMzc0NjEsMzc0NjIsMzc0NjMsMzc0NjQsMzc0NjUsMzc0NjYsMzc0NjcsMzc0NjgsMzc0NjksMzc0NzAsMzc0NzEsMzc0NzIsMzc0NzMsMzc0NzQsMzc0NzUsMzc0NzYsMzc0NzcsMzc0NzgsMzc0NzksMzc0ODAsMzc0ODEsMzc0ODIsMzc0ODMsMzc0ODQsMzc0ODUsMzc0ODYsMzc0ODcsMzc0ODgsMzc0ODksMzc0OTAsMzc0OTEsMzc0OTMsMzc0OTQsMzc0OTUsMzc0OTYsMzc0OTcsMzc0OTgsMzc0OTksMzc1MDAsMzc1MDEsMzc1MDIsMzc1MDMsMzc1MDQsMzc1MDUsMzc1MDYsMzc1MDcsMzc1MDgsMzc1MDksMzc1MTAsMzc1MTEsMzc1MTIsMzc1MTMsMzc1MTQsMzc1MTUsMzc1MTYsMzc1MTcsMzc1MTksMzc1MjAsMzc1MjEsMzc1MjIsMzc1MjMsMzc1MjQsMzc1MjUsMzc1MjYsMzc1MjcsMzc1MjgsMzc1MjksMzc1MzAsMzc1MzEsMzc1MzIsMzc1MzMsMzc1MzQsMzc1MzUsMzc1MzYsMzc1MzcsMzc1MzgsMzc1MzksMzc1NDAsMzc1NDEsMzc1NDIsMzc1NDMsMjQ2ODIsMjQ3MDEsMjQ3MjYsMjQ3MzAsMjQ3NDksMjQ3MzMsMjQ3MDcsMjQ3MjIsMjQ3MTYsMjQ3MzEsMjQ4MTIsMjQ3NjMsMjQ3NTMsMjQ3OTcsMjQ3OTIsMjQ3NzQsMjQ3OTQsMjQ3NTYsMjQ4NjQsMjQ4NzAsMjQ4NTMsMjQ4NjcsMjQ4MjAsMjQ4MzIsMjQ4NDYsMjQ4NzUsMjQ5MDYsMjQ5NDksMjUwMDQsMjQ5ODAsMjQ5OTksMjUwMTUsMjUwNDQsMjUwNzcsMjQ1NDEsMzg1NzksMzgzNzcsMzgzNzksMzgzODUsMzgzODcsMzgzODksMzgzOTAsMzgzOTYsMzgzOTgsMzg0MDMsMzg0MDQsMzg0MDYsMzg0MDgsMzg0MTAsMzg0MTEsMzg0MTIsMzg0MTMsMzg0MTUsMzg0MTgsMzg0MjEsMzg0MjIsMzg0MjMsMzg0MjUsMzg0MjYsMjAwMTIsMjkyNDcsMjUxMDksMjc3MDEsMjc3MzIsMjc3NDAsMjc3MjIsMjc4MTEsMjc3ODEsMjc3OTIsMjc3OTYsMjc3ODgsMjc3NTIsMjc3NTMsMjc3NjQsMjc3NjYsMjc3ODIsMjc4MTcsMjc4NTYsMjc4NjAsMjc4MjEsMjc4OTUsMjc4OTYsMjc4ODksMjc4NjMsMjc4MjYsMjc4NzIsMjc4NjIsMjc4OTgsMjc4ODMsMjc4ODYsMjc4MjUsMjc4NTksMjc4ODcsMjc5MDIsMzc1NDQsMzc1NDUsMzc1NDYsMzc1NDcsMzc1NDgsMzc1NDksMzc1NTEsMzc1NTIsMzc1NTMsMzc1NTQsMzc1NTUsMzc1NTYsMzc1NTcsMzc1NTgsMzc1NTksMzc1NjAsMzc1NjEsMzc1NjIsMzc1NjMsMzc1NjQsMzc1NjUsMzc1NjYsMzc1NjcsMzc1NjgsMzc1NjksMzc1NzAsMzc1NzEsMzc1NzIsMzc1NzMsMzc1NzQsMzc1NzUsMzc1NzcsMzc1NzgsMzc1NzksMzc1ODAsMzc1ODEsMzc1ODIsMzc1ODMsMzc1ODQsMzc1ODUsMzc1ODYsMzc1ODcsMzc1ODgsMzc1ODksMzc1OTAsMzc1OTEsMzc1OTIsMzc1OTMsMzc1OTQsMzc1OTUsMzc1OTYsMzc1OTcsMzc1OTgsMzc1OTksMzc2MDAsMzc2MDEsMzc2MDIsMzc2MDMsMzc2MDQsMzc2MDUsMzc2MDYsMzc2MDcsMzc2MDgsMzc2MDksMzc2MTAsMzc2MTEsMzc2MTIsMzc2MTMsMzc2MTQsMzc2MTUsMzc2MTYsMzc2MTcsMzc2MTgsMzc2MTksMzc2MjAsMzc2MjEsMzc2MjIsMzc2MjMsMzc2MjQsMzc2MjUsMzc2MjYsMzc2MjcsMzc2MjgsMzc2MjksMzc2MzAsMzc2MzEsMzc2MzIsMzc2MzMsMzc2MzQsMzc2MzUsMzc2MzYsMzc2MzcsMzc2MzgsMzc2MzksMzc2NDAsMzc2NDEsMjc5NjEsMjc5NDMsMjc5MTYsMjc5NzEsMjc5NzYsMjc5MTEsMjc5MDgsMjc5MjksMjc5MTgsMjc5NDcsMjc5ODEsMjc5NTAsMjc5NTcsMjc5MzAsMjc5ODMsMjc5ODYsMjc5ODgsMjc5NTUsMjgwNDksMjgwMTUsMjgwNjIsMjgwNjQsMjc5OTgsMjgwNTEsMjgwNTIsMjc5OTYsMjgwMDAsMjgwMjgsMjgwMDMsMjgxODYsMjgxMDMsMjgxMDEsMjgxMjYsMjgxNzQsMjgwOTUsMjgxMjgsMjgxNzcsMjgxMzQsMjgxMjUsMjgxMjEsMjgxODIsMjgwNzUsMjgxNzIsMjgwNzgsMjgyMDMsMjgyNzAsMjgyMzgsMjgyNjcsMjgzMzgsMjgyNTUsMjgyOTQsMjgyNDMsMjgyNDQsMjgyMTAsMjgxOTcsMjgyMjgsMjgzODMsMjgzMzcsMjgzMTIsMjgzODQsMjg0NjEsMjgzODYsMjgzMjUsMjgzMjcsMjgzNDksMjgzNDcsMjgzNDMsMjgzNzUsMjgzNDAsMjgzNjcsMjgzMDMsMjgzNTQsMjgzMTksMjg1MTQsMjg0ODYsMjg0ODcsMjg0NTIsMjg0MzcsMjg0MDksMjg0NjMsMjg0NzAsMjg0OTEsMjg1MzIsMjg0NTgsMjg0MjUsMjg0NTcsMjg1NTMsMjg1NTcsMjg1NTYsMjg1MzYsMjg1MzAsMjg1NDAsMjg1MzgsMjg2MjUsMzc2NDIsMzc2NDMsMzc2NDQsMzc2NDUsMzc2NDYsMzc2NDcsMzc2NDgsMzc2NDksMzc2NTAsMzc2NTEsMzc2NTIsMzc2NTMsMzc2NTQsMzc2NTUsMzc2NTYsMzc2NTcsMzc2NTgsMzc2NTksMzc2NjAsMzc2NjEsMzc2NjIsMzc2NjMsMzc2NjQsMzc2NjUsMzc2NjYsMzc2NjcsMzc2NjgsMzc2NjksMzc2NzAsMzc2NzEsMzc2NzIsMzc2NzMsMzc2NzQsMzc2NzUsMzc2NzYsMzc2NzcsMzc2NzgsMzc2NzksMzc2ODAsMzc2ODEsMzc2ODIsMzc2ODMsMzc2ODQsMzc2ODUsMzc2ODYsMzc2ODcsMzc2ODgsMzc2ODksMzc2OTAsMzc2OTEsMzc2OTIsMzc2OTMsMzc2OTUsMzc2OTYsMzc2OTcsMzc2OTgsMzc2OTksMzc3MDAsMzc3MDEsMzc3MDIsMzc3MDMsMzc3MDQsMzc3MDUsMzc3MDYsMzc3MDcsMzc3MDgsMzc3MDksMzc3MTAsMzc3MTEsMzc3MTIsMzc3MTMsMzc3MTQsMzc3MTUsMzc3MTYsMzc3MTcsMzc3MTgsMzc3MTksMzc3MjAsMzc3MjEsMzc3MjIsMzc3MjMsMzc3MjQsMzc3MjUsMzc3MjYsMzc3MjcsMzc3MjgsMzc3MjksMzc3MzAsMzc3MzEsMzc3MzIsMzc3MzMsMzc3MzQsMzc3MzUsMzc3MzYsMzc3MzcsMzc3MzksMjg2MTcsMjg1ODMsMjg2MDEsMjg1OTgsMjg2MTAsMjg2NDEsMjg2NTQsMjg2MzgsMjg2NDAsMjg2NTUsMjg2OTgsMjg3MDcsMjg2OTksMjg3MjksMjg3MjUsMjg3NTEsMjg3NjYsMjM0MjQsMjM0MjgsMjM0NDUsMjM0NDMsMjM0NjEsMjM0ODAsMjk5OTksMzk1ODIsMjU2NTIsMjM1MjQsMjM1MzQsMzUxMjAsMjM1MzYsMzY0MjMsMzU1OTEsMzY3OTAsMzY4MTksMzY4MjEsMzY4MzcsMzY4NDYsMzY4MzYsMzY4NDEsMzY4MzgsMzY4NTEsMzY4NDAsMzY4NjksMzY4NjgsMzY4NzUsMzY5MDIsMzY4ODEsMzY4NzcsMzY4ODYsMzY4OTcsMzY5MTcsMzY5MTgsMzY5MDksMzY5MTEsMzY5MzIsMzY5NDUsMzY5NDYsMzY5NDQsMzY5NjgsMzY5NTIsMzY5NjIsMzY5NTUsMjYyOTcsMzY5ODAsMzY5ODksMzY5OTQsMzcwMDAsMzY5OTUsMzcwMDMsMjQ0MDAsMjQ0MDcsMjQ0MDYsMjQ0MDgsMjM2MTEsMjE2NzUsMjM2MzIsMjM2NDEsMjM0MDksMjM2NTEsMjM2NTQsMzI3MDAsMjQzNjIsMjQzNjEsMjQzNjUsMzMzOTYsMjQzODAsMzk3MzksMjM2NjIsMjI5MTMsMjI5MTUsMjI5MjUsMjI5NTMsMjI5NTQsMjI5NDcsMzc3NDAsMzc3NDEsMzc3NDIsMzc3NDMsMzc3NDQsMzc3NDUsMzc3NDYsMzc3NDcsMzc3NDgsMzc3NDksMzc3NTAsMzc3NTEsMzc3NTIsMzc3NTMsMzc3NTQsMzc3NTUsMzc3NTYsMzc3NTcsMzc3NTgsMzc3NTksMzc3NjAsMzc3NjEsMzc3NjIsMzc3NjMsMzc3NjQsMzc3NjUsMzc3NjYsMzc3NjcsMzc3NjgsMzc3NjksMzc3NzAsMzc3NzEsMzc3NzIsMzc3NzMsMzc3NzQsMzc3NzYsMzc3NzcsMzc3NzgsMzc3NzksMzc3ODAsMzc3ODEsMzc3ODIsMzc3ODMsMzc3ODQsMzc3ODUsMzc3ODYsMzc3ODcsMzc3ODgsMzc3ODksMzc3OTAsMzc3OTEsMzc3OTIsMzc3OTMsMzc3OTQsMzc3OTUsMzc3OTYsMzc3OTcsMzc3OTgsMzc3OTksMzc4MDAsMzc4MDEsMzc4MDIsMzc4MDMsMzc4MDQsMzc4MDUsMzc4MDYsMzc4MDcsMzc4MDgsMzc4MDksMzc4MTAsMzc4MTEsMzc4MTIsMzc4MTMsMzc4MTQsMzc4MTUsMzc4MTYsMzc4MTcsMzc4MTgsMzc4MTksMzc4MjAsMzc4MjEsMzc4MjIsMzc4MjMsMzc4MjQsMzc4MjUsMzc4MjYsMzc4MjcsMzc4MjgsMzc4MjksMzc4MzAsMzc4MzEsMzc4MzIsMzc4MzMsMzc4MzUsMzc4MzYsMzc4MzcsMjI5MzUsMjI5ODYsMjI5NTUsMjI5NDIsMjI5NDgsMjI5OTQsMjI5NjIsMjI5NTksMjI5OTksMjI5NzQsMjMwNDUsMjMwNDYsMjMwMDUsMjMwNDgsMjMwMTEsMjMwMDAsMjMwMzMsMjMwNTIsMjMwNDksMjMwOTAsMjMwOTIsMjMwNTcsMjMwNzUsMjMwNTksMjMxMDQsMjMxNDMsMjMxMTQsMjMxMjUsMjMxMDAsMjMxMzgsMjMxNTcsMzMwMDQsMjMyMTAsMjMxOTUsMjMxNTksMjMxNjIsMjMyMzAsMjMyNzUsMjMyMTgsMjMyNTAsMjMyNTIsMjMyMjQsMjMyNjQsMjMyNjcsMjMyODEsMjMyNTQsMjMyNzAsMjMyNTYsMjMyNjAsMjMzMDUsMjMzMTksMjMzMTgsMjMzNDYsMjMzNTEsMjMzNjAsMjM1NzMsMjM1ODAsMjMzODYsMjMzOTcsMjM0MTEsMjMzNzcsMjMzNzksMjMzOTQsMzk1NDEsMzk1NDMsMzk1NDQsMzk1NDYsMzk1NTEsMzk1NDksMzk1NTIsMzk1NTMsMzk1NTcsMzk1NjAsMzk1NjIsMzk1NjgsMzk1NzAsMzk1NzEsMzk1NzQsMzk1NzYsMzk1NzksMzk1ODAsMzk1ODEsMzk1ODMsMzk1ODQsMzk1ODYsMzk1ODcsMzk1ODksMzk1OTEsMzI0MTUsMzI0MTcsMzI0MTksMzI0MjEsMzI0MjQsMzI0MjUsMzc4MzgsMzc4MzksMzc4NDAsMzc4NDEsMzc4NDIsMzc4NDMsMzc4NDQsMzc4NDUsMzc4NDcsMzc4NDgsMzc4NDksMzc4NTAsMzc4NTEsMzc4NTIsMzc4NTMsMzc4NTQsMzc4NTUsMzc4NTYsMzc4NTcsMzc4NTgsMzc4NTksMzc4NjAsMzc4NjEsMzc4NjIsMzc4NjMsMzc4NjQsMzc4NjUsMzc4NjYsMzc4NjcsMzc4NjgsMzc4NjksMzc4NzAsMzc4NzEsMzc4NzIsMzc4NzMsMzc4NzQsMzc4NzUsMzc4NzYsMzc4NzcsMzc4NzgsMzc4NzksMzc4ODAsMzc4ODEsMzc4ODIsMzc4ODMsMzc4ODQsMzc4ODUsMzc4ODYsMzc4ODcsMzc4ODgsMzc4ODksMzc4OTAsMzc4OTEsMzc4OTIsMzc4OTMsMzc4OTQsMzc4OTUsMzc4OTYsMzc4OTcsMzc4OTgsMzc4OTksMzc5MDAsMzc5MDEsMzc5MDIsMzc5MDMsMzc5MDQsMzc5MDUsMzc5MDYsMzc5MDcsMzc5MDgsMzc5MDksMzc5MTAsMzc5MTEsMzc5MTIsMzc5MTMsMzc5MTQsMzc5MTUsMzc5MTYsMzc5MTcsMzc5MTgsMzc5MTksMzc5MjAsMzc5MjEsMzc5MjIsMzc5MjMsMzc5MjQsMzc5MjUsMzc5MjYsMzc5MjcsMzc5MjgsMzc5MjksMzc5MzAsMzc5MzEsMzc5MzIsMzc5MzMsMzc5MzQsMzI0MjksMzI0MzIsMzI0NDYsMzI0NDgsMzI0NDksMzI0NTAsMzI0NTcsMzI0NTksMzI0NjAsMzI0NjQsMzI0NjgsMzI0NzEsMzI0NzUsMzI0ODAsMzI0ODEsMzI0ODgsMzI0OTEsMzI0OTQsMzI0OTUsMzI0OTcsMzI0OTgsMzI1MjUsMzI1MDIsMzI1MDYsMzI1MDcsMzI1MTAsMzI1MTMsMzI1MTQsMzI1MTUsMzI1MTksMzI1MjAsMzI1MjMsMzI1MjQsMzI1MjcsMzI1MjksMzI1MzAsMzI1MzUsMzI1MzcsMzI1NDAsMzI1MzksMzI1NDMsMzI1NDUsMzI1NDYsMzI1NDcsMzI1NDgsMzI1NDksMzI1NTAsMzI1NTEsMzI1NTQsMzI1NTUsMzI1NTYsMzI1NTcsMzI1NTksMzI1NjAsMzI1NjEsMzI1NjIsMzI1NjMsMzI1NjUsMjQxODYsMzAwNzksMjQwMjcsMzAwMTQsMzcwMTMsMjk1ODIsMjk1ODUsMjk2MTQsMjk2MDIsMjk1OTksMjk2NDcsMjk2MzQsMjk2NDksMjk2MjMsMjk2MTksMjk2MzIsMjk2NDEsMjk2NDAsMjk2NjksMjk2NTcsMzkwMzYsMjk3MDYsMjk2NzMsMjk2NzEsMjk2NjIsMjk2MjYsMjk2ODIsMjk3MTEsMjk3MzgsMjk3ODcsMjk3MzQsMjk3MzMsMjk3MzYsMjk3NDQsMjk3NDIsMjk3NDAsMzc5MzUsMzc5MzYsMzc5MzcsMzc5MzgsMzc5MzksMzc5NDAsMzc5NDEsMzc5NDIsMzc5NDMsMzc5NDQsMzc5NDUsMzc5NDYsMzc5NDcsMzc5NDgsMzc5NDksMzc5NTEsMzc5NTIsMzc5NTMsMzc5NTQsMzc5NTUsMzc5NTYsMzc5NTcsMzc5NTgsMzc5NTksMzc5NjAsMzc5NjEsMzc5NjIsMzc5NjMsMzc5NjQsMzc5NjUsMzc5NjYsMzc5NjcsMzc5NjgsMzc5NjksMzc5NzAsMzc5NzEsMzc5NzIsMzc5NzMsMzc5NzQsMzc5NzUsMzc5NzYsMzc5NzcsMzc5NzgsMzc5NzksMzc5ODAsMzc5ODEsMzc5ODIsMzc5ODMsMzc5ODQsMzc5ODUsMzc5ODYsMzc5ODcsMzc5ODgsMzc5ODksMzc5OTAsMzc5OTEsMzc5OTIsMzc5OTMsMzc5OTQsMzc5OTYsMzc5OTcsMzc5OTgsMzc5OTksMzgwMDAsMzgwMDEsMzgwMDIsMzgwMDMsMzgwMDQsMzgwMDUsMzgwMDYsMzgwMDcsMzgwMDgsMzgwMDksMzgwMTAsMzgwMTEsMzgwMTIsMzgwMTMsMzgwMTQsMzgwMTUsMzgwMTYsMzgwMTcsMzgwMTgsMzgwMTksMzgwMjAsMzgwMzMsMzgwMzgsMzgwNDAsMzgwODcsMzgwOTUsMzgwOTksMzgxMDAsMzgxMDYsMzgxMTgsMzgxMzksMzgxNzIsMzgxNzYsMjk3MjMsMjk3MjIsMjk3NjEsMjk3ODgsMjk3ODMsMjk3ODEsMjk3ODUsMjk4MTUsMjk4MDUsMjk4MjIsMjk4NTIsMjk4MzgsMjk4MjQsMjk4MjUsMjk4MzEsMjk4MzUsMjk4NTQsMjk4NjQsMjk4NjUsMjk4NDAsMjk4NjMsMjk5MDYsMjk4ODIsMzg4OTAsMzg4OTEsMzg4OTIsMjY0NDQsMjY0NTEsMjY0NjIsMjY0NDAsMjY0NzMsMjY1MzMsMjY1MDMsMjY0NzQsMjY0ODMsMjY1MjAsMjY1MzUsMjY0ODUsMjY1MzYsMjY1MjYsMjY1NDEsMjY1MDcsMjY0ODcsMjY0OTIsMjY2MDgsMjY2MzMsMjY1ODQsMjY2MzQsMjY2MDEsMjY1NDQsMjY2MzYsMjY1ODUsMjY1NDksMjY1ODYsMjY1NDcsMjY1ODksMjY2MjQsMjY1NjMsMjY1NTIsMjY1OTQsMjY2MzgsMjY1NjEsMjY2MjEsMjY2NzQsMjY2NzUsMjY3MjAsMjY3MjEsMjY3MDIsMjY3MjIsMjY2OTIsMjY3MjQsMjY3NTUsMjY2NTMsMjY3MDksMjY3MjYsMjY2ODksMjY3MjcsMjY2ODgsMjY2ODYsMjY2OTgsMjY2OTcsMjY2NjUsMjY4MDUsMjY3NjcsMjY3NDAsMjY3NDMsMjY3NzEsMjY3MzEsMjY4MTgsMjY5OTAsMjY4NzYsMjY5MTEsMjY5MTIsMjY4NzMsMzgxODMsMzgxOTUsMzgyMDUsMzgyMTEsMzgyMTYsMzgyMTksMzgyMjksMzgyMzQsMzgyNDAsMzgyNTQsMzgyNjAsMzgyNjEsMzgyNjMsMzgyNjQsMzgyNjUsMzgyNjYsMzgyNjcsMzgyNjgsMzgyNjksMzgyNzAsMzgyNzIsMzgyNzMsMzgyNzQsMzgyNzUsMzgyNzYsMzgyNzcsMzgyNzgsMzgyNzksMzgyODAsMzgyODEsMzgyODIsMzgyODMsMzgyODQsMzgyODUsMzgyODYsMzgyODcsMzgyODgsMzgyODksMzgyOTAsMzgyOTEsMzgyOTIsMzgyOTMsMzgyOTQsMzgyOTUsMzgyOTYsMzgyOTcsMzgyOTgsMzgyOTksMzgzMDAsMzgzMDEsMzgzMDIsMzgzMDMsMzgzMDQsMzgzMDUsMzgzMDYsMzgzMDcsMzgzMDgsMzgzMDksMzgzMTAsMzgzMTEsMzgzMTIsMzgzMTMsMzgzMTQsMzgzMTUsMzgzMTYsMzgzMTcsMzgzMTgsMzgzMTksMzgzMjAsMzgzMjEsMzgzMjIsMzgzMjMsMzgzMjQsMzgzMjUsMzgzMjYsMzgzMjcsMzgzMjgsMzgzMjksMzgzMzAsMzgzMzEsMzgzMzIsMzgzMzMsMzgzMzQsMzgzMzUsMzgzMzYsMzgzMzcsMzgzMzgsMzgzMzksMzgzNDAsMzgzNDEsMzgzNDIsMzgzNDMsMzgzNDQsMzgzNDUsMzgzNDYsMzgzNDcsMjY5MTYsMjY4NjQsMjY4OTEsMjY4ODEsMjY5NjcsMjY4NTEsMjY4OTYsMjY5OTMsMjY5MzcsMjY5NzYsMjY5NDYsMjY5NzMsMjcwMTIsMjY5ODcsMjcwMDgsMjcwMzIsMjcwMDAsMjY5MzIsMjcwODQsMjcwMTUsMjcwMTYsMjcwODYsMjcwMTcsMjY5ODIsMjY5NzksMjcwMDEsMjcwMzUsMjcwNDcsMjcwNjcsMjcwNTEsMjcwNTMsMjcwOTIsMjcwNTcsMjcwNzMsMjcwODIsMjcxMDMsMjcwMjksMjcxMDQsMjcwMjEsMjcxMzUsMjcxODMsMjcxMTcsMjcxNTksMjcxNjAsMjcyMzcsMjcxMjIsMjcyMDQsMjcxOTgsMjcyOTYsMjcyMTYsMjcyMjcsMjcxODksMjcyNzgsMjcyNTcsMjcxOTcsMjcxNzYsMjcyMjQsMjcyNjAsMjcyODEsMjcyODAsMjczMDUsMjcyODcsMjczMDcsMjk0OTUsMjk1MjIsMjc1MjEsMjc1MjIsMjc1MjcsMjc1MjQsMjc1MzgsMjc1MzksMjc1MzMsMjc1NDYsMjc1NDcsMjc1NTMsMjc1NjIsMzY3MTUsMzY3MTcsMzY3MjEsMzY3MjIsMzY3MjMsMzY3MjUsMzY3MjYsMzY3MjgsMzY3MjcsMzY3MjksMzY3MzAsMzY3MzIsMzY3MzQsMzY3MzcsMzY3MzgsMzY3NDAsMzY3NDMsMzY3NDcsMzgzNDgsMzgzNDksMzgzNTAsMzgzNTEsMzgzNTIsMzgzNTMsMzgzNTQsMzgzNTUsMzgzNTYsMzgzNTcsMzgzNTgsMzgzNTksMzgzNjAsMzgzNjEsMzgzNjIsMzgzNjMsMzgzNjQsMzgzNjUsMzgzNjYsMzgzNjcsMzgzNjgsMzgzNjksMzgzNzAsMzgzNzEsMzgzNzIsMzgzNzMsMzgzNzQsMzgzNzUsMzgzODAsMzgzOTksMzg0MDcsMzg0MTksMzg0MjQsMzg0MjcsMzg0MzAsMzg0MzIsMzg0MzUsMzg0MzYsMzg0MzcsMzg0MzgsMzg0MzksMzg0NDAsMzg0NDEsMzg0NDMsMzg0NDQsMzg0NDUsMzg0NDcsMzg0NDgsMzg0NTUsMzg0NTYsMzg0NTcsMzg0NTgsMzg0NjIsMzg0NjUsMzg0NjcsMzg0NzQsMzg0NzgsMzg0NzksMzg0ODEsMzg0ODIsMzg0ODMsMzg0ODYsMzg0ODcsMzg0ODgsMzg0ODksMzg0OTAsMzg0OTIsMzg0OTMsMzg0OTQsMzg0OTYsMzg0OTksMzg1MDEsMzg1MDIsMzg1MDcsMzg1MDksMzg1MTAsMzg1MTEsMzg1MTIsMzg1MTMsMzg1MTUsMzg1MjAsMzg1MjEsMzg1MjIsMzg1MjMsMzg1MjQsMzg1MjUsMzg1MjYsMzg1MjcsMzg1MjgsMzg1MjksMzg1MzAsMzg1MzEsMzg1MzIsMzg1MzUsMzg1MzcsMzg1MzgsMzY3NDksMzY3NTAsMzY3NTEsMzY3NjAsMzY3NjIsMzY1NTgsMjUwOTksMjUxMTEsMjUxMTUsMjUxMTksMjUxMjIsMjUxMjEsMjUxMjUsMjUxMjQsMjUxMzIsMzMyNTUsMjk5MzUsMjk5NDAsMjk5NTEsMjk5NjcsMjk5NjksMjk5NzEsMjU5MDgsMjYwOTQsMjYwOTUsMjYwOTYsMjYxMjIsMjYxMzcsMjY0ODIsMjYxMTUsMjYxMzMsMjYxMTIsMjg4MDUsMjYzNTksMjYxNDEsMjYxNjQsMjYxNjEsMjYxNjYsMjYxNjUsMzI3NzQsMjYyMDcsMjYxOTYsMjYxNzcsMjYxOTEsMjYxOTgsMjYyMDksMjYxOTksMjYyMzEsMjYyNDQsMjYyNTIsMjYyNzksMjYyNjksMjYzMDIsMjYzMzEsMjYzMzIsMjYzNDIsMjYzNDUsMzYxNDYsMzYxNDcsMzYxNTAsMzYxNTUsMzYxNTcsMzYxNjAsMzYxNjUsMzYxNjYsMzYxNjgsMzYxNjksMzYxNjcsMzYxNzMsMzYxODEsMzYxODUsMzUyNzEsMzUyNzQsMzUyNzUsMzUyNzYsMzUyNzgsMzUyNzksMzUyODAsMzUyODEsMjkyOTQsMjkzNDMsMjkyNzcsMjkyODYsMjkyOTUsMjkzMTAsMjkzMTEsMjkzMTYsMjkzMjMsMjkzMjUsMjkzMjcsMjkzMzAsMjUzNTIsMjUzOTQsMjU1MjAsMzg1NDAsMzg1NDIsMzg1NDUsMzg1NDYsMzg1NDcsMzg1NDksMzg1NTAsMzg1NTQsMzg1NTUsMzg1NTcsMzg1NTgsMzg1NTksMzg1NjAsMzg1NjEsMzg1NjIsMzg1NjMsMzg1NjQsMzg1NjUsMzg1NjYsMzg1NjgsMzg1NjksMzg1NzAsMzg1NzEsMzg1NzIsMzg1NzMsMzg1NzQsMzg1NzUsMzg1NzcsMzg1NzgsMzg1ODAsMzg1ODEsMzg1ODMsMzg1ODQsMzg1ODYsMzg1ODcsMzg1OTEsMzg1OTQsMzg1OTUsMzg2MDAsMzg2MDIsMzg2MDMsMzg2MDgsMzg2MDksMzg2MTEsMzg2MTIsMzg2MTQsMzg2MTUsMzg2MTYsMzg2MTcsMzg2MTgsMzg2MTksMzg2MjAsMzg2MjEsMzg2MjIsMzg2MjMsMzg2MjUsMzg2MjYsMzg2MjcsMzg2MjgsMzg2MjksMzg2MzAsMzg2MzEsMzg2MzUsMzg2MzYsMzg2MzcsMzg2MzgsMzg2NDAsMzg2NDEsMzg2NDIsMzg2NDQsMzg2NDUsMzg2NDgsMzg2NTAsMzg2NTEsMzg2NTIsMzg2NTMsMzg2NTUsMzg2NTgsMzg2NTksMzg2NjEsMzg2NjYsMzg2NjcsMzg2NjgsMzg2NzIsMzg2NzMsMzg2NzQsMzg2NzYsMzg2NzcsMzg2NzksMzg2ODAsMzg2ODEsMzg2ODIsMzg2ODMsMzg2ODUsMzg2ODcsMzg2ODgsMjU2NjMsMjU4MTYsMzI3NzIsMjc2MjYsMjc2MzUsMjc2NDUsMjc2MzcsMjc2NDEsMjc2NTMsMjc2NTUsMjc2NTQsMjc2NjEsMjc2NjksMjc2NzIsMjc2NzMsMjc2NzQsMjc2ODEsMjc2ODksMjc2ODQsMjc2OTAsMjc2OTgsMjU5MDksMjU5NDEsMjU5NjMsMjkyNjEsMjkyNjYsMjkyNzAsMjkyMzIsMzQ0MDIsMjEwMTQsMzI5MjcsMzI5MjQsMzI5MTUsMzI5NTYsMjYzNzgsMzI5NTcsMzI5NDUsMzI5MzksMzI5NDEsMzI5NDgsMzI5NTEsMzI5OTksMzMwMDAsMzMwMDEsMzMwMDIsMzI5ODcsMzI5NjIsMzI5NjQsMzI5ODUsMzI5NzMsMzI5ODMsMjYzODQsMzI5ODksMzMwMDMsMzMwMDksMzMwMTIsMzMwMDUsMzMwMzcsMzMwMzgsMzMwMTAsMzMwMjAsMjYzODksMzMwNDIsMzU5MzAsMzMwNzgsMzMwNTQsMzMwNjgsMzMwNDgsMzMwNzQsMzMwOTYsMzMxMDAsMzMxMDcsMzMxNDAsMzMxMTMsMzMxMTQsMzMxMzcsMzMxMjAsMzMxMjksMzMxNDgsMzMxNDksMzMxMzMsMzMxMjcsMjI2MDUsMjMyMjEsMzMxNjAsMzMxNTQsMzMxNjksMjgzNzMsMzMxODcsMzMxOTQsMzMyMjgsMjY0MDYsMzMyMjYsMzMyMTEsMzg2ODksMzg2OTAsMzg2OTEsMzg2OTIsMzg2OTMsMzg2OTQsMzg2OTUsMzg2OTYsMzg2OTcsMzg2OTksMzg3MDAsMzg3MDIsMzg3MDMsMzg3MDUsMzg3MDcsMzg3MDgsMzg3MDksMzg3MTAsMzg3MTEsMzg3MTQsMzg3MTUsMzg3MTYsMzg3MTcsMzg3MTksMzg3MjAsMzg3MjEsMzg3MjIsMzg3MjMsMzg3MjQsMzg3MjUsMzg3MjYsMzg3MjcsMzg3MjgsMzg3MjksMzg3MzAsMzg3MzEsMzg3MzIsMzg3MzMsMzg3MzQsMzg3MzUsMzg3MzYsMzg3MzcsMzg3NDAsMzg3NDEsMzg3NDMsMzg3NDQsMzg3NDYsMzg3NDgsMzg3NDksMzg3NTEsMzg3NTUsMzg3NTYsMzg3NTgsMzg3NTksMzg3NjAsMzg3NjIsMzg3NjMsMzg3NjQsMzg3NjUsMzg3NjYsMzg3NjcsMzg3NjgsMzg3NjksMzg3NzAsMzg3NzMsMzg3NzUsMzg3NzYsMzg3NzcsMzg3NzgsMzg3NzksMzg3ODEsMzg3ODIsMzg3ODMsMzg3ODQsMzg3ODUsMzg3ODYsMzg3ODcsMzg3ODgsMzg3OTAsMzg3OTEsMzg3OTIsMzg3OTMsMzg3OTQsMzg3OTYsMzg3OTgsMzg3OTksMzg4MDAsMzg4MDMsMzg4MDUsMzg4MDYsMzg4MDcsMzg4MDksMzg4MTAsMzg4MTEsMzg4MTIsMzg4MTMsMzMyMTcsMzMxOTAsMjc0MjgsMjc0NDcsMjc0NDksMjc0NTksMjc0NjIsMjc0ODEsMzkxMjEsMzkxMjIsMzkxMjMsMzkxMjUsMzkxMjksMzkxMzAsMjc1NzEsMjQzODQsMjc1ODYsMzUzMTUsMjYwMDAsNDA3ODUsMjYwMDMsMjYwNDQsMjYwNTQsMjYwNTIsMjYwNTEsMjYwNjAsMjYwNjIsMjYwNjYsMjYwNzAsMjg4MDAsMjg4MjgsMjg4MjIsMjg4MjksMjg4NTksMjg4NjQsMjg4NTUsMjg4NDMsMjg4NDksMjg5MDQsMjg4NzQsMjg5NDQsMjg5NDcsMjg5NTAsMjg5NzUsMjg5NzcsMjkwNDMsMjkwMjAsMjkwMzIsMjg5OTcsMjkwNDIsMjkwMDIsMjkwNDgsMjkwNTAsMjkwODAsMjkxMDcsMjkxMDksMjkwOTYsMjkwODgsMjkxNTIsMjkxNDAsMjkxNTksMjkxNzcsMjkyMTMsMjkyMjQsMjg3ODAsMjg5NTIsMjkwMzAsMjkxMTMsMjUxNTAsMjUxNDksMjUxNTUsMjUxNjAsMjUxNjEsMzEwMzUsMzEwNDAsMzEwNDYsMzEwNDksMzEwNjcsMzEwNjgsMzEwNTksMzEwNjYsMzEwNzQsMzEwNjMsMzEwNzIsMzEwODcsMzEwNzksMzEwOTgsMzExMDksMzExMTQsMzExMzAsMzExNDMsMzExNTUsMjQ1MjksMjQ1MjgsMzg4MTQsMzg4MTUsMzg4MTcsMzg4MTgsMzg4MjAsMzg4MjEsMzg4MjIsMzg4MjMsMzg4MjQsMzg4MjUsMzg4MjYsMzg4MjgsMzg4MzAsMzg4MzIsMzg4MzMsMzg4MzUsMzg4MzcsMzg4MzgsMzg4MzksMzg4NDAsMzg4NDEsMzg4NDIsMzg4NDMsMzg4NDQsMzg4NDUsMzg4NDYsMzg4NDcsMzg4NDgsMzg4NDksMzg4NTAsMzg4NTEsMzg4NTIsMzg4NTMsMzg4NTQsMzg4NTUsMzg4NTYsMzg4NTcsMzg4NTgsMzg4NTksMzg4NjAsMzg4NjEsMzg4NjIsMzg4NjMsMzg4NjQsMzg4NjUsMzg4NjYsMzg4NjcsMzg4NjgsMzg4NjksMzg4NzAsMzg4NzEsMzg4NzIsMzg4NzMsMzg4NzQsMzg4NzUsMzg4NzYsMzg4NzcsMzg4NzgsMzg4NzksMzg4ODAsMzg4ODEsMzg4ODIsMzg4ODMsMzg4ODQsMzg4ODUsMzg4ODgsMzg4OTQsMzg4OTUsMzg4OTYsMzg4OTcsMzg4OTgsMzg5MDAsMzg5MDMsMzg5MDQsMzg5MDUsMzg5MDYsMzg5MDcsMzg5MDgsMzg5MDksMzg5MTAsMzg5MTEsMzg5MTIsMzg5MTMsMzg5MTQsMzg5MTUsMzg5MTYsMzg5MTcsMzg5MTgsMzg5MTksMzg5MjAsMzg5MjEsMzg5MjIsMzg5MjMsMzg5MjQsMzg5MjUsMzg5MjYsMjQ2MzYsMjQ2NjksMjQ2NjYsMjQ2NzksMjQ2NDEsMjQ2NjUsMjQ2NzUsMjQ3NDcsMjQ4MzgsMjQ4NDUsMjQ5MjUsMjUwMDEsMjQ5ODksMjUwMzUsMjUwNDEsMjUwOTQsMzI4OTYsMzI4OTUsMjc3OTUsMjc4OTQsMjgxNTYsMzA3MTAsMzA3MTIsMzA3MjAsMzA3MjksMzA3NDMsMzA3NDQsMzA3MzcsMjYwMjcsMzA3NjUsMzA3NDgsMzA3NDksMzA3NzcsMzA3NzgsMzA3NzksMzA3NTEsMzA3ODAsMzA3NTcsMzA3NjQsMzA3NTUsMzA3NjEsMzA3OTgsMzA4MjksMzA4MDYsMzA4MDcsMzA3NTgsMzA4MDAsMzA3OTEsMzA3OTYsMzA4MjYsMzA4NzUsMzA4NjcsMzA4NzQsMzA4NTUsMzA4NzYsMzA4ODEsMzA4ODMsMzA4OTgsMzA5MDUsMzA4ODUsMzA5MzIsMzA5MzcsMzA5MjEsMzA5NTYsMzA5NjIsMzA5ODEsMzA5NjQsMzA5OTUsMzEwMTIsMzEwMDYsMzEwMjgsNDA4NTksNDA2OTcsNDA2OTksNDA3MDAsMzA0NDksMzA0NjgsMzA0NzcsMzA0NTcsMzA0NzEsMzA0NzIsMzA0OTAsMzA0OTgsMzA0ODksMzA1MDksMzA1MDIsMzA1MTcsMzA1MjAsMzA1NDQsMzA1NDUsMzA1MzUsMzA1MzEsMzA1NTQsMzA1NjgsMzg5MjcsMzg5MjgsMzg5MjksMzg5MzAsMzg5MzEsMzg5MzIsMzg5MzMsMzg5MzQsMzg5MzUsMzg5MzYsMzg5MzcsMzg5MzgsMzg5MzksMzg5NDAsMzg5NDEsMzg5NDIsMzg5NDMsMzg5NDQsMzg5NDUsMzg5NDYsMzg5NDcsMzg5NDgsMzg5NDksMzg5NTAsMzg5NTEsMzg5NTIsMzg5NTMsMzg5NTQsMzg5NTUsMzg5NTYsMzg5NTcsMzg5NTgsMzg5NTksMzg5NjAsMzg5NjEsMzg5NjIsMzg5NjMsMzg5NjQsMzg5NjUsMzg5NjYsMzg5NjcsMzg5NjgsMzg5NjksMzg5NzAsMzg5NzEsMzg5NzIsMzg5NzMsMzg5NzQsMzg5NzUsMzg5NzYsMzg5NzcsMzg5NzgsMzg5NzksMzg5ODAsMzg5ODEsMzg5ODIsMzg5ODMsMzg5ODQsMzg5ODUsMzg5ODYsMzg5ODcsMzg5ODgsMzg5ODksMzg5OTAsMzg5OTEsMzg5OTIsMzg5OTMsMzg5OTQsMzg5OTUsMzg5OTYsMzg5OTcsMzg5OTgsMzg5OTksMzkwMDAsMzkwMDEsMzkwMDIsMzkwMDMsMzkwMDQsMzkwMDUsMzkwMDYsMzkwMDcsMzkwMDgsMzkwMDksMzkwMTAsMzkwMTEsMzkwMTIsMzkwMTMsMzkwMTQsMzkwMTUsMzkwMTYsMzkwMTcsMzkwMTgsMzkwMTksMzkwMjAsMzkwMjEsMzkwMjIsMzA1NjIsMzA1NjUsMzA1OTEsMzA2MDUsMzA1ODksMzA1OTIsMzA2MDQsMzA2MDksMzA2MjMsMzA2MjQsMzA2NDAsMzA2NDUsMzA2NTMsMzAwMTAsMzAwMTYsMzAwMzAsMzAwMjcsMzAwMjQsMzAwNDMsMzAwNjYsMzAwNzMsMzAwODMsMzI2MDAsMzI2MDksMzI2MDcsMzU0MDAsMzI2MTYsMzI2MjgsMzI2MjUsMzI2MzMsMzI2NDEsMzI2MzgsMzA0MTMsMzA0MzcsMzQ4NjYsMzgwMjEsMzgwMjIsMzgwMjMsMzgwMjcsMzgwMjYsMzgwMjgsMzgwMjksMzgwMzEsMzgwMzIsMzgwMzYsMzgwMzksMzgwMzcsMzgwNDIsMzgwNDMsMzgwNDQsMzgwNTEsMzgwNTIsMzgwNTksMzgwNTgsMzgwNjEsMzgwNjAsMzgwNjMsMzgwNjQsMzgwNjYsMzgwNjgsMzgwNzAsMzgwNzEsMzgwNzIsMzgwNzMsMzgwNzQsMzgwNzYsMzgwNzcsMzgwNzksMzgwODQsMzgwODgsMzgwODksMzgwOTAsMzgwOTEsMzgwOTIsMzgwOTMsMzgwOTQsMzgwOTYsMzgwOTcsMzgwOTgsMzgxMDEsMzgxMDIsMzgxMDMsMzgxMDUsMzgxMDQsMzgxMDcsMzgxMTAsMzgxMTEsMzgxMTIsMzgxMTQsMzgxMTYsMzgxMTcsMzgxMTksMzgxMjAsMzgxMjIsMzkwMjMsMzkwMjQsMzkwMjUsMzkwMjYsMzkwMjcsMzkwMjgsMzkwNTEsMzkwNTQsMzkwNTgsMzkwNjEsMzkwNjUsMzkwNzUsMzkwODAsMzkwODEsMzkwODIsMzkwODMsMzkwODQsMzkwODUsMzkwODYsMzkwODcsMzkwODgsMzkwODksMzkwOTAsMzkwOTEsMzkwOTIsMzkwOTMsMzkwOTQsMzkwOTUsMzkwOTYsMzkwOTcsMzkwOTgsMzkwOTksMzkxMDAsMzkxMDEsMzkxMDIsMzkxMDMsMzkxMDQsMzkxMDUsMzkxMDYsMzkxMDcsMzkxMDgsMzkxMDksMzkxMTAsMzkxMTEsMzkxMTIsMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkxMTcsMzkxMTksMzkxMjAsMzkxMjQsMzkxMjYsMzkxMjcsMzkxMzEsMzkxMzIsMzkxMzMsMzkxMzYsMzkxMzcsMzkxMzgsMzkxMzksMzkxNDAsMzkxNDEsMzkxNDIsMzkxNDUsMzkxNDYsMzkxNDcsMzkxNDgsMzkxNDksMzkxNTAsMzkxNTEsMzkxNTIsMzkxNTMsMzkxNTQsMzkxNTUsMzkxNTYsMzkxNTcsMzkxNTgsMzkxNTksMzkxNjAsMzkxNjEsMzkxNjIsMzkxNjMsMzkxNjQsMzkxNjUsMzkxNjYsMzkxNjcsMzkxNjgsMzkxNjksMzkxNzAsMzkxNzEsMzkxNzIsMzkxNzMsMzkxNzQsMzkxNzUsMzgxMjEsMzgxMjMsMzgxMjYsMzgxMjcsMzgxMzEsMzgxMzIsMzgxMzMsMzgxMzUsMzgxMzcsMzgxNDAsMzgxNDEsMzgxNDMsMzgxNDcsMzgxNDYsMzgxNTAsMzgxNTEsMzgxNTMsMzgxNTQsMzgxNTcsMzgxNTgsMzgxNTksMzgxNjIsMzgxNjMsMzgxNjQsMzgxNjUsMzgxNjYsMzgxNjgsMzgxNzEsMzgxNzMsMzgxNzQsMzgxNzUsMzgxNzgsMzgxODYsMzgxODcsMzgxODUsMzgxODgsMzgxOTMsMzgxOTQsMzgxOTYsMzgxOTgsMzgxOTksMzgyMDAsMzgyMDQsMzgyMDYsMzgyMDcsMzgyMTAsMzgxOTcsMzgyMTIsMzgyMTMsMzgyMTQsMzgyMTcsMzgyMjAsMzgyMjIsMzgyMjMsMzgyMjYsMzgyMjcsMzgyMjgsMzgyMzAsMzgyMzEsMzgyMzIsMzgyMzMsMzgyMzUsMzgyMzgsMzgyMzksMzgyMzcsMzgyNDEsMzgyNDIsMzgyNDQsMzgyNDUsMzgyNDYsMzgyNDcsMzgyNDgsMzgyNDksMzgyNTAsMzgyNTEsMzgyNTIsMzgyNTUsMzgyNTcsMzgyNTgsMzgyNTksMzgyMDIsMzA2OTUsMzA3MDAsMzg2MDEsMzExODksMzEyMTMsMzEyMDMsMzEyMTEsMzEyMzgsMjM4NzksMzEyMzUsMzEyMzQsMzEyNjIsMzEyNTIsMzkxNzYsMzkxNzcsMzkxNzgsMzkxNzksMzkxODAsMzkxODIsMzkxODMsMzkxODUsMzkxODYsMzkxODcsMzkxODgsMzkxODksMzkxOTAsMzkxOTEsMzkxOTIsMzkxOTMsMzkxOTQsMzkxOTUsMzkxOTYsMzkxOTcsMzkxOTgsMzkxOTksMzkyMDAsMzkyMDEsMzkyMDIsMzkyMDMsMzkyMDQsMzkyMDUsMzkyMDYsMzkyMDcsMzkyMDgsMzkyMDksMzkyMTAsMzkyMTEsMzkyMTIsMzkyMTMsMzkyMTUsMzkyMTYsMzkyMTcsMzkyMTgsMzkyMTksMzkyMjAsMzkyMjEsMzkyMjIsMzkyMjMsMzkyMjQsMzkyMjUsMzkyMjYsMzkyMjcsMzkyMjgsMzkyMjksMzkyMzAsMzkyMzEsMzkyMzIsMzkyMzMsMzkyMzQsMzkyMzUsMzkyMzYsMzkyMzcsMzkyMzgsMzkyMzksMzkyNDAsMzkyNDEsMzkyNDIsMzkyNDMsMzkyNDQsMzkyNDUsMzkyNDYsMzkyNDcsMzkyNDgsMzkyNDksMzkyNTAsMzkyNTEsMzkyNTQsMzkyNTUsMzkyNTYsMzkyNTcsMzkyNTgsMzkyNTksMzkyNjAsMzkyNjEsMzkyNjIsMzkyNjMsMzkyNjQsMzkyNjUsMzkyNjYsMzkyNjgsMzkyNzAsMzkyODMsMzkyODgsMzkyODksMzkyOTEsMzkyOTQsMzkyOTgsMzkyOTksMzkzMDUsMzEyODksMzEyODcsMzEzMTMsNDA2NTUsMzkzMzMsMzEzNDQsMzAzNDQsMzAzNTAsMzAzNTUsMzAzNjEsMzAzNzIsMjk5MTgsMjk5MjAsMjk5OTYsNDA0ODAsNDA0ODIsNDA0ODgsNDA0ODksNDA0OTAsNDA0OTEsNDA0OTIsNDA0OTgsNDA0OTcsNDA1MDIsNDA1MDQsNDA1MDMsNDA1MDUsNDA1MDYsNDA1MTAsNDA1MTMsNDA1MTQsNDA1MTYsNDA1MTgsNDA1MTksNDA1MjAsNDA1MjEsNDA1MjMsNDA1MjQsNDA1MjYsNDA1MjksNDA1MzMsNDA1MzUsNDA1MzgsNDA1MzksNDA1NDAsNDA1NDIsNDA1NDcsNDA1NTAsNDA1NTEsNDA1NTIsNDA1NTMsNDA1NTQsNDA1NTUsNDA1NTYsNDA1NjEsNDA1NTcsNDA1NjMsMzAwOTgsMzAxMDAsMzAxMDIsMzAxMTIsMzAxMDksMzAxMjQsMzAxMTUsMzAxMzEsMzAxMzIsMzAxMzYsMzAxNDgsMzAxMjksMzAxMjgsMzAxNDcsMzAxNDYsMzAxNjYsMzAxNTcsMzAxNzksMzAxODQsMzAxODIsMzAxODAsMzAxODcsMzAxODMsMzAyMTEsMzAxOTMsMzAyMDQsMzAyMDcsMzAyMjQsMzAyMDgsMzAyMTMsMzAyMjAsMzAyMzEsMzAyMTgsMzAyNDUsMzAyMzIsMzAyMjksMzAyMzMsMzkzMDgsMzkzMTAsMzkzMjIsMzkzMjMsMzkzMjQsMzkzMjUsMzkzMjYsMzkzMjcsMzkzMjgsMzkzMjksMzkzMzAsMzkzMzEsMzkzMzIsMzkzMzQsMzkzMzUsMzkzMzcsMzkzMzgsMzkzMzksMzkzNDAsMzkzNDEsMzkzNDIsMzkzNDMsMzkzNDQsMzkzNDUsMzkzNDYsMzkzNDcsMzkzNDgsMzkzNDksMzkzNTAsMzkzNTEsMzkzNTIsMzkzNTMsMzkzNTQsMzkzNTUsMzkzNTYsMzkzNTcsMzkzNTgsMzkzNTksMzkzNjAsMzkzNjEsMzkzNjIsMzkzNjMsMzkzNjQsMzkzNjUsMzkzNjYsMzkzNjcsMzkzNjgsMzkzNjksMzkzNzAsMzkzNzEsMzkzNzIsMzkzNzMsMzkzNzQsMzkzNzUsMzkzNzYsMzkzNzcsMzkzNzgsMzkzNzksMzkzODAsMzkzODEsMzkzODIsMzkzODMsMzkzODQsMzkzODUsMzkzODYsMzkzODcsMzkzODgsMzkzODksMzkzOTAsMzkzOTEsMzkzOTIsMzkzOTMsMzkzOTQsMzkzOTUsMzkzOTYsMzkzOTcsMzkzOTgsMzkzOTksMzk0MDAsMzk0MDEsMzk0MDIsMzk0MDMsMzk0MDQsMzk0MDUsMzk0MDYsMzk0MDcsMzk0MDgsMzk0MDksMzk0MTAsMzk0MTEsMzk0MTIsMzk0MTMsMzk0MTQsMzk0MTUsMzk0MTYsMzk0MTcsMzAyMzUsMzAyNjgsMzAyNDIsMzAyNDAsMzAyNzIsMzAyNTMsMzAyNTYsMzAyNzEsMzAyNjEsMzAyNzUsMzAyNzAsMzAyNTksMzAyODUsMzAzMDIsMzAyOTIsMzAzMDAsMzAyOTQsMzAzMTUsMzAzMTksMzI3MTQsMzE0NjIsMzEzNTIsMzEzNTMsMzEzNjAsMzEzNjYsMzEzNjgsMzEzODEsMzEzOTgsMzEzOTIsMzE0MDQsMzE0MDAsMzE0MDUsMzE0MTEsMzQ5MTYsMzQ5MjEsMzQ5MzAsMzQ5NDEsMzQ5NDMsMzQ5NDYsMzQ5NzgsMzUwMTQsMzQ5OTksMzUwMDQsMzUwMTcsMzUwNDIsMzUwMjIsMzUwNDMsMzUwNDUsMzUwNTcsMzUwOTgsMzUwNjgsMzUwNDgsMzUwNzAsMzUwNTYsMzUxMDUsMzUwOTcsMzUwOTEsMzUwOTksMzUwODIsMzUxMjQsMzUxMTUsMzUxMjYsMzUxMzcsMzUxNzQsMzUxOTUsMzAwOTEsMzI5OTcsMzAzODYsMzAzODgsMzA2ODQsMzI3ODYsMzI3ODgsMzI3OTAsMzI3OTYsMzI4MDAsMzI4MDIsMzI4MDUsMzI4MDYsMzI4MDcsMzI4MDksMzI4MDgsMzI4MTcsMzI3NzksMzI4MjEsMzI4MzUsMzI4MzgsMzI4NDUsMzI4NTAsMzI4NzMsMzI4ODEsMzUyMDMsMzkwMzIsMzkwNDAsMzkwNDMsMzk0MTgsMzk0MTksMzk0MjAsMzk0MjEsMzk0MjIsMzk0MjMsMzk0MjQsMzk0MjUsMzk0MjYsMzk0MjcsMzk0MjgsMzk0MjksMzk0MzAsMzk0MzEsMzk0MzIsMzk0MzMsMzk0MzQsMzk0MzUsMzk0MzYsMzk0MzcsMzk0MzgsMzk0MzksMzk0NDAsMzk0NDEsMzk0NDIsMzk0NDMsMzk0NDQsMzk0NDUsMzk0NDYsMzk0NDcsMzk0NDgsMzk0NDksMzk0NTAsMzk0NTEsMzk0NTIsMzk0NTMsMzk0NTQsMzk0NTUsMzk0NTYsMzk0NTcsMzk0NTgsMzk0NTksMzk0NjAsMzk0NjEsMzk0NjIsMzk0NjMsMzk0NjQsMzk0NjUsMzk0NjYsMzk0NjcsMzk0NjgsMzk0NjksMzk0NzAsMzk0NzEsMzk0NzIsMzk0NzMsMzk0NzQsMzk0NzUsMzk0NzYsMzk0NzcsMzk0NzgsMzk0NzksMzk0ODAsMzk0ODEsMzk0ODIsMzk0ODMsMzk0ODQsMzk0ODUsMzk0ODYsMzk0ODcsMzk0ODgsMzk0ODksMzk0OTAsMzk0OTEsMzk0OTIsMzk0OTMsMzk0OTQsMzk0OTUsMzk0OTYsMzk0OTcsMzk0OTgsMzk0OTksMzk1MDAsMzk1MDEsMzk1MDIsMzk1MDMsMzk1MDQsMzk1MDUsMzk1MDYsMzk1MDcsMzk1MDgsMzk1MDksMzk1MTAsMzk1MTEsMzk1MTIsMzk1MTMsMzkwNDksMzkwNTIsMzkwNTMsMzkwNTUsMzkwNjAsMzkwNjYsMzkwNjcsMzkwNzAsMzkwNzEsMzkwNzMsMzkwNzQsMzkwNzcsMzkwNzgsMzQzODEsMzQzODgsMzQ0MTIsMzQ0MTQsMzQ0MzEsMzQ0MjYsMzQ0MjgsMzQ0MjcsMzQ0NzIsMzQ0NDUsMzQ0NDMsMzQ0NzYsMzQ0NjEsMzQ0NzEsMzQ0NjcsMzQ0NzQsMzQ0NTEsMzQ0NzMsMzQ0ODYsMzQ1MDAsMzQ0ODUsMzQ1MTAsMzQ0ODAsMzQ0OTAsMzQ0ODEsMzQ0NzksMzQ1MDUsMzQ1MTEsMzQ0ODQsMzQ1MzcsMzQ1NDUsMzQ1NDYsMzQ1NDEsMzQ1NDcsMzQ1MTIsMzQ1NzksMzQ1MjYsMzQ1NDgsMzQ1MjcsMzQ1MjAsMzQ1MTMsMzQ1NjMsMzQ1NjcsMzQ1NTIsMzQ1NjgsMzQ1NzAsMzQ1NzMsMzQ1NjksMzQ1OTUsMzQ2MTksMzQ1OTAsMzQ1OTcsMzQ2MDYsMzQ1ODYsMzQ2MjIsMzQ2MzIsMzQ2MTIsMzQ2MDksMzQ2MDEsMzQ2MTUsMzQ2MjMsMzQ2OTAsMzQ1OTQsMzQ2ODUsMzQ2ODYsMzQ2ODMsMzQ2NTYsMzQ2NzIsMzQ2MzYsMzQ2NzAsMzQ2OTksMzQ2NDMsMzQ2NTksMzQ2ODQsMzQ2NjAsMzQ2NDksMzQ2NjEsMzQ3MDcsMzQ3MzUsMzQ3MjgsMzQ3NzAsMzk1MTQsMzk1MTUsMzk1MTYsMzk1MTcsMzk1MTgsMzk1MTksMzk1MjAsMzk1MjEsMzk1MjIsMzk1MjMsMzk1MjQsMzk1MjUsMzk1MjYsMzk1MjcsMzk1MjgsMzk1MjksMzk1MzAsMzk1MzEsMzk1MzgsMzk1NTUsMzk1NjEsMzk1NjUsMzk1NjYsMzk1NzIsMzk1NzMsMzk1NzcsMzk1OTAsMzk1OTMsMzk1OTQsMzk1OTUsMzk1OTYsMzk1OTcsMzk1OTgsMzk1OTksMzk2MDIsMzk2MDMsMzk2MDQsMzk2MDUsMzk2MDksMzk2MTEsMzk2MTMsMzk2MTQsMzk2MTUsMzk2MTksMzk2MjAsMzk2MjIsMzk2MjMsMzk2MjQsMzk2MjUsMzk2MjYsMzk2MjksMzk2MzAsMzk2MzEsMzk2MzIsMzk2MzQsMzk2MzYsMzk2MzcsMzk2MzgsMzk2MzksMzk2NDEsMzk2NDIsMzk2NDMsMzk2NDQsMzk2NDUsMzk2NDYsMzk2NDgsMzk2NTAsMzk2NTEsMzk2NTIsMzk2NTMsMzk2NTUsMzk2NTYsMzk2NTcsMzk2NTgsMzk2NjAsMzk2NjIsMzk2NjQsMzk2NjUsMzk2NjYsMzk2NjcsMzk2NjgsMzk2NjksMzk2NzAsMzk2NzEsMzk2NzIsMzk2NzQsMzk2NzYsMzk2NzcsMzk2NzgsMzk2NzksMzk2ODAsMzk2ODEsMzk2ODIsMzk2ODQsMzk2ODUsMzk2ODYsMzQ3NTgsMzQ2OTYsMzQ2OTMsMzQ3MzMsMzQ3MTEsMzQ2OTEsMzQ3MzEsMzQ3ODksMzQ3MzIsMzQ3NDEsMzQ3MzksMzQ3NjMsMzQ3NzEsMzQ3NDksMzQ3NjksMzQ3NTIsMzQ3NjIsMzQ3NzksMzQ3OTQsMzQ3ODQsMzQ3OTgsMzQ4MzgsMzQ4MzUsMzQ4MTQsMzQ4MjYsMzQ4NDMsMzQ4NDksMzQ4NzMsMzQ4NzYsMzI1NjYsMzI1NzgsMzI1ODAsMzI1ODEsMzMyOTYsMzE0ODIsMzE0ODUsMzE0OTYsMzE0OTEsMzE0OTIsMzE1MDksMzE0OTgsMzE1MzEsMzE1MDMsMzE1NTksMzE1NDQsMzE1MzAsMzE1MTMsMzE1MzQsMzE1MzcsMzE1MjAsMzE1MjUsMzE1MjQsMzE1MzksMzE1NTAsMzE1MTgsMzE1NzYsMzE1NzgsMzE1NTcsMzE2MDUsMzE1NjQsMzE1ODEsMzE1ODQsMzE1OTgsMzE2MTEsMzE1ODYsMzE2MDIsMzE2MDEsMzE2MzIsMzE2NTQsMzE2NTUsMzE2NzIsMzE2NjAsMzE2NDUsMzE2NTYsMzE2MjEsMzE2NTgsMzE2NDQsMzE2NTAsMzE2NTksMzE2NjgsMzE2OTcsMzE2ODEsMzE2OTIsMzE3MDksMzE3MDYsMzE3MTcsMzE3MTgsMzE3MjIsMzE3NTYsMzE3NDIsMzE3NDAsMzE3NTksMzE3NjYsMzE3NTUsMzk2ODcsMzk2ODksMzk2OTAsMzk2OTEsMzk2OTIsMzk2OTMsMzk2OTQsMzk2OTYsMzk2OTcsMzk2OTgsMzk3MDAsMzk3MDEsMzk3MDIsMzk3MDMsMzk3MDQsMzk3MDUsMzk3MDYsMzk3MDcsMzk3MDgsMzk3MDksMzk3MTAsMzk3MTIsMzk3MTMsMzk3MTQsMzk3MTYsMzk3MTcsMzk3MTgsMzk3MTksMzk3MjAsMzk3MjEsMzk3MjIsMzk3MjMsMzk3MjQsMzk3MjUsMzk3MjYsMzk3MjgsMzk3MjksMzk3MzEsMzk3MzIsMzk3MzMsMzk3MzQsMzk3MzUsMzk3MzYsMzk3MzcsMzk3MzgsMzk3NDEsMzk3NDIsMzk3NDMsMzk3NDQsMzk3NTAsMzk3NTQsMzk3NTUsMzk3NTYsMzk3NTgsMzk3NjAsMzk3NjIsMzk3NjMsMzk3NjUsMzk3NjYsMzk3NjcsMzk3NjgsMzk3NjksMzk3NzAsMzk3NzEsMzk3NzIsMzk3NzMsMzk3NzQsMzk3NzUsMzk3NzYsMzk3NzcsMzk3NzgsMzk3NzksMzk3ODAsMzk3ODEsMzk3ODIsMzk3ODMsMzk3ODQsMzk3ODUsMzk3ODYsMzk3ODcsMzk3ODgsMzk3ODksMzk3OTAsMzk3OTEsMzk3OTIsMzk3OTMsMzk3OTQsMzk3OTUsMzk3OTYsMzk3OTcsMzk3OTgsMzk3OTksMzk4MDAsMzk4MDEsMzk4MDIsMzk4MDMsMzE3NzUsMzE3ODYsMzE3ODIsMzE4MDAsMzE4MDksMzE4MDgsMzMyNzgsMzMyODEsMzMyODIsMzMyODQsMzMyNjAsMzQ4ODQsMzMzMTMsMzMzMTQsMzMzMTUsMzMzMjUsMzMzMjcsMzMzMjAsMzMzMjMsMzMzMzYsMzMzMzksMzMzMzEsMzMzMzIsMzMzNDIsMzMzNDgsMzMzNTMsMzMzNTUsMzMzNTksMzMzNzAsMzMzNzUsMzMzODQsMzQ5NDIsMzQ5NDksMzQ5NTIsMzUwMzIsMzUwMzksMzUxNjYsMzI2NjksMzI2NzEsMzI2NzksMzI2ODcsMzI2ODgsMzI2OTAsMzE4NjgsMjU5MjksMzE4ODksMzE5MDEsMzE5MDAsMzE5MDIsMzE5MDYsMzE5MjIsMzE5MzIsMzE5MzMsMzE5MzcsMzE5NDMsMzE5NDgsMzE5NDksMzE5NDQsMzE5NDEsMzE5NTksMzE5NzYsMzMzOTAsMjYyODAsMzI3MDMsMzI3MTgsMzI3MjUsMzI3NDEsMzI3MzcsMzI3NDIsMzI3NDUsMzI3NTAsMzI3NTUsMzE5OTIsMzIxMTksMzIxNjYsMzIxNzQsMzIzMjcsMzI0MTEsNDA2MzIsNDA2MjgsMzYyMTEsMzYyMjgsMzYyNDQsMzYyNDEsMzYyNzMsMzYxOTksMzYyMDUsMzU5MTEsMzU5MTMsMzcxOTQsMzcyMDAsMzcxOTgsMzcxOTksMzcyMjAsMzk4MDQsMzk4MDUsMzk4MDYsMzk4MDcsMzk4MDgsMzk4MDksMzk4MTAsMzk4MTEsMzk4MTIsMzk4MTMsMzk4MTQsMzk4MTUsMzk4MTYsMzk4MTcsMzk4MTgsMzk4MTksMzk4MjAsMzk4MjEsMzk4MjIsMzk4MjMsMzk4MjQsMzk4MjUsMzk4MjYsMzk4MjcsMzk4MjgsMzk4MjksMzk4MzAsMzk4MzEsMzk4MzIsMzk4MzMsMzk4MzQsMzk4MzUsMzk4MzYsMzk4MzcsMzk4MzgsMzk4MzksMzk4NDAsMzk4NDEsMzk4NDIsMzk4NDMsMzk4NDQsMzk4NDUsMzk4NDYsMzk4NDcsMzk4NDgsMzk4NDksMzk4NTAsMzk4NTEsMzk4NTIsMzk4NTMsMzk4NTQsMzk4NTUsMzk4NTYsMzk4NTcsMzk4NTgsMzk4NTksMzk4NjAsMzk4NjEsMzk4NjIsMzk4NjMsMzk4NjQsMzk4NjUsMzk4NjYsMzk4NjcsMzk4NjgsMzk4NjksMzk4NzAsMzk4NzEsMzk4NzIsMzk4NzMsMzk4NzQsMzk4NzUsMzk4NzYsMzk4NzcsMzk4NzgsMzk4NzksMzk4ODAsMzk4ODEsMzk4ODIsMzk4ODMsMzk4ODQsMzk4ODUsMzk4ODYsMzk4ODcsMzk4ODgsMzk4ODksMzk4OTAsMzk4OTEsMzk4OTIsMzk4OTMsMzk4OTQsMzk4OTUsMzk4OTYsMzk4OTcsMzk4OTgsMzk4OTksMzcyMTgsMzcyMTcsMzcyMzIsMzcyMjUsMzcyMzEsMzcyNDUsMzcyNDYsMzcyMzQsMzcyMzYsMzcyNDEsMzcyNjAsMzcyNTMsMzcyNjQsMzcyNjEsMzcyNjUsMzcyODIsMzcyODMsMzcyOTAsMzcyOTMsMzcyOTQsMzcyOTUsMzczMDEsMzczMDAsMzczMDYsMzU5MjUsNDA1NzQsMzYyODAsMzYzMzEsMzYzNTcsMzY0NDEsMzY0NTcsMzYyNzcsMzYyODcsMzYyODQsMzYyODIsMzYyOTIsMzYzMTAsMzYzMTEsMzYzMTQsMzYzMTgsMzYzMDIsMzYzMDMsMzYzMTUsMzYyOTQsMzYzMzIsMzYzNDMsMzYzNDQsMzYzMjMsMzYzNDUsMzYzNDcsMzYzMjQsMzYzNjEsMzYzNDksMzYzNzIsMzYzODEsMzYzODMsMzYzOTYsMzYzOTgsMzYzODcsMzYzOTksMzY0MTAsMzY0MTYsMzY0MDksMzY0MDUsMzY0MTMsMzY0MDEsMzY0MjUsMzY0MTcsMzY0MTgsMzY0MzMsMzY0MzQsMzY0MjYsMzY0NjQsMzY0NzAsMzY0NzYsMzY0NjMsMzY0NjgsMzY0ODUsMzY0OTUsMzY1MDAsMzY0OTYsMzY1MDgsMzY1MTAsMzU5NjAsMzU5NzAsMzU5NzgsMzU5NzMsMzU5OTIsMzU5ODgsMjYwMTEsMzUyODYsMzUyOTQsMzUyOTAsMzUyOTIsMzk5MDAsMzk5MDEsMzk5MDIsMzk5MDMsMzk5MDQsMzk5MDUsMzk5MDYsMzk5MDcsMzk5MDgsMzk5MDksMzk5MTAsMzk5MTEsMzk5MTIsMzk5MTMsMzk5MTQsMzk5MTUsMzk5MTYsMzk5MTcsMzk5MTgsMzk5MTksMzk5MjAsMzk5MjEsMzk5MjIsMzk5MjMsMzk5MjQsMzk5MjUsMzk5MjYsMzk5MjcsMzk5MjgsMzk5MjksMzk5MzAsMzk5MzEsMzk5MzIsMzk5MzMsMzk5MzQsMzk5MzUsMzk5MzYsMzk5MzcsMzk5MzgsMzk5MzksMzk5NDAsMzk5NDEsMzk5NDIsMzk5NDMsMzk5NDQsMzk5NDUsMzk5NDYsMzk5NDcsMzk5NDgsMzk5NDksMzk5NTAsMzk5NTEsMzk5NTIsMzk5NTMsMzk5NTQsMzk5NTUsMzk5NTYsMzk5NTcsMzk5NTgsMzk5NTksMzk5NjAsMzk5NjEsMzk5NjIsMzk5NjMsMzk5NjQsMzk5NjUsMzk5NjYsMzk5NjcsMzk5NjgsMzk5NjksMzk5NzAsMzk5NzEsMzk5NzIsMzk5NzMsMzk5NzQsMzk5NzUsMzk5NzYsMzk5NzcsMzk5NzgsMzk5NzksMzk5ODAsMzk5ODEsMzk5ODIsMzk5ODMsMzk5ODQsMzk5ODUsMzk5ODYsMzk5ODcsMzk5ODgsMzk5ODksMzk5OTAsMzk5OTEsMzk5OTIsMzk5OTMsMzk5OTQsMzk5OTUsMzUzMDEsMzUzMDcsMzUzMTEsMzUzOTAsMzU2MjIsMzg3MzksMzg2MzMsMzg2NDMsMzg2MzksMzg2NjIsMzg2NTcsMzg2NjQsMzg2NzEsMzg2NzAsMzg2OTgsMzg3MDEsMzg3MDQsMzg3MTgsNDA4MzIsNDA4MzUsNDA4MzcsNDA4MzgsNDA4MzksNDA4NDAsNDA4NDEsNDA4NDIsNDA4NDQsNDA3MDIsNDA3MTUsNDA3MTcsMzg1ODUsMzg1ODgsMzg1ODksMzg2MDYsMzg2MTAsMzA2NTUsMzg2MjQsMzc1MTgsMzc1NTAsMzc1NzYsMzc2OTQsMzc3MzgsMzc4MzQsMzc3NzUsMzc5NTAsMzc5OTUsNDAwNjMsNDAwNjYsNDAwNjksNDAwNzAsNDAwNzEsNDAwNzIsMzEyNjcsNDAwNzUsNDAwNzgsNDAwODAsNDAwODEsNDAwODIsNDAwODQsNDAwODUsNDAwOTAsNDAwOTEsNDAwOTQsNDAwOTUsNDAwOTYsNDAwOTcsNDAwOTgsNDAwOTksNDAxMDEsNDAxMDIsNDAxMDMsNDAxMDQsNDAxMDUsNDAxMDcsNDAxMDksNDAxMTAsNDAxMTIsNDAxMTMsNDAxMTQsNDAxMTUsNDAxMTYsNDAxMTcsNDAxMTgsNDAxMTksNDAxMjIsNDAxMjMsNDAxMjQsNDAxMjUsNDAxMzIsNDAxMzMsNDAxMzQsNDAxMzUsNDAxMzgsNDAxMzksMzk5OTYsMzk5OTcsMzk5OTgsMzk5OTksNDAwMDAsNDAwMDEsNDAwMDIsNDAwMDMsNDAwMDQsNDAwMDUsNDAwMDYsNDAwMDcsNDAwMDgsNDAwMDksNDAwMTAsNDAwMTEsNDAwMTIsNDAwMTMsNDAwMTQsNDAwMTUsNDAwMTYsNDAwMTcsNDAwMTgsNDAwMTksNDAwMjAsNDAwMjEsNDAwMjIsNDAwMjMsNDAwMjQsNDAwMjUsNDAwMjYsNDAwMjcsNDAwMjgsNDAwMjksNDAwMzAsNDAwMzEsNDAwMzIsNDAwMzMsNDAwMzQsNDAwMzUsNDAwMzYsNDAwMzcsNDAwMzgsNDAwMzksNDAwNDAsNDAwNDEsNDAwNDIsNDAwNDMsNDAwNDQsNDAwNDUsNDAwNDYsNDAwNDcsNDAwNDgsNDAwNDksNDAwNTAsNDAwNTEsNDAwNTIsNDAwNTMsNDAwNTQsNDAwNTUsNDAwNTYsNDAwNTcsNDAwNTgsNDAwNTksNDAwNjEsNDAwNjIsNDAwNjQsNDAwNjcsNDAwNjgsNDAwNzMsNDAwNzQsNDAwNzYsNDAwNzksNDAwODMsNDAwODYsNDAwODcsNDAwODgsNDAwODksNDAwOTMsNDAxMDYsNDAxMDgsNDAxMTEsNDAxMjEsNDAxMjYsNDAxMjcsNDAxMjgsNDAxMjksNDAxMzAsNDAxMzYsNDAxMzcsNDAxNDUsNDAxNDYsNDAxNTQsNDAxNTUsNDAxNjAsNDAxNjEsNDAxNDAsNDAxNDEsNDAxNDIsNDAxNDMsNDAxNDQsNDAxNDcsNDAxNDgsNDAxNDksNDAxNTEsNDAxNTIsNDAxNTMsNDAxNTYsNDAxNTcsNDAxNTksNDAxNjIsMzg3ODAsMzg3ODksMzg4MDEsMzg4MDIsMzg4MDQsMzg4MzEsMzg4MjcsMzg4MTksMzg4MzQsMzg4MzYsMzk2MDEsMzk2MDAsMzk2MDcsNDA1MzYsMzk2MDYsMzk2MTAsMzk2MTIsMzk2MTcsMzk2MTYsMzk2MjEsMzk2MTgsMzk2MjcsMzk2MjgsMzk2MzMsMzk3NDksMzk3NDcsMzk3NTEsMzk3NTMsMzk3NTIsMzk3NTcsMzk3NjEsMzkxNDQsMzkxODEsMzkyMTQsMzkyNTMsMzkyNTIsMzk2NDcsMzk2NDksMzk2NTQsMzk2NjMsMzk2NTksMzk2NzUsMzk2NjEsMzk2NzMsMzk2ODgsMzk2OTUsMzk2OTksMzk3MTEsMzk3MTUsNDA2MzcsNDA2MzgsMzIzMTUsNDA1NzgsNDA1ODMsNDA1ODQsNDA1ODcsNDA1OTQsMzc4NDYsNDA2MDUsNDA2MDcsNDA2NjcsNDA2NjgsNDA2NjksNDA2NzIsNDA2NzEsNDA2NzQsNDA2ODEsNDA2NzksNDA2NzcsNDA2ODIsNDA2ODcsNDA3MzgsNDA3NDgsNDA3NTEsNDA3NjEsNDA3NTksNDA3NjUsNDA3NjYsNDA3NzIsNDAxNjMsNDAxNjQsNDAxNjUsNDAxNjYsNDAxNjcsNDAxNjgsNDAxNjksNDAxNzAsNDAxNzEsNDAxNzIsNDAxNzMsNDAxNzQsNDAxNzUsNDAxNzYsNDAxNzcsNDAxNzgsNDAxNzksNDAxODAsNDAxODEsNDAxODIsNDAxODMsNDAxODQsNDAxODUsNDAxODYsNDAxODcsNDAxODgsNDAxODksNDAxOTAsNDAxOTEsNDAxOTIsNDAxOTMsNDAxOTQsNDAxOTUsNDAxOTYsNDAxOTcsNDAxOTgsNDAxOTksNDAyMDAsNDAyMDEsNDAyMDIsNDAyMDMsNDAyMDQsNDAyMDUsNDAyMDYsNDAyMDcsNDAyMDgsNDAyMDksNDAyMTAsNDAyMTEsNDAyMTIsNDAyMTMsNDAyMTQsNDAyMTUsNDAyMTYsNDAyMTcsNDAyMTgsNDAyMTksNDAyMjAsNDAyMjEsNDAyMjIsNDAyMjMsNDAyMjQsNDAyMjUsNDAyMjYsNDAyMjcsNDAyMjgsNDAyMjksNDAyMzAsNDAyMzEsNDAyMzIsNDAyMzMsNDAyMzQsNDAyMzUsNDAyMzYsNDAyMzcsNDAyMzgsNDAyMzksNDAyNDAsNDAyNDEsNDAyNDIsNDAyNDMsNDAyNDQsNDAyNDUsNDAyNDYsNDAyNDcsNDAyNDgsNDAyNDksNDAyNTAsNDAyNTEsNDAyNTIsNDAyNTMsNDAyNTQsNDAyNTUsNDAyNTYsNDAyNTcsNDAyNTgsNTc5MDgsNTc5MDksNTc5MTAsNTc5MTEsNTc5MTIsNTc5MTMsNTc5MTQsNTc5MTUsNTc5MTYsNTc5MTcsNTc5MTgsNTc5MTksNTc5MjAsNTc5MjEsNTc5MjIsNTc5MjMsNTc5MjQsNTc5MjUsNTc5MjYsNTc5MjcsNTc5MjgsNTc5MjksNTc5MzAsNTc5MzEsNTc5MzIsNTc5MzMsNTc5MzQsNTc5MzUsNTc5MzYsNTc5MzcsNTc5MzgsNTc5MzksNTc5NDAsNTc5NDEsNTc5NDIsNTc5NDMsNTc5NDQsNTc5NDUsNTc5NDYsNTc5NDcsNTc5NDgsNTc5NDksNTc5NTAsNTc5NTEsNTc5NTIsNTc5NTMsNTc5NTQsNTc5NTUsNTc5NTYsNTc5NTcsNTc5NTgsNTc5NTksNTc5NjAsNTc5NjEsNTc5NjIsNTc5NjMsNTc5NjQsNTc5NjUsNTc5NjYsNTc5NjcsNTc5NjgsNTc5NjksNTc5NzAsNTc5NzEsNTc5NzIsNTc5NzMsNTc5NzQsNTc5NzUsNTc5NzYsNTc5NzcsNTc5NzgsNTc5NzksNTc5ODAsNTc5ODEsNTc5ODIsNTc5ODMsNTc5ODQsNTc5ODUsNTc5ODYsNTc5ODcsNTc5ODgsNTc5ODksNTc5OTAsNTc5OTEsNTc5OTIsNTc5OTMsNTc5OTQsNTc5OTUsNTc5OTYsNTc5OTcsNTc5OTgsNTc5OTksNTgwMDAsNTgwMDEsNDAyNTksNDAyNjAsNDAyNjEsNDAyNjIsNDAyNjMsNDAyNjQsNDAyNjUsNDAyNjYsNDAyNjcsNDAyNjgsNDAyNjksNDAyNzAsNDAyNzEsNDAyNzIsNDAyNzMsNDAyNzQsNDAyNzUsNDAyNzYsNDAyNzcsNDAyNzgsNDAyNzksNDAyODAsNDAyODEsNDAyODIsNDAyODMsNDAyODQsNDAyODUsNDAyODYsNDAyODcsNDAyODgsNDAyODksNDAyOTAsNDAyOTEsNDAyOTIsNDAyOTMsNDAyOTQsNDAyOTUsNDAyOTYsNDAyOTcsNDAyOTgsNDAyOTksNDAzMDAsNDAzMDEsNDAzMDIsNDAzMDMsNDAzMDQsNDAzMDUsNDAzMDYsNDAzMDcsNDAzMDgsNDAzMDksNDAzMTAsNDAzMTEsNDAzMTIsNDAzMTMsNDAzMTQsNDAzMTUsNDAzMTYsNDAzMTcsNDAzMTgsNDAzMTksNDAzMjAsNDAzMjEsNDAzMjIsNDAzMjMsNDAzMjQsNDAzMjUsNDAzMjYsNDAzMjcsNDAzMjgsNDAzMjksNDAzMzAsNDAzMzEsNDAzMzIsNDAzMzMsNDAzMzQsNDAzMzUsNDAzMzYsNDAzMzcsNDAzMzgsNDAzMzksNDAzNDAsNDAzNDEsNDAzNDIsNDAzNDMsNDAzNDQsNDAzNDUsNDAzNDYsNDAzNDcsNDAzNDgsNDAzNDksNDAzNTAsNDAzNTEsNDAzNTIsNDAzNTMsNDAzNTQsNTgwMDIsNTgwMDMsNTgwMDQsNTgwMDUsNTgwMDYsNTgwMDcsNTgwMDgsNTgwMDksNTgwMTAsNTgwMTEsNTgwMTIsNTgwMTMsNTgwMTQsNTgwMTUsNTgwMTYsNTgwMTcsNTgwMTgsNTgwMTksNTgwMjAsNTgwMjEsNTgwMjIsNTgwMjMsNTgwMjQsNTgwMjUsNTgwMjYsNTgwMjcsNTgwMjgsNTgwMjksNTgwMzAsNTgwMzEsNTgwMzIsNTgwMzMsNTgwMzQsNTgwMzUsNTgwMzYsNTgwMzcsNTgwMzgsNTgwMzksNTgwNDAsNTgwNDEsNTgwNDIsNTgwNDMsNTgwNDQsNTgwNDUsNTgwNDYsNTgwNDcsNTgwNDgsNTgwNDksNTgwNTAsNTgwNTEsNTgwNTIsNTgwNTMsNTgwNTQsNTgwNTUsNTgwNTYsNTgwNTcsNTgwNTgsNTgwNTksNTgwNjAsNTgwNjEsNTgwNjIsNTgwNjMsNTgwNjQsNTgwNjUsNTgwNjYsNTgwNjcsNTgwNjgsNTgwNjksNTgwNzAsNTgwNzEsNTgwNzIsNTgwNzMsNTgwNzQsNTgwNzUsNTgwNzYsNTgwNzcsNTgwNzgsNTgwNzksNTgwODAsNTgwODEsNTgwODIsNTgwODMsNTgwODQsNTgwODUsNTgwODYsNTgwODcsNTgwODgsNTgwODksNTgwOTAsNTgwOTEsNTgwOTIsNTgwOTMsNTgwOTQsNTgwOTUsNDAzNTUsNDAzNTYsNDAzNTcsNDAzNTgsNDAzNTksNDAzNjAsNDAzNjEsNDAzNjIsNDAzNjMsNDAzNjQsNDAzNjUsNDAzNjYsNDAzNjcsNDAzNjgsNDAzNjksNDAzNzAsNDAzNzEsNDAzNzIsNDAzNzMsNDAzNzQsNDAzNzUsNDAzNzYsNDAzNzcsNDAzNzgsNDAzNzksNDAzODAsNDAzODEsNDAzODIsNDAzODMsNDAzODQsNDAzODUsNDAzODYsNDAzODcsNDAzODgsNDAzODksNDAzOTAsNDAzOTEsNDAzOTIsNDAzOTMsNDAzOTQsNDAzOTUsNDAzOTYsNDAzOTcsNDAzOTgsNDAzOTksNDA0MDAsNDA0MDEsNDA0MDIsNDA0MDMsNDA0MDQsNDA0MDUsNDA0MDYsNDA0MDcsNDA0MDgsNDA0MDksNDA0MTAsNDA0MTEsNDA0MTIsNDA0MTMsNDA0MTQsNDA0MTUsNDA0MTYsNDA0MTcsNDA0MTgsNDA0MTksNDA0MjAsNDA0MjEsNDA0MjIsNDA0MjMsNDA0MjQsNDA0MjUsNDA0MjYsNDA0MjcsNDA0MjgsNDA0MjksNDA0MzAsNDA0MzEsNDA0MzIsNDA0MzMsNDA0MzQsNDA0MzUsNDA0MzYsNDA0MzcsNDA0MzgsNDA0MzksNDA0NDAsNDA0NDEsNDA0NDIsNDA0NDMsNDA0NDQsNDA0NDUsNDA0NDYsNDA0NDcsNDA0NDgsNDA0NDksNDA0NTAsNTgwOTYsNTgwOTcsNTgwOTgsNTgwOTksNTgxMDAsNTgxMDEsNTgxMDIsNTgxMDMsNTgxMDQsNTgxMDUsNTgxMDYsNTgxMDcsNTgxMDgsNTgxMDksNTgxMTAsNTgxMTEsNTgxMTIsNTgxMTMsNTgxMTQsNTgxMTUsNTgxMTYsNTgxMTcsNTgxMTgsNTgxMTksNTgxMjAsNTgxMjEsNTgxMjIsNTgxMjMsNTgxMjQsNTgxMjUsNTgxMjYsNTgxMjcsNTgxMjgsNTgxMjksNTgxMzAsNTgxMzEsNTgxMzIsNTgxMzMsNTgxMzQsNTgxMzUsNTgxMzYsNTgxMzcsNTgxMzgsNTgxMzksNTgxNDAsNTgxNDEsNTgxNDIsNTgxNDMsNTgxNDQsNTgxNDUsNTgxNDYsNTgxNDcsNTgxNDgsNTgxNDksNTgxNTAsNTgxNTEsNTgxNTIsNTgxNTMsNTgxNTQsNTgxNTUsNTgxNTYsNTgxNTcsNTgxNTgsNTgxNTksNTgxNjAsNTgxNjEsNTgxNjIsNTgxNjMsNTgxNjQsNTgxNjUsNTgxNjYsNTgxNjcsNTgxNjgsNTgxNjksNTgxNzAsNTgxNzEsNTgxNzIsNTgxNzMsNTgxNzQsNTgxNzUsNTgxNzYsNTgxNzcsNTgxNzgsNTgxNzksNTgxODAsNTgxODEsNTgxODIsNTgxODMsNTgxODQsNTgxODUsNTgxODYsNTgxODcsNTgxODgsNTgxODksNDA0NTEsNDA0NTIsNDA0NTMsNDA0NTQsNDA0NTUsNDA0NTYsNDA0NTcsNDA0NTgsNDA0NTksNDA0NjAsNDA0NjEsNDA0NjIsNDA0NjMsNDA0NjQsNDA0NjUsNDA0NjYsNDA0NjcsNDA0NjgsNDA0NjksNDA0NzAsNDA0NzEsNDA0NzIsNDA0NzMsNDA0NzQsNDA0NzUsNDA0NzYsNDA0NzcsNDA0NzgsNDA0ODQsNDA0ODcsNDA0OTQsNDA0OTYsNDA1MDAsNDA1MDcsNDA1MDgsNDA1MTIsNDA1MjUsNDA1MjgsNDA1MzAsNDA1MzEsNDA1MzIsNDA1MzQsNDA1MzcsNDA1NDEsNDA1NDMsNDA1NDQsNDA1NDUsNDA1NDYsNDA1NDksNDA1NTgsNDA1NTksNDA1NjIsNDA1NjQsNDA1NjUsNDA1NjYsNDA1NjcsNDA1NjgsNDA1NjksNDA1NzAsNDA1NzEsNDA1NzIsNDA1NzMsNDA1NzYsNDA1NzcsNDA1NzksNDA1ODAsNDA1ODEsNDA1ODIsNDA1ODUsNDA1ODYsNDA1ODgsNDA1ODksNDA1OTAsNDA1OTEsNDA1OTIsNDA1OTMsNDA1OTYsNDA1OTcsNDA1OTgsNDA1OTksNDA2MDAsNDA2MDEsNDA2MDIsNDA2MDMsNDA2MDQsNDA2MDYsNDA2MDgsNDA2MDksNDA2MTAsNDA2MTEsNDA2MTIsNDA2MTMsNDA2MTUsNDA2MTYsNDA2MTcsNDA2MTgsNTgxOTAsNTgxOTEsNTgxOTIsNTgxOTMsNTgxOTQsNTgxOTUsNTgxOTYsNTgxOTcsNTgxOTgsNTgxOTksNTgyMDAsNTgyMDEsNTgyMDIsNTgyMDMsNTgyMDQsNTgyMDUsNTgyMDYsNTgyMDcsNTgyMDgsNTgyMDksNTgyMTAsNTgyMTEsNTgyMTIsNTgyMTMsNTgyMTQsNTgyMTUsNTgyMTYsNTgyMTcsNTgyMTgsNTgyMTksNTgyMjAsNTgyMjEsNTgyMjIsNTgyMjMsNTgyMjQsNTgyMjUsNTgyMjYsNTgyMjcsNTgyMjgsNTgyMjksNTgyMzAsNTgyMzEsNTgyMzIsNTgyMzMsNTgyMzQsNTgyMzUsNTgyMzYsNTgyMzcsNTgyMzgsNTgyMzksNTgyNDAsNTgyNDEsNTgyNDIsNTgyNDMsNTgyNDQsNTgyNDUsNTgyNDYsNTgyNDcsNTgyNDgsNTgyNDksNTgyNTAsNTgyNTEsNTgyNTIsNTgyNTMsNTgyNTQsNTgyNTUsNTgyNTYsNTgyNTcsNTgyNTgsNTgyNTksNTgyNjAsNTgyNjEsNTgyNjIsNTgyNjMsNTgyNjQsNTgyNjUsNTgyNjYsNTgyNjcsNTgyNjgsNTgyNjksNTgyNzAsNTgyNzEsNTgyNzIsNTgyNzMsNTgyNzQsNTgyNzUsNTgyNzYsNTgyNzcsNTgyNzgsNTgyNzksNTgyODAsNTgyODEsNTgyODIsNTgyODMsNDA2MTksNDA2MjAsNDA2MjEsNDA2MjIsNDA2MjMsNDA2MjQsNDA2MjUsNDA2MjYsNDA2MjcsNDA2MjksNDA2MzAsNDA2MzEsNDA2MzMsNDA2MzQsNDA2MzYsNDA2MzksNDA2NDAsNDA2NDEsNDA2NDIsNDA2NDMsNDA2NDUsNDA2NDYsNDA2NDcsNDA2NDgsNDA2NTAsNDA2NTEsNDA2NTIsNDA2NTYsNDA2NTgsNDA2NTksNDA2NjEsNDA2NjIsNDA2NjMsNDA2NjUsNDA2NjYsNDA2NzAsNDA2NzMsNDA2NzUsNDA2NzYsNDA2NzgsNDA2ODAsNDA2ODMsNDA2ODQsNDA2ODUsNDA2ODYsNDA2ODgsNDA2ODksNDA2OTAsNDA2OTEsNDA2OTIsNDA2OTMsNDA2OTQsNDA2OTUsNDA2OTYsNDA2OTgsNDA3MDEsNDA3MDMsNDA3MDQsNDA3MDUsNDA3MDYsNDA3MDcsNDA3MDgsNDA3MDksNDA3MTAsNDA3MTEsNDA3MTIsNDA3MTMsNDA3MTQsNDA3MTYsNDA3MTksNDA3MjEsNDA3MjIsNDA3MjQsNDA3MjUsNDA3MjYsNDA3MjgsNDA3MzAsNDA3MzEsNDA3MzIsNDA3MzMsNDA3MzQsNDA3MzUsNDA3MzcsNDA3MzksNDA3NDAsNDA3NDEsNDA3NDIsNDA3NDMsNDA3NDQsNDA3NDUsNDA3NDYsNDA3NDcsNDA3NDksNDA3NTAsNDA3NTIsNDA3NTMsNTgyODQsNTgyODUsNTgyODYsNTgyODcsNTgyODgsNTgyODksNTgyOTAsNTgyOTEsNTgyOTIsNTgyOTMsNTgyOTQsNTgyOTUsNTgyOTYsNTgyOTcsNTgyOTgsNTgyOTksNTgzMDAsNTgzMDEsNTgzMDIsNTgzMDMsNTgzMDQsNTgzMDUsNTgzMDYsNTgzMDcsNTgzMDgsNTgzMDksNTgzMTAsNTgzMTEsNTgzMTIsNTgzMTMsNTgzMTQsNTgzMTUsNTgzMTYsNTgzMTcsNTgzMTgsNTgzMTksNTgzMjAsNTgzMjEsNTgzMjIsNTgzMjMsNTgzMjQsNTgzMjUsNTgzMjYsNTgzMjcsNTgzMjgsNTgzMjksNTgzMzAsNTgzMzEsNTgzMzIsNTgzMzMsNTgzMzQsNTgzMzUsNTgzMzYsNTgzMzcsNTgzMzgsNTgzMzksNTgzNDAsNTgzNDEsNTgzNDIsNTgzNDMsNTgzNDQsNTgzNDUsNTgzNDYsNTgzNDcsNTgzNDgsNTgzNDksNTgzNTAsNTgzNTEsNTgzNTIsNTgzNTMsNTgzNTQsNTgzNTUsNTgzNTYsNTgzNTcsNTgzNTgsNTgzNTksNTgzNjAsNTgzNjEsNTgzNjIsNTgzNjMsNTgzNjQsNTgzNjUsNTgzNjYsNTgzNjcsNTgzNjgsNTgzNjksNTgzNzAsNTgzNzEsNTgzNzIsNTgzNzMsNTgzNzQsNTgzNzUsNTgzNzYsNTgzNzcsNDA3NTQsNDA3NTUsNDA3NTYsNDA3NTcsNDA3NTgsNDA3NjAsNDA3NjIsNDA3NjQsNDA3NjcsNDA3NjgsNDA3NjksNDA3NzAsNDA3NzEsNDA3NzMsNDA3NzQsNDA3NzUsNDA3NzYsNDA3NzcsNDA3NzgsNDA3NzksNDA3ODAsNDA3ODEsNDA3ODIsNDA3ODMsNDA3ODYsNDA3ODcsNDA3ODgsNDA3ODksNDA3OTAsNDA3OTEsNDA3OTIsNDA3OTMsNDA3OTQsNDA3OTUsNDA3OTYsNDA3OTcsNDA3OTgsNDA3OTksNDA4MDAsNDA4MDEsNDA4MDIsNDA4MDMsNDA4MDQsNDA4MDUsNDA4MDYsNDA4MDcsNDA4MDgsNDA4MDksNDA4MTAsNDA4MTEsNDA4MTIsNDA4MTMsNDA4MTQsNDA4MTUsNDA4MTYsNDA4MTcsNDA4MTgsNDA4MTksNDA4MjAsNDA4MjEsNDA4MjIsNDA4MjMsNDA4MjQsNDA4MjUsNDA4MjYsNDA4MjcsNDA4MjgsNDA4MjksNDA4MzAsNDA4MzMsNDA4MzQsNDA4NDUsNDA4NDYsNDA4NDcsNDA4NDgsNDA4NDksNDA4NTAsNDA4NTEsNDA4NTIsNDA4NTMsNDA4NTQsNDA4NTUsNDA4NTYsNDA4NjAsNDA4NjEsNDA4NjIsNDA4NjUsNDA4NjYsNDA4NjcsNDA4NjgsNDA4NjksNjM3ODgsNjM4NjUsNjM4OTMsNjM5NzUsNjM5ODUsNTgzNzgsNTgzNzksNTgzODAsNTgzODEsNTgzODIsNTgzODMsNTgzODQsNTgzODUsNTgzODYsNTgzODcsNTgzODgsNTgzODksNTgzOTAsNTgzOTEsNTgzOTIsNTgzOTMsNTgzOTQsNTgzOTUsNTgzOTYsNTgzOTcsNTgzOTgsNTgzOTksNTg0MDAsNTg0MDEsNTg0MDIsNTg0MDMsNTg0MDQsNTg0MDUsNTg0MDYsNTg0MDcsNTg0MDgsNTg0MDksNTg0MTAsNTg0MTEsNTg0MTIsNTg0MTMsNTg0MTQsNTg0MTUsNTg0MTYsNTg0MTcsNTg0MTgsNTg0MTksNTg0MjAsNTg0MjEsNTg0MjIsNTg0MjMsNTg0MjQsNTg0MjUsNTg0MjYsNTg0MjcsNTg0MjgsNTg0MjksNTg0MzAsNTg0MzEsNTg0MzIsNTg0MzMsNTg0MzQsNTg0MzUsNTg0MzYsNTg0MzcsNTg0MzgsNTg0MzksNTg0NDAsNTg0NDEsNTg0NDIsNTg0NDMsNTg0NDQsNTg0NDUsNTg0NDYsNTg0NDcsNTg0NDgsNTg0NDksNTg0NTAsNTg0NTEsNTg0NTIsNTg0NTMsNTg0NTQsNTg0NTUsNTg0NTYsNTg0NTcsNTg0NTgsNTg0NTksNTg0NjAsNTg0NjEsNTg0NjIsNTg0NjMsNTg0NjQsNTg0NjUsNTg0NjYsNTg0NjcsNTg0NjgsNTg0NjksNTg0NzAsNTg0NzEsNjQwMTIsNjQwMTMsNjQwMTQsNjQwMTUsNjQwMTcsNjQwMTksNjQwMjAsNjQwMjQsNjQwMzEsNjQwMzIsNjQwMzMsNjQwMzUsNjQwMzYsNjQwMzksNjQwNDAsNjQwNDEsMTE5MDUsNTk0MTQsNTk0MTUsNTk0MTYsMTE5MDgsMTM0MjcsMTMzODMsMTE5MTIsMTE5MTUsNTk0MjIsMTM3MjYsMTM4NTAsMTM4MzgsMTE5MTYsMTE5MjcsMTQ3MDIsMTQ2MTYsNTk0MzAsMTQ3OTksMTQ4MTUsMTQ5NjMsMTQ4MDAsNTk0MzUsNTk0MzYsMTUxODIsMTU0NzAsMTU1ODQsMTE5NDMsNTk0NDEsNTk0NDIsMTE5NDYsMTY0NzAsMTY3MzUsMTE5NTAsMTcyMDcsMTE5NTUsMTE5NTgsMTE5NTksNTk0NTEsMTczMjksMTczMjQsMTE5NjMsMTczNzMsMTc2MjIsMTgwMTcsMTc5OTYsNTk0NTksMTgyMTEsMTgyMTcsMTgzMDAsMTgzMTcsMTE5NzgsMTg3NTksMTg4MTAsMTg4MTMsMTg4MTgsMTg4MTksMTg4MjEsMTg4MjIsMTg4NDcsMTg4NDMsMTg4NzEsMTg4NzAsNTk0NzYsNTk0NzcsMTk2MTksMTk2MTUsMTk2MTYsMTk2MTcsMTk1NzUsMTk2MTgsMTk3MzEsMTk3MzIsMTk3MzMsMTk3MzQsMTk3MzUsMTk3MzYsMTk3MzcsMTk4ODYsNTk0OTIsNTg0NzIsNTg0NzMsNTg0NzQsNTg0NzUsNTg0NzYsNTg0NzcsNTg0NzgsNTg0NzksNTg0ODAsNTg0ODEsNTg0ODIsNTg0ODMsNTg0ODQsNTg0ODUsNTg0ODYsNTg0ODcsNTg0ODgsNTg0ODksNTg0OTAsNTg0OTEsNTg0OTIsNTg0OTMsNTg0OTQsNTg0OTUsNTg0OTYsNTg0OTcsNTg0OTgsNTg0OTksNTg1MDAsNTg1MDEsNTg1MDIsNTg1MDMsNTg1MDQsNTg1MDUsNTg1MDYsNTg1MDcsNTg1MDgsNTg1MDksNTg1MTAsNTg1MTEsNTg1MTIsNTg1MTMsNTg1MTQsNTg1MTUsNTg1MTYsNTg1MTcsNTg1MTgsNTg1MTksNTg1MjAsNTg1MjEsNTg1MjIsNTg1MjMsNTg1MjQsNTg1MjUsNTg1MjYsNTg1MjcsNTg1MjgsNTg1MjksNTg1MzAsNTg1MzEsNTg1MzIsNTg1MzMsNTg1MzQsNTg1MzUsNTg1MzYsNTg1MzcsNTg1MzgsNTg1MzksNTg1NDAsNTg1NDEsNTg1NDIsNTg1NDMsNTg1NDQsNTg1NDUsNTg1NDYsNTg1NDcsNTg1NDgsNTg1NDksNTg1NTAsNTg1NTEsNTg1NTIsNTg1NTMsNTg1NTQsNTg1NTUsNTg1NTYsNTg1NTcsNTg1NTgsNTg1NTksNTg1NjAsNTg1NjEsNTg1NjIsNTg1NjMsNTg1NjQsNTg1NjVdLFxuICBcImdiMTgwMzAtcmFuZ2VzXCI6W1swLDEyOF0sWzM2LDE2NV0sWzM4LDE2OV0sWzQ1LDE3OF0sWzUwLDE4NF0sWzgxLDIxNl0sWzg5LDIyNl0sWzk1LDIzNV0sWzk2LDIzOF0sWzEwMCwyNDRdLFsxMDMsMjQ4XSxbMTA0LDI1MV0sWzEwNSwyNTNdLFsxMDksMjU4XSxbMTI2LDI3Nl0sWzEzMywyODRdLFsxNDgsMzAwXSxbMTcyLDMyNV0sWzE3NSwzMjldLFsxNzksMzM0XSxbMjA4LDM2NF0sWzMwNiw0NjNdLFszMDcsNDY1XSxbMzA4LDQ2N10sWzMwOSw0NjldLFszMTAsNDcxXSxbMzExLDQ3M10sWzMxMiw0NzVdLFszMTMsNDc3XSxbMzQxLDUwNl0sWzQyOCw1OTRdLFs0NDMsNjEwXSxbNTQ0LDcxMl0sWzU0NSw3MTZdLFs1NTgsNzMwXSxbNzQxLDkzMF0sWzc0Miw5MzhdLFs3NDksOTYyXSxbNzUwLDk3MF0sWzgwNSwxMDI2XSxbODE5LDExMDRdLFs4MjAsMTEwNl0sWzc5MjIsODIwOV0sWzc5MjQsODIxNV0sWzc5MjUsODIxOF0sWzc5MjcsODIyMl0sWzc5MzQsODIzMV0sWzc5NDMsODI0MV0sWzc5NDQsODI0NF0sWzc5NDUsODI0Nl0sWzc5NTAsODI1Ml0sWzgwNjIsODM2NV0sWzgxNDgsODQ1Ml0sWzgxNDksODQ1NF0sWzgxNTIsODQ1OF0sWzgxNjQsODQ3MV0sWzgxNzQsODQ4Ml0sWzgyMzYsODU1Nl0sWzgyNDAsODU3MF0sWzgyNjIsODU5Nl0sWzgyNjQsODYwMl0sWzgzNzQsODcxM10sWzgzODAsODcyMF0sWzgzODEsODcyMl0sWzgzODQsODcyNl0sWzgzODgsODczMV0sWzgzOTAsODczN10sWzgzOTIsODc0MF0sWzgzOTMsODc0Ml0sWzgzOTQsODc0OF0sWzgzOTYsODc1MV0sWzg0MDEsODc2MF0sWzg0MDYsODc2Nl0sWzg0MTYsODc3N10sWzg0MTksODc4MV0sWzg0MjQsODc4N10sWzg0MzcsODgwMl0sWzg0MzksODgwOF0sWzg0NDUsODgxNl0sWzg0ODIsODg1NF0sWzg0ODUsODg1OF0sWzg0OTYsODg3MF0sWzg1MjEsODg5Nl0sWzg2MDMsODk3OV0sWzg5MzYsOTMyMl0sWzg5NDYsOTM3Ml0sWzkwNDYsOTU0OF0sWzkwNTAsOTU4OF0sWzkwNjMsOTYxNl0sWzkwNjYsOTYyMl0sWzkwNzYsOTYzNF0sWzkwOTIsOTY1Ml0sWzkxMDAsOTY2Ml0sWzkxMDgsOTY3Ml0sWzkxMTEsOTY3Nl0sWzkxMTMsOTY4MF0sWzkxMzEsOTcwMl0sWzkxNjIsOTczNV0sWzkxNjQsOTczOF0sWzkyMTgsOTc5M10sWzkyMTksOTc5NV0sWzExMzI5LDExOTA2XSxbMTEzMzEsMTE5MDldLFsxMTMzNCwxMTkxM10sWzExMzM2LDExOTE3XSxbMTEzNDYsMTE5MjhdLFsxMTM2MSwxMTk0NF0sWzExMzYzLDExOTQ3XSxbMTEzNjYsMTE5NTFdLFsxMTM3MCwxMTk1Nl0sWzExMzcyLDExOTYwXSxbMTEzNzUsMTE5NjRdLFsxMTM4OSwxMTk3OV0sWzExNjgyLDEyMjg0XSxbMTE2ODYsMTIyOTJdLFsxMTY4NywxMjMxMl0sWzExNjkyLDEyMzE5XSxbMTE2OTQsMTIzMzBdLFsxMTcxNCwxMjM1MV0sWzExNzE2LDEyNDM2XSxbMTE3MjMsMTI0NDddLFsxMTcyNSwxMjUzNV0sWzExNzMwLDEyNTQzXSxbMTE3MzYsMTI1ODZdLFsxMTk4MiwxMjg0Ml0sWzExOTg5LDEyODUwXSxbMTIxMDIsMTI5NjRdLFsxMjMzNiwxMzIwMF0sWzEyMzQ4LDEzMjE1XSxbMTIzNTAsMTMyMThdLFsxMjM4NCwxMzI1M10sWzEyMzkzLDEzMjYzXSxbMTIzOTUsMTMyNjddLFsxMjM5NywxMzI3MF0sWzEyNTEwLDEzMzg0XSxbMTI1NTMsMTM0MjhdLFsxMjg1MSwxMzcyN10sWzEyOTYyLDEzODM5XSxbMTI5NzMsMTM4NTFdLFsxMzczOCwxNDYxN10sWzEzODIzLDE0NzAzXSxbMTM5MTksMTQ4MDFdLFsxMzkzMywxNDgxNl0sWzE0MDgwLDE0OTY0XSxbMTQyOTgsMTUxODNdLFsxNDU4NSwxNTQ3MV0sWzE0Njk4LDE1NTg1XSxbMTU1ODMsMTY0NzFdLFsxNTg0NywxNjczNl0sWzE2MzE4LDE3MjA4XSxbMTY0MzQsMTczMjVdLFsxNjQzOCwxNzMzMF0sWzE2NDgxLDE3Mzc0XSxbMTY3MjksMTc2MjNdLFsxNzEwMiwxNzk5N10sWzE3MTIyLDE4MDE4XSxbMTczMTUsMTgyMTJdLFsxNzMyMCwxODIxOF0sWzE3NDAyLDE4MzAxXSxbMTc0MTgsMTgzMThdLFsxNzg1OSwxODc2MF0sWzE3OTA5LDE4ODExXSxbMTc5MTEsMTg4MTRdLFsxNzkxNSwxODgyMF0sWzE3OTE2LDE4ODIzXSxbMTc5MzYsMTg4NDRdLFsxNzkzOSwxODg0OF0sWzE3OTYxLDE4ODcyXSxbMTg2NjQsMTk1NzZdLFsxODcwMywxOTYyMF0sWzE4ODE0LDE5NzM4XSxbMTg5NjIsMTk4ODddLFsxOTA0Myw0MDg3MF0sWzMzNDY5LDU5MjQ0XSxbMzM0NzAsNTkzMzZdLFszMzQ3MSw1OTM2N10sWzMzNDg0LDU5NDEzXSxbMzM0ODUsNTk0MTddLFszMzQ5MCw1OTQyM10sWzMzNDk3LDU5NDMxXSxbMzM1MDEsNTk0MzddLFszMzUwNSw1OTQ0M10sWzMzNTEzLDU5NDUyXSxbMzM1MjAsNTk0NjBdLFszMzUzNiw1OTQ3OF0sWzMzNTUwLDU5NDkzXSxbMzc4NDUsNjM3ODldLFszNzkyMSw2Mzg2Nl0sWzM3OTQ4LDYzODk0XSxbMzgwMjksNjM5NzZdLFszODAzOCw2Mzk4Nl0sWzM4MDY0LDY0MDE2XSxbMzgwNjUsNjQwMThdLFszODA2Niw2NDAyMV0sWzM4MDY5LDY0MDI1XSxbMzgwNzUsNjQwMzRdLFszODA3Niw2NDAzN10sWzM4MDc4LDY0MDQyXSxbMzkxMDgsNjUwNzRdLFszOTEwOSw2NTA5M10sWzM5MTEzLDY1MTA3XSxbMzkxMTQsNjUxMTJdLFszOTExNSw2NTEyN10sWzM5MTE2LDY1MTMyXSxbMzkyNjUsNjUzNzVdLFszOTM5NCw2NTUxMF0sWzE4OTAwMCw2NTUzNl1dLFxuICBcImppczAyMDhcIjpbMTIyODgsMTIyODksMTIyOTAsNjUyOTIsNjUyOTQsMTI1MzksNjUzMDYsNjUzMDcsNjUzMTEsNjUyODEsMTI0NDMsMTI0NDQsMTgwLDY1MzQ0LDE2OCw2NTM0Miw2NTUwNyw2NTM0MywxMjU0MSwxMjU0MiwxMjQ0NSwxMjQ0NiwxMjI5MSwyMDE4OSwxMjI5MywxMjI5NCwxMjI5NSwxMjU0MCw4MjEzLDgyMDgsNjUyOTUsNjUzNDAsNjUzNzQsODc0MSw2NTM3Miw4MjMwLDgyMjksODIxNiw4MjE3LDgyMjAsODIyMSw2NTI4OCw2NTI4OSwxMjMwOCwxMjMwOSw2NTMzOSw2NTM0MSw2NTM3MSw2NTM3MywxMjI5NiwxMjI5NywxMjI5OCwxMjI5OSwxMjMwMCwxMjMwMSwxMjMwMiwxMjMwMywxMjMwNCwxMjMwNSw2NTI5MSw2NTI5MywxNzcsMjE1LDI0Nyw2NTMwOSw4ODAwLDY1MzA4LDY1MzEwLDg4MDYsODgwNyw4NzM0LDg3NTYsOTc5NCw5NzkyLDE3Niw4MjQyLDgyNDMsODQ1MSw2NTUwOSw2NTI4NCw2NTUwNCw2NTUwNSw2NTI4NSw2NTI4Myw2NTI4Niw2NTI5MCw2NTMxMiwxNjcsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDk2NjEsOTY2MCw4MjUxLDEyMzA2LDg1OTQsODU5Miw4NTkzLDg1OTUsMTIzMDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MTIsODcxNSw4ODM4LDg4MzksODgzNCw4ODM1LDg3NDYsODc0NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODc0Myw4NzQ0LDY1NTA2LDg2NTgsODY2MCw4NzA0LDg3MDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3MzYsODg2OSw4OTc4LDg3MDYsODcxMSw4ODAxLDg3ODYsODgxMCw4ODExLDg3MzAsODc2NSw4NzMzLDg3NTcsODc0Nyw4NzQ4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODQ5MSw4MjQwLDk4MzksOTgzNyw5ODM0LDgyMjQsODIyNSwxODIsbnVsbCxudWxsLG51bGwsbnVsbCw5NzExLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsbnVsbCxudWxsLG51bGwsbnVsbCwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTAyNSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTEwNSwxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTYsOTQ5Miw5NTAwLDk1MTYsOTUwOCw5NTI0LDk1MzIsOTQ3Myw5NDc1LDk0ODcsOTQ5MSw5NDk5LDk0OTUsOTUwNyw5NTIzLDk1MTUsOTUzMSw5NTQ3LDk1MDQsOTUxOSw5NTEyLDk1MjcsOTUzNSw5NTAxLDk1MjAsOTUwOSw5NTI4LDk1MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsOTMyNyw5MzI4LDkzMjksOTMzMCw5MzMxLDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsbnVsbCwxMzEyOSwxMzA3NiwxMzA5MCwxMzEzMywxMzA4MCwxMzA5NSwxMzA1OSwxMzExMCwxMzEzNywxMzE0MywxMzA2OSwxMzA5NCwxMzA5MSwxMzA5OSwxMzEzMCwxMzExNSwxMzIxMiwxMzIxMywxMzIxNCwxMzE5OCwxMzE5OSwxMzI1MiwxMzIxNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTMxNzksMTIzMTcsMTIzMTksODQ3MCwxMzI2MSw4NDgxLDEyOTY0LDEyOTY1LDEyOTY2LDEyOTY3LDEyOTY4LDEyODQ5LDEyODUwLDEyODU3LDEzMTgyLDEzMTgxLDEzMTgwLDg3ODYsODgwMSw4NzQ3LDg3NTAsODcyMSw4NzMwLDg4NjksODczNiw4NzM1LDg4OTUsODc1Nyw4NzQ1LDg3NDYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDEyNCwyMTc4MiwyMzA0MywzODQ2MywyMTY5NiwyNDg1OSwyNTM4NCwyMzAzMCwzNjg5OCwzMzkwOSwzMzU2NCwzMTMxMiwyNDc0NiwyNTU2OSwyODE5NywyNjA5MywzMzg5NCwzMzQ0NiwzOTkyNSwyNjc3MSwyMjMxMSwyNjAxNywyNTIwMSwyMzQ1MSwyMjk5MiwzNDQyNywzOTE1NiwzMjA5OCwzMjE5MCwzOTgyMiwyNTExMCwzMTkwMywzNDk5OSwyMzQzMywyNDI0NSwyNTM1MywyNjI2MywyNjY5NiwzODM0MywzODc5NywyNjQ0NywyMDE5NywyMDIzNCwyMDMwMSwyMDM4MSwyMDU1MywyMjI1OCwyMjgzOSwyMjk5NiwyMzA0MSwyMzU2MSwyNDc5OSwyNDg0NywyNDk0NCwyNjEzMSwyNjg4NSwyODg1OCwzMDAzMSwzMDA2NCwzMTIyNywzMjE3MywzMjIzOSwzMjk2MywzMzgwNiwzNDkxNSwzNTU4NiwzNjk0OSwzNjk4NiwyMTMwNywyMDExNywyMDEzMywyMjQ5NSwzMjk0NiwzNzA1NywzMDk1OSwxOTk2OCwyMjc2OSwyODMyMiwzNjkyMCwzMTI4MiwzMzU3NiwzMzQxOSwzOTk4MywyMDgwMSwyMTM2MCwyMTY5MywyMTcyOSwyMjI0MCwyMzAzNSwyNDM0MSwzOTE1NCwyODEzOSwzMjk5NiwzNDA5MywzODQ5OCwzODUxMiwzODU2MCwzODkwNywyMTUxNSwyMTQ5MSwyMzQzMSwyODg3OSwzMjcwMSwzNjgwMiwzODYzMiwyMTM1OSw0MDI4NCwzMTQxOCwxOTk4NSwzMDg2NywzMzI3NiwyODE5OCwyMjA0MCwyMTc2NCwyNzQyMSwzNDA3NCwzOTk5NSwyMzAxMywyMTQxNywyODAwNiwyOTkxNiwzODI4NywyMjA4MiwyMDExMywzNjkzOSwzODY0MiwzMzYxNSwzOTE4MCwyMTQ3MywyMTk0MiwyMzM0NCwyNDQzMywyNjE0NCwyNjM1NSwyNjYyOCwyNzcwNCwyNzg5MSwyNzk0NSwyOTc4NywzMDQwOCwzMTMxMCwzODk2NCwzMzUyMSwzNDkwNywzNTQyNCwzNzYxMywyODA4MiwzMDEyMywzMDQxMCwzOTM2NSwyNDc0MiwzNTU4NSwzNjIzNCwzODMyMiwyNzAyMiwyMTQyMSwyMDg3MCwyMjI5MCwyMjU3NiwyMjg1MiwyMzQ3NiwyNDMxMCwyNDYxNiwyNTUxMywyNTU4OCwyNzgzOSwyODQzNiwyODgxNCwyODk0OCwyOTAxNywyOTE0MSwyOTUwMywzMjI1NywzMzM5OCwzMzQ4OSwzNDE5OSwzNjk2MCwzNzQ2Nyw0MDIxOSwyMjYzMywyNjA0NCwyNzczOCwyOTk4OSwyMDk4NSwyMjgzMCwyMjg4NSwyNDQ0OCwyNDU0MCwyNTI3NiwyNjEwNiwyNzE3OCwyNzQzMSwyNzU3MiwyOTU3OSwzMjcwNSwzNTE1OCw0MDIzNiw0MDIwNiw0MDY0NCwyMzcxMywyNzc5OCwzMzY1OSwyMDc0MCwyMzYyNywyNTAxNCwzMzIyMiwyNjc0MiwyOTI4MSwyMDA1NywyMDQ3NCwyMTM2OCwyNDY4MSwyODIwMSwzMTMxMSwzODg5OSwxOTk3OSwyMTI3MCwyMDIwNiwyMDMwOSwyMDI4NSwyMDM4NSwyMDMzOSwyMTE1MiwyMTQ4NywyMjAyNSwyMjc5OSwyMzIzMywyMzQ3OCwyMzUyMSwzMTE4NSwyNjI0NywyNjUyNCwyNjU1MCwyNzQ2OCwyNzgyNywyODc3OSwyOTYzNCwzMTExNywzMTE2NiwzMTI5MiwzMTYyMywzMzQ1NywzMzQ5OSwzMzU0MCwzMzY1NSwzMzc3NSwzMzc0NywzNDY2MiwzNTUwNiwyMjA1NywzNjAwOCwzNjgzOCwzNjk0MiwzODY4NiwzNDQ0MiwyMDQyMCwyMzc4NCwyNTEwNSwyOTI3MywzMDAxMSwzMzI1MywzMzQ2OSwzNDU1OCwzNjAzMiwzODU5NywzOTE4NywzOTM4MSwyMDE3MSwyMDI1MCwzNTI5OSwyMjIzOCwyMjYwMiwyMjczMCwyNDMxNSwyNDU1NSwyNDYxOCwyNDcyNCwyNDY3NCwyNTA0MCwyNTEwNiwyNTI5NiwyNTkxMywzOTc0NSwyNjIxNCwyNjgwMCwyODAyMywyODc4NCwzMDAyOCwzMDM0MiwzMjExNywzMzQ0NSwzNDgwOSwzODI4MywzODU0MiwzNTk5NywyMDk3NywyMTE4MiwyMjgwNiwyMTY4MywyMzQ3NSwyMzgzMCwyNDkzNiwyNzAxMCwyODA3OSwzMDg2MSwzMzk5NSwzNDkwMywzNTQ0MiwzNzc5OSwzOTYwOCwyODAxMiwzOTMzNiwzNDUyMSwyMjQzNSwyNjYyMywzNDUxMCwzNzM5MCwyMTEyMywyMjE1MSwyMTUwOCwyNDI3NSwyNTMxMywyNTc4NSwyNjY4NCwyNjY4MCwyNzU3OSwyOTU1NCwzMDkwNiwzMTMzOSwzNTIyNiwzNTI4MiwzNjIwMywzNjYxMSwzNzEwMSwzODMwNywzODU0OCwzODc2MSwyMzM5OCwyMzczMSwyNzAwNSwzODk4OSwzODk5MCwyNTQ5OSwzMTUyMCwyNzE3OSwyNzI2MywyNjgwNiwzOTk0OSwyODUxMSwyMTEwNiwyMTkxNywyNDY4OCwyNTMyNCwyNzk2MywyODE2NywyODM2OSwzMzg4MywzNTA4OCwzNjY3NiwxOTk4OCwzOTk5MywyMTQ5NCwyNjkwNywyNzE5NCwzODc4OCwyNjY2NiwyMDgyOCwzMTQyNywzMzk3MCwzNzM0MCwzNzc3MiwyMjEwNyw0MDIzMiwyNjY1OCwzMzU0MSwzMzg0MSwzMTkwOSwyMTAwMCwzMzQ3NywyOTkyNiwyMDA5NCwyMDM1NSwyMDg5NiwyMzUwNiwyMTAwMiwyMTIwOCwyMTIyMywyNDA1OSwyMTkxNCwyMjU3MCwyMzAxNCwyMzQzNiwyMzQ0OCwyMzUxNSwyNDE3OCwyNDE4NSwyNDczOSwyNDg2MywyNDkzMSwyNTAyMiwyNTU2MywyNTk1NCwyNjU3NywyNjcwNywyNjg3NCwyNzQ1NCwyNzQ3NSwyNzczNSwyODQ1MCwyODU2NywyODQ4NSwyOTg3MiwyOTk3NiwzMDQzNSwzMDQ3NSwzMTQ4NywzMTY0OSwzMTc3NywzMjIzMywzMjU2NiwzMjc1MiwzMjkyNSwzMzM4MiwzMzY5NCwzNTI1MSwzNTUzMiwzNjAxMSwzNjk5NiwzNzk2OSwzODI5MSwzODI4OSwzODMwNiwzODUwMSwzODg2NywzOTIwOCwzMzMwNCwyMDAyNCwyMTU0NywyMzczNiwyNDAxMiwyOTYwOSwzMDI4NCwzMDUyNCwyMzcyMSwzMjc0NywzNjEwNywzODU5MywzODkyOSwzODk5NiwzOTAwMCwyMDIyNSwyMDIzOCwyMTM2MSwyMTkxNiwyMjEyMCwyMjUyMiwyMjg1NSwyMzMwNSwyMzQ5MiwyMzY5NiwyNDA3NiwyNDE5MCwyNDUyNCwyNTU4MiwyNjQyNiwyNjA3MSwyNjA4MiwyNjM5OSwyNjgyNywyNjgyMCwyNzIzMSwyNDExMiwyNzU4OSwyNzY3MSwyNzc3MywzMDA3OSwzMTA0OCwyMzM5NSwzMTIzMiwzMjAwMCwyNDUwOSwzNTIxNSwzNTM1MiwzNjAyMCwzNjIxNSwzNjU1NiwzNjYzNywzOTEzOCwzOTQzOCwzOTc0MCwyMDA5NiwyMDYwNSwyMDczNiwyMjkzMSwyMzQ1MiwyNTEzNSwyNTIxNiwyNTgzNiwyNzQ1MCwyOTM0NCwzMDA5NywzMTA0NywzMjY4MSwzNDgxMSwzNTUxNiwzNTY5NiwyNTUxNiwzMzczOCwzODgxNiwyMTUxMywyMTUwNywyMTkzMSwyNjcwOCwyNzIyNCwzNTQ0MCwzMDc1OSwyNjQ4NSw0MDY1MywyMTM2NCwyMzQ1OCwzMzA1MCwzNDM4NCwzNjg3MCwxOTk5MiwyMDAzNywyMDE2NywyMDI0MSwyMTQ1MCwyMTU2MCwyMzQ3MCwyNDMzOSwyNDYxMywyNTkzNywyNjQyOSwyNzcxNCwyNzc2MiwyNzg3NSwyODc5MiwyOTY5OSwzMTM1MCwzMTQwNiwzMTQ5NiwzMjAyNiwzMTk5OCwzMjEwMiwyNjA4NywyOTI3NSwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTMxMiwyNTM2OSwyODE5MiwzNDM5NCwzNTM3NywzNjMxNywzNzYyNCwyODQxNywzMTE0MiwzOTc3MCwyMDEzNiwyMDEzOSwyMDE0MCwyMDM3OSwyMDM4NCwyMDY4OSwyMDgwNywzMTQ3OCwyMDg0OSwyMDk4MiwyMTMzMiwyMTI4MSwyMTM3NSwyMTQ4MywyMTkzMiwyMjY1OSwyMzc3NywyNDM3NSwyNDM5NCwyNDYyMywyNDY1NiwyNDY4NSwyNTM3NSwyNTk0NSwyNzIxMSwyNzg0MSwyOTM3OCwyOTQyMSwzMDcwMywzMzAxNiwzMzAyOSwzMzI4OCwzNDEyNiwzNzExMSwzNzg1NywzODkxMSwzOTI1NSwzOTUxNCwyMDIwOCwyMDk1NywyMzU5NywyNjI0MSwyNjk4OSwyMzYxNiwyNjM1NCwyNjk5NywyOTU3NywyNjcwNCwzMTg3MywyMDY3NywyMTIyMCwyMjM0MywyNDA2MiwzNzY3MCwyNjAyMCwyNzQyNywyNzQ1MywyOTc0OCwzMTEwNSwzMTE2NSwzMTU2MywzMjIwMiwzMzQ2NSwzMzc0MCwzNDk0MywzNTE2NywzNTY0MSwzNjgxNywzNzMyOSwyMTUzNSwzNzUwNCwyMDA2MSwyMDUzNCwyMTQ3NywyMTMwNiwyOTM5OSwyOTU5MCwzMDY5NywzMzUxMCwzNjUyNywzOTM2NiwzOTM2OCwzOTM3OCwyMDg1NSwyNDg1OCwzNDM5OCwyMTkzNiwzMTM1NCwyMDU5OCwyMzUwNywzNjkzNSwzODUzMywyMDAxOCwyNzM1NSwzNzM1MSwyMzYzMywyMzYyNCwyNTQ5NiwzMTM5MSwyNzc5NSwzODc3MiwzNjcwNSwzMTQwMiwyOTA2NiwzODUzNiwzMTg3NCwyNjY0NywzMjM2OCwyNjcwNSwzNzc0MCwyMTIzNCwyMTUzMSwzNDIxOSwzNTM0NywzMjY3NiwzNjU1NywzNzA4OSwyMTM1MCwzNDk1MiwzMTA0MSwyMDQxOCwyMDY3MCwyMTAwOSwyMDgwNCwyMTg0MywyMjMxNywyOTY3NCwyMjQxMSwyMjg2NSwyNDQxOCwyNDQ1MiwyNDY5MywyNDk1MCwyNDkzNSwyNTAwMSwyNTUyMiwyNTY1OCwyNTk2NCwyNjIyMywyNjY5MCwyODE3OSwzMDA1NCwzMTI5MywzMTk5NSwzMjA3NiwzMjE1MywzMjMzMSwzMjYxOSwzMzU1MCwzMzYxMCwzNDUwOSwzNTMzNiwzNTQyNywzNTY4NiwzNjYwNSwzODkzOCw0MDMzNSwzMzQ2NCwzNjgxNCwzOTkxMiwyMTEyNywyNTExOSwyNTczMSwyODYwOCwzODU1MywyNjY4OSwyMDYyNSwyNzQyNCwyNzc3MCwyODUwMCwzMTM0OCwzMjA4MCwzNDg4MCwzNTM2MywyNjM3NiwyMDIxNCwyMDUzNywyMDUxOCwyMDU4MSwyMDg2MCwyMTA0OCwyMTA5MSwyMTkyNywyMjI4NywyMjUzMywyMzI0NCwyNDMxNCwyNTAxMCwyNTA4MCwyNTMzMSwyNTQ1OCwyNjkwOCwyNzE3NywyOTMwOSwyOTM1NiwyOTQ4NiwzMDc0MCwzMDgzMSwzMjEyMSwzMDQ3NiwzMjkzNywzNTIxMSwzNTYwOSwzNjA2NiwzNjU2MiwzNjk2MywzNzc0OSwzODUyMiwzODk5NywzOTQ0Myw0MDU2OCwyMDgwMywyMTQwNywyMTQyNywyNDE4NywyNDM1OCwyODE4NywyODMwNCwyOTU3MiwyOTY5NCwzMjA2NywzMzMzNSwzNTMyOCwzNTU3OCwzODQ4MCwyMDA0NiwyMDQ5MSwyMTQ3NiwyMTYyOCwyMjI2NiwyMjk5MywyMzM5NiwyNDA0OSwyNDIzNSwyNDM1OSwyNTE0NCwyNTkyNSwyNjU0MywyODI0NiwyOTM5MiwzMTk0NiwzNDk5NiwzMjkyOSwzMjk5MywzMzc3NiwzNDM4MiwzNTQ2MywzNjMyOCwzNzQzMSwzODU5OSwzOTAxNSw0MDcyMywyMDExNiwyMDExNCwyMDIzNywyMTMyMCwyMTU3NywyMTU2NiwyMzA4NywyNDQ2MCwyNDQ4MSwyNDczNSwyNjc5MSwyNzI3OCwyOTc4NiwzMDg0OSwzNTQ4NiwzNTQ5MiwzNTcwMywzNzI2NCwyMDA2MiwzOTg4MSwyMDEzMiwyMDM0OCwyMDM5OSwyMDUwNSwyMDUwMiwyMDgwOSwyMDg0NCwyMTE1MSwyMTE3NywyMTI0NiwyMTQwMiwyMTQ3NSwyMTUyMSwyMTUxOCwyMTg5NywyMjM1MywyMjQzNCwyMjkwOSwyMzM4MCwyMzM4OSwyMzQzOSwyNDAzNywyNDAzOSwyNDA1NSwyNDE4NCwyNDE5NSwyNDIxOCwyNDI0NywyNDM0NCwyNDY1OCwyNDkwOCwyNTIzOSwyNTMwNCwyNTUxMSwyNTkxNSwyNjExNCwyNjE3OSwyNjM1NiwyNjQ3NywyNjY1NywyNjc3NSwyNzA4MywyNzc0MywyNzk0NiwyODAwOSwyODIwNywyODMxNywzMDAwMiwzMDM0MywzMDgyOCwzMTI5NSwzMTk2OCwzMjAwNSwzMjAyNCwzMjA5NCwzMjE3NywzMjc4OSwzMjc3MSwzMjk0MywzMjk0NSwzMzEwOCwzMzE2NywzMzMyMiwzMzYxOCwzNDg5MiwzNDkxMywzNTYxMSwzNjAwMiwzNjA5MiwzNzA2NiwzNzIzNywzNzQ4OSwzMDc4MywzNzYyOCwzODMwOCwzODQ3NywzODkxNywzOTMyMSwzOTY0MCw0MDI1MSwyMTA4MywyMTE2MywyMTQ5NSwyMTUxMiwyMjc0MSwyNTMzNSwyODY0MCwzNTk0NiwzNjcwMyw0MDYzMywyMDgxMSwyMTA1MSwyMTU3OCwyMjI2OSwzMTI5NiwzNzIzOSw0MDI4OCw0MDY1OCwyOTUwOCwyODQyNSwzMzEzNiwyOTk2OSwyNDU3MywyNDc5NCwzOTU5MiwyOTQwMywzNjc5NiwyNzQ5MiwzODkxNSwyMDE3MCwyMjI1NiwyMjM3MiwyMjcxOCwyMzEzMCwyNDY4MCwyNTAzMSwyNjEyNywyNjExOCwyNjY4MSwyNjgwMSwyODE1MSwzMDE2NSwzMjA1OCwzMzM5MCwzOTc0NiwyMDEyMywyMDMwNCwyMTQ0OSwyMTc2NiwyMzkxOSwyNDAzOCwyNDA0NiwyNjYxOSwyNzgwMSwyOTgxMSwzMDcyMiwzNTQwOCwzNzc4MiwzNTAzOSwyMjM1MiwyNDIzMSwyNTM4NywyMDY2MSwyMDY1MiwyMDg3NywyNjM2OCwyMTcwNSwyMjYyMiwyMjk3MSwyMzQ3MiwyNDQyNSwyNTE2NSwyNTUwNSwyNjY4NSwyNzUwNywyODE2OCwyODc5NywzNzMxOSwyOTMxMiwzMDc0MSwzMDc1OCwzMTA4NSwyNTk5OCwzMjA0OCwzMzc1NiwzNTAwOSwzNjYxNywzODU1NSwyMTA5MiwyMjMxMiwyNjQ0OCwzMjYxOCwzNjAwMSwyMDkxNiwyMjMzOCwzODQ0MiwyMjU4NiwyNzAxOCwzMjk0OCwyMTY4MiwyMzgyMiwyMjUyNCwzMDg2OSw0MDQ0MiwyMDMxNiwyMTA2NiwyMTY0MywyNTY2MiwyNjE1MiwyNjM4OCwyNjYxMywzMTM2NCwzMTU3NCwzMjAzNCwzNzY3OSwyNjcxNiwzOTg1MywzMTU0NSwyMTI3MywyMDg3NCwyMTA0NywyMzUxOSwyNTMzNCwyNTc3NCwyNTgzMCwyNjQxMywyNzU3OCwzNDIxNywzODYwOSwzMDM1MiwzOTg5NCwyNTQyMCwzNzYzOCwzOTg1MSwzMDM5OSwyNjE5NCwxOTk3NywyMDYzMiwyMTQ0MiwyMzY2NSwyNDgwOCwyNTc0NiwyNTk1NSwyNjcxOSwyOTE1OCwyOTY0MiwyOTk4NywzMTYzOSwzMjM4NiwzNDQ1MywzNTcxNSwzNjA1OSwzNzI0MCwzOTE4NCwyNjAyOCwyNjI4MywyNzUzMSwyMDE4MSwyMDE4MCwyMDI4MiwyMDM1MSwyMTA1MCwyMTQ5NiwyMTQ5MCwyMTk4NywyMjIzNSwyMjc2MywyMjk4NywyMjk4NSwyMzAzOSwyMzM3NiwyMzYyOSwyNDA2NiwyNDEwNywyNDUzNSwyNDYwNSwyNTM1MSwyNTkwMywyMzM4OCwyNjAzMSwyNjA0NSwyNjA4OCwyNjUyNSwyNzQ5MCwyNzUxNSwyNzY2MywyOTUwOSwzMTA0OSwzMTE2OSwzMTk5MiwzMjAyNSwzMjA0MywzMjkzMCwzMzAyNiwzMzI2NywzNTIyMiwzNTQyMiwzNTQzMywzNTQzMCwzNTQ2OCwzNTU2NiwzNjAzOSwzNjA2MCwzODYwNCwzOTE2NCwyNzUwMywyMDEwNywyMDI4NCwyMDM2NSwyMDgxNiwyMzM4MywyMzU0NiwyNDkwNCwyNTM0NSwyNjE3OCwyNzQyNSwyODM2MywyNzgzNSwyOTI0NiwyOTg4NSwzMDE2NCwzMDkxMywzMTAzNCwzMjc4MCwzMjgxOSwzMzI1OCwzMzk0MCwzNjc2NiwyNzcyOCw0MDU3NSwyNDMzNSwzNTY3Miw0MDIzNSwzMTQ4MiwzNjYwMCwyMzQzNywzODYzNSwxOTk3MSwyMTQ4OSwyMjUxOSwyMjgzMywyMzI0MSwyMzQ2MCwyNDcxMywyODI4NywyODQyMiwzMDE0MiwzNjA3NCwyMzQ1NSwzNDA0OCwzMTcxMiwyMDU5NCwyNjYxMiwzMzQzNywyMzY0OSwzNDEyMiwzMjI4NiwzMzI5NCwyMDg4OSwyMzU1NiwyNTQ0OCwzNjE5OCwyNjAxMiwyOTAzOCwzMTAzOCwzMjAyMywzMjc3MywzNTYxMywzNjU1NCwzNjk3NCwzNDUwMywzNzAzNCwyMDUxMSwyMTI0MiwyMzYxMCwyNjQ1MSwyODc5NiwyOTIzNywzNzE5NiwzNzMyMCwzNzY3NSwzMzUwOSwyMzQ5MCwyNDM2OSwyNDgyNSwyMDAyNywyMTQ2MiwyMzQzMiwyNTE2MywyNjQxNywyNzUzMCwyOTQxNywyOTY2NCwzMTI3OCwzMzEzMSwzNjI1OSwzNzIwMiwzOTMxOCwyMDc1NCwyMTQ2MywyMTYxMCwyMzU1MSwyNTQ4MCwyNzE5MywzMjE3MiwzODY1NiwyMjIzNCwyMTQ1NCwyMTYwOCwyMzQ0NywyMzYwMSwyNDAzMCwyMDQ2MiwyNDgzMywyNTM0MiwyNzk1NCwzMTE2OCwzMTE3OSwzMjA2NiwzMjMzMywzMjcyMiwzMzI2MSwzMzMxMSwzMzkzNiwzNDg4NiwzNTE4NiwzNTcyOCwzNjQ2OCwzNjY1NSwzNjkxMywzNzE5NSwzNzIyOCwzODU5OCwzNzI3NiwyMDE2MCwyMDMwMywyMDgwNSwyMTMxMywyNDQ2NywyNTEwMiwyNjU4MCwyNzcxMywyODE3MSwyOTUzOSwzMjI5NCwzNzMyNSwzNzUwNywyMTQ2MCwyMjgwOSwyMzQ4NywyODExMywzMTA2OSwzMjMwMiwzMTg5OSwyMjY1NCwyOTA4NywyMDk4NiwzNDg5OSwzNjg0OCwyMDQyNiwyMzgwMywyNjE0OSwzMDYzNiwzMTQ1OSwzMzMwOCwzOTQyMywyMDkzNCwyNDQ5MCwyNjA5MiwyNjk5MSwyNzUyOSwyODE0NywyODMxMCwyODUxNiwzMDQ2MiwzMjAyMCwyNDAzMywzNjk4MSwzNzI1NSwzODkxOCwyMDk2NiwyMTAyMSwyNTE1MiwyNjI1NywyNjMyOSwyODE4NiwyNDI0NiwzMjIxMCwzMjYyNiwyNjM2MCwzNDIyMywzNDI5NSwzNTU3NiwyMTE2MSwyMTQ2NSwyMjg5OSwyNDIwNywyNDQ2NCwyNDY2MSwzNzYwNCwzODUwMCwyMDY2MywyMDc2NywyMTIxMywyMTI4MCwyMTMxOSwyMTQ4NCwyMTczNiwyMTgzMCwyMTgwOSwyMjAzOSwyMjg4OCwyMjk3NCwyMzEwMCwyMzQ3NywyMzU1OCwyMzU2NywyMzU2OSwyMzU3OCwyNDE5NiwyNDIwMiwyNDI4OCwyNDQzMiwyNTIxNSwyNTIyMCwyNTMwNywyNTQ4NCwyNTQ2MywyNjExOSwyNjEyNCwyNjE1NywyNjIzMCwyNjQ5NCwyNjc4NiwyNzE2NywyNzE4OSwyNzgzNiwyODA0MCwyODE2OSwyODI0OCwyODk4OCwyODk2NiwyOTAzMSwzMDE1MSwzMDQ2NSwzMDgxMywzMDk3NywzMTA3NywzMTIxNiwzMTQ1NiwzMTUwNSwzMTkxMSwzMjA1NywzMjkxOCwzMzc1MCwzMzkzMSwzNDEyMSwzNDkwOSwzNTA1OSwzNTM1OSwzNTM4OCwzNTQxMiwzNTQ0MywzNTkzNywzNjA2MiwzNzI4NCwzNzQ3OCwzNzc1OCwzNzkxMiwzODU1NiwzODgwOCwxOTk3OCwxOTk3NiwxOTk5OCwyMDA1NSwyMDg4NywyMTEwNCwyMjQ3OCwyMjU4MCwyMjczMiwyMzMzMCwyNDEyMCwyNDc3MywyNTg1NCwyNjQ2NSwyNjQ1NCwyNzk3MiwyOTM2NiwzMDA2NywzMTMzMSwzMzk3NiwzNTY5OCwzNzMwNCwzNzY2NCwyMjA2NSwyMjUxNiwzOTE2NiwyNTMyNSwyNjg5MywyNzU0MiwyOTE2NSwzMjM0MCwzMjg4NywzMzM5NCwzNTMwMiwzOTEzNSwzNDY0NSwzNjc4NSwyMzYxMSwyMDI4MCwyMDQ0OSwyMDQwNSwyMTc2NywyMzA3MiwyMzUxNywyMzUyOSwyNDUxNSwyNDkxMCwyNTM5MSwyNjAzMiwyNjE4NywyNjg2MiwyNzAzNSwyODAyNCwyODE0NSwzMDAwMywzMDEzNywzMDQ5NSwzMTA3MCwzMTIwNiwzMjA1MSwzMzI1MSwzMzQ1NSwzNDIxOCwzNTI0MiwzNTM4NiwzNjUyMywzNjc2MywzNjkxNCwzNzM0MSwzODY2MywyMDE1NCwyMDE2MSwyMDk5NSwyMjY0NSwyMjc2NCwyMzU2MywyOTk3OCwyMzYxMywzMzEwMiwzNTMzOCwzNjgwNSwzODQ5OSwzODc2NSwzMTUyNSwzNTUzNSwzODkyMCwzNzIxOCwyMjI1OSwyMTQxNiwzNjg4NywyMTU2MSwyMjQwMiwyNDEwMSwyNTUxMiwyNzcwMCwyODgxMCwzMDU2MSwzMTg4MywzMjczNiwzNDkyOCwzNjkzMCwzNzIwNCwzNzY0OCwzNzY1NiwzODU0MywyOTc5MCwzOTYyMCwyMzgxNSwyMzkxMywyNTk2OCwyNjUzMCwzNjI2NCwzODYxOSwyNTQ1NCwyNjQ0MSwyNjkwNSwzMzczMywzODkzNSwzODU5MiwzNTA3MCwyODU0OCwyNTcyMiwyMzU0NCwxOTk5MCwyODcxNiwzMDA0NSwyNjE1OSwyMDkzMiwyMTA0NiwyMTIxOCwyMjk5NSwyNDQ0OSwyNDYxNSwyNTEwNCwyNTkxOSwyNTk3MiwyNjE0MywyNjIyOCwyNjg2NiwyNjY0NiwyNzQ5MSwyODE2NSwyOTI5OCwyOTk4MywzMDQyNywzMTkzNCwzMjg1NCwyMjc2OCwzNTA2OSwzNTE5OSwzNTQ4OCwzNTQ3NSwzNTUzMSwzNjg5MywzNzI2NiwzODczOCwzODc0NSwyNTk5MywzMTI0NiwzMzAzMCwzODU4NywyNDEwOSwyNDc5NiwyNTExNCwyNjAyMSwyNjEzMiwyNjUxMiwzMDcwNywzMTMwOSwzMTgyMSwzMjMxOCwzMzAzNCwzNjAxMiwzNjE5NiwzNjMyMSwzNjQ0NywzMDg4OSwyMDk5OSwyNTMwNSwyNTUwOSwyNTY2NiwyNTI0MCwzNTM3MywzMTM2MywzMTY4MCwzNTUwMCwzODYzNCwzMjExOCwzMzI5MiwzNDYzMywyMDE4NSwyMDgwOCwyMTMxNSwyMTM0NCwyMzQ1OSwyMzU1NCwyMzU3NCwyNDAyOSwyNTEyNiwyNTE1OSwyNTc3NiwyNjY0MywyNjY3NiwyNzg0OSwyNzk3MywyNzkyNywyNjU3OSwyODUwOCwyOTAwNiwyOTA1MywyNjA1OSwzMTM1OSwzMTY2MSwzMjIxOCwzMjMzMCwzMjY4MCwzMzE0NiwzMzMwNywzMzMzNywzNDIxNCwzNTQzOCwzNjA0NiwzNjM0MSwzNjk4NCwzNjk4MywzNzU0OSwzNzUyMSwzODI3NSwzOTg1NCwyMTA2OSwyMTg5MiwyODQ3MiwyODk4MiwyMDg0MCwzMTEwOSwzMjM0MSwzMzIwMywzMTk1MCwyMjA5MiwyMjYwOSwyMzcyMCwyNTUxNCwyNjM2NiwyNjM2NSwyNjk3MCwyOTQwMSwzMDA5NSwzMDA5NCwzMDk5MCwzMTA2MiwzMTE5OSwzMTg5NSwzMjAzMiwzMjA2OCwzNDMxMSwzNTM4MCwzODQ1OSwzNjk2MSw0MDczNiwyMDcxMSwyMTEwOSwyMTQ1MiwyMTQ3NCwyMDQ4OSwyMTkzMCwyMjc2NiwyMjg2MywyOTI0NSwyMzQzNSwyMzY1MiwyMTI3NywyNDgwMywyNDgxOSwyNTQzNiwyNTQ3NSwyNTQwNywyNTUzMSwyNTgwNSwyNjA4OSwyNjM2MSwyNDAzNSwyNzA4NSwyNzEzMywyODQzNywyOTE1NywyMDEwNSwzMDE4NSwzMDQ1NiwzMTM3OSwzMTk2NywzMjIwNywzMjE1NiwzMjg2NSwzMzYwOSwzMzYyNCwzMzkwMCwzMzk4MCwzNDI5OSwzNTAxMywzNjIwOCwzNjg2NSwzNjk3MywzNzc4MywzODY4NCwzOTQ0MiwyMDY4NywyMjY3OSwyNDk3NCwzMzIzNSwzNDEwMSwzNjEwNCwzNjg5NiwyMDQxOSwyMDU5NiwyMTA2MywyMTM2MywyNDY4NywyNTQxNywyNjQ2MywyODIwNCwzNjI3NSwzNjg5NSwyMDQzOSwyMzY0NiwzNjA0MiwyNjA2MywzMjE1NCwyMTMzMCwzNDk2NiwyMDg1NCwyNTUzOSwyMzM4NCwyMzQwMywyMzU2MiwyNTYxMywyNjQ0OSwzNjk1NiwyMDE4MiwyMjgxMCwyMjgyNiwyNzc2MCwzNTQwOSwyMTgyMiwyMjU0OSwyMjk0OSwyNDgxNiwyNTE3MSwyNjU2MSwzMzMzMywyNjk2NSwzODQ2NCwzOTM2NCwzOTQ2NCwyMDMwNywyMjUzNCwyMzU1MCwzMjc4NCwyMzcyOSwyNDExMSwyNDQ1MywyNDYwOCwyNDkwNywyNTE0MCwyNjM2NywyNzg4OCwyODM4MiwzMjk3NCwzMzE1MSwzMzQ5MiwzNDk1NSwzNjAyNCwzNjg2NCwzNjkxMCwzODUzOCw0MDY2NywzOTg5OSwyMDE5NSwyMTQ4OCwyMjgyMywzMTUzMiwzNzI2MSwzODk4OCw0MDQ0MSwyODM4MSwyODcxMSwyMTMzMSwyMTgyOCwyMzQyOSwyNTE3NiwyNTI0NiwyNTI5OSwyNzgxMCwyODY1NSwyOTczMCwzNTM1MSwzNzk0NCwyODYwOSwzNTU4MiwzMzU5MiwyMDk2NywzNDU1MiwyMTQ4MiwyMTQ4MSwyMDI5NCwzNjk0OCwzNjc4NCwyMjg5MCwzMzA3MywyNDA2MSwzMTQ2NiwzNjc5OSwyNjg0MiwzNTg5NSwyOTQzMiw0MDAwOCwyNzE5NywzNTUwNCwyMDAyNSwyMTMzNiwyMjAyMiwyMjM3NCwyNTI4NSwyNTUwNiwyNjA4NiwyNzQ3MCwyODEyOSwyODI1MSwyODg0NSwzMDcwMSwzMTQ3MSwzMTY1OCwzMjE4NywzMjgyOSwzMjk2NiwzNDUwNywzNTQ3NywzNzcyMywyMjI0MywyMjcyNywyNDM4MiwyNjAyOSwyNjI2MiwyNzI2NCwyNzU3MywzMDAwNywzNTUyNywyMDUxNiwzMDY5MywyMjMyMCwyNDM0NywyNDY3NywyNjIzNCwyNzc0NCwzMDE5NiwzMTI1OCwzMjYyMiwzMzI2OCwzNDU4NCwzNjkzMywzOTM0NywzMTY4OSwzMDA0NCwzMTQ4MSwzMTU2OSwzMzk4OCwzNjg4MCwzMTIwOSwzMTM3OCwzMzU5MCwyMzI2NSwzMDUyOCwyMDAxMywyMDIxMCwyMzQ0OSwyNDU0NCwyNTI3NywyNjE3MiwyNjYwOSwyNzg4MCwzNDQxMSwzNDkzNSwzNTM4NywzNzE5OCwzNzYxOSwzOTM3NiwyNzE1OSwyODcxMCwyOTQ4MiwzMzUxMSwzMzg3OSwzNjAxNSwxOTk2OSwyMDgwNiwyMDkzOSwyMTg5OSwyMzU0MSwyNDA4NiwyNDExNSwyNDE5MywyNDM0MCwyNDM3MywyNDQyNywyNDUwMCwyNTA3NCwyNTM2MSwyNjI3NCwyNjM5NywyODUyNiwyOTI2NiwzMDAxMCwzMDUyMiwzMjg4NCwzMzA4MSwzMzE0NCwzNDY3OCwzNTUxOSwzNTU0OCwzNjIyOSwzNjMzOSwzNzUzMCwzODI2MywzODkxNCw0MDE2NSwyMTE4OSwyNTQzMSwzMDQ1MiwyNjM4OSwyNzc4NCwyOTY0NSwzNjAzNSwzNzgwNiwzODUxNSwyNzk0MSwyMjY4NCwyNjg5NCwyNzA4NCwzNjg2MSwzNzc4NiwzMDE3MSwzNjg5MCwyMjYxOCwyNjYyNiwyNTUyNCwyNzEzMSwyMDI5MSwyODQ2MCwyNjU4NCwzNjc5NSwzNDA4NiwzMjE4MCwzNzcxNiwyNjk0MywyODUyOCwyMjM3OCwyMjc3NSwyMzM0MCwzMjA0NCwyOTIyNiwyMTUxNCwzNzM0Nyw0MDM3MiwyMDE0MSwyMDMwMiwyMDU3MiwyMDU5NywyMTA1OSwzNTk5OCwyMTU3NiwyMjU2NCwyMzQ1MCwyNDA5MywyNDIxMywyNDIzNywyNDMxMSwyNDM1MSwyNDcxNiwyNTI2OSwyNTQwMiwyNTU1MiwyNjc5OSwyNzcxMiwzMDg1NSwzMTExOCwzMTI0MywzMjIyNCwzMzM1MSwzNTMzMCwzNTU1OCwzNjQyMCwzNjg4MywzNzA0OCwzNzE2NSwzNzMzNiw0MDcxOCwyNzg3NywyNTY4OCwyNTgyNiwyNTk3MywyODQwNCwzMDM0MCwzMTUxNSwzNjk2OSwzNzg0MSwyODM0NiwyMTc0NiwyNDUwNSwyNTc2NCwzNjY4NSwzNjg0NSwzNzQ0NCwyMDg1NiwyMjYzNSwyMjgyNSwyMzYzNywyNDIxNSwyODE1NSwzMjM5OSwyOTk4MCwzNjAyOCwzNjU3OCwzOTAwMywyODg1NywyMDI1MywyNzU4MywyODU5MywzMDAwMCwzODY1MSwyMDgxNCwyMTUyMCwyMjU4MSwyMjYxNSwyMjk1NiwyMzY0OCwyNDQ2NiwyNjAwNywyNjQ2MCwyODE5MywzMDMzMSwzMzc1OSwzNjA3NywzNjg4NCwzNzExNywzNzcwOSwzMDc1NywzMDc3OCwyMTE2MiwyNDIzMCwyMjMwMywyMjkwMCwyNDU5NCwyMDQ5OCwyMDgyNiwyMDkwOCwyMDk0MSwyMDk5MiwyMTc3NiwyMjYxMiwyMjYxNiwyMjg3MSwyMzQ0NSwyMzc5OCwyMzk0NywyNDc2NCwyNTIzNywyNTY0NSwyNjQ4MSwyNjY5MSwyNjgxMiwyNjg0NywzMDQyMywyODEyMCwyODI3MSwyODA1OSwyODc4MywyOTEyOCwyNDQwMywzMDE2OCwzMTA5NSwzMTU2MSwzMTU3MiwzMTU3MCwzMTk1OCwzMjExMywyMTA0MCwzMzg5MSwzNDE1MywzNDI3NiwzNTM0MiwzNTU4OCwzNTkxMCwzNjM2NywzNjg2NywzNjg3OSwzNzkxMywzODUxOCwzODk1NywzOTQ3MiwzODM2MCwyMDY4NSwyMTIwNSwyMTUxNiwyMjUzMCwyMzU2NiwyNDk5OSwyNTc1OCwyNzkzNCwzMDY0MywzMTQ2MSwzMzAxMiwzMzc5NiwzNjk0NywzNzUwOSwyMzc3Niw0MDE5OSwyMTMxMSwyNDQ3MSwyNDQ5OSwyODA2MCwyOTMwNSwzMDU2MywzMTE2NywzMTcxNiwyNzYwMiwyOTQyMCwzNTUwMSwyNjYyNywyNzIzMywyMDk4NCwzMTM2MSwyNjkzMiwyMzYyNiw0MDE4MiwzMzUxNSwyMzQ5MywzNzE5MywyODcwMiwyMjEzNiwyMzY2MywyNDc3NSwyNTk1OCwyNzc4OCwzNTkzMCwzNjkyOSwzODkzMSwyMTU4NSwyNjMxMSwzNzM4OSwyMjg1NiwzNzAyNywyMDg2OSwyMDA0NSwyMDk3MCwzNDIwMSwzNTU5OCwyODc2MCwyNTQ2NiwzNzcwNywyNjk3OCwzOTM0OCwzMjI2MCwzMDA3MSwyMTMzNSwyNjk3NiwzNjU3NSwzODYyNywyNzc0MSwyMDEwOCwyMzYxMiwyNDMzNiwzNjg0MSwyMTI1MCwzNjA0OSwzMjkwNSwzNDQyNSwyNDMxOSwyNjA4NSwyMDA4MywyMDgzNywyMjkxNCwyMzYxNSwzODg5NCwyMDIxOSwyMjkyMiwyNDUyNSwzNTQ2OSwyODY0MSwzMTE1MiwzMTA3NCwyMzUyNywzMzkwNSwyOTQ4MywyOTEwNSwyNDE4MCwyNDU2NSwyNTQ2NywyNTc1NCwyOTEyMywzMTg5NiwyMDAzNSwyNDMxNiwyMDA0MywyMjQ5MiwyMjE3OCwyNDc0NSwyODYxMSwzMjAxMywzMzAyMSwzMzA3NSwzMzIxNSwzNjc4NiwzNTIyMywzNDQ2OCwyNDA1MiwyNTIyNiwyNTc3MywzNTIwNywyNjQ4NywyNzg3NCwyNzk2NiwyOTc1MCwzMDc3MiwyMzExMCwzMjYyOSwzMzQ1MywzOTM0MCwyMDQ2NywyNDI1OSwyNTMwOSwyNTQ5MCwyNTk0MywyNjQ3OSwzMDQwMywyOTI2MCwzMjk3MiwzMjk1NCwzNjY0OSwzNzE5NywyMDQ5MywyMjUyMSwyMzE4NiwyNjc1NywyNjk5NSwyOTAyOCwyOTQzNywzNjAyMywyMjc3MCwzNjA2NCwzODUwNiwzNjg4OSwzNDY4NywzMTIwNCwzMDY5NSwzMzgzMywyMDI3MSwyMTA5MywyMTMzOCwyNTI5MywyNjU3NSwyNzg1MCwzMDMzMywzMTYzNiwzMTg5MywzMzMzNCwzNDE4MCwzNjg0MywyNjMzMywyODQ0OCwyOTE5MCwzMjI4MywzMzcwNywzOTM2MSw0MDYxNCwyMDk4OSwzMTY2NSwzMDgzNCwzMTY3MiwzMjkwMywzMTU2MCwyNzM2OCwyNDE2MSwzMjkwOCwzMDAzMywzMDA0OCwyMDg0MywzNzQ3NCwyODMwMCwzMDMzMCwzNzI3MSwzOTY1OCwyMDI0MCwzMjYyNCwyNTI0NCwzMTU2NywzODMwOSw0MDE2OSwyMjEzOCwyMjYxNywzNDUzMiwzODU4OCwyMDI3NiwyMTAyOCwyMTMyMiwyMTQ1MywyMTQ2NywyNDA3MCwyNTY0NCwyNjAwMSwyNjQ5NSwyNzcxMCwyNzcyNiwyOTI1NiwyOTM1OSwyOTY3NywzMDAzNiwzMjMyMSwzMzMyNCwzNDI4MSwzNjAwOSwzMTY4NCwzNzMxOCwyOTAzMywzODkzMCwzOTE1MSwyNTQwNSwyNjIxNywzMDA1OCwzMDQzNiwzMDkyOCwzNDExNSwzNDU0MiwyMTI5MCwyMTMyOSwyMTU0MiwyMjkxNSwyNDE5OSwyNDQ0NCwyNDc1NCwyNTE2MSwyNTIwOSwyNTI1OSwyNjAwMCwyNzYwNCwyNzg1MiwzMDEzMCwzMDM4MiwzMDg2NSwzMTE5MiwzMjIwMywzMjYzMSwzMjkzMywzNDk4NywzNTUxMywzNjAyNywzNjk5MSwzODc1MCwzOTEzMSwyNzE0NywzMTgwMCwyMDYzMywyMzYxNCwyNDQ5NCwyNjUwMywyNzYwOCwyOTc0OSwzMDQ3MywzMjY1NCw0MDc2MywyNjU3MCwzMTI1NSwyMTMwNSwzMDA5MSwzOTY2MSwyNDQyMiwzMzE4MSwzMzc3NywzMjkyMCwyNDM4MCwyNDUxNywzMDA1MCwzMTU1OCwzNjkyNCwyNjcyNywyMzAxOSwyMzE5NSwzMjAxNiwzMDMzNCwzNTYyOCwyMDQ2OSwyNDQyNiwyNzE2MSwyNzcwMywyODQxOCwyOTkyMiwzMTA4MCwzNDkyMCwzNTQxMywzNTk2MSwyNDI4NywyNTU1MSwzMDE0OSwzMTE4NiwzMzQ5NSwzNzY3MiwzNzYxOCwzMzk0OCwzNDU0MSwzOTk4MSwyMTY5NywyNDQyOCwyNTk5NiwyNzk5NiwyODY5MywzNjAwNywzNjA1MSwzODk3MSwyNTkzNSwyOTk0MiwxOTk4MSwyMDE4NCwyMjQ5NiwyMjgyNywyMzE0MiwyMzUwMCwyMDkwNCwyNDA2NywyNDIyMCwyNDU5OCwyNTIwNiwyNTk3NSwyNjAyMywyNjIyMiwyODAxNCwyOTIzOCwzMTUyNiwzMzEwNCwzMzE3OCwzMzQzMywzNTY3NiwzNjAwMCwzNjA3MCwzNjIxMiwzODQyOCwzODQ2OCwyMDM5OCwyNTc3MSwyNzQ5NCwzMzMxMCwzMzg4OSwzNDE1NCwzNzA5NiwyMzU1MywyNjk2MywzOTA4MCwzMzkxNCwzNDEzNSwyMDIzOSwyMTEwMywyNDQ4OSwyNDEzMywyNjM4MSwzMTExOSwzMzE0NSwzNTA3OSwzNTIwNiwyODE0OSwyNDM0MywyNTE3MywyNzgzMiwyMDE3NSwyOTI4OSwzOTgyNiwyMDk5OCwyMTU2MywyMjEzMiwyMjcwNywyNDk5NiwyNTE5OCwyODk1NCwyMjg5NCwzMTg4MSwzMTk2NiwzMjAyNywzODY0MCwyNTk5MSwzMjg2MiwxOTk5MywyMDM0MSwyMDg1MywyMjU5MiwyNDE2MywyNDE3OSwyNDMzMCwyNjU2NCwyMDAwNiwzNDEwOSwzODI4MSwzODQ5MSwzMTg1OSwzODkxMywyMDczMSwyMjcyMSwzMDI5NCwzMDg4NywyMTAyOSwzMDYyOSwzNDA2NSwzMTYyMiwyMDU1OSwyMjc5MywyOTI1NSwzMTY4NywzMjIzMiwzNjc5NCwzNjgyMCwzNjk0MSwyMDQxNSwyMTE5MywyMzA4MSwyNDMyMSwzODgyOSwyMDQ0NSwzMzMwMywzNzYxMCwyMjI3NSwyNTQyOSwyNzQ5NywyOTk5NSwzNTAzNiwzNjYyOCwzMTI5OCwyMTIxNSwyMjY3NSwyNDkxNywyNTA5OCwyNjI4NiwyNzU5NywzMTgwNywzMzc2OSwyMDUxNSwyMDQ3MiwyMTI1MywyMTU3NCwyMjU3NywyMjg1NywyMzQ1MywyMzc5MiwyMzc5MSwyMzg0OSwyNDIxNCwyNTI2NSwyNTQ0NywyNTkxOCwyNjA0MSwyNjM3OSwyNzg2MSwyNzg3MywyODkyMSwzMDc3MCwzMjI5OSwzMjk5MCwzMzQ1OSwzMzgwNCwzNDAyOCwzNDU2MiwzNTA5MCwzNTM3MCwzNTkxNCwzNzAzMCwzNzU4NiwzOTE2NSw0MDE3OSw0MDMwMCwyMDA0NywyMDEyOSwyMDYyMSwyMTA3OCwyMjM0NiwyMjk1MiwyNDEyNSwyNDUzNiwyNDUzNywyNTE1MSwyNjI5MiwyNjM5NSwyNjU3NiwyNjgzNCwyMDg4MiwzMjAzMywzMjkzOCwzMzE5MiwzNTU4NCwzNTk4MCwzNjAzMSwzNzUwMiwzODQ1MCwyMTUzNiwzODk1NiwyMTI3MSwyMDY5MywyMTM0MCwyMjY5NiwyNTc3OCwyNjQyMCwyOTI4NywzMDU2NiwzMTMwMiwzNzM1MCwyMTE4NywyNzgwOSwyNzUyNiwyMjUyOCwyNDE0MCwyMjg2OCwyNjQxMiwzMjc2MywyMDk2MSwzMDQwNiwyNTcwNSwzMDk1MiwzOTc2NCw0MDYzNSwyMjQ3NSwyMjk2OSwyNjE1MSwyNjUyMiwyNzU5OCwyMTczNywyNzA5NywyNDE0OSwzMzE4MCwyNjUxNywzOTg1MCwyNjYyMiw0MDAxOCwyNjcxNywyMDEzNCwyMDQ1MSwyMTQ0OCwyNTI3MywyNjQxMSwyNzgxOSwzNjgwNCwyMDM5NywzMjM2NSw0MDYzOSwxOTk3NSwyNDkzMCwyODI4OCwyODQ1OSwzNDA2NywyMTYxOSwyNjQxMCwzOTc0OSwyNDA1MSwzMTYzNywyMzcyNCwyMzQ5NCwzNDU4OCwyODIzNCwzNDAwMSwzMTI1MiwzMzAzMiwyMjkzNywzMTg4NSwyNzY2NSwzMDQ5NiwyMTIwOSwyMjgxOCwyODk2MSwyOTI3OSwzMDY4MywzODY5NSw0MDI4OSwyNjg5MSwyMzE2NywyMzA2NCwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwzMDQzMSwzNjg1NSwzNzUyOCw0MDE4MCwyMzAxOCwyOTI3NywyODM1NywyMDgxMywyNjgyNSwzMjE5MSwzMjIzNiwzODc1NCw0MDYzNCwyNTcyMCwyNzE2OSwzMzUzOCwyMjkxNiwyMzM5MSwyNzYxMSwyOTQ2NywzMDQ1MCwzMjE3OCwzMjc5MSwzMzk0NSwyMDc4NiwyNjQwOCw0MDY2NSwzMDQ0NiwyNjQ2NiwyMTI0NywzOTE3MywyMzU4OCwyNTE0NywzMTg3MCwzNjAxNiwyMTgzOSwyNDc1OCwzMjAxMSwzODI3MiwyMTI0OSwyMDA2MywyMDkxOCwyMjgxMiwyOTI0MiwzMjgyMiwzNzMyNiwyNDM1NywzMDY5MCwyMTM4MCwyNDQ0MSwzMjAwNCwzNDIyMCwzNTM3OSwzNjQ5MywzODc0MiwyNjYxMSwzNDIyMiwzNzk3MSwyNDg0MSwyNDg0MCwyNzgzMywzMDI5MCwzNTU2NSwzNjY2NCwyMTgwNywyMDMwNSwyMDc3OCwyMTE5MSwyMTQ1MSwyMzQ2MSwyNDE4OSwyNDczNiwyNDk2MiwyNTU1OCwyNjM3NywyNjU4NiwyODI2MywyODA0NCwyOTQ5NCwyOTQ5NSwzMDAwMSwzMTA1NiwzNTAyOSwzNTQ4MCwzNjkzOCwzNzAwOSwzNzEwOSwzODU5NiwzNDcwMSwyMjgwNSwyMDEwNCwyMDMxMywxOTk4MiwzNTQ2NSwzNjY3MSwzODkyOCwyMDY1MywyNDE4OCwyMjkzNCwyMzQ4MSwyNDI0OCwyNTU2MiwyNTU5NCwyNTc5MywyNjMzMiwyNjk1NCwyNzA5NiwyNzkxNSwyODM0MiwyOTA3NiwyOTk5MiwzMTQwNywzMjY1MCwzMjc2OCwzMzg2NSwzMzk5MywzNTIwMSwzNTYxNywzNjM2MiwzNjk2NSwzODUyNSwzOTE3OCwyNDk1OCwyNTIzMywyNzQ0MiwyNzc3OSwyODAyMCwzMjcxNiwzMjc2NCwyODA5NiwzMjY0NSwzNDc0NiwzNTA2NCwyNjQ2OSwzMzcxMywzODk3MiwzODY0NywyNzkzMSwzMjA5NywzMzg1MywzNzIyNiwyMDA4MSwyMTM2NSwyMzg4OCwyNzM5NiwyODY1MSwzNDI1MywzNDM0OSwzNTIzOSwyMTAzMywyMTUxOSwyMzY1MywyNjQ0NiwyNjc5MiwyOTcwMiwyOTgyNywzMDE3OCwzNTAyMywzNTA0MSwzNzMyNCwzODYyNiwzODUyMCwyNDQ1OSwyOTU3NSwzMTQzNSwzMzg3MCwyNTUwNCwzMDA1MywyMTEyOSwyNzk2OSwyODMxNiwyOTcwNSwzMDA0MSwzMDgyNywzMTg5MCwzODUzNCwzMTQ1Miw0MDg0NSwyMDQwNiwyNDk0MiwyNjA1MywzNDM5NiwyMDEwMiwyMDE0MiwyMDY5OCwyMDAwMSwyMDk0MCwyMzUzNCwyNjAwOSwyNjc1MywyODA5MiwyOTQ3MSwzMDI3NCwzMDYzNywzMTI2MCwzMTk3NSwzMzM5MSwzNTUzOCwzNjk4OCwzNzMyNywzODUxNywzODkzNiwyMTE0NywzMjIwOSwyMDUyMywyMTQwMCwyNjUxOSwyODEwNywyOTEzNiwyOTc0NywzMzI1NiwzNjY1MCwzODU2Myw0MDAyMyw0MDYwNywyOTc5MiwyMjU5MywyODA1NywzMjA0NywzOTAwNiwyMDE5NiwyMDI3OCwyMDM2MywyMDkxOSwyMTE2OSwyMzk5NCwyNDYwNCwyOTYxOCwzMTAzNiwzMzQ5MSwzNzQyOCwzODU4MywzODY0NiwzODY2Niw0MDU5OSw0MDgwMiwyNjI3OCwyNzUwOCwyMTAxNSwyMTE1NSwyODg3MiwzNTAxMCwyNDI2NSwyNDY1MSwyNDk3NiwyODQ1MSwyOTAwMSwzMTgwNiwzMjI0NCwzMjg3OSwzNDAzMCwzNjg5OSwzNzY3NiwyMTU3MCwzOTc5MSwyNzM0NywyODgwOSwzNjAzNCwzNjMzNSwzODcwNiwyMTE3MiwyMzEwNSwyNDI2NiwyNDMyNCwyNjM5MSwyNzAwNCwyNzAyOCwyODAxMCwyODQzMSwyOTI4MiwyOTQzNiwzMTcyNSwzMjc2OSwzMjg5NCwzNDYzNSwzNzA3MCwyMDg0NSw0MDU5NSwzMTEwOCwzMjkwNywzNzY4MiwzNTU0MiwyMDUyNSwyMTY0NCwzNTQ0MSwyNzQ5OCwzNjAzNiwzMzAzMSwyNDc4NSwyNjUyOCw0MDQzNCwyMDEyMSwyMDEyMCwzOTk1MiwzNTQzNSwzNDI0MSwzNDE1MiwyNjg4MCwyODI4NiwzMDg3MSwzMzEwOSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDI0MzMyLDE5OTg0LDE5OTg5LDIwMDEwLDIwMDE3LDIwMDIyLDIwMDI4LDIwMDMxLDIwMDM0LDIwMDU0LDIwMDU2LDIwMDk4LDIwMTAxLDM1OTQ3LDIwMTA2LDMzMjk4LDI0MzMzLDIwMTEwLDIwMTI2LDIwMTI3LDIwMTI4LDIwMTMwLDIwMTQ0LDIwMTQ3LDIwMTUwLDIwMTc0LDIwMTczLDIwMTY0LDIwMTY2LDIwMTYyLDIwMTgzLDIwMTkwLDIwMjA1LDIwMTkxLDIwMjE1LDIwMjMzLDIwMzE0LDIwMjcyLDIwMzE1LDIwMzE3LDIwMzExLDIwMjk1LDIwMzQyLDIwMzYwLDIwMzY3LDIwMzc2LDIwMzQ3LDIwMzI5LDIwMzM2LDIwMzY5LDIwMzM1LDIwMzU4LDIwMzc0LDIwNzYwLDIwNDM2LDIwNDQ3LDIwNDMwLDIwNDQwLDIwNDQzLDIwNDMzLDIwNDQyLDIwNDMyLDIwNDUyLDIwNDUzLDIwNTA2LDIwNTIwLDIwNTAwLDIwNTIyLDIwNTE3LDIwNDg1LDIwMjUyLDIwNDcwLDIwNTEzLDIwNTIxLDIwNTI0LDIwNDc4LDIwNDYzLDIwNDk3LDIwNDg2LDIwNTQ3LDIwNTUxLDI2MzcxLDIwNTY1LDIwNTYwLDIwNTUyLDIwNTcwLDIwNTY2LDIwNTg4LDIwNjAwLDIwNjA4LDIwNjM0LDIwNjEzLDIwNjYwLDIwNjU4LDIwNjgxLDIwNjgyLDIwNjU5LDIwNjc0LDIwNjk0LDIwNzAyLDIwNzA5LDIwNzE3LDIwNzA3LDIwNzE4LDIwNzI5LDIwNzI1LDIwNzQ1LDIwNzM3LDIwNzM4LDIwNzU4LDIwNzU3LDIwNzU2LDIwNzYyLDIwNzY5LDIwNzk0LDIwNzkxLDIwNzk2LDIwNzk1LDIwNzk5LDIwODAwLDIwODE4LDIwODEyLDIwODIwLDIwODM0LDMxNDgwLDIwODQxLDIwODQyLDIwODQ2LDIwODY0LDIwODY2LDIyMjMyLDIwODc2LDIwODczLDIwODc5LDIwODgxLDIwODgzLDIwODg1LDIwODg2LDIwOTAwLDIwOTAyLDIwODk4LDIwOTA1LDIwOTA2LDIwOTA3LDIwOTE1LDIwOTEzLDIwOTE0LDIwOTEyLDIwOTE3LDIwOTI1LDIwOTMzLDIwOTM3LDIwOTU1LDIwOTYwLDM0Mzg5LDIwOTY5LDIwOTczLDIwOTc2LDIwOTgxLDIwOTkwLDIwOTk2LDIxMDAzLDIxMDEyLDIxMDA2LDIxMDMxLDIxMDM0LDIxMDM4LDIxMDQzLDIxMDQ5LDIxMDcxLDIxMDYwLDIxMDY3LDIxMDY4LDIxMDg2LDIxMDc2LDIxMDk4LDIxMTA4LDIxMDk3LDIxMTA3LDIxMTE5LDIxMTE3LDIxMTMzLDIxMTQwLDIxMTM4LDIxMTA1LDIxMTI4LDIxMTM3LDM2Nzc2LDM2Nzc1LDIxMTY0LDIxMTY1LDIxMTgwLDIxMTczLDIxMTg1LDIxMTk3LDIxMjA3LDIxMjE0LDIxMjE5LDIxMjIyLDM5MTQ5LDIxMjE2LDIxMjM1LDIxMjM3LDIxMjQwLDIxMjQxLDIxMjU0LDIxMjU2LDMwMDA4LDIxMjYxLDIxMjY0LDIxMjYzLDIxMjY5LDIxMjc0LDIxMjgzLDIxMjk1LDIxMjk3LDIxMjk5LDIxMzA0LDIxMzEyLDIxMzE4LDIxMzE3LDE5OTkxLDIxMzIxLDIxMzI1LDIwOTUwLDIxMzQyLDIxMzUzLDIxMzU4LDIyODA4LDIxMzcxLDIxMzY3LDIxMzc4LDIxMzk4LDIxNDA4LDIxNDE0LDIxNDEzLDIxNDIyLDIxNDI0LDIxNDMwLDIxNDQzLDMxNzYyLDM4NjE3LDIxNDcxLDI2MzY0LDI5MTY2LDIxNDg2LDIxNDgwLDIxNDg1LDIxNDk4LDIxNTA1LDIxNTY1LDIxNTY4LDIxNTQ4LDIxNTQ5LDIxNTY0LDIxNTUwLDIxNTU4LDIxNTQ1LDIxNTMzLDIxNTgyLDIxNjQ3LDIxNjIxLDIxNjQ2LDIxNTk5LDIxNjE3LDIxNjIzLDIxNjE2LDIxNjUwLDIxNjI3LDIxNjMyLDIxNjIyLDIxNjM2LDIxNjQ4LDIxNjM4LDIxNzAzLDIxNjY2LDIxNjg4LDIxNjY5LDIxNjc2LDIxNzAwLDIxNzA0LDIxNjcyLDIxNjc1LDIxNjk4LDIxNjY4LDIxNjk0LDIxNjkyLDIxNzIwLDIxNzMzLDIxNzM0LDIxNzc1LDIxNzgwLDIxNzU3LDIxNzQyLDIxNzQxLDIxNzU0LDIxNzMwLDIxODE3LDIxODI0LDIxODU5LDIxODM2LDIxODA2LDIxODUyLDIxODI5LDIxODQ2LDIxODQ3LDIxODE2LDIxODExLDIxODUzLDIxOTEzLDIxODg4LDIxNjc5LDIxODk4LDIxOTE5LDIxODgzLDIxODg2LDIxOTEyLDIxOTE4LDIxOTM0LDIxODg0LDIxODkxLDIxOTI5LDIxODk1LDIxOTI4LDIxOTc4LDIxOTU3LDIxOTgzLDIxOTU2LDIxOTgwLDIxOTg4LDIxOTcyLDIyMDM2LDIyMDA3LDIyMDM4LDIyMDE0LDIyMDEzLDIyMDQzLDIyMDA5LDIyMDk0LDIyMDk2LDI5MTUxLDIyMDY4LDIyMDcwLDIyMDY2LDIyMDcyLDIyMTIzLDIyMTE2LDIyMDYzLDIyMTI0LDIyMTIyLDIyMTUwLDIyMTQ0LDIyMTU0LDIyMTc2LDIyMTY0LDIyMTU5LDIyMTgxLDIyMTkwLDIyMTk4LDIyMTk2LDIyMjEwLDIyMjA0LDIyMjA5LDIyMjExLDIyMjA4LDIyMjE2LDIyMjIyLDIyMjI1LDIyMjI3LDIyMjMxLDIyMjU0LDIyMjY1LDIyMjcyLDIyMjcxLDIyMjc2LDIyMjgxLDIyMjgwLDIyMjgzLDIyMjg1LDIyMjkxLDIyMjk2LDIyMjk0LDIxOTU5LDIyMzAwLDIyMzEwLDIyMzI3LDIyMzI4LDIyMzUwLDIyMzMxLDIyMzM2LDIyMzUxLDIyMzc3LDIyNDY0LDIyNDA4LDIyMzY5LDIyMzk5LDIyNDA5LDIyNDE5LDIyNDMyLDIyNDUxLDIyNDM2LDIyNDQyLDIyNDQ4LDIyNDY3LDIyNDcwLDIyNDg0LDIyNDgyLDIyNDgzLDIyNTM4LDIyNDg2LDIyNDk5LDIyNTM5LDIyNTUzLDIyNTU3LDIyNjQyLDIyNTYxLDIyNjI2LDIyNjAzLDIyNjQwLDI3NTg0LDIyNjEwLDIyNTg5LDIyNjQ5LDIyNjYxLDIyNzEzLDIyNjg3LDIyNjk5LDIyNzE0LDIyNzUwLDIyNzE1LDIyNzEyLDIyNzAyLDIyNzI1LDIyNzM5LDIyNzM3LDIyNzQzLDIyNzQ1LDIyNzQ0LDIyNzU3LDIyNzQ4LDIyNzU2LDIyNzUxLDIyNzY3LDIyNzc4LDIyNzc3LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzg2LDIyNzk0LDIyODAwLDIyODExLDI2NzkwLDIyODIxLDIyODI4LDIyODI5LDIyODM0LDIyODQwLDIyODQ2LDMxNDQyLDIyODY5LDIyODY0LDIyODYyLDIyODc0LDIyODcyLDIyODgyLDIyODgwLDIyODg3LDIyODkyLDIyODg5LDIyOTA0LDIyOTEzLDIyOTQxLDIwMzE4LDIwMzk1LDIyOTQ3LDIyOTYyLDIyOTgyLDIzMDE2LDIzMDA0LDIyOTI1LDIzMDAxLDIzMDAyLDIzMDc3LDIzMDcxLDIzMDU3LDIzMDY4LDIzMDQ5LDIzMDY2LDIzMTA0LDIzMTQ4LDIzMTEzLDIzMDkzLDIzMDk0LDIzMTM4LDIzMTQ2LDIzMTk0LDIzMjI4LDIzMjMwLDIzMjQzLDIzMjM0LDIzMjI5LDIzMjY3LDIzMjU1LDIzMjcwLDIzMjczLDIzMjU0LDIzMjkwLDIzMjkxLDIzMzA4LDIzMzA3LDIzMzE4LDIzMzQ2LDIzMjQ4LDIzMzM4LDIzMzUwLDIzMzU4LDIzMzYzLDIzMzY1LDIzMzYwLDIzMzc3LDIzMzgxLDIzMzg2LDIzMzg3LDIzMzk3LDIzNDAxLDIzNDA4LDIzNDExLDIzNDEzLDIzNDE2LDI1OTkyLDIzNDE4LDIzNDI0LDIzNDI3LDIzNDYyLDIzNDgwLDIzNDkxLDIzNDk1LDIzNDk3LDIzNTA4LDIzNTA0LDIzNTI0LDIzNTI2LDIzNTIyLDIzNTE4LDIzNTI1LDIzNTMxLDIzNTM2LDIzNTQyLDIzNTM5LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTY1LDIzNTcxLDIzNTg0LDIzNTg2LDIzNTkyLDIzNjA4LDIzNjA5LDIzNjE3LDIzNjIyLDIzNjMwLDIzNjM1LDIzNjMyLDIzNjMxLDIzNDA5LDIzNjYwLDIzNjYyLDIwMDY2LDIzNjcwLDIzNjczLDIzNjkyLDIzNjk3LDIzNzAwLDIyOTM5LDIzNzIzLDIzNzM5LDIzNzM0LDIzNzQwLDIzNzM1LDIzNzQ5LDIzNzQyLDIzNzUxLDIzNzY5LDIzNzg1LDIzODA1LDIzODAyLDIzNzg5LDIzOTQ4LDIzNzg2LDIzODE5LDIzODI5LDIzODMxLDIzOTAwLDIzODM5LDIzODM1LDIzODI1LDIzODI4LDIzODQyLDIzODM0LDIzODMzLDIzODMyLDIzODg0LDIzODkwLDIzODg2LDIzODgzLDIzOTE2LDIzOTIzLDIzOTI2LDIzOTQzLDIzOTQwLDIzOTM4LDIzOTcwLDIzOTY1LDIzOTgwLDIzOTgyLDIzOTk3LDIzOTUyLDIzOTkxLDIzOTk2LDI0MDA5LDI0MDEzLDI0MDE5LDI0MDE4LDI0MDIyLDI0MDI3LDI0MDQzLDI0MDUwLDI0MDUzLDI0MDc1LDI0MDkwLDI0MDg5LDI0MDgxLDI0MDkxLDI0MTE4LDI0MTE5LDI0MTMyLDI0MTMxLDI0MTI4LDI0MTQyLDI0MTUxLDI0MTQ4LDI0MTU5LDI0MTYyLDI0MTY0LDI0MTM1LDI0MTgxLDI0MTgyLDI0MTg2LDQwNjM2LDI0MTkxLDI0MjI0LDI0MjU3LDI0MjU4LDI0MjY0LDI0MjcyLDI0MjcxLDI0Mjc4LDI0MjkxLDI0Mjg1LDI0MjgyLDI0MjgzLDI0MjkwLDI0Mjg5LDI0Mjk2LDI0Mjk3LDI0MzAwLDI0MzA1LDI0MzA3LDI0MzA0LDI0MzA4LDI0MzEyLDI0MzE4LDI0MzIzLDI0MzI5LDI0NDEzLDI0NDEyLDI0MzMxLDI0MzM3LDI0MzQyLDI0MzYxLDI0MzY1LDI0Mzc2LDI0Mzg1LDI0MzkyLDI0Mzk2LDI0Mzk4LDI0MzY3LDI0NDAxLDI0NDA2LDI0NDA3LDI0NDA5LDI0NDE3LDI0NDI5LDI0NDM1LDI0NDM5LDI0NDUxLDI0NDUwLDI0NDQ3LDI0NDU4LDI0NDU2LDI0NDY1LDI0NDU1LDI0NDc4LDI0NDczLDI0NDcyLDI0NDgwLDI0NDg4LDI0NDkzLDI0NTA4LDI0NTM0LDI0NTcxLDI0NTQ4LDI0NTY4LDI0NTYxLDI0NTQxLDI0NzU1LDI0NTc1LDI0NjA5LDI0NjcyLDI0NjAxLDI0NTkyLDI0NjE3LDI0NTkwLDI0NjI1LDI0NjAzLDI0NTk3LDI0NjE5LDI0NjE0LDI0NTkxLDI0NjM0LDI0NjY2LDI0NjQxLDI0NjgyLDI0Njk1LDI0NjcxLDI0NjUwLDI0NjQ2LDI0NjUzLDI0Njc1LDI0NjQzLDI0Njc2LDI0NjQyLDI0Njg0LDI0NjgzLDI0NjY1LDI0NzA1LDI0NzE3LDI0ODA3LDI0NzA3LDI0NzMwLDI0NzA4LDI0NzMxLDI0NzI2LDI0NzI3LDI0NzIyLDI0NzQzLDI0NzE1LDI0ODAxLDI0NzYwLDI0ODAwLDI0Nzg3LDI0NzU2LDI0NTYwLDI0NzY1LDI0Nzc0LDI0NzU3LDI0NzkyLDI0OTA5LDI0ODUzLDI0ODM4LDI0ODIyLDI0ODIzLDI0ODMyLDI0ODIwLDI0ODI2LDI0ODM1LDI0ODY1LDI0ODI3LDI0ODE3LDI0ODQ1LDI0ODQ2LDI0OTAzLDI0ODk0LDI0ODcyLDI0ODcxLDI0OTA2LDI0ODk1LDI0ODkyLDI0ODc2LDI0ODg0LDI0ODkzLDI0ODk4LDI0OTAwLDI0OTQ3LDI0OTUxLDI0OTIwLDI0OTIxLDI0OTIyLDI0OTM5LDI0OTQ4LDI0OTQzLDI0OTMzLDI0OTQ1LDI0OTI3LDI0OTI1LDI0OTE1LDI0OTQ5LDI0OTg1LDI0OTgyLDI0OTY3LDI1MDA0LDI0OTgwLDI0OTg2LDI0OTcwLDI0OTc3LDI1MDAzLDI1MDA2LDI1MDM2LDI1MDM0LDI1MDMzLDI1MDc5LDI1MDMyLDI1MDI3LDI1MDMwLDI1MDE4LDI1MDM1LDMyNjMzLDI1MDM3LDI1MDYyLDI1MDU5LDI1MDc4LDI1MDgyLDI1MDc2LDI1MDg3LDI1MDg1LDI1MDg0LDI1MDg2LDI1MDg4LDI1MDk2LDI1MDk3LDI1MTAxLDI1MTAwLDI1MTA4LDI1MTE1LDI1MTE4LDI1MTIxLDI1MTMwLDI1MTM0LDI1MTM2LDI1MTM4LDI1MTM5LDI1MTUzLDI1MTY2LDI1MTgyLDI1MTg3LDI1MTc5LDI1MTg0LDI1MTkyLDI1MjEyLDI1MjE4LDI1MjI1LDI1MjE0LDI1MjM0LDI1MjM1LDI1MjM4LDI1MzAwLDI1MjE5LDI1MjM2LDI1MzAzLDI1Mjk3LDI1Mjc1LDI1Mjk1LDI1MzQzLDI1Mjg2LDI1ODEyLDI1Mjg4LDI1MzA4LDI1MjkyLDI1MjkwLDI1MjgyLDI1Mjg3LDI1MjQzLDI1Mjg5LDI1MzU2LDI1MzI2LDI1MzI5LDI1MzgzLDI1MzQ2LDI1MzUyLDI1MzI3LDI1MzMzLDI1NDI0LDI1NDA2LDI1NDIxLDI1NjI4LDI1NDIzLDI1NDk0LDI1NDg2LDI1NDcyLDI1NTE1LDI1NDYyLDI1NTA3LDI1NDg3LDI1NDgxLDI1NTAzLDI1NTI1LDI1NDUxLDI1NDQ5LDI1NTM0LDI1NTc3LDI1NTM2LDI1NTQyLDI1NTcxLDI1NTQ1LDI1NTU0LDI1NTkwLDI1NTQwLDI1NjIyLDI1NjUyLDI1NjA2LDI1NjE5LDI1NjM4LDI1NjU0LDI1ODg1LDI1NjIzLDI1NjQwLDI1NjE1LDI1NzAzLDI1NzExLDI1NzE4LDI1Njc4LDI1ODk4LDI1NzQ5LDI1NzQ3LDI1NzY1LDI1NzY5LDI1NzM2LDI1Nzg4LDI1ODE4LDI1ODEwLDI1Nzk3LDI1Nzk5LDI1Nzg3LDI1ODE2LDI1Nzk0LDI1ODQxLDI1ODMxLDMzMjg5LDI1ODI0LDI1ODI1LDI1MjYwLDI1ODI3LDI1ODM5LDI1OTAwLDI1ODQ2LDI1ODQ0LDI1ODQyLDI1ODUwLDI1ODU2LDI1ODUzLDI1ODgwLDI1ODg0LDI1ODYxLDI1ODkyLDI1ODkxLDI1ODk5LDI1OTA4LDI1OTA5LDI1OTExLDI1OTEwLDI1OTEyLDMwMDI3LDI1OTI4LDI1OTQyLDI1OTQxLDI1OTMzLDI1OTQ0LDI1OTUwLDI1OTQ5LDI1OTcwLDI1OTc2LDI1OTg2LDI1OTg3LDM1NzIyLDI2MDExLDI2MDE1LDI2MDI3LDI2MDM5LDI2MDUxLDI2MDU0LDI2MDQ5LDI2MDUyLDI2MDYwLDI2MDY2LDI2MDc1LDI2MDczLDI2MDgwLDI2MDgxLDI2MDk3LDI2NDgyLDI2MTIyLDI2MTE1LDI2MTA3LDI2NDgzLDI2MTY1LDI2MTY2LDI2MTY0LDI2MTQwLDI2MTkxLDI2MTgwLDI2MTg1LDI2MTc3LDI2MjA2LDI2MjA1LDI2MjEyLDI2MjE1LDI2MjE2LDI2MjA3LDI2MjEwLDI2MjI0LDI2MjQzLDI2MjQ4LDI2MjU0LDI2MjQ5LDI2MjQ0LDI2MjY0LDI2MjY5LDI2MzA1LDI2Mjk3LDI2MzEzLDI2MzAyLDI2MzAwLDI2MzA4LDI2Mjk2LDI2MzI2LDI2MzMwLDI2MzM2LDI2MTc1LDI2MzQyLDI2MzQ1LDI2MzUyLDI2MzU3LDI2MzU5LDI2MzgzLDI2MzkwLDI2Mzk4LDI2NDA2LDI2NDA3LDM4NzEyLDI2NDE0LDI2NDMxLDI2NDIyLDI2NDMzLDI2NDI0LDI2NDIzLDI2NDM4LDI2NDYyLDI2NDY0LDI2NDU3LDI2NDY3LDI2NDY4LDI2NTA1LDI2NDgwLDI2NTM3LDI2NDkyLDI2NDc0LDI2NTA4LDI2NTA3LDI2NTM0LDI2NTI5LDI2NTAxLDI2NTUxLDI2NjA3LDI2NTQ4LDI2NjA0LDI2NTQ3LDI2NjAxLDI2NTUyLDI2NTk2LDI2NTkwLDI2NTg5LDI2NTk0LDI2NjA2LDI2NTUzLDI2NTc0LDI2NTY2LDI2NTk5LDI3MjkyLDI2NjU0LDI2Njk0LDI2NjY1LDI2Njg4LDI2NzAxLDI2Njc0LDI2NzAyLDI2ODAzLDI2NjY3LDI2NzEzLDI2NzIzLDI2NzQzLDI2NzUxLDI2NzgzLDI2NzY3LDI2Nzk3LDI2NzcyLDI2NzgxLDI2Nzc5LDI2NzU1LDI3MzEwLDI2ODA5LDI2NzQwLDI2ODA1LDI2Nzg0LDI2ODEwLDI2ODk1LDI2NzY1LDI2NzUwLDI2ODgxLDI2ODI2LDI2ODg4LDI2ODQwLDI2OTE0LDI2OTE4LDI2ODQ5LDI2ODkyLDI2ODI5LDI2ODM2LDI2ODU1LDI2ODM3LDI2OTM0LDI2ODk4LDI2ODg0LDI2ODM5LDI2ODUxLDI2OTE3LDI2ODczLDI2ODQ4LDI2ODYzLDI2OTIwLDI2OTIyLDI2OTA2LDI2OTE1LDI2OTEzLDI2ODIyLDI3MDAxLDI2OTk5LDI2OTcyLDI3MDAwLDI2OTg3LDI2OTY0LDI3MDA2LDI2OTkwLDI2OTM3LDI2OTk2LDI2OTQxLDI2OTY5LDI2OTI4LDI2OTc3LDI2OTc0LDI2OTczLDI3MDA5LDI2OTg2LDI3MDU4LDI3MDU0LDI3MDg4LDI3MDcxLDI3MDczLDI3MDkxLDI3MDcwLDI3MDg2LDIzNTI4LDI3MDgyLDI3MTAxLDI3MDY3LDI3MDc1LDI3MDQ3LDI3MTgyLDI3MDI1LDI3MDQwLDI3MDM2LDI3MDI5LDI3MDYwLDI3MTAyLDI3MTEyLDI3MTM4LDI3MTYzLDI3MTM1LDI3NDAyLDI3MTI5LDI3MTIyLDI3MTExLDI3MTQxLDI3MDU3LDI3MTY2LDI3MTE3LDI3MTU2LDI3MTE1LDI3MTQ2LDI3MTU0LDI3MzI5LDI3MTcxLDI3MTU1LDI3MjA0LDI3MTQ4LDI3MjUwLDI3MTkwLDI3MjU2LDI3MjA3LDI3MjM0LDI3MjI1LDI3MjM4LDI3MjA4LDI3MTkyLDI3MTcwLDI3MjgwLDI3Mjc3LDI3Mjk2LDI3MjY4LDI3Mjk4LDI3Mjk5LDI3Mjg3LDM0MzI3LDI3MzIzLDI3MzMxLDI3MzMwLDI3MzIwLDI3MzE1LDI3MzA4LDI3MzU4LDI3MzQ1LDI3MzU5LDI3MzA2LDI3MzU0LDI3MzcwLDI3Mzg3LDI3Mzk3LDM0MzI2LDI3Mzg2LDI3NDEwLDI3NDE0LDM5NzI5LDI3NDIzLDI3NDQ4LDI3NDQ3LDMwNDI4LDI3NDQ5LDM5MTUwLDI3NDYzLDI3NDU5LDI3NDY1LDI3NDcyLDI3NDgxLDI3NDc2LDI3NDgzLDI3NDg3LDI3NDg5LDI3NTEyLDI3NTEzLDI3NTE5LDI3NTIwLDI3NTI0LDI3NTIzLDI3NTMzLDI3NTQ0LDI3NTQxLDI3NTUwLDI3NTU2LDI3NTYyLDI3NTYzLDI3NTY3LDI3NTcwLDI3NTY5LDI3NTcxLDI3NTc1LDI3NTgwLDI3NTkwLDI3NTk1LDI3NjAzLDI3NjE1LDI3NjI4LDI3NjI3LDI3NjM1LDI3NjMxLDQwNjM4LDI3NjU2LDI3NjY3LDI3NjY4LDI3Njc1LDI3Njg0LDI3NjgzLDI3NzQyLDI3NzMzLDI3NzQ2LDI3NzU0LDI3Nzc4LDI3Nzg5LDI3ODAyLDI3Nzc3LDI3ODAzLDI3Nzc0LDI3NzUyLDI3NzYzLDI3Nzk0LDI3NzkyLDI3ODQ0LDI3ODg5LDI3ODU5LDI3ODM3LDI3ODYzLDI3ODQ1LDI3ODY5LDI3ODIyLDI3ODI1LDI3ODM4LDI3ODM0LDI3ODY3LDI3ODg3LDI3ODY1LDI3ODgyLDI3OTM1LDM0ODkzLDI3OTU4LDI3OTQ3LDI3OTY1LDI3OTYwLDI3OTI5LDI3OTU3LDI3OTU1LDI3OTIyLDI3OTE2LDI4MDAzLDI4MDUxLDI4MDA0LDI3OTk0LDI4MDI1LDI3OTkzLDI4MDQ2LDI4MDUzLDI4NjQ0LDI4MDM3LDI4MTUzLDI4MTgxLDI4MTcwLDI4MDg1LDI4MTAzLDI4MTM0LDI4MDg4LDI4MTAyLDI4MTQwLDI4MTI2LDI4MTA4LDI4MTM2LDI4MTE0LDI4MTAxLDI4MTU0LDI4MTIxLDI4MTMyLDI4MTE3LDI4MTM4LDI4MTQyLDI4MjA1LDI4MjcwLDI4MjA2LDI4MTg1LDI4Mjc0LDI4MjU1LDI4MjIyLDI4MTk1LDI4MjY3LDI4MjAzLDI4Mjc4LDI4MjM3LDI4MTkxLDI4MjI3LDI4MjE4LDI4MjM4LDI4MTk2LDI4NDE1LDI4MTg5LDI4MjE2LDI4MjkwLDI4MzMwLDI4MzEyLDI4MzYxLDI4MzQzLDI4MzcxLDI4MzQ5LDI4MzM1LDI4MzU2LDI4MzM4LDI4MzcyLDI4MzczLDI4MzAzLDI4MzI1LDI4MzU0LDI4MzE5LDI4NDgxLDI4NDMzLDI4NzQ4LDI4Mzk2LDI4NDA4LDI4NDE0LDI4NDc5LDI4NDAyLDI4NDY1LDI4Mzk5LDI4NDY2LDI4MzY0LDI4NDc4LDI4NDM1LDI4NDA3LDI4NTUwLDI4NTM4LDI4NTM2LDI4NTQ1LDI4NTQ0LDI4NTI3LDI4NTA3LDI4NjU5LDI4NTI1LDI4NTQ2LDI4NTQwLDI4NTA0LDI4NTU4LDI4NTYxLDI4NjEwLDI4NTE4LDI4NTk1LDI4NTc5LDI4NTc3LDI4NTgwLDI4NjAxLDI4NjE0LDI4NTg2LDI4NjM5LDI4NjI5LDI4NjUyLDI4NjI4LDI4NjMyLDI4NjU3LDI4NjU0LDI4NjM1LDI4NjgxLDI4NjgzLDI4NjY2LDI4Njg5LDI4NjczLDI4Njg3LDI4NjcwLDI4Njk5LDI4Njk4LDI4NTMyLDI4NzAxLDI4Njk2LDI4NzAzLDI4NzIwLDI4NzM0LDI4NzIyLDI4NzUzLDI4NzcxLDI4ODI1LDI4ODE4LDI4ODQ3LDI4OTEzLDI4ODQ0LDI4ODU2LDI4ODUxLDI4ODQ2LDI4ODk1LDI4ODc1LDI4ODkzLDI4ODg5LDI4OTM3LDI4OTI1LDI4OTU2LDI4OTUzLDI5MDI5LDI5MDEzLDI5MDY0LDI5MDMwLDI5MDI2LDI5MDA0LDI5MDE0LDI5MDM2LDI5MDcxLDI5MTc5LDI5MDYwLDI5MDc3LDI5MDk2LDI5MTAwLDI5MTQzLDI5MTEzLDI5MTE4LDI5MTM4LDI5MTI5LDI5MTQwLDI5MTM0LDI5MTUyLDI5MTY0LDI5MTU5LDI5MTczLDI5MTgwLDI5MTc3LDI5MTgzLDI5MTk3LDI5MjAwLDI5MjExLDI5MjI0LDI5MjI5LDI5MjI4LDI5MjMyLDI5MjM0LDI5MjQzLDI5MjQ0LDI5MjQ3LDI5MjQ4LDI5MjU0LDI5MjU5LDI5MjcyLDI5MzAwLDI5MzEwLDI5MzE0LDI5MzEzLDI5MzE5LDI5MzMwLDI5MzM0LDI5MzQ2LDI5MzUxLDI5MzY5LDI5MzYyLDI5Mzc5LDI5MzgyLDI5MzgwLDI5MzkwLDI5Mzk0LDI5NDEwLDI5NDA4LDI5NDA5LDI5NDMzLDI5NDMxLDIwNDk1LDI5NDYzLDI5NDUwLDI5NDY4LDI5NDYyLDI5NDY5LDI5NDkyLDI5NDg3LDI5NDgxLDI5NDc3LDI5NTAyLDI5NTE4LDI5NTE5LDQwNjY0LDI5NTI3LDI5NTQ2LDI5NTQ0LDI5NTUyLDI5NTYwLDI5NTU3LDI5NTYzLDI5NTYyLDI5NjQwLDI5NjE5LDI5NjQ2LDI5NjI3LDI5NjMyLDI5NjY5LDI5Njc4LDI5NjYyLDI5ODU4LDI5NzAxLDI5ODA3LDI5NzMzLDI5Njg4LDI5NzQ2LDI5NzU0LDI5NzgxLDI5NzU5LDI5NzkxLDI5Nzg1LDI5NzYxLDI5Nzg4LDI5ODAxLDI5ODA4LDI5Nzk1LDI5ODAyLDI5ODE0LDI5ODIyLDI5ODM1LDI5ODU0LDI5ODYzLDI5ODk4LDI5OTAzLDI5OTA4LDI5NjgxLDI5OTIwLDI5OTIzLDI5OTI3LDI5OTI5LDI5OTM0LDI5OTM4LDI5OTM2LDI5OTM3LDI5OTQ0LDI5OTQzLDI5OTU2LDI5OTU1LDI5OTU3LDI5OTY0LDI5OTY2LDI5OTY1LDI5OTczLDI5OTcxLDI5OTgyLDI5OTkwLDI5OTk2LDMwMDEyLDMwMDIwLDMwMDI5LDMwMDI2LDMwMDI1LDMwMDQzLDMwMDIyLDMwMDQyLDMwMDU3LDMwMDUyLDMwMDU1LDMwMDU5LDMwMDYxLDMwMDcyLDMwMDcwLDMwMDg2LDMwMDg3LDMwMDY4LDMwMDkwLDMwMDg5LDMwMDgyLDMwMTAwLDMwMTA2LDMwMTA5LDMwMTE3LDMwMTE1LDMwMTQ2LDMwMTMxLDMwMTQ3LDMwMTMzLDMwMTQxLDMwMTM2LDMwMTQwLDMwMTI5LDMwMTU3LDMwMTU0LDMwMTYyLDMwMTY5LDMwMTc5LDMwMTc0LDMwMjA2LDMwMjA3LDMwMjA0LDMwMjA5LDMwMTkyLDMwMjAyLDMwMTk0LDMwMTk1LDMwMjE5LDMwMjIxLDMwMjE3LDMwMjM5LDMwMjQ3LDMwMjQwLDMwMjQxLDMwMjQyLDMwMjQ0LDMwMjYwLDMwMjU2LDMwMjY3LDMwMjc5LDMwMjgwLDMwMjc4LDMwMzAwLDMwMjk2LDMwMzA1LDMwMzA2LDMwMzEyLDMwMzEzLDMwMzE0LDMwMzExLDMwMzE2LDMwMzIwLDMwMzIyLDMwMzI2LDMwMzI4LDMwMzMyLDMwMzM2LDMwMzM5LDMwMzQ0LDMwMzQ3LDMwMzUwLDMwMzU4LDMwMzU1LDMwMzYxLDMwMzYyLDMwMzg0LDMwMzg4LDMwMzkyLDMwMzkzLDMwMzk0LDMwNDAyLDMwNDEzLDMwNDIyLDMwNDE4LDMwNDMwLDMwNDMzLDMwNDM3LDMwNDM5LDMwNDQyLDM0MzUxLDMwNDU5LDMwNDcyLDMwNDcxLDMwNDY4LDMwNTA1LDMwNTAwLDMwNDk0LDMwNTAxLDMwNTAyLDMwNDkxLDMwNTE5LDMwNTIwLDMwNTM1LDMwNTU0LDMwNTY4LDMwNTcxLDMwNTU1LDMwNTY1LDMwNTkxLDMwNTkwLDMwNTg1LDMwNjA2LDMwNjAzLDMwNjA5LDMwNjI0LDMwNjIyLDMwNjQwLDMwNjQ2LDMwNjQ5LDMwNjU1LDMwNjUyLDMwNjUzLDMwNjUxLDMwNjYzLDMwNjY5LDMwNjc5LDMwNjgyLDMwNjg0LDMwNjkxLDMwNzAyLDMwNzE2LDMwNzMyLDMwNzM4LDMxMDE0LDMwNzUyLDMxMDE4LDMwNzg5LDMwODYyLDMwODM2LDMwODU0LDMwODQ0LDMwODc0LDMwODYwLDMwODgzLDMwOTAxLDMwODkwLDMwODk1LDMwOTI5LDMwOTE4LDMwOTIzLDMwOTMyLDMwOTEwLDMwOTA4LDMwOTE3LDMwOTIyLDMwOTU2LDMwOTUxLDMwOTM4LDMwOTczLDMwOTY0LDMwOTgzLDMwOTk0LDMwOTkzLDMxMDAxLDMxMDIwLDMxMDE5LDMxMDQwLDMxMDcyLDMxMDYzLDMxMDcxLDMxMDY2LDMxMDYxLDMxMDU5LDMxMDk4LDMxMTAzLDMxMTE0LDMxMTMzLDMxMTQzLDQwNzc5LDMxMTQ2LDMxMTUwLDMxMTU1LDMxMTYxLDMxMTYyLDMxMTc3LDMxMTg5LDMxMjA3LDMxMjEyLDMxMjAxLDMxMjAzLDMxMjQwLDMxMjQ1LDMxMjU2LDMxMjU3LDMxMjY0LDMxMjYzLDMxMTA0LDMxMjgxLDMxMjkxLDMxMjk0LDMxMjg3LDMxMjk5LDMxMzE5LDMxMzA1LDMxMzI5LDMxMzMwLDMxMzM3LDQwODYxLDMxMzQ0LDMxMzUzLDMxMzU3LDMxMzY4LDMxMzgzLDMxMzgxLDMxMzg0LDMxMzgyLDMxNDAxLDMxNDMyLDMxNDA4LDMxNDE0LDMxNDI5LDMxNDI4LDMxNDIzLDM2OTk1LDMxNDMxLDMxNDM0LDMxNDM3LDMxNDM5LDMxNDQ1LDMxNDQzLDMxNDQ5LDMxNDUwLDMxNDUzLDMxNDU3LDMxNDU4LDMxNDYyLDMxNDY5LDMxNDcyLDMxNDkwLDMxNTAzLDMxNDk4LDMxNDk0LDMxNTM5LDMxNTEyLDMxNTEzLDMxNTE4LDMxNTQxLDMxNTI4LDMxNTQyLDMxNTY4LDMxNjEwLDMxNDkyLDMxNTY1LDMxNDk5LDMxNTY0LDMxNTU3LDMxNjA1LDMxNTg5LDMxNjA0LDMxNTkxLDMxNjAwLDMxNjAxLDMxNTk2LDMxNTk4LDMxNjQ1LDMxNjQwLDMxNjQ3LDMxNjI5LDMxNjQ0LDMxNjQyLDMxNjI3LDMxNjM0LDMxNjMxLDMxNTgxLDMxNjQxLDMxNjkxLDMxNjgxLDMxNjkyLDMxNjk1LDMxNjY4LDMxNjg2LDMxNzA5LDMxNzIxLDMxNzYxLDMxNzY0LDMxNzE4LDMxNzE3LDMxODQwLDMxNzQ0LDMxNzUxLDMxNzYzLDMxNzMxLDMxNzM1LDMxNzY3LDMxNzU3LDMxNzM0LDMxNzc5LDMxNzgzLDMxNzg2LDMxNzc1LDMxNzk5LDMxNzg3LDMxODA1LDMxODIwLDMxODExLDMxODI4LDMxODIzLDMxODA4LDMxODI0LDMxODMyLDMxODM5LDMxODQ0LDMxODMwLDMxODQ1LDMxODUyLDMxODYxLDMxODc1LDMxODg4LDMxOTA4LDMxOTE3LDMxOTA2LDMxOTE1LDMxOTA1LDMxOTEyLDMxOTIzLDMxOTIyLDMxOTIxLDMxOTE4LDMxOTI5LDMxOTMzLDMxOTM2LDMxOTQxLDMxOTM4LDMxOTYwLDMxOTU0LDMxOTY0LDMxOTcwLDM5NzM5LDMxOTgzLDMxOTg2LDMxOTg4LDMxOTkwLDMxOTk0LDMyMDA2LDMyMDAyLDMyMDI4LDMyMDIxLDMyMDEwLDMyMDY5LDMyMDc1LDMyMDQ2LDMyMDUwLDMyMDYzLDMyMDUzLDMyMDcwLDMyMTE1LDMyMDg2LDMyMDc4LDMyMTE0LDMyMTA0LDMyMTEwLDMyMDc5LDMyMDk5LDMyMTQ3LDMyMTM3LDMyMDkxLDMyMTQzLDMyMTI1LDMyMTU1LDMyMTg2LDMyMTc0LDMyMTYzLDMyMTgxLDMyMTk5LDMyMTg5LDMyMTcxLDMyMzE3LDMyMTYyLDMyMTc1LDMyMjIwLDMyMTg0LDMyMTU5LDMyMTc2LDMyMjE2LDMyMjIxLDMyMjI4LDMyMjIyLDMyMjUxLDMyMjQyLDMyMjI1LDMyMjYxLDMyMjY2LDMyMjkxLDMyMjg5LDMyMjc0LDMyMzA1LDMyMjg3LDMyMjY1LDMyMjY3LDMyMjkwLDMyMzI2LDMyMzU4LDMyMzE1LDMyMzA5LDMyMzEzLDMyMzIzLDMyMzExLDMyMzA2LDMyMzE0LDMyMzU5LDMyMzQ5LDMyMzQyLDMyMzUwLDMyMzQ1LDMyMzQ2LDMyMzc3LDMyMzYyLDMyMzYxLDMyMzgwLDMyMzc5LDMyMzg3LDMyMjEzLDMyMzgxLDM2NzgyLDMyMzgzLDMyMzkyLDMyMzkzLDMyMzk2LDMyNDAyLDMyNDAwLDMyNDAzLDMyNDA0LDMyNDA2LDMyMzk4LDMyNDExLDMyNDEyLDMyNTY4LDMyNTcwLDMyNTgxLDMyNTg4LDMyNTg5LDMyNTkwLDMyNTkyLDMyNTkzLDMyNTk3LDMyNTk2LDMyNjAwLDMyNjA3LDMyNjA4LDMyNjE2LDMyNjE3LDMyNjE1LDMyNjMyLDMyNjQyLDMyNjQ2LDMyNjQzLDMyNjQ4LDMyNjQ3LDMyNjUyLDMyNjYwLDMyNjcwLDMyNjY5LDMyNjY2LDMyNjc1LDMyNjg3LDMyNjkwLDMyNjk3LDMyNjg2LDMyNjk0LDMyNjk2LDM1Njk3LDMyNzA5LDMyNzEwLDMyNzE0LDMyNzI1LDMyNzI0LDMyNzM3LDMyNzQyLDMyNzQ1LDMyNzU1LDMyNzYxLDM5MTMyLDMyNzc0LDMyNzcyLDMyNzc5LDMyNzg2LDMyNzkyLDMyNzkzLDMyNzk2LDMyODAxLDMyODA4LDMyODMxLDMyODI3LDMyODQyLDMyODM4LDMyODUwLDMyODU2LDMyODU4LDMyODYzLDMyODY2LDMyODcyLDMyODgzLDMyODgyLDMyODgwLDMyODg2LDMyODg5LDMyODkzLDMyODk1LDMyOTAwLDMyOTAyLDMyOTAxLDMyOTIzLDMyOTE1LDMyOTIyLDMyOTQxLDIwODgwLDMyOTQwLDMyOTg3LDMyOTk3LDMyOTg1LDMyOTg5LDMyOTY0LDMyOTg2LDMyOTgyLDMzMDMzLDMzMDA3LDMzMDA5LDMzMDUxLDMzMDY1LDMzMDU5LDMzMDcxLDMzMDk5LDM4NTM5LDMzMDk0LDMzMDg2LDMzMTA3LDMzMTA1LDMzMDIwLDMzMTM3LDMzMTM0LDMzMTI1LDMzMTI2LDMzMTQwLDMzMTU1LDMzMTYwLDMzMTYyLDMzMTUyLDMzMTU0LDMzMTg0LDMzMTczLDMzMTg4LDMzMTg3LDMzMTE5LDMzMTcxLDMzMTkzLDMzMjAwLDMzMjA1LDMzMjE0LDMzMjA4LDMzMjEzLDMzMjE2LDMzMjE4LDMzMjEwLDMzMjI1LDMzMjI5LDMzMjMzLDMzMjQxLDMzMjQwLDMzMjI0LDMzMjQyLDMzMjQ3LDMzMjQ4LDMzMjU1LDMzMjc0LDMzMjc1LDMzMjc4LDMzMjgxLDMzMjgyLDMzMjg1LDMzMjg3LDMzMjkwLDMzMjkzLDMzMjk2LDMzMzAyLDMzMzIxLDMzMzIzLDMzMzM2LDMzMzMxLDMzMzQ0LDMzMzY5LDMzMzY4LDMzMzczLDMzMzcwLDMzMzc1LDMzMzgwLDMzMzc4LDMzMzg0LDMzMzg2LDMzMzg3LDMzMzI2LDMzMzkzLDMzMzk5LDMzNDAwLDMzNDA2LDMzNDIxLDMzNDI2LDMzNDUxLDMzNDM5LDMzNDY3LDMzNDUyLDMzNTA1LDMzNTA3LDMzNTAzLDMzNDkwLDMzNTI0LDMzNTIzLDMzNTMwLDMzNjgzLDMzNTM5LDMzNTMxLDMzNTI5LDMzNTAyLDMzNTQyLDMzNTAwLDMzNTQ1LDMzNDk3LDMzNTg5LDMzNTg4LDMzNTU4LDMzNTg2LDMzNTg1LDMzNjAwLDMzNTkzLDMzNjE2LDMzNjA1LDMzNTgzLDMzNTc5LDMzNTU5LDMzNTYwLDMzNjY5LDMzNjkwLDMzNzA2LDMzNjk1LDMzNjk4LDMzNjg2LDMzNTcxLDMzNjc4LDMzNjcxLDMzNjc0LDMzNjYwLDMzNzE3LDMzNjUxLDMzNjUzLDMzNjk2LDMzNjczLDMzNzA0LDMzNzgwLDMzODExLDMzNzcxLDMzNzQyLDMzNzg5LDMzNzk1LDMzNzUyLDMzODAzLDMzNzI5LDMzNzgzLDMzNzk5LDMzNzYwLDMzNzc4LDMzODA1LDMzODI2LDMzODI0LDMzNzI1LDMzODQ4LDM0MDU0LDMzNzg3LDMzOTAxLDMzODM0LDMzODUyLDM0MTM4LDMzOTI0LDMzOTExLDMzODk5LDMzOTY1LDMzOTAyLDMzOTIyLDMzODk3LDMzODYyLDMzODM2LDMzOTAzLDMzOTEzLDMzODQ1LDMzOTk0LDMzODkwLDMzOTc3LDMzOTgzLDMzOTUxLDM0MDA5LDMzOTk3LDMzOTc5LDM0MDEwLDM0MDAwLDMzOTg1LDMzOTkwLDM0MDA2LDMzOTUzLDM0MDgxLDM0MDQ3LDM0MDM2LDM0MDcxLDM0MDcyLDM0MDkyLDM0MDc5LDM0MDY5LDM0MDY4LDM0MDQ0LDM0MTEyLDM0MTQ3LDM0MTM2LDM0MTIwLDM0MTEzLDM0MzA2LDM0MTIzLDM0MTMzLDM0MTc2LDM0MjEyLDM0MTg0LDM0MTkzLDM0MTg2LDM0MjE2LDM0MTU3LDM0MTk2LDM0MjAzLDM0MjgyLDM0MTgzLDM0MjA0LDM0MTY3LDM0MTc0LDM0MTkyLDM0MjQ5LDM0MjM0LDM0MjU1LDM0MjMzLDM0MjU2LDM0MjYxLDM0MjY5LDM0Mjc3LDM0MjY4LDM0Mjk3LDM0MzE0LDM0MzIzLDM0MzE1LDM0MzAyLDM0Mjk4LDM0MzEwLDM0MzM4LDM0MzMwLDM0MzUyLDM0MzY3LDM0MzgxLDIwMDUzLDM0Mzg4LDM0Mzk5LDM0NDA3LDM0NDE3LDM0NDUxLDM0NDY3LDM0NDczLDM0NDc0LDM0NDQzLDM0NDQ0LDM0NDg2LDM0NDc5LDM0NTAwLDM0NTAyLDM0NDgwLDM0NTA1LDM0ODUxLDM0NDc1LDM0NTE2LDM0NTI2LDM0NTM3LDM0NTQwLDM0NTI3LDM0NTIzLDM0NTQzLDM0NTc4LDM0NTY2LDM0NTY4LDM0NTYwLDM0NTYzLDM0NTU1LDM0NTc3LDM0NTY5LDM0NTczLDM0NTUzLDM0NTcwLDM0NjEyLDM0NjIzLDM0NjE1LDM0NjE5LDM0NTk3LDM0NjAxLDM0NTg2LDM0NjU2LDM0NjU1LDM0NjgwLDM0NjM2LDM0NjM4LDM0Njc2LDM0NjQ3LDM0NjY0LDM0NjcwLDM0NjQ5LDM0NjQzLDM0NjU5LDM0NjY2LDM0ODIxLDM0NzIyLDM0NzE5LDM0NjkwLDM0NzM1LDM0NzYzLDM0NzQ5LDM0NzUyLDM0NzY4LDM4NjE0LDM0NzMxLDM0NzU2LDM0NzM5LDM0NzU5LDM0NzU4LDM0NzQ3LDM0Nzk5LDM0ODAyLDM0Nzg0LDM0ODMxLDM0ODI5LDM0ODE0LDM0ODA2LDM0ODA3LDM0ODMwLDM0NzcwLDM0ODMzLDM0ODM4LDM0ODM3LDM0ODUwLDM0ODQ5LDM0ODY1LDM0ODcwLDM0ODczLDM0ODU1LDM0ODc1LDM0ODg0LDM0ODgyLDM0ODk4LDM0OTA1LDM0OTEwLDM0OTE0LDM0OTIzLDM0OTQ1LDM0OTQyLDM0OTc0LDM0OTMzLDM0OTQxLDM0OTk3LDM0OTMwLDM0OTQ2LDM0OTY3LDM0OTYyLDM0OTkwLDM0OTY5LDM0OTc4LDM0OTU3LDM0OTgwLDM0OTkyLDM1MDA3LDM0OTkzLDM1MDExLDM1MDEyLDM1MDI4LDM1MDMyLDM1MDMzLDM1MDM3LDM1MDY1LDM1MDc0LDM1MDY4LDM1MDYwLDM1MDQ4LDM1MDU4LDM1MDc2LDM1MDg0LDM1MDgyLDM1MDkxLDM1MTM5LDM1MTAyLDM1MTA5LDM1MTE0LDM1MTE1LDM1MTM3LDM1MTQwLDM1MTMxLDM1MTI2LDM1MTI4LDM1MTQ4LDM1MTAxLDM1MTY4LDM1MTY2LDM1MTc0LDM1MTcyLDM1MTgxLDM1MTc4LDM1MTgzLDM1MTg4LDM1MTkxLDM1MTk4LDM1MjAzLDM1MjA4LDM1MjEwLDM1MjE5LDM1MjI0LDM1MjMzLDM1MjQxLDM1MjM4LDM1MjQ0LDM1MjQ3LDM1MjUwLDM1MjU4LDM1MjYxLDM1MjYzLDM1MjY0LDM1MjkwLDM1MjkyLDM1MjkzLDM1MzAzLDM1MzE2LDM1MzIwLDM1MzMxLDM1MzUwLDM1MzQ0LDM1MzQwLDM1MzU1LDM1MzU3LDM1MzY1LDM1MzgyLDM1MzkzLDM1NDE5LDM1NDEwLDM1Mzk4LDM1NDAwLDM1NDUyLDM1NDM3LDM1NDM2LDM1NDI2LDM1NDYxLDM1NDU4LDM1NDYwLDM1NDk2LDM1NDg5LDM1NDczLDM1NDkzLDM1NDk0LDM1NDgyLDM1NDkxLDM1NTI0LDM1NTMzLDM1NTIyLDM1NTQ2LDM1NTYzLDM1NTcxLDM1NTU5LDM1NTU2LDM1NTY5LDM1NjA0LDM1NTUyLDM1NTU0LDM1NTc1LDM1NTUwLDM1NTQ3LDM1NTk2LDM1NTkxLDM1NjEwLDM1NTUzLDM1NjA2LDM1NjAwLDM1NjA3LDM1NjE2LDM1NjM1LDM4ODI3LDM1NjIyLDM1NjI3LDM1NjQ2LDM1NjI0LDM1NjQ5LDM1NjYwLDM1NjYzLDM1NjYyLDM1NjU3LDM1NjcwLDM1Njc1LDM1Njc0LDM1NjkxLDM1Njc5LDM1NjkyLDM1Njk1LDM1NzAwLDM1NzA5LDM1NzEyLDM1NzI0LDM1NzI2LDM1NzMwLDM1NzMxLDM1NzM0LDM1NzM3LDM1NzM4LDM1ODk4LDM1OTA1LDM1OTAzLDM1OTEyLDM1OTE2LDM1OTE4LDM1OTIwLDM1OTI1LDM1OTM4LDM1OTQ4LDM1OTYwLDM1OTYyLDM1OTcwLDM1OTc3LDM1OTczLDM1OTc4LDM1OTgxLDM1OTgyLDM1OTg4LDM1OTY0LDM1OTkyLDI1MTE3LDM2MDEzLDM2MDEwLDM2MDI5LDM2MDE4LDM2MDE5LDM2MDE0LDM2MDIyLDM2MDQwLDM2MDMzLDM2MDY4LDM2MDY3LDM2MDU4LDM2MDkzLDM2MDkwLDM2MDkxLDM2MTAwLDM2MTAxLDM2MTA2LDM2MTAzLDM2MTExLDM2MTA5LDM2MTEyLDQwNzgyLDM2MTE1LDM2MDQ1LDM2MTE2LDM2MTE4LDM2MTk5LDM2MjA1LDM2MjA5LDM2MjExLDM2MjI1LDM2MjQ5LDM2MjkwLDM2Mjg2LDM2MjgyLDM2MzAzLDM2MzE0LDM2MzEwLDM2MzAwLDM2MzE1LDM2Mjk5LDM2MzMwLDM2MzMxLDM2MzE5LDM2MzIzLDM2MzQ4LDM2MzYwLDM2MzYxLDM2MzUxLDM2MzgxLDM2MzgyLDM2MzY4LDM2MzgzLDM2NDE4LDM2NDA1LDM2NDAwLDM2NDA0LDM2NDI2LDM2NDIzLDM2NDI1LDM2NDI4LDM2NDMyLDM2NDI0LDM2NDQxLDM2NDUyLDM2NDQ4LDM2Mzk0LDM2NDUxLDM2NDM3LDM2NDcwLDM2NDY2LDM2NDc2LDM2NDgxLDM2NDg3LDM2NDg1LDM2NDg0LDM2NDkxLDM2NDkwLDM2NDk5LDM2NDk3LDM2NTAwLDM2NTA1LDM2NTIyLDM2NTEzLDM2NTI0LDM2NTI4LDM2NTUwLDM2NTI5LDM2NTQyLDM2NTQ5LDM2NTUyLDM2NTU1LDM2NTcxLDM2NTc5LDM2NjA0LDM2NjAzLDM2NTg3LDM2NjA2LDM2NjE4LDM2NjEzLDM2NjI5LDM2NjI2LDM2NjMzLDM2NjI3LDM2NjM2LDM2NjM5LDM2NjM1LDM2NjIwLDM2NjQ2LDM2NjU5LDM2NjY3LDM2NjY1LDM2Njc3LDM2Njc0LDM2NjcwLDM2Njg0LDM2NjgxLDM2Njc4LDM2Njg2LDM2Njk1LDM2NzAwLDM2NzA2LDM2NzA3LDM2NzA4LDM2NzY0LDM2NzY3LDM2NzcxLDM2NzgxLDM2NzgzLDM2NzkxLDM2ODI2LDM2ODM3LDM2ODM0LDM2ODQyLDM2ODQ3LDM2OTk5LDM2ODUyLDM2ODY5LDM2ODU3LDM2ODU4LDM2ODgxLDM2ODg1LDM2ODk3LDM2ODc3LDM2ODk0LDM2ODg2LDM2ODc1LDM2OTAzLDM2OTE4LDM2OTE3LDM2OTIxLDM2ODU2LDM2OTQzLDM2OTQ0LDM2OTQ1LDM2OTQ2LDM2ODc4LDM2OTM3LDM2OTI2LDM2OTUwLDM2OTUyLDM2OTU4LDM2OTY4LDM2OTc1LDM2OTgyLDM4NTY4LDM2OTc4LDM2OTk0LDM2OTg5LDM2OTkzLDM2OTkyLDM3MDAyLDM3MDAxLDM3MDA3LDM3MDMyLDM3MDM5LDM3MDQxLDM3MDQ1LDM3MDkwLDM3MDkyLDI1MTYwLDM3MDgzLDM3MTIyLDM3MTM4LDM3MTQ1LDM3MTcwLDM3MTY4LDM3MTk0LDM3MjA2LDM3MjA4LDM3MjE5LDM3MjIxLDM3MjI1LDM3MjM1LDM3MjM0LDM3MjU5LDM3MjU3LDM3MjUwLDM3MjgyLDM3MjkxLDM3Mjk1LDM3MjkwLDM3MzAxLDM3MzAwLDM3MzA2LDM3MzEyLDM3MzEzLDM3MzIxLDM3MzIzLDM3MzI4LDM3MzM0LDM3MzQzLDM3MzQ1LDM3MzM5LDM3MzcyLDM3MzY1LDM3MzY2LDM3NDA2LDM3Mzc1LDM3Mzk2LDM3NDIwLDM3Mzk3LDM3MzkzLDM3NDcwLDM3NDYzLDM3NDQ1LDM3NDQ5LDM3NDc2LDM3NDQ4LDM3NTI1LDM3NDM5LDM3NDUxLDM3NDU2LDM3NTMyLDM3NTI2LDM3NTIzLDM3NTMxLDM3NDY2LDM3NTgzLDM3NTYxLDM3NTU5LDM3NjA5LDM3NjQ3LDM3NjI2LDM3NzAwLDM3Njc4LDM3NjU3LDM3NjY2LDM3NjU4LDM3NjY3LDM3NjkwLDM3Njg1LDM3NjkxLDM3NzI0LDM3NzI4LDM3NzU2LDM3NzQyLDM3NzE4LDM3ODA4LDM3ODA0LDM3ODA1LDM3NzgwLDM3ODE3LDM3ODQ2LDM3ODQ3LDM3ODY0LDM3ODYxLDM3ODQ4LDM3ODI3LDM3ODUzLDM3ODQwLDM3ODMyLDM3ODYwLDM3OTE0LDM3OTA4LDM3OTA3LDM3ODkxLDM3ODk1LDM3OTA0LDM3OTQyLDM3OTMxLDM3OTQxLDM3OTIxLDM3OTQ2LDM3OTUzLDM3OTcwLDM3OTU2LDM3OTc5LDM3OTg0LDM3OTg2LDM3OTgyLDM3OTk0LDM3NDE3LDM4MDAwLDM4MDA1LDM4MDA3LDM4MDEzLDM3OTc4LDM4MDEyLDM4MDE0LDM4MDE3LDM4MDE1LDM4Mjc0LDM4Mjc5LDM4MjgyLDM4MjkyLDM4Mjk0LDM4Mjk2LDM4Mjk3LDM4MzA0LDM4MzEyLDM4MzExLDM4MzE3LDM4MzMyLDM4MzMxLDM4MzI5LDM4MzM0LDM4MzQ2LDI4NjYyLDM4MzM5LDM4MzQ5LDM4MzQ4LDM4MzU3LDM4MzU2LDM4MzU4LDM4MzY0LDM4MzY5LDM4MzczLDM4MzcwLDM4NDMzLDM4NDQwLDM4NDQ2LDM4NDQ3LDM4NDY2LDM4NDc2LDM4NDc5LDM4NDc1LDM4NTE5LDM4NDkyLDM4NDk0LDM4NDkzLDM4NDk1LDM4NTAyLDM4NTE0LDM4NTA4LDM4NTQxLDM4NTUyLDM4NTQ5LDM4NTUxLDM4NTcwLDM4NTY3LDM4NTc3LDM4NTc4LDM4NTc2LDM4NTgwLDM4NTgyLDM4NTg0LDM4NTg1LDM4NjA2LDM4NjAzLDM4NjAxLDM4NjA1LDM1MTQ5LDM4NjIwLDM4NjY5LDM4NjEzLDM4NjQ5LDM4NjYwLDM4NjYyLDM4NjY0LDM4Njc1LDM4NjcwLDM4NjczLDM4NjcxLDM4Njc4LDM4NjgxLDM4NjkyLDM4Njk4LDM4NzA0LDM4NzEzLDM4NzE3LDM4NzE4LDM4NzI0LDM4NzI2LDM4NzI4LDM4NzIyLDM4NzI5LDM4NzQ4LDM4NzUyLDM4NzU2LDM4NzU4LDM4NzYwLDIxMjAyLDM4NzYzLDM4NzY5LDM4Nzc3LDM4Nzg5LDM4NzgwLDM4Nzg1LDM4Nzc4LDM4NzkwLDM4Nzk1LDM4Nzk5LDM4ODAwLDM4ODEyLDM4ODI0LDM4ODIyLDM4ODE5LDM4ODM1LDM4ODM2LDM4ODUxLDM4ODU0LDM4ODU2LDM4ODU5LDM4ODc2LDM4ODkzLDQwNzgzLDM4ODk4LDMxNDU1LDM4OTAyLDM4OTAxLDM4OTI3LDM4OTI0LDM4OTY4LDM4OTQ4LDM4OTQ1LDM4OTY3LDM4OTczLDM4OTgyLDM4OTkxLDM4OTg3LDM5MDE5LDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI4LDM5MDI3LDM5MDgyLDM5MDg3LDM5MDg5LDM5MDk0LDM5MTA4LDM5MTA3LDM5MTEwLDM5MTQ1LDM5MTQ3LDM5MTcxLDM5MTc3LDM5MTg2LDM5MTg4LDM5MTkyLDM5MjAxLDM5MTk3LDM5MTk4LDM5MjA0LDM5MjAwLDM5MjEyLDM5MjE0LDM5MjI5LDM5MjMwLDM5MjM0LDM5MjQxLDM5MjM3LDM5MjQ4LDM5MjQzLDM5MjQ5LDM5MjUwLDM5MjQ0LDM5MjUzLDM5MzE5LDM5MzIwLDM5MzMzLDM5MzQxLDM5MzQyLDM5MzU2LDM5MzkxLDM5Mzg3LDM5Mzg5LDM5Mzg0LDM5Mzc3LDM5NDA1LDM5NDA2LDM5NDA5LDM5NDEwLDM5NDE5LDM5NDE2LDM5NDI1LDM5NDM5LDM5NDI5LDM5Mzk0LDM5NDQ5LDM5NDY3LDM5NDc5LDM5NDkzLDM5NDkwLDM5NDg4LDM5NDkxLDM5NDg2LDM5NTA5LDM5NTAxLDM5NTE1LDM5NTExLDM5NTE5LDM5NTIyLDM5NTI1LDM5NTI0LDM5NTI5LDM5NTMxLDM5NTMwLDM5NTk3LDM5NjAwLDM5NjEyLDM5NjE2LDM5NjMxLDM5NjMzLDM5NjM1LDM5NjM2LDM5NjQ2LDM5NjQ3LDM5NjUwLDM5NjUxLDM5NjU0LDM5NjYzLDM5NjU5LDM5NjYyLDM5NjY4LDM5NjY1LDM5NjcxLDM5Njc1LDM5Njg2LDM5NzA0LDM5NzA2LDM5NzExLDM5NzE0LDM5NzE1LDM5NzE3LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzI2LDM5NzI3LDM5NzMwLDM5NzQ4LDM5NzQ3LDM5NzU5LDM5NzU3LDM5NzU4LDM5NzYxLDM5NzY4LDM5Nzk2LDM5ODI3LDM5ODExLDM5ODI1LDM5ODMwLDM5ODMxLDM5ODM5LDM5ODQwLDM5ODQ4LDM5ODYwLDM5ODcyLDM5ODgyLDM5ODY1LDM5ODc4LDM5ODg3LDM5ODg5LDM5ODkwLDM5OTA3LDM5OTA2LDM5OTA4LDM5ODkyLDM5OTA1LDM5OTk0LDM5OTIyLDM5OTIxLDM5OTIwLDM5OTU3LDM5OTU2LDM5OTQ1LDM5OTU1LDM5OTQ4LDM5OTQyLDM5OTQ0LDM5OTU0LDM5OTQ2LDM5OTQwLDM5OTgyLDM5OTYzLDM5OTczLDM5OTcyLDM5OTY5LDM5OTg0LDQwMDA3LDM5OTg2LDQwMDA2LDM5OTk4LDQwMDI2LDQwMDMyLDQwMDM5LDQwMDU0LDQwMDU2LDQwMTY3LDQwMTcyLDQwMTc2LDQwMjAxLDQwMjAwLDQwMTcxLDQwMTk1LDQwMTk4LDQwMjM0LDQwMjMwLDQwMzY3LDQwMjI3LDQwMjIzLDQwMjYwLDQwMjEzLDQwMjEwLDQwMjU3LDQwMjU1LDQwMjU0LDQwMjYyLDQwMjY0LDQwMjg1LDQwMjg2LDQwMjkyLDQwMjczLDQwMjcyLDQwMjgxLDQwMzA2LDQwMzI5LDQwMzI3LDQwMzYzLDQwMzAzLDQwMzE0LDQwMzQ2LDQwMzU2LDQwMzYxLDQwMzcwLDQwMzg4LDQwMzg1LDQwMzc5LDQwMzc2LDQwMzc4LDQwMzkwLDQwMzk5LDQwMzg2LDQwNDA5LDQwNDAzLDQwNDQwLDQwNDIyLDQwNDI5LDQwNDMxLDQwNDQ1LDQwNDc0LDQwNDc1LDQwNDc4LDQwNTY1LDQwNTY5LDQwNTczLDQwNTc3LDQwNTg0LDQwNTg3LDQwNTg4LDQwNTk0LDQwNTk3LDQwNTkzLDQwNjA1LDQwNjEzLDQwNjE3LDQwNjMyLDQwNjE4LDQwNjIxLDM4NzUzLDQwNjUyLDQwNjU0LDQwNjU1LDQwNjU2LDQwNjYwLDQwNjY4LDQwNjcwLDQwNjY5LDQwNjcyLDQwNjc3LDQwNjgwLDQwNjg3LDQwNjkyLDQwNjk0LDQwNjk1LDQwNjk3LDQwNjk5LDQwNzAwLDQwNzAxLDQwNzExLDQwNzEyLDMwMzkxLDQwNzI1LDQwNzM3LDQwNzQ4LDQwNzY2LDQwNzc4LDQwNzg2LDQwNzg4LDQwODAzLDQwNzk5LDQwODAwLDQwODAxLDQwODA2LDQwODA3LDQwODEyLDQwODEwLDQwODIzLDQwODE4LDQwODIyLDQwODUzLDQwODYwLDQwODY0LDIyNTc1LDI3MDc5LDM2OTUzLDI5Nzk2LDIwOTU2LDI5MDgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksODU0NCw4NTQ1LDg1NDYsODU0Nyw4NTQ4LDg1NDksODU1MCw4NTUxLDg1NTIsODU1Myw2NTUwNiw2NTUwOCw2NTI4Nyw2NTI4MiwxMjg0OSw4NDcwLDg0ODEsODc1NywzMjM5NCwzNTEwMCwzNzcwNCwzNzUxMiwzNDAxMiwyMDQyNSwyODg1OSwyNjE2MSwyNjgyNCwzNzYyNSwyNjM2MywyNDM4OSwyMDAwOCwyMDE5MywyMDIyMCwyMDIyNCwyMDIyNywyMDI4MSwyMDMxMCwyMDM3MCwyMDM2MiwyMDM3OCwyMDM3MiwyMDQyOSwyMDU0NCwyMDUxNCwyMDQ3OSwyMDUxMCwyMDU1MCwyMDU5MiwyMDU0NiwyMDYyOCwyMDcyNCwyMDY5NiwyMDgxMCwyMDgzNiwyMDg5MywyMDkyNiwyMDk3MiwyMTAxMywyMTE0OCwyMTE1OCwyMTE4NCwyMTIxMSwyMTI0OCwyMTI1NSwyMTI4NCwyMTM2MiwyMTM5NSwyMTQyNiwyMTQ2OSw2NDAxNCwyMTY2MCwyMTY0MiwyMTY3MywyMTc1OSwyMTg5NCwyMjM2MSwyMjM3MywyMjQ0NCwyMjQ3MiwyMjQ3MSw2NDAxNSw2NDAxNiwyMjY4NiwyMjcwNiwyMjc5NSwyMjg2NywyMjg3NSwyMjg3NywyMjg4MywyMjk0OCwyMjk3MCwyMzM4MiwyMzQ4OCwyOTk5OSwyMzUxMiwyMzUzMiwyMzU4MiwyMzcxOCwyMzczOCwyMzc5NywyMzg0NywyMzg5MSw2NDAxNywyMzg3NCwyMzkxNywyMzk5MiwyMzk5MywyNDAxNiwyNDM1MywyNDM3MiwyNDQyMywyNDUwMywyNDU0MiwyNDY2OSwyNDcwOSwyNDcxNCwyNDc5OCwyNDc4OSwyNDg2NCwyNDgxOCwyNDg0OSwyNDg4NywyNDg4MCwyNDk4NCwyNTEwNywyNTI1NCwyNTU4OSwyNTY5NiwyNTc1NywyNTgwNiwyNTkzNCwyNjExMiwyNjEzMywyNjE3MSwyNjEyMSwyNjE1OCwyNjE0MiwyNjE0OCwyNjIxMywyNjE5OSwyNjIwMSw2NDAxOCwyNjIyNywyNjI2NSwyNjI3MiwyNjI5MCwyNjMwMywyNjM2MiwyNjM4Miw2Mzc4NSwyNjQ3MCwyNjU1NSwyNjcwNiwyNjU2MCwyNjYyNSwyNjY5MiwyNjgzMSw2NDAxOSwyNjk4NCw2NDAyMCwyNzAzMiwyNzEwNiwyNzE4NCwyNzI0MywyNzIwNiwyNzI1MSwyNzI2MiwyNzM2MiwyNzM2NCwyNzYwNiwyNzcxMSwyNzc0MCwyNzc4MiwyNzc1OSwyNzg2NiwyNzkwOCwyODAzOSwyODAxNSwyODA1NCwyODA3NiwyODExMSwyODE1MiwyODE0NiwyODE1NiwyODIxNywyODI1MiwyODE5OSwyODIyMCwyODM1MSwyODU1MiwyODU5NywyODY2MSwyODY3NywyODY3OSwyODcxMiwyODgwNSwyODg0MywyODk0MywyODkzMiwyOTAyMCwyODk5OCwyODk5OSw2NDAyMSwyOTEyMSwyOTE4MiwyOTM2MSwyOTM3NCwyOTQ3Niw2NDAyMiwyOTU1OSwyOTYyOSwyOTY0MSwyOTY1NCwyOTY2NywyOTY1MCwyOTcwMywyOTY4NSwyOTczNCwyOTczOCwyOTczNywyOTc0MiwyOTc5NCwyOTgzMywyOTg1NSwyOTk1MywzMDA2MywzMDMzOCwzMDM2NCwzMDM2NiwzMDM2MywzMDM3NCw2NDAyMywzMDUzNCwyMTE2NywzMDc1MywzMDc5OCwzMDgyMCwzMDg0MiwzMTAyNCw2NDAyNCw2NDAyNSw2NDAyNiwzMTEyNCw2NDAyNywzMTEzMSwzMTQ0MSwzMTQ2Myw2NDAyOCwzMTQ2NywzMTY0Niw2NDAyOSwzMjA3MiwzMjA5MiwzMjE4MywzMjE2MCwzMjIxNCwzMjMzOCwzMjU4MywzMjY3Myw2NDAzMCwzMzUzNywzMzYzNCwzMzY2MywzMzczNSwzMzc4MiwzMzg2NCwzMzk3MiwzNDEzMSwzNDEzNywzNDE1NSw2NDAzMSwzNDIyNCw2NDAzMiw2NDAzMywzNDgyMywzNTA2MSwzNTM0NiwzNTM4MywzNTQ0OSwzNTQ5NSwzNTUxOCwzNTU1MSw2NDAzNCwzNTU3NCwzNTY2NywzNTcxMSwzNjA4MCwzNjA4NCwzNjExNCwzNjIxNCw2NDAzNSwzNjU1OSw2NDAzNiw2NDAzNywzNjk2NywzNzA4Niw2NDAzOCwzNzE0MSwzNzE1OSwzNzMzOCwzNzMzNSwzNzM0MiwzNzM1NywzNzM1OCwzNzM0OCwzNzM0OSwzNzM4MiwzNzM5MiwzNzM4NiwzNzQzNCwzNzQ0MCwzNzQzNiwzNzQ1NCwzNzQ2NSwzNzQ1NywzNzQzMywzNzQ3OSwzNzU0MywzNzQ5NSwzNzQ5NiwzNzYwNywzNzU5MSwzNzU5MywzNzU4NCw2NDAzOSwzNzU4OSwzNzYwMCwzNzU4NywzNzY2OSwzNzY2NSwzNzYyNyw2NDA0MCwzNzY2MiwzNzYzMSwzNzY2MSwzNzYzNCwzNzc0NCwzNzcxOSwzNzc5NiwzNzgzMCwzNzg1NCwzNzg4MCwzNzkzNywzNzk1NywzNzk2MCwzODI5MCw2Mzk2NCw2NDA0MSwzODU1NywzODU3NSwzODcwNywzODcxNSwzODcyMywzODczMywzODczNSwzODczNywzODc0MSwzODk5OSwzOTAxMyw2NDA0Miw2NDA0MywzOTIwNyw2NDA0NCwzOTMyNiwzOTUwMiwzOTY0MSwzOTY0NCwzOTc5NywzOTc5NCwzOTgyMywzOTg1NywzOTg2NywzOTkzNiw0MDMwNCw0MDI5OSw2NDA0NSw0MDQ3Myw0MDY1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImppczAyMTJcIjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNzI4LDcxMSwxODQsNzI5LDczMywxNzUsNzMxLDczMCw2NTM3NCw5MDAsOTAxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjEsMTY2LDE5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTg2LDE3MCwxNjksMTc0LDg0ODIsMTY0LDg0NzAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkwMiw5MDQsOTA1LDkwNiw5MzgsbnVsbCw5MDgsbnVsbCw5MTAsOTM5LG51bGwsOTExLG51bGwsbnVsbCxudWxsLG51bGwsOTQwLDk0MSw5NDIsOTQzLDk3MCw5MTIsOTcyLDk2Miw5NzMsOTcxLDk0NCw5NzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM4LDEwMzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE4LDExMTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTgsMjcyLG51bGwsMjk0LG51bGwsMzA2LG51bGwsMzIxLDMxOSxudWxsLDMzMCwyMTYsMzM4LG51bGwsMzU4LDIyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIzMCwyNzMsMjQwLDI5NSwzMDUsMzA3LDMxMiwzMjIsMzIwLDMyOSwzMzEsMjQ4LDMzOSwyMjMsMzU5LDI1NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5MywxOTIsMTk2LDE5NCwyNTgsNDYxLDI1NiwyNjAsMTk3LDE5NSwyNjIsMjY0LDI2OCwxOTksMjY2LDI3MCwyMDEsMjAwLDIwMywyMDIsMjgyLDI3OCwyNzQsMjgwLG51bGwsMjg0LDI4NiwyOTAsMjg4LDI5MiwyMDUsMjA0LDIwNywyMDYsNDYzLDMwNCwyOTgsMzAyLDI5NiwzMDgsMzEwLDMxMywzMTcsMzE1LDMyMywzMjcsMzI1LDIwOSwyMTEsMjEwLDIxNCwyMTIsNDY1LDMzNiwzMzIsMjEzLDM0MCwzNDQsMzQyLDM0NiwzNDgsMzUyLDM1MCwzNTYsMzU0LDIxOCwyMTcsMjIwLDIxOSwzNjQsNDY3LDM2OCwzNjIsMzcwLDM2NiwzNjAsNDcxLDQ3NSw0NzMsNDY5LDM3MiwyMjEsMzc2LDM3NCwzNzcsMzgxLDM3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDIyNSwyMjQsMjI4LDIyNiwyNTksNDYyLDI1NywyNjEsMjI5LDIyNywyNjMsMjY1LDI2OSwyMzEsMjY3LDI3MSwyMzMsMjMyLDIzNSwyMzQsMjgzLDI3OSwyNzUsMjgxLDUwMSwyODUsMjg3LG51bGwsMjg5LDI5MywyMzcsMjM2LDIzOSwyMzgsNDY0LG51bGwsMjk5LDMwMywyOTcsMzA5LDMxMSwzMTQsMzE4LDMxNiwzMjQsMzI4LDMyNiwyNDEsMjQzLDI0MiwyNDYsMjQ0LDQ2NiwzMzcsMzMzLDI0NSwzNDEsMzQ1LDM0MywzNDcsMzQ5LDM1MywzNTEsMzU3LDM1NSwyNTAsMjQ5LDI1MiwyNTEsMzY1LDQ2OCwzNjksMzYzLDM3MSwzNjcsMzYxLDQ3Miw0NzYsNDc0LDQ3MCwzNzMsMjUzLDI1NSwzNzUsMzc4LDM4MiwzODAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE5OTcwLDE5OTcyLDE5OTczLDE5OTgwLDE5OTg2LDE5OTk5LDIwMDAzLDIwMDA0LDIwMDA4LDIwMDExLDIwMDE0LDIwMDE1LDIwMDE2LDIwMDIxLDIwMDMyLDIwMDMzLDIwMDM2LDIwMDM5LDIwMDQ5LDIwMDU4LDIwMDYwLDIwMDY3LDIwMDcyLDIwMDczLDIwMDg0LDIwMDg1LDIwMDg5LDIwMDk1LDIwMTA5LDIwMTE4LDIwMTE5LDIwMTI1LDIwMTQzLDIwMTUzLDIwMTYzLDIwMTc2LDIwMTg2LDIwMTg3LDIwMTkyLDIwMTkzLDIwMTk0LDIwMjAwLDIwMjA3LDIwMjA5LDIwMjExLDIwMjEzLDIwMjIxLDIwMjIyLDIwMjIzLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQ1LDIwMjQ2LDIwMjQ3LDIwMjQ5LDIwMjcwLDIwMjczLDIwMzIwLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg4LDIwMjkwLDIwMjk2LDIwMjk3LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzEyLDIwMzE5LDIwMzIzLDIwMzMwLDIwMzMyLDIwMzM0LDIwMzM3LDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUwLDIwMzUzLDIwMzU0LDIwMzU2LDIwMzU3LDIwMzYxLDIwMzYyLDIwMzY0LDIwMzY2LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzcyLDIwMzc1LDIwMzc3LDIwMzc4LDIwMzgyLDIwMzgzLDIwNDAyLDIwNDA3LDIwNDA5LDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDIxLDIwNDIyLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDMxLDIwNDM0LDIwNDQ0LDIwNDQ4LDIwNDUwLDIwNDY0LDIwNDY2LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDg0LDIwNDg3LDIwNDkwLDIwNDkyLDIwNDk0LDIwNDk2LDIwNDk5LDIwNTAzLDIwNTA0LDIwNTA3LDIwNTA4LDIwNTA5LDIwNTEwLDIwNTE0LDIwNTE5LDIwNTI2LDIwNTI4LDIwNTMwLDIwNTMxLDIwNTMzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ5LDIwNTUwLDIwNTU0LDIwNTU2LDIwNTU4LDIwNTYxLDIwNTYyLDIwNTYzLDIwNTY3LDIwNTY5LDIwNTc1LDIwNTc2LDIwNTc4LDIwNTc5LDIwNTgyLDIwNTgzLDIwNTg2LDIwNTg5LDIwNTkyLDIwNTkzLDIwNTM5LDIwNjA5LDIwNjExLDIwNjEyLDIwNjE0LDIwNjE4LDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjMwLDIwNjM1LDIwNjM2LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjUwLDIwNjU1LDIwNjU2LDIwNjY1LDIwNjY2LDIwNjY5LDIwNjcyLDIwNjc1LDIwNjc2LDIwNjc5LDIwNjg0LDIwNjg2LDIwNjg4LDIwNjkxLDIwNjkyLDIwNjk2LDIwNzAwLDIwNzAxLDIwNzAzLDIwNzA2LDIwNzA4LDIwNzEwLDIwNzEyLDIwNzEzLDIwNzE5LDIwNzIxLDIwNzI2LDIwNzMwLDIwNzM0LDIwNzM5LDIwNzQyLDIwNzQzLDIwNzQ0LDIwNzQ3LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzIyLDIwNzUyLDIwNzU5LDIwNzYxLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzcxLDIwNzc1LDIwNzc2LDIwNzgwLDIwNzgxLDIwNzgzLDIwNzg1LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkyLDIwNzkzLDIwODAyLDIwODEwLDIwODE1LDIwODE5LDIwODIxLDIwODIzLDIwODI0LDIwODMxLDIwODM2LDIwODM4LDIwODYyLDIwODY3LDIwODY4LDIwODc1LDIwODc4LDIwODg4LDIwODkzLDIwODk3LDIwODk5LDIwOTA5LDIwOTIwLDIwOTIyLDIwOTI0LDIwOTI2LDIwOTI3LDIwOTMwLDIwOTM2LDIwOTQzLDIwOTQ1LDIwOTQ2LDIwOTQ3LDIwOTQ5LDIwOTUyLDIwOTU4LDIwOTYyLDIwOTY1LDIwOTc0LDIwOTc4LDIwOTc5LDIwOTgwLDIwOTgzLDIwOTkzLDIwOTk0LDIwOTk3LDIxMDEwLDIxMDExLDIxMDEzLDIxMDE0LDIxMDE2LDIxMDI2LDIxMDMyLDIxMDQxLDIxMDQyLDIxMDQ1LDIxMDUyLDIxMDYxLDIxMDY1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgyLDIxMDg0LDIxMDg3LDIxMDg4LDIxMDg5LDIxMDk0LDIxMTAyLDIxMTExLDIxMTEyLDIxMTEzLDIxMTIwLDIxMTIyLDIxMTI1LDIxMTMwLDIxMTMyLDIxMTM5LDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY3LDIxMTY4LDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc4LDIxMTc5LDIxMTgxLDIxMTg0LDIxMTg4LDIxMTkwLDIxMTkyLDIxMTk2LDIxMTk5LDIxMjAxLDIxMjA0LDIxMjA2LDIxMjExLDIxMjEyLDIxMjE3LDIxMjIxLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI4LDIxMjMyLDIxMjMzLDIxMjM2LDIxMjM4LDIxMjM5LDIxMjQ4LDIxMjUxLDIxMjU4LDIxMjU5LDIxMjYwLDIxMjY1LDIxMjY3LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk2LDIxMjk4LDIxMzAxLDIxMzA4LDIxMzA5LDIxMzEwLDIxMzE0LDIxMzI0LDIxMzIzLDIxMzM3LDIxMzM5LDIxMzQ1LDIxMzQ3LDIxMzQ5LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY5LDIxMzc0LDIxMzc5LDIxMzgzLDIxMzg0LDIxMzkwLDIxMzk1LDIxMzk2LDIxNDAxLDIxNDA1LDIxNDA5LDIxNDEyLDIxNDE4LDIxNDE5LDIxNDIzLDIxNDI2LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDM0LDIxNDM3LDIxNDQwLDIxNDQ1LDIxNDU1LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY5LDIxNDcwLDIxNDcyLDIxNDc4LDIxNDc5LDIxNDkzLDIxNTA2LDIxNTIzLDIxNTMwLDIxNTM3LDIxNTQzLDIxNTQ0LDIxNTQ2LDIxNTUxLDIxNTUzLDIxNTU2LDIxNTU3LDIxNTcxLDIxNTcyLDIxNTc1LDIxNTgxLDIxNTgzLDIxNTk4LDIxNjAyLDIxNjA0LDIxNjA2LDIxNjA3LDIxNjA5LDIxNjExLDIxNjEzLDIxNjE0LDIxNjIwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjQwLDIxNjQxLDIxNjQ1LDIxNjQ5LDIxNjUzLDIxNjU0LDIxNjYwLDIxNjYzLDIxNjY1LDIxNjcwLDIxNjcxLDIxNjczLDIxNjc0LDIxNjc3LDIxNjc4LDIxNjgxLDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkxLDIxNjk1LDIxNzAyLDIxNzA2LDIxNzA5LDIxNzEwLDIxNzI4LDIxNzM4LDIxNzQwLDIxNzQzLDIxNzUwLDIxNzU2LDIxNzU4LDIxNzU5LDIxNzYwLDIxNzYxLDIxNzY1LDIxNzY4LDIxNzY5LDIxNzcyLDIxNzczLDIxNzc0LDIxNzgxLDIxODAyLDIxODAzLDIxODEwLDIxODEzLDIxODE0LDIxODE5LDIxODIwLDIxODIxLDIxODI1LDIxODMxLDIxODMzLDIxODM0LDIxODM3LDIxODQwLDIxODQxLDIxODQ4LDIxODUwLDIxODUxLDIxODU0LDIxODU2LDIxODU3LDIxODYwLDIxODYyLDIxODg3LDIxODg5LDIxODkwLDIxODk0LDIxODk2LDIxOTAyLDIxOTAzLDIxOTA1LDIxOTA2LDIxOTA3LDIxOTA4LDIxOTExLDIxOTIzLDIxOTI0LDIxOTMzLDIxOTM4LDIxOTUxLDIxOTUzLDIxOTU1LDIxOTU4LDIxOTYxLDIxOTYzLDIxOTY0LDIxOTY2LDIxOTY5LDIxOTcwLDIxOTcxLDIxOTc1LDIxOTc2LDIxOTc5LDIxOTgyLDIxOTg2LDIxOTkzLDIyMDA2LDIyMDE1LDIyMDIxLDIyMDI0LDIyMDI2LDIyMDI5LDIyMDMwLDIyMDMxLDIyMDMyLDIyMDMzLDIyMDM0LDIyMDQxLDIyMDYwLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDczLDIyMDc1LDIyMDc2LDIyMDc3LDIyMDc5LDIyMDgwLDIyMDgxLDIyMDgzLDIyMDg0LDIyMDg2LDIyMDg5LDIyMDkxLDIyMDkzLDIyMDk1LDIyMTAwLDIyMTEwLDIyMTEyLDIyMTEzLDIyMTE0LDIyMTE1LDIyMTE4LDIyMTIxLDIyMTI1LDIyMTI3LDIyMTI5LDIyMTMwLDIyMTMzLDIyMTQ4LDIyMTQ5LDIyMTUyLDIyMTU1LDIyMTU2LDIyMTY1LDIyMTY5LDIyMTcwLDIyMTczLDIyMTc0LDIyMTc1LDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkzLDIyMTk1LDIyMTk5LDIyMjA2LDIyMjEzLDIyMjE3LDIyMjE4LDIyMjE5LDIyMjIzLDIyMjI0LDIyMjIwLDIyMjIxLDIyMjMzLDIyMjM2LDIyMjM3LDIyMjM5LDIyMjQxLDIyMjQ0LDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjU3LDIyMjUxLDIyMjUzLDIyMjYyLDIyMjYzLDIyMjczLDIyMjc0LDIyMjc5LDIyMjgyLDIyMjg0LDIyMjg5LDIyMjkzLDIyMjk4LDIyMjk5LDIyMzAxLDIyMzA0LDIyMzA2LDIyMzA3LDIyMzA4LDIyMzA5LDIyMzEzLDIyMzE0LDIyMzE2LDIyMzE4LDIyMzE5LDIyMzIzLDIyMzI0LDIyMzMzLDIyMzM0LDIyMzM1LDIyMzQxLDIyMzQyLDIyMzQ4LDIyMzQ5LDIyMzU0LDIyMzcwLDIyMzczLDIyMzc1LDIyMzc2LDIyMzc5LDIyMzgxLDIyMzgyLDIyMzgzLDIyMzg0LDIyMzg1LDIyMzg3LDIyMzg4LDIyMzg5LDIyMzkxLDIyMzkzLDIyMzk0LDIyMzk1LDIyMzk2LDIyMzk4LDIyNDAxLDIyNDAzLDIyNDEyLDIyNDIwLDIyNDIzLDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDMzLDIyNDIxLDIyNDM5LDIyNDQwLDIyNDQxLDIyNDQ0LDIyNDU2LDIyNDYxLDIyNDcxLDIyNDcyLDIyNDc2LDIyNDc5LDIyNDg1LDIyNDkzLDIyNDk0LDIyNTAwLDIyNTAyLDIyNTAzLDIyNTA1LDIyNTA5LDIyNTEyLDIyNTE3LDIyNTE4LDIyNTIwLDIyNTI1LDIyNTI2LDIyNTI3LDIyNTMxLDIyNTMyLDIyNTM2LDIyNTM3LDIyNDk3LDIyNTQwLDIyNTQxLDIyNTU1LDIyNTU4LDIyNTU5LDIyNTYwLDIyNTY2LDIyNTY3LDIyNTczLDIyNTc4LDIyNTg1LDIyNTkxLDIyNjAxLDIyNjA0LDIyNjA1LDIyNjA3LDIyNjA4LDIyNjEzLDIyNjIzLDIyNjI1LDIyNjI4LDIyNjMxLDIyNjMyLDIyNjQ4LDIyNjUyLDIyNjU1LDIyNjU2LDIyNjU3LDIyNjYzLDIyNjY0LDIyNjY1LDIyNjY2LDIyNjY4LDIyNjY5LDIyNjcxLDIyNjcyLDIyNjc2LDIyNjc4LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjk0LDIyNjk3LDIyNzA1LDIyNzA2LDIyNzI0LDIyNzE2LDIyNzIyLDIyNzI4LDIyNzMzLDIyNzM0LDIyNzM2LDIyNzM4LDIyNzQwLDIyNzQyLDIyNzQ2LDIyNzQ5LDIyNzUzLDIyNzU0LDIyNzYxLDIyNzcxLDIyNzg5LDIyNzkwLDIyNzk1LDIyNzk2LDIyODAyLDIyODAzLDIyODA0LDM0MzY5LDIyODEzLDIyODE3LDIyODE5LDIyODIwLDIyODI0LDIyODMxLDIyODMyLDIyODM1LDIyODM3LDIyODM4LDIyODQ3LDIyODUxLDIyODU0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODkxLDIyODkzLDIyODk1LDIyODk4LDIyOTAxLDIyOTAyLDIyOTA1LDIyOTA3LDIyOTA4LDIyOTIzLDIyOTI0LDIyOTI2LDIyOTMwLDIyOTMzLDIyOTM1LDIyOTQzLDIyOTQ4LDIyOTUxLDIyOTU3LDIyOTU4LDIyOTU5LDIyOTYwLDIyOTYzLDIyOTY3LDIyOTcwLDIyOTcyLDIyOTc3LDIyOTc5LDIyOTgwLDIyOTg0LDIyOTg2LDIyOTg5LDIyOTk0LDIzMDA1LDIzMDA2LDIzMDA3LDIzMDExLDIzMDEyLDIzMDE1LDIzMDIyLDIzMDIzLDIzMDI1LDIzMDI2LDIzMDI4LDIzMDMxLDIzMDQwLDIzMDQ0LDIzMDUyLDIzMDUzLDIzMDU0LDIzMDU4LDIzMDU5LDIzMDcwLDIzMDc1LDIzMDc2LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDg1LDIzMDg4LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE2LDIzMTIwLDIzMTI1LDIzMTM0LDIzMTM5LDIzMTQxLDIzMTQzLDIzMTQ5LDIzMTU5LDIzMTYyLDIzMTYzLDIzMTY2LDIzMTc5LDIzMTg0LDIzMTg3LDIzMTkwLDIzMTkzLDIzMTk2LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAyLDIzMjA3LDIzMjEyLDIzMjE3LDIzMjE4LDIzMjE5LDIzMjIxLDIzMjI0LDIzMjI2LDIzMjI3LDIzMjMxLDIzMjM2LDIzMjM4LDIzMjQwLDIzMjQ3LDIzMjU4LDIzMjYwLDIzMjY0LDIzMjY5LDIzMjc0LDIzMjc4LDIzMjg1LDIzMjg2LDIzMjkzLDIzMjk2LDIzMjk3LDIzMzA0LDIzMzE5LDIzMzQ4LDIzMzIxLDIzMzIzLDIzMzI1LDIzMzI5LDIzMzMzLDIzMzQxLDIzMzUyLDIzMzYxLDIzMzcxLDIzMzcyLDIzMzc4LDIzMzgyLDIzMzkwLDIzNDAwLDIzNDA2LDIzNDA3LDIzNDIwLDIzNDIxLDIzNDIyLDIzNDIzLDIzNDI1LDIzNDI4LDIzNDMwLDIzNDM0LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQzLDIzNDQ0LDIzNDQ2LDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDg0LDIzNDg4LDIzNDg5LDIzNTAxLDIzNTAzLDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTIwLDIzNTM1LDIzNTM3LDIzNTQwLDIzNTQ5LDIzNTY0LDIzNTc1LDIzNTgyLDIzNTgzLDIzNTg3LDIzNTkwLDIzNTkzLDIzNTk1LDIzNTk2LDIzNTk4LDIzNjAwLDIzNjAyLDIzNjA1LDIzNjA2LDIzNjQxLDIzNjQyLDIzNjQ0LDIzNjUwLDIzNjUxLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjYxLDIzNjY0LDIzNjY4LDIzNjY5LDIzNjc0LDIzNjc1LDIzNjc2LDIzNjc3LDIzNjg3LDIzNjg4LDIzNjkwLDIzNjk1LDIzNjk4LDIzNzA5LDIzNzExLDIzNzEyLDIzNzE0LDIzNzE1LDIzNzE4LDIzNzIyLDIzNzMwLDIzNzMyLDIzNzMzLDIzNzM4LDIzNzUzLDIzNzU1LDIzNzYyLDIzNzczLDIzNzY3LDIzNzkwLDIzNzkzLDIzNzk0LDIzNzk2LDIzODA5LDIzODE0LDIzODIxLDIzODI2LDIzODUxLDIzODQzLDIzODQ0LDIzODQ2LDIzODQ3LDIzODU3LDIzODYwLDIzODY1LDIzODY5LDIzODcxLDIzODc0LDIzODc1LDIzODc4LDIzODgwLDIzODkzLDIzODg5LDIzODk3LDIzODgyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA4LDIzOTE0LDIzOTE3LDIzOTIwLDIzOTI5LDIzOTMwLDIzOTM0LDIzOTM1LDIzOTM3LDIzOTM5LDIzOTQ0LDIzOTQ2LDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTYxLDIzOTYzLDIzOTY3LDIzOTY4LDIzOTc1LDIzOTc5LDIzOTg0LDIzOTg4LDIzOTkyLDIzOTkzLDI0MDAzLDI0MDA3LDI0MDExLDI0MDE2LDI0MDE0LDI0MDI0LDI0MDI1LDI0MDMyLDI0MDM2LDI0MDQxLDI0MDU2LDI0MDU3LDI0MDY0LDI0MDcxLDI0MDc3LDI0MDgyLDI0MDg0LDI0MDg1LDI0MDg4LDI0MDk1LDI0MDk2LDI0MTEwLDI0MTA0LDI0MTE0LDI0MTE3LDI0MTI2LDI0MTM5LDI0MTQ0LDI0MTM3LDI0MTQ1LDI0MTUwLDI0MTUyLDI0MTU1LDI0MTU2LDI0MTU4LDI0MTY4LDI0MTcwLDI0MTcxLDI0MTcyLDI0MTczLDI0MTc0LDI0MTc2LDI0MTkyLDI0MjAzLDI0MjA2LDI0MjI2LDI0MjI4LDI0MjI5LDI0MjMyLDI0MjM0LDI0MjM2LDI0MjQxLDI0MjQzLDI0MjUzLDI0MjU0LDI0MjU1LDI0MjYyLDI0MjY4LDI0MjY3LDI0MjcwLDI0MjczLDI0Mjc0LDI0Mjc2LDI0Mjc3LDI0Mjg0LDI0Mjg2LDI0MjkzLDI0Mjk5LDI0MzIyLDI0MzI2LDI0MzI3LDI0MzI4LDI0MzM0LDI0MzQ1LDI0MzQ4LDI0MzQ5LDI0MzUzLDI0MzU0LDI0MzU1LDI0MzU2LDI0MzYwLDI0MzYzLDI0MzY0LDI0MzY2LDI0MzY4LDI0MzcyLDI0Mzc0LDI0Mzc5LDI0MzgxLDI0MzgzLDI0Mzg0LDI0Mzg4LDI0Mzg5LDI0MzkxLDI0Mzk3LDI0NDAwLDI0NDA0LDI0NDA4LDI0NDExLDI0NDE2LDI0NDE5LDI0NDIwLDI0NDIzLDI0NDMxLDI0NDM0LDI0NDM2LDI0NDM3LDI0NDQwLDI0NDQyLDI0NDQ1LDI0NDQ2LDI0NDU3LDI0NDYxLDI0NDYzLDI0NDcwLDI0NDc2LDI0NDc3LDI0NDgyLDI0NDg3LDI0NDkxLDI0NDg0LDI0NDkyLDI0NDk1LDI0NDk2LDI0NDk3LDI0NTA0LDI0NTE2LDI0NTE5LDI0NTIwLDI0NTIxLDI0NTIzLDI0NTI4LDI0NTI5LDI0NTMwLDI0NTMxLDI0NTMyLDI0NTQyLDI0NTQ1LDI0NTQ2LDI0NTUyLDI0NTUzLDI0NTU0LDI0NTU2LDI0NTU3LDI0NTU4LDI0NTU5LDI0NTYyLDI0NTYzLDI0NTY2LDI0NTcwLDI0NTcyLDI0NTgzLDI0NTg2LDI0NTg5LDI0NTk1LDI0NTk2LDI0NTk5LDI0NjAwLDI0NjAyLDI0NjA3LDI0NjEyLDI0NjIxLDI0NjI3LDI0NjI5LDI0NjQwLDI0NjQ3LDI0NjQ4LDI0NjQ5LDI0NjUyLDI0NjU3LDI0NjYwLDI0NjYyLDI0NjYzLDI0NjY5LDI0NjczLDI0Njc5LDI0Njg5LDI0NzAyLDI0NzAzLDI0NzA2LDI0NzEwLDI0NzEyLDI0NzE0LDI0NzE4LDI0NzIxLDI0NzIzLDI0NzI1LDI0NzI4LDI0NzMzLDI0NzM0LDI0NzM4LDI0NzQwLDI0NzQxLDI0NzQ0LDI0NzUyLDI0NzUzLDI0NzU5LDI0NzYzLDI0NzY2LDI0NzcwLDI0NzcyLDI0Nzc2LDI0Nzc3LDI0Nzc4LDI0Nzc5LDI0NzgyLDI0NzgzLDI0Nzg4LDI0Nzg5LDI0NzkzLDI0Nzk1LDI0Nzk3LDI0Nzk4LDI0ODAyLDI0ODA1LDI0ODE4LDI0ODIxLDI0ODI0LDI0ODI4LDI0ODI5LDI0ODM0LDI0ODM5LDI0ODQyLDI0ODQ0LDI0ODQ4LDI0ODQ5LDI0ODUwLDI0ODUxLDI0ODUyLDI0ODU0LDI0ODU1LDI0ODU3LDI0ODYwLDI0ODYyLDI0ODY2LDI0ODc0LDI0ODc1LDI0ODgwLDI0ODgxLDI0ODg1LDI0ODg2LDI0ODg3LDI0ODg5LDI0ODk3LDI0OTAxLDI0OTAyLDI0OTA1LDI0OTI2LDI0OTI4LDI0OTQwLDI0OTQ2LDI0OTUyLDI0OTU1LDI0OTU2LDI0OTU5LDI0OTYwLDI0OTYxLDI0OTYzLDI0OTY0LDI0OTcxLDI0OTczLDI0OTc4LDI0OTc5LDI0OTgzLDI0OTg0LDI0OTg4LDI0OTg5LDI0OTkxLDI0OTkyLDI0OTk3LDI1MDAwLDI1MDAyLDI1MDA1LDI1MDE2LDI1MDE3LDI1MDIwLDI1MDI0LDI1MDI1LDI1MDI2LDI1MDM4LDI1MDM5LDI1MDQ1LDI1MDUyLDI1MDUzLDI1MDU0LDI1MDU1LDI1MDU3LDI1MDU4LDI1MDYzLDI1MDY1LDI1MDYxLDI1MDY4LDI1MDY5LDI1MDcxLDI1MDg5LDI1MDkxLDI1MDkyLDI1MDk1LDI1MTA3LDI1MTA5LDI1MTE2LDI1MTIwLDI1MTIyLDI1MTIzLDI1MTI3LDI1MTI5LDI1MTMxLDI1MTQ1LDI1MTQ5LDI1MTU0LDI1MTU1LDI1MTU2LDI1MTU4LDI1MTY0LDI1MTY4LDI1MTY5LDI1MTcwLDI1MTcyLDI1MTc0LDI1MTc4LDI1MTgwLDI1MTg4LDI1MTk3LDI1MTk5LDI1MjAzLDI1MjEwLDI1MjEzLDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjU0LDI1MjU2LDI1MjY3LDI1MjcwLDI1MjcxLDI1Mjc0LDI1Mjc4LDI1Mjc5LDI1Mjg0LDI1Mjk0LDI1MzAxLDI1MzAyLDI1MzA2LDI1MzIyLDI1MzMwLDI1MzMyLDI1MzQwLDI1MzQxLDI1MzQ3LDI1MzQ4LDI1MzU0LDI1MzU1LDI1MzU3LDI1MzYwLDI1MzYzLDI1MzY2LDI1MzY4LDI1Mzg1LDI1Mzg2LDI1Mzg5LDI1Mzk3LDI1Mzk4LDI1NDAxLDI1NDA0LDI1NDA5LDI1NDEwLDI1NDExLDI1NDEyLDI1NDE0LDI1NDE4LDI1NDE5LDI1NDIyLDI1NDI2LDI1NDI3LDI1NDI4LDI1NDMyLDI1NDM1LDI1NDQ1LDI1NDQ2LDI1NDUyLDI1NDUzLDI1NDU3LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY4LDI1NDY5LDI1NDcxLDI1NDc0LDI1NDc2LDI1NDc5LDI1NDgyLDI1NDg4LDI1NDkyLDI1NDkzLDI1NDk3LDI1NDk4LDI1NTAyLDI1NTA4LDI1NTEwLDI1NTE3LDI1NTE4LDI1NTE5LDI1NTMzLDI1NTM3LDI1NTQxLDI1NTQ0LDI1NTUwLDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTY0LDI1NTY4LDI1NTczLDI1NTc4LDI1NTgwLDI1NTg2LDI1NTg3LDI1NTg5LDI1NTkyLDI1NTkzLDI1NjA5LDI1NjEwLDI1NjE2LDI1NjE4LDI1NjIwLDI1NjI0LDI1NjMwLDI1NjMyLDI1NjM0LDI1NjM2LDI1NjM3LDI1NjQxLDI1NjQyLDI1NjQ3LDI1NjQ4LDI1NjUzLDI1NjYxLDI1NjYzLDI1Njc1LDI1Njc5LDI1NjgxLDI1NjgyLDI1NjgzLDI1Njg0LDI1NjkwLDI1NjkxLDI1NjkyLDI1NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk5LDI1NzA5LDI1NzE1LDI1NzE2LDI1NzIzLDI1NzI1LDI1NzMzLDI1NzM1LDI1NzQzLDI1NzQ0LDI1NzQ1LDI1NzUyLDI1NzUzLDI1NzU1LDI1NzU3LDI1NzU5LDI1NzYxLDI1NzYzLDI1NzY2LDI1NzY4LDI1NzcyLDI1Nzc5LDI1Nzg5LDI1NzkwLDI1NzkxLDI1Nzk2LDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0LDI1ODA2LDI1ODA4LDI1ODA5LDI1ODEzLDI1ODE1LDI1ODI4LDI1ODI5LDI1ODMzLDI1ODM0LDI1ODM3LDI1ODQwLDI1ODQ1LDI1ODQ3LDI1ODUxLDI1ODU1LDI1ODU3LDI1ODYwLDI1ODY0LDI1ODY1LDI1ODY2LDI1ODcxLDI1ODc1LDI1ODc2LDI1ODc4LDI1ODgxLDI1ODgzLDI1ODg2LDI1ODg3LDI1ODkwLDI1ODk0LDI1ODk3LDI1OTAyLDI1OTA1LDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIzLDI1OTI3LDI1OTI5LDI1OTM2LDI1OTM4LDI1OTQwLDI1OTUxLDI1OTUyLDI1OTU5LDI1OTYzLDI1OTc4LDI1OTgxLDI1OTg1LDI1OTg5LDI1OTk0LDI2MDAyLDI2MDA1LDI2MDA4LDI2MDEzLDI2MDE2LDI2MDE5LDI2MDIyLDI2MDMwLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDQ3LDI2MDUwLDI2MDU2LDI2MDU3LDI2MDYyLDI2MDY0LDI2MDY4LDI2MDcwLDI2MDcyLDI2MDc5LDI2MDk2LDI2MDk4LDI2MTAwLDI2MTAxLDI2MTA1LDI2MTEwLDI2MTExLDI2MTEyLDI2MTE2LDI2MTIwLDI2MTIxLDI2MTI1LDI2MTI5LDI2MTMwLDI2MTMzLDI2MTM0LDI2MTQxLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2LDI2MTU4LDI2MTYwLDI2MTYxLDI2MTYzLDI2MTY5LDI2MTY3LDI2MTc2LDI2MTgxLDI2MTgyLDI2MTg2LDI2MTg4LDI2MTkzLDI2MTkwLDI2MTk5LDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA4LDI2MjA5LDI2MzYzLDI2MjE4LDI2MjE5LDI2MjIwLDI2MjM4LDI2MjI3LDI2MjI5LDI2MjM5LDI2MjMxLDI2MjMyLDI2MjMzLDI2MjM1LDI2MjQwLDI2MjM2LDI2MjUxLDI2MjUyLDI2MjUzLDI2MjU2LDI2MjU4LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcxLDI2MjcyLDI2Mjc2LDI2Mjg1LDI2Mjg5LDI2MjkwLDI2MjkzLDI2Mjk5LDI2MzAzLDI2MzA0LDI2MzA2LDI2MzA3LDI2MzEyLDI2MzE2LDI2MzE4LDI2MzE5LDI2MzI0LDI2MzMxLDI2MzM1LDI2MzQ0LDI2MzQ3LDI2MzQ4LDI2MzUwLDI2MzYyLDI2MzczLDI2Mzc1LDI2MzgyLDI2Mzg3LDI2MzkzLDI2Mzk2LDI2NDAwLDI2NDAyLDI2NDE5LDI2NDMwLDI2NDM3LDI2NDM5LDI2NDQwLDI2NDQ0LDI2NDUyLDI2NDUzLDI2NDYxLDI2NDcwLDI2NDc2LDI2NDc4LDI2NDg0LDI2NDg2LDI2NDkxLDI2NDk3LDI2NTAwLDI2NTEwLDI2NTExLDI2NTEzLDI2NTE1LDI2NTE4LDI2NTIwLDI2NTIxLDI2NTIzLDI2NTQ0LDI2NTQ1LDI2NTQ2LDI2NTQ5LDI2NTU1LDI2NTU2LDI2NTU3LDI2NjE3LDI2NTYwLDI2NTYyLDI2NTYzLDI2NTY1LDI2NTY4LDI2NTY5LDI2NTc4LDI2NTgzLDI2NTg1LDI2NTg4LDI2NTkzLDI2NTk4LDI2NjA4LDI2NjEwLDI2NjE0LDI2NjE1LDI2NzA2LDI2NjQ0LDI2NjQ5LDI2NjUzLDI2NjU1LDI2NjY0LDI2NjYzLDI2NjY4LDI2NjY5LDI2NjcxLDI2NjcyLDI2NjczLDI2Njc1LDI2NjgzLDI2Njg3LDI2NjkyLDI2NjkzLDI2Njk4LDI2NzAwLDI2NzA5LDI2NzExLDI2NzEyLDI2NzE1LDI2NzMxLDI2NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzQxLDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzU0LDI2NzU2LDI2NzU4LDI2NzYwLDI2Nzc0LDI2Nzc2LDI2Nzc4LDI2NzgwLDI2Nzg1LDI2Nzg3LDI2Nzg5LDI2NzkzLDI2Nzk0LDI2Nzk4LDI2ODAyLDI2ODExLDI2ODIxLDI2ODI0LDI2ODI4LDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM4LDI2ODQxLDI2ODQ0LDI2ODQ1LDI2ODUzLDI2ODU2LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODY0LDI2ODY1LDI2ODY5LDI2ODcwLDI2ODc1LDI2ODc2LDI2ODc3LDI2ODg2LDI2ODg5LDI2ODkwLDI2ODk2LDI2ODk3LDI2ODk5LDI2OTAyLDI2OTAzLDI2OTI5LDI2OTMxLDI2OTMzLDI2OTM2LDI2OTM5LDI2OTQ2LDI2OTQ5LDI2OTUzLDI2OTU4LDI2OTY3LDI2OTcxLDI2OTc5LDI2OTgwLDI2OTgxLDI2OTgyLDI2OTg0LDI2OTg1LDI2OTg4LDI2OTkyLDI2OTkzLDI2OTk0LDI3MDAyLDI3MDAzLDI3MDA3LDI3MDA4LDI3MDIxLDI3MDI2LDI3MDMwLDI3MDMyLDI3MDQxLDI3MDQ1LDI3MDQ2LDI3MDQ4LDI3MDUxLDI3MDUzLDI3MDU1LDI3MDYzLDI3MDY0LDI3MDY2LDI3MDY4LDI3MDc3LDI3MDgwLDI3MDg5LDI3MDk0LDI3MDk1LDI3MTA2LDI3MTA5LDI3MTE4LDI3MTE5LDI3MTIxLDI3MTIzLDI3MTI1LDI3MTM0LDI3MTM2LDI3MTM3LDI3MTM5LDI3MTUxLDI3MTUzLDI3MTU3LDI3MTYyLDI3MTY1LDI3MTY4LDI3MTcyLDI3MTc2LDI3MTg0LDI3MTg2LDI3MTg4LDI3MTkxLDI3MTk1LDI3MTk4LDI3MTk5LDI3MjA1LDI3MjA2LDI3MjA5LDI3MjEwLDI3MjE0LDI3MjE2LDI3MjE3LDI3MjE4LDI3MjIxLDI3MjIyLDI3MjI3LDI3MjM2LDI3MjM5LDI3MjQyLDI3MjQ5LDI3MjUxLDI3MjYyLDI3MjY1LDI3MjY3LDI3MjcwLDI3MjcxLDI3MjczLDI3Mjc1LDI3MjgxLDI3MjkxLDI3MjkzLDI3Mjk0LDI3Mjk1LDI3MzAxLDI3MzA3LDI3MzExLDI3MzEyLDI3MzEzLDI3MzE2LDI3MzI1LDI3MzI2LDI3MzI3LDI3MzM0LDI3MzM3LDI3MzM2LDI3MzQwLDI3MzQ0LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzU2LDI3MzU3LDI3MzY0LDI3MzY3LDI3MzcyLDI3Mzc2LDI3Mzc3LDI3Mzc4LDI3Mzg4LDI3Mzg5LDI3Mzk0LDI3Mzk1LDI3Mzk4LDI3Mzk5LDI3NDAxLDI3NDA3LDI3NDA4LDI3NDA5LDI3NDE1LDI3NDE5LDI3NDIyLDI3NDI4LDI3NDMyLDI3NDM1LDI3NDM2LDI3NDM5LDI3NDQ1LDI3NDQ2LDI3NDUxLDI3NDU1LDI3NDYyLDI3NDY2LDI3NDY5LDI3NDc0LDI3NDc4LDI3NDgwLDI3NDg1LDI3NDg4LDI3NDk1LDI3NDk5LDI3NTAyLDI3NTA0LDI3NTA5LDI3NTE3LDI3NTE4LDI3NTIyLDI3NTI1LDI3NTQzLDI3NTQ3LDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTYwLDI3NTYxLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY4LDI3NTc2LDI3NTc3LDI3NTgxLDI3NTgyLDI3NTg3LDI3NTg4LDI3NTkzLDI3NTk2LDI3NjA2LDI3NjEwLDI3NjE3LDI3NjE5LDI3NjIyLDI3NjIzLDI3NjMwLDI3NjMzLDI3NjM5LDI3NjQxLDI3NjQ3LDI3NjUwLDI3NjUyLDI3NjUzLDI3NjU3LDI3NjYxLDI3NjYyLDI3NjY0LDI3NjY2LDI3NjczLDI3Njc5LDI3Njg2LDI3Njg3LDI3Njg4LDI3NjkyLDI3Njk0LDI3Njk5LDI3NzAxLDI3NzAyLDI3NzA2LDI3NzA3LDI3NzExLDI3NzIyLDI3NzIzLDI3NzI1LDI3NzI3LDI3NzMwLDI3NzMyLDI3NzM3LDI3NzM5LDI3NzQwLDI3NzU1LDI3NzU3LDI3NzU5LDI3NzY0LDI3NzY2LDI3NzY4LDI3NzY5LDI3NzcxLDI3NzgxLDI3NzgyLDI3NzgzLDI3Nzg1LDI3Nzk2LDI3Nzk3LDI3Nzk5LDI3ODAwLDI3ODA0LDI3ODA3LDI3ODI0LDI3ODI2LDI3ODI4LDI3ODQyLDI3ODQ2LDI3ODUzLDI3ODU1LDI3ODU2LDI3ODU3LDI3ODU4LDI3ODYwLDI3ODYyLDI3ODY2LDI3ODY4LDI3ODcyLDI3ODc5LDI3ODgxLDI3ODgzLDI3ODg0LDI3ODg2LDI3ODkwLDI3ODkyLDI3OTA4LDI3OTExLDI3OTE0LDI3OTE4LDI3OTE5LDI3OTIxLDI3OTIzLDI3OTMwLDI3OTQyLDI3OTQzLDI3OTQ0LDI3NzUxLDI3OTUwLDI3OTUxLDI3OTUzLDI3OTYxLDI3OTY0LDI3OTY3LDI3OTkxLDI3OTk4LDI3OTk5LDI4MDAxLDI4MDA1LDI4MDA3LDI4MDE1LDI4MDE2LDI4MDI4LDI4MDM0LDI4MDM5LDI4MDQ5LDI4MDUwLDI4MDUyLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDc0LDI4MDc2LDI4MDg0LDI4MDg3LDI4MDg5LDI4MDkzLDI4MDk1LDI4MTAwLDI4MTA0LDI4MTA2LDI4MTEwLDI4MTExLDI4MTE4LDI4MTIzLDI4MTI1LDI4MTI3LDI4MTI4LDI4MTMwLDI4MTMzLDI4MTM3LDI4MTQzLDI4MTQ0LDI4MTQ4LDI4MTUwLDI4MTU2LDI4MTYwLDI4MTY0LDI4MTkwLDI4MTk0LDI4MTk5LDI4MjEwLDI4MjE0LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjI4LDI4MjI5LDI4MjMyLDI4MjMzLDI4MjM1LDI4MjM5LDI4MjQxLDI4MjQyLDI4MjQzLDI4MjQ0LDI4MjQ3LDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU4LDI4MjU5LDI4MjY0LDI4Mjc1LDI4MjgzLDI4Mjg1LDI4MzAxLDI4MzA3LDI4MzEzLDI4MzIwLDI4MzI3LDI4MzMzLDI4MzM0LDI4MzM3LDI4MzM5LDI4MzQ3LDI4MzUxLDI4MzUyLDI4MzUzLDI4MzU1LDI4MzU5LDI4MzYwLDI4MzYyLDI4MzY1LDI4MzY2LDI4MzY3LDI4Mzk1LDI4Mzk3LDI4Mzk4LDI4NDA5LDI4NDExLDI4NDEzLDI4NDIwLDI4NDI0LDI4NDI2LDI4NDI4LDI4NDI5LDI4NDM4LDI4NDQwLDI4NDQyLDI4NDQzLDI4NDU0LDI4NDU3LDI4NDU4LDI4NDYzLDI4NDY0LDI4NDY3LDI4NDcwLDI4NDc1LDI4NDc2LDI4NDYxLDI4NDk1LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAzLDI4NTA1LDI4NTA2LDI4NTA5LDI4NTEwLDI4NTEzLDI4NTE0LDI4NTIwLDI4NTI0LDI4NTQxLDI4NTQyLDI4NTQ3LDI4NTUxLDI4NTUyLDI4NTU1LDI4NTU2LDI4NTU3LDI4NTYwLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY2LDI4NTcwLDI4NTc1LDI4NTc2LDI4NTgxLDI4NTgyLDI4NTgzLDI4NTg0LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTk3LDI4NTk4LDI4NjA0LDI4NjEzLDI4NjE1LDI4NjE2LDI4NjE4LDI4NjM0LDI4NjM4LDI4NjQ4LDI4NjQ5LDI4NjU2LDI4NjYxLDI4NjY1LDI4NjY4LDI4NjY5LDI4NjcyLDI4Njc3LDI4Njc4LDI4Njc5LDI4Njg1LDI4Njk1LDI4NzA0LDI4NzA3LDI4NzE5LDI4NzI0LDI4NzI3LDI4NzI5LDI4NzMyLDI4NzM5LDI4NzQwLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzU2LDI4NzU3LDI4NzY1LDI4NzY2LDI4NzUwLDI4NzcyLDI4NzczLDI4NzgwLDI4NzgyLDI4Nzg5LDI4NzkwLDI4Nzk4LDI4ODAxLDI4ODA1LDI4ODA2LDI4ODIwLDI4ODIxLDI4ODIyLDI4ODIzLDI4ODI0LDI4ODI3LDI4ODM2LDI4ODQzLDI4ODQ4LDI4ODQ5LDI4ODUyLDI4ODU1LDI4ODc0LDI4ODgxLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg4LDI4ODkyLDI4OTAwLDI4OTIyLDI4OTMxLDI4OTMyLDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM5LDI4OTQwLDI4OTQzLDI4OTU4LDI4OTYwLDI4OTcxLDI4OTczLDI4OTc1LDI4OTc2LDI4OTc3LDI4OTg0LDI4OTkzLDI4OTk3LDI4OTk4LDI4OTk5LDI5MDAyLDI5MDAzLDI5MDA4LDI5MDEwLDI5MDE1LDI5MDE4LDI5MDIwLDI5MDIyLDI5MDI0LDI5MDMyLDI5MDQ5LDI5MDU2LDI5MDYxLDI5MDYzLDI5MDY4LDI5MDc0LDI5MDgyLDI5MDgzLDI5MDg4LDI5MDkwLDI5MTAzLDI5MTA0LDI5MTA2LDI5MTA3LDI5MTE0LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTI0LDI5MTMxLDI5MTMyLDI5MTM5LDI5MTQyLDI5MTQ1LDI5MTQ2LDI5MTQ4LDI5MTc2LDI5MTgyLDI5MTg0LDI5MTkxLDI5MTkyLDI5MTkzLDI5MjAzLDI5MjA3LDI5MjEwLDI5MjEzLDI5MjE1LDI5MjIwLDI5MjI3LDI5MjMxLDI5MjM2LDI5MjQwLDI5MjQxLDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUzLDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY3LDI5MjY5LDI5MjcwLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg4LDI5MjkxLDI5Mjk0LDI5Mjk1LDI5Mjk3LDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzExLDI5MzE2LDI5MzIxLDI5MzI1LDI5MzI2LDI5MzMxLDI5MzM5LDI5MzUyLDI5MzU3LDI5MzU4LDI5MzYxLDI5MzY0LDI5Mzc0LDI5Mzc3LDI5MzgzLDI5Mzg1LDI5Mzg4LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDA3LDI5NDEzLDI5NDI3LDI5NDI4LDI5NDM0LDI5NDM1LDI5NDM4LDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ3LDI5NDUxLDI5NDUzLDI5NDU4LDI5NDU5LDI5NDY0LDI5NDY1LDI5NDcwLDI5NDc0LDI5NDc2LDI5NDc5LDI5NDgwLDI5NDg0LDI5NDg5LDI5NDkwLDI5NDkzLDI5NDk4LDI5NDk5LDI5NTAxLDI5NTA3LDI5NTE3LDI5NTIwLDI5NTIyLDI5NTI2LDI5NTI4LDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM2LDI5NTQyLDI5NTQzLDI5NTQ1LDI5NTQ3LDI5NTQ4LDI5NTUwLDI5NTUxLDI5NTUzLDI5NTU5LDI5NTYxLDI5NTY0LDI5NTY4LDI5NTY5LDI5NTcxLDI5NTczLDI5NTc0LDI5NTgyLDI5NTg0LDI5NTg3LDI5NTg5LDI5NTkxLDI5NTkyLDI5NTk2LDI5NTk4LDI5NTk5LDI5NjAwLDI5NjAyLDI5NjA1LDI5NjA2LDI5NjEwLDI5NjExLDI5NjEzLDI5NjIxLDI5NjIzLDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMxLDI5NjM3LDI5NjM4LDI5NjQxLDI5NjQzLDI5NjQ0LDI5NjQ3LDI5NjUwLDI5NjUxLDI5NjU0LDI5NjU3LDI5NjYxLDI5NjY1LDI5NjY3LDI5NjcwLDI5NjcxLDI5NjczLDI5Njg0LDI5Njg1LDI5Njg3LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkzLDI5Njk1LDI5Njk2LDI5Njk3LDI5NzAwLDI5NzAzLDI5NzA2LDI5NzEzLDI5NzIyLDI5NzIzLDI5NzMyLDI5NzM0LDI5NzM2LDI5NzM3LDI5NzM4LDI5NzM5LDI5NzQwLDI5NzQxLDI5NzQyLDI5NzQzLDI5NzQ0LDI5NzQ1LDI5NzUzLDI5NzYwLDI5NzYzLDI5NzY0LDI5NzY2LDI5NzY3LDI5NzcxLDI5NzczLDI5Nzc3LDI5Nzc4LDI5NzgzLDI5Nzg5LDI5Nzk0LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5ODAzLDI5ODA1LDI5ODA2LDI5ODA5LDI5ODEwLDI5ODI0LDI5ODI1LDI5ODI5LDI5ODMwLDI5ODMxLDI5ODMzLDI5ODM5LDI5ODQwLDI5ODQxLDI5ODQyLDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUyLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU5LDI5ODYyLDI5ODY0LDI5ODY1LDI5ODY2LDI5ODY3LDI5ODcwLDI5ODcxLDI5ODczLDI5ODc0LDI5ODc3LDI5ODgxLDI5ODgzLDI5ODg3LDI5ODk2LDI5ODk3LDI5OTAwLDI5OTA0LDI5OTA3LDI5OTEyLDI5OTE0LDI5OTE1LDI5OTE4LDI5OTE5LDI5OTI0LDI5OTI4LDI5OTMwLDI5OTMxLDI5OTM1LDI5OTQwLDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5OTUxLDI5OTU4LDI5OTcwLDI5OTc0LDI5OTc1LDI5OTg0LDI5OTg1LDI5OTg4LDI5OTkxLDI5OTkzLDI5OTk0LDI5OTk5LDMwMDA2LDMwMDA5LDMwMDEzLDMwMDE0LDMwMDE1LDMwMDE2LDMwMDE5LDMwMDIzLDMwMDI0LDMwMDMwLDMwMDMyLDMwMDM0LDMwMDM5LDMwMDQ2LDMwMDQ3LDMwMDQ5LDMwMDYzLDMwMDY1LDMwMDczLDMwMDc0LDMwMDc1LDMwMDc2LDMwMDc3LDMwMDc4LDMwMDgxLDMwMDg1LDMwMDk2LDMwMDk4LDMwMDk5LDMwMTAxLDMwMTA1LDMwMTA4LDMwMTE0LDMwMTE2LDMwMTMyLDMwMTM4LDMwMTQzLDMwMTQ0LDMwMTQ1LDMwMTQ4LDMwMTUwLDMwMTU2LDMwMTU4LDMwMTU5LDMwMTY3LDMwMTcyLDMwMTc1LDMwMTc2LDMwMTc3LDMwMTgwLDMwMTgzLDMwMTg4LDMwMTkwLDMwMTkxLDMwMTkzLDMwMjAxLDMwMjA4LDMwMjEwLDMwMjExLDMwMjEyLDMwMjE1LDMwMjE2LDMwMjE4LDMwMjIwLDMwMjIzLDMwMjI2LDMwMjI3LDMwMjI5LDMwMjMwLDMwMjMzLDMwMjM1LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQzLDMwMjQ1LDMwMjQ2LDMwMjQ5LDMwMjUzLDMwMjU4LDMwMjU5LDMwMjYxLDMwMjY0LDMwMjY1LDMwMjY2LDMwMjY4LDMwMjgyLDMwMjcyLDMwMjczLDMwMjc1LDMwMjc2LDMwMjc3LDMwMjgxLDMwMjgzLDMwMjkzLDMwMjk3LDMwMzAzLDMwMzA4LDMwMzA5LDMwMzE3LDMwMzE4LDMwMzE5LDMwMzIxLDMwMzI0LDMwMzM3LDMwMzQxLDMwMzQ4LDMwMzQ5LDMwMzU3LDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY3LDMwMzY4LDMwMzcwLDMwMzcxLDMwMzcyLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2LDMwMzc4LDMwMzgxLDMwMzk3LDMwNDAxLDMwNDA1LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE0LDMwNDIwLDMwNDI1LDMwNDMyLDMwNDM4LDMwNDQwLDMwNDQ0LDMwNDQ4LDMwNDQ5LDMwNDU0LDMwNDU3LDMwNDYwLDMwNDY0LDMwNDcwLDMwNDc0LDMwNDc4LDMwNDgyLDMwNDg0LDMwNDg1LDMwNDg3LDMwNDg5LDMwNDkwLDMwNDkyLDMwNDk4LDMwNTA0LDMwNTA5LDMwNTEwLDMwNTExLDMwNTE2LDMwNTE3LDMwNTE4LDMwNTIxLDMwNTI1LDMwNTI2LDMwNTMwLDMwNTMzLDMwNTM0LDMwNTM4LDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTUwLDMwNTUxLDMwNTU2LDMwNTU4LDMwNTU5LDMwNTYwLDMwNTYyLDMwNTY0LDMwNTY3LDMwNTcwLDMwNTcyLDMwNTc2LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTg2LDMwNTg5LDMwNTkyLDMwNTk2LDMwNjA0LDMwNjA1LDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE4LDMwNjIzLDMwNjI2LDMwNjMxLDMwNjM0LDMwNjM4LDMwNjM5LDMwNjQxLDMwNjQ1LDMwNjU0LDMwNjU5LDMwNjY1LDMwNjczLDMwNjc0LDMwNjc3LDMwNjgxLDMwNjg2LDMwNjg3LDMwNjg4LDMwNjkyLDMwNjk0LDMwNjk4LDMwNzAwLDMwNzA0LDMwNzA1LDMwNzA4LDMwNzEyLDMwNzE1LDMwNzI1LDMwNzI2LDMwNzI5LDMwNzMzLDMwNzM0LDMwNzM3LDMwNzQ5LDMwNzUzLDMwNzU0LDMwNzU1LDMwNzY1LDMwNzY2LDMwNzY4LDMwNzczLDMwNzc1LDMwNzg3LDMwNzg4LDMwNzkxLDMwNzkyLDMwNzk2LDMwNzk4LDMwODAyLDMwODEyLDMwODE0LDMwODE2LDMwODE3LDMwODE5LDMwODIwLDMwODI0LDMwODI2LDMwODMwLDMwODQyLDMwODQ2LDMwODU4LDMwODYzLDMwODY4LDMwODcyLDMwODgxLDMwODc3LDMwODc4LDMwODc5LDMwODg0LDMwODg4LDMwODkyLDMwODkzLDMwODk2LDMwODk3LDMwODk4LDMwODk5LDMwOTA3LDMwOTA5LDMwOTExLDMwOTE5LDMwOTIwLDMwOTIxLDMwOTI0LDMwOTI2LDMwOTMwLDMwOTMxLDMwOTMzLDMwOTM0LDMwOTQ4LDMwOTM5LDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTUwLDMwOTU0LDMwOTYyLDMwOTYzLDMwOTc2LDMwOTY2LDMwOTY3LDMwOTcwLDMwOTcxLDMwOTc1LDMwOTgyLDMwOTg4LDMwOTkyLDMxMDAyLDMxMDA0LDMxMDA2LDMxMDA3LDMxMDA4LDMxMDEzLDMxMDE1LDMxMDE3LDMxMDIxLDMxMDI1LDMxMDI4LDMxMDI5LDMxMDM1LDMxMDM3LDMxMDM5LDMxMDQ0LDMxMDQ1LDMxMDQ2LDMxMDUwLDMxMDUxLDMxMDU1LDMxMDU3LDMxMDYwLDMxMDY0LDMxMDY3LDMxMDY4LDMxMDc5LDMxMDgxLDMxMDgzLDMxMDkwLDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAyLDMxMTE1LDMxMTE2LDMxMTIxLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI4LDMxMTMxLDMxMTMyLDMxMTM3LDMxMTQ0LDMxMTQ1LDMxMTQ3LDMxMTUxLDMxMTUzLDMxMTU2LDMxMTYwLDMxMTYzLDMxMTcwLDMxMTcyLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgzLDMxMTg4LDMxMTkwLDMxMTk0LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAyLDMxMjA1LDMxMjEwLDMxMjExLDMxMjEzLDMxMjE3LDMxMjI0LDMxMjI4LDMxMjM0LDMxMjM1LDMxMjM5LDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ5LDMxMjUzLDMxMjU5LDMxMjYyLDMxMjY1LDMxMjcxLDMxMjc1LDMxMjc3LDMxMjc5LDMxMjgwLDMxMjg0LDMxMjg1LDMxMjg4LDMxMjg5LDMxMjkwLDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA4LDMxMzE3LDMxMzE4LDMxMzIxLDMxMzI0LDMxMzI1LDMxMzI3LDMxMzI4LDMxMzMzLDMxMzM1LDMxMzM4LDMxMzQxLDMxMzQ5LDMxMzUyLDMxMzU4LDMxMzYwLDMxMzYyLDMxMzY1LDMxMzY2LDMxMzcwLDMxMzcxLDMxMzc2LDMxMzc3LDMxMzgwLDMxMzkwLDMxMzkyLDMxMzk1LDMxNDA0LDMxNDExLDMxNDEzLDMxNDE3LDMxNDE5LDMxNDIwLDMxNDMwLDMxNDMzLDMxNDM2LDMxNDM4LDMxNDQxLDMxNDUxLDMxNDY0LDMxNDY1LDMxNDY3LDMxNDY4LDMxNDczLDMxNDc2LDMxNDgzLDMxNDg1LDMxNDg2LDMxNDk1LDMxNTA4LDMxNTE5LDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMwLDMxNTMxLDMxNTMzLDMxNTM0LDMxNTM1LDMxNTM2LDMxNTM3LDMxNTQwLDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU5LDMxNTY2LDMxNTczLDMxNTg0LDMxNTg4LDMxNTkwLDMxNTkzLDMxNTk0LDMxNTk3LDMxNTk5LDMxNjAyLDMxNjAzLDMxNjA3LDMxNjIwLDMxNjI1LDMxNjMwLDMxNjMyLDMxNjMzLDMxNjM4LDMxNjQzLDMxNjQ2LDMxNjQ4LDMxNjUzLDMxNjYwLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY5LDMxNjcwLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjgyLDMxNjg1LDMxNjg4LDMxNjkwLDMxNzAwLDMxNzAyLDMxNzAzLDMxNzA1LDMxNzA2LDMxNzA3LDMxNzIwLDMxNzIyLDMxNzMwLDMxNzMyLDMxNzMzLDMxNzM2LDMxNzM3LDMxNzM4LDMxNzQwLDMxNzQyLDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzUwLDMxNzUzLDMxNzU1LDMxNzU2LDMxNzU4LDMxNzU5LDMxNzY5LDMxNzcxLDMxNzc2LDMxNzgxLDMxNzgyLDMxNzg0LDMxNzg4LDMxNzkzLDMxNzk1LDMxNzk2LDMxNzk4LDMxODAxLDMxODAyLDMxODE0LDMxODE4LDMxODI5LDMxODI1LDMxODI2LDMxODI3LDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODQxLDMxODQzLDMxODQ3LDMxODQ5LDMxODUzLDMxODU0LDMxODU2LDMxODU4LDMxODY1LDMxODY4LDMxODY5LDMxODc4LDMxODc5LDMxODg3LDMxODkyLDMxOTAyLDMxOTA0LDMxOTEwLDMxOTIwLDMxOTI2LDMxOTI3LDMxOTMwLDMxOTMxLDMxOTMyLDMxOTM1LDMxOTQwLDMxOTQzLDMxOTQ0LDMxOTQ1LDMxOTQ5LDMxOTUxLDMxOTU1LDMxOTU2LDMxOTU3LDMxOTU5LDMxOTYxLDMxOTYyLDMxOTY1LDMxOTc0LDMxOTc3LDMxOTc5LDMxOTg5LDMyMDAzLDMyMDA3LDMyMDA4LDMyMDA5LDMyMDE1LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIyLDMyMDI5LDMyMDMwLDMyMDM1LDMyMDM4LDMyMDQyLDMyMDQ1LDMyMDQ5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDY0LDMyMDY1LDMyMDcxLDMyMDcyLDMyMDc3LDMyMDgxLDMyMDgzLDMyMDg3LDMyMDg5LDMyMDkwLDMyMDkyLDMyMDkzLDMyMTAxLDMyMTAzLDMyMTA2LDMyMTEyLDMyMTIwLDMyMTIyLDMyMTIzLDMyMTI3LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMzLDMyMTM0LDMyMTM2LDMyMTM5LDMyMTQwLDMyMTQxLDMyMTQ1LDMyMTUwLDMyMTUxLDMyMTU3LDMyMTU4LDMyMTY2LDMyMTY3LDMyMTcwLDMyMTc5LDMyMTgyLDMyMTgzLDMyMTg1LDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMjA0LDMyMjA1LDMyMjA2LDMyMjE1LDMyMjE3LDMyMjU2LDMyMjI2LDMyMjI5LDMyMjMwLDMyMjM0LDMyMjM1LDMyMjM3LDMyMjQxLDMyMjQ1LDMyMjQ2LDMyMjQ5LDMyMjUwLDMyMjY0LDMyMjcyLDMyMjczLDMyMjc3LDMyMjc5LDMyMjg0LDMyMjg1LDMyMjg4LDMyMjk1LDMyMjk2LDMyMzAwLDMyMzAxLDMyMzAzLDMyMzA3LDMyMzEwLDMyMzE5LDMyMzI0LDMyMzI1LDMyMzI3LDMyMzM0LDMyMzM2LDMyMzM4LDMyMzQ0LDMyMzUxLDMyMzUzLDMyMzU0LDMyMzU3LDMyMzYzLDMyMzY2LDMyMzY3LDMyMzcxLDMyMzc2LDMyMzgyLDMyMzg1LDMyMzkwLDMyMzkxLDMyMzk0LDMyMzk3LDMyNDAxLDMyNDA1LDMyNDA4LDMyNDEwLDMyNDEzLDMyNDE0LDMyNTcyLDMyNTcxLDMyNTczLDMyNTc0LDMyNTc1LDMyNTc5LDMyNTgwLDMyNTgzLDMyNTkxLDMyNTk0LDMyNTk1LDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA5LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjIxLDMyNjI1LDMyNjM3LDMyNjM4LDMyNjM5LDMyNjQwLDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjYyLDMyNjYzLDMyNjY4LDMyNjczLDMyNjc0LDMyNjc4LDMyNjgyLDMyNjg1LDMyNjkyLDMyNzAwLDMyNzAzLDMyNzA0LDMyNzA3LDMyNzEyLDMyNzE4LDMyNzE5LDMyNzMxLDMyNzM1LDMyNzM5LDMyNzQxLDMyNzQ0LDMyNzQ4LDMyNzUwLDMyNzUxLDMyNzU0LDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3LDMyNzc1LDMyNzc2LDMyNzc4LDMyNzgxLDMyNzgyLDMyNzgzLDMyNzg1LDMyNzg3LDMyNzg4LDMyNzkwLDMyNzk3LDMyNzk4LDMyNzk5LDMyODAwLDMyODA0LDMyODA2LDMyODEyLDMyODE0LDMyODE2LDMyODIwLDMyODIxLDMyODIzLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMyODM2LDMyODY0LDMyODY4LDMyODcwLDMyODc3LDMyODgxLDMyODg1LDMyODk3LDMyOTA0LDMyOTEwLDMyOTI0LDMyOTI2LDMyOTM0LDMyOTM1LDMyOTM5LDMyOTUyLDMyOTUzLDMyOTY4LDMyOTczLDMyOTc1LDMyOTc4LDMyOTgwLDMyOTgxLDMyOTgzLDMyOTg0LDMyOTkyLDMzMDA1LDMzMDA2LDMzMDA4LDMzMDEwLDMzMDExLDMzMDE0LDMzMDE3LDMzMDE4LDMzMDIyLDMzMDI3LDMzMDM1LDMzMDQ2LDMzMDQ3LDMzMDQ4LDMzMDUyLDMzMDU0LDMzMDU2LDMzMDYwLDMzMDYzLDMzMDY4LDMzMDcyLDMzMDc3LDMzMDgyLDMzMDg0LDMzMDkzLDMzMDk1LDMzMDk4LDMzMTAwLDMzMTA2LDMzMTExLDMzMTIwLDMzMTIxLDMzMTI3LDMzMTI4LDMzMTI5LDMzMTMzLDMzMTM1LDMzMTQzLDMzMTUzLDMzMTY4LDMzMTU2LDMzMTU3LDMzMTU4LDMzMTYzLDMzMTY2LDMzMTc0LDMzMTc2LDMzMTc5LDMzMTgyLDMzMTg2LDMzMTk4LDMzMjAyLDMzMjA0LDMzMjExLDMzMjI3LDMzMjE5LDMzMjIxLDMzMjI2LDMzMjMwLDMzMjMxLDMzMjM3LDMzMjM5LDMzMjQzLDMzMjQ1LDMzMjQ2LDMzMjQ5LDMzMjUyLDMzMjU5LDMzMjYwLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcyLDMzMjczLDMzMjc3LDMzMjc5LDMzMjgwLDMzMjgzLDMzMjk1LDMzMjk5LDMzMzAwLDMzMzA1LDMzMzA2LDMzMzA5LDMzMzEzLDMzMzE0LDMzMzIwLDMzMzMwLDMzMzMyLDMzMzM4LDMzMzQ3LDMzMzQ4LDMzMzQ5LDMzMzUwLDMzMzU1LDMzMzU4LDMzMzU5LDMzMzYxLDMzMzY2LDMzMzcyLDMzMzc2LDMzMzc5LDMzMzgzLDMzMzg5LDMzMzk2LDMzNDAzLDMzNDA1LDMzNDA3LDMzNDA4LDMzNDA5LDMzNDExLDMzNDEyLDMzNDE1LDMzNDE3LDMzNDE4LDMzNDIyLDMzNDI1LDMzNDI4LDMzNDMwLDMzNDMyLDMzNDM0LDMzNDM1LDMzNDQwLDMzNDQxLDMzNDQzLDMzNDQ0LDMzNDQ3LDMzNDQ4LDMzNDQ5LDMzNDUwLDMzNDU0LDMzNDU2LDMzNDU4LDMzNDYwLDMzNDYzLDMzNDY2LDMzNDY4LDMzNDcwLDMzNDcxLDMzNDc4LDMzNDg4LDMzNDkzLDMzNDk4LDMzNTA0LDMzNTA2LDMzNTA4LDMzNTEyLDMzNTE0LDMzNTE3LDMzNTE5LDMzNTI2LDMzNTI3LDMzNTMzLDMzNTM0LDMzNTM2LDMzNTM3LDMzNTQzLDMzNTQ0LDMzNTQ2LDMzNTQ3LDMzNjIwLDMzNTYzLDMzNTY1LDMzNTY2LDMzNTY3LDMzNTY5LDMzNTcwLDMzNTgwLDMzNTgxLDMzNTgyLDMzNTg0LDMzNTg3LDMzNTkxLDMzNTk0LDMzNTk2LDMzNTk3LDMzNjAyLDMzNjAzLDMzNjA0LDMzNjA3LDMzNjEzLDMzNjE0LDMzNjE3LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjQ4LDMzNjU2LDMzNjYxLDMzNjYzLDMzNjY0LDMzNjY2LDMzNjY4LDMzNjcwLDMzNjc3LDMzNjgyLDMzNjg0LDMzNjg1LDMzNjg4LDMzNjg5LDMzNjkxLDMzNjkyLDMzNjkzLDMzNzAyLDMzNzAzLDMzNzA1LDMzNzA4LDMzNzI2LDMzNzI3LDMzNzI4LDMzNzM1LDMzNzM3LDMzNzQzLDMzNzQ0LDMzNzQ1LDMzNzQ4LDMzNzU3LDMzNjE5LDMzNzY4LDMzNzcwLDMzNzgyLDMzNzg0LDMzNzg1LDMzNzg4LDMzNzkzLDMzNzk4LDMzODAyLDMzODA3LDMzODA5LDMzODEzLDMzODE3LDMzNzA5LDMzODM5LDMzODQ5LDMzODYxLDMzODYzLDMzODY0LDMzODY2LDMzODY5LDMzODcxLDMzODczLDMzODc0LDMzODc4LDMzODgwLDMzODgxLDMzODgyLDMzODg0LDMzODg4LDMzODkyLDMzODkzLDMzODk1LDMzODk4LDMzOTA0LDMzOTA3LDMzOTA4LDMzOTEwLDMzOTEyLDMzOTE2LDMzOTE3LDMzOTIxLDMzOTI1LDMzOTM4LDMzOTM5LDMzOTQxLDMzOTUwLDMzOTU4LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTY3LDMzOTY5LDMzOTcyLDMzOTc4LDMzOTgxLDMzOTgyLDMzOTg0LDMzOTg2LDMzOTkxLDMzOTkyLDMzOTk2LDMzOTk5LDM0MDAzLDM0MDEyLDM0MDIzLDM0MDI2LDM0MDMxLDM0MDMyLDM0MDMzLDM0MDM0LDM0MDM5LDM0MDk4LDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDUwLDM0MDUxLDM0MDU1LDM0MDYwLDM0MDYyLDM0MDY0LDM0MDc2LDM0MDc4LDM0MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg3LDM0MDkwLDM0MDkxLDM0MDk1LDM0MDk5LDM0MTAwLDM0MTAyLDM0MTExLDM0MTE4LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTM0LDM0MTM3LDM0MTQwLDM0MTQxLDM0MTQyLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ4LDM0MTU1LDM0MTU5LDM0MTY5LDM0MTcwLDM0MTcxLDM0MTczLDM0MTc1LDM0MTc3LDM0MTgxLDM0MTgyLDM0MTg1LDM0MTg3LDM0MTg4LDM0MTkxLDM0MTk1LDM0MjAwLDM0MjA1LDM0MjA3LDM0MjA4LDM0MjEwLDM0MjEzLDM0MjE1LDM0MjI4LDM0MjMwLDM0MjMxLDM0MjMyLDM0MjM2LDM0MjM3LDM0MjM4LDM0MjM5LDM0MjQyLDM0MjQ3LDM0MjUwLDM0MjUxLDM0MjU0LDM0MjIxLDM0MjY0LDM0MjY2LDM0MjcxLDM0MjcyLDM0Mjc4LDM0MjgwLDM0Mjg1LDM0MjkxLDM0Mjk0LDM0MzAwLDM0MzAzLDM0MzA0LDM0MzA4LDM0MzA5LDM0MzE3LDM0MzE4LDM0MzIwLDM0MzIxLDM0MzIyLDM0MzI4LDM0MzI5LDM0MzMxLDM0MzM0LDM0MzM3LDM0MzQzLDM0MzQ1LDM0MzU4LDM0MzYwLDM0MzYyLDM0MzY0LDM0MzY1LDM0MzY4LDM0MzcwLDM0Mzc0LDM0Mzg2LDM0Mzg3LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk3LDM0NDAwLDM0NDAxLDM0NDAyLDM0NDAzLDM0NDA0LDM0NDA5LDM0NDEyLDM0NDE1LDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI2LDM0NDQ1LDM0NDQ5LDM0NDU0LDM0NDU2LDM0NDU4LDM0NDYwLDM0NDY1LDM0NDcwLDM0NDcxLDM0NDcyLDM0NDc3LDM0NDgxLDM0NDgzLDM0NDg0LDM0NDg1LDM0NDg3LDM0NDg4LDM0NDg5LDM0NDk1LDM0NDk2LDM0NDk3LDM0NDk5LDM0NTAxLDM0NTEzLDM0NTE0LDM0NTE3LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI4LDM0NTMxLDM0NTMzLDM0NTM1LDM0NDQwLDM0NTU0LDM0NTU2LDM0NTU3LDM0NTY0LDM0NTY1LDM0NTY3LDM0NTcxLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc5LDM0NTgwLDM0NTg1LDM0NTkwLDM0NTkxLDM0NTkzLDM0NTk1LDM0NjAwLDM0NjA2LDM0NjA3LDM0NjA5LDM0NjEwLDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjIyLDM0NjI0LDM0NjI3LDM0NjI5LDM0NjM3LDM0NjQ4LDM0NjUzLDM0NjU3LDM0NjYwLDM0NjYxLDM0NjcxLDM0NjczLDM0Njc0LDM0NjgzLDM0NjkxLDM0NjkyLDM0NjkzLDM0Njk0LDM0Njk1LDM0Njk2LDM0Njk3LDM0Njk5LDM0NzAwLDM0NzA0LDM0NzA3LDM0NzA5LDM0NzExLDM0NzEyLDM0NzEzLDM0NzE4LDM0NzIwLDM0NzIzLDM0NzI3LDM0NzMyLDM0NzMzLDM0NzM0LDM0NzM3LDM0NzQxLDM0NzUwLDM0NzUxLDM0NzUzLDM0NzYwLDM0NzYxLDM0NzYyLDM0NzY2LDM0NzczLDM0Nzc0LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgzLDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0Nzk0LDM0Nzk1LDM0Nzk3LDM0ODAxLDM0ODAzLDM0ODA4LDM0ODEwLDM0ODE1LDM0ODE3LDM0ODE5LDM0ODIyLDM0ODI1LDM0ODI2LDM0ODI3LDM0ODMyLDM0ODQxLDM0ODM0LDM0ODM1LDM0ODM2LDM0ODQwLDM0ODQyLDM0ODQzLDM0ODQ0LDM0ODQ2LDM0ODQ3LDM0ODU2LDM0ODYxLDM0ODYyLDM0ODY0LDM0ODY2LDM0ODY5LDM0ODc0LDM0ODc2LDM0ODgxLDM0ODgzLDM0ODg1LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk3LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA4LDM0OTExLDM0OTEyLDM0OTE2LDM0OTIxLDM0OTI5LDM0OTM3LDM0OTM5LDM0OTQ0LDM0OTY4LDM0OTcwLDM0OTcxLDM0OTcyLDM0OTc1LDM0OTc2LDM0OTg0LDM0OTg2LDM1MDAyLDM1MDA1LDM1MDA2LDM1MDA4LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIyLDM1MDI1LDM1MDI2LDM1MDI3LDM1MDM1LDM1MDM4LDM1MDQ3LDM1MDU1LDM1MDU2LDM1MDU3LDM1MDYxLDM1MDYzLDM1MDczLDM1MDc4LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDkzLDM1MDk0LDM1MDk2LDM1MDk3LDM1MDk4LDM1MTAwLDM1MTA0LDM1MTEwLDM1MTExLDM1MTEyLDM1MTIwLDM1MTIxLDM1MTIyLDM1MTI1LDM1MTI5LDM1MTMwLDM1MTM0LDM1MTM2LDM1MTM4LDM1MTQxLDM1MTQyLDM1MTQ1LDM1MTUxLDM1MTU0LDM1MTU5LDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTc5LDM1MTgyLDM1MTg0LDM1MTg3LDM1MTg5LDM1MTk0LDM1MTk1LDM1MTk2LDM1MTk3LDM1MjA5LDM1MjEzLDM1MjE2LDM1MjIwLDM1MjIxLDM1MjI3LDM1MjI4LDM1MjMxLDM1MjMyLDM1MjM3LDM1MjQ4LDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjYwLDM1Mjg0LDM1Mjg1LDM1Mjg2LDM1Mjg3LDM1Mjg4LDM1MzAxLDM1MzA1LDM1MzA3LDM1MzA5LDM1MzEzLDM1MzE1LDM1MzE4LDM1MzIxLDM1MzI1LDM1MzI3LDM1MzMyLDM1MzMzLDM1MzM1LDM1MzQzLDM1MzQ1LDM1MzQ2LDM1MzQ4LDM1MzQ5LDM1MzU4LDM1MzYwLDM1MzYyLDM1MzY0LDM1MzY2LDM1MzcxLDM1MzcyLDM1Mzc1LDM1MzgxLDM1MzgzLDM1Mzg5LDM1MzkwLDM1MzkyLDM1Mzk1LDM1Mzk3LDM1Mzk5LDM1NDAxLDM1NDA1LDM1NDA2LDM1NDExLDM1NDE0LDM1NDE1LDM1NDE2LDM1NDIwLDM1NDIxLDM1NDI1LDM1NDI5LDM1NDMxLDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ5LDM1NDUwLDM1NDUxLDM1NDU0LDM1NDU1LDM1NDU2LDM1NDU5LDM1NDYyLDM1NDY3LDM1NDcxLDM1NDcyLDM1NDc0LDM1NDc4LDM1NDc5LDM1NDgxLDM1NDg3LDM1NDk1LDM1NDk3LDM1NTAyLDM1NTAzLDM1NTA3LDM1NTEwLDM1NTExLDM1NTE1LDM1NTE4LDM1NTIzLDM1NTI2LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTM3LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQzLDM1NTQ5LDM1NTUxLDM1NTY0LDM1NTY4LDM1NTcyLDM1NTczLDM1NTc0LDM1NTgwLDM1NTgzLDM1NTg5LDM1NTkwLDM1NTk1LDM1NjAxLDM1NjEyLDM1NjE0LDM1NjE1LDM1NTk0LDM1NjI5LDM1NjMyLDM1NjM5LDM1NjQ0LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDM1NjU0LDM1NjU2LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjczLDM1NjYxLDM1Njc4LDM1NjgzLDM1NjkzLDM1NzAyLDM1NzA0LDM1NzA1LDM1NzA4LDM1NzEwLDM1NzEzLDM1NzE2LDM1NzE3LDM1NzIzLDM1NzI1LDM1NzI3LDM1NzMyLDM1NzMzLDM1NzQwLDM1NzQyLDM1NzQzLDM1ODk2LDM1ODk3LDM1OTAxLDM1OTAyLDM1OTA5LDM1OTExLDM1OTEzLDM1OTE1LDM1OTE5LDM1OTIxLDM1OTIzLDM1OTI0LDM1OTI3LDM1OTI4LDM1OTMxLDM1OTMzLDM1OTI5LDM1OTM5LDM1OTQwLDM1OTQyLDM1OTQ0LDM1OTQ1LDM1OTQ5LDM1OTU1LDM1OTU3LDM1OTU4LDM1OTYzLDM1OTY2LDM1OTc0LDM1OTc1LDM1OTc5LDM1OTg0LDM1OTg2LDM1OTg3LDM1OTkzLDM1OTk1LDM1OTk2LDM2MDA0LDM2MDI1LDM2MDI2LDM2MDM3LDM2MDM4LDM2MDQxLDM2MDQzLDM2MDQ3LDM2MDU0LDM2MDUzLDM2MDU3LDM2MDYxLDM2MDY1LDM2MDcyLDM2MDc2LDM2MDc5LDM2MDgwLDM2MDgyLDM2MDg1LDM2MDg3LDM2MDg4LDM2MDk0LDM2MDk1LDM2MDk3LDM2MDk5LDM2MTA1LDM2MTE0LDM2MTE5LDM2MTIzLDM2MTk3LDM2MjAxLDM2MjA0LDM2MjA2LDM2MjIzLDM2MjI2LDM2MjI4LDM2MjMyLDM2MjM3LDM2MjQwLDM2MjQxLDM2MjQ1LDM2MjU0LDM2MjU1LDM2MjU2LDM2MjYyLDM2MjY3LDM2MjY4LDM2MjcxLDM2Mjc0LDM2Mjc3LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg4LDM2MjkzLDM2Mjk0LDM2Mjk1LDM2Mjk2LDM2Mjk4LDM2MzAyLDM2MzA1LDM2MzA4LDM2MzA5LDM2MzExLDM2MzEzLDM2MzI0LDM2MzI1LDM2MzI3LDM2MzMyLDM2MzM2LDM2Mjg0LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQ5LDM2MzUzLDM2MzU2LDM2MzU3LDM2MzU4LDM2MzYzLDM2MzY5LDM2MzcyLDM2Mzc0LDM2Mzg0LDM2Mzg1LDM2Mzg2LDM2Mzg3LDM2MzkwLDM2MzkxLDM2NDAxLDM2NDAzLDM2NDA2LDM2NDA3LDM2NDA4LDM2NDA5LDM2NDEzLDM2NDE2LDM2NDE3LDM2NDI3LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDM2LDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ5LDM2NDUwLDM2NDU3LDM2NDYwLDM2NDYxLDM2NDYzLDM2NDY0LDM2NDY1LDM2NDczLDM2NDc0LDM2NDc1LDM2NDgyLDM2NDgzLDM2NDg5LDM2NDk2LDM2NDk4LDM2NTAxLDM2NTA2LDM2NTA3LDM2NTA5LDM2NTEwLDM2NTE0LDM2NTE5LDM2NTIxLDM2NTI1LDM2NTI2LDM2NTMxLDM2NTMzLDM2NTM4LDM2NTM5LDM2NTQ0LDM2NTQ1LDM2NTQ3LDM2NTQ4LDM2NTUxLDM2NTU5LDM2NTYxLDM2NTY0LDM2NTcyLDM2NTg0LDM2NTkwLDM2NTkyLDM2NTkzLDM2NTk5LDM2NjAxLDM2NjAyLDM2NTg5LDM2NjA4LDM2NjEwLDM2NjE1LDM2NjE2LDM2NjIzLDM2NjI0LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjM4LDM2NjQwLDM2NjQxLDM2NjQzLDM2NjQ1LDM2NjQ3LDM2NjQ4LDM2NjUyLDM2NjUzLDM2NjU0LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY2LDM2NjcyLDM2NjczLDM2Njc1LDM2Njc5LDM2Njg3LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk2LDM2NzAxLDM2NzAyLDM2NzA5LDM2NzY1LDM2NzY4LDM2NzY5LDM2NzcyLDM2NzczLDM2Nzc0LDM2Nzg5LDM2NzkwLDM2NzkyLDM2Nzk4LDM2ODAwLDM2ODAxLDM2ODA2LDM2ODEwLDM2ODExLDM2ODEzLDM2ODE2LDM2ODE4LDM2ODE5LDM2ODIxLDM2ODMyLDM2ODM1LDM2ODM2LDM2ODQwLDM2ODQ2LDM2ODQ5LDM2ODUzLDM2ODU0LDM2ODU5LDM2ODYyLDM2ODY2LDM2ODY4LDM2ODcyLDM2ODc2LDM2ODg4LDM2ODkxLDM2OTA0LDM2OTA1LDM2OTExLDM2OTA2LDM2OTA4LDM2OTA5LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTI3LDM2OTMxLDM2OTMyLDM2OTQwLDM2OTU1LDM2OTU3LDM2OTYyLDM2OTY2LDM2OTY3LDM2OTcyLDM2OTc2LDM2OTgwLDM2OTg1LDM2OTk3LDM3MDAwLDM3MDAzLDM3MDA0LDM3MDA2LDM3MDA4LDM3MDEzLDM3MDE1LDM3MDE2LDM3MDE3LDM3MDE5LDM3MDI0LDM3MDI1LDM3MDI2LDM3MDI5LDM3MDQwLDM3MDQyLDM3MDQzLDM3MDQ0LDM3MDQ2LDM3MDUzLDM3MDY4LDM3MDU0LDM3MDU5LDM3MDYwLDM3MDYxLDM3MDYzLDM3MDY0LDM3MDc3LDM3MDc5LDM3MDgwLDM3MDgxLDM3MDg0LDM3MDg1LDM3MDg3LDM3MDkzLDM3MDc0LDM3MTEwLDM3MDk5LDM3MTAzLDM3MTA0LDM3MTA4LDM3MTE4LDM3MTE5LDM3MTIwLDM3MTI0LDM3MTI1LDM3MTI2LDM3MTI4LDM3MTMzLDM3MTM2LDM3MTQwLDM3MTQyLDM3MTQzLDM3MTQ0LDM3MTQ2LDM3MTQ4LDM3MTUwLDM3MTUyLDM3MTU3LDM3MTU0LDM3MTU1LDM3MTU5LDM3MTYxLDM3MTY2LDM3MTY3LDM3MTY5LDM3MTcyLDM3MTc0LDM3MTc1LDM3MTc3LDM3MTc4LDM3MTgwLDM3MTgxLDM3MTg3LDM3MTkxLDM3MTkyLDM3MTk5LDM3MjAzLDM3MjA3LDM3MjA5LDM3MjEwLDM3MjExLDM3MjE3LDM3MjIwLDM3MjIzLDM3MjI5LDM3MjM2LDM3MjQxLDM3MjQyLDM3MjQzLDM3MjQ5LDM3MjUxLDM3MjUzLDM3MjU0LDM3MjU4LDM3MjYyLDM3MjY1LDM3MjY3LDM3MjY4LDM3MjY5LDM3MjcyLDM3Mjc4LDM3MjgxLDM3Mjg2LDM3Mjg4LDM3MjkyLDM3MjkzLDM3Mjk0LDM3Mjk2LDM3Mjk3LDM3Mjk4LDM3Mjk5LDM3MzAyLDM3MzA3LDM3MzA4LDM3MzA5LDM3MzExLDM3MzE0LDM3MzE1LDM3MzE3LDM3MzMxLDM3MzMyLDM3MzM1LDM3MzM3LDM3MzM4LDM3MzQyLDM3MzQ4LDM3MzQ5LDM3MzUzLDM3MzU0LDM3MzU2LDM3MzU3LDM3MzU4LDM3MzU5LDM3MzYwLDM3MzYxLDM3MzY3LDM3MzY5LDM3MzcxLDM3MzczLDM3Mzc2LDM3Mzc3LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg1LDM3Mzg2LDM3Mzg4LDM3MzkyLDM3Mzk0LDM3Mzk1LDM3Mzk4LDM3NDAwLDM3NDA0LDM3NDA1LDM3NDExLDM3NDEyLDM3NDEzLDM3NDE0LDM3NDE2LDM3NDIyLDM3NDIzLDM3NDI0LDM3NDI3LDM3NDI5LDM3NDMwLDM3NDMyLDM3NDMzLDM3NDM0LDM3NDM2LDM3NDM4LDM3NDQwLDM3NDQyLDM3NDQzLDM3NDQ2LDM3NDQ3LDM3NDUwLDM3NDUzLDM3NDU0LDM3NDU1LDM3NDU3LDM3NDY0LDM3NDY1LDM3NDY4LDM3NDY5LDM3NDcyLDM3NDczLDM3NDc3LDM3NDc5LDM3NDgwLDM3NDgxLDM3NDg2LDM3NDg3LDM3NDg4LDM3NDkzLDM3NDk0LDM3NDk1LDM3NDk2LDM3NDk3LDM3NDk5LDM3NTAwLDM3NTAxLDM3NTAzLDM3NTEyLDM3NTEzLDM3NTE0LDM3NTE3LDM3NTE4LDM3NTIyLDM3NTI3LDM3NTI5LDM3NTM1LDM3NTM2LDM3NTQwLDM3NTQxLDM3NTQzLDM3NTQ0LDM3NTQ3LDM3NTUxLDM3NTU0LDM3NTU4LDM3NTYwLDM3NTYyLDM3NTYzLDM3NTY0LDM3NTY1LDM3NTY3LDM3NTY4LDM3NTY5LDM3NTcwLDM3NTcxLDM3NTczLDM3NTc0LDM3NTc1LDM3NTc2LDM3NTc5LDM3NTgwLDM3NTgxLDM3NTgyLDM3NTg0LDM3NTg3LDM3NTg5LDM3NTkxLDM3NTkyLDM3NTkzLDM3NTk2LDM3NTk3LDM3NTk5LDM3NjAwLDM3NjAxLDM3NjAzLDM3NjA1LDM3NjA3LDM3NjA4LDM3NjEyLDM3NjE0LDM3NjE2LDM3NjI1LDM3NjI3LDM3NjMxLDM3NjMyLDM3NjM0LDM3NjQwLDM3NjQ1LDM3NjQ5LDM3NjUyLDM3NjUzLDM3NjYwLDM3NjYxLDM3NjYyLDM3NjYzLDM3NjY1LDM3NjY4LDM3NjY5LDM3NjcxLDM3NjczLDM3Njc0LDM3NjgzLDM3Njg0LDM3Njg2LDM3Njg3LDM3NzAzLDM3NzA0LDM3NzA1LDM3NzEyLDM3NzEzLDM3NzE0LDM3NzE3LDM3NzE5LDM3NzIwLDM3NzIyLDM3NzI2LDM3NzMyLDM3NzMzLDM3NzM1LDM3NzM3LDM3NzM4LDM3NzQxLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ3LDM3NzQ4LDM3NzUwLDM3NzU0LDM3NzU3LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzY4LDM3NzcwLDM3NzcxLDM3NzczLDM3Nzc1LDM3Nzc4LDM3NzgxLDM3Nzg0LDM3Nzg3LDM3NzkwLDM3NzkzLDM3Nzk1LDM3Nzk2LDM3Nzk4LDM3ODAwLDM3ODAzLDM3ODEyLDM3ODEzLDM3ODE0LDM3ODE4LDM3ODAxLDM3ODI1LDM3ODI4LDM3ODI5LDM3ODMwLDM3ODMxLDM3ODMzLDM3ODM0LDM3ODM1LDM3ODM2LDM3ODM3LDM3ODQzLDM3ODQ5LDM3ODUyLDM3ODU0LDM3ODU1LDM3ODU4LDM3ODYyLDM3ODYzLDM3ODgxLDM3ODc5LDM3ODgwLDM3ODgyLDM3ODgzLDM3ODg1LDM3ODg5LDM3ODkwLDM3ODkyLDM3ODk2LDM3ODk3LDM3OTAxLDM3OTAyLDM3OTAzLDM3OTA5LDM3OTEwLDM3OTExLDM3OTE5LDM3OTM0LDM3OTM1LDM3OTM3LDM3OTM4LDM3OTM5LDM3OTQwLDM3OTQ3LDM3OTUxLDM3OTQ5LDM3OTU1LDM3OTU3LDM3OTYwLDM3OTYyLDM3OTY0LDM3OTczLDM3OTc3LDM3OTgwLDM3OTgzLDM3OTg1LDM3OTg3LDM3OTkyLDM3OTk1LDM3OTk3LDM3OTk4LDM3OTk5LDM4MDAxLDM4MDAyLDM4MDIwLDM4MDE5LDM4MjY0LDM4MjY1LDM4MjcwLDM4Mjc2LDM4MjgwLDM4Mjg0LDM4Mjg1LDM4Mjg2LDM4MzAxLDM4MzAyLDM4MzAzLDM4MzA1LDM4MzEwLDM4MzEzLDM4MzE1LDM4MzE2LDM4MzI0LDM4MzI2LDM4MzMwLDM4MzMzLDM4MzM1LDM4MzQyLDM4MzQ0LDM4MzQ1LDM4MzQ3LDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzYxLDM4MzYyLDM4MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzcyLDM4Mzc0LDM4NDI5LDM4NDMwLDM4NDM0LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDQ0LDM4NDQ5LDM4NDUxLDM4NDU1LDM4NDU2LDM4NDU3LDM4NDU4LDM4NDYwLDM4NDYxLDM4NDY1LDM4NDgyLDM4NDg0LDM4NDg2LDM4NDg3LDM4NDg4LDM4NDk3LDM4NTEwLDM4NTE2LDM4NTIzLDM4NTI0LDM4NTI2LDM4NTI3LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM3LDM4NTQ1LDM4NTUwLDM4NTU0LDM4NTU3LDM4NTU5LDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY5LDM4NTc0LDM4NTc1LDM4NTc5LDM4NTg2LDM4NjAyLDM4NjEwLDIzOTg2LDM4NjE2LDM4NjE4LDM4NjIxLDM4NjIyLDM4NjIzLDM4NjMzLDM4NjM5LDM4NjQxLDM4NjUwLDM4NjU4LDM4NjU5LDM4NjYxLDM4NjY1LDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg5LDM4NjkwLDM4NjkxLDM4Njk2LDM4NzA1LDM4NzA3LDM4NzIxLDM4NzIzLDM4NzMwLDM4NzM0LDM4NzM1LDM4NzQxLDM4NzQzLDM4NzQ0LDM4NzQ2LDM4NzQ3LDM4NzU1LDM4NzU5LDM4NzYyLDM4NzY2LDM4NzcxLDM4Nzc0LDM4Nzc1LDM4Nzc2LDM4Nzc5LDM4NzgxLDM4NzgzLDM4Nzg0LDM4NzkzLDM4ODA1LDM4ODA2LDM4ODA3LDM4ODA5LDM4ODEwLDM4ODE0LDM4ODE1LDM4ODE4LDM4ODI4LDM4ODMwLDM4ODMzLDM4ODM0LDM4ODM3LDM4ODM4LDM4ODQwLDM4ODQxLDM4ODQyLDM4ODQ0LDM4ODQ2LDM4ODQ3LDM4ODQ5LDM4ODUyLDM4ODUzLDM4ODU1LDM4ODU3LDM4ODU4LDM4ODYwLDM4ODYxLDM4ODYyLDM4ODY0LDM4ODY1LDM4ODY4LDM4ODcxLDM4ODcyLDM4ODczLDM4ODc3LDM4ODc4LDM4ODgwLDM4ODc1LDM4ODgxLDM4ODg0LDM4ODk1LDM4ODk3LDM4OTAwLDM4OTAzLDM4OTA0LDM4OTA2LDM4OTE5LDM4OTIyLDM4OTM3LDM4OTI1LDM4OTI2LDM4OTMyLDM4OTM0LDM4OTQwLDM4OTQyLDM4OTQ0LDM4OTQ3LDM4OTUwLDM4OTU1LDM4OTU4LDM4OTU5LDM4OTYwLDM4OTYyLDM4OTYzLDM4OTY1LDM4OTQ5LDM4OTc0LDM4OTgwLDM4OTgzLDM4OTg2LDM4OTkzLDM4OTk0LDM4OTk1LDM4OTk4LDM4OTk5LDM5MDAxLDM5MDAyLDM5MDEwLDM5MDExLDM5MDEzLDM5MDE0LDM5MDE4LDM5MDIwLDM5MDgzLDM5MDg1LDM5MDg2LDM5MDg4LDM5MDkyLDM5MDk1LDM5MDk2LDM5MDk4LDM5MDk5LDM5MTAzLDM5MTA2LDM5MTA5LDM5MTEyLDM5MTE2LDM5MTM3LDM5MTM5LDM5MTQxLDM5MTQyLDM5MTQzLDM5MTQ2LDM5MTU1LDM5MTU4LDM5MTcwLDM5MTc1LDM5MTc2LDM5MTg1LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTk0LDM5MTk1LDM5MTk2LDM5MTk5LDM5MjAyLDM5MjA2LDM5MjA3LDM5MjExLDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjMyLDM5MjMzLDM5MjM4LDM5MjM5LDM5MjQwLDM5MjQ1LDM5MjQ2LDM5MjUyLDM5MjU2LDM5MjU3LDM5MjU5LDM5MjYwLDM5MjYyLDM5MjYzLDM5MjY0LDM5MzIzLDM5MzI1LDM5MzI3LDM5MzM0LDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ5LDM5MzUzLDM5MzU0LDM5MzU3LDM5MzU5LDM5MzYzLDM5MzY5LDM5Mzc5LDM5MzgwLDM5Mzg1LDM5Mzg2LDM5Mzg4LDM5MzkwLDM5Mzk5LDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA4LDM5NDEyLDM5NDEzLDM5NDE3LDM5NDIxLDM5NDIyLDM5NDI2LDM5NDI3LDM5NDI4LDM5NDM1LDM5NDM2LDM5NDQwLDM5NDQxLDM5NDQ2LDM5NDU0LDM5NDU2LDM5NDU4LDM5NDU5LDM5NDYwLDM5NDYzLDM5NDY5LDM5NDcwLDM5NDc1LDM5NDc3LDM5NDc4LDM5NDgwLDM5NDk1LDM5NDg5LDM5NDkyLDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAyLDM5NTA1LDM5NTA4LDM5NTEwLDM5NTE3LDM5NTk0LDM5NTk2LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjA0LDM5NjA1LDM5NjA2LDM5NjA5LDM5NjExLDM5NjE0LDM5NjE1LDM5NjE3LDM5NjE5LDM5NjIyLDM5NjI0LDM5NjMwLDM5NjMyLDM5NjM0LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQzLDM5NjQ0LDM5NjQ4LDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU3LDM5NjYwLDM5NjY2LDM5NjY3LDM5NjY5LDM5NjczLDM5Njc0LDM5Njc3LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5NjgzLDM5Njg0LDM5Njg1LDM5Njg4LDM5Njg5LDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk4LDM5NzAyLDM5NzA1LDM5NzA3LDM5NzA4LDM5NzEyLDM5NzE4LDM5NzIzLDM5NzI1LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM1LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzUyLDM5NzU1LDM5NzU2LDM5NzY1LDM5NzY2LDM5NzY3LDM5NzcxLDM5Nzc0LDM5Nzc3LDM5Nzc5LDM5NzgxLDM5NzgyLDM5Nzg0LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5Nzg5LDM5NzkwLDM5Nzk1LDM5Nzk3LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODA3LDM5ODA4LDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIxLDM5ODIzLDM5ODI0LDM5ODI4LDM5ODM0LDM5ODM3LDM5ODM4LDM5ODQ2LDM5ODQ3LDM5ODQ5LDM5ODUyLDM5ODU2LDM5ODU3LDM5ODU4LDM5ODYzLDM5ODY0LDM5ODY3LDM5ODY4LDM5ODcwLDM5ODcxLDM5ODczLDM5ODc5LDM5ODgwLDM5ODg2LDM5ODg4LDM5ODk1LDM5ODk2LDM5OTAxLDM5OTAzLDM5OTA5LDM5OTExLDM5OTE0LDM5OTE1LDM5OTE5LDM5OTIzLDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5OTMzLDM5OTM1LDM5OTM2LDM5OTM4LDM5OTQ3LDM5OTUxLDM5OTUzLDM5OTU4LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTY0LDM5OTY2LDM5OTcwLDM5OTcxLDM5OTc0LDM5OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTg1LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTk3LDQwMDAxLDQwMDAzLDQwMDA0LDQwMDA1LDQwMDA5LDQwMDEwLDQwMDE0LDQwMDE1LDQwMDE2LDQwMDE5LDQwMDIwLDQwMDIyLDQwMDI0LDQwMDI3LDQwMDI5LDQwMDMwLDQwMDMxLDQwMDM1LDQwMDQxLDQwMDQyLDQwMDI4LDQwMDQzLDQwMDQwLDQwMDQ2LDQwMDQ4LDQwMDUwLDQwMDUzLDQwMDU1LDQwMDU5LDQwMTY2LDQwMTc4LDQwMTgzLDQwMTg1LDQwMjAzLDQwMTk0LDQwMjA5LDQwMjE1LDQwMjE2LDQwMjIwLDQwMjIxLDQwMjIyLDQwMjM5LDQwMjQwLDQwMjQyLDQwMjQzLDQwMjQ0LDQwMjUwLDQwMjUyLDQwMjYxLDQwMjUzLDQwMjU4LDQwMjU5LDQwMjYzLDQwMjY2LDQwMjc1LDQwMjc2LDQwMjg3LDQwMjkxLDQwMjkwLDQwMjkzLDQwMjk3LDQwMjk4LDQwMjk5LDQwMzA0LDQwMzEwLDQwMzExLDQwMzE1LDQwMzE2LDQwMzE4LDQwMzIzLDQwMzI0LDQwMzI2LDQwMzMwLDQwMzMzLDQwMzM0LDQwMzM4LDQwMzM5LDQwMzQxLDQwMzQyLDQwMzQzLDQwMzQ0LDQwMzUzLDQwMzYyLDQwMzY0LDQwMzY2LDQwMzY5LDQwMzczLDQwMzc3LDQwMzgwLDQwMzgzLDQwMzg3LDQwMzkxLDQwMzkzLDQwMzk0LDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDEwLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDIxLDQwNDIzLDQwNDI1LDQwNDI3LDQwNDMwLDQwNDMyLDQwNDM1LDQwNDM2LDQwNDQ2LDQwNDU4LDQwNDUwLDQwNDU1LDQwNDYyLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY5LDQwNDcwLDQwNDczLDQwNDc2LDQwNDc3LDQwNTcwLDQwNTcxLDQwNTcyLDQwNTc2LDQwNTc4LDQwNTc5LDQwNTgwLDQwNTgxLDQwNTgzLDQwNTkwLDQwNTkxLDQwNTk4LDQwNjAwLDQwNjAzLDQwNjA2LDQwNjEyLDQwNjE2LDQwNjIwLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI3LDQwNjI4LDQwNjI5LDQwNjQ2LDQwNjQ4LDQwNjUxLDQwNjYxLDQwNjcxLDQwNjc2LDQwNjc5LDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5LDQwNjkwLDQwNjkzLDQwNjk2LDQwNzAzLDQwNzA2LDQwNzA3LDQwNzEzLDQwNzE5LDQwNzIwLDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI2LDQwNzI3LDQwNzI5LDQwNzMwLDQwNzMxLDQwNzM1LDQwNzM4LDQwNzQyLDQwNzQ2LDQwNzQ3LDQwNzUxLDQwNzUzLDQwNzU0LDQwNzU2LDQwNzU5LDQwNzYxLDQwNzYyLDQwNzY0LDQwNzY1LDQwNzY3LDQwNzY5LDQwNzcxLDQwNzcyLDQwNzczLDQwNzc0LDQwNzc1LDQwNzg3LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzk0LDQwNzk3LDQwNzk4LDQwODA4LDQwODA5LDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE5LDQwODIxLDQwODI2LDQwODI5LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUwLDQwODUyLDQwODU0LDQwODU1LDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwiaWJtODY2XCI6WzEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDk2MTcsOTYxOCw5NjE5LDk0NzQsOTUwOCw5NTY5LDk1NzAsOTU1OCw5NTU3LDk1NzEsOTU1Myw5NTU5LDk1NjUsOTU2NCw5NTYzLDk0ODgsOTQ5Miw5NTI0LDk1MTYsOTUwMCw5NDcyLDk1MzIsOTU2Niw5NTY3LDk1NjIsOTU1Niw5NTc3LDk1NzQsOTU2OCw5NTUyLDk1ODAsOTU3NSw5NTc2LDk1NzIsOTU3Myw5NTYxLDk1NjAsOTU1NCw5NTU1LDk1NzksOTU3OCw5NDk2LDk0ODQsOTYwOCw5NjA0LDk2MTIsOTYxNiw5NjAwLDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTAyNSwxMTA1LDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzOCwxMTE4LDE3Niw4NzI5LDE4Myw4NzMwLDg0NzAsMTY0LDk2MzIsMTYwXSxcbiAgXCJpc28tODg1OS0yXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCw3MjgsMzIxLDE2NCwzMTcsMzQ2LDE2NywxNjgsMzUyLDM1MCwzNTYsMzc3LDE3MywzODEsMzc5LDE3NiwyNjEsNzMxLDMyMiwxODAsMzE4LDM0Nyw3MTEsMTg0LDM1MywzNTEsMzU3LDM3OCw3MzMsMzgyLDM4MCwzNDAsMTkzLDE5NCwyNTgsMTk2LDMxMywyNjIsMTk5LDI2OCwyMDEsMjgwLDIwMywyODIsMjA1LDIwNiwyNzAsMjcyLDMyMywzMjcsMjExLDIxMiwzMzYsMjE0LDIxNSwzNDQsMzY2LDIxOCwzNjgsMjIwLDIyMSwzNTQsMjIzLDM0MSwyMjUsMjI2LDI1OSwyMjgsMzE0LDI2MywyMzEsMjY5LDIzMywyODEsMjM1LDI4MywyMzcsMjM4LDI3MSwyNzMsMzI0LDMyOCwyNDMsMjQ0LDMzNywyNDYsMjQ3LDM0NSwzNjcsMjUwLDM2OSwyNTIsMjUzLDM1NSw3MjldLFxuICBcImlzby04ODU5LTNcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjk0LDcyOCwxNjMsMTY0LG51bGwsMjkyLDE2NywxNjgsMzA0LDM1MCwyODYsMzA4LDE3MyxudWxsLDM3OSwxNzYsMjk1LDE3OCwxNzksMTgwLDE4MSwyOTMsMTgzLDE4NCwzMDUsMzUxLDI4NywzMDksMTg5LG51bGwsMzgwLDE5MiwxOTMsMTk0LG51bGwsMTk2LDI2NiwyNjQsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsbnVsbCwyMDksMjEwLDIxMSwyMTIsMjg4LDIxNCwyMTUsMjg0LDIxNywyMTgsMjE5LDIyMCwzNjQsMzQ4LDIyMywyMjQsMjI1LDIyNixudWxsLDIyOCwyNjcsMjY1LDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LG51bGwsMjQxLDI0MiwyNDMsMjQ0LDI4OSwyNDYsMjQ3LDI4NSwyNDksMjUwLDI1MSwyNTIsMzY1LDM0OSw3MjldLFxuICBcImlzby04ODU5LTRcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDMxMiwzNDIsMTY0LDI5NiwzMTUsMTY3LDE2OCwzNTIsMjc0LDI5MCwzNTgsMTczLDM4MSwxNzUsMTc2LDI2MSw3MzEsMzQzLDE4MCwyOTcsMzE2LDcxMSwxODQsMzUzLDI3NSwyOTEsMzU5LDMzMCwzODIsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDI5OCwyNzIsMzI1LDMzMiwzMTAsMjEyLDIxMywyMTQsMjE1LDIxNiwzNzAsMjE4LDIxOSwyMjAsMzYwLDM2MiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywyMzgsMjk5LDI3MywzMjYsMzMzLDMxMSwyNDQsMjQ1LDI0NiwyNDcsMjQ4LDM3MSwyNTAsMjUxLDI1MiwzNjEsMzYzLDcyOV0sXG4gIFwiaXNvLTg4NTktNVwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxNzMsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsODQ3MCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxNjcsMTExOCwxMTE5XSxcbiAgXCJpc28tODg1OS02XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsbnVsbCxudWxsLDE2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NDgsMTczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTU2MyxudWxsLG51bGwsbnVsbCwxNTY3LG51bGwsMTU2OSwxNTcwLDE1NzEsMTU3MiwxNTczLDE1NzQsMTU3NSwxNTc2LDE1NzcsMTU3OCwxNTc5LDE1ODAsMTU4MSwxNTgyLDE1ODMsMTU4NCwxNTg1LDE1ODYsMTU4NywxNTg4LDE1ODksMTU5MCwxNTkxLDE1OTIsMTU5MywxNTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNjAwLDE2MDEsMTYwMiwxNjAzLDE2MDQsMTYwNSwxNjA2LDE2MDcsMTYwOCwxNjA5LDE2MTAsMTYxMSwxNjEyLDE2MTMsMTYxNCwxNjE1LDE2MTYsMTYxNywxNjE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImlzby04ODU5LTdcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsODIxNiw4MjE3LDE2Myw4MzY0LDgzNjcsMTY2LDE2NywxNjgsMTY5LDg5MCwxNzEsMTcyLDE3MyxudWxsLDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCw5MDEsOTAyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSxcbiAgXCJpc28tODg1OS04XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLG51bGwsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwyMTUsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMjQ3LDE4NywxODgsMTg5LDE5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsODIxNSwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLFxuICBcImlzby04ODU5LTEwXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwyNzQsMjkwLDI5OCwyOTYsMzEwLDE2NywzMTUsMjcyLDM1MiwzNTgsMzgxLDE3MywzNjIsMzMwLDE3NiwyNjEsMjc1LDI5MSwyOTksMjk3LDMxMSwxODMsMzE2LDI3MywzNTMsMzU5LDM4Miw4MjEzLDM2MywzMzEsMjU2LDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDMwMiwyNjgsMjAxLDI4MCwyMDMsMjc4LDIwNSwyMDYsMjA3LDIwOCwzMjUsMzMyLDIxMSwyMTIsMjEzLDIxNCwzNjAsMjE2LDM3MCwyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyNTcsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMzAzLDI2OSwyMzMsMjgxLDIzNSwyNzksMjM3LDIzOCwyMzksMjQwLDMyNiwzMzMsMjQzLDI0NCwyNDUsMjQ2LDM2MSwyNDgsMzcxLDI1MCwyNTEsMjUyLDI1MywyNTQsMzEyXSxcbiAgXCJpc28tODg1OS0xM1wiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCw4MjIxLDE2MiwxNjMsMTY0LDgyMjIsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSw4MjIwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsODIxN10sXG4gIFwiaXNvLTg4NTktMTRcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsNzY4Miw3NjgzLDE2MywyNjYsMjY3LDc2OTAsMTY3LDc4MDgsMTY5LDc4MTAsNzY5MSw3OTIyLDE3MywxNzQsMzc2LDc3MTAsNzcxMSwyODgsMjg5LDc3NDQsNzc0NSwxODIsNzc2Niw3ODA5LDc3NjcsNzgxMSw3Nzc2LDc5MjMsNzgxMiw3ODEzLDc3NzcsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDM3MiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCw3Nzg2LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDM3NCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDM3MywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0Niw3Nzg3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDM3NSwyNTVdLFxuICBcImlzby04ODU5LTE1XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDE2MSwxNjIsMTYzLDgzNjQsMTY1LDM1MiwxNjcsMzUzLDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMzgxLDE4MSwxODIsMTgzLDM4MiwxODUsMTg2LDE4NywzMzgsMzM5LDM3NiwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSxcbiAgXCJpc28tODg1OS0xNlwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMjYxLDMyMSw4MzY0LDgyMjIsMzUyLDE2NywzNTMsMTY5LDUzNiwxNzEsMzc3LDE3MywzNzgsMzc5LDE3NiwxNzcsMjY4LDMyMiwzODEsODIyMSwxODIsMTgzLDM4MiwyNjksNTM3LDE4NywzMzgsMzM5LDM3NiwzODAsMTkyLDE5MywxOTQsMjU4LDE5NiwyNjIsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI3MiwzMjMsMjEwLDIxMSwyMTIsMzM2LDIxNCwzNDYsMzY4LDIxNywyMTgsMjE5LDIyMCwyODAsNTM4LDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDI2MywyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjczLDMyNCwyNDIsMjQzLDI0NCwzMzcsMjQ2LDM0NywzNjksMjQ5LDI1MCwyNTEsMjUyLDI4MSw1MzksMjU1XSxcbiAgXCJrb2k4LXJcIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxcbiAgXCJrb2k4LXVcIjpbOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw4OTkyLDk2MzIsODcyOSw4NzMwLDg3NzYsODgwNCw4ODA1LDE2MCw4OTkzLDE3NiwxNzgsMTgzLDI0Nyw5NTUyLDk1NTMsOTU1NCwxMTA1LDExMDgsOTU1NiwxMTEwLDExMTEsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDExNjksMTExOCw5NTY2LDk1NjcsOTU2OCw5NTY5LDEwMjUsMTAyOCw5NTcxLDEwMzAsMTAzMSw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsMTE2OCwxMDM4LDE2OSwxMTAyLDEwNzIsMTA3MywxMDk0LDEwNzYsMTA3NywxMDkyLDEwNzUsMTA5MywxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTEwMywxMDg4LDEwODksMTA5MCwxMDkxLDEwNzgsMTA3NCwxMTAwLDEwOTksMTA3OSwxMDk2LDExMDEsMTA5NywxMDk1LDEwOTgsMTA3MCwxMDQwLDEwNDEsMTA2MiwxMDQ0LDEwNDUsMTA2MCwxMDQzLDEwNjEsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNzEsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDQ2LDEwNDIsMTA2OCwxMDY3LDEwNDcsMTA2NCwxMDY5LDEwNjUsMTA2MywxMDY2XSxcbiAgXCJtYWNpbnRvc2hcIjpbMTk2LDE5NywxOTksMjAxLDIwOSwyMTQsMjIwLDIyNSwyMjQsMjI2LDIyOCwyMjcsMjI5LDIzMSwyMzMsMjMyLDIzNCwyMzUsMjM3LDIzNiwyMzgsMjM5LDI0MSwyNDMsMjQyLDI0NCwyNDYsMjQ1LDI1MCwyNDksMjUxLDI1Miw4MjI0LDE3NiwxNjIsMTYzLDE2Nyw4MjI2LDE4MiwyMjMsMTc0LDE2OSw4NDgyLDE4MCwxNjgsODgwMCwxOTgsMjE2LDg3MzQsMTc3LDg4MDQsODgwNSwxNjUsMTgxLDg3MDYsODcyMSw4NzE5LDk2MCw4NzQ3LDE3MCwxODYsOTM3LDIzMCwyNDgsMTkxLDE2MSwxNzIsODczMCw0MDIsODc3Niw4NzEwLDE3MSwxODcsODIzMCwxNjAsMTkyLDE5NSwyMTMsMzM4LDMzOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsOTY3NCwyNTUsMzc2LDgyNjAsODM2NCw4MjQ5LDgyNTAsNjQyNTcsNjQyNTgsODIyNSwxODMsODIxOCw4MjIyLDgyNDAsMTk0LDIwMiwxOTMsMjAzLDIwMCwyMDUsMjA2LDIwNywyMDQsMjExLDIxMiw2Mzc0MywyMTAsMjE4LDIxOSwyMTcsMzA1LDcxMCw3MzIsMTc1LDcyOCw3MjksNzMwLDE4NCw3MzMsNzMxLDcxMV0sXG4gIFwid2luZG93cy04NzRcIjpbODM2NCwxMjksMTMwLDEzMSwxMzIsODIzMCwxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMzU4NSwzNTg2LDM1ODcsMzU4OCwzNTg5LDM1OTAsMzU5MSwzNTkyLDM1OTMsMzU5NCwzNTk1LDM1OTYsMzU5NywzNTk4LDM1OTksMzYwMCwzNjAxLDM2MDIsMzYwMywzNjA0LDM2MDUsMzYwNiwzNjA3LDM2MDgsMzYwOSwzNjEwLDM2MTEsMzYxMiwzNjEzLDM2MTQsMzYxNSwzNjE2LDM2MTcsMzYxOCwzNjE5LDM2MjAsMzYyMSwzNjIyLDM2MjMsMzYyNCwzNjI1LDM2MjYsMzYyNywzNjI4LDM2MjksMzYzMCwzNjMxLDM2MzIsMzYzMywzNjM0LDM2MzUsMzYzNiwzNjM3LDM2MzgsMzYzOSwzNjQwLDM2NDEsMzY0MixudWxsLG51bGwsbnVsbCxudWxsLDM2NDcsMzY0OCwzNjQ5LDM2NTAsMzY1MSwzNjUyLDM2NTMsMzY1NCwzNjU1LDM2NTYsMzY1NywzNjU4LDM2NTksMzY2MCwzNjYxLDM2NjIsMzY2MywzNjY0LDM2NjUsMzY2NiwzNjY3LDM2NjgsMzY2OSwzNjcwLDM2NzEsMzY3MiwzNjczLDM2NzQsMzY3NSxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTBcIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwzNTIsODI0OSwzNDYsMzU2LDM4MSwzNzcsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMzUzLDgyNTAsMzQ3LDM1NywzODIsMzc4LDE2MCw3MTEsNzI4LDMyMSwxNjQsMjYwLDE2NiwxNjcsMTY4LDE2OSwzNTAsMTcxLDE3MiwxNzMsMTc0LDM3OSwxNzYsMTc3LDczMSwzMjIsMTgwLDE4MSwxODIsMTgzLDE4NCwyNjEsMzUxLDE4NywzMTcsNzMzLDMxOCwzODAsMzQwLDE5MywxOTQsMjU4LDE5NiwzMTMsMjYyLDE5OSwyNjgsMjAxLDI4MCwyMDMsMjgyLDIwNSwyMDYsMjcwLDI3MiwzMjMsMzI3LDIxMSwyMTIsMzM2LDIxNCwyMTUsMzQ0LDM2NiwyMTgsMzY4LDIyMCwyMjEsMzU0LDIyMywzNDEsMjI1LDIyNiwyNTksMjI4LDMxNCwyNjMsMjMxLDI2OSwyMzMsMjgxLDIzNSwyODMsMjM3LDIzOCwyNzEsMjczLDMyNCwzMjgsMjQzLDI0NCwzMzcsMjQ2LDI0NywzNDUsMzY3LDI1MCwzNjksMjUyLDI1MywzNTUsNzI5XSxcbiAgXCJ3aW5kb3dzLTEyNTFcIjpbMTAyNiwxMDI3LDgyMTgsMTEwNyw4MjIyLDgyMzAsODIyNCw4MjI1LDgzNjQsODI0MCwxMDMzLDgyNDksMTAzNCwxMDM2LDEwMzUsMTAzOSwxMTA2LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTExMyw4MjUwLDExMTQsMTExNiwxMTE1LDExMTksMTYwLDEwMzgsMTExOCwxMDMyLDE2NCwxMTY4LDE2NiwxNjcsMTAyNSwxNjksMTAyOCwxNzEsMTcyLDE3MywxNzQsMTAzMSwxNzYsMTc3LDEwMzAsMTExMCwxMTY5LDE4MSwxODIsMTgzLDExMDUsODQ3MCwxMTA4LDE4NywxMTEyLDEwMjksMTEwOSwxMTExLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDNdLFxuICBcIndpbmRvd3MtMTI1MlwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDM1Miw4MjQ5LDMzOCwxNDEsMzgxLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwzNTMsODI1MCwzMzksMTU3LDM4MiwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTVdLFxuICBcIndpbmRvd3MtMTI1M1wiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDEzNiw4MjQwLDEzOCw4MjQ5LDE0MCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNTIsODQ4MiwxNTQsODI1MCwxNTYsMTU3LDE1OCwxNTksMTYwLDkwMSw5MDIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LG51bGwsMTcxLDE3MiwxNzMsMTc0LDgyMTMsMTc2LDE3NywxNzgsMTc5LDkwMCwxODEsMTgyLDE4Myw5MDQsOTA1LDkwNiwxODcsOTA4LDE4OSw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LG51bGwsOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTRcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDI4NiwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwzMDQsMzUwLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjg3LDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDMwNSwzNTEsMjU1XSxcbiAgXCJ3aW5kb3dzLTEyNTVcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2Myw4MzYyLDE2NSwxNjYsMTY3LDE2OCwxNjksMjE1LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDI0NywxODcsMTg4LDE4OSwxOTAsMTkxLDE0NTYsMTQ1NywxNDU4LDE0NTksMTQ2MCwxNDYxLDE0NjIsMTQ2MywxNDY0LDE0NjUsbnVsbCwxNDY3LDE0NjgsMTQ2OSwxNDcwLDE0NzEsMTQ3MiwxNDczLDE0NzQsMTQ3NSwxNTIwLDE1MjEsMTUyMiwxNTIzLDE1MjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNDg4LDE0ODksMTQ5MCwxNDkxLDE0OTIsMTQ5MywxNDk0LDE0OTUsMTQ5NiwxNDk3LDE0OTgsMTQ5OSwxNTAwLDE1MDEsMTUwMiwxNTAzLDE1MDQsMTUwNSwxNTA2LDE1MDcsMTUwOCwxNTA5LDE1MTAsMTUxMSwxNTEyLDE1MTMsMTUxNCxudWxsLG51bGwsODIwNiw4MjA3LG51bGxdLFxuICBcIndpbmRvd3MtMTI1NlwiOls4MzY0LDE2NjIsODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxNjU3LDgyNDksMzM4LDE2NzAsMTY4OCwxNjcyLDE3MTEsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiwxNzA1LDg0ODIsMTY4MSw4MjUwLDMzOSw4MjA0LDgyMDUsMTcyMiwxNjAsMTU0OCwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MjYsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTU2MywxODcsMTg4LDE4OSwxOTAsMTU2NywxNzI5LDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3MywxNTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4NSwxNTg2LDE1ODcsMTU4OCwxNTg5LDE1OTAsMjE1LDE1OTEsMTU5MiwxNTkzLDE1OTQsMTYwMCwxNjAxLDE2MDIsMTYwMywyMjQsMTYwNCwyMjYsMTYwNSwxNjA2LDE2MDcsMTYwOCwyMzEsMjMyLDIzMywyMzQsMjM1LDE2MDksMTYxMCwyMzgsMjM5LDE2MTEsMTYxMiwxNjEzLDE2MTQsMjQ0LDE2MTUsMTYxNiwyNDcsMTYxNywyNDksMTYxOCwyNTEsMjUyLDgyMDYsODIwNywxNzQ2XSxcbiAgXCJ3aW5kb3dzLTEyNTdcIjpbODM2NCwxMjksODIxOCwxMzEsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTY4LDcxMSwxODQsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE3NSw3MzEsMTU5LDE2MCxudWxsLDE2MiwxNjMsMTY0LG51bGwsMTY2LDE2NywyMTYsMTY5LDM0MiwxNzEsMTcyLDE3MywxNzQsMTk4LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMjQ4LDE4NSwzNDMsMTg3LDE4OCwxODksMTkwLDIzMCwyNjAsMzAyLDI1NiwyNjIsMTk2LDE5NywyODAsMjc0LDI2OCwyMDEsMzc3LDI3OCwyOTAsMzEwLDI5OCwzMTUsMzUyLDMyMywzMjUsMjExLDMzMiwyMTMsMjE0LDIxNSwzNzAsMzIxLDM0NiwzNjIsMjIwLDM3OSwzODEsMjIzLDI2MSwzMDMsMjU3LDI2MywyMjgsMjI5LDI4MSwyNzUsMjY5LDIzMywzNzgsMjc5LDI5MSwzMTEsMjk5LDMxNiwzNTMsMzI0LDMyNiwyNDMsMzMzLDI0NSwyNDYsMjQ3LDM3MSwzMjIsMzQ3LDM2MywyNTIsMzgwLDM4Miw3MjldLFxuICBcIndpbmRvd3MtMTI1OFwiOls4MzY0LDEyOSw4MjE4LDQwMiw4MjIyLDgyMzAsODIyNCw4MjI1LDcxMCw4MjQwLDEzOCw4MjQ5LDMzOCwxNDEsMTQyLDE0MywxNDQsODIxNiw4MjE3LDgyMjAsODIyMSw4MjI2LDgyMTEsODIxMiw3MzIsODQ4MiwxNTQsODI1MCwzMzksMTU3LDE1OCwzNzYsMTYwLDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwyNTgsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMyw3NjgsMjA1LDIwNiwyMDcsMjcyLDIwOSw3NzcsMjExLDIxMiw0MTYsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDQzMSw3NzEsMjIzLDIyNCwyMjUsMjI2LDI1OSwyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDc2OSwyMzcsMjM4LDIzOSwyNzMsMjQxLDgwMywyNDMsMjQ0LDQxNywyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsNDMyLDgzNjMsMjU1XSxcbiAgXCJ4LW1hYy1jeXJpbGxpY1wiOlsxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsODIyNCwxNzYsMTE2OCwxNjMsMTY3LDgyMjYsMTgyLDEwMzAsMTc0LDE2OSw4NDgyLDEwMjYsMTEwNiw4ODAwLDEwMjcsMTEwNyw4NzM0LDE3Nyw4ODA0LDg4MDUsMTExMCwxODEsMTE2OSwxMDMyLDEwMjgsMTEwOCwxMDMxLDExMTEsMTAzMywxMTEzLDEwMzQsMTExNCwxMTEyLDEwMjksMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDEwMzUsMTExNSwxMDM2LDExMTYsMTEwOSw4MjExLDgyMTIsODIyMCw4MjIxLDgyMTYsODIxNywyNDcsODIyMiwxMDM4LDExMTgsMTAzOSwxMTE5LDg0NzAsMTAyNSwxMTA1LDExMDMsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiw4MzY0XVxufTtcbn0odGhpcykpO1xuIiwiLy8gVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50byB0aGUgcHVibGljIGRvbWFpbi5cbi8vIFNlZSBMSUNFTlNFLm1kIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4vLyBJZiB3ZSdyZSBpbiBub2RlIHJlcXVpcmUgZW5jb2RpbmctaW5kZXhlcyBhbmQgYXR0YWNoIGl0IHRvIHRoZSBnbG9iYWwuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgR2xvYmFsIHx0aGlzfCByZXF1aXJlZCBmb3IgcmVzb2x2aW5nIGluZGV4ZXMgaW4gbm9kZS5cbiAqIEBzdXBwcmVzcyB7Z2xvYmFsVGhpc31cbiAqL1xuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgdGhpc1tcImVuY29kaW5nLWluZGV4ZXNcIl0gPVxuICAgIHJlcXVpcmUoXCIuL2VuY29kaW5nLWluZGV4ZXMuanNcIilbXCJlbmNvZGluZy1pbmRleGVzXCJdO1xufVxuXG4oZnVuY3Rpb24oZ2xvYmFsKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvL1xuICAvLyBVdGlsaXRpZXNcbiAgLy9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGEgVGhlIG51bWJlciB0byB0ZXN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWluIFRoZSBtaW5pbXVtIHZhbHVlIGluIHRoZSByYW5nZSwgaW5jbHVzaXZlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4IFRoZSBtYXhpbXVtIHZhbHVlIGluIHRoZSByYW5nZSwgaW5jbHVzaXZlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgPj0gbWluIGFuZCBhIDw9IG1heC5cbiAgICovXG4gIGZ1bmN0aW9uIGluUmFuZ2UoYSwgbWluLCBtYXgpIHtcbiAgICByZXR1cm4gbWluIDw9IGEgJiYgYSA8PSBtYXg7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWVyYXRvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGQgVGhlIGRlbm9taW5hdG9yLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSByZXN1bHQgb2YgdGhlIGludGVnZXIgZGl2aXNpb24gb2YgbiBieSBkLlxuICAgKi9cbiAgZnVuY3Rpb24gZGl2KG4sIGQpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihuIC8gZCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsqfSBvXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGZ1bmN0aW9uIFRvRGljdGlvbmFyeShvKSB7XG4gICAgaWYgKG8gPT09IHVuZGVmaW5lZCkgcmV0dXJuIHt9O1xuICAgIGlmIChvID09PSBPYmplY3QobykpIHJldHVybiBvO1xuICAgIHRocm93IFR5cGVFcnJvcignQ291bGQgbm90IGNvbnZlcnQgYXJndW1lbnQgdG8gZGljdGlvbmFyeScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgSW5wdXQgc3RyaW5nIG9mIFVURi0xNiBjb2RlIHVuaXRzLlxuICAgKiBAcmV0dXJuIHshQXJyYXkuPG51bWJlcj59IENvZGUgcG9pbnRzLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nVG9Db2RlUG9pbnRzKHN0cmluZykge1xuICAgIC8vIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2Rmbi1vYnRhaW4tdW5pY29kZVxuXG4gICAgLy8gMS4gTGV0IFMgYmUgdGhlIERPTVN0cmluZyB2YWx1ZS5cbiAgICB2YXIgcyA9IFN0cmluZyhzdHJpbmcpO1xuXG4gICAgLy8gMi4gTGV0IG4gYmUgdGhlIGxlbmd0aCBvZiBTLlxuICAgIHZhciBuID0gcy5sZW5ndGg7XG5cbiAgICAvLyAzLiBJbml0aWFsaXplIGkgdG8gMC5cbiAgICB2YXIgaSA9IDA7XG5cbiAgICAvLyA0LiBJbml0aWFsaXplIFUgdG8gYmUgYW4gZW1wdHkgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzLlxuICAgIHZhciB1ID0gW107XG5cbiAgICAvLyA1LiBXaGlsZSBpIDwgbjpcbiAgICB3aGlsZSAoaSA8IG4pIHtcblxuICAgICAgLy8gMS4gTGV0IGMgYmUgdGhlIGNvZGUgdW5pdCBpbiBTIGF0IGluZGV4IGkuXG4gICAgICB2YXIgYyA9IHMuY2hhckNvZGVBdChpKTtcblxuICAgICAgLy8gMi4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBjOlxuXG4gICAgICAvLyBjIDwgMHhEODAwIG9yIGMgPiAweERGRkZcbiAgICAgIGlmIChjIDwgMHhEODAwIHx8IGMgPiAweERGRkYpIHtcbiAgICAgICAgLy8gQXBwZW5kIHRvIFUgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggY29kZSBwb2ludCBjLlxuICAgICAgICB1LnB1c2goYyk7XG4gICAgICB9XG5cbiAgICAgIC8vIDB4REMwMCDiiaQgYyDiiaQgMHhERkZGXG4gICAgICBlbHNlIGlmICgweERDMDAgPD0gYyAmJiBjIDw9IDB4REZGRikge1xuICAgICAgICAvLyBBcHBlbmQgdG8gVSBhIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuXG4gICAgICAgIHUucHVzaCgweEZGRkQpO1xuICAgICAgfVxuXG4gICAgICAvLyAweEQ4MDAg4omkIGMg4omkIDB4REJGRlxuICAgICAgZWxzZSBpZiAoMHhEODAwIDw9IGMgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgLy8gMS4gSWYgaSA9IG7iiJIxLCB0aGVuIGFwcGVuZCB0byBVIGEgVStGRkZEIFJFUExBQ0VNRU5UXG4gICAgICAgIC8vIENIQVJBQ1RFUi5cbiAgICAgICAgaWYgKGkgPT09IG4gLSAxKSB7XG4gICAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gMi4gT3RoZXJ3aXNlLCBpIDwgbuKIkjE6XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIDEuIExldCBkIGJlIHRoZSBjb2RlIHVuaXQgaW4gUyBhdCBpbmRleCBpKzEuXG4gICAgICAgICAgdmFyIGQgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG5cbiAgICAgICAgICAvLyAyLiBJZiAweERDMDAg4omkIGQg4omkIDB4REZGRiwgdGhlbjpcbiAgICAgICAgICBpZiAoMHhEQzAwIDw9IGQgJiYgZCA8PSAweERGRkYpIHtcbiAgICAgICAgICAgIC8vIDEuIExldCBhIGJlIGMgJiAweDNGRi5cbiAgICAgICAgICAgIHZhciBhID0gYyAmIDB4M0ZGO1xuXG4gICAgICAgICAgICAvLyAyLiBMZXQgYiBiZSBkICYgMHgzRkYuXG4gICAgICAgICAgICB2YXIgYiA9IGQgJiAweDNGRjtcblxuICAgICAgICAgICAgLy8gMy4gQXBwZW5kIHRvIFUgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggY29kZSBwb2ludFxuICAgICAgICAgICAgLy8gMl4xNisyXjEwKmErYi5cbiAgICAgICAgICAgIHUucHVzaCgweDEwMDAwICsgKGEgPDwgMTApICsgYik7XG5cbiAgICAgICAgICAgIC8vIDQuIFNldCBpIHRvIGkrMS5cbiAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyAzLiBPdGhlcndpc2UsIGQgPCAweERDMDAgb3IgZCA+IDB4REZGRi4gQXBwZW5kIHRvIFUgYVxuICAgICAgICAgIC8vIFUrRkZGRCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuXG4gICAgICAgICAgZWxzZSAge1xuICAgICAgICAgICAgdS5wdXNoKDB4RkZGRCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIFNldCBpIHRvIGkrMS5cbiAgICAgIGkgKz0gMTtcbiAgICB9XG5cbiAgICAvLyA2LiBSZXR1cm4gVS5cbiAgICByZXR1cm4gdTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyFBcnJheS48bnVtYmVyPn0gY29kZV9wb2ludHMgQXJyYXkgb2YgY29kZSBwb2ludHMuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gc3RyaW5nIFN0cmluZyBvZiBVVEYtMTYgY29kZSB1bml0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGNvZGVQb2ludHNUb1N0cmluZyhjb2RlX3BvaW50cykge1xuICAgIHZhciBzID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlX3BvaW50cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGNwID0gY29kZV9wb2ludHNbaV07XG4gICAgICBpZiAoY3AgPD0gMHhGRkZGKSB7XG4gICAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjcCAtPSAweDEwMDAwO1xuICAgICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGNwID4+IDEwKSArIDB4RDgwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjcCAmIDB4M0ZGKSArIDB4REMwMCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzO1xuICB9XG5cblxuICAvL1xuICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBFbmNvZGluZyBzcGVjaWZpY2F0aW9uXG4gIC8vIGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnL1xuICAvL1xuXG4gIC8vXG4gIC8vIDMuIFRlcm1pbm9sb2d5XG4gIC8vXG5cbiAgLyoqXG4gICAqIEVuZC1vZi1zdHJlYW0gaXMgYSBzcGVjaWFsIHRva2VuIHRoYXQgc2lnbmlmaWVzIG5vIG1vcmUgdG9rZW5zXG4gICAqIGFyZSBpbiB0aGUgc3RyZWFtLlxuICAgKiBAY29uc3RcbiAgICovIHZhciBlbmRfb2Zfc3RyZWFtID0gLTE7XG5cbiAgLyoqXG4gICAqIEEgc3RyZWFtIHJlcHJlc2VudHMgYW4gb3JkZXJlZCBzZXF1ZW5jZSBvZiB0b2tlbnMuXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0geyEoQXJyYXkuPG51bWJlcj58VWludDhBcnJheSl9IHRva2VucyBBcnJheSBvZiB0b2tlbnMgdGhhdCBwcm92aWRlIHRoZVxuICAgKiBzdHJlYW0uXG4gICAqL1xuICBmdW5jdGlvbiBTdHJlYW0odG9rZW5zKSB7XG4gICAgLyoqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59ICovXG4gICAgdGhpcy50b2tlbnMgPSBbXS5zbGljZS5jYWxsKHRva2Vucyk7XG4gIH1cblxuICBTdHJlYW0ucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgZW5kLW9mLXN0cmVhbSBoYXMgYmVlbiBoaXQuXG4gICAgICovXG4gICAgZW5kT2ZTdHJlYW06IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICF0aGlzLnRva2Vucy5sZW5ndGg7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYSB0b2tlbiBpcyByZWFkIGZyb20gYSBzdHJlYW0sIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0gbXVzdCBiZSByZXR1cm5lZCBhbmQgc3Vic2VxdWVudGx5IHJlbW92ZWQsIGFuZFxuICAgICAqIGVuZC1vZi1zdHJlYW0gbXVzdCBiZSByZXR1cm5lZCBvdGhlcndpc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IEdldCB0aGUgbmV4dCB0b2tlbiBmcm9tIHRoZSBzdHJlYW0sIG9yXG4gICAgICogZW5kX29mX3N0cmVhbS5cbiAgICAgKi9cbiAgICAgcmVhZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5zLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGVuZF9vZl9zdHJlYW07XG4gICAgICAgcmV0dXJuIHRoaXMudG9rZW5zLnNoaWZ0KCk7XG4gICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG9uZSBvciBtb3JlIHRva2VucyBhcmUgcHJlcGVuZGVkIHRvIGEgc3RyZWFtLCB0aG9zZSB0b2tlbnNcbiAgICAgKiBtdXN0IGJlIGluc2VydGVkLCBpbiBnaXZlbiBvcmRlciwgYmVmb3JlIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gdG9rZW4gVGhlIHRva2VuKHMpIHRvIHByZXBlbmQgdG8gdGhlIHN0cmVhbS5cbiAgICAgKi9cbiAgICBwcmVwZW5kOiBmdW5jdGlvbih0b2tlbikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodG9rZW4pKSB7XG4gICAgICAgIHZhciB0b2tlbnMgPSAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHRva2VuKTtcbiAgICAgICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpXG4gICAgICAgICAgdGhpcy50b2tlbnMudW5zaGlmdCh0b2tlbnMucG9wKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMudW5zaGlmdCh0b2tlbik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFdoZW4gb25lIG9yIG1vcmUgdG9rZW5zIGFyZSBwdXNoZWQgdG8gYSBzdHJlYW0sIHRob3NlIHRva2Vuc1xuICAgICAqIG11c3QgYmUgaW5zZXJ0ZWQsIGluIGdpdmVuIG9yZGVyLCBhZnRlciB0aGUgbGFzdCB0b2tlbiBpbiB0aGVcbiAgICAgKiBzdHJlYW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gdG9rZW4gVGhlIHRva2VucyhzKSB0byBwcmVwZW5kIHRvIHRoZSBzdHJlYW0uXG4gICAgICovXG4gICAgcHVzaDogZnVuY3Rpb24odG9rZW4pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRva2VuKSkge1xuICAgICAgICB2YXIgdG9rZW5zID0gLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyh0b2tlbik7XG4gICAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKVxuICAgICAgICAgIHRoaXMudG9rZW5zLnB1c2godG9rZW5zLnNoaWZ0KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8vXG4gIC8vIDQuIEVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDQuMSBFbmNvZGVycyBhbmQgZGVjb2RlcnNcblxuICAvKiogQGNvbnN0ICovXG4gIHZhciBmaW5pc2hlZCA9IC0xO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZhdGFsIElmIHRydWUsIGRlY29kaW5nIGVycm9ycyByYWlzZSBhbiBleGNlcHRpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gb3B0X2NvZGVfcG9pbnQgT3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGZhbGxiYWNrIGNvZGUgcG9pbnQuXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGNvZGUgcG9pbnQgdG8gaW5zZXJ0IG9uIGEgZGVjb2RpbmcgZXJyb3IuXG4gICAqL1xuICBmdW5jdGlvbiBkZWNvZGVyRXJyb3IoZmF0YWwsIG9wdF9jb2RlX3BvaW50KSB7XG4gICAgaWYgKGZhdGFsKVxuICAgICAgdGhyb3cgVHlwZUVycm9yKCdEZWNvZGVyIGVycm9yJyk7XG4gICAgcmV0dXJuIG9wdF9jb2RlX3BvaW50IHx8IDB4RkZGRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgY29kZSBwb2ludCB0aGF0IGNvdWxkIG5vdCBiZSBlbmNvZGVkLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IEFsd2F5cyB0aHJvd3MsIG5vIHZhbHVlIGlzIGFjdHVhbGx5IHJldHVybmVkLlxuICAgKi9cbiAgZnVuY3Rpb24gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1RoZSBjb2RlIHBvaW50ICcgKyBjb2RlX3BvaW50ICsgJyBjb3VsZCBub3QgYmUgZW5jb2RlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJmYWNlICovXG4gIGZ1bmN0aW9uIERlY29kZXIoKSB7fVxuICBEZWNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludCwgb3IgfGZpbmlzaGVkfC5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHt9XG4gIH07XG5cbiAgLyoqIEBpbnRlcmZhY2UgKi9cbiAgZnVuY3Rpb24gRW5jb2RlcigpIHt9XG4gIEVuY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBjb2RlIHBvaW50cyBiZWluZyBlbmNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdCwgb3IgfGZpbmlzaGVkfC5cbiAgICAgKi9cbiAgICBoYW5kbGVyOiBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHt9XG4gIH07XG5cbiAgLy8gNC4yIE5hbWVzIGFuZCBsYWJlbHNcblxuICAvLyBUT0RPOiBEZWZpbmUgQHR5cGVkZWYgZm9yIEVuY29kaW5nOiB7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvaXNzdWVzLzI0N1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwgVGhlIGVuY29kaW5nIGxhYmVsLlxuICAgKiBAcmV0dXJuIHs/e25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn19XG4gICAqL1xuICBmdW5jdGlvbiBnZXRFbmNvZGluZyhsYWJlbCkge1xuICAgIC8vIDEuIFJlbW92ZSBhbnkgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZSBmcm9tIGxhYmVsLlxuICAgIGxhYmVsID0gU3RyaW5nKGxhYmVsKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIDIuIElmIGxhYmVsIGlzIGFuIEFTQ0lJIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2ggZm9yIGFueSBvZiB0aGVcbiAgICAvLyBsYWJlbHMgbGlzdGVkIGluIHRoZSB0YWJsZSBiZWxvdywgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgLy8gZW5jb2RpbmcsIGFuZCBmYWlsdXJlIG90aGVyd2lzZS5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxhYmVsX3RvX2VuY29kaW5nLCBsYWJlbCkpIHtcbiAgICAgIHJldHVybiBsYWJlbF90b19lbmNvZGluZ1tsYWJlbF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kaW5ncyB0YWJsZTogaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvZW5jb2RpbmdzLmpzb25cbiAgICogQGNvbnN0XG4gICAqIEB0eXBlIHshQXJyYXkuPHtcbiAgICogICAgICAgICAgaGVhZGluZzogc3RyaW5nLFxuICAgKiAgICAgICAgICBlbmNvZGluZ3M6IEFycmF5Ljx7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fT5cbiAgICogICAgICAgIH0+fVxuICAgKi9cbiAgdmFyIGVuY29kaW5ncyA9IFtcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidW5pY29kZS0xLTEtdXRmLThcIixcbiAgICAgICAgICBcInV0Zi04XCIsXG4gICAgICAgICAgXCJ1dGY4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLThcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiVGhlIEVuY29kaW5nXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiODY2XCIsXG4gICAgICAgICAgXCJjcDg2NlwiLFxuICAgICAgICAgIFwiY3NpYm04NjZcIixcbiAgICAgICAgICBcImlibTg2NlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlibTg2NlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluMlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwMVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0yXCIsXG4gICAgICAgICAgXCJpc284ODU5MlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMjoxOTg3XCIsXG4gICAgICAgICAgXCJsMlwiLFxuICAgICAgICAgIFwibGF0aW4yXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluM1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwOVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0zXCIsXG4gICAgICAgICAgXCJpc284ODU5M1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMzoxOTg4XCIsXG4gICAgICAgICAgXCJsM1wiLFxuICAgICAgICAgIFwibGF0aW4zXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluNFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvLWlyLTExMFwiLFxuICAgICAgICAgIFwiaXNvODg1OS00XCIsXG4gICAgICAgICAgXCJpc284ODU5NFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNDoxOTg4XCIsXG4gICAgICAgICAgXCJsNFwiLFxuICAgICAgICAgIFwibGF0aW40XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktNFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluY3lyaWxsaWNcIixcbiAgICAgICAgICBcImN5cmlsbGljXCIsXG4gICAgICAgICAgXCJpc28tODg1OS01XCIsXG4gICAgICAgICAgXCJpc28taXItMTQ0XCIsXG4gICAgICAgICAgXCJpc284ODU5LTVcIixcbiAgICAgICAgICBcImlzbzg4NTk1XCIsXG4gICAgICAgICAgXCJpc29fODg1OS01XCIsXG4gICAgICAgICAgXCJpc29fODg1OS01OjE5ODhcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS01XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImFyYWJpY1wiLFxuICAgICAgICAgIFwiYXNtby03MDhcIixcbiAgICAgICAgICBcImNzaXNvODg1OTZlXCIsXG4gICAgICAgICAgXCJjc2lzbzg4NTk2aVwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbmFyYWJpY1wiLFxuICAgICAgICAgIFwiZWNtYS0xMTRcIixcbiAgICAgICAgICBcImlzby04ODU5LTZcIixcbiAgICAgICAgICBcImlzby04ODU5LTYtZVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNi1pXCIsXG4gICAgICAgICAgXCJpc28taXItMTI3XCIsXG4gICAgICAgICAgXCJpc284ODU5LTZcIixcbiAgICAgICAgICBcImlzbzg4NTk2XCIsXG4gICAgICAgICAgXCJpc29fODg1OS02XCIsXG4gICAgICAgICAgXCJpc29fODg1OS02OjE5ODdcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS02XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW5ncmVla1wiLFxuICAgICAgICAgIFwiZWNtYS0xMThcIixcbiAgICAgICAgICBcImVsb3RfOTI4XCIsXG4gICAgICAgICAgXCJncmVla1wiLFxuICAgICAgICAgIFwiZ3JlZWs4XCIsXG4gICAgICAgICAgXCJpc28tODg1OS03XCIsXG4gICAgICAgICAgXCJpc28taXItMTI2XCIsXG4gICAgICAgICAgXCJpc284ODU5LTdcIixcbiAgICAgICAgICBcImlzbzg4NTk3XCIsXG4gICAgICAgICAgXCJpc29fODg1OS03XCIsXG4gICAgICAgICAgXCJpc29fODg1OS03OjE5ODdcIixcbiAgICAgICAgICBcInN1bl9ldV9ncmVla1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc284ODU5OGVcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW5oZWJyZXdcIixcbiAgICAgICAgICBcImhlYnJld1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOC1lXCIsXG4gICAgICAgICAgXCJpc28taXItMTM4XCIsXG4gICAgICAgICAgXCJpc284ODU5LThcIixcbiAgICAgICAgICBcImlzbzg4NTk4XCIsXG4gICAgICAgICAgXCJpc29fODg1OS04XCIsXG4gICAgICAgICAgXCJpc29fODg1OS04OjE5ODhcIixcbiAgICAgICAgICBcInZpc3VhbFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LThcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc284ODU5OGlcIixcbiAgICAgICAgICBcImlzby04ODU5LTgtaVwiLFxuICAgICAgICAgIFwibG9naWNhbFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTgtaVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluNlwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMTBcIixcbiAgICAgICAgICBcImlzby1pci0xNTdcIixcbiAgICAgICAgICBcImlzbzg4NTktMTBcIixcbiAgICAgICAgICBcImlzbzg4NTkxMFwiLFxuICAgICAgICAgIFwibDZcIixcbiAgICAgICAgICBcImxhdGluNlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTEwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTEzXCIsXG4gICAgICAgICAgXCJpc284ODU5LTEzXCIsXG4gICAgICAgICAgXCJpc284ODU5MTNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xM1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJpc28tODg1OS0xNFwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xNFwiLFxuICAgICAgICAgIFwiaXNvODg1OTE0XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjlcIixcbiAgICAgICAgICBcImlzby04ODU5LTE1XCIsXG4gICAgICAgICAgXCJpc284ODU5LTE1XCIsXG4gICAgICAgICAgXCJpc284ODU5MTVcIixcbiAgICAgICAgICBcImlzb184ODU5LTE1XCIsXG4gICAgICAgICAgXCJsOVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTE1XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImlzby04ODU5LTE2XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Nrb2k4clwiLFxuICAgICAgICAgIFwia29pXCIsXG4gICAgICAgICAgXCJrb2k4XCIsXG4gICAgICAgICAgXCJrb2k4LXJcIixcbiAgICAgICAgICBcImtvaThfclwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImtvaTgtclwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJrb2k4LXJ1XCIsXG4gICAgICAgICAgXCJrb2k4LXVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJrb2k4LXVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NtYWNpbnRvc2hcIixcbiAgICAgICAgICBcIm1hY1wiLFxuICAgICAgICAgIFwibWFjaW50b3NoXCIsXG4gICAgICAgICAgXCJ4LW1hYy1yb21hblwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIm1hY2ludG9zaFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJkb3MtODc0XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xMVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xMVwiLFxuICAgICAgICAgIFwiaXNvODg1OTExXCIsXG4gICAgICAgICAgXCJ0aXMtNjIwXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTg3NFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtODc0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1MFwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUwXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1MFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1MFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTFcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1MVwiLFxuICAgICAgICAgIFwieC1jcDEyNTFcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTFcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYW5zaV94My40LTE5NjhcIixcbiAgICAgICAgICBcImFzY2lpXCIsXG4gICAgICAgICAgXCJjcDEyNTJcIixcbiAgICAgICAgICBcImNwODE5XCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluMVwiLFxuICAgICAgICAgIFwiaWJtODE5XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xXCIsXG4gICAgICAgICAgXCJpc28taXItMTAwXCIsXG4gICAgICAgICAgXCJpc284ODU5LTFcIixcbiAgICAgICAgICBcImlzbzg4NTkxXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xXCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xOjE5ODdcIixcbiAgICAgICAgICBcImwxXCIsXG4gICAgICAgICAgXCJsYXRpbjFcIixcbiAgICAgICAgICBcInVzLWFzY2lpXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTJcIixcbiAgICAgICAgICBcIngtY3AxMjUyXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUyXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1M1wiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUzXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1M1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1M1wiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTRcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW41XCIsXG4gICAgICAgICAgXCJpc28tODg1OS05XCIsXG4gICAgICAgICAgXCJpc28taXItMTQ4XCIsXG4gICAgICAgICAgXCJpc284ODU5LTlcIixcbiAgICAgICAgICBcImlzbzg4NTk5XCIsXG4gICAgICAgICAgXCJpc29fODg1OS05XCIsXG4gICAgICAgICAgXCJpc29fODg1OS05OjE5ODlcIixcbiAgICAgICAgICBcImw1XCIsXG4gICAgICAgICAgXCJsYXRpbjVcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1NFwiLFxuICAgICAgICAgIFwieC1jcDEyNTRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU1XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTVcIixcbiAgICAgICAgICBcIngtY3AxMjU1XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU1XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1NlwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU2XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1NlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1NlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTdcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1N1wiLFxuICAgICAgICAgIFwieC1jcDEyNTdcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTdcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU4XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNThcIixcbiAgICAgICAgICBcIngtY3AxMjU4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU4XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIngtbWFjLWN5cmlsbGljXCIsXG4gICAgICAgICAgXCJ4LW1hYy11a3JhaW5pYW5cIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ4LW1hYy1jeXJpbGxpY1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY2hpbmVzZVwiLFxuICAgICAgICAgIFwiY3NnYjIzMTJcIixcbiAgICAgICAgICBcImNzaXNvNThnYjIzMTI4MFwiLFxuICAgICAgICAgIFwiZ2IyMzEyXCIsXG4gICAgICAgICAgXCJnYl8yMzEyXCIsXG4gICAgICAgICAgXCJnYl8yMzEyLTgwXCIsXG4gICAgICAgICAgXCJnYmtcIixcbiAgICAgICAgICBcImlzby1pci01OFwiLFxuICAgICAgICAgIFwieC1nYmtcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJnYmtcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiZ2IxODAzMFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImdiMTgwMzBcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAoc2ltcGxpZmllZCkgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiYmlnNVwiLFxuICAgICAgICAgIFwiYmlnNS1oa3Njc1wiLFxuICAgICAgICAgIFwiY24tYmlnNVwiLFxuICAgICAgICAgIFwiY3NiaWc1XCIsXG4gICAgICAgICAgXCJ4LXgtYmlnNVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImJpZzVcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAodHJhZGl0aW9uYWwpIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzZXVjcGtkZm10amFwYW5lc2VcIixcbiAgICAgICAgICBcImV1Yy1qcFwiLFxuICAgICAgICAgIFwieC1ldWMtanBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJldWMtanBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc28yMDIyanBcIixcbiAgICAgICAgICBcImlzby0yMDIyLWpwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTIwMjItanBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NzaGlmdGppc1wiLFxuICAgICAgICAgIFwibXM5MzJcIixcbiAgICAgICAgICBcIm1zX2thbmppXCIsXG4gICAgICAgICAgXCJzaGlmdC1qaXNcIixcbiAgICAgICAgICBcInNoaWZ0X2ppc1wiLFxuICAgICAgICAgIFwic2ppc1wiLFxuICAgICAgICAgIFwid2luZG93cy0zMWpcIixcbiAgICAgICAgICBcIngtc2ppc1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInNoaWZ0X2ppc1wiXG4gICAgICB9XG4gICAgXSxcbiAgICBcImhlYWRpbmdcIjogXCJMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2V1Y2tyXCIsXG4gICAgICAgICAgXCJjc2tzYzU2MDExOTg3XCIsXG4gICAgICAgICAgXCJldWMta3JcIixcbiAgICAgICAgICBcImlzby1pci0xNDlcIixcbiAgICAgICAgICBcImtvcmVhblwiLFxuICAgICAgICAgIFwia3NfY181NjAxLTE5ODdcIixcbiAgICAgICAgICBcImtzX2NfNTYwMS0xOTg5XCIsXG4gICAgICAgICAgXCJrc2M1NjAxXCIsXG4gICAgICAgICAgXCJrc2NfNTYwMVwiLFxuICAgICAgICAgIFwid2luZG93cy05NDlcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJldWMta3JcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvMjAyMmtyXCIsXG4gICAgICAgICAgXCJoei1nYi0yMzEyXCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1jblwiLFxuICAgICAgICAgIFwiaXNvLTIwMjItY24tZXh0XCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1rclwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInJlcGxhY2VtZW50XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcInV0Zi0xNmJlXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwidXRmLTE2YmVcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwidXRmLTE2XCIsXG4gICAgICAgICAgXCJ1dGYtMTZsZVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInV0Zi0xNmxlXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIngtdXNlci1kZWZpbmVkXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwieC11c2VyLWRlZmluZWRcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG1pc2NlbGxhbmVvdXMgZW5jb2RpbmdzXCJcbiAgfVxuICBdO1xuXG4gIC8vIExhYmVsIHRvIGVuY29kaW5nIHJlZ2lzdHJ5LlxuICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLHtuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59Pn0gKi9cbiAgdmFyIGxhYmVsX3RvX2VuY29kaW5nID0ge307XG4gIGVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KSB7XG4gICAgY2F0ZWdvcnkuZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgIGVuY29kaW5nLmxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGxhYmVsKSB7XG4gICAgICAgIGxhYmVsX3RvX2VuY29kaW5nW2xhYmVsXSA9IGVuY29kaW5nO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFJlZ2lzdHJ5IG9mIG9mIGVuY29kZXIvZGVjb2RlciBmYWN0b3JpZXMsIGJ5IGVuY29kaW5nIG5hbWUuXG4gIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIGZ1bmN0aW9uKHtmYXRhbDpib29sZWFufSk6IEVuY29kZXI+fSAqL1xuICB2YXIgZW5jb2RlcnMgPSB7fTtcbiAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgZnVuY3Rpb24oe2ZhdGFsOmJvb2xlYW59KTogRGVjb2Rlcj59ICovXG4gIHZhciBkZWNvZGVycyA9IHt9O1xuXG4gIC8vXG4gIC8vIDUuIEluZGV4ZXNcbiAgLy9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBvaW50ZXIgVGhlIHxwb2ludGVyfCB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0geyghQXJyYXkuPD9udW1iZXI+fHVuZGVmaW5lZCl9IGluZGV4IFRoZSB8aW5kZXh8IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gfGluZGV4fC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KSB7XG4gICAgaWYgKCFpbmRleCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGluZGV4W3BvaW50ZXJdIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlIHBvaW50fCB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0geyFBcnJheS48P251bWJlcj59IGluZGV4IFRoZSB8aW5kZXh8IHRvIHNlYXJjaCB3aXRoaW4uXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBmaXJzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gfGNvZGUgcG9pbnR8IGluXG4gICAqICAgICB8aW5kZXh8LCBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gfGluZGV4fC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCkge1xuICAgIHZhciBwb2ludGVyID0gaW5kZXguaW5kZXhPZihjb2RlX3BvaW50KTtcbiAgICByZXR1cm4gcG9pbnRlciA9PT0gLTEgPyBudWxsIDogcG9pbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBpbmRleC5cbiAgICogQHJldHVybiB7KCFBcnJheS48bnVtYmVyPnwhQXJyYXkuPEFycmF5LjxudW1iZXI+Pil9XG4gICAqICAqL1xuICBmdW5jdGlvbiBpbmRleChuYW1lKSB7XG4gICAgaWYgKCEoJ2VuY29kaW5nLWluZGV4ZXMnIGluIGdsb2JhbCkpIHtcbiAgICAgIHRocm93IEVycm9yKFwiSW5kZXhlcyBtaXNzaW5nLlwiICtcbiAgICAgICAgICAgICAgICAgIFwiIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz9cIik7XG4gICAgfVxuICAgIHJldHVybiBnbG9iYWxbJ2VuY29kaW5nLWluZGV4ZXMnXVtuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9pbnRlciBUaGUgfHBvaW50ZXJ8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEdCMTgwMzBSYW5nZXNDb2RlUG9pbnRGb3IocG9pbnRlcikge1xuICAgIC8vIDEuIElmIHBvaW50ZXIgaXMgZ3JlYXRlciB0aGFuIDM5NDE5IGFuZCBsZXNzIHRoYW4gMTg5MDAwLCBvclxuICAgIC8vIHBvaW50ZXIgaXMgZ3JlYXRlciB0aGFuIDEyMzc1NzUsIHJldHVybiBudWxsLlxuICAgIGlmICgocG9pbnRlciA+IDM5NDE5ICYmIHBvaW50ZXIgPCAxODkwMDApIHx8IChwb2ludGVyID4gMTIzNzU3NSkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIDIuIExldCBvZmZzZXQgYmUgdGhlIGxhc3QgcG9pbnRlciBpbiBpbmRleCBnYjE4MDMwIHJhbmdlcyB0aGF0XG4gICAgLy8gaXMgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIHBvaW50ZXIgYW5kIGxldCBjb2RlIHBvaW50IG9mZnNldCBiZVxuICAgIC8vIGl0cyBjb3JyZXNwb25kaW5nIGNvZGUgcG9pbnQuXG4gICAgdmFyIG9mZnNldCA9IDA7XG4gICAgdmFyIGNvZGVfcG9pbnRfb2Zmc2V0ID0gMDtcbiAgICB2YXIgaWR4ID0gaW5kZXgoJ2diMTgwMzAnKTtcbiAgICB2YXIgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaWR4Lmxlbmd0aDsgKytpKSB7XG4gICAgICAvKiogQHR5cGUgeyFBcnJheS48bnVtYmVyPn0gKi9cbiAgICAgIHZhciBlbnRyeSA9IGlkeFtpXTtcbiAgICAgIGlmIChlbnRyeVswXSA8PSBwb2ludGVyKSB7XG4gICAgICAgIG9mZnNldCA9IGVudHJ5WzBdO1xuICAgICAgICBjb2RlX3BvaW50X29mZnNldCA9IGVudHJ5WzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50IG9mZnNldCArXG4gICAgLy8gcG9pbnRlciDiiJIgb2Zmc2V0LlxuICAgIHJldHVybiBjb2RlX3BvaW50X29mZnNldCArIHBvaW50ZXIgLSBvZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlIHBvaW50fCB0byBsb2NhdGUgaW4gdGhlIGdiMTgwMzAgaW5kZXguXG4gICAqIEByZXR1cm4ge251bWJlcn0gVGhlIGZpcnN0IHBvaW50ZXIgY29ycmVzcG9uZGluZyB0byB8Y29kZSBwb2ludHwgaW4gdGhlXG4gICAqICAgICBnYjE4MDMwIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhHQjE4MDMwUmFuZ2VzUG9pbnRlckZvcihjb2RlX3BvaW50KSB7XG4gICAgLy8gMS4gTGV0IG9mZnNldCBiZSB0aGUgbGFzdCBjb2RlIHBvaW50IGluIGluZGV4IGdiMTgwMzAgcmFuZ2VzXG4gICAgLy8gdGhhdCBpcyBlcXVhbCB0byBvciBsZXNzIHRoYW4gY29kZSBwb2ludCBhbmQgbGV0IHBvaW50ZXIgb2Zmc2V0XG4gICAgLy8gYmUgaXRzIGNvcnJlc3BvbmRpbmcgcG9pbnRlci5cbiAgICB2YXIgb2Zmc2V0ID0gMDtcbiAgICB2YXIgcG9pbnRlcl9vZmZzZXQgPSAwO1xuICAgIHZhciBpZHggPSBpbmRleCgnZ2IxODAzMCcpO1xuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBpZHgubGVuZ3RoOyArK2kpIHtcbiAgICAgIC8qKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fSAqL1xuICAgICAgdmFyIGVudHJ5ID0gaWR4W2ldO1xuICAgICAgaWYgKGVudHJ5WzFdIDw9IGNvZGVfcG9pbnQpIHtcbiAgICAgICAgb2Zmc2V0ID0gZW50cnlbMV07XG4gICAgICAgIHBvaW50ZXJfb2Zmc2V0ID0gZW50cnlbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyLiBSZXR1cm4gYSBwb2ludGVyIHdob3NlIHZhbHVlIGlzIHBvaW50ZXIgb2Zmc2V0ICsgY29kZSBwb2ludFxuICAgIC8vIOKIkiBvZmZzZXQuXG4gICAgcmV0dXJuIHBvaW50ZXJfb2Zmc2V0ICsgY29kZV9wb2ludCAtIG9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGVfcG9pbnR8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIHNoaWZ0X2ppcyBpbmRleC5cbiAgICogQHJldHVybiB7P251bWJlcn0gVGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB8cG9pbnRlcnwgaW4gfGluZGV4fCxcbiAgICogICAgIG9yIG51bGwgaWYgfGNvZGUgcG9pbnR8IGlzIG5vdCBpbiB0aGUgc2hpZnRfamlzIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhTaGlmdEpJU1BvaW50ZXJGb3IoY29kZV9wb2ludCkge1xuICAgIC8vIDEuIExldCBpbmRleCBiZSBpbmRleCBqaXMwMjA4IGV4Y2x1ZGluZyBhbGwgcG9pbnRlcnMgaW4gdGhlXG4gICAgLy8gcmFuZ2UgODI3MiB0byA4ODM1LlxuICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuICAgIGlmIChwb2ludGVyID09PSBudWxsIHx8IGluUmFuZ2UocG9pbnRlciwgODI3MiwgODgzNSkpXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIC8vIDIuIFJldHVybiB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleC5cbiAgICByZXR1cm4gcG9pbnRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBUaGUgfGNvZGVfcG9pbnR8IHRvIHNlYXJjaCBmb3IgaW4gdGhlIGJpZzUgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIGJpZzUgaW5kZXguXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleEJpZzVQb2ludGVyRm9yKGNvZGVfcG9pbnQpIHtcblxuICAgIC8vIDEuIExldCBpbmRleCBiZSBpbmRleCBiaWc1LlxuICAgIHZhciBpbmRleF8gPSBpbmRleCgnYmlnNScpO1xuXG4gICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBVKzI1NTAsIFUrMjU1RSwgVSsyNTYxLCBVKzI1NkEsIFUrNTM0MSwgb3JcbiAgICAvLyBVKzUzNDUsIHJldHVybiB0aGUgbGFzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gY29kZSBwb2ludCBpblxuICAgIC8vIGluZGV4LlxuICAgIGlmIChjb2RlX3BvaW50ID09PSAweDI1NTAgfHwgY29kZV9wb2ludCA9PT0gMHgyNTVFIHx8XG4gICAgICAgIGNvZGVfcG9pbnQgPT09IDB4MjU2MSB8fCBjb2RlX3BvaW50ID09PSAweDI1NkEgfHxcbiAgICAgICAgY29kZV9wb2ludCA9PT0gMHg1MzQxIHx8IGNvZGVfcG9pbnQgPT09IDB4NTM0NSkge1xuICAgICAgcmV0dXJuIGluZGV4Lmxhc3RJbmRleE9mKGNvZGVfcG9pbnQpO1xuICAgIH1cblxuICAgIC8vIDMuIFJldHVybiB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleC5cbiAgICByZXR1cm4gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4Xyk7XG4gIH1cblxuICAvL1xuICAvLyA3LiBBUElcbiAgLy9cblxuICAvKiogQGNvbnN0ICovIHZhciBERUZBVUxUX0VOQ09ESU5HID0gJ3V0Zi04JztcblxuICAvLyA3LjEgSW50ZXJmYWNlIFRleHREZWNvZGVyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZz19IGVuY29kaW5nIFRoZSBsYWJlbCBvZiB0aGUgZW5jb2Rpbmc7XG4gICAqICAgICBkZWZhdWx0cyB0byAndXRmLTgnLlxuICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRleHREZWNvZGVyKSkge1xuICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhlbmNvZGluZykgOiBERUZBVUxUX0VOQ09ESU5HO1xuICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IHRoaXMuX2VuY29kaW5nLm5hbWUgPT09ICdyZXBsYWNlbWVudCcpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgaWYgKCFkZWNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0RlY29kZXIgbm90IHByZXNlbnQuJyArXG4gICAgICAgICAgICAgICAgICAnIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz8nKTtcbiAgICB9XG5cbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX0JPTXNlZW4gPSBmYWxzZTtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUgez9EZWNvZGVyfSAqL1xuICAgIHRoaXMuX2RlY29kZXIgPSBudWxsO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9mYXRhbCA9IEJvb2xlYW4ob3B0aW9uc1snZmF0YWwnXSk7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX2lnbm9yZUJPTSA9IEJvb2xlYW4ob3B0aW9uc1snaWdub3JlQk9NJ10pO1xuXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdlbmNvZGluZycsIHt2YWx1ZTogdGhpcy5fZW5jb2RpbmcubmFtZX0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdmYXRhbCcsIHt2YWx1ZTogdGhpcy5fZmF0YWx9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnaWdub3JlQk9NJywge3ZhbHVlOiB0aGlzLl9pZ25vcmVCT019KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmNvZGluZyA9IHRoaXMuX2VuY29kaW5nLm5hbWU7XG4gICAgICB0aGlzLmZhdGFsID0gdGhpcy5fZmF0YWw7XG4gICAgICB0aGlzLmlnbm9yZUJPTSA9IHRoaXMuX2lnbm9yZUJPTTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIFRleHREZWNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0FycmF5QnVmZmVyVmlldz19IGlucHV0IFRoZSBidWZmZXIgb2YgYnl0ZXMgdG8gZGVjb2RlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGRlY29kZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGRlY29kZTogZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgYnl0ZXM7XG4gICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmICdidWZmZXInIGluIGlucHV0ICYmXG4gICAgICAgICAgICAgICAgIGlucHV0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQuYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQuYnl0ZUxlbmd0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KDApO1xuICAgICAgfVxuXG4gICAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICB0aGlzLl9kZWNvZGVyID0gZGVjb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0oe2ZhdGFsOiB0aGlzLl9mYXRhbH0pO1xuICAgICAgICB0aGlzLl9CT01zZWVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9zdHJlYW1pbmcgPSBCb29sZWFuKG9wdGlvbnNbJ3N0cmVhbSddKTtcblxuICAgICAgdmFyIGlucHV0X3N0cmVhbSA9IG5ldyBTdHJlYW0oYnl0ZXMpO1xuXG4gICAgICB2YXIgY29kZV9wb2ludHMgPSBbXTtcblxuICAgICAgLyoqIEB0eXBlIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSAqL1xuICAgICAgdmFyIHJlc3VsdDtcblxuICAgICAgd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgY29kZV9wb2ludHMucHVzaC5hcHBseShjb2RlX3BvaW50cywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKSB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgICAgY29kZV9wb2ludHMucHVzaC5hcHBseShjb2RlX3BvaW50cywgLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyhyZXN1bHQpKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIH0gd2hpbGUgKCFpbnB1dF9zdHJlYW0uZW5kT2ZTdHJlYW0oKSk7XG4gICAgICAgIHRoaXMuX2RlY29kZXIgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29kZV9wb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIElmIGVuY29kaW5nIGlzIG9uZSBvZiB1dGYtOCwgdXRmLTE2YmUsIGFuZCB1dGYtMTZsZSwgYW5kXG4gICAgICAgIC8vIGlnbm9yZSBCT00gZmxhZyBhbmQgQk9NIHNlZW4gZmxhZyBhcmUgdW5zZXQsIHJ1biB0aGVzZVxuICAgICAgICAvLyBzdWJzdWJzdGVwczpcbiAgICAgICAgaWYgKFsndXRmLTgnLCAndXRmLTE2bGUnLCAndXRmLTE2YmUnXS5pbmRleE9mKHRoaXMuZW5jb2RpbmcpICE9PSAtMSAmJlxuICAgICAgICAgICAgIXRoaXMuX2lnbm9yZUJPTSAmJiAhdGhpcy5fQk9Nc2Vlbikge1xuICAgICAgICAgIC8vIElmIHRva2VuIGlzIFUrRkVGRiwgc2V0IEJPTSBzZWVuIGZsYWcuXG4gICAgICAgICAgaWYgKGNvZGVfcG9pbnRzWzBdID09PSAweEZFRkYpIHtcbiAgICAgICAgICAgIHRoaXMuX0JPTXNlZW4gPSB0cnVlO1xuICAgICAgICAgICAgY29kZV9wb2ludHMuc2hpZnQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0b2tlbiBpcyBub3QgZW5kLW9mLXN0cmVhbSwgc2V0IEJPTSBzZWVuXG4gICAgICAgICAgICAvLyBmbGFnIGFuZCBhcHBlbmQgdG9rZW4gdG8gb3V0cHV0LlxuICAgICAgICAgICAgdGhpcy5fQk9Nc2VlbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2RlUG9pbnRzVG9TdHJpbmcoY29kZV9wb2ludHMpO1xuICAgIH1cbiAgfTtcblxuICAvLyA3LjIgSW50ZXJmYWNlIFRleHRFbmNvZGVyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZz19IGVuY29kaW5nIFRoZSBsYWJlbCBvZiB0aGUgZW5jb2Rpbmc7XG4gICAqICAgICBkZWZhdWx0cyB0byAndXRmLTgnLlxuICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFRleHRFbmNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRleHRFbmNvZGVyKSlcbiAgICAgIHJldHVybiBuZXcgVGV4dEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpO1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgIT09IHVuZGVmaW5lZCA/IFN0cmluZyhlbmNvZGluZykgOiBERUZBVUxUX0VOQ09ESU5HO1xuICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG4gICAgLyoqIEBwcml2YXRlICovXG4gICAgdGhpcy5fZW5jb2RpbmcgPSBnZXRFbmNvZGluZyhlbmNvZGluZyk7XG4gICAgaWYgKHRoaXMuX2VuY29kaW5nID09PSBudWxsIHx8IHRoaXMuX2VuY29kaW5nLm5hbWUgPT09ICdyZXBsYWNlbWVudCcpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgdmFyIGFsbG93TGVnYWN5RW5jb2RpbmcgPVxuICAgICAgICAgIEJvb2xlYW4ob3B0aW9uc1snTk9OU1RBTkRBUkRfYWxsb3dMZWdhY3lFbmNvZGluZyddKTtcbiAgICB2YXIgaXNMZWdhY3lFbmNvZGluZyA9ICh0aGlzLl9lbmNvZGluZy5uYW1lICE9PSAndXRmLTgnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW5jb2RpbmcubmFtZSAhPT0gJ3V0Zi0xNmxlJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuY29kaW5nLm5hbWUgIT09ICd1dGYtMTZiZScpO1xuICAgIGlmICh0aGlzLl9lbmNvZGluZyA9PT0gbnVsbCB8fCAoaXNMZWdhY3lFbmNvZGluZyAmJiAhYWxsb3dMZWdhY3lFbmNvZGluZykpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuXG4gICAgaWYgKCFlbmNvZGVyc1t0aGlzLl9lbmNvZGluZy5uYW1lXSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0VuY29kZXIgbm90IHByZXNlbnQuJyArXG4gICAgICAgICAgICAgICAgICAnIERpZCB5b3UgZm9yZ2V0IHRvIGluY2x1ZGUgZW5jb2RpbmctaW5kZXhlcy5qcz8nKTtcbiAgICB9XG5cbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fc3RyZWFtaW5nID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHs/RW5jb2Rlcn0gKi9cbiAgICB0aGlzLl9lbmNvZGVyID0gbnVsbDtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge3tmYXRhbDogYm9vbGVhbn19ICovXG4gICAgdGhpcy5fb3B0aW9ucyA9IHtmYXRhbDogQm9vbGVhbihvcHRpb25zWydmYXRhbCddKX07XG5cbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdlbmNvZGluZycsIHt2YWx1ZTogdGhpcy5fZW5jb2RpbmcubmFtZX0pO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuZW5jb2RpbmcgPSB0aGlzLl9lbmNvZGluZy5uYW1lO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBUZXh0RW5jb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmc9fSBvcHRfc3RyaW5nIFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9uc1xuICAgICAqIEByZXR1cm4ge1VpbnQ4QXJyYXl9IEVuY29kZWQgYnl0ZXMsIGFzIGEgVWludDhBcnJheS5cbiAgICAgKi9cbiAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZShvcHRfc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICBvcHRfc3RyaW5nID0gb3B0X3N0cmluZyA/IFN0cmluZyhvcHRfc3RyaW5nKSA6ICcnO1xuICAgICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcblxuICAgICAgLy8gTk9URTogVGhpcyBvcHRpb24gaXMgbm9uc3RhbmRhcmQuIE5vbmUgb2YgdGhlIGVuY29kaW5nc1xuICAgICAgLy8gcGVybWl0dGVkIGZvciBlbmNvZGluZyAoaS5lLiBVVEYtOCwgVVRGLTE2KSBhcmUgc3RhdGVmdWwsXG4gICAgICAvLyBzbyBzdHJlYW1pbmcgaXMgbm90IG5lY2Vzc2FyeS5cbiAgICAgIGlmICghdGhpcy5fc3RyZWFtaW5nKVxuICAgICAgICB0aGlzLl9lbmNvZGVyID0gZW5jb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0odGhpcy5fb3B0aW9ucyk7XG4gICAgICB0aGlzLl9zdHJlYW1pbmcgPSBCb29sZWFuKG9wdGlvbnNbJ3N0cmVhbSddKTtcblxuICAgICAgdmFyIGJ5dGVzID0gW107XG4gICAgICB2YXIgaW5wdXRfc3RyZWFtID0gbmV3IFN0cmVhbShzdHJpbmdUb0NvZGVQb2ludHMob3B0X3N0cmluZykpO1xuICAgICAgLyoqIEB0eXBlIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSAqL1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICghaW5wdXRfc3RyZWFtLmVuZE9mU3RyZWFtKCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgIGJ5dGVzLnB1c2guYXBwbHkoYnl0ZXMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBieXRlcy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICAgIGJ5dGVzLnB1c2guYXBwbHkoYnl0ZXMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnl0ZXMucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VuY29kZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICB9XG4gIH07XG5cblxuICAvL1xuICAvLyA4LiBUaGUgZW5jb2RpbmdcbiAgLy9cblxuICAvLyA4LjEgdXRmLThcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjhEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gdXRmLTgncyBkZWNvZGVyJ3MgaGFzIGFuIGFzc29jaWF0ZWQgdXRmLTggY29kZSBwb2ludCwgdXRmLThcbiAgICAvLyBieXRlcyBzZWVuLCBhbmQgdXRmLTggYnl0ZXMgbmVlZGVkIChhbGwgaW5pdGlhbGx5IDApLCBhIHV0Zi04XG4gICAgLy8gbG93ZXIgYm91bmRhcnkgKGluaXRpYWxseSAweDgwKSwgYW5kIGEgdXRmLTggdXBwZXIgYm91bmRhcnlcbiAgICAvLyAoaW5pdGlhbGx5IDB4QkYpLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9jb2RlX3BvaW50ID0gMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfYnl0ZXNfc2VlbiA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2J5dGVzX25lZWRlZCA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg4MCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHV0Zi04IGJ5dGVzIG5lZWRlZCBpcyBub3QgMCxcbiAgICAgIC8vIHNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgdXRmOF9ieXRlc19uZWVkZWQgIT09IDApIHtcbiAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiB1dGYtOCBieXRlcyBuZWVkZWQgaXMgMCwgYmFzZWQgb24gYnl0ZTpcbiAgICAgIGlmICh1dGY4X2J5dGVzX25lZWRlZCA9PT0gMCkge1xuXG4gICAgICAgIC8vIDB4MDAgdG8gMHg3RlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSkge1xuICAgICAgICAgIC8vIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4QzIgdG8gMHhERlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweEMyLCAweERGKSkge1xuICAgICAgICAgIC8vIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMSBhbmQgdXRmLTggY29kZSBwb2ludCB0byBieXRlXG4gICAgICAgICAgLy8g4oiSIDB4QzAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAxO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEMwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhFMCB0byAweEVGXG4gICAgICAgIGVsc2UgaWYgKGluUmFuZ2UoYml0ZSwgMHhFMCwgMHhFRikpIHtcbiAgICAgICAgICAvLyAxLiBJZiBieXRlIGlzIDB4RTAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweEEwLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEUwKVxuICAgICAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4QTA7XG4gICAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyAweEVELCBzZXQgdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHg5Ri5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhFRClcbiAgICAgICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweDlGO1xuICAgICAgICAgIC8vIDMuIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMiBhbmQgdXRmLTggY29kZSBwb2ludCB0b1xuICAgICAgICAgIC8vIGJ5dGUg4oiSIDB4RTAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAyO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEUwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHhGMCB0byAweEY0XG4gICAgICAgIGVsc2UgaWYgKGluUmFuZ2UoYml0ZSwgMHhGMCwgMHhGNCkpIHtcbiAgICAgICAgICAvLyAxLiBJZiBieXRlIGlzIDB4RjAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDkwLlxuICAgICAgICAgIGlmIChiaXRlID09PSAweEYwKVxuICAgICAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4OTA7XG4gICAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyAweEY0LCBzZXQgdXRmLTggdXBwZXIgYm91bmRhcnkgdG8gMHg4Ri5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhGNClcbiAgICAgICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweDhGO1xuICAgICAgICAgIC8vIDMuIFNldCB1dGYtOCBieXRlcyBuZWVkZWQgdG8gMyBhbmQgdXRmLTggY29kZSBwb2ludCB0b1xuICAgICAgICAgIC8vIGJ5dGUg4oiSIDB4RjAuXG4gICAgICAgICAgdXRmOF9ieXRlc19uZWVkZWQgPSAzO1xuICAgICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IGJpdGUgLSAweEYwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIC8vIFJldHVybiBlcnJvci5cbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZW4gKGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QzIgdG8gMHhGNCkgc2V0IHV0Zi04IGNvZGVcbiAgICAgICAgLy8gcG9pbnQgdG8gdXRmLTggY29kZSBwb2ludCA8PCAoNiDDlyB1dGYtOCBieXRlcyBuZWVkZWQpIGFuZFxuICAgICAgICAvLyByZXR1cm4gY29udGludWUuXG4gICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfY29kZV9wb2ludCA8PCAoNiAqIHV0ZjhfYnl0ZXNfbmVlZGVkKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgbm90IGluIHRoZSByYW5nZSB1dGYtOCBsb3dlciBib3VuZGFyeSB0byB1dGYtOFxuICAgICAgLy8gdXBwZXIgYm91bmRhcnksIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmICghaW5SYW5nZShiaXRlLCB1dGY4X2xvd2VyX2JvdW5kYXJ5LCB1dGY4X3VwcGVyX2JvdW5kYXJ5KSkge1xuXG4gICAgICAgIC8vIDEuIFNldCB1dGYtOCBjb2RlIHBvaW50LCB1dGYtOCBieXRlcyBuZWVkZWQsIGFuZCB1dGYtOFxuICAgICAgICAvLyBieXRlcyBzZWVuIHRvIDAsIHNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDgwLCBhbmQgc2V0XG4gICAgICAgIC8vIHV0Zi04IHVwcGVyIGJvdW5kYXJ5IHRvIDB4QkYuXG4gICAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfYnl0ZXNfbmVlZGVkID0gdXRmOF9ieXRlc19zZWVuID0gMDtcbiAgICAgICAgdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4ODA7XG4gICAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDMuIFJldHVybiBlcnJvci5cbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIFNldCB1dGYtOCBsb3dlciBib3VuZGFyeSB0byAweDgwIGFuZCB1dGYtOCB1cHBlciBib3VuZGFyeVxuICAgICAgLy8gdG8gMHhCRi5cbiAgICAgIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDgwO1xuICAgICAgdXRmOF91cHBlcl9ib3VuZGFyeSA9IDB4QkY7XG5cbiAgICAgIC8vIDYuIEluY3JlYXNlIHV0Zi04IGJ5dGVzIHNlZW4gYnkgb25lIGFuZCBzZXQgdXRmLTggY29kZSBwb2ludFxuICAgICAgLy8gdG8gdXRmLTggY29kZSBwb2ludCArIChieXRlIOKIkiAweDgwKSA8PCAoNiDDlyAodXRmLTggYnl0ZXNcbiAgICAgIC8vIG5lZWRlZCDiiJIgdXRmLTggYnl0ZXMgc2VlbikpLlxuICAgICAgdXRmOF9ieXRlc19zZWVuICs9IDE7XG4gICAgICB1dGY4X2NvZGVfcG9pbnQgKz0gKGJpdGUgLSAweDgwKSA8PCAoNiAqICh1dGY4X2J5dGVzX25lZWRlZCAtIHV0ZjhfYnl0ZXNfc2VlbikpO1xuXG4gICAgICAvLyA3LiBJZiB1dGYtOCBieXRlcyBzZWVuIGlzIG5vdCBlcXVhbCB0byB1dGYtOCBieXRlcyBuZWVkZWQsXG4gICAgICAvLyBjb250aW51ZS5cbiAgICAgIGlmICh1dGY4X2J5dGVzX3NlZW4gIT09IHV0ZjhfYnl0ZXNfbmVlZGVkKVxuICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgLy8gOC4gTGV0IGNvZGUgcG9pbnQgYmUgdXRmLTggY29kZSBwb2ludC5cbiAgICAgIHZhciBjb2RlX3BvaW50ID0gdXRmOF9jb2RlX3BvaW50O1xuXG4gICAgICAvLyA5LiBTZXQgdXRmLTggY29kZSBwb2ludCwgdXRmLTggYnl0ZXMgbmVlZGVkLCBhbmQgdXRmLTggYnl0ZXNcbiAgICAgIC8vIHNlZW4gdG8gMC5cbiAgICAgIHV0ZjhfY29kZV9wb2ludCA9IHV0ZjhfYnl0ZXNfbmVlZGVkID0gdXRmOF9ieXRlc19zZWVuID0gMDtcblxuICAgICAgLy8gMTAuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjhFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdmKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIFNldCBjb3VudCBhbmQgb2Zmc2V0IGJhc2VkIG9uIHRoZSByYW5nZSBjb2RlIHBvaW50IGlzIGluOlxuICAgICAgdmFyIGNvdW50LCBvZmZzZXQ7XG4gICAgICAvLyBVKzAwODAgdG8gVSswN0ZGOiAgICAxIGFuZCAweEMwXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwODAsIDB4MDdGRikpIHtcbiAgICAgICAgY291bnQgPSAxO1xuICAgICAgICBvZmZzZXQgPSAweEMwO1xuICAgICAgfVxuICAgICAgLy8gVSswODAwIHRvIFUrRkZGRjogICAgMiBhbmQgMHhFMFxuICAgICAgZWxzZSBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDA4MDAsIDB4RkZGRikpIHtcbiAgICAgICAgY291bnQgPSAyO1xuICAgICAgICBvZmZzZXQgPSAweEUwO1xuICAgICAgfVxuICAgICAgLy8gVSsxMDAwMCB0byBVKzEwRkZGRjogMyBhbmQgMHhGMFxuICAgICAgZWxzZSBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDEwMDAwLCAweDEwRkZGRikpIHtcbiAgICAgICAgY291bnQgPSAzO1xuICAgICAgICBvZmZzZXQgPSAweEYwO1xuICAgICAgfVxuXG4gICAgICAvLyA0LkxldCBieXRlcyBiZSBhIGJ5dGUgc2VxdWVuY2Ugd2hvc2UgZmlyc3QgYnl0ZSBpcyAoY29kZVxuICAgICAgLy8gcG9pbnQgPj4gKDYgw5cgY291bnQpKSArIG9mZnNldC5cbiAgICAgIHZhciBieXRlcyA9IFsoY29kZV9wb2ludCA+PiAoNiAqIGNvdW50KSkgKyBvZmZzZXRdO1xuXG4gICAgICAvLyA1LiBSdW4gdGhlc2Ugc3Vic3RlcHMgd2hpbGUgY291bnQgaXMgZ3JlYXRlciB0aGFuIDA6XG4gICAgICB3aGlsZSAoY291bnQgPiAwKSB7XG5cbiAgICAgICAgLy8gMS4gU2V0IHRlbXAgdG8gY29kZSBwb2ludCA+PiAoNiDDlyAoY291bnQg4oiSIDEpKS5cbiAgICAgICAgdmFyIHRlbXAgPSBjb2RlX3BvaW50ID4+ICg2ICogKGNvdW50IC0gMSkpO1xuXG4gICAgICAgIC8vIDIuIEFwcGVuZCB0byBieXRlcyAweDgwIHwgKHRlbXAgJiAweDNGKS5cbiAgICAgICAgYnl0ZXMucHVzaCgweDgwIHwgKHRlbXAgJiAweDNGKSk7XG5cbiAgICAgICAgLy8gMy4gRGVjcmVhc2UgY291bnQgYnkgb25lLlxuICAgICAgICBjb3VudCAtPSAxO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gYnl0ZXMgYnl0ZXMsIGluIG9yZGVyLlxuICAgICAgcmV0dXJuIGJ5dGVzO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd1dGYtOCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGOEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3V0Zi04J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEY4RGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvL1xuICAvLyA5LiBMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gOS4xIHNpbmdsZS1ieXRlIGRlY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IGluZGV4IFRoZSBlbmNvZGluZyBpbmRleC5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaW5nbGVCeXRlRGVjb2RlcihpbmRleCwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gMy4gTGV0IGNvZGUgcG9pbnQgYmUgdGhlIGluZGV4IGNvZGUgcG9pbnQgZm9yIGJ5dGUg4oiSIDB4ODAgaW5cbiAgICAgIC8vIGluZGV4IHNpbmdsZS1ieXRlLlxuICAgICAgdmFyIGNvZGVfcG9pbnQgPSBpbmRleFtiaXRlIC0gMHg4MF07XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAvLyA1LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICB9O1xuICB9XG5cbiAgLy8gOS4yIHNpbmdsZS1ieXRlIGVuY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHshQXJyYXkuPD9udW1iZXI+fSBpbmRleCBUaGUgZW5jb2RpbmcgaW5kZXguXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2luZ2xlQnl0ZUVuY29kZXIoaW5kZXgsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBzaW5nbGUtYnl0ZS5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KTtcblxuICAgICAgLy8gNC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gUmV0dXJuIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBwb2ludGVyICsgMHg4MC5cbiAgICAgIHJldHVybiBwb2ludGVyICsgMHg4MDtcbiAgICB9O1xuICB9XG5cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICghKCdlbmNvZGluZy1pbmRleGVzJyBpbiBnbG9iYWwpKVxuICAgICAgcmV0dXJuO1xuICAgIGVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KSB7XG4gICAgICBpZiAoY2F0ZWdvcnkuaGVhZGluZyAhPT0gJ0xlZ2FjeSBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MnKVxuICAgICAgICByZXR1cm47XG4gICAgICBjYXRlZ29yeS5lbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgICB2YXIgbmFtZSA9IGVuY29kaW5nLm5hbWU7XG4gICAgICAgIHZhciBpZHggPSBpbmRleChuYW1lKTtcbiAgICAgICAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICAgICAgICBkZWNvZGVyc1tuYW1lXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZUJ5dGVEZWNvZGVyKGlkeCwgb3B0aW9ucyk7XG4gICAgICAgIH07XG4gICAgICAgIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgICAgICAgZW5jb2RlcnNbbmFtZV0gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVCeXRlRW5jb2RlcihpZHgsIG9wdGlvbnMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0oKSk7XG5cbiAgLy9cbiAgLy8gMTAuIExlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHNpbXBsaWZpZWQpIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEwLjEgZ2JrXG5cbiAgLy8gMTAuMS4xIGdiayBkZWNvZGVyXG4gIC8vIGdiaydzIGRlY29kZXIgaXMgZ2IxODAzMCdzIGRlY29kZXIuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2diayddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTAuMS4yIGdiayBlbmNvZGVyXG4gIC8vIGdiaydzIGVuY29kZXIgaXMgZ2IxODAzMCdzIGVuY29kZXIgd2l0aCBpdHMgZ2JrIGZsYWcgc2V0LlxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydnYmsnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMsIHRydWUpO1xuICB9O1xuXG4gIC8vIDEwLjIgZ2IxODAzMFxuXG4gIC8vIDEwLjIuMSBnYjE4MDMwIGRlY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBHQjE4MDMwRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBnYjE4MDMwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBnYjE4MDMwIGZpcnN0LCBnYjE4MDMwXG4gICAgLy8gc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCAoYWxsIGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGdiMTgwMzBfZmlyc3QgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF9zZWNvbmQgPSAweDAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZ2IxODAzMF90aGlyZCA9IDB4MDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAgIC8vIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgYXJlIDB4MDAsIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGdiMTgwMzBfZmlyc3QgPT09IDB4MDAgJiZcbiAgICAgICAgICBnYjE4MDMwX3NlY29uZCA9PT0gMHgwMCAmJiBnYjE4MDMwX3RoaXJkID09PSAweDAwKSB7XG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgIH1cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgYW5kIGdiMTgwMzAgZmlyc3QsIGdiMTgwMzBcbiAgICAgIC8vIHNlY29uZCwgb3IgZ2IxODAzMCB0aGlyZCBpcyBub3QgMHgwMCwgc2V0IGdiMTgwMzAgZmlyc3QsXG4gICAgICAvLyBnYjE4MDMwIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmXG4gICAgICAgICAgKGdiMTgwMzBfZmlyc3QgIT09IDB4MDAgfHwgZ2IxODAzMF9zZWNvbmQgIT09IDB4MDAgfHwgZ2IxODAzMF90aGlyZCAhPT0gMHgwMCkpIHtcbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfc2Vjb25kID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF90aGlyZCA9IDB4MDA7XG4gICAgICAgIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG4gICAgICB2YXIgY29kZV9wb2ludDtcbiAgICAgIC8vIDMuIElmIGdiMTgwMzAgdGhpcmQgaXMgbm90IDB4MDAsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChnYjE4MDMwX3RoaXJkICE9PSAweDAwKSB7XG4gICAgICAgIC8vIDEuIExldCBjb2RlIHBvaW50IGJlIG51bGwuXG4gICAgICAgIGNvZGVfcG9pbnQgPSBudWxsO1xuICAgICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDMwIHRvIDB4MzksIHNldCBjb2RlIHBvaW50IHRvXG4gICAgICAgIC8vIHRoZSBpbmRleCBnYjE4MDMwIHJhbmdlcyBjb2RlIHBvaW50IGZvciAoKChnYjE4MDMwIGZpcnN0IOKIklxuICAgICAgICAvLyAweDgxKSDDlyAxMCArIGdiMTgwMzAgc2Vjb25kIOKIkiAweDMwKSDDlyAxMjYgKyBnYjE4MDMwIHRoaXJkIOKIklxuICAgICAgICAvLyAweDgxKSDDlyAxMCArIGJ5dGUg4oiSIDB4MzAuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MzAsIDB4MzkpKSB7XG4gICAgICAgICAgY29kZV9wb2ludCA9IGluZGV4R0IxODAzMFJhbmdlc0NvZGVQb2ludEZvcihcbiAgICAgICAgICAgICAgKCgoZ2IxODAzMF9maXJzdCAtIDB4ODEpICogMTAgKyAoZ2IxODAzMF9zZWNvbmQgLSAweDMwKSkgKiAxMjYgK1xuICAgICAgICAgICAgICAgKGdiMTgwMzBfdGhpcmQgLSAweDgxKSkgKiAxMCArIGJpdGUgLSAweDMwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIExldCBidWZmZXIgYmUgYSBieXRlIHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YgZ2IxODAzMFxuICAgICAgICAvLyBzZWNvbmQsIGdiMTgwMzAgdGhpcmQsIGFuZCBieXRlLCBpbiBvcmRlci5cbiAgICAgICAgdmFyIGJ1ZmZlciA9IFtnYjE4MDMwX3NlY29uZCwgZ2IxODAzMF90aGlyZCwgYml0ZV07XG5cbiAgICAgICAgLy8gNC4gU2V0IGdiMTgwMzAgZmlyc3QsIGdiMTgwMzAgc2Vjb25kLCBhbmQgZ2IxODAzMCB0aGlyZCB0b1xuICAgICAgICAvLyAweDAwLlxuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3RoaXJkID0gMHgwMDtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHByZXBlbmQgYnVmZmVyIHRvIHN0cmVhbSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA2LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBnYjE4MDMwIHNlY29uZCBpcyBub3QgMHgwMCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGdiMTgwMzBfc2Vjb25kICE9PSAweDAwKSB7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgZ2IxODAzMCB0aGlyZFxuICAgICAgICAvLyB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgICAgZ2IxODAzMF90aGlyZCA9IGJpdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGdiMTgwMzAgc2Vjb25kIGZvbGxvd2VkIGJ5IGJ5dGUgdG8gc3RyZWFtLCBzZXRcbiAgICAgICAgLy8gZ2IxODAzMCBmaXJzdCBhbmQgZ2IxODAzMCBzZWNvbmQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoW2diMTgwMzBfc2Vjb25kLCBiaXRlXSk7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3NlY29uZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBnYjE4MDMwIGZpcnN0IGlzIG5vdCAweDAwLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZ2IxODAzMF9maXJzdCAhPT0gMHgwMCkge1xuXG4gICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHgzOSwgc2V0IGdiMTgwMzAgc2Vjb25kXG4gICAgICAgIC8vIHRvIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgzMCwgMHgzOSkpIHtcbiAgICAgICAgICBnYjE4MDMwX3NlY29uZCA9IGJpdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBMZXQgbGVhZCBiZSBnYjE4MDMwIGZpcnN0LCBsZXQgcG9pbnRlciBiZSBudWxsLCBhbmQgc2V0XG4gICAgICAgIC8vIGdiMTgwMzAgZmlyc3QgdG8gMHgwMC5cbiAgICAgICAgdmFyIGxlYWQgPSBnYjE4MDMwX2ZpcnN0O1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuXG4gICAgICAgIC8vIDMuIExldCBvZmZzZXQgYmUgMHg0MCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGIGFuZCAweDQxXG4gICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IGJpdGUgPCAweDdGID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MCB0byAweDdFIG9yIDB4ODAgdG8gMHhGRSxcbiAgICAgICAgLy8gc2V0IHBvaW50ZXIgdG8gKGxlYWQg4oiSIDB4ODEpIMOXIDE5MCArIChieXRlIOKIkiBvZmZzZXQpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4ODAsIDB4RkUpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIDB4ODEpICogMTkwICsgKGJpdGUgLSBvZmZzZXQpO1xuXG4gICAgICAgIC8vIDUuIExldCBjb2RlIHBvaW50IGJlIG51bGwgaWYgcG9pbnRlciBpcyBudWxsIGFuZCB0aGUgaW5kZXhcbiAgICAgICAgLy8gY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBnYjE4MDMwIG90aGVyd2lzZS5cbiAgICAgICAgY29kZV9wb2ludCA9IHBvaW50ZXIgPT09IG51bGwgPyBudWxsIDpcbiAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdnYjE4MDMwJykpO1xuXG4gICAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDcuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA4LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDcuIElmIGJ5dGUgaXMgMHg4MCwgcmV0dXJuIGNvZGUgcG9pbnQgVSsyMEFDLlxuICAgICAgaWYgKGJpdGUgPT09IDB4ODApXG4gICAgICAgIHJldHVybiAweDIwQUM7XG5cbiAgICAgIC8vIDguIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGdiMTgwMzAgZmlyc3QgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gOS4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDEwLjIuMiBnYjE4MDMwIGVuY29kZXJcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqIEBwYXJhbSB7Ym9vbGVhbj19IGdia19mbGFnXG4gICAqL1xuICBmdW5jdGlvbiBHQjE4MDMwRW5jb2RlcihvcHRpb25zLCBnYmtfZmxhZykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gZ2IxODAzMCdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZ2JrIGZsYWcgKGluaXRpYWxseSB1bnNldCkuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKSB7XG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyAzLiBJZiB0aGUgZ2JrIGZsYWcgaXMgc2V0IGFuZCBjb2RlIHBvaW50IGlzIFUrMjBBQywgcmV0dXJuXG4gICAgICAvLyBieXRlIDB4ODAuXG4gICAgICBpZiAoZ2JrX2ZsYWcgJiYgY29kZV9wb2ludCA9PT0gMHgyMEFDKVxuICAgICAgICByZXR1cm4gMHg4MDtcblxuICAgICAgLy8gNC4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGdiMTgwMzAuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnZ2IxODAzMCcpKTtcblxuICAgICAgLy8gNS4gSWYgcG9pbnRlciBpcyBub3QgbnVsbCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHBvaW50ZXIgIT09IG51bGwpIHtcblxuICAgICAgICAvLyAxLiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTkwICsgMHg4MS5cbiAgICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTkwKSArIDB4ODE7XG5cbiAgICAgICAgLy8gMi4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxOTAuXG4gICAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSAxOTA7XG5cbiAgICAgICAgLy8gMy4gTGV0IG9mZnNldCBiZSAweDQwIGlmIHRyYWlsIGlzIGxlc3MgdGhhbiAweDNGIGFuZCAweDQxIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IHRyYWlsIDwgMHgzRiA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAgIC8vIDQuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbCArIG9mZnNldC5cbiAgICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbCArIG9mZnNldF07XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGdiayBmbGFnIGlzIHNldCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChnYmtfZmxhZylcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNy4gU2V0IHBvaW50ZXIgdG8gdGhlIGluZGV4IGdiMTgwMzAgcmFuZ2VzIHBvaW50ZXIgZm9yIGNvZGVcbiAgICAgIC8vIHBvaW50LlxuICAgICAgcG9pbnRlciA9IGluZGV4R0IxODAzMFJhbmdlc1BvaW50ZXJGb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDguIExldCBieXRlMSBiZSBwb2ludGVyIC8gMTAgLyAxMjYgLyAxMC5cbiAgICAgIHZhciBieXRlMSA9IGRpdihkaXYoZGl2KHBvaW50ZXIsIDEwKSwgMTI2KSwgMTApO1xuXG4gICAgICAvLyA5LiBTZXQgcG9pbnRlciB0byBwb2ludGVyIOKIkiBieXRlMSDDlyAxMCDDlyAxMjYgw5cgMTAuXG4gICAgICBwb2ludGVyID0gcG9pbnRlciAtIGJ5dGUxICogMTAgKiAxMjYgKiAxMDtcblxuICAgICAgLy8gMTAuIExldCBieXRlMiBiZSBwb2ludGVyIC8gMTAgLyAxMjYuXG4gICAgICB2YXIgYnl0ZTIgPSBkaXYoZGl2KHBvaW50ZXIsIDEwKSwgMTI2KTtcblxuICAgICAgLy8gMTEuIFNldCBwb2ludGVyIHRvIHBvaW50ZXIg4oiSIGJ5dGUyIMOXIDEwIMOXIDEyNi5cbiAgICAgIHBvaW50ZXIgPSBwb2ludGVyIC0gYnl0ZTIgKiAxMCAqIDEyNjtcblxuICAgICAgLy8gMTIuIExldCBieXRlMyBiZSBwb2ludGVyIC8gMTAuXG4gICAgICB2YXIgYnl0ZTMgPSBkaXYocG9pbnRlciwgMTApO1xuXG4gICAgICAvLyAxMy4gTGV0IGJ5dGU0IGJlIHBvaW50ZXIg4oiSIGJ5dGUzIMOXIDEwLlxuICAgICAgdmFyIGJ5dGU0ID0gcG9pbnRlciAtIGJ5dGUzICogMTA7XG5cbiAgICAgIC8vIDE0LiBSZXR1cm4gZm91ciBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGJ5dGUxICsgMHg4MSwgYnl0ZTIgK1xuICAgICAgLy8gMHgzMCwgYnl0ZTMgKyAweDgxLCBieXRlNCArIDB4MzAuXG4gICAgICByZXR1cm4gW2J5dGUxICsgMHg4MSxcbiAgICAgICAgICAgICAgYnl0ZTIgKyAweDMwLFxuICAgICAgICAgICAgICBieXRlMyArIDB4ODEsXG4gICAgICAgICAgICAgIGJ5dGU0ICsgMHgzMF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2diMTgwMzAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydnYjE4MDMwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDExLiBMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlICh0cmFkaXRpb25hbCkgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTEuMSBiaWc1XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBCaWc1RGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvLyBiaWc1J3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBiaWc1IGxlYWQgKGluaXRpYWxseSAweDAwKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGJpZzVfbGVhZCA9IDB4MDA7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgYmlnNSBsZWFkIGlzIG5vdCAweDAwLCBzZXRcbiAgICAgIC8vIGJpZzUgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBiaWc1X2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgYmlnNV9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgYmlnNSBsZWFkIGlzIDB4MDAsIHJldHVyblxuICAgICAgLy8gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBiaWc1X2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgYmlnNSBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBiaWc1IGxlYWQsIGxldFxuICAgICAgLy8gcG9pbnRlciBiZSBudWxsLCBzZXQgYmlnNSBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1biB0aGVzZVxuICAgICAgLy8gc3Vic3RlcHM6XG4gICAgICBpZiAoYmlnNV9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gYmlnNV9sZWFkO1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGJpZzVfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IG9mZnNldCBiZSAweDQwIGlmIGJ5dGUgaXMgbGVzcyB0aGFuIDB4N0YgYW5kIDB4NjJcbiAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gYml0ZSA8IDB4N0YgPyAweDQwIDogMHg2MjtcblxuICAgICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQwIHRvIDB4N0Ugb3IgMHhBMSB0byAweEZFLFxuICAgICAgICAvLyBzZXQgcG9pbnRlciB0byAobGVhZCDiiJIgMHg4MSkgw5cgMTU3ICsgKGJ5dGUg4oiSIG9mZnNldCkuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4NDAsIDB4N0UpIHx8IGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gMHg4MSkgKiAxNTcgKyAoYml0ZSAtIG9mZnNldCk7XG5cbiAgICAgICAgLy8gMy4gSWYgdGhlcmUgaXMgYSByb3cgaW4gdGhlIHRhYmxlIGJlbG93IHdob3NlIGZpcnN0IGNvbHVtblxuICAgICAgICAvLyBpcyBwb2ludGVyLCByZXR1cm4gdGhlIHR3byBjb2RlIHBvaW50cyBsaXN0ZWQgaW4gaXRzIHNlY29uZFxuICAgICAgICAvLyBjb2x1bW5cbiAgICAgICAgLy8gUG9pbnRlciB8IENvZGUgcG9pbnRzXG4gICAgICAgIC8vIC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tXG4gICAgICAgIC8vIDExMzMgICAgfCBVKzAwQ0EgVSswMzA0XG4gICAgICAgIC8vIDExMzUgICAgfCBVKzAwQ0EgVSswMzBDXG4gICAgICAgIC8vIDExNjQgICAgfCBVKzAwRUEgVSswMzA0XG4gICAgICAgIC8vIDExNjYgICAgfCBVKzAwRUEgVSswMzBDXG4gICAgICAgIHN3aXRjaCAocG9pbnRlcikge1xuICAgICAgICAgIGNhc2UgMTEzMzogcmV0dXJuIFsweDAwQ0EsIDB4MDMwNF07XG4gICAgICAgICAgY2FzZSAxMTM1OiByZXR1cm4gWzB4MDBDQSwgMHgwMzBDXTtcbiAgICAgICAgICBjYXNlIDExNjQ6IHJldHVybiBbMHgwMEVBLCAweDAzMDRdO1xuICAgICAgICAgIGNhc2UgMTE2NjogcmV0dXJuIFsweDAwRUEsIDB4MDMwQ107XG4gICAgICAgIH1cblxuICAgICAgICAvLyA0LiBMZXQgY29kZSBwb2ludCBiZSBudWxsIGlmIHBvaW50ZXIgaXMgbnVsbCBhbmQgdGhlIGluZGV4XG4gICAgICAgIC8vIGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggYmlnNSBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6XG4gICAgICAgICAgICBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnYmlnNScpKTtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNy4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBiaWc1IGxlYWQgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGJpZzVfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBCaWc1RW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggYmlnNSBwb2ludGVyIGZvciBjb2RlIHBvaW50LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleEJpZzVQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdiaWc1JykpO1xuXG4gICAgICAvLyA0LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE1NyArIDB4ODEuXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxNTcpICsgMHg4MTtcblxuICAgICAgLy8gNi4gSWYgbGVhZCBpcyBsZXNzIHRoYW4gMHhBMSwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChsZWFkIDwgMHhBMSlcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNy4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxNTcuXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgMTU3O1xuXG4gICAgICAvLyA4LiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YgYW5kIDB4NjJcbiAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgIHZhciBvZmZzZXQgPSB0cmFpbCA8IDB4M0YgPyAweDQwIDogMHg2MjtcblxuICAgICAgLy8gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsICsgb2Zmc2V0LlxuICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbCArIG9mZnNldF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2JpZzUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJpZzVFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydiaWc1J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBCaWc1RGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDEyLiBMZWdhY3kgbXVsdGktYnl0ZSBKYXBhbmVzZSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMi4xIGV1Yy1qcFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gRVVDSlBEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gZXVjLWpwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBldWMtanAgamlzMDIxMiBmbGFnXG4gICAgLy8gKGluaXRpYWxseSB1bnNldCkgYW5kIGV1Yy1qcCBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gZXVjanBfamlzMDIxMl9mbGFnID0gZmFsc2UsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldWNqcF9sZWFkID0gMHgwMDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBldWMtanAgbGVhZCBpcyBub3QgMHgwMCwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byAweDAwLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVjanBfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWpwIGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2pwX2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgZXVjLWpwIGxlYWQgaXMgMHg4RSBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0b1xuICAgICAgLy8gMHhERiwgc2V0IGV1Yy1qcCBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2VcbiAgICAgIC8vIHZhbHVlIGlzIDB4RkY2MSArIGJ5dGUg4oiSIDB4QTEuXG4gICAgICBpZiAoZXVjanBfbGVhZCA9PT0gMHg4RSAmJiBpblJhbmdlKGJpdGUsIDB4QTEsIDB4REYpKSB7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSAweDAwO1xuICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4QTE7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGV1Yy1qcCBsZWFkIGlzIDB4OEYgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QTEgdG9cbiAgICAgIC8vIDB4RkUsIHNldCB0aGUgZXVjLWpwIGppczAyMTIgZmxhZywgc2V0IGV1Yy1qcCBsZWFkIHRvIGJ5dGUsXG4gICAgICAvLyBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgPT09IDB4OEYgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICBldWNqcF9qaXMwMjEyX2ZsYWcgPSB0cnVlO1xuICAgICAgICBldWNqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDUuIElmIGV1Yy1qcCBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBldWMtanAgbGVhZCwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byAweDAwLCBhbmQgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBldWNqcF9sZWFkO1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAxLiBMZXQgY29kZSBwb2ludCBiZSBudWxsLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IG51bGw7XG5cbiAgICAgICAgLy8gMi4gSWYgbGVhZCBhbmQgYnl0ZSBhcmUgYm90aCBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweEZFLCBzZXRcbiAgICAgICAgLy8gY29kZSBwb2ludCB0byB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgKGxlYWQg4oiSIDB4QTEpIMOXIDk0ICtcbiAgICAgICAgLy8gYnl0ZSDiiJIgMHhBMSBpbiBpbmRleCBqaXMwMjA4IGlmIHRoZSBldWMtanAgamlzMDIxMiBmbGFnIGlzXG4gICAgICAgIC8vIHVuc2V0IGFuZCBpbiBpbmRleCBqaXMwMjEyIG90aGVyd2lzZS5cbiAgICAgICAgaWYgKGluUmFuZ2UobGVhZCwgMHhBMSwgMHhGRSkgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSkge1xuICAgICAgICAgIGNvZGVfcG9pbnQgPSBpbmRleENvZGVQb2ludEZvcihcbiAgICAgICAgICAgIChsZWFkIC0gMHhBMSkgKiA5NCArIChiaXRlIC0gMHhBMSksXG4gICAgICAgICAgICBpbmRleCghZXVjanBfamlzMDIxMl9mbGFnID8gJ2ppczAyMDgnIDogJ2ppczAyMTInKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBVbnNldCB0aGUgZXVjLWpwIGppczAyMTIgZmxhZy5cbiAgICAgICAgZXVjanBfamlzMDIxMl9mbGFnID0gZmFsc2U7XG5cbiAgICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBub3QgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgcHJlcGVuZCBieXRlXG4gICAgICAgIC8vIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKCFpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA2LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDcuIElmIGJ5dGUgaXMgMHg4RSwgMHg4Riwgb3IgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgc2V0XG4gICAgICAvLyBldWMtanAgbGVhZCB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoYml0ZSA9PT0gMHg4RSB8fCBiaXRlID09PSAweDhGIHx8IGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpIHtcbiAgICAgICAgZXVjanBfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA4LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNKUEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBVKzAwQTUsIHJldHVybiBieXRlIDB4NUMuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICByZXR1cm4gMHg1QztcblxuICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBVKzIwM0UsIHJldHVybiBieXRlIDB4N0UuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICByZXR1cm4gMHg3RTtcblxuICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGRjYxIHRvIFUrRkY5RiwgcmV0dXJuIHR3b1xuICAgICAgLy8gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSAweDhFIGFuZCBjb2RlIHBvaW50IOKIkiAweEZGNjEgKyAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHhGRjYxLCAweEZGOUYpKVxuICAgICAgICByZXR1cm4gWzB4OEUsIGNvZGVfcG9pbnQgLSAweEZGNjEgKyAweEExXTtcblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA3LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gamlzMDIwOC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAvLyA4LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDk0ICsgMHhBMS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDk0KSArIDB4QTE7XG5cbiAgICAgIC8vIDEwLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDk0ICsgMHhBMS5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSA5NCArIDB4QTE7XG5cbiAgICAgIC8vIDExLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZXVjLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNKUEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2V1Yy1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDSlBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEyLjIgaXNvLTIwMjItanBcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIElTTzIwMjJKUERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqIEBlbnVtICovXG4gICAgdmFyIHN0YXRlcyA9IHtcbiAgICAgIEFTQ0lJOiAwLFxuICAgICAgUm9tYW46IDEsXG4gICAgICBLYXRha2FuYTogMixcbiAgICAgIExlYWRCeXRlOiAzLFxuICAgICAgVHJhaWxCeXRlOiA0LFxuICAgICAgRXNjYXBlU3RhcnQ6IDUsXG4gICAgICBFc2NhcGU6IDZcbiAgICB9O1xuICAgIC8vIGlzby0yMDIyLWpwJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBpc28tMjAyMi1qcCBkZWNvZGVyXG4gICAgLy8gc3RhdGUgKGluaXRpYWxseSBBU0NJSSksIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlXG4gICAgLy8gKGluaXRpYWxseSBBU0NJSSksIGlzby0yMDIyLWpwIGxlYWQgKGluaXRpYWxseSAweDAwKSwgYW5kXG4gICAgLy8gaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgKGluaXRpYWxseSB1bnNldCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5BU0NJSSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9kZWNvZGVyX291dHB1dF9zdGF0ZSA9IHN0YXRlcy5BU0NJSSxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGlzbzIwMjJqcF9sZWFkID0gMHgwMCxcbiAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLyBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvbiBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlOlxuICAgICAgc3dpdGNoIChpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSkge1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2Ugc3RhdGVzLkFTQ0lJOlxuICAgICAgICAvLyBBU0NJSVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgwMCB0byAweDdGLCBleGNsdWRpbmcgMHgwRSwgMHgwRiwgYW5kIDB4MUJcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikgJiYgYml0ZSAhPT0gMHgwRVxuICAgICAgICAgICAgJiYgYml0ZSAhPT0gMHgwRiAmJiBiaXRlICE9PSAweDFCKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLlJvbWFuOlxuICAgICAgICAvLyBSb21hblxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHg1Q1xuICAgICAgICBpZiAoYml0ZSA9PT0gMHg1Qykge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGNvZGUgcG9pbnRcbiAgICAgICAgICAvLyBVKzAwQTUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIDB4MDBBNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4N0VcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4N0UpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gVSsyMDNFLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAweDIwM0U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDAwIHRvIDB4N0YsIGV4Y2x1ZGluZyAweDBFLCAweDBGLCAweDFCLCAweDVDLCBhbmQgMHg3RVxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSAmJiBiaXRlICE9PSAweDBFICYmIGJpdGUgIT09IDB4MEZcbiAgICAgICAgICAgICYmIGJpdGUgIT09IDB4MUIgJiYgYml0ZSAhPT0gMHg1QyAmJiBiaXRlICE9PSAweDdFKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gYml0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLkthdGFrYW5hOlxuICAgICAgICAvLyBLYXRha2FuYVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDVGXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4NUYpKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgMHhGRjYxICsgYnl0ZSDiiJIgMHgyMS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4MjE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGZpbmlzaGVkLlxuICAgICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5MZWFkQnl0ZTpcbiAgICAgICAgLy8gTGVhZCBieXRlXG4gICAgICAgIC8vIEJhc2VkIG9uIGJ5dGU6XG5cbiAgICAgICAgLy8gMHgxQlxuICAgICAgICBpZiAoYml0ZSA9PT0gMHgxQikge1xuICAgICAgICAgIC8vIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSBzdGFydCBhbmQgcmV0dXJuXG4gICAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlU3RhcnQ7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDIxIHRvIDB4N0VcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgyMSwgMHg3RSkpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcCBsZWFkXG4gICAgICAgICAgLy8gdG8gYnl0ZSwgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byB0cmFpbCBieXRlLCBhbmRcbiAgICAgICAgICAvLyByZXR1cm4gY29udGludWUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgaXNvMjAyMmpwX2xlYWQgPSBiaXRlO1xuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLlRyYWlsQnl0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZmluaXNoZWQuXG4gICAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlXG4gICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgIGNhc2Ugc3RhdGVzLlRyYWlsQnl0ZTpcbiAgICAgICAgLy8gVHJhaWwgYnl0ZVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDdFXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4N0UpKSB7XG4gICAgICAgICAgLy8gMS4gU2V0IHRoZSBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGxlYWQgYnl0ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcblxuICAgICAgICAgIC8vIDIuIExldCBwb2ludGVyIGJlIChpc28tMjAyMi1qcCBsZWFkIOKIkiAweDIxKSDDlyA5NCArIGJ5dGUg4oiSIDB4MjEuXG4gICAgICAgICAgdmFyIHBvaW50ZXIgPSAoaXNvMjAyMmpwX2xlYWQgLSAweDIxKSAqIDk0ICsgYml0ZSAtIDB4MjE7XG5cbiAgICAgICAgICAvLyAzLiBMZXQgY29kZSBwb2ludCBiZSB0aGUgaW5kZXggY29kZSBwb2ludCBmb3IgcG9pbnRlciBpbiBpbmRleCBqaXMwMjA4LlxuICAgICAgICAgIHZhciBjb2RlX3BvaW50ID0gaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFNldCB0aGUgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUsIHByZXBlbmRcbiAgICAgICAgICAvLyBieXRlIHRvIHN0cmVhbSwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5MZWFkQnl0ZTtcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUgYW5kIHJldHVyblxuICAgICAgICAvLyBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Fc2NhcGVTdGFydDpcbiAgICAgICAgLy8gRXNjYXBlIHN0YXJ0XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlaXRoZXIgMHgyNCBvciAweDI4LCBzZXQgaXNvLTIwMjItanAgbGVhZCB0b1xuICAgICAgICAvLyBieXRlLCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIHRvIGVzY2FwZSwgYW5kIHJldHVyblxuICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MjQgfHwgYml0ZSA9PT0gMHgyOCkge1xuICAgICAgICAgIGlzbzIwMjJqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyAzLiBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcsIHNldCBpc28tMjAyMi1qcFxuICAgICAgICAvLyBkZWNvZGVyIHN0YXRlIHRvIGlzby0yMDIyLWpwIGRlY29kZXIgb3V0cHV0IHN0YXRlLCBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Fc2NhcGU6XG4gICAgICAgIC8vIEVzY2FwZVxuXG4gICAgICAgIC8vIDEuIExldCBsZWFkIGJlIGlzby0yMDIyLWpwIGxlYWQgYW5kIHNldCBpc28tMjAyMi1qcCBsZWFkIHRvXG4gICAgICAgIC8vIDB4MDAuXG4gICAgICAgIHZhciBsZWFkID0gaXNvMjAyMmpwX2xlYWQ7XG4gICAgICAgIGlzbzIwMjJqcF9sZWFkID0gMHgwMDtcblxuICAgICAgICAvLyAyLiBMZXQgc3RhdGUgYmUgbnVsbC5cbiAgICAgICAgdmFyIHN0YXRlID0gbnVsbDtcblxuICAgICAgICAvLyAzLiBJZiBsZWFkIGlzIDB4MjggYW5kIGJ5dGUgaXMgMHg0Miwgc2V0IHN0YXRlIHRvIEFTQ0lJLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyOCAmJiBiaXRlID09PSAweDQyKVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLkFTQ0lJO1xuXG4gICAgICAgIC8vIDQuIElmIGxlYWQgaXMgMHgyOCBhbmQgYnl0ZSBpcyAweDRBLCBzZXQgc3RhdGUgdG8gUm9tYW4uXG4gICAgICAgIGlmIChsZWFkID09PSAweDI4ICYmIGJpdGUgPT09IDB4NEEpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuUm9tYW47XG5cbiAgICAgICAgLy8gNS4gSWYgbGVhZCBpcyAweDI4IGFuZCBieXRlIGlzIDB4NDksIHNldCBzdGF0ZSB0byBLYXRha2FuYS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjggJiYgYml0ZSA9PT0gMHg0OSlcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5LYXRha2FuYTtcblxuICAgICAgICAvLyA2LiBJZiBsZWFkIGlzIDB4MjQgYW5kIGJ5dGUgaXMgZWl0aGVyIDB4NDAgb3IgMHg0Miwgc2V0XG4gICAgICAgIC8vIHN0YXRlIHRvIGxlYWQgYnl0ZS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjQgJiYgKGJpdGUgPT09IDB4NDAgfHwgYml0ZSA9PT0gMHg0MikpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG5cbiAgICAgICAgLy8gNy4gSWYgc3RhdGUgaXMgbm9uLW51bGwsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgICAgaWYgKHN0YXRlICE9PSBudWxsKSB7XG4gICAgICAgICAgLy8gMS4gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgYW5kIGlzby0yMDIyLWpwIGRlY29kZXJcbiAgICAgICAgICAvLyBvdXRwdXQgc3RhdGUgdG8gc3RhdGVzLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICAgIC8vIDIuIExldCBvdXRwdXQgZmxhZyBiZSB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcuXG4gICAgICAgICAgdmFyIG91dHB1dF9mbGFnID0gaXNvMjAyMmpwX291dHB1dF9mbGFnO1xuXG4gICAgICAgICAgLy8gMy4gU2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZy5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gNC4gUmV0dXJuIGNvbnRpbnVlLCBpZiBvdXRwdXQgZmxhZyBpcyB1bnNldCwgYW5kIGVycm9yXG4gICAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICAgIHJldHVybiAhb3V0cHV0X2ZsYWcgPyBudWxsIDogZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDguIFByZXBlbmQgbGVhZCBhbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKFtsZWFkLCBiaXRlXSk7XG5cbiAgICAgICAgLy8gOS4gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLCBzZXQgaXNvLTIwMjItanBcbiAgICAgICAgLy8gZGVjb2RlciBzdGF0ZSB0byBpc28tMjAyMi1qcCBkZWNvZGVyIG91dHB1dCBzdGF0ZSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGVycm9yLlxuICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGU7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIElTTzIwMjJKUEVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gaXNvLTIwMjItanAncyBlbmNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAvLyBzdGF0ZSB3aGljaCBpcyBvbmUgb2YgQVNDSUksIFJvbWFuLCBhbmQgamlzMDIwOCAoaW5pdGlhbGx5XG4gICAgLy8gQVNDSUkpLlxuICAgIC8qKiBAZW51bSAqL1xuICAgIHZhciBzdGF0ZXMgPSB7XG4gICAgICBBU0NJSTogMCxcbiAgICAgIFJvbWFuOiAxLFxuICAgICAgamlzMDIwODogMlxuICAgIH07XG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuQVNDSUk7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBpc28tMjAyMi1qcCBlbmNvZGVyXG4gICAgICAvLyBzdGF0ZSBpcyBub3QgQVNDSUksIHByZXBlbmQgY29kZSBwb2ludCB0byBzdHJlYW0sIHNldFxuICAgICAgLy8gaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBBU0NJSSwgYW5kIHJldHVybiB0aHJlZSBieXRlc1xuICAgICAgLy8gMHgxQiAweDI4IDB4NDIuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSAmJlxuICAgICAgICAgIGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLkFTQ0lJKSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0gYW5kIGlzby0yMDIyLWpwIGVuY29kZXJcbiAgICAgIC8vIHN0YXRlIGlzIEFTQ0lJLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSAmJiBpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5BU0NJSSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAzLiBJZiBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIEFTQ0lJIGFuZCBjb2RlIHBvaW50IGlzIGluXG4gICAgICAvLyB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlXG4gICAgICAvLyBwb2ludC5cbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5BU0NJSSAmJlxuICAgICAgICAgIGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gNC4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBSb21hbiBhbmQgY29kZSBwb2ludCBpcyBpblxuICAgICAgLy8gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIGV4Y2x1ZGluZyBVKzAwNUMgYW5kIFUrMDA3RSwgb3JcbiAgICAgIC8vIGlzIFUrMDBBNSBvciBVKzIwM0UsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgPT09IHN0YXRlcy5Sb21hbiAmJlxuICAgICAgICAgIGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpICYmXG4gICAgICAgICAgY29kZV9wb2ludCAhPT0gMHgwMDVDICYmIGNvZGVfcG9pbnQgIT09IDB4MDA3RSkge1xuXG4gICAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgwMEE1KVxuICAgICAgICAgIHJldHVybiAweDVDO1xuXG4gICAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDNFKVxuICAgICAgICAgIHJldHVybiAweDdFO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCBhbmRcbiAgICAgIC8vIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgbm90IEFTQ0lJLCBwcmVwZW5kIGNvZGUgcG9pbnQgdG9cbiAgICAgIC8vIHN0cmVhbSwgc2V0IGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gQVNDSUksIGFuZCByZXR1cm5cbiAgICAgIC8vIHRocmVlIGJ5dGVzIDB4MUIgMHgyOCAweDQyLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpICYmXG4gICAgICAgICAgaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuQVNDSUkpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5BU0NJSTtcbiAgICAgICAgcmV0dXJuIFsweDFCLCAweDI4LCAweDQyXTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBlaXRoZXIgVSswMEE1IG9yIFUrMjAzRSwgYW5kIGlzby0yMDIyLWpwXG4gICAgICAvLyBlbmNvZGVyIHN0YXRlIGlzIG5vdCBSb21hbiwgcHJlcGVuZCBjb2RlIHBvaW50IHRvIHN0cmVhbSwgc2V0XG4gICAgICAvLyBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIFJvbWFuLCBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzXG4gICAgICAvLyAweDFCIDB4MjggMHg0QS5cbiAgICAgIGlmICgoY29kZV9wb2ludCA9PT0gMHgwMEE1IHx8IGNvZGVfcG9pbnQgPT09IDB4MjAzRSkgJiZcbiAgICAgICAgICBpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5Sb21hbikge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLlJvbWFuO1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjgsIDB4NEFdO1xuICAgICAgfVxuXG4gICAgICAvLyA3LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAyMiwgc2V0IGl0IHRvIFUrRkYwRC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwMjIpXG4gICAgICAgIGNvZGVfcG9pbnQgPSAweEZGMEQ7XG5cbiAgICAgIC8vIDguIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBqaXMwMjA4LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2ppczAyMDgnKSk7XG5cbiAgICAgIC8vIDkuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyAxMC4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBub3QgamlzMDIwOCwgcHJlcGVuZCBjb2RlXG4gICAgICAvLyBwb2ludCB0byBzdHJlYW0sIHNldCBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIGppczAyMDgsXG4gICAgICAvLyBhbmQgcmV0dXJuIHRocmVlIGJ5dGVzIDB4MUIgMHgyNCAweDQyLlxuICAgICAgaWYgKGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLmppczAyMDgpIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5qaXMwMjA4O1xuICAgICAgICByZXR1cm4gWzB4MUIsIDB4MjQsIDB4NDJdO1xuICAgICAgfVxuXG4gICAgICAvLyAxMS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDk0ICsgMHgyMS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDk0KSArIDB4MjE7XG5cbiAgICAgIC8vIDEyLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDk0ICsgMHgyMS5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSA5NCArIDB4MjE7XG5cbiAgICAgIC8vIDEzLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snaXNvLTIwMjItanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IElTTzIwMjJKUEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2lzby0yMDIyLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBJU08yMDIySlBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEyLjMgc2hpZnRfamlzXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBTaGlmdEpJU0RlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gc2hpZnRfamlzJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBzaGlmdF9qaXMgbGVhZCAoaW5pdGlhbGx5XG4gICAgLy8gMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBzaGlmdGppc19sZWFkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgc2hpZnRfamlzIGxlYWQgaXMgbm90IDB4MDAsXG4gICAgICAvLyBzZXQgc2hpZnRfamlzIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgc2hpZnRqaXNfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICBzaGlmdGppc19sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgc2hpZnRfamlzIGxlYWQgaXMgMHgwMCxcbiAgICAgIC8vIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHNoaWZ0amlzX2xlYWQgPT09IDB4MDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgc2hpZnRfamlzIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIHNoaWZ0X2ppcyBsZWFkLFxuICAgICAgLy8gbGV0IHBvaW50ZXIgYmUgbnVsbCwgc2V0IHNoaWZ0X2ppcyBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1blxuICAgICAgLy8gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoc2hpZnRqaXNfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IHNoaWZ0amlzX2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgc2hpZnRqaXNfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IG9mZnNldCBiZSAweDQwLCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGLCBhbmQgMHg0MVxuICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSAoYml0ZSA8IDB4N0YpID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgICAgLy8gMi4gTGV0IGxlYWQgb2Zmc2V0IGJlIDB4ODEsIGlmIGxlYWQgaXMgbGVzcyB0aGFuIDB4QTAsIGFuZFxuICAgICAgICAvLyAweEMxIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGxlYWRfb2Zmc2V0ID0gKGxlYWQgPCAweEEwKSA/IDB4ODEgOiAweEMxO1xuXG4gICAgICAgIC8vIDMuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDAgdG8gMHg3RSBvciAweDgwIHRvIDB4RkMsXG4gICAgICAgIC8vIHNldCBwb2ludGVyIHRvIChsZWFkIOKIkiBsZWFkIG9mZnNldCkgw5cgMTg4ICsgYnl0ZSDiiJIgb2Zmc2V0LlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4ODAsIDB4RkMpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIGxlYWRfb2Zmc2V0KSAqIDE4OCArIGJpdGUgLSBvZmZzZXQ7XG5cbiAgICAgICAgLy8gNC4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCwgaWYgcG9pbnRlciBpcyBudWxsLCBhbmQgdGhlXG4gICAgICAgIC8vIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggamlzMDIwOCBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6XG4gICAgICAgICAgICAgIGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgcG9pbnRlciBpcyBpbiB0aGUgcmFuZ2UgODgzNlxuICAgICAgICAvLyB0byAxMDUyOCwgcmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyAweEUwMDAgK1xuICAgICAgICAvLyBwb2ludGVyIOKIkiA4ODM2LlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBwb2ludGVyICE9PSBudWxsICYmXG4gICAgICAgICAgICBpblJhbmdlKHBvaW50ZXIsIDg4MzYsIDEwNTI4KSlcbiAgICAgICAgICByZXR1cm4gMHhFMDAwICsgcG9pbnRlciAtIDg4MzY7XG5cbiAgICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNy4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDguIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg4MCwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4ODApKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHhBMSB0byAweERGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyAweEZGNjEgKyBieXRlIOKIkiAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhERikpXG4gICAgICAgIHJldHVybiAweEZGNjEgKyBiaXRlIC0gMHhBMTtcblxuICAgICAgLy8gNi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweDlGIG9yIDB4RTAgdG8gMHhGQywgc2V0XG4gICAgICAvLyBzaGlmdF9qaXMgbGVhZCB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweDlGKSB8fCBpblJhbmdlKGJpdGUsIDB4RTAsIDB4RkMpKSB7XG4gICAgICAgIHNoaWZ0amlzX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2hpZnRKSVNFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA4MCwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDgwKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MDBBNSlcbiAgICAgICAgcmV0dXJuIDB4NUM7XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAzRSlcbiAgICAgICAgcmV0dXJuIDB4N0U7XG5cbiAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrRkY2MSB0byBVK0ZGOUYsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQg4oiSIDB4RkY2MSArIDB4QTEuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweEZGNjEsIDB4RkY5RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50IC0gMHhGRjYxICsgMHhBMTtcblxuICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA3LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggc2hpZnRfamlzIHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4U2hpZnRKSVNQb2ludGVyRm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA4LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE4OC5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE4OCk7XG5cbiAgICAgIC8vIDEwLiBMZXQgbGVhZCBvZmZzZXQgYmUgMHg4MSwgaWYgbGVhZCBpcyBsZXNzIHRoYW4gMHgxRiwgYW5kXG4gICAgICAvLyAweEMxIG90aGVyd2lzZS5cbiAgICAgIHZhciBsZWFkX29mZnNldCA9IChsZWFkIDwgMHgxRikgPyAweDgxIDogMHhDMTtcblxuICAgICAgLy8gMTEuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTg4LlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDE4ODtcblxuICAgICAgLy8gMTIuIExldCBvZmZzZXQgYmUgMHg0MCwgaWYgdHJhaWwgaXMgbGVzcyB0aGFuIDB4M0YsIGFuZCAweDQxXG4gICAgICAvLyBvdGhlcndpc2UuXG4gICAgICB2YXIgb2Zmc2V0ID0gKHRyYWlsIDwgMHgzRikgPyAweDQwIDogMHg0MTtcblxuICAgICAgLy8gMTMuIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkICsgbGVhZCBvZmZzZXQgYW5kXG4gICAgICAvLyB0cmFpbCArIG9mZnNldC5cbiAgICAgIHJldHVybiBbbGVhZCArIGxlYWRfb2Zmc2V0LCB0cmFpbCArIG9mZnNldF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3NoaWZ0X2ppcyddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU2hpZnRKSVNFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydzaGlmdF9qaXMnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFNoaWZ0SklTRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvL1xuICAvLyAxMy4gTGVnYWN5IG11bHRpLWJ5dGUgS29yZWFuIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDEzLjEgZXVjLWtyXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNLUkRlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG5cbiAgICAvLyBldWMta3IncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGV1Yy1rciBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldWNrcl9sZWFkID0gMHgwMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWtyIGxlYWQgaXMgbm90IDB4MDAsIHNldFxuICAgICAgLy8gZXVjLWtyIGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgZXVja3JfbGVhZCAhPT0gMCkge1xuICAgICAgICBldWNrcl9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWtyIGxlYWQgaXMgMHgwMCwgcmV0dXJuXG4gICAgICAvLyBmaW5pc2hlZC5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2tyX2xlYWQgPT09IDApXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgZXVjLWtyIGxlYWQgaXMgbm90IDB4MDAsIGxldCBsZWFkIGJlIGV1Yy1rciBsZWFkLCBsZXRcbiAgICAgIC8vIHBvaW50ZXIgYmUgbnVsbCwgc2V0IGV1Yy1rciBsZWFkIHRvIDB4MDAsIGFuZCB0aGVuIHJ1biB0aGVzZVxuICAgICAgLy8gc3Vic3RlcHM6XG4gICAgICBpZiAoZXVja3JfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IGV1Y2tyX2xlYWQ7XG4gICAgICAgIHZhciBwb2ludGVyID0gbnVsbDtcbiAgICAgICAgZXVja3JfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MSB0byAweEZFLCBzZXQgcG9pbnRlciB0b1xuICAgICAgICAvLyAobGVhZCDiiJIgMHg4MSkgw5cgMTkwICsgKGJ5dGUg4oiSIDB4NDEpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQxLCAweEZFKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSAweDgxKSAqIDE5MCArIChiaXRlIC0gMHg0MSk7XG5cbiAgICAgICAgLy8gMi4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCwgaWYgcG9pbnRlciBpcyBudWxsLCBhbmQgdGhlXG4gICAgICAgIC8vIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggZXVjLWtyIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSAocG9pbnRlciA9PT0gbnVsbCkgPyBudWxsIDogaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2V1Yy1rcicpKTtcblxuICAgICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA1LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBldWMta3IgbGVhZCB0b1xuICAgICAgLy8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHhGRSkpIHtcbiAgICAgICAgZXVja3JfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBSZXR1cm4gZXJyb3IuXG4gICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBFVUNLUkVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGV1Yy1rci5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdldWMta3InKSk7XG5cbiAgICAgIC8vIDQuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZW5jb2RlckVycm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA1LiBMZXQgbGVhZCBiZSBwb2ludGVyIC8gMTkwICsgMHg4MS5cbiAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE5MCkgKyAweDgxO1xuXG4gICAgICAvLyA2LiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE5MCArIDB4NDEuXG4gICAgICB2YXIgdHJhaWwgPSAocG9pbnRlciAlIDE5MCkgKyAweDQxO1xuXG4gICAgICAvLyA3LiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwuXG4gICAgICByZXR1cm4gW2xlYWQsIHRyYWlsXTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZXVjLWtyJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBFVUNLUkVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ2V1Yy1rciddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDS1JEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG5cbiAgLy9cbiAgLy8gMTQuIExlZ2FjeSBtaXNjZWxsYW5lb3VzIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDE0LjEgcmVwbGFjZW1lbnRcblxuICAvLyBOb3QgbmVlZGVkIC0gQVBJIHRocm93cyBSYW5nZUVycm9yXG5cbiAgLy8gMTQuMiB1dGYtMTZcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfdW5pdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2YmVcbiAgICogQHJldHVybiB7IUFycmF5LjxudW1iZXI+fSBieXRlc1xuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3VuaXQsIHV0ZjE2YmUpIHtcbiAgICAvLyAxLiBMZXQgYnl0ZTEgYmUgY29kZSB1bml0ID4+IDguXG4gICAgdmFyIGJ5dGUxID0gY29kZV91bml0ID4+IDg7XG5cbiAgICAvLyAyLiBMZXQgYnl0ZTIgYmUgY29kZSB1bml0ICYgMHgwMEZGLlxuICAgIHZhciBieXRlMiA9IGNvZGVfdW5pdCAmIDB4MDBGRjtcblxuICAgIC8vIDMuIFRoZW4gcmV0dXJuIHRoZSBieXRlcyBpbiBvcmRlcjpcbiAgICAgICAgLy8gdXRmLTE2YmUgZmxhZyBpcyBzZXQ6IGJ5dGUxLCB0aGVuIGJ5dGUyLlxuICAgIGlmICh1dGYxNmJlKVxuICAgICAgcmV0dXJuIFtieXRlMSwgYnl0ZTJdO1xuICAgIC8vIHV0Zi0xNmJlIGZsYWcgaXMgdW5zZXQ6IGJ5dGUyLCB0aGVuIGJ5dGUxLlxuICAgIHJldHVybiBbYnl0ZTIsIGJ5dGUxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXRmMTZfYmUgVHJ1ZSBpZiBiaWctZW5kaWFuLCBmYWxzZSBpZiBsaXR0bGUtZW5kaWFuLlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFVURjE2RGVjb2Rlcih1dGYxNl9iZSwgb3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgdmFyIC8qKiBAdHlwZSB7P251bWJlcn0gKi8gdXRmMTZfbGVhZF9ieXRlID0gbnVsbCxcbiAgICAgICAgLyoqIEB0eXBlIHs/bnVtYmVyfSAqLyB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGVpdGhlciB1dGYtMTYgbGVhZCBieXRlIG9yXG4gICAgICAvLyB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgaXMgbm90IG51bGwsIHNldCB1dGYtMTYgbGVhZCBieXRlIGFuZFxuICAgICAgLy8gdXRmLTE2IGxlYWQgc3Vycm9nYXRlIHRvIG51bGwsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiAodXRmMTZfbGVhZF9ieXRlICE9PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlICE9PSBudWxsKSkge1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCB1dGYtMTYgbGVhZCBieXRlIGFuZCB1dGYtMTZcbiAgICAgIC8vIGxlYWQgc3Vycm9nYXRlIGFyZSBudWxsLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiB1dGYxNl9sZWFkX2J5dGUgPT09IG51bGwgJiZcbiAgICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDMuIElmIHV0Zi0xNiBsZWFkIGJ5dGUgaXMgbnVsbCwgc2V0IHV0Zi0xNiBsZWFkIGJ5dGUgdG8gYnl0ZVxuICAgICAgLy8gYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmICh1dGYxNl9sZWFkX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgdXRmMTZfbGVhZF9ieXRlID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIExldCBjb2RlIHVuaXQgYmUgdGhlIHJlc3VsdCBvZjpcbiAgICAgIHZhciBjb2RlX3VuaXQ7XG4gICAgICBpZiAodXRmMTZfYmUpIHtcbiAgICAgICAgLy8gdXRmLTE2YmUgZGVjb2RlciBmbGFnIGlzIHNldFxuICAgICAgICAvLyAgICh1dGYtMTYgbGVhZCBieXRlIDw8IDgpICsgYnl0ZS5cbiAgICAgICAgY29kZV91bml0ID0gKHV0ZjE2X2xlYWRfYnl0ZSA8PCA4KSArIGJpdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgaXMgdW5zZXRcbiAgICAgICAgLy8gICAoYnl0ZSA8PCA4KSArIHV0Zi0xNiBsZWFkIGJ5dGUuXG4gICAgICAgIGNvZGVfdW5pdCA9IChiaXRlIDw8IDgpICsgdXRmMTZfbGVhZF9ieXRlO1xuICAgICAgfVxuICAgICAgLy8gVGhlbiBzZXQgdXRmLTE2IGxlYWQgYnl0ZSB0byBudWxsLlxuICAgICAgdXRmMTZfbGVhZF9ieXRlID0gbnVsbDtcblxuICAgICAgLy8gNS4gSWYgdXRmLTE2IGxlYWQgc3Vycm9nYXRlIGlzIG5vdCBudWxsLCBsZXQgbGVhZCBzdXJyb2dhdGVcbiAgICAgIC8vIGJlIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSwgc2V0IHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSB0byBudWxsLFxuICAgICAgLy8gYW5kIHRoZW4gcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHV0ZjE2X2xlYWRfc3Vycm9nYXRlICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBsZWFkX3N1cnJvZ2F0ZSA9IHV0ZjE2X2xlYWRfc3Vycm9nYXRlO1xuICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gMS4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0RDMDAgdG8gVStERkZGLCByZXR1cm4gYVxuICAgICAgICAvLyBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIDB4MTAwMDAgKyAoKGxlYWQgc3Vycm9nYXRlIOKIklxuICAgICAgICAvLyAweEQ4MDApIDw8IDEwKSArIChjb2RlIHVuaXQg4oiSIDB4REMwMCkuXG4gICAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEQzAwLCAweERGRkYpKSB7XG4gICAgICAgICAgcmV0dXJuIDB4MTAwMDAgKyAobGVhZF9zdXJyb2dhdGUgLSAweEQ4MDApICogMHg0MDAgK1xuICAgICAgICAgICAgICAoY29kZV91bml0IC0gMHhEQzAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIFByZXBlbmQgdGhlIHNlcXVlbmNlIHJlc3VsdGluZyBvZiBjb252ZXJ0aW5nIGNvZGUgdW5pdFxuICAgICAgICAvLyB0byBieXRlcyB1c2luZyB1dGYtMTZiZSBkZWNvZGVyIGZsYWcgdG8gc3RyZWFtIGFuZCByZXR1cm5cbiAgICAgICAgLy8gZXJyb3IuXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoY29kZV91bml0LCB1dGYxNl9iZSkpO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0Q4MDAgdG8gVStEQkZGLCBzZXQgdXRmLTE2XG4gICAgICAvLyBsZWFkIHN1cnJvZ2F0ZSB0byBjb2RlIHVuaXQgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEODAwLCAweERCRkYpKSB7XG4gICAgICAgIHV0ZjE2X2xlYWRfc3Vycm9nYXRlID0gY29kZV91bml0O1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gSWYgY29kZSB1bml0IGlzIGluIHRoZSByYW5nZSBVK0RDMDAgdG8gVStERkZGLCByZXR1cm5cbiAgICAgIC8vIGVycm9yLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV91bml0LCAweERDMDAsIDB4REZGRikpXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAvLyA4LiBSZXR1cm4gY29kZSBwb2ludCBjb2RlIHVuaXQuXG4gICAgICByZXR1cm4gY29kZV91bml0O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2X2JlIFRydWUgaWYgYmlnLWVuZGlhbiwgZmFsc2UgaWYgbGl0dGxlLWVuZGlhbi5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBVVEYxNkVuY29kZXIodXRmMTZfYmUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrRkZGRiwgcmV0dXJuIHRoZVxuICAgICAgLy8gc2VxdWVuY2UgcmVzdWx0aW5nIG9mIGNvbnZlcnRpbmcgY29kZSBwb2ludCB0byBieXRlcyB1c2luZ1xuICAgICAgLy8gdXRmLTE2YmUgZW5jb2RlciBmbGFnLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweEZGRkYpKVxuICAgICAgICByZXR1cm4gY29udmVydENvZGVVbml0VG9CeXRlcyhjb2RlX3BvaW50LCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDMuIExldCBsZWFkIGJlICgoY29kZSBwb2ludCDiiJIgMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLFxuICAgICAgLy8gY29udmVydGVkIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIHZhciBsZWFkID0gY29udmVydENvZGVVbml0VG9CeXRlcyhcbiAgICAgICAgKChjb2RlX3BvaW50IC0gMHgxMDAwMCkgPj4gMTApICsgMHhEODAwLCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDQuIExldCB0cmFpbCBiZSAoKGNvZGUgcG9pbnQg4oiSIDB4MTAwMDApICYgMHgzRkYpICsgMHhEQzAwLFxuICAgICAgLy8gY29udmVydGVkIHRvIGJ5dGVzIHVzaW5nIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIHZhciB0cmFpbCA9IGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoXG4gICAgICAgICgoY29kZV9wb2ludCAtIDB4MTAwMDApICYgMHgzRkYpICsgMHhEQzAwLCB1dGYxNl9iZSk7XG5cbiAgICAgIC8vIDUuIFJldHVybiBhIGJ5dGUgc2VxdWVuY2Ugb2YgbGVhZCBmb2xsb3dlZCBieSB0cmFpbC5cbiAgICAgIHJldHVybiBsZWFkLmNvbmNhdCh0cmFpbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDE0LjMgdXRmLTE2YmVcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sndXRmLTE2YmUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RW5jb2Rlcih0cnVlLCBvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sndXRmLTE2YmUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RGVjb2Rlcih0cnVlLCBvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxNC40IHV0Zi0xNmxlXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3V0Zi0xNmxlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkVuY29kZXIoZmFsc2UsIG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd1dGYtMTZsZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZEZWNvZGVyKGZhbHNlLCBvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxNC41IHgtdXNlci1kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBYVXNlckRlZmluZWREZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDMuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgMHhGNzgwICsgYnl0ZSDiiJIgMHg4MC5cbiAgICAgIHJldHVybiAweEY3ODAgKyBiaXRlIC0gMHg4MDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBYVXNlckRlZmluZWRFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVStGNzgwIHRvIFUrRjdGRiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludCDiiJIgMHhGNzgwICsgMHg4MC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4Rjc4MCwgMHhGN0ZGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQgLSAweEY3ODAgKyAweDgwO1xuXG4gICAgICAvLyA0LiBSZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sneC11c2VyLWRlZmluZWQnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFhVc2VyRGVmaW5lZEVuY29kZXIob3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3gtdXNlci1kZWZpbmVkJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBYVXNlckRlZmluZWREZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIGlmICghZ2xvYmFsWydUZXh0RW5jb2RlciddKVxuICAgIGdsb2JhbFsnVGV4dEVuY29kZXInXSA9IFRleHRFbmNvZGVyO1xuICBpZiAoIWdsb2JhbFsnVGV4dERlY29kZXInXSlcbiAgICBnbG9iYWxbJ1RleHREZWNvZGVyJ10gPSBUZXh0RGVjb2Rlcjtcbn0odGhpcykpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5XUklURSA9IGV4cG9ydHMuUkVBRCA9IGV4cG9ydHMuRHJpdmVyID0gdW5kZWZpbmVkO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJyk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9nZXQyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldCcpO1xuXG52YXIgX2dldDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXQyKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9zZXNzaW9uID0gcmVxdWlyZSgnLi9zZXNzaW9uJyk7XG5cbnZhciBfc2Vzc2lvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXNzaW9uKTtcblxudmFyIF9wb29sID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9wb29sJyk7XG5cbnZhciBfcG9vbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb29sKTtcblxudmFyIF9jb25uZWN0b3IgPSByZXF1aXJlKCcuL2ludGVybmFsL2Nvbm5lY3RvcicpO1xuXG52YXIgX3N0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9zdHJlYW1PYnNlcnZlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuL2Vycm9yJyk7XG5cbnZhciBfY29ubmVjdGlvblByb3ZpZGVycyA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBSRUFEID0gJ1JFQUQnLFxuICAgIFdSSVRFID0gJ1dSSVRFJztcbi8qKlxuICogQSBkcml2ZXIgbWFpbnRhaW5zIG9uZSBvciBtb3JlIHtAbGluayBTZXNzaW9uIHNlc3Npb25zfSB3aXRoIGEgcmVtb3RlXG4gKiBOZW80aiBpbnN0YW5jZS4gVGhyb3VnaCB0aGUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHlvdSBjYW4gc2VuZCBzdGF0ZW1lbnRzXG4gKiBhbmQgcmV0cmlldmUgcmVzdWx0cyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBEcml2ZXJzIGFyZSByZWFzb25hYmx5IGV4cGVuc2l2ZSB0byBjcmVhdGUgLSB5b3Ugc2hvdWxkIHN0cml2ZSB0byBrZWVwIG9uZVxuICogZHJpdmVyIGluc3RhbmNlIGFyb3VuZCBwZXIgTmVvNGogSW5zdGFuY2UgeW91IGNvbm5lY3QgdG8uXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuXG52YXIgRHJpdmVyID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogWW91IHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkIHVzZSB7QGxpbmsgZHJpdmVyfS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJBZ2VudFxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIERyaXZlcih1cmwsIHVzZXJBZ2VudCkge1xuICAgIHZhciB0b2tlbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgRHJpdmVyKTtcblxuICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICB0aGlzLl91c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gICAgdGhpcy5fb3BlblNlc3Npb25zID0ge307XG4gICAgdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yID0gMDtcbiAgICB0aGlzLl90b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLl9wb29sID0gbmV3IF9wb29sMi5kZWZhdWx0KHRoaXMuX2NyZWF0ZUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgdGhpcy5fZGVzdHJveUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgRHJpdmVyLl92YWxpZGF0ZUNvbm5lY3Rpb24uYmluZCh0aGlzKSwgY29uZmlnLmNvbm5lY3Rpb25Qb29sU2l6ZSk7XG4gICAgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyID0gdGhpcy5fY3JlYXRlQ29ubmVjdGlvblByb3ZpZGVyKHVybCwgdGhpcy5fcG9vbCwgdGhpcy5fZHJpdmVyT25FcnJvckNhbGxiYWNrLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBjb25uZWN0aW9uIGluc3RhbmNlLlxuICAgKiBAcmV0dXJuIHtDb25uZWN0aW9ufSBuZXcgY29ubmVjdG9yLWFwaSBzZXNzaW9uIGluc3RhbmNlLCBhIGxvdyBsZXZlbCBzZXNzaW9uIEFQSS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoRHJpdmVyLCBbe1xuICAgIGtleTogJ19jcmVhdGVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NyZWF0ZUNvbm5lY3Rpb24odXJsLCByZWxlYXNlKSB7XG4gICAgICB2YXIgc2Vzc2lvbklkID0gdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yKys7XG4gICAgICB2YXIgY29ubiA9ICgwLCBfY29ubmVjdG9yLmNvbm5lY3QpKHVybCwgdGhpcy5fY29uZmlnKTtcbiAgICAgIHZhciBzdHJlYW1PYnNlcnZlciA9IG5ldyBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMsIGNvbm4pO1xuICAgICAgY29ubi5pbml0aWFsaXplKHRoaXMuX3VzZXJBZ2VudCwgdGhpcy5fdG9rZW4sIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgIGNvbm4uX2lkID0gc2Vzc2lvbklkO1xuICAgICAgY29ubi5fcmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlbGVhc2UodXJsLCBjb25uKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdID0gY29ubjtcbiAgICAgIHJldHVybiBjb25uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIHRoYXQgYSBjb25uZWN0aW9uIGlzIHVzYWJsZVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgb3BlblxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqKi9cblxuICB9LCB7XG4gICAga2V5OiAnX2Rlc3Ryb3lDb25uZWN0aW9uJyxcblxuXG4gICAgLyoqXG4gICAgICogRGlzcG9zZSBvZiBhIGxpdmUgc2Vzc2lvbiwgY2xvc2luZyBhbnkgYXNzb2NpYXRlZCByZXNvdXJjZXMuXG4gICAgICogQHJldHVybiB7U2Vzc2lvbn0gbmV3IHNlc3Npb24uXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZXN0cm95Q29ubmVjdGlvbihjb25uKSB7XG4gICAgICBkZWxldGUgdGhpcy5fb3BlblNlc3Npb25zW2Nvbm4uX2lkXTtcbiAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBY3F1aXJlIGEgc2Vzc2lvbiB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZS4gVGhlIGRyaXZlciBtYWludGFpbnNcbiAgICAgKiBhIHBvb2wgb2Ygc2Vzc2lvbnMsIHNvIGNhbGxpbmcgdGhpcyBtZXRob2QgaXMgbm9ybWFsbHkgY2hlYXAgYmVjYXVzZSB5b3VcbiAgICAgKiB3aWxsIGJlIHB1bGxpbmcgYSBzZXNzaW9uIG91dCBvZiB0aGUgY29tbW9uIHBvb2wuXG4gICAgICpcbiAgICAgKiBUaGlzIGNvbWVzIHdpdGggc29tZSByZXNwb25zaWJpbGl0eSAtIG1ha2Ugc3VyZSB5b3UgYWx3YXlzIGNhbGxcbiAgICAgKiB7QGxpbmsgU2Vzc2lvbiNjbG9zZSgpfSB3aGVuIHlvdSBhcmUgZG9uZSB1c2luZyBhIHNlc3Npb24sIGFuZCBsaWtld2lzZSxcbiAgICAgKiBtYWtlIHN1cmUgeW91IGRvbid0IGNsb3NlIHlvdXIgc2Vzc2lvbiBiZWZvcmUgeW91IGFyZSBkb25lIHVzaW5nIGl0LiBPbmNlXG4gICAgICogaXQgaXMgcmV0dXJuZWQgdG8gdGhlIHBvb2wsIHRoZSBzZXNzaW9uIHdpbGwgYmUgcmVzZXQgdG8gYSBjbGVhbiBzdGF0ZSBhbmRcbiAgICAgKiBtYWRlIGF2YWlsYWJsZSBmb3Igb3RoZXJzIHRvIHVzZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbW9kZT1XUklURV0gdGhlIGFjY2VzcyBtb2RlIG9mIHRoaXMgc2Vzc2lvbiwgYWxsb3dlZCB2YWx1ZXMgYXJlIHtAbGluayBSRUFEfSBhbmQge0BsaW5rIFdSSVRFfS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jvb2ttYXJrPW51bGxdIHRoZSBpbml0aWFsIHJlZmVyZW5jZSB0byBzb21lIHByZXZpb3VzIHRyYW5zYWN0aW9uLiBWYWx1ZSBpcyBvcHRpb25hbCBhbmRcbiAgICAgKiBhYnNlbmNlIGluZGljYXRlcyB0aGF0IHRoYXQgdGhlIGJvb2ttYXJrIGRvZXMgbm90IGV4aXN0IG9yIGlzIHVua25vd24uXG4gICAgICogQHJldHVybiB7U2Vzc2lvbn0gbmV3IHNlc3Npb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3Nlc3Npb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXNzaW9uKG1vZGUsIGJvb2ttYXJrKSB7XG4gICAgICB2YXIgc2Vzc2lvbk1vZGUgPSBEcml2ZXIuX3ZhbGlkYXRlU2Vzc2lvbk1vZGUobW9kZSk7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlU2Vzc2lvbihzZXNzaW9uTW9kZSwgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgdGhpcy5fY29uZmlnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfY3JlYXRlQ29ubmVjdGlvblByb3ZpZGVyJyxcblxuXG4gICAgLy9FeHRlbnNpb24gcG9pbnRcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gbmV3IF9jb25uZWN0aW9uUHJvdmlkZXJzLkRpcmVjdENvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvL0V4dGVuc2lvbiBwb2ludFxuXG4gIH0sIHtcbiAgICBrZXk6ICdfY3JlYXRlU2Vzc2lvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZykge1xuICAgICAgcmV0dXJuIG5ldyBfc2Vzc2lvbjIuZGVmYXVsdChtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19kcml2ZXJPbkVycm9yQ2FsbGJhY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZHJpdmVyT25FcnJvckNhbGxiYWNrKGVycm9yKSB7XG4gICAgICB2YXIgdXNlckRlZmluZWRPbkVycm9yQ2FsbGJhY2sgPSB0aGlzLm9uRXJyb3I7XG4gICAgICBpZiAodXNlckRlZmluZWRPbkVycm9yQ2FsbGJhY2sgJiYgZXJyb3IuY29kZSA9PT0gX2Vycm9yLlNFUlZJQ0VfVU5BVkFJTEFCTEUpIHtcbiAgICAgICAgdXNlckRlZmluZWRPbkVycm9yQ2FsbGJhY2soZXJyb3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB0ZWxsIHRoZSBkcml2ZXIgYWJvdXQgdGhpcyBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGFsbCBvcGVuIHNlc3Npb25zIGFuZCBvdGhlciBhc3NvY2lhdGVkIHJlc291cmNlcy4gWW91IHNob3VsZFxuICAgICAqIG1ha2Ugc3VyZSB0byB1c2UgdGhpcyB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgZHJpdmVyIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm4gdW5kZWZpbmVkXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICBmb3IgKHZhciBzZXNzaW9uSWQgaW4gdGhpcy5fb3BlblNlc3Npb25zKSB7XG4gICAgICAgIGlmICh0aGlzLl9vcGVuU2Vzc2lvbnMuaGFzT3duUHJvcGVydHkoc2Vzc2lvbklkKSkge1xuICAgICAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9vbC5wdXJnZUFsbCgpO1xuICAgICAgfVxuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiAnX3ZhbGlkYXRlQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF92YWxpZGF0ZUNvbm5lY3Rpb24oY29ubikge1xuICAgICAgcmV0dXJuIGNvbm4uaXNPcGVuKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3ZhbGlkYXRlU2Vzc2lvbk1vZGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdmFsaWRhdGVTZXNzaW9uTW9kZShyYXdNb2RlKSB7XG4gICAgICB2YXIgbW9kZSA9IHJhd01vZGUgfHwgV1JJVEU7XG4gICAgICBpZiAobW9kZSAhPT0gUkVBRCAmJiBtb2RlICE9PSBXUklURSkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnSWxsZWdhbCBzZXNzaW9uIG1vZGUgJyArIG1vZGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1vZGU7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEcml2ZXI7XG59KCk7XG5cbi8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgY29ubmVjdGlvbiBzdGF0ZSAqL1xuXG5cbnZhciBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyID0gZnVuY3Rpb24gKF9TdHJlYW1PYnNlcnZlcikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyLCBfU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gIGZ1bmN0aW9uIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIoZHJpdmVyLCBjb25uKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcik7XG5cbiAgICB2YXIgX3RoaXMgPSAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKSkuY2FsbCh0aGlzKSk7XG5cbiAgICBfdGhpcy5fZHJpdmVyID0gZHJpdmVyO1xuICAgIF90aGlzLl9jb25uID0gY29ubjtcbiAgICBfdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgKDAsIF9nZXQzLmRlZmF1bHQpKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZSksICdvbkVycm9yJywgdGhpcykuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgIGlmICh0aGlzLl9kcml2ZXIub25FcnJvcikge1xuICAgICAgICAgIHRoaXMuX2RyaXZlci5vbkVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ29uQ29tcGxldGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25Db21wbGV0ZWQobWVzc2FnZSkge1xuICAgICAgaWYgKHRoaXMuX2RyaXZlci5vbkNvbXBsZXRlZCkge1xuICAgICAgICB0aGlzLl9kcml2ZXIub25Db21wbGV0ZWQobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fY29ubiAmJiBtZXNzYWdlICYmIG1lc3NhZ2Uuc2VydmVyKSB7XG4gICAgICAgIHRoaXMuX2Nvbm4uc2V0U2VydmVyVmVyc2lvbihtZXNzYWdlLnNlcnZlcik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyO1xufShfc3RyZWFtT2JzZXJ2ZXIyLmRlZmF1bHQpO1xuXG5leHBvcnRzLkRyaXZlciA9IERyaXZlcjtcbmV4cG9ydHMuUkVBRCA9IFJFQUQ7XG5leHBvcnRzLldSSVRFID0gV1JJVEU7XG5leHBvcnRzLmRlZmF1bHQgPSBEcml2ZXI7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5QUk9UT0NPTF9FUlJPUiA9IGV4cG9ydHMuU0VTU0lPTl9FWFBJUkVEID0gZXhwb3J0cy5TRVJWSUNFX1VOQVZBSUxBQkxFID0gZXhwb3J0cy5OZW80akVycm9yID0gZXhwb3J0cy5uZXdFcnJvciA9IHVuZGVmaW5lZDtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQSBjb21tb24gcGxhY2UgZm9yIGNvbnN0cnVjdGluZyBlcnJvciBvYmplY3RzLCB0byBrZWVwIHRoZW1cbi8vIHVuaWZvcm0gYWNyb3NzIHRoZSBkcml2ZXIgc3VyZmFjZS5cblxudmFyIFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnU2VydmljZVVuYXZhaWxhYmxlJztcbnZhciBTRVNTSU9OX0VYUElSRUQgPSAnU2Vzc2lvbkV4cGlyZWQnO1xudmFyIFBST1RPQ09MX0VSUk9SID0gJ1Byb3RvY29sRXJyb3InO1xuXG5mdW5jdGlvbiBuZXdFcnJvcihtZXNzYWdlKSB7XG4gIHZhciBjb2RlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBcIk4vQVwiO1xuXG4gIC8vIFRPRE86IElkZWEgaXMgdGhhdCB3ZSBjYW4gY2hlY2sgdGhlIGNvZGUgaGVyZSBhbmQgdGhyb3cgc3ViLWNsYXNzZXNcbiAgLy8gb2YgTmVvNGpFcnJvciBhcyBhcHByb3ByaWF0ZVxuICByZXR1cm4gbmV3IE5lbzRqRXJyb3IobWVzc2FnZSwgY29kZSk7XG59XG5cbnZhciBOZW80akVycm9yID0gZnVuY3Rpb24gKF9FcnJvcikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShOZW80akVycm9yLCBfRXJyb3IpO1xuXG4gIGZ1bmN0aW9uIE5lbzRqRXJyb3IobWVzc2FnZSkge1xuICAgIHZhciBjb2RlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBcIk4vQVwiO1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIE5lbzRqRXJyb3IpO1xuXG4gICAgdmFyIF90aGlzID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoTmVvNGpFcnJvci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoTmVvNGpFcnJvcikpLmNhbGwodGhpcywgbWVzc2FnZSkpO1xuXG4gICAgX3RoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgX3RoaXMuY29kZSA9IGNvZGU7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIE5lbzRqRXJyb3I7XG59KEVycm9yKTtcblxuZXhwb3J0cy5uZXdFcnJvciA9IG5ld0Vycm9yO1xuZXhwb3J0cy5OZW80akVycm9yID0gTmVvNGpFcnJvcjtcbmV4cG9ydHMuU0VSVklDRV9VTkFWQUlMQUJMRSA9IFNFUlZJQ0VfVU5BVkFJTEFCTEU7XG5leHBvcnRzLlNFU1NJT05fRVhQSVJFRCA9IFNFU1NJT05fRVhQSVJFRDtcbmV4cG9ydHMuUFJPVE9DT0xfRVJST1IgPSBQUk9UT0NPTF9FUlJPUjsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuUGF0aFNlZ21lbnQgPSBleHBvcnRzLlBhdGggPSBleHBvcnRzLlVuYm91bmRSZWxhdGlvbnNoaXAgPSBleHBvcnRzLlJlbGF0aW9uc2hpcCA9IGV4cG9ydHMuTm9kZSA9IHVuZGVmaW5lZDtcblxudmFyIF9zdHJpbmdpZnkgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5XCIpO1xuXG52YXIgX3N0cmluZ2lmeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpbmdpZnkpO1xuXG52YXIgX2tleXMgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzXCIpO1xuXG52YXIgX2tleXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfa2V5cyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQ2xhc3MgZm9yIE5vZGUgVHlwZS5cbiAqL1xudmFyIE5vZGUgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge0FycmF5fSBsYWJlbHMgLSBBcnJheSBmb3IgYWxsIGxhYmVsc1xuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIG5vZGUgcHJvcGVydGllc1xuICAgKi9cbiAgZnVuY3Rpb24gTm9kZShpZGVudGl0eSwgbGFiZWxzLCBwcm9wZXJ0aWVzKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgTm9kZSk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKE5vZGUsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIihcIiArIHRoaXMuaWRlbnRpdHk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHMgKz0gXCI6XCIgKyB0aGlzLmxhYmVsc1tpXTtcbiAgICAgIH1cbiAgICAgIHZhciBrZXlzID0gKDAsIF9rZXlzMi5kZWZhdWx0KSh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGtleXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgaWYgKF9pID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbX2ldICsgXCI6XCIgKyAoMCwgX3N0cmluZ2lmeTIuZGVmYXVsdCkodGhpcy5wcm9wZXJ0aWVzW2tleXNbX2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCIpXCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE5vZGU7XG59KCk7XG5cbi8qKlxuICogQ2xhc3MgZm9yIFJlbGF0aW9uc2hpcCBUeXBlLlxuICovXG5cblxudmFyIFJlbGF0aW9uc2hpcCA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IGlkZW50aXR5IC0gVW5pcXVlIGlkZW50aXR5XG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gc3RhcnQgLSBJZGVudGl0eSBvZiBzdGFydCBOb2RlXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIE5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuICBmdW5jdGlvbiBSZWxhdGlvbnNoaXAoaWRlbnRpdHksIHN0YXJ0LCBlbmQsIHR5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBSZWxhdGlvbnNoaXApO1xuXG4gICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShSZWxhdGlvbnNoaXAsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIHMgPSBcIihcIiArIHRoaXMuc3RhcnQgKyBcIiktWzpcIiArIHRoaXMudHlwZTtcbiAgICAgIHZhciBrZXlzID0gKDAsIF9rZXlzMi5kZWZhdWx0KSh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgKDAsIF9zdHJpbmdpZnkyLmRlZmF1bHQpKHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCJdLT4oXCIgKyB0aGlzLmVuZCArIFwiKVwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSZWxhdGlvbnNoaXA7XG59KCk7XG5cbi8qKlxuICogQ2xhc3MgZm9yIFVuYm91bmRSZWxhdGlvbnNoaXAgVHlwZS5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cblxudmFyIFVuYm91bmRSZWxhdGlvbnNoaXAgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggcmVsYXRpb25zaGlwIHByb3BlcnRpZXNcbiAgICovXG4gIGZ1bmN0aW9uIFVuYm91bmRSZWxhdGlvbnNoaXAoaWRlbnRpdHksIHR5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBVbmJvdW5kUmVsYXRpb25zaGlwKTtcblxuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQmluZCByZWxhdGlvbnNoaXBcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBzdGFydCAtIElkZW50aXR5IG9mIHN0YXJ0IG5vZGVcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBlbmQgLSBJZGVudGl0eSBvZiBlbmQgbm9kZVxuICAgKiBAcmV0dXJuIHtSZWxhdGlvbnNoaXB9IC0gQ3JlYXRlZCByZWxhdGlvbnNoaXBcbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShVbmJvdW5kUmVsYXRpb25zaGlwLCBbe1xuICAgIGtleTogXCJiaW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJpbmQoc3RhcnQsIGVuZCkge1xuICAgICAgcmV0dXJuIG5ldyBSZWxhdGlvbnNoaXAodGhpcy5pZGVudGl0eSwgc3RhcnQsIGVuZCwgdGhpcy50eXBlLCB0aGlzLnByb3BlcnRpZXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHZhciBzID0gXCItWzpcIiArIHRoaXMudHlwZTtcbiAgICAgIHZhciBrZXlzID0gKDAsIF9rZXlzMi5kZWZhdWx0KSh0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzICs9IFwiIHtcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgKDAsIF9zdHJpbmdpZnkyLmRlZmF1bHQpKHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICAgIH1cbiAgICAgICAgcyArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCJdLT5cIjtcbiAgICAgIHJldHVybiBzO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVW5ib3VuZFJlbGF0aW9uc2hpcDtcbn0oKTtcblxuLyoqXG4gKiBDbGFzcyBmb3IgUGF0aFNlZ21lbnQgVHlwZS5cbiAqL1xuXG5cbnZhciBQYXRoU2VnbWVudCA9XG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtOb2RlfSBzdGFydCAtIHN0YXJ0IG5vZGVcbiAqIEBwYXJhbSB7UmVsYXRpb25zaGlwfSByZWwgLSByZWxhdGlvbnNoaXAgdGhhdCBjb25uZWN0cyBzdGFydCBhbmQgZW5kIG5vZGVcbiAqIEBwYXJhbSB7Tm9kZX0gZW5kIC0gZW5kIG5vZGVcbiAqL1xuZnVuY3Rpb24gUGF0aFNlZ21lbnQoc3RhcnQsIHJlbCwgZW5kKSB7XG4gICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFBhdGhTZWdtZW50KTtcblxuICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gIHRoaXMucmVsYXRpb25zaGlwID0gcmVsO1xuICB0aGlzLmVuZCA9IGVuZDtcbn07XG5cbi8qKlxuICogQ2xhc3MgZm9yIFBhdGggVHlwZS5cbiAqL1xuXG5cbnZhciBQYXRoID1cbi8qKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge05vZGV9IHN0YXJ0ICAtIHN0YXJ0IG5vZGVcbiAqIEBwYXJhbSB7Tm9kZX0gZW5kIC0gZW5kIG5vZGVcbiAqIEBwYXJhbSB7QXJyYXl9IHNlZ21lbnRzIC0gQXJyYXkgb2YgU2VnbWVudHNcbiAqL1xuZnVuY3Rpb24gUGF0aChzdGFydCwgZW5kLCBzZWdtZW50cykge1xuICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBQYXRoKTtcblxuICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gIHRoaXMuZW5kID0gZW5kO1xuICB0aGlzLnNlZ21lbnRzID0gc2VnbWVudHM7XG4gIHRoaXMubGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoO1xufTtcblxuZXhwb3J0cy5Ob2RlID0gTm9kZTtcbmV4cG9ydHMuUmVsYXRpb25zaGlwID0gUmVsYXRpb25zaGlwO1xuZXhwb3J0cy5VbmJvdW5kUmVsYXRpb25zaGlwID0gVW5ib3VuZFJlbGF0aW9uc2hpcDtcbmV4cG9ydHMuUGF0aCA9IFBhdGg7XG5leHBvcnRzLlBhdGhTZWdtZW50ID0gUGF0aFNlZ21lbnQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5lcnJvciA9IGV4cG9ydHMuc2Vzc2lvbiA9IGV4cG9ydHMudHlwZXMgPSBleHBvcnRzLmF1dGggPSBleHBvcnRzLk5lbzRqRXJyb3IgPSBleHBvcnRzLmludGVnZXIgPSBleHBvcnRzLmlzSW50ID0gZXhwb3J0cy5pbnQgPSBleHBvcnRzLmRyaXZlciA9IHVuZGVmaW5lZDtcblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZSgnLi9pbnRlZ2VyJyk7XG5cbnZhciBfZ3JhcGhUeXBlcyA9IHJlcXVpcmUoJy4vZ3JhcGgtdHlwZXMnKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vZXJyb3InKTtcblxudmFyIF9yZXN1bHQgPSByZXF1aXJlKCcuL3Jlc3VsdCcpO1xuXG52YXIgX3Jlc3VsdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZXN1bHQpO1xuXG52YXIgX3Jlc3VsdFN1bW1hcnkgPSByZXF1aXJlKCcuL3Jlc3VsdC1zdW1tYXJ5Jyk7XG5cbnZhciBfcmVzdWx0U3VtbWFyeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZXN1bHRTdW1tYXJ5KTtcblxudmFyIF9yZWNvcmQgPSByZXF1aXJlKCcuL3JlY29yZCcpO1xuXG52YXIgX3JlY29yZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWNvcmQpO1xuXG52YXIgX2RyaXZlciA9IHJlcXVpcmUoJy4vZHJpdmVyJyk7XG5cbnZhciBfcm91dGluZ0RyaXZlciA9IHJlcXVpcmUoJy4vcm91dGluZy1kcml2ZXInKTtcblxudmFyIF9yb3V0aW5nRHJpdmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JvdXRpbmdEcml2ZXIpO1xuXG52YXIgX3ZlcnNpb24gPSByZXF1aXJlKCcuLi92ZXJzaW9uJyk7XG5cbnZhciBfdmVyc2lvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJzaW9uKTtcblxudmFyIF9jb25uZWN0b3IgPSByZXF1aXJlKCcuL2ludGVybmFsL2Nvbm5lY3RvcicpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuL2ludGVybmFsL3V0aWwnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGF1dGggPSB7XG4gIGJhc2ljOiBmdW5jdGlvbiBiYXNpYyh1c2VybmFtZSwgcGFzc3dvcmQpIHtcbiAgICB2YXIgcmVhbG0gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChyZWFsbSkge1xuICAgICAgcmV0dXJuIHsgc2NoZW1lOiBcImJhc2ljXCIsIHByaW5jaXBhbDogdXNlcm5hbWUsIGNyZWRlbnRpYWxzOiBwYXNzd29yZCwgcmVhbG06IHJlYWxtIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IHNjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IHVzZXJuYW1lLCBjcmVkZW50aWFsczogcGFzc3dvcmQgfTtcbiAgICB9XG4gIH0sXG4gIGN1c3RvbTogZnVuY3Rpb24gY3VzdG9tKHByaW5jaXBhbCwgY3JlZGVudGlhbHMsIHJlYWxtLCBzY2hlbWUpIHtcbiAgICB2YXIgcGFyYW1ldGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHBhcmFtZXRlcnMpIHtcbiAgICAgIHJldHVybiB7IHNjaGVtZTogc2NoZW1lLCBwcmluY2lwYWw6IHByaW5jaXBhbCwgY3JlZGVudGlhbHM6IGNyZWRlbnRpYWxzLCByZWFsbTogcmVhbG0sXG4gICAgICAgIHBhcmFtZXRlcnM6IHBhcmFtZXRlcnMgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgc2NoZW1lOiBzY2hlbWUsIHByaW5jaXBhbDogcHJpbmNpcGFsLCBjcmVkZW50aWFsczogY3JlZGVudGlhbHMsIHJlYWxtOiByZWFsbSB9O1xuICAgIH1cbiAgfVxufTsgLyoqXG4gICAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgKlxuICAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gICAgKlxuICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICpcbiAgICAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICAqXG4gICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAgICovXG5cbnZhciBVU0VSX0FHRU5UID0gXCJuZW80ai1qYXZhc2NyaXB0L1wiICsgX3ZlcnNpb24yLmRlZmF1bHQ7XG5cbi8qKlxuICogQ29uc3RydWN0IGEgbmV3IE5lbzRqIERyaXZlci4gVGhpcyBpcyB5b3VyIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoaXNcbiAqIGxpYnJhcnkuXG4gKlxuICogIyMgQ29uZmlndXJhdGlvblxuICpcbiAqIFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gYXJndW1lbnQuIEF2YWlsYWJsZSBjb25maWd1cmF0aW9uXG4gKiBvcHRpb25zIGFyZSBhcyBmb2xsb3dzOlxuICpcbiAqICAgICB7XG4gKiAgICAgICAvLyBFbmNyeXB0aW9uIGxldmVsOiBFTkNSWVBUSU9OX09OIG9yIEVOQ1JZUFRJT05fT0ZGLlxuICogICAgICAgZW5jcnlwdGVkOiBFTkNSWVBUSU9OX09OfEVOQ1JZUFRJT05fT0ZGXG4gKlxuICogICAgICAgLy8gVHJ1c3Qgc3RyYXRlZ3kgdG8gdXNlIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4gVGhlcmUgaXMgbm8gbW9kZSB0byBkaXNhYmxlXG4gKiAgICAgICAvLyB0cnVzdCBvdGhlciB0aGFuIGRpc2FibGluZyBlbmNyeXB0aW9uIGFsdG9nZXRoZXIuIFRoZSByZWFzb24gZm9yXG4gKiAgICAgICAvLyB0aGlzIGlzIHRoYXQgaWYgeW91IGRvbid0IGtub3cgd2hvIHlvdSBhcmUgdGFsa2luZyB0bywgaXQgaXMgZWFzeSBmb3IgYW5cbiAqICAgICAgIC8vIGF0dGFja2VyIHRvIGhpamFjayB5b3VyIGVuY3J5cHRlZCBjb25uZWN0aW9uLCByZW5kZXJpbmcgZW5jcnlwdGlvbiBwb2ludGxlc3MuXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfQUxMX0NFUlRJRklDQVRFUyBpcyB0aGUgZGVmYXVsdCBjaG9pY2UgZm9yIE5vZGVKUyBkZXBsb3ltZW50cy4gSXQgb25seSByZXF1aXJlc1xuICogICAgICAgLy8gbmV3IGhvc3QgdG8gcHJvdmlkZSBhIGNlcnRpZmljYXRlIGFuZCBkb2VzIG5vIHZlcmlmaWNhdGlvbiBvZiB0aGUgcHJvdmlkZWQgY2VydGlmaWNhdGUuXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfT05fRklSU1RfVVNFIGlzIGF2YWlsYWJsZSBmb3IgbW9kZXJuIE5vZGVKUyBkZXBsb3ltZW50cywgYW5kIHdvcmtzXG4gKiAgICAgICAvLyBzaW1pbGFybHkgdG8gaG93IGBzc2xgIHdvcmtzIC0gdGhlIGZpcnN0IHRpbWUgd2UgY29ubmVjdCB0byBhIG5ldyBob3N0LFxuICogICAgICAgLy8gd2UgcmVtZW1iZXIgdGhlIGNlcnRpZmljYXRlIHRoZXkgdXNlLiBJZiB0aGUgY2VydGlmaWNhdGUgZXZlciBjaGFuZ2VzLCB3ZVxuICogICAgICAgLy8gYXNzdW1lIGl0IGlzIGFuIGF0dGVtcHQgdG8gaGlqYWNrIHRoZSBjb25uZWN0aW9uIGFuZCByZXF1aXJlIG1hbnVhbCBpbnRlcnZlbnRpb24uXG4gKiAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgYnkgZGVmYXVsdCwgY29ubmVjdGlvbnMgXCJqdXN0IHdvcmtcIiB3aGlsZSBzdGlsbCBnaXZpbmcgeW91XG4gKiAgICAgICAvLyBnb29kIGVuY3J5cHRlZCBwcm90ZWN0aW9uLlxuICogICAgICAgLy9cbiAqICAgICAgIC8vIFRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTIGlzIHRoZSBjbGFzc2ljIGFwcHJvYWNoIHRvIHRydXN0IHZlcmlmaWNhdGlvbiAtXG4gKiAgICAgICAvLyB3aGVuZXZlciB3ZSBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHdlIGVuc3VyZSB0aGUgaG9zdCBpcyB1c2luZ1xuICogICAgICAgLy8gYW4gZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSB0aGF0IGlzIGluLCBvciBpcyBzaWduZWQgYnksIGEgY2VydGlmaWNhdGUgbGlzdGVkXG4gKiAgICAgICAvLyBhcyB0cnVzdGVkLiBJbiB0aGUgd2ViIGJ1bmRsZSwgdGhpcyBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGlzIG1haW50YWluZWRcbiAqICAgICAgIC8vIGJ5IHRoZSB3ZWIgYnJvd3Nlci4gSW4gTm9kZUpTLCB5b3UgY29uZmlndXJlIHRoZSBsaXN0IHdpdGggdGhlIG5leHQgY29uZmlnIG9wdGlvbi5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9TWVNURU1fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBtZWFuZCB0aGF0IHlvdSB0cnVzdCB3aGF0ZXZlciBjZXJ0aWZpY2F0ZXNcbiAqICAgICAgIC8vIGFyZSBpbiB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBjaGFpbiBvZiB0aFxuICogICAgICAgdHJ1c3Q6IFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFU1wiIHwgXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiB8IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiIHxcbiAgKiAgICAgICBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIgfCBcIlRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gKlxuICogICAgICAgLy8gTGlzdCBvZiBvbmUgb3IgbW9yZSBwYXRocyB0byB0cnVzdGVkIGVuY3J5cHRpb24gY2VydGlmaWNhdGVzLiBUaGlzIG9ubHlcbiAqICAgICAgIC8vIHdvcmtzIGluIHRoZSBOb2RlSlMgYnVuZGxlLCBhbmQgb25seSBtYXR0ZXJzIGlmIHlvdSB1c2UgXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiLlxuICogICAgICAgLy8gVGhlIGNlcnRpZmljYXRlIGZpbGVzIHNob3VsZCBiZSBpbiByZWd1bGFyIFguNTA5IFBFTSBmb3JtYXQuXG4gKiAgICAgICAvLyBGb3IgaW5zdGFuY2UsIFsnLi90cnVzdGVkLnBlbSddXG4gKiAgICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXSxcbiAqXG4gKiAgICAgICAvLyBQYXRoIHRvIGEgZmlsZSB3aGVyZSB0aGUgZHJpdmVyIHNhdmVzIGhvc3RzIGl0IGhhcyBzZWVuIGluIHRoZSBwYXN0LCB0aGlzIGlzXG4gKiAgICAgICAvLyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHNzbCB0b29sJ3Mga25vd25faG9zdHMgZmlsZS4gRWFjaCB0aW1lIHdlIGNvbm5lY3QgdG8gYVxuICogICAgICAgLy8gbmV3IGhvc3QsIGEgaGFzaCBvZiB0aGVpciBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgZG9tYWluIG5hbWUgYW5kXG4gKiAgICAgICAvLyBwb3J0LCBhbmQgdGhpcyBpcyB0aGVuIHVzZWQgdG8gdmVyaWZ5IHRoZSBob3N0IGNlcnRpZmljYXRlIGRvZXMgbm90IGNoYW5nZS5cbiAqICAgICAgIC8vIFRoaXMgc2V0dGluZyBoYXMgbm8gZWZmZWN0IHVubGVzcyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgZW5hYmxlZC5cbiAqICAgICAgIGtub3duSG9zdHM6XCJ+Ly5uZW80ai9rbm93bl9ob3N0c1wiLFxuICpcbiAqICAgICAgIC8vIFRoZSBtYXggbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGFsbG93ZWQgaWRsZSBpbiB0aGUgcG9vbCBhdCBhbnkgdGltZS5cbiAqICAgICAgIC8vIENvbm5lY3Rpb24gd2lsbCBiZSBkZXN0cm95ZWQgaWYgdGhpcyB0aHJlc2hvbGQgaXMgZXhjZWVkZWQuXG4gKiAgICAgICBjb25uZWN0aW9uUG9vbFNpemU6IDUwLFxuICpcbiAqICAgICAgIC8vIFNwZWNpZnkgdGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdHJhbnNhY3Rpb25zIGFyZSBhbGxvd2VkIHRvIHJldHJ5IHZpYVxuICogICAgICAgLy8ge0BsaW5rIFNlc3Npb24jcmVhZFRyYW5zYWN0aW9uKCl9IGFuZCB7QGxpbmsgU2Vzc2lvbiN3cml0ZVRyYW5zYWN0aW9uKCl9IGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zXG4gKiAgICAgICAvLyB3aWxsIHJldHJ5IHRoZSBnaXZlbiB1bml0IG9mIHdvcmsgb24gYFNlcnZpY2VVbmF2YWlsYWJsZWAsIGBTZXNzaW9uRXhwaXJlZGAgYW5kIHRyYW5zaWVudCBlcnJvcnMgd2l0aFxuICogICAgICAgLy8gZXhwb25lbnRpYWwgYmFja29mZiB1c2luZyBpbml0aWFsIGRlbGF5IG9mIDEgc2Vjb25kLiBEZWZhdWx0IHZhbHVlIGlzIDMwMDAwIHdoaWNoIGlzIDMwIHNlY29uZHMuXG4gKiAgICAgICBtYXhUcmFuc2FjdGlvblJldHJ5VGltZTogMzAwMDAsXG4gKiAgICAgfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCBmb3IgdGhlIE5lbzRqIGRhdGFiYXNlLCBmb3IgaW5zdGFuY2UgXCJib2x0Oi8vbG9jYWxob3N0XCJcbiAqIEBwYXJhbSB7TWFwPFN0cmluZyxTdHJpbmc+fSBhdXRoVG9rZW4gQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIFNlZSB7QGxpbmsgYXV0aH0gZm9yIGhlbHBlcnMuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIENvbmZpZ3VyYXRpb24gb2JqZWN0LiBTZWUgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBhYm92ZSBmb3IgZGV0YWlscy5cbiAqIEByZXR1cm5zIHtEcml2ZXJ9XG4gKi9cbmZ1bmN0aW9uIGRyaXZlcih1cmwsIGF1dGhUb2tlbikge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcblxuICAoMCwgX3V0aWwuYXNzZXJ0U3RyaW5nKSh1cmwsICdCb2x0IFVSTCcpO1xuICB2YXIgc2NoZW1lID0gKDAsIF9jb25uZWN0b3IucGFyc2VTY2hlbWUpKHVybCk7XG4gIGlmIChzY2hlbWUgPT09IFwiYm9sdCtyb3V0aW5nOi8vXCIpIHtcbiAgICByZXR1cm4gbmV3IF9yb3V0aW5nRHJpdmVyMi5kZWZhdWx0KCgwLCBfY29ubmVjdG9yLnBhcnNlVXJsKSh1cmwpLCBVU0VSX0FHRU5ULCBhdXRoVG9rZW4sIGNvbmZpZyk7XG4gIH0gZWxzZSBpZiAoc2NoZW1lID09PSBcImJvbHQ6Ly9cIikge1xuICAgIHJldHVybiBuZXcgX2RyaXZlci5Ecml2ZXIoKDAsIF9jb25uZWN0b3IucGFyc2VVcmwpKHVybCksIFVTRVJfQUdFTlQsIGF1dGhUb2tlbiwgY29uZmlnKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHNjaGVtZTogXCIgKyBzY2hlbWUpO1xuICB9XG59XG5cbnZhciB0eXBlcyA9IHtcbiAgTm9kZTogX2dyYXBoVHlwZXMuTm9kZSxcbiAgUmVsYXRpb25zaGlwOiBfZ3JhcGhUeXBlcy5SZWxhdGlvbnNoaXAsXG4gIFVuYm91bmRSZWxhdGlvbnNoaXA6IF9ncmFwaFR5cGVzLlVuYm91bmRSZWxhdGlvbnNoaXAsXG4gIFBhdGhTZWdtZW50OiBfZ3JhcGhUeXBlcy5QYXRoU2VnbWVudCxcbiAgUGF0aDogX2dyYXBoVHlwZXMuUGF0aCxcbiAgUmVzdWx0OiBfcmVzdWx0Mi5kZWZhdWx0LFxuICBSZXN1bHRTdW1tYXJ5OiBfcmVzdWx0U3VtbWFyeTIuZGVmYXVsdCxcbiAgUmVjb3JkOiBfcmVjb3JkMi5kZWZhdWx0XG59O1xuXG52YXIgc2Vzc2lvbiA9IHtcbiAgUkVBRDogX2RyaXZlci5SRUFELFxuICBXUklURTogX2RyaXZlci5XUklURVxufTtcbnZhciBlcnJvciA9IHtcbiAgU0VSVklDRV9VTkFWQUlMQUJMRTogX2Vycm9yLlNFUlZJQ0VfVU5BVkFJTEFCTEUsXG4gIFNFU1NJT05fRVhQSVJFRDogX2Vycm9yLlNFU1NJT05fRVhQSVJFRCxcbiAgUFJPVE9DT0xfRVJST1I6IF9lcnJvci5QUk9UT0NPTF9FUlJPUlxufTtcbnZhciBpbnRlZ2VyID0ge1xuICB0b051bWJlcjogX2ludGVnZXIudG9OdW1iZXIsXG4gIHRvU3RyaW5nOiBfaW50ZWdlci50b1N0cmluZyxcbiAgaW5TYWZlUmFuZ2U6IF9pbnRlZ2VyLmluU2FmZVJhbmdlXG59O1xuXG52YXIgZm9yRXhwb3J0ID0ge1xuICBkcml2ZXI6IGRyaXZlcixcbiAgaW50OiBfaW50ZWdlci5pbnQsXG4gIGlzSW50OiBfaW50ZWdlci5pc0ludCxcbiAgaW50ZWdlcjogaW50ZWdlcixcbiAgTmVvNGpFcnJvcjogX2Vycm9yLk5lbzRqRXJyb3IsXG4gIGF1dGg6IGF1dGgsXG4gIHR5cGVzOiB0eXBlcyxcbiAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgZXJyb3I6IGVycm9yXG59O1xuXG5leHBvcnRzLmRyaXZlciA9IGRyaXZlcjtcbmV4cG9ydHMuaW50ID0gX2ludGVnZXIuaW50O1xuZXhwb3J0cy5pc0ludCA9IF9pbnRlZ2VyLmlzSW50O1xuZXhwb3J0cy5pbnRlZ2VyID0gaW50ZWdlcjtcbmV4cG9ydHMuTmVvNGpFcnJvciA9IF9lcnJvci5OZW80akVycm9yO1xuZXhwb3J0cy5hdXRoID0gYXV0aDtcbmV4cG9ydHMudHlwZXMgPSB0eXBlcztcbmV4cG9ydHMuc2Vzc2lvbiA9IHNlc3Npb247XG5leHBvcnRzLmVycm9yID0gZXJyb3I7XG5leHBvcnRzLmRlZmF1bHQgPSBmb3JFeHBvcnQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy50b1N0cmluZyA9IGV4cG9ydHMudG9OdW1iZXIgPSBleHBvcnRzLmluU2FmZVJhbmdlID0gZXhwb3J0cy5pc0ludCA9IGV4cG9ydHMuaW50ID0gdW5kZWZpbmVkO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vZXJyb3InKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciwgZ2l2ZW4gaXRzIGxvdyBhbmQgaGlnaCAzMiBiaXQgdmFsdWVzIGFzICpzaWduZWQqIGludGVnZXJzLlxuICogIFNlZSB0aGUgZnJvbSogZnVuY3Rpb25zIGJlbG93IGZvciBtb3JlIGNvbnZlbmllbnQgd2F5cyBvZiBjb25zdHJ1Y3RpbmcgSW50ZWdlcnMuXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQGV4cG9ydHMgSW50ZWdlclxuICogQGNsYXNzIEEgSW50ZWdlciBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciB2YWx1ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3cgVGhlIGxvdyAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaCBUaGUgaGlnaCAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBvciBtYWRlIGludGVybmFsIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlIGRyaXZlci5cbiAqL1xudmFyIEludGVnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEludGVnZXIobG93LCBoaWdoKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgSW50ZWdlcik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5sb3cgPSBsb3cgfCAwO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB0aGlzLmhpZ2ggPSBoaWdoIHwgMDtcbiAgfVxuXG4gIC8vIFRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhbiBJbnRlZ2VyIGlzIHRoZSB0d28gZ2l2ZW4gc2lnbmVkLCAzMi1iaXQgdmFsdWVzLlxuICAvLyBXZSB1c2UgMzItYml0IHBpZWNlcyBiZWNhdXNlIHRoZXNlIGFyZSB0aGUgc2l6ZSBvZiBpbnRlZ2VycyBvbiB3aGljaFxuICAvLyBKYXZhc2NyaXB0IHBlcmZvcm1zIGJpdC1vcGVyYXRpb25zLiAgRm9yIG9wZXJhdGlvbnMgbGlrZSBhZGRpdGlvbiBhbmRcbiAgLy8gbXVsdGlwbGljYXRpb24sIHdlIHNwbGl0IGVhY2ggbnVtYmVyIGludG8gMTYgYml0IHBpZWNlcywgd2hpY2ggY2FuIGVhc2lseSBiZVxuICAvLyBtdWx0aXBsaWVkIHdpdGhpbiBKYXZhc2NyaXB0J3MgZmxvYXRpbmctcG9pbnQgcmVwcmVzZW50YXRpb24gd2l0aG91dCBvdmVyZmxvd1xuICAvLyBvciBjaGFuZ2UgaW4gc2lnbi5cbiAgLy9cbiAgLy8gSW4gdGhlIGFsZ29yaXRobXMgYmVsb3csIHdlIGZyZXF1ZW50bHkgcmVkdWNlIHRoZSBuZWdhdGl2ZSBjYXNlIHRvIHRoZVxuICAvLyBwb3NpdGl2ZSBjYXNlIGJ5IG5lZ2F0aW5nIHRoZSBpbnB1dChzKSBhbmQgdGhlbiBwb3N0LXByb2Nlc3NpbmcgdGhlIHJlc3VsdC5cbiAgLy8gTm90ZSB0aGF0IHdlIG11c3QgQUxXQVlTIGNoZWNrIHNwZWNpYWxseSB3aGV0aGVyIHRob3NlIHZhbHVlcyBhcmUgTUlOX1ZBTFVFXG4gIC8vICgtMl42MykgYmVjYXVzZSAtTUlOX1ZBTFVFID09IE1JTl9WQUxVRSAoc2luY2UgMl42MyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXNcbiAgLy8gYSBwb3NpdGl2ZSBudW1iZXIsIGl0IG92ZXJmbG93cyBiYWNrIGludG8gYSBuZWdhdGl2ZSkuICBOb3QgaGFuZGxpbmcgdGhpc1xuICAvLyBjYXNlIHdvdWxkIG9mdGVuIHJlc3VsdCBpbiBpbmZpbml0ZSByZWN1cnNpb24uXG4gIC8vXG4gIC8vIENvbW1vbiBjb25zdGFudCB2YWx1ZXMgWkVSTywgT05FLCBORUdfT05FLCBldGMuIGFyZSBkZWZpbmVkIGJlbG93IHRoZSBmcm9tKlxuICAvLyBtZXRob2RzIG9uIHdoaWNoIHRoZXkgZGVwZW5kLlxuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoSW50ZWdlciwgW3tcbiAgICBrZXk6ICdpblNhZmVSYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluU2FmZVJhbmdlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JlYXRlclRoYW5PckVxdWFsKEludGVnZXIuTUlOX1NBRkVfVkFMVUUpICYmIHRoaXMubGVzc1RoYW5PckVxdWFsKEludGVnZXIuTUFYX1NBRkVfVkFMVUUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhbiBleGFjdCBqYXZhc2NyaXB0IE51bWJlciwgYXNzdW1pbmcgaXQgaXMgYSAzMiBiaXQgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAndG9JbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0ludCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvdztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0b051bWJlcicsXG5cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGEgdGhlIG5lYXJlc3QgZmxvYXRpbmctcG9pbnQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB2YWx1ZSAoZG91YmxlLCA1MyBiaXQgbWFudGlzc2EpLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiB0b051bWJlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggKiBUV09fUFdSXzMyX0RCTCArICh0aGlzLmxvdyA+Pj4gMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYSBzdHJpbmcgd3JpdHRlbiBpbiB0aGUgc3BlY2lmaWVkIHJhZGl4LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gcmFkaXggUmFkaXggKDItMzYpLCBkZWZhdWx0cyB0byAxMFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYHJhZGl4YCBpcyBvdXQgb2YgcmFuZ2VcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3RvU3RyaW5nJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcocmFkaXgpIHtcbiAgICAgIHJhZGl4ID0gcmFkaXggfHwgMTA7XG4gICAgICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpIHRocm93IFJhbmdlRXJyb3IoJ3JhZGl4IG91dCBvZiByYW5nZTogJyArIHJhZGl4KTtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gJzAnO1xuICAgICAgdmFyIHJlbTtcbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGFuZ2UgdGhlIEludGVnZXIgdmFsdWUgYmVmb3JlIGl0IGNhbiBiZSBuZWdhdGVkLCBzbyB3ZSByZW1vdmVcbiAgICAgICAgICAvLyB0aGUgYm90dG9tLW1vc3QgZGlnaXQgaW4gdGhpcyBiYXNlIGFuZCB0aGVuIHJlY3Vyc2UgdG8gZG8gdGhlIHJlc3QuXG4gICAgICAgICAgdmFyIHJhZGl4SW50ZWdlciA9IEludGVnZXIuZnJvbU51bWJlcihyYWRpeCk7XG4gICAgICAgICAgdmFyIGRpdiA9IHRoaXMuZGl2KHJhZGl4SW50ZWdlcik7XG4gICAgICAgICAgcmVtID0gZGl2Lm11bHRpcGx5KHJhZGl4SW50ZWdlcikuc3VidHJhY3QodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkgKyByZW0udG9JbnQoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gJy0nICsgdGhpcy5uZWdhdGUoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICB9XG5cbiAgICAgIC8vIERvIHNldmVyYWwgKDYpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgICAgIC8vIG1pbmltaXplIHRoZSBjYWxscyB0byB0aGUgdmVyeSBleHBlbnNpdmUgZW11bGF0ZWQgZGl2LlxuICAgICAgdmFyIHJhZGl4VG9Qb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgNikpO1xuICAgICAgcmVtID0gdGhpcztcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZW1EaXYgPSByZW0uZGl2KHJhZGl4VG9Qb3dlciksXG4gICAgICAgICAgICBpbnR2YWwgPSByZW0uc3VidHJhY3QocmVtRGl2Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcikpLnRvSW50KCkgPj4+IDAsXG4gICAgICAgICAgICBkaWdpdHMgPSBpbnR2YWwudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICByZW0gPSByZW1EaXY7XG4gICAgICAgIGlmIChyZW0uaXNaZXJvKCkpIHJldHVybiBkaWdpdHMgKyByZXN1bHQ7ZWxzZSB7XG4gICAgICAgICAgd2hpbGUgKGRpZ2l0cy5sZW5ndGggPCA2KSB7XG4gICAgICAgICAgICBkaWdpdHMgPSAnMCcgKyBkaWdpdHM7XG4gICAgICAgICAgfXJlc3VsdCA9ICcnICsgZGlnaXRzICsgcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGlnaCAzMiBiaXRzIGFzIGEgc2lnbmVkIGludGVnZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gU2lnbmVkIGhpZ2ggYml0c1xuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnZ2V0SGlnaEJpdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRIaWdoQml0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2g7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBTaWduZWQgbG93IGJpdHNcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2dldExvd0JpdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMb3dCaXRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMubG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgSW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnZ2V0TnVtQml0c0FicycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE51bUJpdHNBYnMoKSB7XG4gICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkgPyA2NCA6IHRoaXMubmVnYXRlKCkuZ2V0TnVtQml0c0FicygpO1xuICAgICAgdmFyIHZhbCA9IHRoaXMuaGlnaCAhPSAwID8gdGhpcy5oaWdoIDogdGhpcy5sb3c7XG4gICAgICBmb3IgKHZhciBiaXQgPSAzMTsgYml0ID4gMDsgYml0LS0pIHtcbiAgICAgICAgaWYgKCh2YWwgJiAxIDw8IGJpdCkgIT0gMCkgYnJlYWs7XG4gICAgICB9cmV0dXJuIHRoaXMuaGlnaCAhPSAwID8gYml0ICsgMzMgOiBiaXQgKyAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGVxdWFscyB6ZXJvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNaZXJvJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNaZXJvKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA9PT0gMCAmJiB0aGlzLmxvdyA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBuZWdhdGl2ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2lzTmVnYXRpdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc05lZ2F0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlnaCA8IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgcG9zaXRpdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpc1Bvc2l0aXZlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNQb3NpdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBvZGQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpc09kZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzT2RkKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGV2ZW4uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpc0V2ZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0V2ZW4oKSB7XG4gICAgICByZXR1cm4gKHRoaXMubG93ICYgMSkgPT09IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZXF1YWxzJyxcblxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZXF1YWxzIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiBlcXVhbHMob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggPT09IG90aGVyLmhpZ2ggJiYgdGhpcy5sb3cgPT09IG90aGVyLmxvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ25vdEVxdWFscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5vdEVxdWFscyhvdGhlcikge1xuICAgICAgIXRoaXMuZXF1YWxzKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdsZXNzVGhhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxlc3NUaGFuKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPCAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbGVzc1RoYW5PckVxdWFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGVzc1RoYW5PckVxdWFsKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPD0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2dyZWF0ZXJUaGFuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ3JlYXRlclRoYW4ob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBncmVhdGVyVGhhbk9yRXF1YWwob3RoZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoIC8qIHZhbGlkYXRlcyAqL290aGVyKSA+PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBhcmVzIHRoaXMgSW50ZWdlcidzIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSAwIGlmIHRoZXkgYXJlIHRoZSBzYW1lLCAxIGlmIHRoZSB0aGlzIGlzIGdyZWF0ZXIgYW5kIC0xXG4gICAgICogIGlmIHRoZSBnaXZlbiBvbmUgaXMgZ3JlYXRlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY29tcGFyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBhcmUob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIGlmICh0aGlzLmVxdWFscyhvdGhlcikpIHJldHVybiAwO1xuICAgICAgdmFyIHRoaXNOZWcgPSB0aGlzLmlzTmVnYXRpdmUoKSxcbiAgICAgICAgICBvdGhlck5lZyA9IG90aGVyLmlzTmVnYXRpdmUoKTtcbiAgICAgIGlmICh0aGlzTmVnICYmICFvdGhlck5lZykgcmV0dXJuIC0xO1xuICAgICAgaWYgKCF0aGlzTmVnICYmIG90aGVyTmVnKSByZXR1cm4gMTtcbiAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHNpZ24gYml0cyBhcmUgdGhlIHNhbWVcbiAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG90aGVyKS5pc05lZ2F0aXZlKCkgPyAtMSA6IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmVnYXRlcyB0aGlzIEludGVnZXIncyB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IE5lZ2F0ZWQgSW50ZWdlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbmVnYXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbmVnYXRlKCkge1xuICAgICAgaWYgKHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICAgICAgcmV0dXJuIHRoaXMubm90KCkuYWRkKEludGVnZXIuT05FKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gYWRkZW5kIEFkZGVuZFxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gU3VtXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdhZGQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGQoYWRkZW5kKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGFkZGVuZCkpIGFkZGVuZCA9IEludGVnZXIuZnJvbVZhbHVlKGFkZGVuZCk7XG5cbiAgICAgIC8vIERpdmlkZSBlYWNoIG51bWJlciBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIHN1bSB0aGUgY2h1bmtzLlxuXG4gICAgICB2YXIgYTQ4ID0gdGhpcy5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBhMzIgPSB0aGlzLmhpZ2ggJiAweEZGRkY7XG4gICAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGEwMCA9IHRoaXMubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYjQ4ID0gYWRkZW5kLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGIzMiA9IGFkZGVuZC5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGIxNiA9IGFkZGVuZC5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGIwMCA9IGFkZGVuZC5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBjNDggPSAwLFxuICAgICAgICAgIGMzMiA9IDAsXG4gICAgICAgICAgYzE2ID0gMCxcbiAgICAgICAgICBjMDAgPSAwO1xuICAgICAgYzAwICs9IGEwMCArIGIwMDtcbiAgICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgICAgYzAwICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMTYgKyBiMTY7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTMyICsgYjMyO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzQ4ICs9IGE0OCArIGI0ODtcbiAgICAgIGM0OCAmPSAweEZGRkY7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyhjMTYgPDwgMTYgfCBjMDAsIGM0OCA8PCAxNiB8IGMzMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBzdWJ0cmFoZW5kIFN1YnRyYWhlbmRcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IERpZmZlcmVuY2VcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3N1YnRyYWN0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3VidHJhY3Qoc3VidHJhaGVuZCkge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihzdWJ0cmFoZW5kKSkgc3VidHJhaGVuZCA9IEludGVnZXIuZnJvbVZhbHVlKHN1YnRyYWhlbmQpO1xuICAgICAgcmV0dXJuIHRoaXMuYWRkKHN1YnRyYWhlbmQubmVnYXRlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHByb2R1Y3Qgb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gbXVsdGlwbGllciBNdWx0aXBsaWVyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBQcm9kdWN0XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdtdWx0aXBseScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG11bHRpcGx5KG11bHRpcGxpZXIpIHtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihtdWx0aXBsaWVyKSkgbXVsdGlwbGllciA9IEludGVnZXIuZnJvbVZhbHVlKG11bHRpcGxpZXIpO1xuICAgICAgaWYgKG11bHRpcGxpZXIuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gbXVsdGlwbGllci5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAobXVsdGlwbGllci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gdGhpcy5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG5cbiAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgICBpZiAobXVsdGlwbGllci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpO2Vsc2UgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllcikubmVnYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKG11bHRpcGxpZXIuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgICAgLy8gSWYgYm90aCBsb25ncyBhcmUgc21hbGwsIHVzZSBmbG9hdCBtdWx0aXBsaWNhdGlvblxuICAgICAgaWYgKHRoaXMubGVzc1RoYW4oVFdPX1BXUl8yNCkgJiYgbXVsdGlwbGllci5sZXNzVGhhbihUV09fUFdSXzI0KSkgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkgKiBtdWx0aXBsaWVyLnRvTnVtYmVyKCkpO1xuXG4gICAgICAvLyBEaXZpZGUgZWFjaCBsb25nIGludG8gNCBjaHVua3Mgb2YgMTYgYml0cywgYW5kIHRoZW4gYWRkIHVwIDR4NCBwcm9kdWN0cy5cbiAgICAgIC8vIFdlIGNhbiBza2lwIHByb2R1Y3RzIHRoYXQgd291bGQgb3ZlcmZsb3cuXG5cbiAgICAgIHZhciBhNDggPSB0aGlzLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGEzMiA9IHRoaXMuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBhMTYgPSB0aGlzLmxvdyA+Pj4gMTY7XG4gICAgICB2YXIgYTAwID0gdGhpcy5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBiNDggPSBtdWx0aXBsaWVyLmhpZ2ggPj4+IDE2O1xuICAgICAgdmFyIGIzMiA9IG11bHRpcGxpZXIuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBiMTYgPSBtdWx0aXBsaWVyLmxvdyA+Pj4gMTY7XG4gICAgICB2YXIgYjAwID0gbXVsdGlwbGllci5sb3cgJiAweEZGRkY7XG5cbiAgICAgIHZhciBjNDggPSAwLFxuICAgICAgICAgIGMzMiA9IDAsXG4gICAgICAgICAgYzE2ID0gMCxcbiAgICAgICAgICBjMDAgPSAwO1xuICAgICAgYzAwICs9IGEwMCAqIGIwMDtcbiAgICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgICAgYzAwICY9IDB4RkZGRjtcbiAgICAgIGMxNiArPSBhMTYgKiBiMDA7XG4gICAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICAgIGMxNiAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTAwICogYjE2O1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEzMiAqIGIwMDtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGMzMiArPSBhMTYgKiBiMTY7XG4gICAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICAgIGMzMiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTAwICogYjMyO1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzQ4ICs9IGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAqIGI0ODtcbiAgICAgIGM0OCAmPSAweEZGRkY7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyhjMTYgPDwgMTYgfCBjMDAsIGM0OCA8PCAxNiB8IGMzMik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGl2JyxcblxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgZGl2aWRlZCBieSB0aGUgc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBRdW90aWVudFxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gZGl2KGRpdmlzb3IpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoZGl2aXNvcikpIGRpdmlzb3IgPSBJbnRlZ2VyLmZyb21WYWx1ZShkaXZpc29yKTtcbiAgICAgIGlmIChkaXZpc29yLmlzWmVybygpKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnZGl2aXNpb24gYnkgemVybycpO1xuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICB2YXIgYXBwcm94LCByZW0sIHJlcztcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgICAgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuT05FKSB8fCBkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk5FR19PTkUpKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7IC8vIHJlY2FsbCB0aGF0IC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFXG4gICAgICAgIGVsc2UgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIEludGVnZXIuT05FO2Vsc2Uge1xuICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB8b3RoZXJ8ID49IDIsIHNvIHx0aGlzL290aGVyfCA8IHxNSU5fVkFMVUV8LlxuICAgICAgICAgICAgdmFyIGhhbGZUaGlzID0gdGhpcy5zaGlmdFJpZ2h0KDEpO1xuICAgICAgICAgICAgYXBwcm94ID0gaGFsZlRoaXMuZGl2KGRpdmlzb3IpLnNoaWZ0TGVmdCgxKTtcbiAgICAgICAgICAgIGlmIChhcHByb3guZXF1YWxzKEludGVnZXIuWkVSTykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRpdmlzb3IuaXNOZWdhdGl2ZSgpID8gSW50ZWdlci5PTkUgOiBJbnRlZ2VyLk5FR19PTkU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZW0gPSB0aGlzLnN1YnRyYWN0KGRpdmlzb3IubXVsdGlwbHkoYXBwcm94KSk7XG4gICAgICAgICAgICAgIHJlcyA9IGFwcHJveC5hZGQocmVtLmRpdihkaXZpc29yKSk7XG4gICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXYoZGl2aXNvci5uZWdhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihkaXZpc29yKS5uZWdhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZGl2aXNvci5pc05lZ2F0aXZlKCkpIHJldHVybiB0aGlzLmRpdihkaXZpc29yLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgICAgLy8gUmVwZWF0IHRoZSBmb2xsb3dpbmcgdW50aWwgdGhlIHJlbWFpbmRlciBpcyBsZXNzIHRoYW4gb3RoZXI6ICBmaW5kIGFcbiAgICAgIC8vIGZsb2F0aW5nLXBvaW50IHRoYXQgYXBwcm94aW1hdGVzIHJlbWFpbmRlciAvIG90aGVyICpmcm9tIGJlbG93KiwgYWRkIHRoaXNcbiAgICAgIC8vIGludG8gdGhlIHJlc3VsdCwgYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHJlbWFpbmRlci4gIEl0IGlzIGNyaXRpY2FsIHRoYXRcbiAgICAgIC8vIHRoZSBhcHByb3hpbWF0ZSB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHJlYWwgdmFsdWUgc28gdGhhdCB0aGVcbiAgICAgIC8vIHJlbWFpbmRlciBuZXZlciBiZWNvbWVzIG5lZ2F0aXZlLlxuICAgICAgcmVzID0gSW50ZWdlci5aRVJPO1xuICAgICAgcmVtID0gdGhpcztcbiAgICAgIHdoaWxlIChyZW0uZ3JlYXRlclRoYW5PckVxdWFsKGRpdmlzb3IpKSB7XG4gICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSByZXN1bHQgb2YgZGl2aXNpb24uIFRoaXMgbWF5IGJlIGEgbGl0dGxlIGdyZWF0ZXIgb3JcbiAgICAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgdmFsdWUuXG4gICAgICAgIGFwcHJveCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IocmVtLnRvTnVtYmVyKCkgLyBkaXZpc29yLnRvTnVtYmVyKCkpKTtcblxuICAgICAgICAvLyBXZSB3aWxsIHR3ZWFrIHRoZSBhcHByb3hpbWF0ZSByZXN1bHQgYnkgY2hhbmdpbmcgaXQgaW4gdGhlIDQ4LXRoIGRpZ2l0IG9yXG4gICAgICAgIC8vIHRoZSBzbWFsbGVzdCBub24tZnJhY3Rpb25hbCBkaWdpdCwgd2hpY2hldmVyIGlzIGxhcmdlci5cbiAgICAgICAgdmFyIGxvZzIgPSBNYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KSAvIE1hdGguTE4yKSxcbiAgICAgICAgICAgIGRlbHRhID0gbG9nMiA8PSA0OCA/IDEgOiBNYXRoLnBvdygyLCBsb2cyIC0gNDgpLFxuXG5cbiAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGFwcHJveGltYXRpb24gdW50aWwgaXQgaXMgc21hbGxlciB0aGFuIHRoZSByZW1haW5kZXIuICBOb3RlXG4gICAgICAgIC8vIHRoYXQgaWYgaXQgaXMgdG9vIGxhcmdlLCB0aGUgcHJvZHVjdCBvdmVyZmxvd3MgYW5kIGlzIG5lZ2F0aXZlLlxuICAgICAgICBhcHByb3hSZXMgPSBJbnRlZ2VyLmZyb21OdW1iZXIoYXBwcm94KSxcbiAgICAgICAgICAgIGFwcHJveFJlbSA9IGFwcHJveFJlcy5tdWx0aXBseShkaXZpc29yKTtcbiAgICAgICAgd2hpbGUgKGFwcHJveFJlbS5pc05lZ2F0aXZlKCkgfHwgYXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpIHtcbiAgICAgICAgICBhcHByb3ggLT0gZGVsdGE7XG4gICAgICAgICAgYXBwcm94UmVzID0gSW50ZWdlci5mcm9tTnVtYmVyKGFwcHJveCk7XG4gICAgICAgICAgYXBwcm94UmVtID0gYXBwcm94UmVzLm11bHRpcGx5KGRpdmlzb3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Uga25vdyB0aGUgYW5zd2VyIGNhbid0IGJlIHplcm8uLi4gYW5kIGFjdHVhbGx5LCB6ZXJvIHdvdWxkIGNhdXNlXG4gICAgICAgIC8vIGluZmluaXRlIHJlY3Vyc2lvbiBzaW5jZSB3ZSB3b3VsZCBtYWtlIG5vIHByb2dyZXNzLlxuICAgICAgICBpZiAoYXBwcm94UmVzLmlzWmVybygpKSBhcHByb3hSZXMgPSBJbnRlZ2VyLk9ORTtcblxuICAgICAgICByZXMgPSByZXMuYWRkKGFwcHJveFJlcyk7XG4gICAgICAgIHJlbSA9IHJlbS5zdWJ0cmFjdChhcHByb3hSZW0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciBtb2R1bG8gdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUmVtYWluZGVyXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdtb2R1bG8nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtb2R1bG8oZGl2aXNvcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihkaXZpc29yKSkgZGl2aXNvciA9IEludGVnZXIuZnJvbVZhbHVlKGRpdmlzb3IpO1xuICAgICAgcmV0dXJuIHRoaXMuc3VidHJhY3QodGhpcy5kaXYoZGl2aXNvcikubXVsdGlwbHkoZGl2aXNvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgTk9UIG9mIHRoaXMgSW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdub3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3QoKSB7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh+dGhpcy5sb3csIH50aGlzLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgQU5EIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdhbmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhbmQob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93ICYgb3RoZXIubG93LCB0aGlzLmhpZ2ggJiBvdGhlci5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIE9SIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9yKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyB8IG90aGVyLmxvdywgdGhpcy5oaWdoIHwgb3RoZXIuaGlnaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBYT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgZ2l2ZW4gb25lLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3hvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHhvcihvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgXiBvdGhlci5sb3csIHRoaXMuaGlnaCBeIG90aGVyLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0IGJ5IHRoZSBnaXZlbiBhbW91bnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ8IUludGVnZXJ9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFNoaWZ0ZWQgSW50ZWdlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnc2hpZnRMZWZ0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnRMZWZ0KG51bUJpdHMpIHtcbiAgICAgIGlmIChJbnRlZ2VyLmlzSW50ZWdlcihudW1CaXRzKSkgbnVtQml0cyA9IG51bUJpdHMudG9JbnQoKTtcbiAgICAgIGlmICgobnVtQml0cyAmPSA2MykgPT09IDApIHJldHVybiB0aGlzO2Vsc2UgaWYgKG51bUJpdHMgPCAzMikgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgPDwgbnVtQml0cywgdGhpcy5oaWdoIDw8IG51bUJpdHMgfCB0aGlzLmxvdyA+Pj4gMzIgLSBudW1CaXRzKTtlbHNlIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKDAsIHRoaXMubG93IDw8IG51bUJpdHMgLSAzMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgd2l0aCBiaXRzIGFyaXRobWV0aWNhbGx5IHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0IGJ5IHRoZSBnaXZlbiBhbW91bnQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ8IUludGVnZXJ9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFNoaWZ0ZWQgSW50ZWdlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnc2hpZnRSaWdodCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0UmlnaHQobnVtQml0cykge1xuICAgICAgaWYgKEludGVnZXIuaXNJbnRlZ2VyKG51bUJpdHMpKSBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgICAgaWYgKChudW1CaXRzICY9IDYzKSA9PT0gMCkgcmV0dXJuIHRoaXM7ZWxzZSBpZiAobnVtQml0cyA8IDMyKSByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyA+Pj4gbnVtQml0cyB8IHRoaXMuaGlnaCA8PCAzMiAtIG51bUJpdHMsIHRoaXMuaGlnaCA+PiBudW1CaXRzKTtlbHNlIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMuaGlnaCA+PiBudW1CaXRzIC0gMzIsIHRoaXMuaGlnaCA+PSAwID8gMCA6IC0xKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEludGVnZXI7XG59KCk7XG5cbi8qKlxuICogQW4gaW5kaWNhdG9yIHVzZWQgdG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEludGVnZXIgb3Igbm90LlxuICogQHR5cGUge2Jvb2xlYW59XG4gKiBAY29uc3RcbiAqIEBleHBvc2VcbiAqIEBwcml2YXRlXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyA2NC1iaXQgSW50ZWdlciBsaWJyYXJ5LCBvcmlnaW5hbGx5IGZyb20gTG9uZy5qcyBieSBkY29kZUlPXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGNvZGVJTy9Mb25nLmpzXG4vLyBMaWNlbnNlIEFwYWNoZSAyXG5cbkludGVnZXIuX19pc0ludGVnZXJfXztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEludGVnZXIucHJvdG90eXBlLCBcIl9faXNJbnRlZ2VyX19cIiwge1xuICB2YWx1ZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGNvbmZpZ3VyYWJsZTogZmFsc2Vcbn0pO1xuXG4vKipcbiAqIFRlc3RzIGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGEgSW50ZWdlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBvYmogT2JqZWN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5pc0ludGVnZXIgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiAob2JqICYmIG9ialtcIl9faXNJbnRlZ2VyX19cIl0pID09PSB0cnVlO1xufTtcblxuLyoqXG4gKiBBIGNhY2hlIG9mIHRoZSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBvZiBzbWFsbCBpbnRlZ2VyIHZhbHVlcy5cbiAqIEB0eXBlIHshT2JqZWN0fVxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgSU5UX0NBQ0hFID0ge307XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiAzMiBiaXQgaW50ZWdlciB2YWx1ZS5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSAzMiBiaXQgaW50ZWdlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbUludCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgb2JqLCBjYWNoZWRPYmo7XG4gIHZhbHVlID0gdmFsdWUgfCAwO1xuICBpZiAoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDEyOCkge1xuICAgIGNhY2hlZE9iaiA9IElOVF9DQUNIRVt2YWx1ZV07XG4gICAgaWYgKGNhY2hlZE9iaikgcmV0dXJuIGNhY2hlZE9iajtcbiAgfVxuICBvYmogPSBuZXcgSW50ZWdlcih2YWx1ZSwgdmFsdWUgPCAwID8gLTEgOiAwLCBmYWxzZSk7XG4gIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KSBJTlRfQ0FDSEVbdmFsdWVdID0gb2JqO1xuICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHZhbHVlLCBwcm92aWRlZCB0aGF0IGl0IGlzIGEgZmluaXRlIG51bWJlci4gT3RoZXJ3aXNlLCB6ZXJvIGlzIHJldHVybmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIG51bWJlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbU51bWJlciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gIGlmICh2YWx1ZSA8PSAtVFdPX1BXUl82M19EQkwpIHJldHVybiBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgaWYgKHZhbHVlICsgMSA+PSBUV09fUFdSXzYzX0RCTCkgcmV0dXJuIEludGVnZXIuTUFYX1ZBTFVFO1xuICBpZiAodmFsdWUgPCAwKSByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCk7XG4gIHJldHVybiBuZXcgSW50ZWdlcih2YWx1ZSAlIFRXT19QV1JfMzJfREJMIHwgMCwgdmFsdWUgLyBUV09fUFdSXzMyX0RCTCB8IDApO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIDY0IGJpdCBpbnRlZ2VyIHRoYXQgY29tZXMgYnkgY29uY2F0ZW5hdGluZyB0aGUgZ2l2ZW4gbG93IGFuZCBoaWdoIGJpdHMuIEVhY2ggaXNcbiAqICBhc3N1bWVkIHRvIHVzZSAzMiBiaXRzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbG93Qml0cyBUaGUgbG93IDMyIGJpdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoQml0cyBUaGUgaGlnaCAzMiBiaXRzXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tQml0cyA9IGZ1bmN0aW9uIChsb3dCaXRzLCBoaWdoQml0cykge1xuICByZXR1cm4gbmV3IEludGVnZXIobG93Qml0cywgaGlnaEJpdHMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gc3RyaW5nLCB3cml0dGVuIHVzaW5nIHRoZSBzcGVjaWZpZWQgcmFkaXguXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIEludGVnZXJcbiAqIEBwYXJhbSB7bnVtYmVyPX0gcmFkaXggVGhlIHJhZGl4IGluIHdoaWNoIHRoZSB0ZXh0IGlzIHdyaXR0ZW4gKDItMzYpLCBkZWZhdWx0cyB0byAxMFxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbVN0cmluZyA9IGZ1bmN0aW9uIChzdHIsIHJhZGl4KSB7XG4gIGlmIChzdHIubGVuZ3RoID09PSAwKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnbnVtYmVyIGZvcm1hdCBlcnJvcjogZW1wdHkgc3RyaW5nJyk7XG4gIGlmIChzdHIgPT09IFwiTmFOXCIgfHwgc3RyID09PSBcIkluZmluaXR5XCIgfHwgc3RyID09PSBcIitJbmZpbml0eVwiIHx8IHN0ciA9PT0gXCItSW5maW5pdHlcIikgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgaWYgKHJhZGl4IDwgMiB8fCAzNiA8IHJhZGl4KSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgncmFkaXggb3V0IG9mIHJhbmdlOiAnICsgcmFkaXgpO1xuXG4gIHZhciBwO1xuICBpZiAoKHAgPSBzdHIuaW5kZXhPZignLScpKSA+IDApIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciBcIi1cIiBjaGFyYWN0ZXI6ICcgKyBzdHIpO2Vsc2UgaWYgKHAgPT09IDApIHJldHVybiBJbnRlZ2VyLmZyb21TdHJpbmcoc3RyLnN1YnN0cmluZygxKSwgcmFkaXgpLm5lZ2F0ZSgpO1xuXG4gIC8vIERvIHNldmVyYWwgKDgpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXG4gIHZhciByYWRpeFRvUG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIDgpKTtcblxuICB2YXIgcmVzdWx0ID0gSW50ZWdlci5aRVJPO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkgKz0gOCkge1xuICAgIHZhciBzaXplID0gTWF0aC5taW4oOCwgc3RyLmxlbmd0aCAtIGkpO1xuICAgIHZhciB2YWx1ZSA9IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcoaSwgaSArIHNpemUpLCByYWRpeCk7XG4gICAgaWYgKHNpemUgPCA4KSB7XG4gICAgICB2YXIgcG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIHNpemUpKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShwb3dlcikuYWRkKEludGVnZXIuZnJvbU51bWJlcih2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocmFkaXhUb1Bvd2VyKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgdmFsdWUgdG8gYSBJbnRlZ2VyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbVZhbHVlID0gZnVuY3Rpb24gKHZhbCkge1xuICBpZiAodmFsIC8qIGlzIGNvbXBhdGlibGUgKi8gaW5zdGFuY2VvZiBJbnRlZ2VyKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIodmFsKTtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSByZXR1cm4gSW50ZWdlci5mcm9tU3RyaW5nKHZhbCk7XG4gIC8vIFRocm93cyBmb3Igbm9uLW9iamVjdHMsIGNvbnZlcnRzIG5vbi1pbnN0YW5jZW9mIEludGVnZXI6XG4gIHJldHVybiBuZXcgSW50ZWdlcih2YWwubG93LCB2YWwuaGlnaCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgdmFsdWUgdG8gYSBudW1iZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXJ9fSB2YWwgVmFsdWVcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIudG9OdW1iZXIgPSBmdW5jdGlvbiAodmFsKSB7XG4gIHJldHVybiBJbnRlZ2VyLmZyb21WYWx1ZSh2YWwpLnRvTnVtYmVyKCk7XG59O1xuXG4vKipcbiogQ29udmVydHMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byBhIHN0cmluZy5cbiogQGFjY2VzcyBwcml2YXRlXG4qIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXJ9fSB2YWwgVmFsdWVcbiogQHBhcmFtIHtudW1iZXJ9IHJhZGl4IG9wdGlvbmFsIHJhZGl4IGZvciBzdHJpbmcgY29udmVyc2lvbiwgZGVmYXVsdHMgdG8gMTBcbiogQHJldHVybnMge1N0cmluZ31cbiogQGV4cG9zZVxuKi9cbkludGVnZXIudG9TdHJpbmcgPSBmdW5jdGlvbiAodmFsLCByYWRpeCkge1xuICByZXR1cm4gSW50ZWdlci5mcm9tVmFsdWUodmFsKS50b1N0cmluZyhyYWRpeCk7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgaW4gdGhlIHNhZmUgcmFuZ2UgaW4gb3JkZXIgdG8gYmUgY29udmVydGVkIHRvIGEgbmF0aXZlIG51bWJlclxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gcmFkaXggb3B0aW9uYWwgcmFkaXggZm9yIHN0cmluZyBjb252ZXJzaW9uLCBkZWZhdWx0cyB0byAxMFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuaW5TYWZlUmFuZ2UgPSBmdW5jdGlvbiAodmFsKSB7XG4gIHJldHVybiBJbnRlZ2VyLmZyb21WYWx1ZSh2YWwpLmluU2FmZVJhbmdlKCk7XG59O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMTZfREJMID0gMSA8PCAxNjtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzI0X0RCTCA9IDEgPDwgMjQ7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8zMl9EQkwgPSBUV09fUFdSXzE2X0RCTCAqIFRXT19QV1JfMTZfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjRfREJMID0gVFdPX1BXUl8zMl9EQkwgKiBUV09fUFdSXzMyX0RCTDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzYzX0RCTCA9IFRXT19QV1JfNjRfREJMIC8gMjtcblxuLyoqXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjQgPSBJbnRlZ2VyLmZyb21JbnQoVFdPX1BXUl8yNF9EQkwpO1xuXG4vKipcbiAqIFNpZ25lZCB6ZXJvLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLlpFUk8gPSBJbnRlZ2VyLmZyb21JbnQoMCk7XG5cbi8qKlxuICogU2lnbmVkIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5PTkUgPSBJbnRlZ2VyLmZyb21JbnQoMSk7XG5cbi8qKlxuICogU2lnbmVkIG5lZ2F0aXZlIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5ORUdfT05FID0gSW50ZWdlci5mcm9tSW50KC0xKTtcblxuLyoqXG4gKiBNYXhpbXVtIHNpZ25lZCB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NQVhfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4RkZGRkZGRkYgfCAwLCAweDdGRkZGRkZGIHwgMCwgZmFsc2UpO1xuXG4vKipcbiAqIE1pbmltdW0gc2lnbmVkIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1JTl9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMCwgMHg4MDAwMDAwMCB8IDAsIGZhbHNlKTtcblxuLyoqXG4gKiBNaW5pbXVtIHNhZmUgdmFsdWUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTUlOX1NBRkVfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4MSB8IDAsIDB4RkZGRkZGRkZGRkUwMDAwMCB8IDApO1xuXG4vKipcbiogTWF4aW11bSBzYWZlIHZhbHVlLlxuKiBAdHlwZSB7IUludGVnZXJ9XG4qIEBleHBvc2VcbiovXG5JbnRlZ2VyLk1BWF9TQUZFX1ZBTFVFID0gSW50ZWdlci5mcm9tQml0cygweEZGRkZGRkZGIHwgMCwgMHgxRkZGRkYgfCAwKTtcblxuLyoqXG4gKiBDYXN0IHZhbHVlIHRvIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB1c2UuXG4gKiBAcmV0dXJuIHtJbnRlZ2VyfSAtIEFuIG9iamVjdCBvZiB0eXBlIEludGVnZXIuXG4gKi9cbnZhciBpbnQgPSBJbnRlZ2VyLmZyb21WYWx1ZTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhcmlhYmxlIGlzIG9mIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge0Jvb2xlYW59IC0gSXMgaXQgb2YgdGhlIEludGVnZXIgdHlwZT9cbiAqL1xudmFyIGlzSW50ID0gSW50ZWdlci5pc0ludGVnZXI7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YXJpYWJsZSBjYW4gYmUgc2FmZWx5IGNvbnZlcnRlZCB0byBhIG51bWJlclxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmlhYmxlIHRvIGNoZWNrXG4gKiBAcmV0dXJuIHtCb29sZWFufSAtIHRydWUgaWYgaXQgaXMgc2FmZSB0byBjYWxsIHRvTnVtYmVyIG9uIHZhcmlhYmxlIG90aGVyd2lzZSBmYWxzZVxuICovXG52YXIgaW5TYWZlUmFuZ2UgPSBJbnRlZ2VyLmluU2FmZVJhbmdlO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgdmFyaWFibGUgdG8gYSBudW1iZXJcbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjb252ZXJ0XG4gKiBAcmV0dXJuIHtudW1iZXJ9IC0gdGhlIHZhcmlhYmxlIGFzIGEgbnVtYmVyXG4gKi9cbnZhciB0b051bWJlciA9IEludGVnZXIudG9OdW1iZXI7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGludGVnZXIgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFkaXggLSByYWRpeCB0byB1c2UgaW4gc3RyaW5nIGNvbnZlcnNpb24sIGRlZmF1bHRzIHRvIDEwXG4gKiBAcmV0dXJuIHtTdHJpbmd9IC0gcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZWdlclxuICovXG52YXIgdG9TdHJpbmcgPSBJbnRlZ2VyLnRvU3RyaW5nO1xuXG5leHBvcnRzLmludCA9IGludDtcbmV4cG9ydHMuaXNJbnQgPSBpc0ludDtcbmV4cG9ydHMuaW5TYWZlUmFuZ2UgPSBpblNhZmVSYW5nZTtcbmV4cG9ydHMudG9OdW1iZXIgPSB0b051bWJlcjtcbmV4cG9ydHMudG9TdHJpbmcgPSB0b1N0cmluZztcbmV4cG9ydHMuZGVmYXVsdCA9IEludGVnZXI7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmFsbG9jID0gZXhwb3J0cy5Ob2RlQnVmZmVyID0gZXhwb3J0cy5Db21iaW5lZEJ1ZmZlciA9IGV4cG9ydHMuU2xpY2VCdWZmZXIgPSBleHBvcnRzLkhlYXBCdWZmZXIgPSBleHBvcnRzLkJhc2VCdWZmZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfZ2V0MiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvZ2V0XCIpO1xuXG52YXIgX2dldDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXQyKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2ZcIik7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCIpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIpO1xuXG52YXIgX2luaGVyaXRzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIik7XG5cbnZhciBfaW5oZXJpdHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5oZXJpdHMyKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjb21tb24gQVBJIGZvciBkZWFsaW5nIHdpdGggYmluYXJ5IGRhdGEgdGhhdFxuICAqIHdvcmtzIGZvciBib3RoIGJyb3dzZXJzICh2aWEgQXJyYXlCdWZmZXIvRGF0YVZpZXcpIGFuZCBmb3IgTm9kZUpTXG4gICoodmlhIEJ1ZmZlciBBUEkpLlxuICAqL1xuXG52YXIgX25vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuLyoqXG4gICogQ29tbW9uIGJhc2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBtb3N0IGJ1ZmZlciBtZXRob2RzLlxuICAqIEJ1ZmZlcnMgYXJlIHN0YXRlZnVsIC0gdGhleSB0cmFjayBhIGN1cnJlbnQgXCJwb3NpdGlvblwiLCB0aGlzIGhlbHBzIGdyZWF0bHlcbiAgKiB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbSB0aGVtIGluY3JlbWVudGFsbHkuIFlvdSBjYW4gYWxzbyBpZ25vcmUgdGhlXG4gICogc3RhdGVmdWwgcmVhZC93cml0ZSBtZXRob2RzLlxuICAqIHJlYWRYWFggYW5kIHdyaXRlWFhYLW1ldGhvZHMgbW92ZSB0aGUgaW5uZXIgcG9zaXRpb24gb2YgdGhlIGJ1ZmZlci5cbiAgKiBwdXRYWFggYW5kIGdldFhYWC1tZXRob2RzIGRvIG5vdC5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIEJhc2VCdWZmZXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBpbnN0YW5jZSB3aXRoIHRoZSBpbmplY3RlZCBzaXplLlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBzaXplXG4gICAqL1xuICBmdW5jdGlvbiBCYXNlQnVmZmVyKHNpemUpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBCYXNlQnVmZmVyKTtcblxuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIHRoaXMubGVuZ3RoID0gc2l6ZTtcbiAgICAvLyBDYWxsaW5nIHRoZXNlIG91dCAtIHRoaXMgaXMgdGhlIHJlcXVpcmVkIFxuICAgIC8vIG1ldGhvZHMgYSBzdWJjbGFzcyBuZWVkcyB0byBpbXBsZW1lbnRcbiAgICB2YXIgZ2V0VUludDggPSBudWxsO1xuICAgIHZhciBnZXRJbnQ4ID0gbnVsbDtcbiAgICB2YXIgZ2V0RmxvYXQ2NCA9IG51bGw7XG4gICAgdmFyIGdldFNsaWNlID0gbnVsbDtcbiAgICB2YXIgcHV0RmxvYXQ2NCA9IG51bGw7XG4gICAgdmFyIHB1dFVJbnQ4ID0gbnVsbDtcbiAgICB2YXIgcHV0SW50OCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShCYXNlQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQxNihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQxNihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50OChwKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDMyKHApIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgocCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQzMihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50OChwKSA8PCAyNCB8IHRoaXMuZ2V0VUludDgocCArIDEpIDw8IDE2IHwgdGhpcy5nZXRVSW50OChwICsgMikgPDwgOCB8IHRoaXMuZ2V0VUludDgocCArIDMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ2NChwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDU2IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgNDggfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA0MCB8IHRoaXMuZ2V0VUludDgocCArIDMpIDw8IDMyIHwgdGhpcy5nZXRVSW50OChwICsgNCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyA1KSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDYpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyA3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBzdGFydFxuICAgICAqIEBwYXJhbSBsZW5ndGhcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgU2xpY2VCdWZmZXIoc3RhcnQsIGxlbmd0aCwgdGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQxNihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gOCk7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInB1dFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50MTYocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDMyKHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHAsIHZhbCA+PiAyNCk7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDIsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAzLCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqIEBwYXJhbSB2YWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInB1dFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50MzIocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAsIHZhbCA+PiAyNCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDE2ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gOCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMywgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ2NChwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gNDgpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDQyICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gMzYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDMsIHZhbCA+PiAzMCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNCwgdmFsID4+IDI0ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA1LCB2YWwgPj4gMTYgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDYsIHZhbCA+PiA4ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA3LCB2YWwgJiAweEZGKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gb3RoZXJcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInB1dEJ5dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEJ5dGVzKHBvc2l0aW9uLCBvdGhlcikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IG90aGVyLnJlbWFpbmluZygpOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgICAgdGhpcy5wdXRVSW50OChwb3NpdGlvbiArIGksIG90aGVyLnJlYWRVSW50OCgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkVUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFVJbnQ4KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDgodGhpcy5fdXBkYXRlUG9zKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkSW50OCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDgodGhpcy5fdXBkYXRlUG9zKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkVUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50MTYoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50MTYodGhpcy5fdXBkYXRlUG9zKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkVUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50MzIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRVSW50MzIodGhpcy5fdXBkYXRlUG9zKDQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDE2KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MTYodGhpcy5fdXBkYXRlUG9zKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDMyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MzIodGhpcy5fdXBkYXRlUG9zKDQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkSW50NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDY0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50MzIodGhpcy5fdXBkYXRlUG9zKDgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkRmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkRmxvYXQ2NCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZsb2F0NjQodGhpcy5fdXBkYXRlUG9zKDgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlVUludDgodmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVJbnQ4KHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50MTYodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50MzIodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZVVJbnQzMih2YWwpIHtcbiAgICAgIHRoaXMucHV0VUludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50NjQodmFsKSB7XG4gICAgICB0aGlzLnB1dEludDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVGbG9hdDY0KHZhbCkge1xuICAgICAgdGhpcy5wdXRGbG9hdDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZUJ5dGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlQnl0ZXModmFsKSB7XG4gICAgICB0aGlzLnB1dEJ5dGVzKHRoaXMuX3VwZGF0ZVBvcyh2YWwucmVtYWluaW5nKCkpLCB2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHNsaWNlIG9mIHRoaXMgYnVmZmVyLiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBjb3B5IGFueSBkYXRhLFxuICAgICAqIGJ1dCBzaW1wbHkgcHJvdmlkZXMgYSBzbGljZSB2aWV3IG9mIHRoaXMgYnVmZmVyXG4gICAgICogQHBhcmFtIGxlbmd0aFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRTbGljZShsZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFNsaWNlKHRoaXMuX3VwZGF0ZVBvcyhsZW5ndGgpLCBsZW5ndGgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfdXBkYXRlUG9zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVQb3MobGVuZ3RoKSB7XG4gICAgICB2YXIgcCA9IHRoaXMucG9zaXRpb247XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCByZW1hbmluZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVtYWluaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbWFpbmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxlbmd0aCAtIHRoaXMucG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFzIHJlbWFuaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJoYXNSZW1haW5pbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzUmVtYWluaW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVtYWluaW5nKCkgPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHBvc2l0aW9uIHN0YXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyIGFuZCBpdCdzIHN0YXRlLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiggcG9zaXRpb249XCIgKyB0aGlzLnBvc2l0aW9uICsgXCIgKVxcbiAgXCIgKyB0aGlzLnRvSGV4KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIuXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBCdWZmZXIgYXMgYSBzdHJpbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInRvSGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvSGV4KCkge1xuICAgICAgLy8gVE9ETyBzb21ldGhpbmcgbGlrZSBTdHJpbmdCdWlsZGVyP1xuICAgICAgdmFyIG91dCA9IFwiXCI7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGhleEJ5dGUgPSB0aGlzLmdldFVJbnQ4KGkpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgaWYgKGhleEJ5dGUubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICBoZXhCeXRlID0gXCIwXCIgKyBoZXhCeXRlO1xuICAgICAgICB9XG4gICAgICAgIG91dCArPSBoZXhCeXRlICsgXCIgXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQmFzZUJ1ZmZlcjtcbn0oKTtcblxuLyoqXG4gKiBCYXNpYyBidWZmZXIgaW1wbGVtZW50YXRpb24gdGhhdCBzaG91bGQgd29yayBpbiBtb3N0IGFueSBtb2Rlcm4gSlMgZW52LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxuXG52YXIgSGVhcEJ1ZmZlciA9IGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShIZWFwQnVmZmVyLCBfQmFzZUJ1ZmZlcik7XG5cbiAgZnVuY3Rpb24gSGVhcEJ1ZmZlcihhcmcpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBIZWFwQnVmZmVyKTtcblxuICAgIHZhciBidWZmZXIgPSBhcmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciA/IGFyZyA6IG5ldyBBcnJheUJ1ZmZlcihhcmcpO1xuXG4gICAgdmFyIF90aGlzID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoSGVhcEJ1ZmZlci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoSGVhcEJ1ZmZlcikpLmNhbGwodGhpcywgYnVmZmVyLmJ5dGVMZW5ndGgpKTtcblxuICAgIF90aGlzLl9idWZmZXIgPSBidWZmZXI7XG4gICAgX3RoaXMuX3ZpZXcgPSBuZXcgRGF0YVZpZXcoX3RoaXMuX2J1ZmZlcik7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoSGVhcEJ1ZmZlciwgW3tcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fdmlldy5zZXRVaW50OChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl92aWV3LmdldFVpbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0SW50OChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRGbG9hdDY0KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2xpY2Uoc3RhcnQsIGxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5zbGljZSkge1xuICAgICAgICByZXR1cm4gbmV3IEhlYXBCdWZmZXIodGhpcy5fYnVmZmVyLnNsaWNlKHN0YXJ0LCBzdGFydCArIGxlbmd0aCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU29tZSBwbGF0Zm9ybXMgKGVnLiBwaGFudG9tanMpIGRvbid0IHN1cHBvcnQgc2xpY2UsIHNvIGZhbGwgYmFjayB0byBhIGNvcHlcbiAgICAgICAgLy8gV2UgZG8gdGhpcyByYXRoZXIgdGhhbiByZXR1cm4gYSBTbGljZUJ1ZmZlciwgYmVjYXVzZSBzbGljZUJ1ZmZlciBjYW5ub3RcbiAgICAgICAgLy8gYmUgcGFzc2VkIHRvIG5hdGl2ZSBuZXR3b3JrIHdyaXRlIG9wcyBldGMgLSB3ZSBuZWVkIEFycmF5QnVmZmVyIGZvciB0aGF0XG4gICAgICAgIHZhciBjb3B5ID0gbmV3IEhlYXBCdWZmZXIobGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvcHkucHV0VUludDgoaSwgdGhpcy5nZXRVSW50OChpICsgc3RhcnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29weTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogXG4gICAgICogU3BlY2lmaWMgdG8gSGVhcEJ1ZmZlciwgdGhpcyBnZXRzIGEgRGF0YVZpZXcgZnJvbSB0aGVcbiAgICAgKiBjdXJyZW50IHBvc2l0aW9uIGFuZCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4gXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZWFkVmlld1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVmlldyhsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0YVZpZXcodGhpcy5fYnVmZmVyLCB0aGlzLl91cGRhdGVQb3MobGVuZ3RoKSwgbGVuZ3RoKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEhlYXBCdWZmZXI7XG59KEJhc2VCdWZmZXIpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB2aWV3IGFzIHNsaWNlIG9mIGFub3RoZXIgYnVmZmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxuXG52YXIgU2xpY2VCdWZmZXIgPSBmdW5jdGlvbiAoX0Jhc2VCdWZmZXIyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKFNsaWNlQnVmZmVyLCBfQmFzZUJ1ZmZlcjIpO1xuXG4gIGZ1bmN0aW9uIFNsaWNlQnVmZmVyKHN0YXJ0LCBsZW5ndGgsIGlubmVyKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgU2xpY2VCdWZmZXIpO1xuXG4gICAgdmFyIF90aGlzMiA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKFNsaWNlQnVmZmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShTbGljZUJ1ZmZlcikpLmNhbGwodGhpcywgbGVuZ3RoKSk7XG5cbiAgICBfdGhpczIuX3N0YXJ0ID0gc3RhcnQ7XG4gICAgX3RoaXMyLl9pbm5lciA9IGlubmVyO1xuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShTbGljZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwicHV0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5faW5uZXIucHV0VUludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRVSW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dEludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dEZsb2F0NjQodGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0SW50OCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0RmxvYXQ2NCh0aGlzLl9zdGFydCArIHBvc2l0aW9uKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNsaWNlQnVmZmVyO1xufShCYXNlQnVmZmVyKTtcblxuLyoqXG4gKiBCdWZmZXIgdGhhdCBjb21iaW5lcyBtdWx0aXBsZSBidWZmZXJzLCBleHBvc2luZyB0aGVtIGFzIG9uZSBzaW5nbGUgYnVmZmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxuXG52YXIgQ29tYmluZWRCdWZmZXIgPSBmdW5jdGlvbiAoX0Jhc2VCdWZmZXIzKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKENvbWJpbmVkQnVmZmVyLCBfQmFzZUJ1ZmZlcjMpO1xuXG4gIGZ1bmN0aW9uIENvbWJpbmVkQnVmZmVyKGJ1ZmZlcnMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBDb21iaW5lZEJ1ZmZlcik7XG5cbiAgICB2YXIgbGVuZ3RoID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxlbmd0aCArPSBidWZmZXJzW2ldLmxlbmd0aDtcbiAgICB9XG5cbiAgICB2YXIgX3RoaXMzID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoQ29tYmluZWRCdWZmZXIuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKENvbWJpbmVkQnVmZmVyKSkuY2FsbCh0aGlzLCBsZW5ndGgpKTtcblxuICAgIF90aGlzMy5fYnVmZmVycyA9IGJ1ZmZlcnM7XG4gICAgcmV0dXJuIF90aGlzMztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKENvbWJpbmVkQnVmZmVyLCBbe1xuICAgIGtleTogXCJnZXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50OChwb3NpdGlvbikge1xuICAgICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0VUludDgocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBidWZmZXIuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICAvLyBBdCBzb21lIHBvaW50LCBhIG1vcmUgZWZmaWNpZW50IGltcGwuIEZvciBub3csIHdlIGNvcHkgdGhlIDggYnl0ZXNcbiAgICAgIC8vIHdlIHdhbnQgdG8gcmVhZCBhbmQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybSBpbXBsIG9mIElFRUUgNzU0LlxuICAgICAgdmFyIGIgPSBhbGxvYyg4KTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGIucHV0VUludDgoaSwgdGhpcy5nZXRVSW50OChwb3NpdGlvbiArIGkpKTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gYi5nZXRGbG9hdDY0KDApO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQ29tYmluZWRCdWZmZXI7XG59KEJhc2VCdWZmZXIpO1xuXG4vKipcbiAqIEJ1ZmZlciB1c2VkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudFxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxuXG52YXIgTm9kZUJ1ZmZlciA9IGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcjQpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoTm9kZUJ1ZmZlciwgX0Jhc2VCdWZmZXI0KTtcblxuICBmdW5jdGlvbiBOb2RlQnVmZmVyKGFyZykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIE5vZGVCdWZmZXIpO1xuXG4gICAgdmFyIGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIF9ub2RlLkJ1ZmZlciA/IGFyZyA6IG5ldyBfbm9kZS5CdWZmZXIoYXJnKTtcblxuICAgIHZhciBfdGhpczQgPSAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChOb2RlQnVmZmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShOb2RlQnVmZmVyKSkuY2FsbCh0aGlzLCBidWZmZXIubGVuZ3RoKSk7XG5cbiAgICBfdGhpczQuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgICByZXR1cm4gX3RoaXM0O1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoTm9kZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9idWZmZXIucmVhZFVJbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWRJbnQ4KHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGbG9hdDY0KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWREb3VibGVCRShwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZVVJbnQ4KHZhbCwgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlSW50OCh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0RmxvYXQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZURvdWJsZUJFKHZhbCwgcG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgdmFsKSB7XG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTm9kZUJ1ZmZlcikge1xuICAgICAgICB2YXIgYnl0ZXNUb0NvcHkgPSBNYXRoLm1pbih2YWwubGVuZ3RoIC0gdmFsLnBvc2l0aW9uLCB0aGlzLmxlbmd0aCAtIHBvc2l0aW9uKTtcbiAgICAgICAgdmFsLl9idWZmZXIuY29weSh0aGlzLl9idWZmZXIsIHBvc2l0aW9uLCB2YWwucG9zaXRpb24sIHZhbC5wb3NpdGlvbiArIGJ5dGVzVG9Db3B5KTtcbiAgICAgICAgdmFsLnBvc2l0aW9uICs9IGJ5dGVzVG9Db3B5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKDAsIF9nZXQzLmRlZmF1bHQpKE5vZGVCdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShOb2RlQnVmZmVyLnByb3RvdHlwZSksIFwicHV0Qnl0ZXNcIiwgdGhpcykuY2FsbCh0aGlzLCBwb3NpdGlvbiwgdmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2xpY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2xpY2Uoc3RhcnQsIGxlbmd0aCkge1xuICAgICAgcmV0dXJuIG5ldyBOb2RlQnVmZmVyKHRoaXMuX2J1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyBsZW5ndGgpKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE5vZGVCdWZmZXI7XG59KEJhc2VCdWZmZXIpO1xuXG4vLyBVc2UgSGVhcEJ1ZmZlciBieSBkZWZhdWx0LCB1bmxlc3MgQnVmZmVyIEFQSSBpcyBhdmFpbGFibGUsIHNlZSBiZWxvd1xuXG5cbnZhciBfRGVmYXVsdEJ1ZmZlciA9IEhlYXBCdWZmZXI7XG50cnkge1xuICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHdlJ3JlIG5vdCBydW5uaW5nIG9uIE5vZGVKUyBvciBlcXVpdmFsZW50XG4gIHJlcXVpcmUucmVzb2x2ZShcImJ1ZmZlclwiKTtcbiAgX0RlZmF1bHRCdWZmZXIgPSBOb2RlQnVmZmVyO1xufSBjYXRjaCAoZSkge31cblxuLyoqXG4gKiBBbGxvY2F0ZSBhIG5ldyBidWZmZXIgdXNpbmcgd2hhdGV2ZXIgbWVjaGFuaXNtIGlzIG1vc3Qgc2Vuc2libGUgZm9yIHRoZVxuICogY3VycmVudCBwbGF0Zm9ybVxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge0ludGVnZXJ9IHNpemVcbiAqIEByZXR1cm4gbmV3IGJ1ZmZlclxuICovXG5mdW5jdGlvbiBhbGxvYyhzaXplKSB7XG4gIHJldHVybiBuZXcgX0RlZmF1bHRCdWZmZXIoc2l6ZSk7XG59XG5cbmV4cG9ydHMuQmFzZUJ1ZmZlciA9IEJhc2VCdWZmZXI7XG5leHBvcnRzLkhlYXBCdWZmZXIgPSBIZWFwQnVmZmVyO1xuZXhwb3J0cy5TbGljZUJ1ZmZlciA9IFNsaWNlQnVmZmVyO1xuZXhwb3J0cy5Db21iaW5lZEJ1ZmZlciA9IENvbWJpbmVkQnVmZmVyO1xuZXhwb3J0cy5Ob2RlQnVmZmVyID0gTm9kZUJ1ZmZlcjtcbmV4cG9ydHMuYWxsb2MgPSBhbGxvYzsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMub2JzZXJ2ZXIgPSBleHBvcnRzLmNoYW5uZWwgPSB1bmRlZmluZWQ7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBvYnNlcnZlciA9IHtcbiAgaW5zdGFuY2U6IG51bGwsXG4gIHVwZGF0ZUluc3RhbmNlOiBmdW5jdGlvbiB1cGRhdGVJbnN0YW5jZShpbnN0YW5jZSkge1xuICAgIG9ic2VydmVyLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gIH1cbn07IC8qKlxuICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICAgICpcbiAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICpcbiAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICAqXG4gICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgKlxuICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAqL1xuXG52YXIgRHVtbXlDaGFubmVsID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEdW1teUNoYW5uZWwob3B0cykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIER1bW15Q2hhbm5lbCk7XG5cbiAgICB0aGlzLndyaXR0ZW4gPSBbXTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKER1bW15Q2hhbm5lbCwgW3tcbiAgICBrZXk6IFwiaXNFbmNyeXB0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNFbmNyeXB0ZWQoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIndyaXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGJ1Zikge1xuICAgICAgdGhpcy53cml0dGVuLnB1c2goYnVmKTtcbiAgICAgIG9ic2VydmVyLnVwZGF0ZUluc3RhbmNlKHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0b0hleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0hleCgpIHtcbiAgICAgIHZhciBvdXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLndyaXR0ZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0ICs9IHRoaXMud3JpdHRlbltpXS50b0hleCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9CdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9CdWZmZXIoKSB7XG4gICAgICByZXR1cm4gbmV3IF9idWYuQ29tYmluZWRCdWZmZXIodGhpcy53cml0dGVuKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIER1bW15Q2hhbm5lbDtcbn0oKTtcblxudmFyIGNoYW5uZWwgPSBEdW1teUNoYW5uZWw7XG5cbmV4cG9ydHMuY2hhbm5lbCA9IGNoYW5uZWw7XG5leHBvcnRzLm9ic2VydmVyID0gb2JzZXJ2ZXI7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9uZXQgPSByZXF1aXJlKFwibmV0XCIpO1xuXG52YXIgX25ldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9uZXQpO1xuXG52YXIgX3RscyA9IHJlcXVpcmUoXCJ0bHNcIik7XG5cbnZhciBfdGxzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Rscyk7XG5cbnZhciBfZnMgPSByZXF1aXJlKFwiZnNcIik7XG5cbnZhciBfZnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnMpO1xuXG52YXIgX3BhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcblxudmFyIF9wYXRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BhdGgpO1xuXG52YXIgX29zID0gcmVxdWlyZShcIm9zXCIpO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoXCIuL2J1ZlwiKTtcblxudmFyIF91dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuLy4uL2Vycm9yXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfQ09OTkVDVElPTl9JREdFTiA9IDA7XG5cbmZ1bmN0aW9uIHVzZXJIb21lKCkge1xuICAvLyBGb3Igc29tZSByZWFzb24sIEJyb3dzZXJpZnkgY2hva2VzIG9uIHNoaW1taW5nIGBwcm9jZXNzYC4gVGhpcyBjb2RlXG4gIC8vIHdpbGwgbmV2ZXIgZ2V0IGV4ZWN1dGVkIG9uIHRoZSBicm93c2VyIGFueXdheSwgdG8ganVzdCBoYWNrIGFyb3VuZCBpdFxuICB2YXIgZ2V0T3V0T2ZIZXJlQnJvd3NlcmlmeVlvdXJlRHJ1bmsgPSByZXF1aXJlO1xuICB2YXIgcHJvY2VzcyA9IGdldE91dE9mSGVyZUJyb3dzZXJpZnlZb3VyZURydW5rKCdwcm9jZXNzJyk7XG5cbiAgcmV0dXJuIHByb2Nlc3MuZW52W3Byb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJyA/ICdVU0VSUFJPRklMRScgOiAnSE9NRSddO1xufVxuXG5mdW5jdGlvbiBta0Z1bGxQYXRoKHBhdGhUb0NyZWF0ZSkge1xuICB0cnkge1xuICAgIF9mczIuZGVmYXVsdC5ta2RpclN5bmMocGF0aFRvQ3JlYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAvLyBDcmVhdGUgcGFyZW50IGRpclxuICAgICAgbWtGdWxsUGF0aChfcGF0aDIuZGVmYXVsdC5kaXJuYW1lKHBhdGhUb0NyZWF0ZSkpO1xuICAgICAgLy8gQW5kIG5vdyB0cnkgYWdhaW5cbiAgICAgIG1rRnVsbFBhdGgocGF0aFRvQ3JlYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUuY29kZSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBjYikge1xuICB0cnkge1xuICAgIF9mczIuZGVmYXVsdC5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBjYihudWxsKTtcbiAgfVxuICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgcmVxdWlyZSgncmVhZGxpbmUnKS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBfZnMyLmRlZmF1bHQuY3JlYXRlUmVhZFN0cmVhbShrbm93bkhvc3RzUGF0aClcbiAgfSkub24oJ2xpbmUnLCBmdW5jdGlvbiAobGluZSkge1xuICAgIGlmICghZm91bmQgJiYgbGluZS5zdGFydHNXaXRoKHNlcnZlcklkKSkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgY2IobGluZS5zcGxpdChcIiBcIilbMV0pO1xuICAgIH1cbiAgfSkub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgIGNiKG51bGwpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZyA9IHt9O1xuZnVuY3Rpb24gc3RvcmVGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGZpbmdlcnByaW50LCBjYikge1xuICAvLyB3ZSBjaGVjayBpZiB0aGUgc2VydmVySWQgaGFzIGJlZW4gYXBwZW5kZWRcbiAgaWYgKCEhX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmdbc2VydmVySWRdKSB7XG4gICAgLy8gaWYgaXQgaGFzLCB3ZSBpZ25vcmUgaXRcbiAgICByZXR1cm4gY2IobnVsbCk7XG4gIH1cblxuICAvLyB3ZSBtYWtlIHRoZSBsaW5lIGFzIGFwcGVuZGVkXG4gIC8vICggMSBpcyBtb3JlIGVmZmljaWVudCB0byBzdG9yZSB0aGFuIHRydWUgYmVjYXVzZSB0cnVlIGlzIGFuIG9kZGJhbGwgKVxuICBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZ1tzZXJ2ZXJJZF0gPSAxO1xuXG4gIC8vIElmIGZpbGUgZG9lc24ndCBleGlzdCwgY3JlYXRlIGZ1bGwgcGF0aCB0byBpdFxuICB0cnkge1xuICAgIF9mczIuZGVmYXVsdC5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG1rRnVsbFBhdGgoX3BhdGgyLmRlZmF1bHQuZGlybmFtZShrbm93bkhvc3RzUGF0aCkpO1xuICB9XG5cbiAgX2ZzMi5kZWZhdWx0LmFwcGVuZEZpbGUoa25vd25Ib3N0c1BhdGgsIHNlcnZlcklkICsgXCIgXCIgKyBmaW5nZXJwcmludCArIF9vcy5FT0wsIFwidXRmOFwiLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgZGVsZXRlIF9sb2NrRmluZ2VycHJpbnRGcm9tQXBwZW5kaW5nW3NlcnZlcklkXTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gY2IoZXJyKTtcbiAgfSk7XG59XG5cbnZhciBUcnVzdFN0cmF0ZWd5ID0ge1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2luY2UgdmVyc2lvbiAxLjAuIFdpbGwgYmUgZGVsZXRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiB7QGxpbmsgI1RSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTfS5cbiAgICovXG4gIFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVM6IGZ1bmN0aW9uIFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVMob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcbiAgICBjb25zb2xlLmxvZyhcImBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTYCBoYXMgYmVlbiBkZXByZWNhdGVkIGFzIG9wdGlvbiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgXCIgKyBcInRoZSBkcml2ZXIuIFBsZWFzZSB1c2UgYFRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTYCBpbnN0ZWFkLlwiKTtcbiAgICByZXR1cm4gVHJ1c3RTdHJhdGVneS5UUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyhvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7XG4gIH0sXG4gIFRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyhvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIGlmICghb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzIHx8IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5sZW5ndGggPT0gMCkge1xuICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiWW91IGFyZSB1c2luZyBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBhcyB0aGUgbWV0aG9kIFwiICsgXCJ0byB2ZXJpZnkgdHJ1c3QgZm9yIGVuY3J5cHRlZCAgY29ubmVjdGlvbnMsIGJ1dCBoYXZlIG5vdCBjb25maWd1cmVkIGFueSBcIiArIFwidHJ1c3RlZENlcnRpZmljYXRlcy4gWW91ICBtdXN0IHNwZWNpZnkgdGhlIHBhdGggdG8gYXQgbGVhc3Qgb25lIHRydXN0ZWQgXCIgKyBcIlguNTA5IGNlcnRpZmljYXRlIGZvciB0aGlzIHRvIHdvcmsuIFR3byBvdGhlciBhbHRlcm5hdGl2ZXMgaXMgdG8gdXNlIFwiICsgXCJUUlVTVF9BTExfQ0VSVElGSUNBVEVTIG9yIHRvIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIGVuY3J5cHRlZD1cXFwiXCIgKyBfdXRpbC5FTkNSWVBUSU9OX09GRiArIFwiXFxcIlwiICsgXCJpbiB5b3VyIGRyaXZlciBjb25maWd1cmF0aW9uLlwiKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHRsc09wdHMgPSB7XG4gICAgICBjYTogb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzLm1hcChmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gX2ZzMi5kZWZhdWx0LnJlYWRGaWxlU3luYyhmKTtcbiAgICAgIH0pLFxuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSBjaGVjayBmb3IgdGhpcyBpbiB0aGUgY29ubmVjdCBjYWxsYmFjaywgdG8gZ2l2ZVxuICAgICAgLy8gYSBtb3JlIGhlbHBmdWwgZXJyb3IgdG8gdGhlIHVzZXJcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgdmFyIHNvY2tldCA9IF90bHMyLmRlZmF1bHQuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzb2NrZXQuYXV0aG9yaXplZCkge1xuICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuIElmIHlvdSB0cnVzdCB0aGUgZGF0YWJhc2UgeW91IGFyZSBjb25uZWN0aW5nIHRvLCBhZGRcIiArIFwiIHRoZSBzaWduaW5nIGNlcnRpZmljYXRlLCBvciB0aGUgc2VydmVyIGNlcnRpZmljYXRlLCB0byB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZXMgdHJ1c3RlZCBieSB0aGlzIGRyaXZlclwiICsgXCIgdXNpbmcgYG5lbzRqLnYxLmRyaXZlciguLiwgeyB0cnVzdGVkQ2VydGlmaWNhdGVzOlsncGF0aC90by9jZXJ0aWZpY2F0ZS5jcnQnXX0pLiBUaGlzIFwiICsgXCIgaXMgYSBzZWN1cml0eSBtZWFzdXJlIHRvIHByb3RlY3QgYWdhaW5zdCBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICsgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBgZW5jcnlwdGVkPVxcXCJcIiArIF91dGlsLkVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYFwiICsgXCIgaW4gdGhlIGRyaXZlciBvcHRpb25zLiBTb2NrZXQgcmVzcG9uZGVkIHdpdGg6IFwiICsgc29ja2V0LmF1dGhvcml6YXRpb25FcnJvcikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfSxcbiAgVFJVU1RfU1lTVEVNX0NBX1NJR05FRF9DRVJUSUZJQ0FURVM6IGZ1bmN0aW9uIFRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG5cbiAgICB2YXIgdGxzT3B0cyA9IHtcbiAgICAgIC8vIEJlY2F1c2Ugd2UgbWFudWFsbHkgY2hlY2sgZm9yIHRoaXMgaW4gdGhlIGNvbm5lY3QgY2FsbGJhY2ssIHRvIGdpdmVcbiAgICAgIC8vIGEgbW9yZSBoZWxwZnVsIGVycm9yIHRvIHRoZSB1c2VyXG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlXG4gICAgfTtcbiAgICB2YXIgc29ja2V0ID0gX3RsczIuZGVmYXVsdC5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNvY2tldC5hdXRob3JpemVkKSB7XG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZC4gSWYgeW91IHRydXN0IHRoZSBkYXRhYmFzZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8sIHVzZSBcIiArIFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgYW5kIGFkZFwiICsgXCIgdGhlIHNpZ25pbmcgY2VydGlmaWNhdGUsIG9yIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUsIHRvIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlcyB0cnVzdGVkIGJ5IHRoaXMgZHJpdmVyXCIgKyBcIiB1c2luZyBgbmVvNGoudjEuZHJpdmVyKC4uLCB7IHRydXN0ZWRDZXJ0aWZpY2F0ZXM6WydwYXRoL3RvL2NlcnRpZmljYXRlLmNydCddfSkuIFRoaXMgXCIgKyBcIiBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgdG8gcHJvdGVjdCBhZ2FpbnN0IG1hbi1pbi10aGUtbWlkZGxlIGF0dGFja3MuIElmIHlvdSBhcmUganVzdCB0cnlpbmcgXCIgKyBcIiBOZW80aiBvdXQgYW5kIGFyZSBub3QgY29uY2VybmVkIGFib3V0IGVuY3J5cHRpb24sIHNpbXBseSBkaXNhYmxlIGl0IHVzaW5nIGBlbmNyeXB0ZWQ9XFxcIlwiICsgX3V0aWwuRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgXCIgKyBcIiBpbiB0aGUgZHJpdmVyIG9wdGlvbnMuIFNvY2tldCByZXNwb25kZWQgd2l0aDogXCIgKyBzb2NrZXQuYXV0aG9yaXphdGlvbkVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgaW4gMS4xIGluIGZhdm91ciBvZiB7QGxpbmsgI1RSVVNUX0FMTF9DRVJUSUZJQ0FURVN9LiBXaWxsIGJlIGRlbGV0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAgICovXG4gIFRSVVNUX09OX0ZJUlNUX1VTRTogZnVuY3Rpb24gVFJVU1RfT05fRklSU1RfVVNFKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgY29uc29sZS5sb2coXCJgVFJVU1RfT05fRklSU1RfVVNFYCBoYXMgYmVlbiBkZXByZWNhdGVkIGFzIG9wdGlvbiBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgXCIgKyBcInRoZSBkcml2ZXIuIFBsZWFzZSB1c2UgYFRSVVNUX0FMTF9DRVJUSUZJQ0FURVNgIGluc3RlYWQuXCIpO1xuXG4gICAgdmFyIHRsc09wdHMgPSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IHZlcmlmeSB0aGUgY2VydGlmaWNhdGUgYWdhaW5zdCBrbm93bl9ob3N0c1xuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICB2YXIgc29ja2V0ID0gX3RsczIuZGVmYXVsdC5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2VydmVyQ2VydCA9IHNvY2tldC5nZXRQZWVyQ2VydGlmaWNhdGUoIC8qcmF3PSovdHJ1ZSk7XG5cbiAgICAgIGlmICghc2VydmVyQ2VydC5yYXcpIHtcbiAgICAgICAgLy8gSWYgYHJhd2AgaXMgbm90IGF2YWlsYWJsZSwgd2UncmUgb24gYW4gb2xkIHZlcnNpb24gb2YgTm9kZUpTLCBhbmRcbiAgICAgICAgLy8gdGhlIHJhdyBjZXJ0IGNhbm5vdCBiZSBhY2Nlc3NlZCAob3IsIGF0IGxlYXN0IEkgY291bGRuJ3QgZmluZCBhIHdheSB0bylcbiAgICAgICAgLy8gdGhlcmVmb3JlLCB3ZSBjYW4ndCBnZW5lcmF0ZSBhIFNIQTUxMiBmaW5nZXJwcmludCwgbWVhbmluZyB3ZSBjYW4ndFxuICAgICAgICAvLyBkbyBUT0ZVLCBhbmQgdGhlIHNhZmUgYXBwcm9hY2ggaXMgdG8gZmFpbC5cbiAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgTm9kZUpTIHRoYXQgZG9lcyBub3QgXCIgKyBcInN1cHBvcnQgdHJ1c3Qtb24tZmlyc3QgdXNlIGVuY3J5cHRpb24uIFlvdSBjYW4gZWl0aGVyIHVwZ3JhZGUgTm9kZUpTIHRvIFwiICsgXCJhIG5ld2VyIHZlcnNpb24sIHVzZSBgdHJ1c3Q6VFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNgIGluIHlvdXIgZHJpdmVyIFwiICsgXCJjb25maWcgaW5zdGVhZCwgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIHVzaW5nIGBlbmNyeXB0ZWQ6XFxcIlwiICsgX3V0aWwuRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIHNlcnZlckZpbmdlcnByaW50ID0gcmVxdWlyZSgnY3J5cHRvJykuY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKHNlcnZlckNlcnQucmF3KS5kaWdlc3QoXCJoZXhcIik7XG4gICAgICB2YXIga25vd25Ib3N0c1BhdGggPSBvcHRzLmtub3duSG9zdHMgfHwgX3BhdGgyLmRlZmF1bHQuam9pbih1c2VySG9tZSgpLCBcIi5uZW80alwiLCBcImtub3duX2hvc3RzXCIpO1xuICAgICAgdmFyIHNlcnZlcklkID0gb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG5cbiAgICAgIGxvYWRGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGZ1bmN0aW9uIChrbm93bkZpbmdlcnByaW50KSB7XG4gICAgICAgIGlmIChrbm93bkZpbmdlcnByaW50ID09PSBzZXJ2ZXJGaW5nZXJwcmludCkge1xuICAgICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgICB9IGVsc2UgaWYgKGtub3duRmluZ2VycHJpbnQgPT0gbnVsbCkge1xuICAgICAgICAgIHN0b3JlRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBzZXJ2ZXJGaW5nZXJwcmludCwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gb25GYWlsdXJlKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb25TdWNjZXNzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRGF0YWJhc2UgZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSBoYXMgY2hhbmdlZCwgYW5kIG5vIGxvbmdlciBcIiArIFwibWF0Y2hlcyB0aGUgY2VydGlmaWNhdGUgc3RvcmVkIGZvciBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAuIEFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbiwgdGhpcyBkcml2ZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSB0cnVzdCB0aGUgbmV3IFwiICsgXCJjZXJ0aWZpY2F0ZSwgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBhbGxvdyBhbiBhdHRhY2tlciB0byBwcmV0ZW5kIHRvIGJlIHRoZSBOZW80aiBcIiArIFwiaW5zdGFuY2Ugd2Ugd2FudCB0byBjb25uZWN0IHRvLiBUaGUgY2VydGlmaWNhdGUgcHJvdmlkZWQgYnkgdGhlIHNlcnZlciBsb29rcyBsaWtlOiBcIiArIHNlcnZlckNlcnQgKyBcIi4gSWYgeW91IHRydXN0IHRoYXQgdGhpcyBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCwgc2ltcGx5IHJlbW92ZSB0aGUgbGluZSBcIiArIFwic3RhcnRpbmcgd2l0aCBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAsIGFuZCB0aGUgZHJpdmVyIHdpbGwgXCIgKyBcInVwZGF0ZSB0aGUgZmlsZSB3aXRoIHRoZSBuZXcgY2VydGlmaWNhdGUuIFlvdSBjYW4gY29uZmlndXJlIHdoaWNoIGZpbGUgdGhlIGRyaXZlciBcIiArIFwic2hvdWxkIHVzZSB0byBzdG9yZSB0aGlzIGluZm9ybWF0aW9uIGJ5IHNldHRpbmcgYGtub3duSG9zdHNgIHRvIGFub3RoZXIgcGF0aCBpbiBcIiArIFwieW91ciBkcml2ZXIgY29uZmlndXJhdGlvbiAtIGFuZCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiB0aGVyZSBhcyB3ZWxsIHVzaW5nIFwiICsgXCJgZW5jcnlwdGVkOlxcXCJcIiArIF91dGlsLkVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYC5cIikpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuXG4gIFRSVVNUX0FMTF9DRVJUSUZJQ0FURVM6IGZ1bmN0aW9uIFRSVVNUX0FMTF9DRVJUSUZJQ0FURVMob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcbiAgICB2YXIgdGxzT3B0cyA9IHtcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuICAgIHZhciBzb2NrZXQgPSBfdGxzMi5kZWZhdWx0LmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIHRsc09wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjZXJ0aWZpY2F0ZSA9IHNvY2tldC5nZXRQZWVyQ2VydGlmaWNhdGUoKTtcbiAgICAgIGlmICgoMCwgX3V0aWwuaXNFbXB0eU9iamVjdE9yTnVsbCkoY2VydGlmaWNhdGUpKSB7XG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlNlY3VyZSBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsIGJ1dCBzZXJ2ZXIgZGlkIG5vdCByZXR1cm4gYW55IHZhbGlkIFwiICsgXCJjZXJ0aWZpY2F0ZXMuIFN1Y2ggY29ubmVjdGlvbiBjYW4gbm90IGJlIHRydXN0ZWQuIElmIHlvdSBhcmUganVzdCB0cnlpbmcgXCIgKyBcIiBOZW80aiBvdXQgYW5kIGFyZSBub3QgY29uY2VybmVkIGFib3V0IGVuY3J5cHRpb24sIHNpbXBseSBkaXNhYmxlIGl0IHVzaW5nIFwiICsgXCJgZW5jcnlwdGVkPVxcXCJcIiArIF91dGlsLkVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYCBpbiB0aGUgZHJpdmVyIG9wdGlvbnMuIFwiICsgXCJTb2NrZXQgcmVzcG9uZGVkIHdpdGg6IFwiICsgc29ja2V0LmF1dGhvcml6YXRpb25FcnJvcikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfVxufTtcblxuZnVuY3Rpb24gY29ubmVjdChvcHRzLCBvblN1Y2Nlc3MpIHtcbiAgdmFyIG9uRmFpbHVyZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIC8vc3RpbGwgYWxsb3cgYm9vbGVhbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgaWYgKG9wdHMuZW5jcnlwdGVkID09PSBmYWxzZSB8fCBvcHRzLmVuY3J5cHRlZCA9PT0gX3V0aWwuRU5DUllQVElPTl9PRkYpIHtcbiAgICB2YXIgY29ubiA9IF9uZXQyLmRlZmF1bHQuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgb25TdWNjZXNzKTtcbiAgICBjb25uLm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIGNvbm47XG4gIH0gZWxzZSBpZiAoVHJ1c3RTdHJhdGVneVtvcHRzLnRydXN0XSkge1xuICAgIHJldHVybiBUcnVzdFN0cmF0ZWd5W29wdHMudHJ1c3RdKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKTtcbiAgfSBlbHNlIHtcbiAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIHRydXN0IHN0cmF0ZWd5OiBcIiArIG9wdHMudHJ1c3QgKyBcIi4gUGxlYXNlIHVzZSBlaXRoZXIgXCIgKyBcInRydXN0OidUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUycgb3IgdHJ1c3Q6J1RSVVNUX0FMTF9DRVJUSUZJQ0FURVMnIGluIHlvdXIgZHJpdmVyIFwiICsgXCJjb25maWd1cmF0aW9uLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIFwiICsgXCJgZW5jcnlwdGVkOlxcXCJcIiArIF91dGlsLkVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYC4gVGhlcmUgaXMgbm8gbWVjaGFuaXNtIHRvIHVzZSBlbmNyeXB0aW9uIHdpdGhvdXQgdHJ1c3QgdmVyaWZpY2F0aW9uLCBcIiArIFwiYmVjYXVzZSB0aGlzIGluY3VycyB0aGUgb3ZlcmhlYWQgb2YgZW5jcnlwdGlvbiB3aXRob3V0IGltcHJvdmluZyBzZWN1cml0eS4gSWYgXCIgKyBcInRoZSBkcml2ZXIgZG9lcyBub3QgdmVyaWZ5IHRoYXQgdGhlIHBlZXIgaXQgaXMgY29ubmVjdGVkIHRvIGlzIHJlYWxseSBOZW80aiwgaXQgXCIgKyBcImlzIHZlcnkgZWFzeSBmb3IgYW4gYXR0YWNrZXIgdG8gYnlwYXNzIHRoZSBlbmNyeXB0aW9uIGJ5IHByZXRlbmRpbmcgdG8gYmUgTmVvNGouXCIpKTtcbiAgfVxufVxuXG4vKipcbiAqIEluIGEgTm9kZS5qcyBlbnZpcm9ubWVudCB0aGUgJ25ldCcgbW9kdWxlIGlzIHVzZWRcbiAqIGFzIHRyYW5zcG9ydC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cbnZhciBOb2RlQ2hhbm5lbCA9IGZ1bmN0aW9uICgpIHtcblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmhvc3QgLSBUaGUgaG9zdCwgaW5jbHVkaW5nIHByb3RvY29sIHRvIGNvbm5lY3QgdG8uXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gb3B0cy5wb3J0IC0gVGhlIHBvcnQgdG8gdXNlLlxuICAgKi9cbiAgZnVuY3Rpb24gTm9kZUNoYW5uZWwob3B0cykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIE5vZGVDaGFubmVsKTtcblxuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuaWQgPSBfQ09OTkVDVElPTl9JREdFTisrO1xuICAgIHRoaXMuYXZhaWxhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLl9wZW5kaW5nID0gW107XG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWQuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuX2VuY3J5cHRlZCA9IG9wdHMuZW5jcnlwdGVkO1xuICAgIHRoaXMuX2Nvbm4gPSBjb25uZWN0KG9wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc2VsZi5fb3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuX2Nvbm4ub24oJ2RhdGEnLCBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgIGlmIChzZWxmLm9ubWVzc2FnZSkge1xuICAgICAgICAgIHNlbGYub25tZXNzYWdlKG5ldyBfYnVmLk5vZGVCdWZmZXIoYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzZWxmLl9jb25uLm9uKCdlcnJvcicsIHNlbGYuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG4gICAgICBzZWxmLl9jb25uLm9uKCdlbmQnLCBzZWxmLl9oYW5kbGVDb25uZWN0aW9uVGVybWluYXRlZCk7XG5cbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKHBlbmRpbmdbaV0pO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShOb2RlQ2hhbm5lbCwgW3tcbiAgICBrZXk6IFwiX2hhbmRsZUNvbm5lY3Rpb25FcnJvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKGVycikge1xuICAgICAgdmFyIG1zZyA9IGVyci5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXInO1xuICAgICAgdGhpcy5fZXJyb3IgPSAoMCwgX2Vycm9yLm5ld0Vycm9yKShtc2csIF9lcnJvci5TRVNTSU9OX0VYUElSRUQpO1xuICAgICAgaWYgKHRoaXMub25lcnJvcikge1xuICAgICAgICB0aGlzLm9uZXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfaGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkKCkge1xuICAgICAgdGhpcy5fZXJyb3IgPSAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnQ29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IHNlcnZlcicsIF9lcnJvci5TRVNTSU9OX0VYUElSRUQpO1xuICAgICAgaWYgKHRoaXMub25lcnJvcikge1xuICAgICAgICB0aGlzLm9uZXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0VuY3J5cHRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0VuY3J5cHRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmNyeXB0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7Tm9kZUJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWZmZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nLnB1c2goYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5Ob2RlQnVmZmVyKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCBcIltDb25uI1wiK3RoaXMuaWQrXCJdIFNFTkQ6IFwiLCBidWZmZXIudG9TdHJpbmcoKSApO1xuICAgICAgICB0aGlzLl9jb25uLndyaXRlKGJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gd3JpdGU6IFwiICsgYnVmZmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNsb3NlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgdmFyIGNiID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5fb3BlbiA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuX2Nvbm4pIHtcbiAgICAgICAgdGhpcy5fY29ubi5lbmQoKTtcbiAgICAgICAgdGhpcy5fY29ubi5yZW1vdmVMaXN0ZW5lcignZW5kJywgdGhpcy5faGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWQpO1xuICAgICAgICB0aGlzLl9jb25uLm9uKCdlbmQnLCBjYik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTm9kZUNoYW5uZWw7XG59KCk7XG5cbnZhciBfbm9kZUNoYW5uZWxNb2R1bGUgPSB7IGNoYW5uZWw6IE5vZGVDaGFubmVsLCBhdmFpbGFibGU6IHRydWUgfTtcblxudHJ5IHtcbiAgLy8gT25seSBkZWZpbmUgdGhpcyBtb2R1bGUgaWYgJ25ldCcgaXMgYXZhaWxhYmxlXG4gIHJlcXVpcmUucmVzb2x2ZShcIm5ldFwiKTtcbn0gY2F0Y2ggKGUpIHtcbiAgX25vZGVDaGFubmVsTW9kdWxlID0geyBhdmFpbGFibGU6IGZhbHNlIH07XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9ub2RlQ2hhbm5lbE1vZHVsZTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBXZWJTb2NrZXRDaGFubmVsIHRvIGJlIHVzZWQgaW4gd2ViIGJyb3dzZXJzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbnZhciBXZWJTb2NrZXRDaGFubmVsID0gZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuaG9zdCAtIFRoZSBob3N0LCBpbmNsdWRpbmcgcHJvdG9jb2wgdG8gY29ubmVjdCB0by5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBvcHRzLnBvcnQgLSBUaGUgcG9ydCB0byB1c2UuXG4gICAqL1xuICBmdW5jdGlvbiBXZWJTb2NrZXRDaGFubmVsKG9wdHMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBXZWJTb2NrZXRDaGFubmVsKTtcblxuXG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuX2VuY3J5cHRlZCA9IG9wdHMuZW5jcnlwdGVkO1xuXG4gICAgdmFyIHNjaGVtZSA9IFwid3NcIjtcbiAgICAvL0FsbG93IGJvb2xlYW4gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgaWYgKG9wdHMuZW5jcnlwdGVkID09PSB0cnVlIHx8IG9wdHMuZW5jcnlwdGVkID09PSBfdXRpbC5FTkNSWVBUSU9OX09OKSB7XG4gICAgICBpZiAoIW9wdHMudHJ1c3QgfHwgb3B0cy50cnVzdCA9PT0gXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSB7XG4gICAgICAgIHNjaGVtZSA9IFwid3NzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhlIGJyb3dzZXIgdmVyc2lvbiBvZiB0aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIG9uZSB0cnVzdCBcIiArIFwic3RyYXRlZ3ksICdUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUycuIFwiICsgb3B0cy50cnVzdCArIFwiIGlzIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSBcIiArIFwiZWl0aGVyIHVzZSBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBvciBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArIFwiYGVuY3J5cHRlZDpcXFwiXCIgKyBfdXRpbC5FTkNSWVBUSU9OX09GRiArIFwiXFxcImAgaW4gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cmwgPSBzY2hlbWUgKyBcIjovL1wiICsgb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG4gICAgdGhpcy5fd3MgPSBuZXcgV2ViU29ja2V0KHRoaXMuX3VybCk7XG4gICAgdGhpcy5fd3MuYmluYXJ5VHlwZSA9IFwiYXJyYXlidWZmZXJcIjtcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAvL0FsbCBjb25uZWN0aW9uIGVycm9ycyBhcmUgbm90IHNlbnQgdG8gdGhlIGVycm9yIGhhbmRsZXJcbiAgICAvL3dlIG11c3QgYWxzbyBjaGVjayBmb3IgZGlydHkgY2xvc2UgY2FsbHNcbiAgICB0aGlzLl93cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmICghZS53YXNDbGVhbikge1xuICAgICAgICBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3dzLm9ub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICB2YXIgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKHBlbmRpbmdbaV0pO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fd3Mub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoc2VsZi5vbm1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIGIgPSBuZXcgX2J1Zi5IZWFwQnVmZmVyKGV2ZW50LmRhdGEpO1xuICAgICAgICBzZWxmLm9ubWVzc2FnZShiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fd3Mub25lcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcjtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFdlYlNvY2tldENoYW5uZWwsIFt7XG4gICAga2V5OiAnX2hhbmRsZUNvbm5lY3Rpb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKSB7XG4gICAgICAvLyBvbmVycm9yIHRyaWdnZXJzIG9uIHdlYnNvY2tldCBjbG9zZSBhcyB3ZWxsLi4gZG9uJ3QgZ2V0IG1lIHN0YXJ0ZWQuXG4gICAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1Nzc5ODMxL2hvdy10by1jYXRjaC13ZWJzb2NrZXQtY29ubmVjdGlvbi10by13cy14eHhubi1mYWlsZWQtY29ubmVjdGlvbi1jbG9zZWQtYmVcbiAgICAgICAgdGhpcy5fZXJyb3IgPSAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWx1cmUuIER1ZSB0byBzZWN1cml0eSBcIiArIFwiY29uc3RyYWludHMgaW4geW91ciB3ZWIgYnJvd3NlciwgdGhlIHJlYXNvbiBmb3IgdGhlIGZhaWx1cmUgaXMgbm90IGF2YWlsYWJsZSBcIiArIFwidG8gdGhpcyBOZW80aiBEcml2ZXIuIFBsZWFzZSB1c2UgeW91ciBicm93c2VycyBkZXZlbG9wbWVudCBjb25zb2xlIHRvIGRldGVybWluZSBcIiArIFwidGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGZhaWx1cmUuIENvbW1vbiByZWFzb25zIGluY2x1ZGUgdGhlIGRhdGFiYXNlIGJlaW5nIFwiICsgXCJ1bmF2YWlsYWJsZSwgdXNpbmcgdGhlIHdyb25nIGNvbm5lY3Rpb24gVVJMIG9yIHRlbXBvcmFyeSBuZXR3b3JrIHByb2JsZW1zLiBcIiArIFwiSWYgeW91IGhhdmUgZW5hYmxlZCBlbmNyeXB0aW9uLCBlbnN1cmUgeW91ciBicm93c2VyIGlzIGNvbmZpZ3VyZWQgdG8gdHJ1c3QgdGhlIFwiICsgXCJjZXJ0aWZpY2F0ZSBOZW80aiBpcyBjb25maWd1cmVkIHRvIHVzZS4gV2ViU29ja2V0IGByZWFkeVN0YXRlYCBpczogXCIgKyB0aGlzLl93cy5yZWFkeVN0YXRlKTtcbiAgICAgICAgaWYgKHRoaXMub25lcnJvcikge1xuICAgICAgICAgIHRoaXMub25lcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc0VuY3J5cHRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VuY3J5cHRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXcml0ZSB0aGUgcGFzc2VkIGluIGJ1ZmZlciB0byBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtIZWFwQnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgdG8gd3JpdGVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnd3JpdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWZmZXIpIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZyAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nLnB1c2goYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5IZWFwQnVmZmVyKSB7XG4gICAgICAgIHRoaXMuX3dzLnNlbmQoYnVmZmVyLl9idWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byBzZW5kIGJ1ZmZlcjogXCIgKyBidWZmZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdjbG9zZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgdmFyIGNiID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5fb3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5fd3MuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3dzLm9uY2xvc2UgPSBjYjtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFdlYlNvY2tldENoYW5uZWw7XG59KCk7IC8qKlxuICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gICAgICAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAgICAgICpcbiAgICAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gICAgICAqXG4gICAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgICAqXG4gICAgICAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICAgICpcbiAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAgICAgKi9cblxudmFyIGF2YWlsYWJsZSA9IHR5cGVvZiBXZWJTb2NrZXQgIT09ICd1bmRlZmluZWQnO1xudmFyIF93ZWJzb2NrZXRDaGFubmVsTW9kdWxlID0geyBjaGFubmVsOiBXZWJTb2NrZXRDaGFubmVsLCBhdmFpbGFibGU6IGF2YWlsYWJsZSB9O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfd2Vic29ja2V0Q2hhbm5lbE1vZHVsZTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkRlY2h1bmtlciA9IGV4cG9ydHMuQ2h1bmtlciA9IHVuZGVmaW5lZDtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybicpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIpO1xuXG52YXIgX2luaGVyaXRzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xuXG52YXIgX2luaGVyaXRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luaGVyaXRzMik7XG5cbnZhciBfYnVmID0gcmVxdWlyZSgnLi9idWYnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIF9DSFVOS19IRUFERVJfU0laRSA9IDIsXG4gICAgX01FU1NBR0VfQk9VTkRBUlkgPSAweDAwLFxuICAgIF9ERUZBVUxUX0JVRkZFUl9TSVpFID0gMTQwMDsgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjEzNzM0L21heGltdW0tcGFja2V0LXNpemUtZm9yLWEtdGNwLWNvbm5lY3Rpb25cblxuLyoqXG4gKiBMb29rcyBsaWtlIGEgd3JpdGFibGUgYnVmZmVyLCBjaHVua3Mgb3V0cHV0IHRyYW5zcGFyZW50bHkgaW50byBhIGNoYW5uZWwgYmVsb3cuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBDaHVua2VyID0gZnVuY3Rpb24gKF9CYXNlQnVmZmVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKENodW5rZXIsIF9CYXNlQnVmZmVyKTtcblxuICBmdW5jdGlvbiBDaHVua2VyKGNoYW5uZWwsIGJ1ZmZlclNpemUpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBDaHVua2VyKTtcblxuICAgIHZhciBfdGhpcyA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKENodW5rZXIuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKENodW5rZXIpKS5jYWxsKHRoaXMsIDApKTtcblxuICAgIF90aGlzLl9idWZmZXJTaXplID0gYnVmZmVyU2l6ZSB8fCBfREVGQVVMVF9CVUZGRVJfU0laRTtcbiAgICBfdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIF90aGlzLl9idWZmZXIgPSAoMCwgX2J1Zi5hbGxvYykoX3RoaXMuX2J1ZmZlclNpemUpO1xuICAgIF90aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IDA7XG4gICAgX3RoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKENodW5rZXIsIFt7XG4gICAga2V5OiAncHV0VUludDgnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1dEludDgnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2Vuc3VyZSgxKTtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXRGbG9hdDY0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoOCk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVGbG9hdDY0KHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHV0Qnl0ZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgZGF0YSkge1xuICAgICAgLy8gVE9ETzogSWYgZGF0YSBpcyBsYXJnZXIgdGhhbiBvdXIgY2h1bmsgc2l6ZSBvciBzbywgd2UncmUgdmVyeSBsaWtlbHkgYmV0dGVyIG9mZiBqdXN0IHBhc3NpbmcgdGhpcyBidWZmZXIgb25cbiAgICAgIC8vIHJhdGhlciB0aGFuIGRvaW5nIHRoZSBjb3B5IGhlcmUgVE9ETzogKmhvd2V2ZXIqIG5vdGUgdGhhdCB3ZSBuZWVkIHNvbWUgd2F5IHRvIGZpbmQgb3V0IHdoZW4gdGhlIGRhdGEgaGFzIGJlZW5cbiAgICAgIC8vIHdyaXR0ZW4gKGFuZCB0aHVzIHRoZSBidWZmZXIgY2FuIGJlIHJlLXVzZWQpIGlmIHdlIHRha2UgdGhhdCBhcHByb2FjaFxuICAgICAgd2hpbGUgKGRhdGEucmVtYWluaW5nKCkgPiAwKSB7XG4gICAgICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbiBvcGVuIGNodW5rLCBhbmQgdGhhdCBpdCBoYXMgYXQgbGVhc3Qgb25lIGJ5dGUgb2Ygc3BhY2UgbGVmdFxuICAgICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPiBkYXRhLnJlbWFpbmluZygpKSB7XG4gICAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YS5yZWFkU2xpY2UodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZsdXNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnBvc2l0aW9uID4gMCkge1xuICAgICAgICB0aGlzLl9jbG9zZUNodW5rSWZPcGVuKCk7XG5cbiAgICAgICAgLy8gTG9jYWwgY29weSBhbmQgY2xlYXIgdGhlIGJ1ZmZlciBmaWVsZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGJ1ZmZlciBpcyBub3QgcmUtcmVsZWFzZWQgaWYgdGhlIGZsdXNoIGNhbGwgZmFpbHNcbiAgICAgICAgdmFyIG91dCA9IHRoaXMuX2J1ZmZlcjtcbiAgICAgICAgdGhpcy5fYnVmZmVyID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9jaC53cml0ZShvdXQuZ2V0U2xpY2UoMCwgb3V0LnBvc2l0aW9uKSk7XG5cbiAgICAgICAgLy8gQWxsb2MgYSBuZXcgb3V0cHV0IGJ1ZmZlci4gV2UgYXNzdW1lIHdlJ3JlIHVzaW5nIE5vZGVKUydzIGJ1ZmZlciBwb29saW5nIHVuZGVyIHRoZSBob29kIGhlcmUhXG4gICAgICAgIHRoaXMuX2J1ZmZlciA9ICgwLCBfYnVmLmFsbG9jKSh0aGlzLl9idWZmZXJTaXplKTtcbiAgICAgICAgdGhpcy5fY2h1bmtPcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCb2x0IG1lc3NhZ2VzIGFyZSBlbmNvZGVkIGluIG9uZSBvciBtb3JlIGNodW5rcywgYW5kIHRoZSBib3VuZGFyeSBiZXR3ZWVuIHR3byBtZXNzYWdlc1xuICAgICAqIGlzIGVuY29kZWQgYXMgYSAwLWxlbmd0aCBjaHVuaywgYDAwIDAwYC4gVGhpcyBpbnNlcnRzIHN1Y2ggYSBtZXNzYWdlIGJvdW5kYXJ5LCBjbG9zaW5nXG4gICAgICogYW55IGN1cnJlbnRseSBvcGVuIGNodW5rIGFzIG5lZWRlZFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdtZXNzYWdlQm91bmRhcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtZXNzYWdlQm91bmRhcnkoKSB7XG5cbiAgICAgIHRoaXMuX2Nsb3NlQ2h1bmtJZk9wZW4oKTtcblxuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSA8IF9DSFVOS19IRUFERVJfU0laRSkge1xuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdyaXRlIG1lc3NhZ2UgYm91bmRhcnlcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDE2KF9NRVNTQUdFX0JPVU5EQVJZKTtcbiAgICB9XG5cbiAgICAvKiogRW5zdXJlIGF0IGxlYXN0IHRoZSBnaXZlbiBzaXplIGlzIGF2YWlsYWJsZSBmb3Igd3JpdGluZyAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdfZW5zdXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Vuc3VyZShzaXplKSB7XG4gICAgICB2YXIgdG9Xcml0ZVNpemUgPSB0aGlzLl9jaHVua09wZW4gPyBzaXplIDogc2l6ZSArIF9DSFVOS19IRUFERVJfU0laRTtcbiAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPCB0b1dyaXRlU2l6ZSkge1xuICAgICAgICB0aGlzLmZsdXNoKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0ID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uO1xuICAgICAgICB0aGlzLl9idWZmZXIucG9zaXRpb24gPSB0aGlzLl9idWZmZXIucG9zaXRpb24gKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2Nsb3NlQ2h1bmtJZk9wZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY2xvc2VDaHVua0lmT3BlbigpIHtcbiAgICAgIGlmICh0aGlzLl9jaHVua09wZW4pIHtcbiAgICAgICAgdmFyIGNodW5rU2l6ZSA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbiAtICh0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCArIF9DSFVOS19IRUFERVJfU0laRSk7XG4gICAgICAgIHRoaXMuX2J1ZmZlci5wdXRVSW50MTYodGhpcy5fY3VycmVudENodW5rU3RhcnQsIGNodW5rU2l6ZSk7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQ2h1bmtlcjtcbn0oX2J1Zi5CYXNlQnVmZmVyKTtcblxuLyoqXG4gKiBDb21iaW5lcyBjaHVua3MgdW50aWwgYSBjb21wbGV0ZSBtZXNzYWdlIGlzIGdhdGhlcmVkIHVwLCBhbmQgdGhlbiBmb3J3YXJkcyB0aGF0XG4gKiBtZXNzYWdlIHRvIGFuICdvbm1lc3NhZ2UnIGxpc3RlbmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxuXG52YXIgRGVjaHVua2VyID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEZWNodW5rZXIoKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgRGVjaHVua2VyKTtcblxuICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gMDtcbiAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShEZWNodW5rZXIsIFt7XG4gICAga2V5OiAnQVdBSVRJTkdfQ0hVTksnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBBV0FJVElOR19DSFVOSyhidWYpIHtcbiAgICAgIGlmIChidWYucmVtYWluaW5nKCkgPj0gMikge1xuICAgICAgICAvLyBXaG9sZSBoZWFkZXIgYXZhaWxhYmxlLCByZWFkIHRoYXRcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uSGVhZGVyKGJ1Zi5yZWFkVUludDE2KCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT25seSBvbmUgYnl0ZSBhdmFpbGFibGUsIHJlYWQgdGhhdCBhbmQgd2FpdCBmb3IgdGhlIHNlY29uZCBieXRlXG4gICAgICAgIHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciA9IGJ1Zi5yZWFkVUludDgoKSA8PCA4O1xuICAgICAgICByZXR1cm4gdGhpcy5JTl9IRUFERVI7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnSU5fSEVBREVSJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gSU5fSEVBREVSKGJ1Zikge1xuICAgICAgLy8gRmlyc3QgaGVhZGVyIGJ5dGUgcmVhZCwgbm93IHdlIHJlYWQgdGhlIG5leHQgb25lXG4gICAgICByZXR1cm4gdGhpcy5fb25IZWFkZXIoKHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciB8IGJ1Zi5yZWFkVUludDgoKSkgJiAweEZGRkYpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ0lOX0NIVU5LJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gSU5fQ0hVTksoYnVmKSB7XG4gICAgICBpZiAodGhpcy5fY2h1bmtTaXplIDw9IGJ1Zi5yZW1haW5pbmcoKSkge1xuICAgICAgICAvLyBDdXJyZW50IHBhY2tldCBpcyBsYXJnZXIgdGhhbiBjdXJyZW50IGNodW5rLCBvciBzYW1lIHNpemU6XG4gICAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlLnB1c2goYnVmLnJlYWRTbGljZSh0aGlzLl9jaHVua1NpemUpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDdXJyZW50IHBhY2tldCBpcyBzbWFsbGVyIHRoYW4gdGhlIGNodW5rIHdlJ3JlIHJlYWRpbmcsIHNwbGl0IHRoZSBjdXJyZW50IGNodW5rIGl0c2VsZiB1cFxuICAgICAgICB0aGlzLl9jaHVua1NpemUgLT0gYnVmLnJlbWFpbmluZygpO1xuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZS5wdXNoKGJ1Zi5yZWFkU2xpY2UoYnVmLnJlbWFpbmluZygpKSk7XG4gICAgICAgIHJldHVybiB0aGlzLklOX0NIVU5LO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ0NMT1NFRCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIENMT1NFRChidWYpIHt9XG4gICAgLy8gbm8tb3BcblxuXG4gICAgLyoqIENhbGxlZCB3aGVuIGEgY29tcGxldGUgY2h1bmsgaGVhZGVyIGhhcyBiZWVuIHJlY2lldmVkICovXG5cbiAgfSwge1xuICAgIGtleTogJ19vbkhlYWRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9vbkhlYWRlcihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIgPT0gMCkge1xuICAgICAgICAvLyBNZXNzYWdlIGJvdW5kYXJ5XG4gICAgICAgIHZhciBtZXNzYWdlID0gdm9pZCAwO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudE1lc3NhZ2UubGVuZ3RoID09IDEpIHtcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5fY3VycmVudE1lc3NhZ2VbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG5ldyBfYnVmLkNvbWJpbmVkQnVmZmVyKHRoaXMuX2N1cnJlbnRNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgICAgICB0aGlzLm9ubWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaHVua1NpemUgPSBoZWFkZXI7XG4gICAgICAgIHJldHVybiB0aGlzLklOX0NIVU5LO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3dyaXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmKSB7XG4gICAgICB3aGlsZSAoYnVmLmhhc1JlbWFpbmluZygpKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gdGhpcy5fc3RhdGUoYnVmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERlY2h1bmtlcjtcbn0oKTtcblxuZXhwb3J0cy5DaHVua2VyID0gQ2h1bmtlcjtcbmV4cG9ydHMuRGVjaHVua2VyID0gRGVjaHVua2VyOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuRU1QVFlfQ09OTkVDVElPTl9IT0xERVIgPSB1bmRlZmluZWQ7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRQcm90b3R5cGVPZik7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybicpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIpO1xuXG52YXIgX2luaGVyaXRzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xuXG52YXIgX2luaGVyaXRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luaGVyaXRzMik7XG5cbnZhciBfcHJvbWlzZSA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlJyk7XG5cbnZhciBfcHJvbWlzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9taXNlKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcicpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIFV0aWxpdHkgdG8gbGF6aWx5IGluaXRpYWxpemUgY29ubmVjdGlvbnMgYW5kIHJldHVybiB0aGVtIGJhY2sgdG8gdGhlIHBvb2wgd2hlbiB1bnVzZWQuXG4gKi9cbnZhciBDb25uZWN0aW9uSG9sZGVyID0gZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGUgLSB0aGUgYWNjZXNzIG1vZGUgZm9yIG5ldyBjb25uZWN0aW9uIGhvbGRlci5cbiAgICogQHBhcmFtIHtDb25uZWN0aW9uUHJvdmlkZXJ9IGNvbm5lY3Rpb25Qcm92aWRlciAtIHRoZSBjb25uZWN0aW9uIHByb3ZpZGVyIHRvIGFjcXVpcmUgY29ubmVjdGlvbnMgZnJvbS5cbiAgICovXG4gIGZ1bmN0aW9uIENvbm5lY3Rpb25Ib2xkZXIobW9kZSwgY29ubmVjdGlvblByb3ZpZGVyKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgQ29ubmVjdGlvbkhvbGRlcik7XG5cbiAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvdmlkZXIgPSBjb25uZWN0aW9uUHJvdmlkZXI7XG4gICAgdGhpcy5fcmVmZXJlbmNlQ291bnQgPSAwO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZShudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoaXMgaG9sZGVyIGluaXRpYWxpemUgbmV3IGNvbm5lY3Rpb24gaWYgbm9uZSBleGlzdHMgYWxyZWFkeS5cbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKi9cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKENvbm5lY3Rpb25Ib2xkZXIsIFt7XG4gICAga2V5OiAnaW5pdGlhbGl6ZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0aWFsaXplQ29ubmVjdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlci5hY3F1aXJlQ29ubmVjdGlvbih0aGlzLl9tb2RlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3JlZmVyZW5jZUNvdW50Kys7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gcHJvbWlzZS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPENvbm5lY3Rpb24+fSBwcm9taXNlIHJlc29sdmVkIHdpdGggdGhlIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnZ2V0Q29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbm5lY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm90aWZ5IHRoaXMgaG9sZGVyIHRoYXQgc2luZ2xlIHBhcnR5IGRvZXMgbm90IHJlcXVpcmUgY3VycmVudCBjb25uZWN0aW9uIGFueSBtb3JlLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2U8Q29ubmVjdGlvbj59IHByb21pc2UgcmVzb2x2ZWQgd2l0aCB0aGUgY3VycmVudCBjb25uZWN0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdyZWxlYXNlQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbGVhc2VDb25uZWN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX3JlZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVmZXJlbmNlQ291bnQtLTtcbiAgICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgICAvLyByZWxlYXNlIGEgY29ubmVjdGlvbiB3aXRob3V0IG11dGluZyBBQ0tfRkFJTFVSRSwgdGhpcyBpcyB0aGUgbGFzdCBhY3Rpb24gb24gdGhpcyBjb25uZWN0aW9uXG4gICAgICAgIHJldHVybiB0aGlzLl9yZWxlYXNlQ29ubmVjdGlvbih0cnVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhpcyBob2xkZXIgYW5kIHJlbGVhc2VzIGN1cnJlbnQgY29ubmVjdGlvbiAoaWYgYW55KSBkZXNwaXRlIGFueSBleGlzdGluZyB1c2Vycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPENvbm5lY3Rpb24+fSBwcm9taXNlIHJlc29sdmVkIHdoZW4gY3VycmVudCBjb25uZWN0aW9uIGlzIHJlbGVhc2VkIHRvIHRoZSBwb29sLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdjbG9zZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgaWYgKHRoaXMuX3JlZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3JlZmVyZW5jZUNvdW50ID0gMDtcbiAgICAgIC8vIHJlbGVhc2UgYSBjb25uZWN0aW9uIGFuZCBtdXRlIEFDS19GQUlMVVJFLCB0aGlzIG1pZ2h0IGJlIGNhbGxlZCBjb25jdXJyZW50bHkgd2l0aCBvdGhlclxuICAgICAgLy8gb3BlcmF0aW9ucyBhbmQgdGh1cyBzaG91bGQgaWdub3JlIGZhaWx1cmUgaGFuZGxpbmdcbiAgICAgIHJldHVybiB0aGlzLl9yZWxlYXNlQ29ubmVjdGlvbihmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBjdXJyZW50IHBvb2xlZCBjb25uZWN0aW9uIGluc3RhbmNlIHRvIHRoZSBjb25uZWN0aW9uIHBvb2wuXG4gICAgICogV2UgZG9uJ3QgcG9vbCBTZXNzaW9uIGluc3RhbmNlcywgdG8gYXZvaWQgdXNlcnMgdXNpbmcgdGhlIFNlc3Npb24gYWZ0ZXIgdGhleSd2ZSBjYWxsZWQgY2xvc2UuXG4gICAgICogVGhlIGBTZXNzaW9uYCBvYmplY3QgaXMganVzdCBhIHRoaW4gd3JhcHBlciBhcm91bmQgQ29ubmVjdGlvbiBhbnl3YXksIHNvIGl0IG1ha2VzIGxpdHRsZSBkaWZmZXJlbmNlLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IC0gcHJvbWlzZSByZXNvbHZlZCB0aGVuIGNvbm5lY3Rpb24gaXMgcmV0dXJuZWQgdG8gdGhlIHBvb2wuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnX3JlbGVhc2VDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3JlbGVhc2VDb25uZWN0aW9uKHN5bmMpIHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gdGhpcy5fY29ubmVjdGlvblByb21pc2UudGhlbihmdW5jdGlvbiAoY29ubmVjdGlvbikge1xuICAgICAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgICAgIGlmIChzeW5jKSB7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlc2V0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVzZXRBc3luYygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25uZWN0aW9uLnN5bmMoKTtcbiAgICAgICAgICBjb25uZWN0aW9uLl9yZWxlYXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChpZ25vcmVkRXJyb3IpIHt9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQ29ubmVjdGlvbkhvbGRlcjtcbn0oKTsgLyoqXG4gICAgICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAgICAgICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICAgICAgKlxuICAgICAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAgICAgICpcbiAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICAgICpcbiAgICAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgICAgKlxuICAgICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gICAgICAqL1xuXG5leHBvcnRzLmRlZmF1bHQgPSBDb25uZWN0aW9uSG9sZGVyO1xuXG52YXIgRW1wdHlDb25uZWN0aW9uSG9sZGVyID0gZnVuY3Rpb24gKF9Db25uZWN0aW9uSG9sZGVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKEVtcHR5Q29ubmVjdGlvbkhvbGRlciwgX0Nvbm5lY3Rpb25Ib2xkZXIpO1xuXG4gIGZ1bmN0aW9uIEVtcHR5Q29ubmVjdGlvbkhvbGRlcigpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBFbXB0eUNvbm5lY3Rpb25Ib2xkZXIpO1xuICAgIHJldHVybiAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChFbXB0eUNvbm5lY3Rpb25Ib2xkZXIuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKEVtcHR5Q29ubmVjdGlvbkhvbGRlcikpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoRW1wdHlDb25uZWN0aW9uSG9sZGVyLCBbe1xuICAgIGtleTogJ2luaXRpYWxpemVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGluaXRpYWxpemVcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29ubmVjdGlvbigpIHtcbiAgICAgIHJldHVybiBfcHJvbWlzZTIuZGVmYXVsdC5yZWplY3QoKDAsIF9lcnJvci5uZXdFcnJvcikoJ1RoaXMgY29ubmVjdGlvbiBob2xkZXIgZG9lcyBub3Qgc2VydmUgY29ubmVjdGlvbnMnKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVsZWFzZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWxlYXNlQ29ubmVjdGlvbigpIHtcbiAgICAgIHJldHVybiBfcHJvbWlzZTIuZGVmYXVsdC5yZXNvbHZlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHJldHVybiBfcHJvbWlzZTIuZGVmYXVsdC5yZXNvbHZlKCk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBFbXB0eUNvbm5lY3Rpb25Ib2xkZXI7XG59KENvbm5lY3Rpb25Ib2xkZXIpO1xuXG4vKipcbiAqIENvbm5lY3Rpb24gaG9sZGVyIHRoYXQgZG9lcyBub3QgbWFuYWdlIGFueSBjb25uZWN0aW9ucy5cbiAqIEB0eXBlIHtDb25uZWN0aW9uSG9sZGVyfVxuICovXG5cblxudmFyIEVNUFRZX0NPTk5FQ1RJT05fSE9MREVSID0gZXhwb3J0cy5FTVBUWV9DT05ORUNUSU9OX0hPTERFUiA9IG5ldyBFbXB0eUNvbm5lY3Rpb25Ib2xkZXIoKTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLlNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlciA9IGV4cG9ydHMuTG9hZEJhbGFuY2VyID0gZXhwb3J0cy5EaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfcHJvbWlzZSA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlJyk7XG5cbnZhciBfcHJvbWlzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9taXNlKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJyk7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMik7XG5cbnZhciBfaW5oZXJpdHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5cbnZhciBfaW5oZXJpdHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5oZXJpdHMyKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcicpO1xuXG52YXIgX2RyaXZlciA9IHJlcXVpcmUoJy4uL2RyaXZlcicpO1xuXG52YXIgX3Nlc3Npb24gPSByZXF1aXJlKCcuLi9zZXNzaW9uJyk7XG5cbnZhciBfc2Vzc2lvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXNzaW9uKTtcblxudmFyIF9yb3VuZFJvYmluQXJyYXkgPSByZXF1aXJlKCcuL3JvdW5kLXJvYmluLWFycmF5Jyk7XG5cbnZhciBfcm91bmRSb2JpbkFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JvdW5kUm9iaW5BcnJheSk7XG5cbnZhciBfcm91dGluZ1RhYmxlID0gcmVxdWlyZSgnLi9yb3V0aW5nLXRhYmxlJyk7XG5cbnZhciBfcm91dGluZ1RhYmxlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JvdXRpbmdUYWJsZSk7XG5cbnZhciBfcmVkaXNjb3ZlcnkgPSByZXF1aXJlKCcuL3JlZGlzY292ZXJ5Jyk7XG5cbnZhciBfcmVkaXNjb3ZlcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVkaXNjb3ZlcnkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIENvbm5lY3Rpb25Qcm92aWRlciA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQ29ubmVjdGlvblByb3ZpZGVyKCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIENvbm5lY3Rpb25Qcm92aWRlcik7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShDb25uZWN0aW9uUHJvdmlkZXIsIFt7XG4gICAga2V5OiAnYWNxdWlyZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0IG1ldGhvZCcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ193aXRoQWRkaXRpb25hbE9uRXJyb3JDYWxsYmFjaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF93aXRoQWRkaXRpb25hbE9uRXJyb3JDYWxsYmFjayhjb25uZWN0aW9uUHJvbWlzZSwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgICAvLyBpbnN0YWxsIGVycm9yIGhhbmRsZXIgZnJvbSB0aGUgZHJpdmVyIG9uIHRoZSBjb25uZWN0aW9uIHByb21pc2U7IHRoaXMgY2FsbGJhY2sgaXMgaW5zdGFsbGVkIHNlcGFyYXRlbHlcbiAgICAgIC8vIHNvIHRoYXQgaXQgZG9lcyBub3QgaGFuZGxlIGVycm9ycywgaW5zdGVhZCBpdCBpcyBqdXN0IGFuIGFkZGl0aW9uYWwgZXJyb3IgcmVwb3J0aW5nIGZhY2lsaXR5LlxuICAgICAgY29ubmVjdGlvblByb21pc2UuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGRyaXZlck9uRXJyb3JDYWxsYmFjayhlcnJvcik7XG4gICAgICB9KTtcbiAgICAgIC8vIHJldHVybiB0aGUgb3JpZ2luYWwgY29ubmVjdGlvbiBwcm9taXNlXG4gICAgICByZXR1cm4gY29ubmVjdGlvblByb21pc2U7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBDb25uZWN0aW9uUHJvdmlkZXI7XG59KCk7XG5cbnZhciBEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIgPSBleHBvcnRzLkRpcmVjdENvbm5lY3Rpb25Qcm92aWRlciA9IGZ1bmN0aW9uIChfQ29ubmVjdGlvblByb3ZpZGVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKERpcmVjdENvbm5lY3Rpb25Qcm92aWRlciwgX0Nvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgZnVuY3Rpb24gRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyKGFkZHJlc3MsIGNvbm5lY3Rpb25Qb29sLCBkcml2ZXJPbkVycm9yQ2FsbGJhY2spIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgdmFyIF90aGlzID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIpKS5jYWxsKHRoaXMpKTtcblxuICAgIF90aGlzLl9hZGRyZXNzID0gYWRkcmVzcztcbiAgICBfdGhpcy5fY29ubmVjdGlvblBvb2wgPSBjb25uZWN0aW9uUG9vbDtcbiAgICBfdGhpcy5fZHJpdmVyT25FcnJvckNhbGxiYWNrID0gZHJpdmVyT25FcnJvckNhbGxiYWNrO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKERpcmVjdENvbm5lY3Rpb25Qcm92aWRlciwgW3tcbiAgICBrZXk6ICdhY3F1aXJlQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFjcXVpcmVDb25uZWN0aW9uKG1vZGUpIHtcbiAgICAgIHZhciBjb25uZWN0aW9uID0gdGhpcy5fY29ubmVjdGlvblBvb2wuYWNxdWlyZSh0aGlzLl9hZGRyZXNzKTtcbiAgICAgIHZhciBjb25uZWN0aW9uUHJvbWlzZSA9IF9wcm9taXNlMi5kZWZhdWx0LnJlc29sdmUoY29ubmVjdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5fd2l0aEFkZGl0aW9uYWxPbkVycm9yQ2FsbGJhY2soY29ubmVjdGlvblByb21pc2UsIHRoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXI7XG59KENvbm5lY3Rpb25Qcm92aWRlcik7XG5cbnZhciBMb2FkQmFsYW5jZXIgPSBleHBvcnRzLkxvYWRCYWxhbmNlciA9IGZ1bmN0aW9uIChfQ29ubmVjdGlvblByb3ZpZGVyMikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShMb2FkQmFsYW5jZXIsIF9Db25uZWN0aW9uUHJvdmlkZXIyKTtcblxuICBmdW5jdGlvbiBMb2FkQmFsYW5jZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIExvYWRCYWxhbmNlcik7XG5cbiAgICB2YXIgX3RoaXMyID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoTG9hZEJhbGFuY2VyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShMb2FkQmFsYW5jZXIpKS5jYWxsKHRoaXMpKTtcblxuICAgIF90aGlzMi5fcm91dGluZ1RhYmxlID0gbmV3IF9yb3V0aW5nVGFibGUyLmRlZmF1bHQobmV3IF9yb3VuZFJvYmluQXJyYXkyLmRlZmF1bHQoW2FkZHJlc3NdKSk7XG4gICAgX3RoaXMyLl9yZWRpc2NvdmVyeSA9IG5ldyBfcmVkaXNjb3ZlcnkyLmRlZmF1bHQoKTtcbiAgICBfdGhpczIuX2Nvbm5lY3Rpb25Qb29sID0gY29ubmVjdGlvblBvb2w7XG4gICAgX3RoaXMyLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2sgPSBkcml2ZXJPbkVycm9yQ2FsbGJhY2s7XG4gICAgcmV0dXJuIF90aGlzMjtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKExvYWRCYWxhbmNlciwgW3tcbiAgICBrZXk6ICdhY3F1aXJlQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFjcXVpcmVDb25uZWN0aW9uKG1vZGUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgY29ubmVjdGlvblByb21pc2UgPSB0aGlzLl9mcmVzaFJvdXRpbmdUYWJsZSgpLnRoZW4oZnVuY3Rpb24gKHJvdXRpbmdUYWJsZSkge1xuICAgICAgICBpZiAobW9kZSA9PT0gX2RyaXZlci5SRUFEKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMy5fYWNxdWlyZUNvbm5lY3Rpb25Ub1NlcnZlcihyb3V0aW5nVGFibGUucmVhZGVycywgJ3JlYWQnKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBfZHJpdmVyLldSSVRFKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMy5fYWNxdWlyZUNvbm5lY3Rpb25Ub1NlcnZlcihyb3V0aW5nVGFibGUud3JpdGVycywgJ3dyaXRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ0lsbGVnYWwgbW9kZSAnICsgbW9kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRoaXMuX3dpdGhBZGRpdGlvbmFsT25FcnJvckNhbGxiYWNrKGNvbm5lY3Rpb25Qcm9taXNlLCB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2spO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZvcmdldCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvcmdldChhZGRyZXNzKSB7XG4gICAgICB0aGlzLl9yb3V0aW5nVGFibGUuZm9yZ2V0KGFkZHJlc3MpO1xuICAgICAgdGhpcy5fY29ubmVjdGlvblBvb2wucHVyZ2UoYWRkcmVzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZm9yZ2V0V3JpdGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yZ2V0V3JpdGVyKGFkZHJlc3MpIHtcbiAgICAgIHRoaXMuX3JvdXRpbmdUYWJsZS5mb3JnZXRXcml0ZXIoYWRkcmVzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2FjcXVpcmVDb25uZWN0aW9uVG9TZXJ2ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYWNxdWlyZUNvbm5lY3Rpb25Ub1NlcnZlcihzZXJ2ZXJzUm91bmRSb2JpbkFycmF5LCBzZXJ2ZXJOYW1lKSB7XG4gICAgICB2YXIgYWRkcmVzcyA9IHNlcnZlcnNSb3VuZFJvYmluQXJyYXkubmV4dCgpO1xuICAgICAgaWYgKCFhZGRyZXNzKSB7XG4gICAgICAgIHJldHVybiBfcHJvbWlzZTIuZGVmYXVsdC5yZWplY3QoKDAsIF9lcnJvci5uZXdFcnJvcikoJ05vICcgKyBzZXJ2ZXJOYW1lICsgJyBzZXJ2ZXJzIGF2YWlsYWJsZScsIF9lcnJvci5TRVNTSU9OX0VYUElSRUQpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUG9vbC5hY3F1aXJlKGFkZHJlc3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19mcmVzaFJvdXRpbmdUYWJsZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9mcmVzaFJvdXRpbmdUYWJsZSgpIHtcbiAgICAgIHZhciBjdXJyZW50Um91dGluZ1RhYmxlID0gdGhpcy5fcm91dGluZ1RhYmxlO1xuXG4gICAgICBpZiAoIWN1cnJlbnRSb3V0aW5nVGFibGUuaXNTdGFsZSgpKSB7XG4gICAgICAgIHJldHVybiBfcHJvbWlzZTIuZGVmYXVsdC5yZXNvbHZlKGN1cnJlbnRSb3V0aW5nVGFibGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3JlZnJlc2hSb3V0aW5nVGFibGUoY3VycmVudFJvdXRpbmdUYWJsZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3JlZnJlc2hSb3V0aW5nVGFibGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVmcmVzaFJvdXRpbmdUYWJsZShjdXJyZW50Um91dGluZ1RhYmxlKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdmFyIGtub3duUm91dGVycyA9IGN1cnJlbnRSb3V0aW5nVGFibGUucm91dGVycy50b0FycmF5KCk7XG5cbiAgICAgIHZhciByZWZyZXNoZWRUYWJsZVByb21pc2UgPSBrbm93blJvdXRlcnMucmVkdWNlKGZ1bmN0aW9uIChyZWZyZXNoZWRUYWJsZVByb21pc2UsIGN1cnJlbnRSb3V0ZXIsIGN1cnJlbnRJbmRleCkge1xuICAgICAgICByZXR1cm4gcmVmcmVzaGVkVGFibGVQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG5ld1JvdXRpbmdUYWJsZSkge1xuICAgICAgICAgIGlmIChuZXdSb3V0aW5nVGFibGUpIHtcbiAgICAgICAgICAgIGlmICghbmV3Um91dGluZ1RhYmxlLndyaXRlcnMuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICAgIC8vIHZhbGlkIHJvdXRpbmcgdGFibGUgd2FzIGZldGNoZWQgLSBqdXN0IHJldHVybiBpdCwgdHJ5IG5leHQgcm91dGVyIG90aGVyd2lzZVxuICAgICAgICAgICAgICByZXR1cm4gbmV3Um91dGluZ1RhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXR1cm5lZCByb3V0aW5nIHRhYmxlIHdhcyB1bmRlZmluZWQsIHRoaXMgbWVhbnMgYSBjb25uZWN0aW9uIGVycm9yIGhhcHBlbmVkIGFuZCB3ZSBuZWVkIHRvIGZvcmdldCB0aGVcbiAgICAgICAgICAgIC8vIHByZXZpb3VzIHJvdXRlciBhbmQgdHJ5IHRoZSBuZXh0IG9uZVxuICAgICAgICAgICAgdmFyIHByZXZpb3VzUm91dGVySW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgICAgICAgX3RoaXM0Ll9mb3JnZXRSb3V0ZXIoY3VycmVudFJvdXRpbmdUYWJsZSwga25vd25Sb3V0ZXJzLCBwcmV2aW91c1JvdXRlckluZGV4KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0cnkgbmV4dCByb3V0ZXJcbiAgICAgICAgICB2YXIgc2Vzc2lvbiA9IF90aGlzNC5fY3JlYXRlU2Vzc2lvbkZvclJlZGlzY292ZXJ5KGN1cnJlbnRSb3V0ZXIpO1xuICAgICAgICAgIHJldHVybiBfdGhpczQuX3JlZGlzY292ZXJ5Lmxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHNlc3Npb24sIGN1cnJlbnRSb3V0ZXIpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIF9wcm9taXNlMi5kZWZhdWx0LnJlc29sdmUobnVsbCkpO1xuXG4gICAgICByZXR1cm4gcmVmcmVzaGVkVGFibGVQcm9taXNlLnRoZW4oZnVuY3Rpb24gKG5ld1JvdXRpbmdUYWJsZSkge1xuICAgICAgICBpZiAobmV3Um91dGluZ1RhYmxlICYmICFuZXdSb3V0aW5nVGFibGUud3JpdGVycy5pc0VtcHR5KCkpIHtcbiAgICAgICAgICBfdGhpczQuX3VwZGF0ZVJvdXRpbmdUYWJsZShuZXdSb3V0aW5nVGFibGUpO1xuICAgICAgICAgIHJldHVybiBuZXdSb3V0aW5nVGFibGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmb3JnZXQgdGhlIGxhc3Qga25vd24gcm91dGVyIGJlY2F1c2UgaXQgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCByb3V0aW5nIHRhYmxlXG4gICAgICAgIHZhciBsYXN0Um91dGVySW5kZXggPSBrbm93blJvdXRlcnMubGVuZ3RoIC0gMTtcbiAgICAgICAgX3RoaXM0Ll9mb3JnZXRSb3V0ZXIoY3VycmVudFJvdXRpbmdUYWJsZSwga25vd25Sb3V0ZXJzLCBsYXN0Um91dGVySW5kZXgpO1xuXG4gICAgICAgIC8vIG5vbmUgb2YgdGhlIGV4aXN0aW5nIHJvdXRlcnMgcmV0dXJuZWQgdmFsaWQgcm91dGluZyB0YWJsZSwgdGhyb3cgZXhjZXB0aW9uXG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdDb3VsZCBub3QgcGVyZm9ybSBkaXNjb3ZlcnkuIE5vIHJvdXRpbmcgc2VydmVycyBhdmFpbGFibGUuJywgX2Vycm9yLlNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NyZWF0ZVNlc3Npb25Gb3JSZWRpc2NvdmVyeScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVTZXNzaW9uRm9yUmVkaXNjb3Zlcnkocm91dGVyQWRkcmVzcykge1xuICAgICAgdmFyIGNvbm5lY3Rpb24gPSB0aGlzLl9jb25uZWN0aW9uUG9vbC5hY3F1aXJlKHJvdXRlckFkZHJlc3MpO1xuICAgICAgdmFyIGNvbm5lY3Rpb25Qcm9taXNlID0gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZShjb25uZWN0aW9uKTtcbiAgICAgIHZhciBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXcgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb25Qcm9taXNlKTtcbiAgICAgIHJldHVybiBuZXcgX3Nlc3Npb24yLmRlZmF1bHQoX2RyaXZlci5SRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ191cGRhdGVSb3V0aW5nVGFibGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdXBkYXRlUm91dGluZ1RhYmxlKG5ld1JvdXRpbmdUYWJsZSkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciBjdXJyZW50Um91dGluZ1RhYmxlID0gdGhpcy5fcm91dGluZ1RhYmxlO1xuXG4gICAgICAvLyBjbG9zZSBvbGQgY29ubmVjdGlvbnMgdG8gc2VydmVycyBub3QgcHJlc2VudCBpbiB0aGUgbmV3IHJvdXRpbmcgdGFibGVcbiAgICAgIHZhciBzdGFsZVNlcnZlcnMgPSBjdXJyZW50Um91dGluZ1RhYmxlLnNlcnZlcnNEaWZmKG5ld1JvdXRpbmdUYWJsZSk7XG4gICAgICBzdGFsZVNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAoc2VydmVyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczUuX2Nvbm5lY3Rpb25Qb29sLnB1cmdlKHNlcnZlcik7XG4gICAgICB9KTtcblxuICAgICAgLy8gbWFrZSB0aGlzIGRyaXZlciBpbnN0YW5jZSBhd2FyZSBvZiB0aGUgbmV3IHRhYmxlXG4gICAgICB0aGlzLl9yb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2ZvcmdldFJvdXRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9mb3JnZXRSb3V0ZXIocm91dGluZ1RhYmxlLCByb3V0ZXJzQXJyYXksIHJvdXRlckluZGV4KSB7XG4gICAgICB2YXIgYWRkcmVzcyA9IHJvdXRlcnNBcnJheVtyb3V0ZXJJbmRleF07XG4gICAgICBpZiAoYWRkcmVzcykge1xuICAgICAgICByb3V0aW5nVGFibGUuZm9yZ2V0Um91dGVyKGFkZHJlc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTG9hZEJhbGFuY2VyO1xufShDb25uZWN0aW9uUHJvdmlkZXIpO1xuXG52YXIgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyID0gZXhwb3J0cy5TaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIgPSBmdW5jdGlvbiAoX0Nvbm5lY3Rpb25Qcm92aWRlcjMpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyLCBfQ29ubmVjdGlvblByb3ZpZGVyMyk7XG5cbiAgZnVuY3Rpb24gU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb25Qcm9taXNlKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIHZhciBfdGhpczYgPSAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcikpLmNhbGwodGhpcykpO1xuXG4gICAgX3RoaXM2Ll9jb25uZWN0aW9uUHJvbWlzZSA9IGNvbm5lY3Rpb25Qcm9taXNlO1xuICAgIHJldHVybiBfdGhpczY7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIsIFt7XG4gICAga2V5OiAnYWNxdWlyZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgICB2YXIgY29ubmVjdGlvblByb21pc2UgPSB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gbnVsbDtcbiAgICAgIHJldHVybiBjb25uZWN0aW9uUHJvbWlzZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcjtcbn0oQ29ubmVjdGlvblByb3ZpZGVyKTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkNvbm5lY3Rpb24gPSBleHBvcnRzLnBhcnNlVXJsID0gZXhwb3J0cy5wYXJzZVNjaGVtZSA9IGV4cG9ydHMuY29ubmVjdCA9IHVuZGVmaW5lZDtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfc3RyaW5naWZ5ID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5Jyk7XG5cbnZhciBfc3RyaW5naWZ5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0cmluZ2lmeSk7XG5cbnZhciBfY2hXZWJzb2NrZXQgPSByZXF1aXJlKCcuL2NoLXdlYnNvY2tldCcpO1xuXG52YXIgX2NoV2Vic29ja2V0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NoV2Vic29ja2V0KTtcblxudmFyIF9jaE5vZGUgPSByZXF1aXJlKCcuL2NoLW5vZGUnKTtcblxudmFyIF9jaE5vZGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2hOb2RlKTtcblxudmFyIF9jaHVua2luZyA9IHJlcXVpcmUoJy4vY2h1bmtpbmcnKTtcblxudmFyIF9mZWF0dXJlcyA9IHJlcXVpcmUoJy4vZmVhdHVyZXMnKTtcblxudmFyIF9mZWF0dXJlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mZWF0dXJlcyk7XG5cbnZhciBfcGFja3N0cmVhbSA9IHJlcXVpcmUoJy4vcGFja3N0cmVhbScpO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfZ3JhcGhUeXBlcyA9IHJlcXVpcmUoJy4uL2dyYXBoLXR5cGVzJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLy4uL2Vycm9yJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIENoYW5uZWwgPSB2b2lkIDA7XG5pZiAoX2NoTm9kZTIuZGVmYXVsdC5hdmFpbGFibGUpIHtcbiAgQ2hhbm5lbCA9IF9jaE5vZGUyLmRlZmF1bHQuY2hhbm5lbDtcbn0gZWxzZSBpZiAoX2NoV2Vic29ja2V0Mi5kZWZhdWx0LmF2YWlsYWJsZSkge1xuICBDaGFubmVsID0gX2NoV2Vic29ja2V0Mi5kZWZhdWx0LmNoYW5uZWw7XG59IGVsc2Uge1xuICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkZhdGFsOiBObyBjb21wYXRpYmxlIHRyYW5zcG9ydCBhdmFpbGFibGUuIE5lZWQgdG8gcnVuIG9uIGEgcGxhdGZvcm0gd2l0aCB0aGUgV2ViU29ja2V0IEFQSS5cIik7XG59XG5cbnZhclxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBlYWNoIG1lc3NhZ2UgdHlwZVxuSU5JVCA9IDB4MDEsXG4gICAgLy8gMDAwMCAwMDAxIC8vIElOSVQgPHVzZXJfYWdlbnQ+XG5BQ0tfRkFJTFVSRSA9IDB4MEUsXG4gICAgLy8gMDAwMCAxMTEwIC8vIEFDS19GQUlMVVJFXG5SRVNFVCA9IDB4MEYsXG4gICAgLy8gMDAwMCAxMTExIC8vIFJFU0VUXG5SVU4gPSAweDEwLFxuICAgIC8vIDAwMDEgMDAwMCAvLyBSVU4gPHN0YXRlbWVudD4gPHBhcmFtZXRlcnM+XG5ESVNDQVJEX0FMTCA9IDB4MkYsXG4gICAgLy8gMDAxMCAxMTExIC8vIERJU0NBUkQgKlxuUFVMTF9BTEwgPSAweDNGLFxuICAgIC8vIDAwMTEgMTExMSAvLyBQVUxMICpcblNVQ0NFU1MgPSAweDcwLFxuICAgIC8vIDAxMTEgMDAwMCAvLyBTVUNDRVNTIDxtZXRhZGF0YT5cblJFQ09SRCA9IDB4NzEsXG4gICAgLy8gMDExMSAwMDAxIC8vIFJFQ09SRCA8dmFsdWU+XG5JR05PUkVEID0gMHg3RSxcbiAgICAvLyAwMTExIDExMTAgLy8gSUdOT1JFRCA8bWV0YWRhdGE+XG5GQUlMVVJFID0gMHg3RixcbiAgICAvLyAwMTExIDExMTEgLy8gRkFJTFVSRSA8bWV0YWRhdGE+XG5cbi8vIFNpZ25hdHVyZSBieXRlcyBmb3IgaGlnaGVyLWxldmVsIGdyYXBoIG9iamVjdHNcbk5PREUgPSAweDRFLFxuICAgIFJFTEFUSU9OU0hJUCA9IDB4NTIsXG4gICAgVU5CT1VORF9SRUxBVElPTlNISVAgPSAweDcyLFxuICAgIFBBVEggPSAweDUwLFxuXG4vL3NlbnQgYmVmb3JlIHZlcnNpb24gbmVnb3RpYXRpb25cbk1BR0lDX1BSRUFNQkxFID0gMHg2MDYwQjAxNyxcbiAgICBERUJVRyA9IGZhbHNlO1xuXG52YXIgVVJMUkVHRVggPSBuZXcgUmVnRXhwKFtcIihbXi9dKy8vKT9cIiwgLy8gc2NoZW1lXG5cIigoW146Lz8jXSopXCIsIC8vIGhvc3RuYW1lXG5cIig/OjooWzAtOV0rKSk/KVwiLCAvLyBwb3J0IChvcHRpb25hbClcblwiLipcIl0uam9pbihcIlwiKSk7IC8vIGV2ZXJ5dGhpbmcgZWxzZVxuXG5mdW5jdGlvbiBwYXJzZVNjaGVtZSh1cmwpIHtcbiAgdmFyIHNjaGVtZSA9IHVybC5tYXRjaChVUkxSRUdFWClbMV0gfHwgJyc7XG4gIHJldHVybiBzY2hlbWUudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVcmwodXJsKSB7XG4gIHJldHVybiB1cmwubWF0Y2goVVJMUkVHRVgpWzJdO1xufVxuXG5mdW5jdGlvbiBwYXJzZUhvc3QodXJsKSB7XG4gIHJldHVybiB1cmwubWF0Y2goVVJMUkVHRVgpWzNdO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBvcnQodXJsKSB7XG4gIHJldHVybiB1cmwubWF0Y2goVVJMUkVHRVgpWzRdO1xufVxuXG4vKipcbiAqIFZlcnkgcnVkaW1lbnRhcnkgbG9nIGhhbmRsaW5nLCBzaG91bGQgcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgc29tZXRoaW5nIHByb3BlciBhdCBzb21lIHBvaW50LlxuICogQHBhcmFtIGFjdG9yIHRoZSBwYXJ0IHRoYXQgc2VudCB0aGUgbWVzc2FnZSwgJ1MnIGZvciBzZXJ2ZXIgYW5kICdDJyBmb3IgY2xpZW50XG4gKiBAcGFyYW0gbXNnIHRoZSBib2x0IG1lc3NhZ2VcbiAqL1xuZnVuY3Rpb24gbG9nKGFjdG9yLCBtc2cpIHtcbiAgaWYgKERFQlVHKSB7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG1zZyArPSBcIiBcIiArICgwLCBfc3RyaW5naWZ5Mi5kZWZhdWx0KShhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhhY3RvciArIFwiOlwiICsgbXNnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBOT19PUCgpIHt9XG5cbnZhciBOT19PUF9PQlNFUlZFUiA9IHtcbiAgb25OZXh0OiBOT19PUCxcbiAgb25Db21wbGV0ZWQ6IE5PX09QLFxuICBvbkVycm9yOiBOT19PUFxufTtcblxuLyoqIE1hcHMgZnJvbSBwYWNrc3RyZWFtIHN0cnVjdHVyZXMgdG8gTmVvNGogZG9tYWluIG9iamVjdHMgKi9cbnZhciBfbWFwcGVycyA9IHtcbiAgbm9kZTogZnVuY3Rpb24gbm9kZSh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlcy5Ob2RlKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBMYWJlbHNcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgcmVsOiBmdW5jdGlvbiByZWwodW5wYWNrZXIsIGJ1Zikge1xuICAgIHJldHVybiBuZXcgX2dyYXBoVHlwZXMuUmVsYXRpb25zaGlwKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBTdGFydCBOb2RlIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIEVuZCBOb2RlIElkZW50aXR5XG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIFR5cGVcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgdW5ib3VuZFJlbDogZnVuY3Rpb24gdW5ib3VuZFJlbCh1bnBhY2tlciwgYnVmKSB7XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlcy5VbmJvdW5kUmVsYXRpb25zaGlwKHVucGFja2VyLnVucGFjayhidWYpLCAvLyBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBUeXBlXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHBhdGg6IGZ1bmN0aW9uIHBhdGgodW5wYWNrZXIsIGJ1Zikge1xuICAgIHZhciBub2RlcyA9IHVucGFja2VyLnVucGFjayhidWYpLFxuICAgICAgICByZWxzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHNlcXVlbmNlID0gdW5wYWNrZXIudW5wYWNrKGJ1Zik7XG4gICAgdmFyIHByZXZOb2RlID0gbm9kZXNbMF0sXG4gICAgICAgIHNlZ21lbnRzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcXVlbmNlLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB2YXIgcmVsSW5kZXggPSBzZXF1ZW5jZVtpXSxcbiAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGVzW3NlcXVlbmNlW2kgKyAxXV0sXG4gICAgICAgICAgcmVsID0gdm9pZCAwO1xuICAgICAgaWYgKHJlbEluZGV4ID4gMCkge1xuICAgICAgICByZWwgPSByZWxzW3JlbEluZGV4IC0gMV07XG4gICAgICAgIGlmIChyZWwgaW5zdGFuY2VvZiBfZ3JhcGhUeXBlcy5VbmJvdW5kUmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgLy8gVG8gYXZvaWQgZHVwbGljYXRpb24sIHJlbGF0aW9uc2hpcHMgaW4gYSBwYXRoIGRvIG5vdCBjb250YWluXG4gICAgICAgICAgLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgc3RhcnQgYW5kIGVuZCBub2RlcywgdGhhdCdzIGluc3RlYWRcbiAgICAgICAgICAvLyBpbmZlcnJlZCBmcm9tIHRoZSBwYXRoIHNlcXVlbmNlLiBUaGlzIGlzIHVzIGluZmVycmluZyAoYW5kLFxuICAgICAgICAgIC8vIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHJlbWVtYmVyaW5nKSB0aGUgc3RhcnQvZW5kIG9mIGEgcmVsLlxuICAgICAgICAgIHJlbHNbcmVsSW5kZXggLSAxXSA9IHJlbCA9IHJlbC5iaW5kKHByZXZOb2RlLmlkZW50aXR5LCBuZXh0Tm9kZS5pZGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbCA9IHJlbHNbLXJlbEluZGV4IC0gMV07XG4gICAgICAgIGlmIChyZWwgaW5zdGFuY2VvZiBfZ3JhcGhUeXBlcy5VbmJvdW5kUmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgLy8gU2VlIGFib3ZlXG4gICAgICAgICAgcmVsc1stcmVsSW5kZXggLSAxXSA9IHJlbCA9IHJlbC5iaW5kKG5leHROb2RlLmlkZW50aXR5LCBwcmV2Tm9kZS5pZGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIERvbmUgaHlkcmF0aW5nIG9uZSBwYXRoIHNlZ21lbnQuXG4gICAgICBzZWdtZW50cy5wdXNoKG5ldyBfZ3JhcGhUeXBlcy5QYXRoU2VnbWVudChwcmV2Tm9kZSwgcmVsLCBuZXh0Tm9kZSkpO1xuICAgICAgcHJldk5vZGUgPSBuZXh0Tm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBfZ3JhcGhUeXBlcy5QYXRoKG5vZGVzWzBdLCBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSwgc2VnbWVudHMpO1xuICB9XG59O1xuXG4vKipcbiAqIEEgY29ubmVjdGlvbiBtYW5hZ2VzIHNlbmRpbmcgYW5kIHJlY2lldmluZyBtZXNzYWdlcyBvdmVyIGEgY2hhbm5lbC4gQVxuICogY29ubmVjdG9yIGlzIHZlcnkgY2xvc2VseSB0aWVkIHRvIHRoZSBCb2x0IHByb3RvY29sLCBpdCBpbXBsZW1lbnRzIHRoZVxuICogc2FtZSBtZXNzYWdlIHN0cnVjdHVyZSB3aXRoIHZlcnkgbGl0dGxlIGZyaWxscy4gVGhpcyBtZWFucyBDb25uZWN0b3JzIGFyZVxuICogbmF0dXJhbGx5IHRpZWQgdG8gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5kIHdlIGV4cGVjdFxuICogYW5vdGhlciBsYXllciB3aWxsIGJlIG5lZWRlZCB0byBzdXBwb3J0IG11bHRpcGxlIHZlcnNpb25zLlxuICpcbiAqIFRoZSBjb25uZWN0b3IgdHJpZXMgdG8gYmF0Y2ggb3V0Ym91bmQgbWVzc2FnZXMgYnkgcmVxdWlyaW5nIGl0cyB1c2Vyc1xuICogdG8gY2FsbCAnc3luYycgd2hlbiBtZXNzYWdlcyBuZWVkIHRvIGJlIHNlbnQsIGFuZCBpdCByb3V0ZXMgcmVzcG9uc2VcbiAqIG1lc3NhZ2VzIGJhY2sgdG8gdGhlIG9yaWdpbmF0b3JzIG9mIHRoZSByZXF1ZXN0cyB0aGF0IGNyZWF0ZWQgdGhvc2VcbiAqIHJlc3BvbnNlIG1lc3NhZ2VzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cblxudmFyIENvbm5lY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gY2hhbm5lbCAtIGNoYW5uZWwgd2l0aCBhICd3cml0ZScgZnVuY3Rpb24gYW5kIGEgJ29ubWVzc2FnZSdcbiAgICogICAgICAgICAgICAgICAgICBjYWxsYmFjayBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gdXJsIC0gdXJsIHRvIGNvbm5lY3QgdG9cbiAgICovXG4gIGZ1bmN0aW9uIENvbm5lY3Rpb24oY2hhbm5lbCwgdXJsKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgQ29ubmVjdGlvbik7XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcmRlcmVkIHF1ZXVlIG9mIG9ic2VydmVycywgZWFjaCBleGNoYW5nZSByZXNwb25zZSAoemVybyBvciBtb3JlXG4gICAgICogUkVDT1JEIG1lc3NhZ2VzIGZvbGxvd2VkIGJ5IGEgU1VDQ0VTUyBtZXNzYWdlKSB3ZSByZWNpZXZlIHdpbGwgYmUgcm91dGVkXG4gICAgICogdG8gdGhlIG5leHQgcGVuZGluZyBvYnNlcnZlci5cbiAgICAgKi9cbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLnNlcnZlciA9IHsgYWRkcmVzczogdXJsIH07XG4gICAgdGhpcy5fcGVuZGluZ09ic2VydmVycyA9IFtdO1xuICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gICAgdGhpcy5fZGVjaHVua2VyID0gbmV3IF9jaHVua2luZy5EZWNodW5rZXIoKTtcbiAgICB0aGlzLl9jaHVua2VyID0gbmV3IF9jaHVua2luZy5DaHVua2VyKGNoYW5uZWwpO1xuICAgIHRoaXMuX3BhY2tlciA9IG5ldyBfcGFja3N0cmVhbS5QYWNrZXIodGhpcy5fY2h1bmtlcik7XG4gICAgdGhpcy5fdW5wYWNrZXIgPSBuZXcgX3BhY2tzdHJlYW0uVW5wYWNrZXIoKTtcblxuICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgdGhpcy5fY3VycmVudEZhaWx1cmUgPSBudWxsO1xuXG4gICAgLy8gU2V0IHRvIHRydWUgb24gZmF0YWwgZXJyb3JzLCB0byBnZXQgdGhpcyBvdXQgb2Ygc2Vzc2lvbiBwb29sLlxuICAgIHRoaXMuX2lzQnJva2VuID0gZmFsc2U7XG5cbiAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLCBleHBsYWluIHRvIHRoZSB1bnBhY2tlciBob3cgdG8gdW5wYWNrIG5vZGVzLCByZWxzLCBwYXRocztcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW05PREVdID0gX21hcHBlcnMubm9kZTtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy5yZWw7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tVTkJPVU5EX1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy51bmJvdW5kUmVsO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbUEFUSF0gPSBfbWFwcGVycy5wYXRoO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIC8vIFRPRE86IFVzaW5nIGBvbm1lc3NhZ2VgIGFuZCBgb25lcnJvcmAgY2FtZSBmcm9tIHRoZSBXZWJTb2NrZXQgQVBJLFxuICAgIC8vIGl0IHJlYWRzIHBvb3JseSBhbmQgaGFzIHNldmVyYWwgYW5ub3lpbmcgZHJhd2JhY2tzLiBTd2FwIHRvIGhhdmluZ1xuICAgIC8vIENoYW5uZWwgZXh0ZW5kIEV2ZW50RW1pdHRlciBpbnN0ZWFkLCB0aGVuIHdlIGNhbiB1c2UgYG9uKCdkYXRhJywuLilgXG4gICAgdGhpcy5fY2gub25tZXNzYWdlID0gZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgdmFyIHByb3Bvc2VkID0gYnVmLnJlYWRJbnQzMigpO1xuICAgICAgaWYgKHByb3Bvc2VkID09IDEpIHtcbiAgICAgICAgLy8gT2ssIHByb3RvY29sIHJ1bm5pbmcuIFNpbXBseSBmb3J3YXJkIGFsbCBtZXNzYWdlcyBwYXN0XG4gICAgICAgIC8vIHRoaXMgdG8gdGhlIGRlY2h1bmtlclxuICAgICAgICBzZWxmLl9jaC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICAgICAgc2VsZi5fZGVjaHVua2VyLndyaXRlKGJ1Zik7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGJ1Zi5oYXNSZW1haW5pbmcoKSkge1xuICAgICAgICAgIHNlbGYuX2RlY2h1bmtlci53cml0ZShidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByb3Bvc2VkID09IDEyMTM0ODYxNjApIHtcbiAgICAgICAgLy9zZXJ2ZXIgcmVzcG9uZGVkIDEyMTM0ODYxNjAgPT0gMHg0ODU0NTQ1MCA9PSBcIkhUVFBcIlxuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU2VydmVyIHJlc3BvbmRlZCBIVFRQLiBNYWtlIHN1cmUgeW91IGFyZSBub3QgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIGh0dHAgZW5kcG9pbnQgXCIgKyBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBCb2x0IHByb3RvY29sIHZlcnNpb246IFwiICsgcHJvcG9zZWQpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gTGlzdGVuIHRvIGNvbm5lY3Rpb24gZXJyb3JzLiBJbXBvcnRhbnQgbm90ZSB0aG91Z2g7XG4gICAgLy8gSW4gc29tZSBjYXNlcyB3ZSB3aWxsIGdldCBhIGNoYW5uZWwgdGhhdCBpcyBhbHJlYWR5IGJyb2tlbiAoZm9yIGluc3RhbmNlLFxuICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucykuIEluIHRoaXMgY2FzZSwgb25lcnJvclxuICAgIC8vIHdpbGwgaGF2ZSBcImFscmVhZHkgdHJpZ2dlcmVkXCIgYmVmb3JlIHdlIGFkZCBvdXQgbGlzdGVuZXIgaGVyZS4gU28gdGhlIGxpbmVcbiAgICAvLyBiZWxvdyBhbHNvIGNoZWNrcyB0aGF0IHRoZSBjaGFubmVsIGlzIG5vdCBhbHJlYWR5IGZhaWxlZC4gVGhpcyBjb3VsZCBiZSBuaWNlbHlcbiAgICAvLyBlbmNhcHN1bGF0ZWQgaW50byBDaGFubmVsIGlmIHdlIHVzZWQgYG9uKCdlcnJvcicsIC4uKWAgcmF0aGVyIHRoYW4gYG9uZXJyb3I9Li5gXG4gICAgLy8gYXMgb3V0bGluZWQgaW4gdGhlIGNvbW1lbnQgYWJvdXQgYG9ubWVzc2FnZWAgZnVydGhlciB1cCBpbiB0aGlzIGZpbGUuXG4gICAgdGhpcy5fY2gub25lcnJvciA9IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IuYmluZCh0aGlzKTtcbiAgICBpZiAodGhpcy5fY2guX2Vycm9yKSB7XG4gICAgICB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKHRoaXMuX2NoLl9lcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVjaHVua2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgICAgIHNlbGYuX2hhbmRsZU1lc3NhZ2Uoc2VsZi5fdW5wYWNrZXIudW5wYWNrKGJ1ZikpO1xuICAgIH07XG5cbiAgICB2YXIgaGFuZHNoYWtlID0gKDAsIF9idWYuYWxsb2MpKDUgKiA0KTtcbiAgICAvL21hZ2ljIHByZWFtYmxlXG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoTUFHSUNfUFJFQU1CTEUpO1xuICAgIC8vcHJvcG9zZWQgdmVyc2lvbnNcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigxKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMigwKTtcbiAgICBoYW5kc2hha2UucmVzZXQoKTtcbiAgICB0aGlzLl9jaC53cml0ZShoYW5kc2hha2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiRmF0YWxcIiBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBkZWFkLiBPbmx5IGNhbGwgdGhpcyBpZiBzb21ldGhpbmdcbiAgICogaGFwcGVucyB0aGF0IGNhbm5vdCBiZSByZWNvdmVyZWQgZnJvbS4gVGhpcyB3aWxsIGxlYWQgdG8gYWxsIHN1YnNjcmliZXJzXG4gICAqIGZhaWxpbmcsIGFuZCB0aGUgY29ubmVjdGlvbiBnZXR0aW5nIGVqZWN0ZWQgZnJvbSB0aGUgc2Vzc2lvbiBwb29sLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyIGFuIGVycm9yIG9iamVjdCwgZm9yd2FyZGVkIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgc3Vic2NyaWJlcnNcbiAgICogQHByaXZhdGVcbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShDb25uZWN0aW9uLCBbe1xuICAgIGtleTogJ19oYW5kbGVGYXRhbEVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSB7XG4gICAgICB0aGlzLl9pc0Jyb2tlbiA9IHRydWU7XG4gICAgICB0aGlzLl9lcnJvciA9IGVycjtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIG9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19oYW5kbGVNZXNzYWdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZU1lc3NhZ2UobXNnKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgcGF5bG9hZCA9IG1zZy5maWVsZHNbMF07XG5cbiAgICAgIHN3aXRjaCAobXNnLnNpZ25hdHVyZSkge1xuICAgICAgICBjYXNlIFJFQ09SRDpcbiAgICAgICAgICBsb2coXCJTXCIsIFwiUkVDT1JEXCIsIG1zZyk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uTmV4dChwYXlsb2FkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTVUNDRVNTOlxuICAgICAgICAgIGxvZyhcIlNcIiwgXCJTVUNDRVNTXCIsIG1zZyk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkNvbXBsZXRlZChwYXlsb2FkKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGQUlMVVJFOlxuICAgICAgICAgIGxvZyhcIlNcIiwgXCJGQUlMVVJFXCIsIG1zZyk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRGYWlsdXJlID0gKDAsIF9lcnJvci5uZXdFcnJvcikocGF5bG9hZC5tZXNzYWdlLCBwYXlsb2FkLmNvZGUpO1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IodGhpcy5fY3VycmVudEZhaWx1cmUpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgICAgICAvLyBUaGluZ3MgYXJlIG5vdyBicm9rZW4uIFBlbmRpbmcgb2JzZXJ2ZXJzIHdpbGwgZ2V0IEZBSUxVUkUgbWVzc2FnZXMgcm91dGVkIHVudGlsXG4gICAgICAgICAgICAvLyBXZSBhcmUgZG9uZSBoYW5kbGluZyB0aGlzIGZhaWx1cmUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAvLyBpc0hhbmRsaW5nRmFpbHVyZSB3YXMgZmFsc2UsIG1lYW5pbmcgdGhpcyBpcyB0aGUgZmlyc3QgZmFpbHVyZSBtZXNzYWdlXG4gICAgICAgICAgICAgIC8vIHdlIHNlZSBmcm9tIHRoaXMgZmFpbHVyZS4gV2UgbWF5IHNlZSBzZXZlcmFsIG90aGVycywgb25lIGZvciBlYWNoIG1lc3NhZ2VcbiAgICAgICAgICAgICAgLy8gd2UgaGFkIFwib3B0aW1pc3RpY2FsbHlcIiBhbHJlYWR5IHNlbnQgYWZ0ZXIgd2hhdGV2ZXIgaXQgd2FzIHRoYXQgZmFpbGVkLlxuICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYW5kIG5lZWQgdG8gQUNLIHRoZSBmaXJzdCBvbmUsIHdoaWNoIGlzIHdoeSB3ZSBhcmUgdHJhY2tpbmdcbiAgICAgICAgICAgICAgLy8gdGhpcyBfaXNIYW5kbGluZ0ZhaWx1cmUgdGhpbmcuXG4gICAgICAgICAgICAgIHRoaXMuX2Fja0ZhaWx1cmUoe1xuICAgICAgICAgICAgICAgIG9uTmV4dDogTk9fT1AsXG4gICAgICAgICAgICAgICAgb25FcnJvcjogTk9fT1AsXG4gICAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKCkge1xuICAgICAgICAgICAgICAgICAgX3RoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5fY3VycmVudEZhaWx1cmUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIElHTk9SRUQ6XG4gICAgICAgICAgbG9nKFwiU1wiLCBcIklHTk9SRURcIiwgbXNnKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGYWlsdXJlICYmIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcih0aGlzLl9jdXJyZW50RmFpbHVyZSk7ZWxzZSBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKHBheWxvYWQpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJVbmtub3duIEJvbHQgcHJvdG9jb2wgbWVzc2FnZTogXCIgKyBtc2cpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUXVldWUgYW4gSU5JVC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG5cbiAgfSwge1xuICAgIGtleTogJ2luaXRpYWxpemUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0aWFsaXplKGNsaWVudE5hbWUsIHRva2VuLCBvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGxvZyhcIkNcIiwgXCJJTklUXCIsIGNsaWVudE5hbWUsIHRva2VuKTtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoSU5JVCwgW3RoaXMuX3BhY2thYmxlKGNsaWVudE5hbWUpLCB0aGlzLl9wYWNrYWJsZSh0b2tlbildLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICAgIHRoaXMuc3luYygpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFJVTi1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG5cbiAgfSwge1xuICAgIGtleTogJ3J1bicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJ1bihzdGF0ZW1lbnQsIHBhcmFtcywgb2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBsb2coXCJDXCIsIFwiUlVOXCIsIHN0YXRlbWVudCwgcGFyYW1zKTtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoUlVOLCBbdGhpcy5fcGFja2FibGUoc3RhdGVtZW50KSwgdGhpcy5fcGFja2FibGUocGFyYW1zKV0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMy5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFBVTExfQUxMLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cblxuICB9LCB7XG4gICAga2V5OiAncHVsbEFsbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1bGxBbGwob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgICBsb2coXCJDXCIsIFwiUFVMTF9BTExcIik7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFBVTExfQUxMLCBbXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXM0Ll9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgRElTQ0FSRF9BTEwtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdkaXNjYXJkQWxsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzY2FyZEFsbChvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIGxvZyhcIkNcIiwgXCJESVNDQVJEX0FMTFwiKTtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoRElTQ0FSRF9BTEwsIFtdLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczUuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBSRVNFVC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlLiBNdXRlcyBmYWlsdXJlIGhhbmRsaW5nLiAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdyZXNldEFzeW5jJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXRBc3luYyhvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgIGxvZyhcIkNcIiwgXCJSRVNFVF9BU1lOQ1wiKTtcbiAgICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgIHZhciB3cmFwcGVkT2JzID0ge1xuICAgICAgICBvbk5leHQ6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25OZXh0IDogTk9fT1AsXG4gICAgICAgIG9uRXJyb3I6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25FcnJvciA6IE5PX09QLFxuICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoKSB7XG4gICAgICAgICAgc2VsZi5faXNIYW5kbGluZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcih3cmFwcGVkT2JzKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFJFU0VULCBbXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXM2Ll9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgUkVTRVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdyZXNldCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0KG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM3ID0gdGhpcztcblxuICAgICAgbG9nKCdDJywgJ1JFU0VUJyk7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFJFU0VULCBbXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXM3Ll9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgQUNLX0ZBSUxVUkUtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdfYWNrRmFpbHVyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9hY2tGYWlsdXJlKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM4ID0gdGhpcztcblxuICAgICAgbG9nKFwiQ1wiLCBcIkFDS19GQUlMVVJFXCIpO1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChBQ0tfRkFJTFVSRSwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzOC5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19xdWV1ZU9ic2VydmVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpIHtcbiAgICAgIGlmICh0aGlzLl9pc0Jyb2tlbikge1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uRXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9ic2VydmVyID0gb2JzZXJ2ZXIgfHwgTk9fT1BfT0JTRVJWRVI7XG4gICAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCA9IG9ic2VydmVyLm9uQ29tcGxldGVkIHx8IE5PX09QO1xuICAgICAgb2JzZXJ2ZXIub25FcnJvciA9IG9ic2VydmVyLm9uRXJyb3IgfHwgTk9fT1A7XG4gICAgICBvYnNlcnZlci5vbk5leHQgPSBvYnNlcnZlci5vbk5leHQgfHwgTk9fT1A7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bmNocm9uaXplIC0gZmx1c2ggYWxsIHF1ZXVlZCBvdXRnb2luZyBtZXNzYWdlcyBhbmQgcm91dGUgdGhlaXIgcmVzcG9uc2VzXG4gICAgICogdG8gdGhlaXIgcmVzcGVjdGl2ZSBoYW5kbGVycy5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnc3luYycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN5bmMoKSB7XG4gICAgICB0aGlzLl9jaHVua2VyLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgLyoqIENoZWNrIGlmIHRoaXMgY29ubmVjdGlvbiBpcyBpbiB3b3JraW5nIGNvbmRpdGlvbiAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpc09wZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc09wZW4oKSB7XG4gICAgICByZXR1cm4gIXRoaXMuX2lzQnJva2VuICYmIHRoaXMuX2NoLl9vcGVuO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzRW5jcnlwdGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNFbmNyeXB0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2guaXNFbmNyeXB0ZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsIGNsb3NlIG9uIHRoZSBjaGFubmVsLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZShjYikge1xuICAgICAgdGhpcy5fY2guY2xvc2UoY2IpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19wYWNrYWJsZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9wYWNrYWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIF90aGlzOSA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLl9wYWNrZXIucGFja2FibGUodmFsdWUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzOS5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0U2VydmVyVmVyc2lvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNlcnZlclZlcnNpb24odmVyc2lvbikge1xuICAgICAgdGhpcy5zZXJ2ZXIudmVyc2lvbiA9IHZlcnNpb247XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBDb25uZWN0aW9uO1xufSgpO1xuXG4vKipcbiAqIENyZXRlIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBwcm92aWRlZCB1cmwuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSAnbmVvNGonLXByZWZpeGVkIFVSTCB0byBOZW80aiBCb2x0IGVuZHBvaW50XG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnXG4gKiBAcmV0dXJuIHtDb25uZWN0aW9ufSAtIE5ldyBjb25uZWN0aW9uXG4gKi9cblxuXG5mdW5jdGlvbiBjb25uZWN0KHVybCkge1xuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICB2YXIgQ2ggPSBjb25maWcuY2hhbm5lbCB8fCBDaGFubmVsO1xuICB2YXIgaG9zdCA9IHBhcnNlSG9zdCh1cmwpO1xuICB2YXIgcG9ydCA9IHBhcnNlUG9ydCh1cmwpIHx8IDc2ODc7XG4gIHZhciBjb21wbGV0ZVVybCA9IGhvc3QgKyAnOicgKyBwb3J0O1xuXG4gIHJldHVybiBuZXcgQ29ubmVjdGlvbihuZXcgQ2goe1xuICAgIGhvc3Q6IHBhcnNlSG9zdCh1cmwpLFxuICAgIHBvcnQ6IHBhcnNlUG9ydCh1cmwpIHx8IDc2ODcsXG4gICAgLy8gRGVmYXVsdCB0byB1c2luZyBlbmNyeXB0aW9uIGlmIHRydXN0LW9uLWZpcnN0LXVzZSBpcyBhdmFpbGFibGVcbiAgICBlbmNyeXB0ZWQ6IGNvbmZpZy5lbmNyeXB0ZWQgPT0gbnVsbCA/ICgwLCBfZmVhdHVyZXMyLmRlZmF1bHQpKFwidHJ1c3RfYWxsX2NlcnRpZmljYXRlc1wiKSA6IGNvbmZpZy5lbmNyeXB0ZWQsXG4gICAgLy8gRGVmYXVsdCB0byB1c2luZyBUUlVTVF9BTExfQ0VSVElGSUNBVEVTIGlmIGl0IGlzIGF2YWlsYWJsZVxuICAgIHRydXN0OiBjb25maWcudHJ1c3QgfHwgKCgwLCBfZmVhdHVyZXMyLmRlZmF1bHQpKFwidHJ1c3RfYWxsX2NlcnRpZmljYXRlc1wiKSA/IFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFU1wiIDogXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSxcbiAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBjb25maWcudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBbXSxcbiAgICBrbm93bkhvc3RzOiBjb25maWcua25vd25Ib3N0c1xuICB9KSwgY29tcGxldGVVcmwpO1xufVxuXG5leHBvcnRzLmNvbm5lY3QgPSBjb25uZWN0O1xuZXhwb3J0cy5wYXJzZVNjaGVtZSA9IHBhcnNlU2NoZW1lO1xuZXhwb3J0cy5wYXJzZVVybCA9IHBhcnNlVXJsO1xuZXhwb3J0cy5Db25uZWN0aW9uID0gQ29ubmVjdGlvbjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQ2VudHJhbCBwbGFjZSB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSxcbi8vIGV4cGFuZCBhcyBuZWVkZWQuXG5cbnZhciBGRUFUVVJFUyA9IHtcbiAgdHJ1c3Rfb25fZmlyc3RfdXNlOiBmdW5jdGlvbiB0cnVzdF9vbl9maXJzdF91c2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoaXMgaXMgaW5zYW5lLiBXZSBhcmUgdmVyaWZ5aW5nIHRoYXQgd2UgaGF2ZSBhIHZlcnNpb24gb2YgZ2V0UGVlckNlcnRpZmljYXRlXG4gICAgICAvLyB0aGF0IHN1cHBvcnRzIHJlYWRpbmcgdGhlIHdob2xlIGNlcnRpZmljYXRlLCBlZyB0aGlzIGNvbW1pdDpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9jb21taXQvMzQ1YzQwYjZcbiAgICAgIHZhciBnZXRQZWVyQ2VydGlmaWNhdGVGdW5jdGlvbiA9IHJlcXVpcmUoJ3RscycpLlRMU1NvY2tldC5wcm90b3R5cGUuZ2V0UGVlckNlcnRpZmljYXRlO1xuICAgICAgdmFyIG51bWJlck9mUGFyYW1ldGVycyA9IGdldFBlZXJDZXJ0aWZpY2F0ZUZ1bmN0aW9uLmxlbmd0aDtcbiAgICAgIHJldHVybiBudW1iZXJPZlBhcmFtZXRlcnMgPj0gMTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxuICB0cnVzdF9hbGxfY2VydGlmaWNhdGVzOiBmdW5jdGlvbiB0cnVzdF9hbGxfY2VydGlmaWNhdGVzKCkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZ2V0UGVlckNlcnRpZmljYXRlRnVuY3Rpb24gPSByZXF1aXJlKCd0bHMnKS5UTFNTb2NrZXQucHJvdG90eXBlLmdldFBlZXJDZXJ0aWZpY2F0ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGhhc0ZlYXR1cmUobmFtZSkge1xuICByZXR1cm4gRkVBVFVSRVNbbmFtZV0gJiYgRkVBVFVSRVNbbmFtZV0oKTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gaGFzRmVhdHVyZTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfc3RyaW5naWZ5ID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5Jyk7XG5cbnZhciBfc3RyaW5naWZ5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0cmluZ2lmeSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3JvdW5kUm9iaW5BcnJheSA9IHJlcXVpcmUoJy4vcm91bmQtcm9iaW4tYXJyYXknKTtcblxudmFyIF9yb3VuZFJvYmluQXJyYXkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcm91bmRSb2JpbkFycmF5KTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4uL2Vycm9yJyk7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVnZXInKTtcblxudmFyIF9pbnRlZ2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVnZXIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgUFJPQ0VEVVJFX0NBTEwgPSAnQ0FMTCBkYm1zLmNsdXN0ZXIucm91dGluZy5nZXRTZXJ2ZXJzJzsgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cblxudmFyIFBST0NFRFVSRV9OT1RfRk9VTkRfQ09ERSA9ICdOZW8uQ2xpZW50RXJyb3IuUHJvY2VkdXJlLlByb2NlZHVyZU5vdEZvdW5kJztcblxudmFyIEdldFNlcnZlcnNVdGlsID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBHZXRTZXJ2ZXJzVXRpbCgpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBHZXRTZXJ2ZXJzVXRpbCk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShHZXRTZXJ2ZXJzVXRpbCwgW3tcbiAgICBrZXk6ICdjYWxsR2V0U2VydmVycycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhbGxHZXRTZXJ2ZXJzKHNlc3Npb24sIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHJldHVybiBzZXNzaW9uLnJ1bihQUk9DRURVUkVfQ0FMTCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHNlc3Npb24uY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWNvcmRzO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5jb2RlID09PSBQUk9DRURVUkVfTk9UX0ZPVU5EX0NPREUpIHtcbiAgICAgICAgICAvLyB0aHJvdyB3aGVuIGdldFNlcnZlcnMgcHJvY2VkdXJlIG5vdCBmb3VuZCBiZWNhdXNlIHRoaXMgaXMgY2xlYXJseSBhIGNvbmZpZ3VyYXRpb24gaXNzdWVcbiAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnU2VydmVyICcgKyByb3V0ZXJBZGRyZXNzICsgJyBjb3VsZCBub3QgcGVyZm9ybSByb3V0aW5nLiAnICsgJ01ha2Ugc3VyZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gYSBjYXVzYWwgY2x1c3RlcicsIF9lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXR1cm4gbm90aGluZyB3aGVuIGZhaWxlZCB0byBjb25uZWN0IGJlY2F1c2UgY29kZSBoaWdoZXIgaW4gdGhlIGNhbGxzdGFjayBpcyBzdGlsbCBhYmxlIHRvIHJldHJ5IHdpdGggYVxuICAgICAgICAvLyBkaWZmZXJlbnQgc2Vzc2lvbiB0b3dhcmRzIGEgZGlmZmVyZW50IHJvdXRlclxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3BhcnNlVHRsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VUdGwocmVjb3JkLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbm93ID0gKDAsIF9pbnRlZ2VyLmludCkoRGF0ZS5ub3coKSk7XG4gICAgICAgIHZhciBleHBpcmVzID0gcmVjb3JkLmdldCgndHRsJykubXVsdGlwbHkoMTAwMCkuYWRkKG5vdyk7XG4gICAgICAgIC8vIGlmIHRoZSBzZXJ2ZXIgdXNlcyBhIHJlYWxseSBiaWcgZXhwaXJlIHRpbWUgbGlrZSBMb25nLk1BWF9WQUxVRSB0aGlzIG1heSBoYXZlIG92ZXJmbG93ZWRcbiAgICAgICAgaWYgKGV4cGlyZXMubGVzc1RoYW4obm93KSkge1xuICAgICAgICAgIHJldHVybiBfaW50ZWdlcjIuZGVmYXVsdC5NQVhfVkFMVUU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4cGlyZXM7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnVW5hYmxlIHRvIHBhcnNlIFRUTCBlbnRyeSBmcm9tIHJvdXRlciAnICsgcm91dGVyQWRkcmVzcyArICcgZnJvbSByZWNvcmQ6XFxuJyArICgwLCBfc3RyaW5naWZ5Mi5kZWZhdWx0KShyZWNvcmQpLCBfZXJyb3IuUFJPVE9DT0xfRVJST1IpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3BhcnNlU2VydmVycycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlU2VydmVycyhyZWNvcmQsIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBzZXJ2ZXJzID0gcmVjb3JkLmdldCgnc2VydmVycycpO1xuXG4gICAgICAgIHZhciByb3V0ZXJzID0gbmV3IF9yb3VuZFJvYmluQXJyYXkyLmRlZmF1bHQoKTtcbiAgICAgICAgdmFyIHJlYWRlcnMgPSBuZXcgX3JvdW5kUm9iaW5BcnJheTIuZGVmYXVsdCgpO1xuICAgICAgICB2YXIgd3JpdGVycyA9IG5ldyBfcm91bmRSb2JpbkFycmF5Mi5kZWZhdWx0KCk7XG5cbiAgICAgICAgc2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzZXJ2ZXIpIHtcbiAgICAgICAgICB2YXIgcm9sZSA9IHNlcnZlclsncm9sZSddO1xuICAgICAgICAgIHZhciBhZGRyZXNzZXMgPSBzZXJ2ZXJbJ2FkZHJlc3NlcyddO1xuXG4gICAgICAgICAgaWYgKHJvbGUgPT09ICdST1VURScpIHtcbiAgICAgICAgICAgIHJvdXRlcnMucHVzaEFsbChhZGRyZXNzZXMpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocm9sZSA9PT0gJ1dSSVRFJykge1xuICAgICAgICAgICAgd3JpdGVycy5wdXNoQWxsKGFkZHJlc3Nlcyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyb2xlID09PSAnUkVBRCcpIHtcbiAgICAgICAgICAgIHJlYWRlcnMucHVzaEFsbChhZGRyZXNzZXMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnVW5rbm93biBzZXJ2ZXIgcm9sZSBcIicgKyByb2xlICsgJ1wiJywgX2Vycm9yLlBST1RPQ09MX0VSUk9SKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGVyczogcm91dGVycyxcbiAgICAgICAgICByZWFkZXJzOiByZWFkZXJzLFxuICAgICAgICAgIHdyaXRlcnM6IHdyaXRlcnNcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGlnbm9yZSkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnVW5hYmxlIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgZnJvbSByb3V0ZXIgJyArIHJvdXRlckFkZHJlc3MgKyAnIGZyb20gcmVjb3JkOlxcbicgKyAoMCwgX3N0cmluZ2lmeTIuZGVmYXVsdCkocmVjb3JkKSwgX2Vycm9yLlBST1RPQ09MX0VSUk9SKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEdldFNlcnZlcnNVdGlsO1xufSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBHZXRTZXJ2ZXJzVXRpbDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuU3RydWN0dXJlID0gZXhwb3J0cy5VbnBhY2tlciA9IGV4cG9ydHMuUGFja2VyID0gdW5kZWZpbmVkO1xuXG52YXIgX2tleXMgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzXCIpO1xuXG52YXIgX2tleXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfa2V5cyk7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3V0ZiA9IHJlcXVpcmUoXCIuL3V0ZjhcIik7XG5cbnZhciBfdXRmMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3V0Zik7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoXCIuLi9pbnRlZ2VyXCIpO1xuXG52YXIgX2ludGVnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW50ZWdlcik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi8uLi9lcnJvclwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFRJTllfU1RSSU5HID0gMHg4MDsgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICovXG5cbnZhciBUSU5ZX0xJU1QgPSAweDkwO1xudmFyIFRJTllfTUFQID0gMHhBMDtcbnZhciBUSU5ZX1NUUlVDVCA9IDB4QjA7XG52YXIgTlVMTCA9IDB4QzA7XG52YXIgRkxPQVRfNjQgPSAweEMxO1xudmFyIEZBTFNFID0gMHhDMjtcbnZhciBUUlVFID0gMHhDMztcbnZhciBJTlRfOCA9IDB4Qzg7XG52YXIgSU5UXzE2ID0gMHhDOTtcbnZhciBJTlRfMzIgPSAweENBO1xudmFyIElOVF82NCA9IDB4Q0I7XG52YXIgU1RSSU5HXzggPSAweEQwO1xudmFyIFNUUklOR18xNiA9IDB4RDE7XG52YXIgU1RSSU5HXzMyID0gMHhEMjtcbnZhciBMSVNUXzggPSAweEQ0O1xudmFyIExJU1RfMTYgPSAweEQ1O1xudmFyIExJU1RfMzIgPSAweEQ2O1xudmFyIE1BUF84ID0gMHhEODtcbnZhciBNQVBfMTYgPSAweEQ5O1xudmFyIE1BUF8zMiA9IDB4REE7XG52YXIgU1RSVUNUXzggPSAweERDO1xudmFyIFNUUlVDVF8xNiA9IDB4REQ7XG5cbi8qKlxuICAqIEEgU3RydWN0dXJlIGhhdmUgYSBzaWduYXR1cmUgYW5kIGZpZWxkcy5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxudmFyIFN0cnVjdHVyZSA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGZ1bmN0aW9uIFN0cnVjdHVyZShzaWduYXR1cmUsIGZpZWxkcykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFN0cnVjdHVyZSk7XG5cbiAgICB0aGlzLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFN0cnVjdHVyZSwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgZmllbGRTdHIgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBmaWVsZFN0ciArPSBcIiwgXCI7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGRTdHIgKz0gdGhpcy5maWVsZHNbaV07XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJTdHJ1Y3R1cmUoXCIgKyB0aGlzLnNpZ25hdHVyZSArIFwiLCBbXCIgKyB0aGlzLmZpZWxkcyArIFwiXSlcIjtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFN0cnVjdHVyZTtcbn0oKTtcblxuLyoqXG4gICogQ2xhc3MgdG8gcGFja1xuICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAqL1xuXG5cbnZhciBQYWNrZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhY2tlcihjaGFubmVsKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUGFja2VyKTtcblxuICAgIHRoaXMuX2NoID0gY2hhbm5lbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFja2FibGUgZnVuY3Rpb24gb3V0IG9mIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKiBAcGFyYW0geCB0aGUgdmFsdWUgdG8gcGFja1xuICAgKiBAcGFyYW0gb25FcnJvciBjYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlbiB2YWx1ZSBjYW5ub3QgYmUgcGFja2VkXG4gICAqIEByZXR1cm5zIEZ1bmN0aW9uXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUGFja2VyLCBbe1xuICAgIGtleTogXCJwYWNrYWJsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrYWJsZSh4LCBvbkVycm9yKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fY2gud3JpdGVVSW50OChOVUxMKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5fY2gud3JpdGVVSW50OChUUlVFKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX2NoLndyaXRlVUludDgoRkFMU0UpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgeCA9PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tGbG9hdCh4KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrU3RyaW5nKHgsIG9uRXJyb3IpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICgoMCwgX2ludGVnZXIuaXNJbnQpKHgpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tJbnRlZ2VyKHgpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICh4IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpcy5wYWNrTGlzdEhlYWRlcih4Lmxlbmd0aCwgb25FcnJvcik7XG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHgubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBfdGhpcy5wYWNrYWJsZSh4W19pXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHhbX2ldLCBvbkVycm9yKSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIFN0cnVjdHVyZSkge1xuICAgICAgICB2YXIgcGFja2FibGVGaWVsZHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4LmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHBhY2thYmxlRmllbGRzW2ldID0gdGhpcy5wYWNrYWJsZSh4LmZpZWxkc1tpXSwgb25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMucGFja1N0cnVjdCh4LnNpZ25hdHVyZSwgcGFja2FibGVGaWVsZHMpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmICgodHlwZW9mIHggPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogKDAsIF90eXBlb2YzLmRlZmF1bHQpKHgpKSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGtleXMgPSAoMCwgX2tleXMyLmRlZmF1bHQpKHgpO1xuXG4gICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBrZXlzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgICAgICAgIGlmICh4W2tleXNbX2kyXV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5wYWNrTWFwSGVhZGVyKGNvdW50LCBvbkVycm9yKTtcbiAgICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBrZXlzLmxlbmd0aDsgX2kzKyspIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW19pM107XG4gICAgICAgICAgICBpZiAoeFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgX3RoaXMucGFja1N0cmluZyhrZXkpO1xuICAgICAgICAgICAgICBfdGhpcy5wYWNrYWJsZSh4W2tleV0sIG9uRXJyb3IpKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9uRXJyb3IpIHtcbiAgICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiQ2Fubm90IHBhY2sgdGhpcyB2YWx1ZTogXCIgKyB4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhY2tzIGEgc3RydWN0XG4gICAgICogQHBhcmFtIHNpZ25hdHVyZSB0aGUgc2lnbmF0dXJlIG9mIHRoZSBzdHJ1Y3RcbiAgICAgKiBAcGFyYW0gcGFja2FibGVGaWVsZHMgdGhlIGZpZWxkcyBvZiB0aGUgc3RydWN0LCBtYWtlIHN1cmUgeW91IGNhbGwgYHBhY2thYmxlIG9uIGFsbCBmaWVsZHNgXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RydWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJ1Y3Qoc2lnbmF0dXJlLCBwYWNrYWJsZUZpZWxkcywgb25FcnJvcikge1xuICAgICAgcGFja2FibGVGaWVsZHMgPSBwYWNrYWJsZUZpZWxkcyB8fCBbXTtcbiAgICAgIHRoaXMucGFja1N0cnVjdEhlYWRlcihwYWNrYWJsZUZpZWxkcy5sZW5ndGgsIHNpZ25hdHVyZSwgb25FcnJvcik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhY2thYmxlRmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhY2thYmxlRmllbGRzW2ldKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tJbnRlZ2VyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tJbnRlZ2VyKHgpIHtcbiAgICAgIHZhciBoaWdoID0geC5oaWdoLFxuICAgICAgICAgIGxvdyA9IHgubG93O1xuXG4gICAgICBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4MTApICYmIHgubGVzc1RoYW4oMHg4MCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwKSAmJiB4Lmxlc3NUaGFuKC0weDEwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwKSkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MTYobG93KTtcbiAgICAgIH0gZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMDAwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwMDAwMCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDMyKGxvdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF82NCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIoaGlnaCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0Zsb2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tGbG9hdCh4KSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KEZMT0FUXzY0KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlRmxvYXQ2NCh4KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrU3RyaW5nKHgsIG9uRXJyb3IpIHtcbiAgICAgIHZhciBieXRlcyA9IF91dGYyLmRlZmF1bHQuZW5jb2RlKHgpO1xuICAgICAgdmFyIHNpemUgPSBieXRlcy5sZW5ndGg7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUklORyB8IHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgLyAyNTYgPj4gMCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVVRGLTggc3RyaW5ncyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja0xpc3RIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja0xpc3RIZWFkZXIoc2l6ZSwgb25FcnJvcikge1xuICAgICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9MSVNUIHwgc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzMyKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDE2Nzc3MjE2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDY1NTM2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiTGlzdHMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tNYXBIZWFkZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja01hcEhlYWRlcihzaXplLCBvbkVycm9yKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX01BUCB8IHNpemUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTUFQXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplIC8gMjU2ID4+IDApO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMzIpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMTY3NzcyMTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gNjU1MzYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJNYXBzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrU3RydWN0SGVhZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tTdHJ1Y3RIZWFkZXIoc2l6ZSwgc2lnbmF0dXJlLCBvbkVycm9yKSB7XG4gICAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUlVDVCB8IHNpemUpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpZ25hdHVyZSk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF84KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaWduYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAvIDI1NiA+PiAwKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTdHJ1Y3R1cmVzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUGFja2VyO1xufSgpO1xuXG4vKipcbiAgKiBDbGFzcyB0byB1bnBhY2tcbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxuXG52YXIgVW5wYWNrZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFVucGFja2VyKCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFVucGFja2VyKTtcblxuICAgIC8vIEhpZ2hlciBsZXZlbCBsYXllcnMgY2FuIHNwZWNpZnkgaG93IHRvIG1hcCBzdHJ1Y3RzIHRvIGhpZ2hlci1sZXZlbCBvYmplY3RzLlxuICAgIC8vIElmIHdlIHJlY2lldmUgYSBzdHJ1Y3QgdGhhdCBoYXMgYSBzaWduYXR1cmUgdGhhdCBkb2VzIG5vdCBoYXZlIGEgbWFwcGVyLFxuICAgIC8vIHdlIHNpbXBseSByZXR1cm4gYSBTdHJ1Y3R1cmUgb2JqZWN0LlxuICAgIHRoaXMuc3RydWN0TWFwcGVycyA9IHt9O1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoVW5wYWNrZXIsIFt7XG4gICAga2V5OiBcInVucGFja0xpc3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrTGlzdChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciB2YWx1ZSA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFsdWUucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5wYWNrTWFwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFja01hcChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHt9O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgICAgIHZhbHVlW2tleV0gPSB0aGlzLnVucGFjayhidWZmZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnBhY2tTdHJ1Y3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrU3RydWN0KHNpemUsIGJ1ZmZlcikge1xuICAgICAgdmFyIHNpZ25hdHVyZSA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICAgIHZhciBtYXBwZXIgPSB0aGlzLnN0cnVjdE1hcHBlcnNbc2lnbmF0dXJlXTtcbiAgICAgIGlmIChtYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuIG1hcHBlcih0aGlzLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHZhbHVlID0gbmV3IFN0cnVjdHVyZShzaWduYXR1cmUsIFtdKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICB2YWx1ZS5maWVsZHMucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVucGFja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2soYnVmZmVyKSB7XG4gICAgICB2YXIgbWFya2VyID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgICAgaWYgKG1hcmtlciA9PSBOVUxMKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gVFJVRSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZBTFNFKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZMT0FUXzY0KSB7XG4gICAgICAgIHJldHVybiBidWZmZXIucmVhZEZsb2F0NjQoKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID49IDAgJiYgbWFya2VyIDwgMTI4KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShtYXJrZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPj0gMjQwICYmIG1hcmtlciA8IDI1Nikge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkobWFya2VyIC0gMjU2KTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF84KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShidWZmZXIucmVhZEludDgoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfMTYpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKGJ1ZmZlci5yZWFkSW50MTYoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfMzIpIHtcbiAgICAgICAgdmFyIGIgPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShiKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF82NCkge1xuICAgICAgICB2YXIgaGlnaCA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgdmFyIGxvdyA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBfaW50ZWdlcjIuZGVmYXVsdChsb3csIGhpZ2gpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzgpIHtcbiAgICAgICAgcmV0dXJuIF91dGYyLmRlZmF1bHQuZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50OCgpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR18xNikge1xuICAgICAgICByZXR1cm4gX3V0ZjIuZGVmYXVsdC5kZWNvZGUoYnVmZmVyLCBidWZmZXIucmVhZFVJbnQxNigpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR18zMikge1xuICAgICAgICByZXR1cm4gX3V0ZjIuZGVmYXVsdC5kZWNvZGUoYnVmZmVyLCBidWZmZXIucmVhZFVJbnQzMigpKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IExJU1RfOCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IExJU1RfMTYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQxNigpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF8zMikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDMyKCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBNQVBfOCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzE2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChidWZmZXIucmVhZFVJbnQxNigpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzMyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChidWZmZXIucmVhZFVJbnQzMigpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSVUNUXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUlVDVF8xNikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH1cbiAgICAgIHZhciBtYXJrZXJIaWdoID0gbWFya2VyICYgMHhGMDtcbiAgICAgIHZhciBtYXJrZXJMb3cgPSBtYXJrZXIgJiAweDBGO1xuICAgICAgaWYgKG1hcmtlckhpZ2ggPT0gMHg4MCkge1xuICAgICAgICByZXR1cm4gX3V0ZjIuZGVmYXVsdC5kZWNvZGUoYnVmZmVyLCBtYXJrZXJMb3cpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXJIaWdoID09IDB4OTApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChtYXJrZXJMb3csIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHhBMCkge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAobWFya2VyTG93LCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXJIaWdoID09IDB4QjApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBwYWNrZWQgdmFsdWUgd2l0aCBtYXJrZXIgXCIgKyBtYXJrZXIudG9TdHJpbmcoMTYpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFVucGFja2VyO1xufSgpO1xuXG5leHBvcnRzLlBhY2tlciA9IFBhY2tlcjtcbmV4cG9ydHMuVW5wYWNrZXIgPSBVbnBhY2tlcjtcbmV4cG9ydHMuU3RydWN0dXJlID0gU3RydWN0dXJlOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUG9vbCA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBjcmVhdGUgIGFuIGFsbG9jYXRpb24gZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbmV3IHJlc291cmNlLiBJdCdzIGdpdmVuXG4gICAqICAgICAgICAgICAgICAgIGEgc2luZ2xlIGFyZ3VtZW50LCBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHJlc291cmNlIHRvXG4gICAqICAgICAgICAgICAgICAgIHRoZSBwb29sIGlmIGludm9rZWQsIHdoaWNoIGlzIG1lYW50IHRvIGJlIGNhbGxlZCBvbiAuZGlzcG9zZVxuICAgKiAgICAgICAgICAgICAgICBvciAuY2xvc2Ugb3Igd2hhdGV2ZXIgbWVjaGFuaXNtIHRoZSByZXNvdXJjZSB1c2VzIHRvIGZpbmFsaXplLlxuICAgKiBAcGFyYW0gZGVzdHJveSBjYWxsZWQgd2l0aCB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBldmljdGVkIGZyb20gdGhpcyBwb29sXG4gICAqIEBwYXJhbSB2YWxpZGF0ZSBjYWxsZWQgYXQgdmFyaW91cyB0aW1lcyAobGlrZSB3aGVuIGFuIGluc3RhbmNlIGlzIGFjcXVpcmVkIGFuZFxuICAgKiAgICAgICAgICAgICAgICAgd2hlbiBpdCBpcyByZXR1cm5lZCkuIElmIHRoaXMgcmV0dXJucyBmYWxzZSwgdGhlIHJlc291cmNlIHdpbGxcbiAgICogICAgICAgICAgICAgICAgIGJlIGV2aWN0ZWRcbiAgICogQHBhcmFtIG1heElkbGUgdGhlIG1heCBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGFsbG93ZWQgaWRsZSBpbiB0aGUgcG9vbCBhdFxuICAgKiAgICAgICAgICAgICAgICBhbnkgdGltZS4gSWYgdGhpcyB0aHJlc2hvbGQgaXMgZXhjZWVkZWQsIHJlc291cmNlcyB3aWxsIGJlIGV2aWN0ZWQuXG4gICAqL1xuICBmdW5jdGlvbiBQb29sKGNyZWF0ZSkge1xuICAgIHZhciBkZXN0cm95ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHZhciB2YWxpZGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICB2YXIgbWF4SWRsZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogNTA7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUG9vbCk7XG5cbiAgICB0aGlzLl9jcmVhdGUgPSBjcmVhdGU7XG4gICAgdGhpcy5fZGVzdHJveSA9IGRlc3Ryb3k7XG4gICAgdGhpcy5fdmFsaWRhdGUgPSB2YWxpZGF0ZTtcbiAgICB0aGlzLl9tYXhJZGxlID0gbWF4SWRsZTtcbiAgICB0aGlzLl9wb29scyA9IHt9O1xuICAgIHRoaXMuX3JlbGVhc2UgPSB0aGlzLl9yZWxlYXNlLmJpbmQodGhpcyk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShQb29sLCBbe1xuICAgIGtleTogXCJhY3F1aXJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFjcXVpcmUoa2V5KSB7XG4gICAgICB2YXIgcmVzb3VyY2UgPSB2b2lkIDA7XG4gICAgICB2YXIgcG9vbCA9IHRoaXMuX3Bvb2xzW2tleV07XG4gICAgICBpZiAoIXBvb2wpIHtcbiAgICAgICAgcG9vbCA9IFtdO1xuICAgICAgICB0aGlzLl9wb29sc1trZXldID0gcG9vbDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChwb29sLmxlbmd0aCkge1xuICAgICAgICByZXNvdXJjZSA9IHBvb2wucG9wKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRlKHJlc291cmNlKSkge1xuICAgICAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9kZXN0cm95KHJlc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlKGtleSwgdGhpcy5fcmVsZWFzZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1cmdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1cmdlKGtleSkge1xuICAgICAgdmFyIHJlc291cmNlID0gdm9pZCAwO1xuICAgICAgdmFyIHBvb2wgPSB0aGlzLl9wb29sc1trZXldIHx8IFtdO1xuICAgICAgd2hpbGUgKHBvb2wubGVuZ3RoKSB7XG4gICAgICAgIHJlc291cmNlID0gcG9vbC5wb3AoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveShyZXNvdXJjZSk7XG4gICAgICB9XG4gICAgICBkZWxldGUgdGhpcy5fcG9vbHNba2V5XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHVyZ2VBbGxcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHVyZ2VBbGwoKSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fcG9vbHMua2V5cykge1xuICAgICAgICBpZiAodGhpcy5fcG9vbHMuaGFzT3duUHJvcGVydHlrZXkpIHtcbiAgICAgICAgICB0aGlzLnB1cmdlKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBrZXkgaW4gdGhpcy5fcG9vbHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9yZWxlYXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWxlYXNlKGtleSwgcmVzb3VyY2UpIHtcbiAgICAgIHZhciBwb29sID0gdGhpcy5fcG9vbHNba2V5XTtcbiAgICAgIGlmICghcG9vbCkge1xuICAgICAgICAvL2tleSBoYXMgYmVlbiBwdXJnZWQsIGRvbid0IHB1dCBpdCBiYWNrXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwb29sLmxlbmd0aCA+PSB0aGlzLl9tYXhJZGxlIHx8ICF0aGlzLl92YWxpZGF0ZShyZXNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveShyZXNvdXJjZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb29sLnB1c2gocmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUG9vbDtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gUG9vbDsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9zdHJpbmdpZnkgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5XCIpO1xuXG52YXIgX3N0cmluZ2lmeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpbmdpZnkpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfZ2V0U2VydmVyc1V0aWwgPSByZXF1aXJlKFwiLi9nZXQtc2VydmVycy11dGlsXCIpO1xuXG52YXIgX2dldFNlcnZlcnNVdGlsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFNlcnZlcnNVdGlsKTtcblxudmFyIF9yb3V0aW5nVGFibGUgPSByZXF1aXJlKFwiLi9yb3V0aW5nLXRhYmxlXCIpO1xuXG52YXIgX3JvdXRpbmdUYWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yb3V0aW5nVGFibGUpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZShcIi4uL2Vycm9yXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgUmVkaXNjb3ZlcnkgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJlZGlzY292ZXJ5KGdldFNlcnZlcnNVdGlsKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUmVkaXNjb3ZlcnkpO1xuXG4gICAgdGhpcy5fZ2V0U2VydmVyc1V0aWwgPSBnZXRTZXJ2ZXJzVXRpbCB8fCBuZXcgX2dldFNlcnZlcnNVdGlsMi5kZWZhdWx0KCk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShSZWRpc2NvdmVyeSwgW3tcbiAgICBrZXk6IFwibG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIoc2Vzc2lvbiwgcm91dGVyQWRkcmVzcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIHRoaXMuX2dldFNlcnZlcnNVdGlsLmNhbGxHZXRTZXJ2ZXJzKHNlc3Npb24sIHJvdXRlckFkZHJlc3MpLnRoZW4oZnVuY3Rpb24gKHJlY29yZHMpIHtcbiAgICAgICAgaWYgKHJlY29yZHMgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBjb25uZWN0aW9uIGVycm9yIGhhcHBlbmVkLCB1bmFibGUgdG8gcmV0cmlldmUgcm91dGluZyB0YWJsZSBmcm9tIHRoaXMgcm91dGVyLCBuZXh0IG9uZSBzaG91bGQgYmUgcXVlcmllZFxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ0lsbGVnYWwgcmVzcG9uc2UgZnJvbSByb3V0ZXIgXCInICsgcm91dGVyQWRkcmVzcyArICdcIi4gJyArICdSZWNlaXZlZCAnICsgcmVjb3Jkcy5sZW5ndGggKyAnIHJlY29yZHMgYnV0IGV4cGVjdGVkIG9ubHkgb25lLlxcbicgKyAoMCwgX3N0cmluZ2lmeTIuZGVmYXVsdCkocmVjb3JkcyksIF9lcnJvci5QUk9UT0NPTF9FUlJPUik7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjb3JkID0gcmVjb3Jkc1swXTtcblxuICAgICAgICB2YXIgZXhwaXJhdGlvblRpbWUgPSBfdGhpcy5fZ2V0U2VydmVyc1V0aWwucGFyc2VUdGwocmVjb3JkLCByb3V0ZXJBZGRyZXNzKTtcblxuICAgICAgICB2YXIgX2dldFNlcnZlcnNVdGlsJHBhcnNlID0gX3RoaXMuX2dldFNlcnZlcnNVdGlsLnBhcnNlU2VydmVycyhyZWNvcmQsIHJvdXRlckFkZHJlc3MpLFxuICAgICAgICAgICAgcm91dGVycyA9IF9nZXRTZXJ2ZXJzVXRpbCRwYXJzZS5yb3V0ZXJzLFxuICAgICAgICAgICAgcmVhZGVycyA9IF9nZXRTZXJ2ZXJzVXRpbCRwYXJzZS5yZWFkZXJzLFxuICAgICAgICAgICAgd3JpdGVycyA9IF9nZXRTZXJ2ZXJzVXRpbCRwYXJzZS53cml0ZXJzO1xuXG4gICAgICAgIFJlZGlzY292ZXJ5Ll9hc3NlcnROb25FbXB0eShyb3V0ZXJzLCAncm91dGVycycsIHJvdXRlckFkZHJlc3MpO1xuICAgICAgICBSZWRpc2NvdmVyeS5fYXNzZXJ0Tm9uRW1wdHkocmVhZGVycywgJ3JlYWRlcnMnLCByb3V0ZXJBZGRyZXNzKTtcbiAgICAgICAgLy8gY2FzZSB3aXRoIG5vIHdyaXRlcnMgaXMgcHJvY2Vzc2VkIGhpZ2hlciBpbiB0aGUgcHJvbWlzZSBjaGFpbiBiZWNhdXNlIG9ubHkgUm91dGluZ0RyaXZlciBrbm93c1xuICAgICAgICAvLyBob3cgdG8gZGVhbCB3aXRoIHN1Y2ggdGFibGUgYW5kIGhvdyB0byB0cmVhdCByb3V0ZXIgdGhhdCByZXR1cm5lZCBzdWNoIHRhYmxlXG5cbiAgICAgICAgcmV0dXJuIG5ldyBfcm91dGluZ1RhYmxlMi5kZWZhdWx0KHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMsIGV4cGlyYXRpb25UaW1lKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcIl9hc3NlcnROb25FbXB0eVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYXNzZXJ0Tm9uRW1wdHkoc2VydmVyc1JvdW5kUm9iaW5BcnJheSwgc2VydmVyc05hbWUsIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIGlmIChzZXJ2ZXJzUm91bmRSb2JpbkFycmF5LmlzRW1wdHkoKSkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnUmVjZWl2ZWQgbm8gJyArIHNlcnZlcnNOYW1lICsgJyBmcm9tIHJvdXRlciAnICsgcm91dGVyQWRkcmVzcywgX2Vycm9yLlBST1RPQ09MX0VSUk9SKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFJlZGlzY292ZXJ5O1xufSgpOyAvKipcbiAgICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgICAqXG4gICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICAgKlxuICAgICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICAgKlxuICAgICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgICAqXG4gICAgICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAgICovXG5cbmV4cG9ydHMuZGVmYXVsdCA9IFJlZGlzY292ZXJ5OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEFuIGFycmF5IHRoYXQgbGV0cyB5b3UgaG9wIHRocm91Z2ggdGhlIGVsZW1lbnRzIGVuZGxlc3NseS5cbiAqL1xudmFyIFJvdW5kUm9iaW5BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUm91bmRSb2JpbkFycmF5KGl0ZW1zKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUm91bmRSb2JpbkFycmF5KTtcblxuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMgfHwgW107XG4gICAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFJvdW5kUm9iaW5BcnJheSwgW3tcbiAgICBrZXk6ICduZXh0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IHRoaXMuX29mZnNldCAlIHRoaXMuc2l6ZSgpO1xuICAgICAgdGhpcy5fb2Zmc2V0Kys7XG4gICAgICByZXR1cm4gdGhpcy5faXRlbXNbaW5kZXhdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1c2hBbGwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoQWxsKGVsZW1zKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5IGV4cGVjdGVkIGJ1dCBnb3Q6ICcgKyBlbGVtcyk7XG4gICAgICB9XG5cbiAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMuX2l0ZW1zLCBlbGVtcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaXNFbXB0eScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5faXRlbXMubGVuZ3RoID09PSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NpemUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0b0FycmF5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9BcnJheSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW1vdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoaXRlbSkge1xuICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLl9pdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgIT09IGl0ZW07XG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFJvdW5kUm9iaW5BcnJheTtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gUm91bmRSb2JpbkFycmF5OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIik7XG5cbnZhciBfdG9Db25zdW1hYmxlQXJyYXkzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9Db25zdW1hYmxlQXJyYXkyKTtcblxudmFyIF9mcm9tID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tXCIpO1xuXG52YXIgX2Zyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnJvbSk7XG5cbnZhciBfc2V0ID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9zZXRcIik7XG5cbnZhciBfc2V0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NldCk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9pbnRlZ2VyID0gcmVxdWlyZShcIi4uL2ludGVnZXJcIik7XG5cbnZhciBfcm91bmRSb2JpbkFycmF5ID0gcmVxdWlyZShcIi4vcm91bmQtcm9iaW4tYXJyYXlcIik7XG5cbnZhciBfcm91bmRSb2JpbkFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JvdW5kUm9iaW5BcnJheSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIE1JTl9ST1VURVJTID0gMTtcblxudmFyIFJvdXRpbmdUYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUm91dGluZ1RhYmxlKHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMsIGV4cGlyYXRpb25UaW1lKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUm91dGluZ1RhYmxlKTtcblxuICAgIHRoaXMucm91dGVycyA9IHJvdXRlcnMgfHwgbmV3IF9yb3VuZFJvYmluQXJyYXkyLmRlZmF1bHQoKTtcbiAgICB0aGlzLnJlYWRlcnMgPSByZWFkZXJzIHx8IG5ldyBfcm91bmRSb2JpbkFycmF5Mi5kZWZhdWx0KCk7XG4gICAgdGhpcy53cml0ZXJzID0gd3JpdGVycyB8fCBuZXcgX3JvdW5kUm9iaW5BcnJheTIuZGVmYXVsdCgpO1xuICAgIHRoaXMuZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZSB8fCAoMCwgX2ludGVnZXIuaW50KSgwKTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFJvdXRpbmdUYWJsZSwgW3tcbiAgICBrZXk6IFwiZm9yZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvcmdldChhZGRyZXNzKSB7XG4gICAgICAvLyBEb24ndCByZW1vdmUgaXQgZnJvbSB0aGUgc2V0IG9mIHJvdXRlcnMsIHNpbmNlIHRoYXQgbWlnaHQgbWVhbiB3ZSBsb3NlIG91ciBhYmlsaXR5IHRvIHJlLWRpc2NvdmVyLFxuICAgICAgLy8ganVzdCByZW1vdmUgaXQgZnJvbSB0aGUgc2V0IG9mIHJlYWRlcnMgYW5kIHdyaXRlcnMsIHNvIHRoYXQgd2UgZG9uJ3QgdXNlIGl0IGZvciBhY3R1YWwgd29yayB3aXRob3V0XG4gICAgICAvLyBwZXJmb3JtaW5nIGRpc2NvdmVyeSBmaXJzdC5cbiAgICAgIHRoaXMucmVhZGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gICAgICB0aGlzLndyaXRlcnMucmVtb3ZlKGFkZHJlc3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JnZXRSb3V0ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yZ2V0Um91dGVyKGFkZHJlc3MpIHtcbiAgICAgIHRoaXMucm91dGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvcmdldFdyaXRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JnZXRXcml0ZXIoYWRkcmVzcykge1xuICAgICAgdGhpcy53cml0ZXJzLnJlbW92ZShhZGRyZXNzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2VydmVyc0RpZmZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2VydmVyc0RpZmYob3RoZXJSb3V0aW5nVGFibGUpIHtcbiAgICAgIHZhciBvbGRTZXJ2ZXJzID0gbmV3IF9zZXQyLmRlZmF1bHQodGhpcy5fYWxsU2VydmVycygpKTtcbiAgICAgIHZhciBuZXdTZXJ2ZXJzID0gb3RoZXJSb3V0aW5nVGFibGUuX2FsbFNlcnZlcnMoKTtcbiAgICAgIG5ld1NlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAobmV3U2VydmVyKSB7XG4gICAgICAgIHJldHVybiBvbGRTZXJ2ZXJzLmRlbGV0ZShuZXdTZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gKDAsIF9mcm9tMi5kZWZhdWx0KShvbGRTZXJ2ZXJzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNTdGFsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1N0YWxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhwaXJhdGlvblRpbWUubGVzc1RoYW4oRGF0ZS5ub3coKSkgfHwgdGhpcy5yb3V0ZXJzLnNpemUoKSA8PSBNSU5fUk9VVEVSUyB8fCB0aGlzLnJlYWRlcnMuaXNFbXB0eSgpIHx8IHRoaXMud3JpdGVycy5pc0VtcHR5KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIl9hbGxTZXJ2ZXJzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9hbGxTZXJ2ZXJzKCkge1xuICAgICAgcmV0dXJuIFtdLmNvbmNhdCgoMCwgX3RvQ29uc3VtYWJsZUFycmF5My5kZWZhdWx0KSh0aGlzLnJvdXRlcnMudG9BcnJheSgpKSwgKDAsIF90b0NvbnN1bWFibGVBcnJheTMuZGVmYXVsdCkodGhpcy5yZWFkZXJzLnRvQXJyYXkoKSksICgwLCBfdG9Db25zdW1hYmxlQXJyYXkzLmRlZmF1bHQpKHRoaXMud3JpdGVycy50b0FycmF5KCkpKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFJvdXRpbmdUYWJsZTtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gUm91dGluZ1RhYmxlOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfcmVjb3JkID0gcmVxdWlyZShcIi4uL3JlY29yZFwiKTtcblxudmFyIF9yZWNvcmQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVjb3JkKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBIYW5kbGVzIGEgUlVOL1BVTExfQUxMLCBvciBSVU4vRElTQ0FSRF9BTEwgcmVxdWVzdHMsIG1hcHMgdGhlIHJlc3BvbnNlc1xuICogaW4gYSB3YXkgdGhhdCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgY2FuIHNlZSB0aGVzZSBhcyBhIGNsZWFuIFN0cmVhbVxuICogb2YgcmVjb3Jkcy5cbiAqIFRoaXMgY2xhc3Mgd2lsbCBxdWV1ZSB1cCBpbmNvbWluZyBtZXNzYWdlcyB1bnRpbCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXJcbiAqIGZvciB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIHJlZ2lzdGVyZWQuIFRodXMsIHdlIGtlZXAgZmllbGRzIGFyb3VuZFxuICogZm9yIHRyYWNraW5nIGhlYWQvcmVjb3Jkcy90YWlsLiBUaGVzZSBhcmUgb25seSB1c2VkIGlmIHRoZXJlIGlzIG5vXG4gKiBvYnNlcnZlciByZWdpc3RlcmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbnZhciBTdHJlYW1PYnNlcnZlciA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gZXJyb3JUcmFuc2Zvcm1lciBvcHRpb25hbCBjYWxsYmFjayB0byBiZSB1c2VkIGZvciBhZGRpbmcgYWRkaXRpb25hbCBsb2dpYyBvbiBlcnJvclxuICAgKi9cbiAgZnVuY3Rpb24gU3RyZWFtT2JzZXJ2ZXIoKSB7XG4gICAgdmFyIGVycm9yVHJhbnNmb3JtZXIgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIHJldHVybiBlcnI7XG4gICAgfTtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBTdHJlYW1PYnNlcnZlcik7XG5cbiAgICB0aGlzLl9maWVsZEtleXMgPSBudWxsO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gbnVsbDtcbiAgICB0aGlzLl9xdWV1ZWRSZWNvcmRzID0gW107XG4gICAgdGhpcy5fdGFpbCA9IG51bGw7XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Vycm9yVHJhbnNmb3JtZXIgPSBlcnJvclRyYW5zZm9ybWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgYmUgY2FsbGVkIG9uIGV2ZXJ5IHJlY29yZCB0aGF0IGNvbWVzIGluIGFuZCB0cmFuc2Zvcm0gYSByYXcgcmVjb3JkXG4gICAqIHRvIGEgT2JqZWN0LiBJZiB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGlzIHByZXNlbnQsIHBhc3MgdHJhbnNmb3JtZWQgcmVjb3JkXG4gICAqIHRvIGl0J3Mgb25OZXh0IG1ldGhvZCwgb3RoZXJ3aXNlLCBwdXNoIHRvIHJlY29yZCBxdWUuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHJhd1JlY29yZCAtIEFuIGFycmF5IHdpdGggdGhlIHJhdyByZWNvcmRcbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShTdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6IFwib25OZXh0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTmV4dChyYXdSZWNvcmQpIHtcbiAgICAgIHZhciByZWNvcmQgPSBuZXcgX3JlY29yZDIuZGVmYXVsdCh0aGlzLl9maWVsZEtleXMsIHJhd1JlY29yZCwgdGhpcy5fZmllbGRMb29rdXApO1xuICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLm9uTmV4dChyZWNvcmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcXVldWVkUmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm9uQ29tcGxldGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1ldGEpIHtcbiAgICAgIGlmICh0aGlzLl9maWVsZEtleXMgPT09IG51bGwpIHtcbiAgICAgICAgLy8gU3RyZWFtIGhlYWRlciwgYnVpbGQgYSBuYW1lLT5pbmRleCBmaWVsZCBsb29rdXAgdGFibGVcbiAgICAgICAgLy8gdG8gYmUgdXNlZCBieSByZWNvcmRzLiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIGl0XG4gICAgICAgIC8vIGZhc3RlciB0byBsb29rIHVwIGZpZWxkcyBpbiBhIHJlY29yZCBieSBuYW1lLCByYXRoZXIgdGhhbiBieSBpbmRleC5cbiAgICAgICAgLy8gU2luY2UgdGhlIHJlY29yZHMgd2UgZ2V0IGJhY2sgdmlhIEJvbHQgYXJlIGp1c3QgYXJyYXlzIG9mIHZhbHVlcy5cbiAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gW107XG4gICAgICAgIHRoaXMuX2ZpZWxkTG9va3VwID0ge307XG4gICAgICAgIGlmIChtZXRhLmZpZWxkcyAmJiBtZXRhLmZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gbWV0YS5maWVsZHM7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXRhLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5fZmllbGRMb29rdXBbbWV0YS5maWVsZHNbaV1dID0gaTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEVuZCBvZiBzdHJlYW1cbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyKSB7XG4gICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub25Db21wbGV0ZWQobWV0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fdGFpbCA9IG1ldGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVzb2x2ZUNvbm5lY3Rpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzb2x2ZUNvbm5lY3Rpb24oY29ubikge1xuICAgICAgdGhpcy5fY29ubiA9IGNvbm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2lsbCBiZSBjYWxsZWQgb24gZXJyb3JzLlxuICAgICAqIElmIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgaXMgcHJlc2VudCwgcGFzcyB0aGUgZXJyb3JcbiAgICAgKiB0byBpdCdzIG9uRXJyb3IgbWV0aG9kLCBvdGhlcndpc2Ugc2V0IGluc3RhbmNlIHZhcmlhYmxlIF9lcnJvci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXJyb3IgLSBBbiBlcnJvciBvYmplY3RcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIm9uRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgdmFyIHRyYW5zZm9ybWVkRXJyb3IgPSB0aGlzLl9lcnJvclRyYW5zZm9ybWVyKGVycm9yLCB0aGlzLl9jb25uKTtcbiAgICAgIGlmICh0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIub25FcnJvcikge1xuICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9uRXJyb3IodHJhbnNmb3JtZWRFcnJvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2codHJhbnNmb3JtZWRFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Vycm9yID0gdHJhbnNmb3JtZWRFcnJvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gZXZlbnRzIHdpdGggcHJvdmlkZWQgb2JzZXJ2ZXIuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihyZWNvcmQ6IE9iamVjdCl9IG9ic2VydmVyLm9uTmV4dCAtIEhhbmRsZSByZWNvcmRzLCBvbmUgYnkgb25lLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obWV0YWRhdGE6IE9iamVjdCl9IG9ic2VydmVyLm9uQ29tcGxldGUgLSBIYW5kbGUgc3RyZWFtIHRhaWwsIHRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiBPYmplY3QpfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInN1YnNjcmliZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgIGlmICh0aGlzLl9lcnJvcikge1xuICAgICAgICBvYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3F1ZXVlZFJlY29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9xdWV1ZWRSZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIub25OZXh0KF9xdWV1ZWRSZWNvcmRzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3RhaWwpIHtcbiAgICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQodGhpcy5fdGFpbCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9vYnNlcnZlciA9IG9ic2VydmVyO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU3RyZWFtT2JzZXJ2ZXI7XG59KCk7IC8qKlxuICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gICAgICAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAgICAgICpcbiAgICAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gICAgICAqXG4gICAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgICAqXG4gICAgICAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICAgICpcbiAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAgICAgKi9cblxuZXhwb3J0cy5kZWZhdWx0ID0gU3RyZWFtT2JzZXJ2ZXI7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3Byb21pc2UgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZScpO1xuXG52YXIgX3Byb21pc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvbWlzZSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi4vZXJyb3InKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIERFRkFVTFRfTUFYX1JFVFJZX1RJTUVfTVMgPSAzMCAqIDEwMDA7IC8vIDMwIHNlY29uZHNcbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgREVGQVVMVF9JTklUSUFMX1JFVFJZX0RFTEFZX01TID0gMTAwMDsgLy8gMSBzZWNvbmRzXG52YXIgREVGQVVMVF9SRVRSWV9ERUxBWV9NVUxUSVBMSUVSID0gMi4wO1xudmFyIERFRkFVTFRfUkVUUllfREVMQVlfSklUVEVSX0ZBQ1RPUiA9IDAuMjtcblxudmFyIFRyYW5zYWN0aW9uRXhlY3V0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRyYW5zYWN0aW9uRXhlY3V0b3IobWF4UmV0cnlUaW1lTXMsIGluaXRpYWxSZXRyeURlbGF5TXMsIG11bHRpcGxpZXIsIGppdHRlckZhY3Rvcikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFRyYW5zYWN0aW9uRXhlY3V0b3IpO1xuXG4gICAgdGhpcy5fbWF4UmV0cnlUaW1lTXMgPSBfdmFsdWVPckRlZmF1bHQobWF4UmV0cnlUaW1lTXMsIERFRkFVTFRfTUFYX1JFVFJZX1RJTUVfTVMpO1xuICAgIHRoaXMuX2luaXRpYWxSZXRyeURlbGF5TXMgPSBfdmFsdWVPckRlZmF1bHQoaW5pdGlhbFJldHJ5RGVsYXlNcywgREVGQVVMVF9JTklUSUFMX1JFVFJZX0RFTEFZX01TKTtcbiAgICB0aGlzLl9tdWx0aXBsaWVyID0gX3ZhbHVlT3JEZWZhdWx0KG11bHRpcGxpZXIsIERFRkFVTFRfUkVUUllfREVMQVlfTVVMVElQTElFUik7XG4gICAgdGhpcy5faml0dGVyRmFjdG9yID0gX3ZhbHVlT3JEZWZhdWx0KGppdHRlckZhY3RvciwgREVGQVVMVF9SRVRSWV9ERUxBWV9KSVRURVJfRkFDVE9SKTtcblxuICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcyA9IFtdO1xuXG4gICAgdGhpcy5fdmVyaWZ5QWZ0ZXJDb25zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFRyYW5zYWN0aW9uRXhlY3V0b3IsIFt7XG4gICAga2V5OiAnZXhlY3V0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmspIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBuZXcgX3Byb21pc2UyLmRlZmF1bHQoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBfdGhpcy5fZXhlY3V0ZVRyYW5zYWN0aW9uSW5zaWRlUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB2YXIgcmV0cnlTdGFydFRpbWVNcyA9IERhdGUubm93KCk7XG4gICAgICAgIHZhciByZXRyeURlbGF5TXMgPSBfdGhpcy5faW5pdGlhbFJldHJ5RGVsYXlNcztcbiAgICAgICAgcmV0dXJuIF90aGlzLl9yZXRyeVRyYW5zYWN0aW9uUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgZXJyb3IsIHJldHJ5U3RhcnRUaW1lTXMsIHJldHJ5RGVsYXlNcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjbG9zZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgLy8gY2FuY2VsIGFsbCBleGlzdGluZyB0aW1lb3V0cyB0byBwcmV2ZW50IGZ1cnRoZXIgcmV0cmllc1xuICAgICAgdGhpcy5faW5GbGlnaHRUaW1lb3V0SWRzLmZvckVhY2goZnVuY3Rpb24gKHRpbWVvdXRJZCkge1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcyA9IFtdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19yZXRyeVRyYW5zYWN0aW9uUHJvbWlzZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZXRyeVRyYW5zYWN0aW9uUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgZXJyb3IsIHJldHJ5U3RhcnRUaW1lLCByZXRyeURlbGF5TXMpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgZWxhcHNlZFRpbWVNcyA9IERhdGUubm93KCkgLSByZXRyeVN0YXJ0VGltZTtcblxuICAgICAgaWYgKGVsYXBzZWRUaW1lTXMgPiB0aGlzLl9tYXhSZXRyeVRpbWVNcyB8fCAhVHJhbnNhY3Rpb25FeGVjdXRvci5fY2FuUmV0cnlPbihlcnJvcikpIHtcbiAgICAgICAgcmV0dXJuIF9wcm9taXNlMi5kZWZhdWx0LnJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgX3Byb21pc2UyLmRlZmF1bHQoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgbmV4dFJldHJ5VGltZSA9IF90aGlzMi5fY29tcHV0ZURlbGF5V2l0aEppdHRlcihyZXRyeURlbGF5TXMpO1xuICAgICAgICB2YXIgdGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gZmlsdGVyIG91dCB0aGlzIHRpbWVvdXRJZCB3aGVuIHRpbWUgaGFzIGNvbWUgYW5kIGZ1bmN0aW9uIGlzIGJlaW5nIGV4ZWN1dGVkXG4gICAgICAgICAgX3RoaXMyLl9pbkZsaWdodFRpbWVvdXRJZHMgPSBfdGhpczIuX2luRmxpZ2h0VGltZW91dElkcy5maWx0ZXIoZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gaWQgIT09IHRpbWVvdXRJZDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfdGhpczIuX2V4ZWN1dGVUcmFuc2FjdGlvbkluc2lkZVByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0sIG5leHRSZXRyeVRpbWUpO1xuICAgICAgICAvLyBhZGQgbmV3bHkgY3JlYXRlZCB0aW1lb3V0SWQgdG8gdGhlIGxpc3Qgb2YgYWxsIGluLWZsaWdodCB0aW1lb3V0c1xuICAgICAgICBfdGhpczIuX2luRmxpZ2h0VGltZW91dElkcy5wdXNoKHRpbWVvdXRJZCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdmFyIG5leHRSZXRyeURlbGF5TXMgPSByZXRyeURlbGF5TXMgKiBfdGhpczIuX211bHRpcGxpZXI7XG4gICAgICAgIHJldHVybiBfdGhpczIuX3JldHJ5VHJhbnNhY3Rpb25Qcm9taXNlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrLCBlcnJvciwgcmV0cnlTdGFydFRpbWUsIG5leHRSZXRyeURlbGF5TXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2V4ZWN1dGVUcmFuc2FjdGlvbkluc2lkZVByb21pc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZXhlY3V0ZVRyYW5zYWN0aW9uSW5zaWRlUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgdHggPSB0cmFuc2FjdGlvbkNyZWF0b3IoKTtcbiAgICAgICAgdmFyIHRyYW5zYWN0aW9uV29ya1Jlc3VsdCA9IHRyYW5zYWN0aW9uV29yayh0eCk7XG5cbiAgICAgICAgLy8gdXNlciBkZWZpbmVkIGNhbGxiYWNrIGlzIHN1cHBvc2VkIHRvIHJldHVybiBhIHByb21pc2UsIGJ1dCBpdCBtaWdodCBub3Q7IHNvIHRvIHByb3RlY3QgYWdhaW5zdCBhblxuICAgICAgICAvLyBpbmNvcnJlY3QgQVBJIHVzYWdlIHdlIHdyYXAgdGhlIHJldHVybmVkIHZhbHVlIHdpdGggYSByZXNvbHZlZCBwcm9taXNlOyB0aGlzIGlzIGVmZmVjdGl2ZWx5IGFcbiAgICAgICAgLy8gdmFsaWRhdGlvbiBzdGVwIHdpdGhvdXQgdHlwZSBjaGVja3NcbiAgICAgICAgdmFyIHJlc3VsdFByb21pc2UgPSBfcHJvbWlzZTIuZGVmYXVsdC5yZXNvbHZlKHRyYW5zYWN0aW9uV29ya1Jlc3VsdCk7XG5cbiAgICAgICAgcmVzdWx0UHJvbWlzZS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICBpZiAodHguaXNPcGVuKCkpIHtcbiAgICAgICAgICAgIC8vIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJuZWQgcmVzb2x2ZWQgcHJvbWlzZSBhbmQgdHJhbnNhY3Rpb24gaGFzIG5vdCBiZWVuIGNvbW1pdHRlZC9yb2xsZWQgYmFja1xuICAgICAgICAgICAgLy8gdHJ5IHRvIGNvbW1pdCB0aGUgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkLCByZXR1cm4gcmVzdWx0IHRvIHRoZSB1c2VyXG4gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAvLyB0cmFuc2FjdGlvbiBmYWlsZWQgdG8gY29tbWl0LCBwcm9wYWdhdGUgdGhlIGZhaWx1cmVcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3b3JrIHJldHVybmVkIHJlc29sdmVkIHByb21pc2UgYW5kIHRyYW5zYWN0aW9uIGlzIGFscmVhZHkgY29tbWl0dGVkL3JvbGxlZCBiYWNrXG4gICAgICAgICAgICAvLyByZXR1cm4gdGhlIHJlc3VsdCByZXR1cm5lZCBieSBnaXZlbiB0cmFuc2FjdGlvbiB3b3JrXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3b3JrIHJldHVybmVkIHJlamVjdGVkIHByb21pc2UsIHByb3BhZ2F0ZSB0aGUgZmFpbHVyZVxuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfY29tcHV0ZURlbGF5V2l0aEppdHRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jb21wdXRlRGVsYXlXaXRoSml0dGVyKGRlbGF5TXMpIHtcbiAgICAgIHZhciBqaXR0ZXIgPSBkZWxheU1zICogdGhpcy5faml0dGVyRmFjdG9yO1xuICAgICAgdmFyIG1pbiA9IGRlbGF5TXMgLSBqaXR0ZXI7XG4gICAgICB2YXIgbWF4ID0gZGVsYXlNcyArIGppdHRlcjtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3ZlcmlmeUFmdGVyQ29uc3RydWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3ZlcmlmeUFmdGVyQ29uc3RydWN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX21heFJldHJ5VGltZU1zIDwgMCkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnTWF4IHJldHJ5IHRpbWUgc2hvdWxkIGJlID49IDA6ICcgKyB0aGlzLl9tYXhSZXRyeVRpbWVNcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5faW5pdGlhbFJldHJ5RGVsYXlNcyA8IDApIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ0luaXRpYWwgcmV0cnkgZGVsYXkgc2hvdWxkID49IDA6ICcgKyB0aGlzLl9pbml0aWFsUmV0cnlEZWxheU1zKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9tdWx0aXBsaWVyIDwgMS4wKSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdNdWx0aXBsaWVyIHNob3VsZCBiZSA+PSAxLjA6ICcgKyB0aGlzLl9tdWx0aXBsaWVyKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9qaXR0ZXJGYWN0b3IgPCAwIHx8IHRoaXMuX2ppdHRlckZhY3RvciA+IDEpIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ0ppdHRlciBmYWN0b3Igc2hvdWxkIGJlIGluIFswLjAsIDEuMF06ICcgKyB0aGlzLl9qaXR0ZXJGYWN0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiAnX2NhblJldHJ5T24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY2FuUmV0cnlPbihlcnJvcikge1xuICAgICAgcmV0dXJuIGVycm9yICYmIGVycm9yLmNvZGUgJiYgKGVycm9yLmNvZGUgPT09IF9lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFIHx8IGVycm9yLmNvZGUgPT09IF9lcnJvci5TRVNTSU9OX0VYUElSRUQgfHwgZXJyb3IuY29kZS5pbmRleE9mKCdUcmFuc2llbnRFcnJvcicpID49IDApO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVHJhbnNhY3Rpb25FeGVjdXRvcjtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gVHJhbnNhY3Rpb25FeGVjdXRvcjtcbjtcblxuZnVuY3Rpb24gX3ZhbHVlT3JEZWZhdWx0KHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbnZhciBfc3RyaW5nX2RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG52YXIgcGxhdGZvcm1PYmogPSB7fTsgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICAgICAgICAgICAgICAgICAgICAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgICAgICAgICAgICAgICAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICAgICAgICAgICAgICAgICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAgICAgICAgICAgICAgICAgICAgKi9cblxuLy8gVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNyb3NzLXBsYXRmb3JtIFVURi04IGVuY29kZXIgYW5kIGRlY29kZXIgdGhhdCB3b3Jrc1xuLy8gd2l0aCB0aGUgQnVmZmVyIEFQSSBkZWZpbmVkIGluIGJ1Zi5qc1xuXG50cnkge1xuICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlzICdidWZmZXInIGlzIG5vdCBhdmFpbGFibGVcbiAgcmVxdWlyZS5yZXNvbHZlKFwiYnVmZmVyXCIpO1xuICB2YXIgZGVjb2RlciA9IG5ldyBfc3RyaW5nX2RlY29kZXIuU3RyaW5nRGVjb2RlcigndXRmOCcpO1xuICB2YXIgbm9kZSA9IHJlcXVpcmUoXCJidWZmZXJcIik7XG5cbiAgcGxhdGZvcm1PYmogPSB7XG4gICAgXCJlbmNvZGVcIjogZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICAgICAgcmV0dXJuIG5ldyBfYnVmLk5vZGVCdWZmZXIobmV3IG5vZGUuQnVmZmVyKHN0ciwgXCJVVEYtOFwiKSk7XG4gICAgfSxcbiAgICBcImRlY29kZVwiOiBmdW5jdGlvbiBkZWNvZGUoYnVmZmVyLCBsZW5ndGgpIHtcbiAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmLk5vZGVCdWZmZXIpIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gYnVmZmVyLnBvc2l0aW9uLFxuICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBsZW5ndGg7XG4gICAgICAgIGJ1ZmZlci5wb3NpdGlvbiA9IE1hdGgubWluKGVuZCwgYnVmZmVyLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBidWZmZXIuX2J1ZmZlci50b1N0cmluZygndXRmOCcsIHN0YXJ0LCBlbmQpO1xuICAgICAgfSBlbHNlIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmLkNvbWJpbmVkQnVmZmVyKSB7XG4gICAgICAgIHZhciBvdXQgPSBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlcihidWZmZXIsIGxlbmd0aCwgZnVuY3Rpb24gKHBhcnRCdWZmZXIpIHtcbiAgICAgICAgICByZXR1cm4gZGVjb2Rlci53cml0ZShwYXJ0QnVmZmVyLl9idWZmZXIpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXIuZW5kKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJEb24ndCBrbm93IGhvdyB0byBkZWNvZGUgc3RyaW5ncyBmcm9tIGBcIiArIGJ1ZmZlciArIFwiYC5cIik7XG4gICAgICB9XG4gICAgfVxuICB9O1xufSBjYXRjaCAoZSkge1xuXG4gIC8vIE5vdCBvbiBOb2RlSlMsIGFkZCBzaGltIGZvciBXZWJBUEkgVGV4dEVuY29kZXIvVGV4dERlY29kZXJcbiAgdmFyIHRleHRFbmNvZGluZyA9IHJlcXVpcmUoJy4uLy4uL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvaW5kZXgnKTtcbiAgdmFyIGVuY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHRFbmNvZGVyKFwidXRmLThcIik7XG4gIHZhciBfZGVjb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dERlY29kZXIoXCJ1dGYtOFwiKTtcblxuICBwbGF0Zm9ybU9iaiA9IHtcbiAgICBcImVuY29kZVwiOiBmdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gICAgICByZXR1cm4gbmV3IF9idWYuSGVhcEJ1ZmZlcihlbmNvZGVyLmVuY29kZShzdHIpLmJ1ZmZlcik7XG4gICAgfSxcbiAgICBcImRlY29kZVwiOiBmdW5jdGlvbiBkZWNvZGUoYnVmZmVyLCBsZW5ndGgpIHtcbiAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBfYnVmLkhlYXBCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIF9kZWNvZGVyLmRlY29kZShidWZmZXIucmVhZFZpZXcoTWF0aC5taW4obGVuZ3RoLCBidWZmZXIubGVuZ3RoIC0gYnVmZmVyLnBvc2l0aW9uKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRGVjb2RpbmcgY29tYmluZWQgYnVmZmVyIGlzIGNvbXBsaWNhdGVkLiBGb3Igc2ltcGxpY2l0eSwgZm9yIG5vdywgXG4gICAgICAgIC8vIHdlIHNpbXBseSBjb3B5IHRoZSBjb21iaW5lZCBidWZmZXIgaW50byBhIHJlZ3VsYXIgYnVmZmVyIGFuZCBkZWNvZGUgdGhhdC5cbiAgICAgICAgdmFyIHRtcEJ1ZiA9ICgwLCBfYnVmLmFsbG9jKShsZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdG1wQnVmLndyaXRlVUludDgoYnVmZmVyLnJlYWRVSW50OCgpKTtcbiAgICAgICAgfVxuICAgICAgICB0bXBCdWYucmVzZXQoKTtcbiAgICAgICAgcmV0dXJuIF9kZWNvZGVyLmRlY29kZSh0bXBCdWYucmVhZFZpZXcobGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG52YXIgc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIgPSBmdW5jdGlvbiBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlcihjb21iaW5lZEJ1ZmZlcnMsIGxlbmd0aCwgZGVjb2RlRm4sIGVuZEZuKSB7XG4gIHZhciByZW1haW5pbmdCeXRlc1RvUmVhZCA9IGxlbmd0aDtcbiAgdmFyIHBvc2l0aW9uID0gY29tYmluZWRCdWZmZXJzLnBvc2l0aW9uO1xuICBjb21iaW5lZEJ1ZmZlcnMuX3VwZGF0ZVBvcyhNYXRoLm1pbihsZW5ndGgsIGNvbWJpbmVkQnVmZmVycy5sZW5ndGggLSBwb3NpdGlvbikpO1xuICAvLyBSZWR1Y2UgQ29tYmluZWRCdWZmZXJzIHRvIGEgZGVjb2RlZCBzdHJpbmdcbiAgdmFyIG91dCA9IGNvbWJpbmVkQnVmZmVycy5fYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24gKGxhc3QsIHBhcnRCdWZmZXIpIHtcbiAgICBpZiAocmVtYWluaW5nQnl0ZXNUb1JlYWQgPD0gMCkge1xuICAgICAgcmV0dXJuIGxhc3Q7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA+PSBwYXJ0QnVmZmVyLmxlbmd0aCkge1xuICAgICAgcG9zaXRpb24gLT0gcGFydEJ1ZmZlci5sZW5ndGg7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhwb3NpdGlvbiAtIHBhcnRCdWZmZXIucG9zaXRpb24pO1xuICAgICAgdmFyIGJ5dGVzVG9SZWFkID0gTWF0aC5taW4ocGFydEJ1ZmZlci5sZW5ndGggLSBwb3NpdGlvbiwgcmVtYWluaW5nQnl0ZXNUb1JlYWQpO1xuICAgICAgdmFyIGxhc3RTbGljZSA9IHBhcnRCdWZmZXIucmVhZFNsaWNlKGJ5dGVzVG9SZWFkKTtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhieXRlc1RvUmVhZCk7XG4gICAgICByZW1haW5pbmdCeXRlc1RvUmVhZCA9IE1hdGgubWF4KHJlbWFpbmluZ0J5dGVzVG9SZWFkIC0gbGFzdFNsaWNlLmxlbmd0aCwgMCk7XG4gICAgICBwb3NpdGlvbiA9IDA7XG4gICAgICByZXR1cm4gbGFzdCArIGRlY29kZUZuKGxhc3RTbGljZSk7XG4gICAgfVxuICB9LCAnJyk7XG4gIHJldHVybiBvdXQgKyBlbmRGbigpO1xufTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gcGxhdGZvcm1PYmo7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkVOQ1JZUFRJT05fT0ZGID0gZXhwb3J0cy5FTkNSWVBUSU9OX09OID0gZXhwb3J0cy5hc3NlcnRTdHJpbmcgPSBleHBvcnRzLmlzRW1wdHlPYmplY3RPck51bGwgPSB1bmRlZmluZWQ7XG5cbnZhciBfc3RyaW5naWZ5ID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeVwiKTtcblxudmFyIF9zdHJpbmdpZnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyaW5naWZ5KTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2ZcIik7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIEVOQ1JZUFRJT05fT04gPSBcIkVOQ1JZUFRJT05fT05cIjtcbnZhciBFTkNSWVBUSU9OX09GRiA9IFwiRU5DUllQVElPTl9PRkZcIjtcblxuZnVuY3Rpb24gaXNFbXB0eU9iamVjdE9yTnVsbChvYmopIHtcbiAgaWYgKGlzTnVsbChvYmopKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0KG9iaikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBwcm9wIGluIG9iaikge1xuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNOdWxsKG9iaikge1xuICByZXR1cm4gb2JqID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShvYmopO1xuICByZXR1cm4gdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlID09PSAnb2JqZWN0JyAmJiBCb29sZWFuKG9iaik7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFN0cmluZyhvYmosIG9iak5hbWUpIHtcbiAgaWYgKCFpc1N0cmluZyhvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihvYmpOYW1lICsgJyBleHBlY3RlZCB0byBiZSBzdHJpbmcgYnV0IHdhczogJyArICgwLCBfc3RyaW5naWZ5Mi5kZWZhdWx0KShvYmopKTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZyhzdHIpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdHIpID09PSAnW29iamVjdCBTdHJpbmddJztcbn1cblxuZXhwb3J0cy5pc0VtcHR5T2JqZWN0T3JOdWxsID0gaXNFbXB0eU9iamVjdE9yTnVsbDtcbmV4cG9ydHMuYXNzZXJ0U3RyaW5nID0gYXNzZXJ0U3RyaW5nO1xuZXhwb3J0cy5FTkNSWVBUSU9OX09OID0gRU5DUllQVElPTl9PTjtcbmV4cG9ydHMuRU5DUllQVElPTl9PRkYgPSBFTkNSWVBUSU9OX09GRjsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZShcIi4vZXJyb3JcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRmllbGRMb29rdXAoa2V5cykge1xuICB2YXIgbG9va3VwID0ge307XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSwgaWR4KSB7XG4gICAgbG9va3VwW25hbWVdID0gaWR4O1xuICB9KTtcbiAgcmV0dXJuIGxvb2t1cDtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIG1ha2UgdXAgdGhlIGNvbnRlbnRzIG9mIHRoZSB7QGxpbmsgUmVzdWx0fSwgYW5kIGlzIGhvdyB5b3UgYWNjZXNzXG4gKiB0aGUgb3V0cHV0IG9mIGEgc3RhdGVtZW50LiBBIHNpbXBsZSBzdGF0ZW1lbnQgbWlnaHQgeWllbGQgYSByZXN1bHQgc3RyZWFtXG4gKiB3aXRoIGEgc2luZ2xlIHJlY29yZCwgZm9yIGluc3RhbmNlOlxuICpcbiAqICAgICBNQVRDSCAodTpVc2VyKSBSRVRVUk4gdS5uYW1lLCB1LmFnZVxuICpcbiAqIFRoaXMgcmV0dXJucyBhIHN0cmVhbSBvZiByZWNvcmRzIHdpdGggdHdvIGZpZWxkcywgbmFtZWQgYHUubmFtZWAgYW5kIGB1LmFnZWAsXG4gKiBlYWNoIHJlY29yZCByZXByZXNlbnRzIG9uZSB1c2VyIGZvdW5kIGJ5IHRoZSBzdGF0ZW1lbnQgYWJvdmUuIFlvdSBjYW4gYWNjZXNzXG4gKiB0aGUgdmFsdWVzIG9mIGVhY2ggZmllbGQgZWl0aGVyIGJ5IG5hbWU6XG4gKlxuICogICAgIHJlY29yZC5nZXQoXCJ1Lm5hbWVcIilcbiAqXG4gKiBPciBieSBpdCdzIHBvc2l0aW9uOlxuICpcbiAqICAgICByZWNvcmQuZ2V0KDApXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBSZWNvcmQgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcmVjb3JkIG9iamVjdC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0ga2V5cyBBbiBhcnJheSBvZiBmaWVsZCBrZXlzLCBpbiB0aGUgb3JkZXIgdGhlIGZpZWxkcyBhcHBlYXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY29yZFxuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkIHZhbHVlc1xuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRMb29rdXAgQW4gb2JqZWN0IG9mIGZpZWxkTmFtZSAtPiB2YWx1ZSBpbmRleCwgdXNlZCB0byBtYXBcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgbmFtZXMgdG8gdmFsdWVzLiBJZiB0aGlzIGlzIG51bGwsIG9uZSB3aWxsIGJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFJlY29yZChrZXlzLCBmaWVsZHMpIHtcbiAgICB2YXIgZmllbGRMb29rdXAgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IG51bGw7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUmVjb3JkKTtcblxuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBmaWVsZHM7XG4gICAgdGhpcy5fZmllbGRMb29rdXAgPSBmaWVsZExvb2t1cCB8fCBnZW5lcmF0ZUZpZWxkTG9va3VwKGtleXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gZm9yIGVhY2ggZmllbGQgaW4gdGhpcyByZWNvcmQuIFRoZSBmdW5jdGlvblxuICAgKiB3aWxsIGdldCB0aHJlZSBhcmd1bWVudHMgLSB0aGUgdmFsdWUsIHRoZSBrZXkgYW5kIHRoaXMgcmVjb3JkLCBpbiB0aGF0XG4gICAqIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gdmlzaXRvclxuICAgKi9cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFJlY29yZCwgW3tcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKHZpc2l0b3IpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5rZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZpc2l0b3IodGhpcy5fZmllbGRzW2ldLCB0aGlzLmtleXNbaV0sIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhbiBvYmplY3Qgb3V0IG9mIHRoZSBjdXJyZW50IFJlY29yZFxuICAgICAqXG4gICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInRvT2JqZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvT2JqZWN0KCkge1xuICAgICAgdmFyIG9iamVjdCA9IHt9O1xuICAgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSB2YWx1ZSBmcm9tIHRoaXMgcmVjb3JkLCBlaXRoZXIgYnkgaW5kZXggb3IgYnkgZmllbGQga2V5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd8TnVtYmVyfSBrZXkgRmllbGQga2V5LCBvciB0aGUgaW5kZXggb2YgdGhlIGZpZWxkLlxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgIHZhciBpbmRleCA9IHZvaWQgMDtcbiAgICAgIGlmICghKHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIpKSB7XG4gICAgICAgIGluZGV4ID0gdGhpcy5fZmllbGRMb29rdXBba2V5XTtcbiAgICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGtleSAnXCIgKyBrZXkgKyBcIicsIGF2YWlsYWJsZSBrZXkgYXJlOiBbXCIgKyB0aGlzLmtleXMgKyBcIl0uXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmRleCA9IGtleTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluZGV4ID4gdGhpcy5fZmllbGRzLmxlbmd0aCAtIDEgfHwgaW5kZXggPCAwKSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGggaW5kZXggJ1wiICsgaW5kZXggKyBcIicuIFJlbWVtYmVyIHRoYXQgaW5kZXhlcyBzdGFydCBhdCBgMGAsIFwiICsgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tpbmRleF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYSB2YWx1ZSBmcm9tIHRoaXMgcmVjb3JkLCBlaXRoZXIgYnkgaW5kZXggb3IgYnkgZmllbGQga2V5LCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xOdW1iZXJ9IGtleSBGaWVsZCBrZXksIG9yIHRoZSBpbmRleCBvZiB0aGUgZmllbGQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJoYXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgLy8gaWYga2V5IGlzIGEgbnVtYmVyLCB3ZSBjaGVjayBpZiBpdCBpcyBpbiB0aGUgX2ZpZWxkcyBhcnJheVxuICAgICAgaWYgKHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIGtleSA+PSAwICYmIGtleSA8IHRoaXMuX2ZpZWxkcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmIGl0J3Mgbm90IGEgbnVtYmVyLCB3ZSBjaGVjayBfZmllbGRMb29rdXAgZGljdGlvbmFyeSBkaXJlY3RseVxuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkTG9va3VwW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFJlY29yZDtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gUmVjb3JkOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuc3RhdGVtZW50VHlwZSA9IHVuZGVmaW5lZDtcblxudmFyIF9rZXlzID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzJyk7XG5cbnZhciBfa2V5czIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9rZXlzKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4vaW50ZWdlcicpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAgKiBBIFJlc3VsdFN1bW1hcnkgaW5zdGFuY2UgY29udGFpbnMgc3RydWN0dXJlZCBtZXRhZGF0YSBmb3IgYSB7UmVzdWx0fS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xudmFyIFJlc3VsdFN1bW1hcnkgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlbWVudCAtIFRoZSBzdGF0ZW1lbnQgdGhpcyBzdW1tYXJ5IGlzIGZvclxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IG1ldGFkYXRhIC0gU3RhdGVtZW50IG1ldGFkYXRhXG4gICAqL1xuICBmdW5jdGlvbiBSZXN1bHRTdW1tYXJ5KHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YWRhdGEpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBSZXN1bHRTdW1tYXJ5KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0geyB0ZXh0OiBzdGF0ZW1lbnQsIHBhcmFtZXRlcnM6IHBhcmFtZXRlcnMgfTtcbiAgICB0aGlzLnN0YXRlbWVudFR5cGUgPSBtZXRhZGF0YS50eXBlO1xuICAgIHZhciBjb3VudGVycyA9IG5ldyBTdGF0ZW1lbnRTdGF0aXN0aWNzKG1ldGFkYXRhLnN0YXRzIHx8IHt9KTtcbiAgICB0aGlzLmNvdW50ZXJzID0gY291bnRlcnM7XG4gICAgLy9mb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHJlbW92ZSBpbiBmdXR1cmUgdmVyc2lvblxuICAgIHRoaXMudXBkYXRlU3RhdGlzdGljcyA9IGNvdW50ZXJzO1xuICAgIHRoaXMucGxhbiA9IG1ldGFkYXRhLnBsYW4gfHwgbWV0YWRhdGEucHJvZmlsZSA/IG5ldyBQbGFuKG1ldGFkYXRhLnBsYW4gfHwgbWV0YWRhdGEucHJvZmlsZSkgOiBmYWxzZTtcbiAgICB0aGlzLnByb2ZpbGUgPSBtZXRhZGF0YS5wcm9maWxlID8gbmV3IFByb2ZpbGVkUGxhbihtZXRhZGF0YS5wcm9maWxlKSA6IGZhbHNlO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IHRoaXMuX2J1aWxkTm90aWZpY2F0aW9ucyhtZXRhZGF0YS5ub3RpZmljYXRpb25zKTtcbiAgICB0aGlzLnNlcnZlciA9IG5ldyBTZXJ2ZXJJbmZvKG1ldGFkYXRhLnNlcnZlcik7XG4gICAgdGhpcy5yZXN1bHRDb25zdW1lZEFmdGVyID0gbWV0YWRhdGEucmVzdWx0X2NvbnN1bWVkX2FmdGVyO1xuICAgIHRoaXMucmVzdWx0QXZhaWxhYmxlQWZ0ZXIgPSBtZXRhZGF0YS5yZXN1bHRfYXZhaWxhYmxlX2FmdGVyO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUmVzdWx0U3VtbWFyeSwgW3tcbiAgICBrZXk6ICdfYnVpbGROb3RpZmljYXRpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2J1aWxkTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSB7XG4gICAgICBpZiAoIW5vdGlmaWNhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHJldHVybiBuZXcgTm90aWZpY2F0aW9uKG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCBzdW1tYXJ5IGhhcyBhIHBsYW5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdoYXNQbGFuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzUGxhbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYW4gaW5zdGFuY2VvZiBQbGFuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSByZXN1bHQgc3VtbWFyeSBoYXMgYSBwcm9maWxlXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaGFzUHJvZmlsZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1Byb2ZpbGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9maWxlIGluc3RhbmNlb2YgUHJvZmlsZWRQbGFuO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUmVzdWx0U3VtbWFyeTtcbn0oKTtcblxuLyoqXG4gICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggRVhQTEFJTi5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBQbGFuID1cbi8qKlxuICogQ3JlYXRlIGEgUGxhbiBpbnN0YW5jZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gcGxhbiAtIE9iamVjdCB3aXRoIHBsYW4gZGF0YVxuICovXG5mdW5jdGlvbiBQbGFuKHBsYW4pIHtcbiAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUGxhbik7XG5cbiAgdGhpcy5vcGVyYXRvclR5cGUgPSBwbGFuLm9wZXJhdG9yVHlwZTtcbiAgdGhpcy5pZGVudGlmaWVycyA9IHBsYW4uaWRlbnRpZmllcnM7XG4gIHRoaXMuYXJndW1lbnRzID0gcGxhbi5hcmdzO1xuICB0aGlzLmNoaWxkcmVuID0gcGxhbi5jaGlsZHJlbiA/IHBsYW4uY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBuZXcgUGxhbihjaGlsZCk7XG4gIH0pIDogW107XG59O1xuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBQUk9GSUxFLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cblxudmFyIFByb2ZpbGVkUGxhbiA9XG4vKipcbiAqIENyZWF0ZSBhIFByb2ZpbGVkUGxhbiBpbnN0YW5jZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvZmlsZSAtIE9iamVjdCB3aXRoIHByb2ZpbGUgZGF0YVxuICovXG5mdW5jdGlvbiBQcm9maWxlZFBsYW4ocHJvZmlsZSkge1xuICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBQcm9maWxlZFBsYW4pO1xuXG4gIHRoaXMub3BlcmF0b3JUeXBlID0gcHJvZmlsZS5vcGVyYXRvclR5cGU7XG4gIHRoaXMuaWRlbnRpZmllcnMgPSBwcm9maWxlLmlkZW50aWZpZXJzO1xuICB0aGlzLmFyZ3VtZW50cyA9IHByb2ZpbGUuYXJncztcbiAgdGhpcy5kYkhpdHMgPSBwcm9maWxlLmFyZ3MuRGJIaXRzLnRvSW50KCk7XG4gIHRoaXMucm93cyA9IHByb2ZpbGUuYXJncy5Sb3dzLnRvSW50KCk7XG4gIHRoaXMuY2hpbGRyZW4gPSBwcm9maWxlLmNoaWxkcmVuID8gcHJvZmlsZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9maWxlZFBsYW4oY2hpbGQpO1xuICB9KSA6IFtdO1xufTtcblxuLyoqXG4gICogR2V0IHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIGZvciBhIHtSZXN1bHR9LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cblxudmFyIFN0YXRlbWVudFN0YXRpc3RpY3MgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBTdHJ1Y3R1cml6ZSB0aGUgc3RhdGlzdGljc1xuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0YXRpc3RpY3MgLSBSZXN1bHQgc3RhdGlzdGljc1xuICAgKi9cbiAgZnVuY3Rpb24gU3RhdGVtZW50U3RhdGlzdGljcyhzdGF0aXN0aWNzKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFN0YXRlbWVudFN0YXRpc3RpY3MpO1xuXG4gICAgdGhpcy5fc3RhdHMgPSB7XG4gICAgICBub2Rlc0NyZWF0ZWQ6IDAsXG4gICAgICBub2Rlc0RlbGV0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzQ3JlYXRlZDogMCxcbiAgICAgIHJlbGF0aW9uc2hpcHNEZWxldGVkOiAwLFxuICAgICAgcHJvcGVydGllc1NldDogMCxcbiAgICAgIGxhYmVsc0FkZGVkOiAwLFxuICAgICAgbGFiZWxzUmVtb3ZlZDogMCxcbiAgICAgIGluZGV4ZXNBZGRlZDogMCxcbiAgICAgIGluZGV4ZXNSZW1vdmVkOiAwLFxuICAgICAgY29uc3RyYWludHNBZGRlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzUmVtb3ZlZDogMFxuICAgIH07XG4gICAgKDAsIF9rZXlzMi5kZWZhdWx0KShzdGF0aXN0aWNzKS5mb3JFYWNoKGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgLy9UbyBjYW1lbENhc2VcbiAgICAgIF90aGlzLl9zdGF0c1tpbmRleC5yZXBsYWNlKC8oXFwtXFx3KS9nLCBmdW5jdGlvbiAobSkge1xuICAgICAgICByZXR1cm4gbVsxXS50b1VwcGVyQ2FzZSgpO1xuICAgICAgfSldID0gKDAsIF9pbnRlZ2VyLmlzSW50KShzdGF0aXN0aWNzW2luZGV4XSkgPyBzdGF0aXN0aWNzW2luZGV4XS50b0ludCgpIDogc3RhdGlzdGljc1tpbmRleF07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlkIHRoZSBkYXRhYmFzZSBnZXQgdXBkYXRlZD9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShTdGF0ZW1lbnRTdGF0aXN0aWNzLCBbe1xuICAgIGtleTogJ2NvbnRhaW5zVXBkYXRlcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnRhaW5zVXBkYXRlcygpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gKDAsIF9rZXlzMi5kZWZhdWx0KSh0aGlzLl9zdGF0cykucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBsYXN0ICsgX3RoaXMyLl9zdGF0c1tjdXJyZW50XTtcbiAgICAgIH0sIDApID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGNyZWF0ZWQuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ25vZGVzQ3JlYXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5vZGVzQ3JlYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5ub2Rlc0NyZWF0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBkZWxldGVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdub2Rlc0RlbGV0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub2Rlc0RlbGV0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubm9kZXNEZWxldGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgcmVsYXRpb25zaGlwcyBjcmVhdGVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdyZWxhdGlvbnNoaXBzQ3JlYXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbGF0aW9uc2hpcHNDcmVhdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLnJlbGF0aW9uc2hpcHNDcmVhdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2Ygbm9kZXMgZGVsZXRlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncmVsYXRpb25zaGlwc0RlbGV0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWxhdGlvbnNoaXBzRGVsZXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5yZWxhdGlvbnNoaXBzRGVsZXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIHByb3BlcnRpZXMgc2V0LlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdwcm9wZXJ0aWVzU2V0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJvcGVydGllc1NldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5wcm9wZXJ0aWVzU2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIGFkZGVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdsYWJlbHNBZGRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxhYmVsc0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmxhYmVsc0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIHJlbW92ZWQuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2xhYmVsc1JlbW92ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsYWJlbHNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmxhYmVsc1JlbW92ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBpbmRleGVzIGFkZGVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpbmRleGVzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbmRleGVzQWRkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMuaW5kZXhlc0FkZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyByZW1vdmVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpbmRleGVzUmVtb3ZlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluZGV4ZXNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmluZGV4ZXNSZW1vdmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgY29udHJhaW50cyBhZGRlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY29uc3RyYWludHNBZGRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnN0cmFpbnRzQWRkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMuY29uc3RyYWludHNBZGRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGNvbnRyYWludHMgcmVtb3ZlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY29uc3RyYWludHNSZW1vdmVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3RyYWludHNSZW1vdmVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzUmVtb3ZlZDtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFN0YXRlbWVudFN0YXRpc3RpY3M7XG59KCk7XG5cbi8qKlxuICAqIENsYXNzIGZvciBDeXBoZXIgbm90aWZpY2F0aW9uc1xuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5cblxudmFyIE5vdGlmaWNhdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIE5vdGlmaWNhdGlvbiBpbnN0YW5jZVxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IG5vdGlmaWNhdGlvbiAtIE9iamVjdCB3aXRoIG5vdGlmaWNhdGlvbiBkYXRhXG4gICAqL1xuICBmdW5jdGlvbiBOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgTm90aWZpY2F0aW9uKTtcblxuICAgIHRoaXMuY29kZSA9IG5vdGlmaWNhdGlvbi5jb2RlO1xuICAgIHRoaXMudGl0bGUgPSBub3RpZmljYXRpb24udGl0bGU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IG5vdGlmaWNhdGlvbi5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnNldmVyaXR5ID0gbm90aWZpY2F0aW9uLnNldmVyaXR5O1xuICAgIHRoaXMucG9zaXRpb24gPSBOb3RpZmljYXRpb24uX2NvbnN0cnVjdFBvc2l0aW9uKG5vdGlmaWNhdGlvbi5wb3NpdGlvbik7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShOb3RpZmljYXRpb24sIG51bGwsIFt7XG4gICAga2V5OiAnX2NvbnN0cnVjdFBvc2l0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NvbnN0cnVjdFBvc2l0aW9uKHBvcykge1xuICAgICAgaWYgKCFwb3MpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2Zmc2V0OiBwb3Mub2Zmc2V0LnRvSW50KCksXG4gICAgICAgIGxpbmU6IHBvcy5saW5lLnRvSW50KCksXG4gICAgICAgIGNvbHVtbjogcG9zLmNvbHVtbi50b0ludCgpXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTm90aWZpY2F0aW9uO1xufSgpO1xuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhwb3Npbmcgc2VydmVyIGluZm8gZnJvbSBhIHJlc3VsdC5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG5cbnZhciBTZXJ2ZXJJbmZvID1cbi8qKlxuICogQ3JlYXRlIGEgU2VydmVySW5mbyBpbnN0YW5jZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gc2VydmVyTWV0YSAtIE9iamVjdCB3aXRoIHNlcnZlck1ldGEgZGF0YVxuICovXG5mdW5jdGlvbiBTZXJ2ZXJJbmZvKHNlcnZlck1ldGEpIHtcbiAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgU2VydmVySW5mbyk7XG5cbiAgaWYgKHNlcnZlck1ldGEpIHtcbiAgICB0aGlzLmFkZHJlc3MgPSBzZXJ2ZXJNZXRhLmFkZHJlc3M7XG4gICAgdGhpcy52ZXJzaW9uID0gc2VydmVyTWV0YS52ZXJzaW9uO1xuICB9XG59O1xuXG52YXIgc3RhdGVtZW50VHlwZSA9IHtcbiAgUkVBRF9PTkxZOiAncicsXG4gIFJFQURfV1JJVEU6ICdydycsXG4gIFdSSVRFX09OTFk6ICd3JyxcbiAgU0NIRU1BX1dSSVRFOiAncydcbn07XG5cbmV4cG9ydHMuc3RhdGVtZW50VHlwZSA9IHN0YXRlbWVudFR5cGU7XG5leHBvcnRzLmRlZmF1bHQgPSBSZXN1bHRTdW1tYXJ5OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9wcm9taXNlID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UnKTtcblxudmFyIF9wcm9taXNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb21pc2UpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9yZXN1bHRTdW1tYXJ5ID0gcmVxdWlyZSgnLi9yZXN1bHQtc3VtbWFyeScpO1xuXG52YXIgX3Jlc3VsdFN1bW1hcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0U3VtbWFyeSk7XG5cbnZhciBfY29ubmVjdGlvbkhvbGRlciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXInKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gICogQSBzdHJlYW0gb2Yge0BsaW5rIFJlY29yZH0gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgYSBzdGF0ZW1lbnQuXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUmVzdWx0ID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogSW5qZWN0IHRoZSBvYnNlcnZlciB0byBiZSB1c2VkLlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqIEBwYXJhbSB7U3RyZWFtT2JzZXJ2ZXJ9IHN0cmVhbU9ic2VydmVyXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcGFyYW0gbWV0YVN1cHBsaWVyIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCBwcm92aWRlcyBtZXRhZGF0YVxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb25Ib2xkZXJ9IGNvbm5lY3Rpb25Ib2xkZXIgLSB0byBiZSBub3RpZmllZCB3aGVuIHJlc3VsdCBpcyBlaXRoZXIgZnVsbHkgY29uc3VtZWQgb3IgZXJyb3IgaGFwcGVuZWQuXG4gICAqL1xuICBmdW5jdGlvbiBSZXN1bHQoc3RyZWFtT2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YVN1cHBsaWVyLCBjb25uZWN0aW9uSG9sZGVyKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUmVzdWx0KTtcblxuICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyID0gc3RyZWFtT2JzZXJ2ZXI7XG4gICAgdGhpcy5fcCA9IG51bGw7XG4gICAgdGhpcy5fc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzIHx8IHt9O1xuICAgIHRoaXMuX21ldGFTdXBwbGllciA9IG1ldGFTdXBwbGllciB8fCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfTtcbiAgICB0aGlzLl9jb25uZWN0aW9uSG9sZGVyID0gY29ubmVjdGlvbkhvbGRlciB8fCBfY29ubmVjdGlvbkhvbGRlci5FTVBUWV9DT05ORUNUSU9OX0hPTERFUjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBuZXcgUHJvbWlzZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBuZXcgUHJvbWlzZS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUmVzdWx0LCBbe1xuICAgIGtleTogJ19jcmVhdGVQcm9taXNlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NyZWF0ZVByb21pc2UoKSB7XG4gICAgICBpZiAodGhpcy5fcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLl9wID0gbmV3IF9wcm9taXNlMi5kZWZhdWx0KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIHJlY29yZHMgPSBbXTtcbiAgICAgICAgdmFyIG9ic2VydmVyID0ge1xuICAgICAgICAgIG9uTmV4dDogZnVuY3Rpb24gb25OZXh0KHJlY29yZCkge1xuICAgICAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlZDogZnVuY3Rpb24gb25Db21wbGV0ZWQoc3VtbWFyeSkge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlY29yZHM6IHJlY29yZHMsIHN1bW1hcnk6IHN1bW1hcnkgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiBmdW5jdGlvbiBvbkVycm9yKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgc2VsZi5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2FpdHMgZm9yIGFsbCByZXN1bHRzIGFuZCBjYWxscyB0aGUgcGFzc2VkIGluIGZ1bmN0aW9uIHdpdGggdGhlIHJlc3VsdHMuXG4gICAgICogQ2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGhlIHtAbGluayAjc3Vic2NyaWJlfSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVzdWx0OiB7cmVjb3JkczpBcnJheTxSZWNvcmQ+fSl9IG9uRnVsZmlsbGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gZmluaXNoZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvblJlamVjdGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gZXJyb3JzLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3RoZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICB0aGlzLl9jcmVhdGVQcm9taXNlKCk7XG4gICAgICByZXR1cm4gdGhpcy5fcC50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXRjaCBlcnJvcnMgd2hlbiB1c2luZyBwcm9taXNlcy5cbiAgICAgKiBDYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBzdWJzY3JpYmUgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvblJlamVjdGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gZXJyb3JzLlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2NhdGNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NhdGNoKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZVByb21pc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLl9wLmNhdGNoKG9uUmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmVhbSByZWNvcmRzIHRvIG9ic2VydmVyIGFzIHRoZXkgY29tZSBpbiwgdGhpcyBpcyBhIG1vcmUgZWZmaWNpZW50IG1ldGhvZFxuICAgICAqIG9mIGhhbmRsaW5nIHRoZSByZXN1bHRzLCBhbmQgYWxsb3dzIHlvdSB0byBoYW5kbGUgYXJiaXRyYXJpbHkgbGFyZ2UgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciAtIE9ic2VydmVyIG9iamVjdFxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVjb3JkOiBSZWNvcmQpfSBvYnNlcnZlci5vbk5leHQgLSBIYW5kbGUgcmVjb3Jkcywgb25lIGJ5IG9uZS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1ldGFkYXRhOiBPYmplY3QpfSBvYnNlcnZlci5vbkNvbXBsZXRlZCAtIEhhbmRsZSBzdHJlYW0gdGFpbCwgdGhlIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb2JzZXJ2ZXIub25FcnJvciAtIEhhbmRsZSBlcnJvcnMuXG4gICAgICogQHJldHVyblxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdzdWJzY3JpYmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBvbkNvbXBsZXRlZE9yaWdpbmFsID0gb2JzZXJ2ZXIub25Db21wbGV0ZWQ7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgb25Db21wbGV0ZWRXcmFwcGVyID0gZnVuY3Rpb24gb25Db21wbGV0ZWRXcmFwcGVyKG1ldGFkYXRhKSB7XG5cbiAgICAgICAgdmFyIGFkZGl0aW9uYWxNZXRhID0gc2VsZi5fbWV0YVN1cHBsaWVyKCk7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBhZGRpdGlvbmFsTWV0YSkge1xuICAgICAgICAgIGlmIChhZGRpdGlvbmFsTWV0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICBtZXRhZGF0YVtrZXldID0gYWRkaXRpb25hbE1ldGFba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1bSA9IG5ldyBfcmVzdWx0U3VtbWFyeTIuZGVmYXVsdChfdGhpcy5fc3RhdGVtZW50LCBfdGhpcy5fcGFyYW1ldGVycywgbWV0YWRhdGEpO1xuXG4gICAgICAgIC8vIG5vdGlmeSBjb25uZWN0aW9uIGhvbGRlciB0aGF0IHRoZSB1c2VkIGNvbm5lY3Rpb24gaXMgbm90IG5lZWRlZCBhbnkgbW9yZSBiZWNhdXNlIHJlc3VsdCBoYXNcbiAgICAgICAgLy8gYmVlbiBmdWxseSBjb25zdW1lZDsgY2FsbCB0aGUgb3JpZ2luYWwgb25Db21wbGV0ZWQgY2FsbGJhY2sgYWZ0ZXIgdGhhdFxuICAgICAgICBzZWxmLl9jb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgb25Db21wbGV0ZWRPcmlnaW5hbC5jYWxsKG9ic2VydmVyLCBzdW0pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCA9IG9uQ29tcGxldGVkV3JhcHBlcjtcblxuICAgICAgdmFyIG9uRXJyb3JPcmlnaW5hbCA9IG9ic2VydmVyLm9uRXJyb3IgfHwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiVW5jYXVnaHQgZXJyb3Igd2hlbiBwcm9jZXNzaW5nIHJlc3VsdDogXCIgKyBlcnJvcik7XG4gICAgICB9O1xuXG4gICAgICB2YXIgb25FcnJvcldyYXBwZXIgPSBmdW5jdGlvbiBvbkVycm9yV3JhcHBlcihlcnJvcikge1xuICAgICAgICAvLyBub3RpZnkgY29ubmVjdGlvbiBob2xkZXIgdGhhdCB0aGUgdXNlZCBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgYmVjYXVzZSBlcnJvciBoYXBwZW5lZFxuICAgICAgICAvLyBhbmQgcmVzdWx0IGNhbid0IGJlZSBjb25zdW1lZCBhbnkgZnVydGhlcjsgY2FsbCB0aGUgb3JpZ2luYWwgb25FcnJvciBjYWxsYmFjayBhZnRlciB0aGF0XG4gICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25Ib2xkZXIucmVsZWFzZUNvbm5lY3Rpb24oKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBvbkVycm9yT3JpZ2luYWwuY2FsbChvYnNlcnZlciwgZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBvYnNlcnZlci5vbkVycm9yID0gb25FcnJvcldyYXBwZXI7XG5cbiAgICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSZXN1bHQ7XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFJlc3VsdDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX3Nlc3Npb24gPSByZXF1aXJlKCcuL3Nlc3Npb24nKTtcblxudmFyIF9zZXNzaW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Nlc3Npb24pO1xuXG52YXIgX2RyaXZlciA9IHJlcXVpcmUoJy4vZHJpdmVyJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuL2Vycm9yJyk7XG5cbnZhciBfY29ubmVjdGlvblByb3ZpZGVycyA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBBIGRyaXZlciB0aGF0IHN1cHBvcnRzIHJvdXRpbmcgaW4gYSBjb3JlLWVkZ2UgY2x1c3Rlci5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBSb3V0aW5nRHJpdmVyID0gZnVuY3Rpb24gKF9Ecml2ZXIpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoUm91dGluZ0RyaXZlciwgX0RyaXZlcik7XG5cbiAgZnVuY3Rpb24gUm91dGluZ0RyaXZlcih1cmwsIHVzZXJBZ2VudCkge1xuICAgIHZhciB0b2tlbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUm91dGluZ0RyaXZlcik7XG4gICAgcmV0dXJuICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKFJvdXRpbmdEcml2ZXIuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKFJvdXRpbmdEcml2ZXIpKS5jYWxsKHRoaXMsIHVybCwgdXNlckFnZW50LCB0b2tlbiwgUm91dGluZ0RyaXZlci5fdmFsaWRhdGVDb25maWcoY29uZmlnKSkpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUm91dGluZ0RyaXZlciwgW3tcbiAgICBrZXk6ICdfY3JlYXRlQ29ubmVjdGlvblByb3ZpZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gbmV3IF9jb25uZWN0aW9uUHJvdmlkZXJzLkxvYWRCYWxhbmNlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfY3JlYXRlU2Vzc2lvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBuZXcgUm91dGluZ1Nlc3Npb24obW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnLCBmdW5jdGlvbiAoZXJyb3IsIGNvbm4pIHtcbiAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09IF9lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFIHx8IGVycm9yLmNvZGUgPT09IF9lcnJvci5TRVNTSU9OX0VYUElSRUQpIHtcbiAgICAgICAgICAvLyBjb25uZWN0aW9uIGlzIHVuZGVmaW5lZCBpZiBlcnJvciBoYXBwZW5lZCBiZWZvcmUgY29ubmVjdGlvbiB3YXMgYWNxdWlyZWRcbiAgICAgICAgICBpZiAoY29ubikge1xuICAgICAgICAgICAgX3RoaXMyLl9jb25uZWN0aW9uUHJvdmlkZXIuZm9yZ2V0KGNvbm4udXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLmNvZGUgPT09ICdOZW8uQ2xpZW50RXJyb3IuQ2x1c3Rlci5Ob3RBTGVhZGVyJykge1xuICAgICAgICAgIHZhciB1cmwgPSAnVU5LTk9XTic7XG4gICAgICAgICAgLy8gY29ubmVjdGlvbiBpcyB1bmRlZmluZWQgaWYgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGNvbm5lY3Rpb24gd2FzIGFjcXVpcmVkXG4gICAgICAgICAgaWYgKGNvbm4pIHtcbiAgICAgICAgICAgIHVybCA9IGNvbm4udXJsO1xuICAgICAgICAgICAgX3RoaXMyLl9jb25uZWN0aW9uUHJvdmlkZXIuZm9yZ2V0V3JpdGVyKGNvbm4udXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICgwLCBfZXJyb3IubmV3RXJyb3IpKCdObyBsb25nZXIgcG9zc2libGUgdG8gd3JpdGUgdG8gc2VydmVyIGF0ICcgKyB1cmwsIF9lcnJvci5TRVNTSU9OX0VYUElSRUQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6ICdfdmFsaWRhdGVDb25maWcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdmFsaWRhdGVDb25maWcoY29uZmlnKSB7XG4gICAgICBpZiAoY29uZmlnLnRydXN0ID09PSAnVFJVU1RfT05fRklSU1RfVVNFJykge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnVGhlIGNob3NlbiB0cnVzdCBtb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYSByb3V0aW5nIGRyaXZlcicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFJvdXRpbmdEcml2ZXI7XG59KF9kcml2ZXIuRHJpdmVyKTtcblxudmFyIFJvdXRpbmdTZXNzaW9uID0gZnVuY3Rpb24gKF9TZXNzaW9uKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKFJvdXRpbmdTZXNzaW9uLCBfU2Vzc2lvbik7XG5cbiAgZnVuY3Rpb24gUm91dGluZ1Nlc3Npb24obW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnLCBvbkZhaWxlZENvbm5lY3Rpb24pIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBSb3V0aW5nU2Vzc2lvbik7XG5cbiAgICB2YXIgX3RoaXMzID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoUm91dGluZ1Nlc3Npb24uX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKFJvdXRpbmdTZXNzaW9uKSkuY2FsbCh0aGlzLCBtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpKTtcblxuICAgIF90aGlzMy5fb25GYWlsZWRDb25uZWN0aW9uID0gb25GYWlsZWRDb25uZWN0aW9uO1xuICAgIHJldHVybiBfdGhpczM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShSb3V0aW5nU2Vzc2lvbiwgW3tcbiAgICBrZXk6ICdfb25SdW5GYWlsdXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uUnVuRmFpbHVyZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9vbkZhaWxlZENvbm5lY3Rpb247XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSb3V0aW5nU2Vzc2lvbjtcbn0oX3Nlc3Npb24yLmRlZmF1bHQpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBSb3V0aW5nRHJpdmVyOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2Fzc2lnbicpO1xuXG52YXIgX2Fzc2lnbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NpZ24pO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJyk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9nZXQyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldCcpO1xuXG52YXIgX2dldDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXQyKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mJyk7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9zdHJlYW1PYnNlcnZlciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtLW9ic2VydmVyJyk7XG5cbnZhciBfc3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX3Jlc3VsdCA9IHJlcXVpcmUoJy4vcmVzdWx0Jyk7XG5cbnZhciBfcmVzdWx0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jlc3VsdCk7XG5cbnZhciBfdHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL3RyYW5zYWN0aW9uJyk7XG5cbnZhciBfdHJhbnNhY3Rpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHJhbnNhY3Rpb24pO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi9lcnJvcicpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuL2ludGVybmFsL3V0aWwnKTtcblxudmFyIF9jb25uZWN0aW9uSG9sZGVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlcicpO1xuXG52YXIgX2Nvbm5lY3Rpb25Ib2xkZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVjdGlvbkhvbGRlcik7XG5cbnZhciBfZHJpdmVyID0gcmVxdWlyZSgnLi9kcml2ZXInKTtcblxudmFyIF9kcml2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZHJpdmVyKTtcblxudmFyIF90cmFuc2FjdGlvbkV4ZWN1dG9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC90cmFuc2FjdGlvbi1leGVjdXRvcicpO1xuXG52YXIgX3RyYW5zYWN0aW9uRXhlY3V0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHJhbnNhY3Rpb25FeGVjdXRvcik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICAqIEEgU2Vzc2lvbiBpbnN0YW5jZSBpcyB1c2VkIGZvciBoYW5kbGluZyB0aGUgY29ubmVjdGlvbiBhbmRcbiAgKiBzZW5kaW5nIHN0YXRlbWVudHMgdGhyb3VnaCB0aGUgY29ubmVjdGlvbi5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBTZXNzaW9uID0gZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGUgdGhlIGRlZmF1bHQgYWNjZXNzIG1vZGUgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICogQHBhcmFtIHtDb25uZWN0aW9uUHJvdmlkZXJ9IGNvbm5lY3Rpb25Qcm92aWRlciAtIHRoZSBjb25uZWN0aW9uIHByb3ZpZGVyIHRvIGFjcXVpcmUgY29ubmVjdGlvbnMgZnJvbS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtib29rbWFyaz11bmRlZmluZWRdIC0gdGhlIGluaXRpYWwgYm9va21hcmsgZm9yIHRoaXMgc2Vzc2lvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtjb25maWc9e31dIC0gdGhpcyBkcml2ZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIFNlc3Npb24obW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgU2Vzc2lvbik7XG5cbiAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICB0aGlzLl9yZWFkQ29ubmVjdGlvbkhvbGRlciA9IG5ldyBfY29ubmVjdGlvbkhvbGRlcjIuZGVmYXVsdChfZHJpdmVyLlJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG4gICAgdGhpcy5fd3JpdGVDb25uZWN0aW9uSG9sZGVyID0gbmV3IF9jb25uZWN0aW9uSG9sZGVyMi5kZWZhdWx0KF9kcml2ZXIuV1JJVEUsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5faGFzVHggPSBmYWxzZTtcbiAgICB0aGlzLl9sYXN0Qm9va21hcmsgPSBib29rbWFyaztcbiAgICB0aGlzLl90cmFuc2FjdGlvbkV4ZWN1dG9yID0gX2NyZWF0ZVRyYW5zYWN0aW9uRXhlY3V0b3IoY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gQ3lwaGVyIHN0YXRlbWVudFxuICAgKiBDb3VsZCBiZSBjYWxsZWQgd2l0aCBhIHN0YXRlbWVudCBvYmplY3QgaS5lLjoge3N0YXRlbWVudDogXCJNQVRDSCAuLi5cIiwgcGFyYW1ldGVyczoge3BhcmFtOiAxfX1cbiAgICogb3Igd2l0aCB0aGUgc3RhdGVtZW50IGFuZCBwYXJhbWV0ZXJzIGFzIHNlcGFyYXRlIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqIEByZXR1cm4ge1Jlc3VsdH0gLSBOZXcgUmVzdWx0XG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoU2Vzc2lvbiwgW3tcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50KSB7XG4gICAgICB2YXIgcGFyYW1ldGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICAgIGlmICgodHlwZW9mIHN0YXRlbWVudCA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShzdGF0ZW1lbnQpKSA9PT0gJ29iamVjdCcgJiYgc3RhdGVtZW50LnRleHQpIHtcbiAgICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudGV4dDtcbiAgICAgIH1cbiAgICAgICgwLCBfdXRpbC5hc3NlcnRTdHJpbmcpKHN0YXRlbWVudCwgXCJDeXBoZXIgc3RhdGVtZW50XCIpO1xuXG4gICAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX1J1bk9ic2VydmVyKHRoaXMuX29uUnVuRmFpbHVyZSgpKTtcbiAgICAgIHZhciBjb25uZWN0aW9uSG9sZGVyID0gdGhpcy5fY29ubmVjdGlvbkhvbGRlcldpdGhNb2RlKHRoaXMuX21vZGUpO1xuICAgICAgaWYgKCF0aGlzLl9oYXNUeCkge1xuICAgICAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgICAgIGNvbm5lY3Rpb25Ib2xkZXIuZ2V0Q29ubmVjdGlvbigpLnRoZW4oZnVuY3Rpb24gKGNvbm5lY3Rpb24pIHtcbiAgICAgICAgICBzdHJlYW1PYnNlcnZlci5yZXNvbHZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTtcbiAgICAgICAgICBjb25uZWN0aW9uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgICAgICBjb25uZWN0aW9uLnB1bGxBbGwoc3RyZWFtT2JzZXJ2ZXIpO1xuICAgICAgICAgIGNvbm5lY3Rpb24uc3luYygpO1xuICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtT2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyZWFtT2JzZXJ2ZXIub25FcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlN0YXRlbWVudHMgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBvbiBhIFwiICsgXCJzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIG9yIHVzZSBhIGRpZmZlcmVudCBzZXNzaW9uLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IF9yZXN1bHQyLmRlZmF1bHQoc3RyZWFtT2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gc3RyZWFtT2JzZXJ2ZXIubWV0YSgpO1xuICAgICAgfSwgY29ubmVjdGlvbkhvbGRlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVnaW4gYSBuZXcgdHJhbnNhY3Rpb24gaW4gdGhpcyBzZXNzaW9uLiBBIHNlc3Npb24gY2FuIGhhdmUgYXQgbW9zdCBvbmUgdHJhbnNhY3Rpb24gcnVubmluZyBhdCBhIHRpbWUsIGlmIHlvdVxuICAgICAqIHdhbnQgdG8gcnVuIG11bHRpcGxlIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zLCB5b3Ugc2hvdWxkIHVzZSBtdWx0aXBsZSBjb25jdXJyZW50IHNlc3Npb25zLlxuICAgICAqXG4gICAgICogV2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBvcGVuIHRoZSBzZXNzaW9uIGNhbm5vdCBiZSB1c2VkIHRvIHJ1biBzdGF0ZW1lbnRzIG91dHNpZGUgdGhlIHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGJvb2ttYXJrIC0gYSByZWZlcmVuY2UgdG8gYSBwcmV2aW91cyB0cmFuc2FjdGlvbi4gREVQUkVDQVRFRDogVGhpcyBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBpblxuICAgICAqIGZhdm91ciBvZiB7QGxpbmsgRHJpdmVyI3Nlc3Npb24oc3RyaW5nKX0gdGhhdCBhY2NlcHRzIGFuIGluaXRpYWwgYm9va21hcmsuIFNlc3Npb24gd2lsbCBlbnN1cmUgdGhhdCBhbGwgbmVzdGVkXG4gICAgICogdHJhbnNhY3Rpb25zIGFyZSBjaGFpbmVkIHdpdGggYm9va21hcmtzIHRvIGd1YXJhbnRlZSBjYXVzYWwgY29uc2lzdGVuY3kuXG4gICAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSAtIE5ldyBUcmFuc2FjdGlvblxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdiZWdpblRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmVnaW5UcmFuc2FjdGlvbihib29rbWFyaykge1xuICAgICAgcmV0dXJuIHRoaXMuX2JlZ2luVHJhbnNhY3Rpb24odGhpcy5fbW9kZSwgYm9va21hcmspO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19iZWdpblRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2JlZ2luVHJhbnNhY3Rpb24oYWNjZXNzTW9kZSwgYm9va21hcmspIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGlmIChib29rbWFyaykge1xuICAgICAgICAoMCwgX3V0aWwuYXNzZXJ0U3RyaW5nKShib29rbWFyaywgJ0Jvb2ttYXJrJyk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUJvb2ttYXJrKGJvb2ttYXJrKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2hhc1R4KSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdZb3UgY2Fubm90IGJlZ2luIGEgdHJhbnNhY3Rpb24gb24gYSBzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgJyArICdlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSB0cmFuc2FjdGlvbiBvciB1c2UgYSBkaWZmZXJlbnQgc2Vzc2lvbi4nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG1vZGUgPSBfZHJpdmVyMi5kZWZhdWx0Ll92YWxpZGF0ZVNlc3Npb25Nb2RlKGFjY2Vzc01vZGUpO1xuICAgICAgdmFyIGNvbm5lY3Rpb25Ib2xkZXIgPSB0aGlzLl9jb25uZWN0aW9uSG9sZGVyV2l0aE1vZGUobW9kZSk7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgICB0aGlzLl9oYXNUeCA9IHRydWU7XG5cbiAgICAgIHJldHVybiBuZXcgX3RyYW5zYWN0aW9uMi5kZWZhdWx0KGNvbm5lY3Rpb25Ib2xkZXIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuX2hhc1R4ID0gZmFsc2U7XG4gICAgICB9LCB0aGlzLl9vblJ1bkZhaWx1cmUoKSwgdGhpcy5fbGFzdEJvb2ttYXJrLCB0aGlzLl91cGRhdGVCb29rbWFyay5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIGJvb2ttYXJrIHJlY2VpdmVkIGZvbGxvd2luZyB0aGUgbGFzdCBjb21wbGV0ZWQge0BsaW5rIFRyYW5zYWN0aW9ufS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gYSBwcmV2aW91cyB0cmFuc2FjJ3Rpb25cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbGFzdEJvb2ttYXJrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGFzdEJvb2ttYXJrKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhc3RCb29rbWFyaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlIGdpdmVuIHVuaXQgb2Ygd29yayBpbiBhIHtAbGluayBEcml2ZXIjUkVBRH0gdHJhbnNhY3Rpb24uXG4gICAgICpcbiAgICAgKiBUcmFuc2FjdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY29tbWl0dGVkIHVubGVzcyB0aGUgZ2l2ZW4gZnVuY3Rpb24gdGhyb3dzIG9yIHJldHVybnMgYSByZWplY3RlZCBwcm9taXNlLlxuICAgICAqIFNvbWUgZmFpbHVyZXMgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHRoZSBjb21taXQgaXRzZWxmIHdpbGwgYmUgcmV0cmllZCB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBpbml0aWFsXG4gICAgICogZGVsYXkgb2YgMSBzZWNvbmQgYW5kIG1heGltdW0gcmV0cnkgdGltZSBvZiAzMCBzZWNvbmRzLiBNYXhpbXVtIHJldHJ5IHRpbWUgaXMgY29uZmlndXJhYmxlIHZpYSBkcml2ZXIgY29uZmlnJ3NcbiAgICAgKiA8Y29kZT5tYXhUcmFuc2FjdGlvblJldHJ5VGltZTwvY29kZT4gcHJvcGVydHkgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihUcmFuc2FjdGlvbil9IHRyYW5zYWN0aW9uV29yayAtIGNhbGxiYWNrIHRoYXQgZXhlY3V0ZXMgb3BlcmF0aW9ucyBhZ2FpbnN0XG4gICAgICogYSBnaXZlbiB7QGxpbmsgVHJhbnNhY3Rpb259LlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IHJlc29sdmVkIHByb21pc2UgYXMgcmV0dXJuZWQgYnkgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHJlamVjdGVkIHByb21pc2Ugd2hlbiBnaXZlblxuICAgICAqIGZ1bmN0aW9uIG9yIGNvbW1pdCBmYWlscy5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncmVhZFRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uV29yaykge1xuICAgICAgcmV0dXJuIHRoaXMuX3J1blRyYW5zYWN0aW9uKF9kcml2ZXIuUkVBRCwgdHJhbnNhY3Rpb25Xb3JrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlIGdpdmVuIHVuaXQgb2Ygd29yayBpbiBhIHtAbGluayBEcml2ZXIjV1JJVEV9IHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogVHJhbnNhY3Rpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNvbW1pdHRlZCB1bmxlc3MgdGhlIGdpdmVuIGZ1bmN0aW9uIHRocm93cyBvciByZXR1cm5zIGEgcmVqZWN0ZWQgcHJvbWlzZS5cbiAgICAgKiBTb21lIGZhaWx1cmVzIG9mIHRoZSBnaXZlbiBmdW5jdGlvbiBvciB0aGUgY29tbWl0IGl0c2VsZiB3aWxsIGJlIHJldHJpZWQgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIHdpdGggaW5pdGlhbFxuICAgICAqIGRlbGF5IG9mIDEgc2Vjb25kIGFuZCBtYXhpbXVtIHJldHJ5IHRpbWUgb2YgMzAgc2Vjb25kcy4gTWF4aW11bSByZXRyeSB0aW1lIGlzIGNvbmZpZ3VyYWJsZSB2aWEgZHJpdmVyIGNvbmZpZydzXG4gICAgICogPGNvZGU+bWF4VHJhbnNhY3Rpb25SZXRyeVRpbWU8L2NvZGU+IHByb3BlcnR5IGluIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oVHJhbnNhY3Rpb24pfSB0cmFuc2FjdGlvbldvcmsgLSBjYWxsYmFjayB0aGF0IGV4ZWN1dGVzIG9wZXJhdGlvbnMgYWdhaW5zdFxuICAgICAqIGEgZ2l2ZW4ge0BsaW5rIFRyYW5zYWN0aW9ufS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSByZXNvbHZlZCBwcm9taXNlIGFzIHJldHVybmVkIGJ5IHRoZSBnaXZlbiBmdW5jdGlvbiBvciByZWplY3RlZCBwcm9taXNlIHdoZW4gZ2l2ZW5cbiAgICAgKiBmdW5jdGlvbiBvciBjb21taXQgZmFpbHMuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3dyaXRlVHJhbnNhY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uV29yaykge1xuICAgICAgcmV0dXJuIHRoaXMuX3J1blRyYW5zYWN0aW9uKF9kcml2ZXIuV1JJVEUsIHRyYW5zYWN0aW9uV29yayk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3J1blRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3J1blRyYW5zYWN0aW9uKGFjY2Vzc01vZGUsIHRyYW5zYWN0aW9uV29yaykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkV4ZWN1dG9yLmV4ZWN1dGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLl9iZWdpblRyYW5zYWN0aW9uKGFjY2Vzc01vZGUsIF90aGlzMi5sYXN0Qm9va21hcmsoKSk7XG4gICAgICB9LCB0cmFuc2FjdGlvbldvcmspO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ191cGRhdGVCb29rbWFyaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVCb29rbWFyayhuZXdCb29rbWFyaykge1xuICAgICAgaWYgKG5ld0Jvb2ttYXJrKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCb29rbWFyayA9IG5ld0Jvb2ttYXJrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoaXMgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBzZXNzaW9uIGhhcyBiZWVuIGNsb3NlZFxuICAgICAqIEByZXR1cm5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXhlY3V0b3IuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fcmVhZENvbm5lY3Rpb25Ib2xkZXIuY2xvc2UoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMuX3dyaXRlQ29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2FuIGJlIG92ZXJyaWRkZW4gdG8gYWRkIGVycm9yIGNhbGxiYWNrIG9uIFJVTlxuXG4gIH0sIHtcbiAgICBrZXk6ICdfb25SdW5GYWlsdXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uUnVuRmFpbHVyZSgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jb25uZWN0aW9uSG9sZGVyV2l0aE1vZGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY29ubmVjdGlvbkhvbGRlcldpdGhNb2RlKG1vZGUpIHtcbiAgICAgIGlmIChtb2RlID09PSBfZHJpdmVyLlJFQUQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRDb25uZWN0aW9uSG9sZGVyO1xuICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBfZHJpdmVyLldSSVRFKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cml0ZUNvbm5lY3Rpb25Ib2xkZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnVW5rbm93biBhY2Nlc3MgbW9kZTogJyArIG1vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU2Vzc2lvbjtcbn0oKTtcblxuLyoqIEludGVybmFsIHN0cmVhbSBvYnNlcnZlciB1c2VkIGZvciB0cmFuc2FjdGlvbmFsIHJlc3VsdHMqL1xuXG5cbnZhciBfUnVuT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoX1N0cmVhbU9ic2VydmVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKF9SdW5PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfUnVuT2JzZXJ2ZXIob25FcnJvcikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIF9SdW5PYnNlcnZlcik7XG5cbiAgICB2YXIgX3RoaXM0ID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoX1J1bk9ic2VydmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShfUnVuT2JzZXJ2ZXIpKS5jYWxsKHRoaXMsIG9uRXJyb3IpKTtcblxuICAgIF90aGlzNC5fbWV0YSA9IHt9O1xuICAgIHJldHVybiBfdGhpczQ7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShfUnVuT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiAnb25Db21wbGV0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgICAoMCwgX2dldDMuZGVmYXVsdCkoX1J1bk9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoX1J1bk9ic2VydmVyLnByb3RvdHlwZSksICdvbkNvbXBsZXRlZCcsIHRoaXMpLmNhbGwodGhpcywgbWV0YSk7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gbWV0YSkge1xuICAgICAgICBpZiAobWV0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdGhpcy5fbWV0YVtrZXldID0gbWV0YVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnbWV0YScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1ldGEoKSB7XG4gICAgICB2YXIgc2VydmVyTWV0YSA9IHsgc2VydmVyOiB0aGlzLl9jb25uLnNlcnZlciB9O1xuICAgICAgcmV0dXJuICgwLCBfYXNzaWduMi5kZWZhdWx0KSh7fSwgdGhpcy5fbWV0YSwgc2VydmVyTWV0YSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBfUnVuT2JzZXJ2ZXI7XG59KF9zdHJlYW1PYnNlcnZlcjIuZGVmYXVsdCk7XG5cbmZ1bmN0aW9uIF9jcmVhdGVUcmFuc2FjdGlvbkV4ZWN1dG9yKGNvbmZpZykge1xuICB2YXIgbWF4UmV0cnlUaW1lTXMgPSBjb25maWcgJiYgY29uZmlnLm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lID8gY29uZmlnLm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lIDogbnVsbDtcbiAgcmV0dXJuIG5ldyBfdHJhbnNhY3Rpb25FeGVjdXRvcjIuZGVmYXVsdChtYXhSZXRyeVRpbWVNcyk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFNlc3Npb247IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJyk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9nZXQyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldCcpO1xuXG52YXIgX2dldDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXQyKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX3Byb21pc2UgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZScpO1xuXG52YXIgX3Byb21pc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvbWlzZSk7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcblxudmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3N0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9zdHJlYW1PYnNlcnZlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC91dGlsJyk7XG5cbnZhciBfY29ubmVjdGlvbkhvbGRlciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXInKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHJhbnNhY3Rpb24gaW4gdGhlIE5lbzRqIGRhdGFiYXNlLlxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIFRyYW5zYWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvbkhvbGRlcn0gY29ubmVjdGlvbkhvbGRlciAtIHRoZSBjb25uZWN0aW9uIGhvbGRlciB0byBnZXQgY29ubmVjdGlvbiBmcm9tLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb3Igcm9sbGVkIGJhY2suXG4gICAqIEBwYXJhbSBlcnJvclRyYW5zZm9ybWVyIGNhbGxiYWNrIHVzZSB0byB0cmFuc2Zvcm0gZXJyb3JcbiAgICogQHBhcmFtIGJvb2ttYXJrIG9wdGlvbmFsIGJvb2ttYXJrXG4gICAqIEBwYXJhbSBvbkJvb2ttYXJrIGNhbGxiYWNrIGludm9rZWQgd2hlbiBuZXcgYm9va21hcmsgaXMgcHJvZHVjZWRcbiAgICovXG4gIGZ1bmN0aW9uIFRyYW5zYWN0aW9uKGNvbm5lY3Rpb25Ib2xkZXIsIG9uQ2xvc2UsIGVycm9yVHJhbnNmb3JtZXIsIGJvb2ttYXJrLCBvbkJvb2ttYXJrKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgVHJhbnNhY3Rpb24pO1xuXG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlciA9IGNvbm5lY3Rpb25Ib2xkZXI7XG4gICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpO1xuICAgIHZhciBwYXJhbXMgPSB7fTtcbiAgICBpZiAoYm9va21hcmspIHtcbiAgICAgIHBhcmFtcyA9IHsgYm9va21hcms6IGJvb2ttYXJrIH07XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihmdW5jdGlvbiAoY29ubikge1xuICAgICAgc3RyZWFtT2JzZXJ2ZXIucmVzb2x2ZUNvbm5lY3Rpb24oY29ubik7XG4gICAgICBjb25uLnJ1bignQkVHSU4nLCBwYXJhbXMsIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgIGNvbm4ucHVsbEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICByZXR1cm4gc3RyZWFtT2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9IF9zdGF0ZXMuQUNUSVZFO1xuICAgIHRoaXMuX29uQ2xvc2UgPSBvbkNsb3NlO1xuICAgIHRoaXMuX2Vycm9yVHJhbnNmb3JtZXIgPSBlcnJvclRyYW5zZm9ybWVyO1xuICAgIHRoaXMuX29uQm9va21hcmsgPSBvbkJvb2ttYXJrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBDeXBoZXIgc3RhdGVtZW50XG4gICAqIENvdWxkIGJlIGNhbGxlZCB3aXRoIGEgc3RhdGVtZW50IG9iamVjdCBpLmUuOiB7c3RhdGVtZW50OiBcIk1BVENIIC4uLlwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fVxuICAgKiBvciB3aXRoIHRoZSBzdGF0ZW1lbnQgYW5kIHBhcmFtZXRlcnMgYXMgc2VwYXJhdGUgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmVzdWx0fSBOZXcgUmVzdWx0XG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoVHJhbnNhY3Rpb24sIFt7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgaWYgKCh0eXBlb2Ygc3RhdGVtZW50ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogKDAsIF90eXBlb2YzLmRlZmF1bHQpKHN0YXRlbWVudCkpID09PSAnb2JqZWN0JyAmJiBzdGF0ZW1lbnQudGV4dCkge1xuICAgICAgICBwYXJhbWV0ZXJzID0gc3RhdGVtZW50LnBhcmFtZXRlcnMgfHwge307XG4gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC50ZXh0O1xuICAgICAgfVxuICAgICAgKDAsIF91dGlsLmFzc2VydFN0cmluZykoc3RhdGVtZW50LCBcIkN5cGhlciBzdGF0ZW1lbnRcIik7XG5cbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZS5ydW4odGhpcy5fY29ubmVjdGlvbkhvbGRlciwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1pdHMgdGhlIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAgICpcbiAgICAgKiBBZnRlciBjb21taXR0aW5nIHRoZSB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UmVzdWx0fSBOZXcgUmVzdWx0XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2NvbW1pdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbW1pdCgpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5jb21taXQodGhpcy5fY29ubmVjdGlvbkhvbGRlciwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpKTtcbiAgICAgIHRoaXMuX3N0YXRlID0gY29tbWl0dGVkLnN0YXRlO1xuICAgICAgLy9jbGVhbiB1cFxuICAgICAgdGhpcy5fb25DbG9zZSgpO1xuICAgICAgcmV0dXJuIGNvbW1pdHRlZC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUm9sbGJhY2tzIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIEFmdGVyIHJvbGxpbmcgYmFjaywgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZXN1bHR9IE5ldyBSZXN1bHRcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncm9sbGJhY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByb2xsYmFjaygpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5yb2xsYmFjayh0aGlzLl9jb25uZWN0aW9uSG9sZGVyLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgICAvL2NsZWFuIHVwXG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGlzIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZSwgd2hpY2ggbWVhbnMgY29tbWl0IGFuZCByb2xsYmFjayBkaWQgbm90IGhhcHBlbi5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiB3aGVuIG5vdCBjb21taXR0ZWQgYW5kIG5vdCByb2xsZWQgYmFjaywgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcGVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlID09IF9zdGF0ZXMuQUNUSVZFO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19vbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uRXJyb3IoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICAvLyBhdHRlbXB0IHRvIHJvbGxiYWNrLCB1c2VmdWwgd2hlbiBUcmFuc2FjdGlvbiNydW4oKSBmYWlsZWRcbiAgICAgICAgcmV0dXJuIHRoaXMucm9sbGJhY2soKS5jYXRjaChmdW5jdGlvbiAoaWdub3JlZEVycm9yKSB7XG4gICAgICAgICAgLy8gaWdub3JlIGFsbCBlcnJvcnMgYmVjYXVzZSBpdCBpcyBiZXN0IGVmZm9ydCBhbmQgdHJhbnNhY3Rpb24gbWlnaHQgYWxyZWFkeSBiZSByb2xsZWQgYmFja1xuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBhZnRlciByb2xsYmFjayBhdHRlbXB0IGNoYW5nZSB0aGlzIHRyYW5zYWN0aW9uJ3Mgc3RhdGUgdG8gRkFJTEVEXG4gICAgICAgICAgX3RoaXMuX3N0YXRlID0gX3N0YXRlcy5GQUlMRUQ7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXJyb3IgaGFwcGVuZWQgaW4gaW4tYWN0aXZlIHRyYW5zYWN0aW9uLCBqdXN0IHRvIHRoZSBjbGVhbnVwIGFuZCBjaGFuZ2Ugc3RhdGUgdG8gRkFJTEVEXG4gICAgICAgIHRoaXMuX3N0YXRlID0gX3N0YXRlcy5GQUlMRUQ7XG4gICAgICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICAgICAgLy8gbm8gYXN5bmMgYWN0aW9ucyBuZWVkZWQgLSByZXR1cm4gcmVzb2x2ZWQgcHJvbWlzZVxuICAgICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVHJhbnNhY3Rpb247XG59KCk7XG5cbi8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgdHJhbnNhY3Rpb25hbCByZXN1bHRzKi9cblxuXG52YXIgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoX1N0cmVhbU9ic2VydmVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLCBfU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gIGZ1bmN0aW9uIF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHR4KSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgdmFyIF90aGlzMiA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcikpLmNhbGwodGhpcywgdHguX2Vycm9yVHJhbnNmb3JtZXIgfHwgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KSk7XG5cbiAgICBfdGhpczIuX3R4ID0gdHg7XG4gICAgLy90aGlzIGlzIHRvIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIG9uRXJyb3IgY2F1c2VkIGJ5IElHTk9SRURcbiAgICBfdGhpczIuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICAgIHRoaXMuX3R4Ll9vbkVycm9yKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKDAsIF9nZXQzLmRlZmF1bHQpKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ29uRXJyb3InLCBfdGhpczMpLmNhbGwoX3RoaXMzLCBlcnJvcik7XG4gICAgICAgICAgX3RoaXMzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkNvbXBsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1ldGEpIHtcbiAgICAgICgwLCBfZ2V0My5kZWZhdWx0KShfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZSksICdvbkNvbXBsZXRlZCcsIHRoaXMpLmNhbGwodGhpcywgbWV0YSk7XG4gICAgICB2YXIgYm9va21hcmsgPSBtZXRhLmJvb2ttYXJrO1xuICAgICAgdGhpcy5fdHguX29uQm9va21hcmsoYm9va21hcmspO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlcnZlck1ldGEnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXJ2ZXJNZXRhKCkge1xuICAgICAgdmFyIHNlcnZlck1ldGEgPSB7IHNlcnZlcjogdGhpcy5fY29ubi5zZXJ2ZXIgfTtcbiAgICAgIHJldHVybiBzZXJ2ZXJNZXRhO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXI7XG59KF9zdHJlYW1PYnNlcnZlcjIuZGVmYXVsdCk7XG5cbi8qKiBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lIG9mIHRoZSB0cmFuc2FjdGlvbiovXG5cblxudmFyIF9zdGF0ZXMgPSB7XG4gIC8vVGhlIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgd2l0aCBubyBleHBsaWNpdCBzdWNjZXNzIG9yIGZhaWx1cmUgbWFya2VkXG4gIEFDVElWRToge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IF9ydW5QdWxsQWxsKFwiQ09NTUlUXCIsIGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSxcbiAgICAgICAgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpIHtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogX3J1blB1bGxBbGwoXCJST0xMQkFDS1wiLCBjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmdldENvbm5lY3Rpb24oKS50aGVuKGZ1bmN0aW9uIChjb25uKSB7XG4gICAgICAgIG9ic2VydmVyLnJlc29sdmVDb25uZWN0aW9uKGNvbm4pO1xuICAgICAgICBjb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMgfHwge30sIG9ic2VydmVyKTtcbiAgICAgICAgY29ubi5wdWxsQWxsKG9ic2VydmVyKTtcbiAgICAgICAgY29ubi5zeW5jKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXdSdW5SZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuc2VydmVyTWV0YSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vQW4gZXJyb3IgaGFzIG9jY3VycmVkLCB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgYW5kIG5vIG1vcmUgbWVzc2FnZXMgd2lsbFxuICAvLyBiZSBzZW50IGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICBGQUlMRUQ6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgc3RhdGVtZW50cyBpbiB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2suIFBsZWFzZSBzdGFydCBhIG5ld1wiICsgXCIgdHJhbnNhY3Rpb24gdG8gcnVuIGFub3RoZXIgc3RhdGVtZW50LlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuRkFJTEVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLkZBSUxFRCB9O1xuICAgIH0sXG4gICAgcnVuOiBmdW5jdGlvbiBydW4oY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCBydW4gc3RhdGVtZW50LCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9UaGlzIHRyYW5zYWN0aW9uIGhhcyBzdWNjZXNzZnVsbHkgY29tbWl0dGVkXG4gIFNVQ0NFRURFRDoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgY29tbWl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbGxlZCBvbiB0aGUgdHJhbnNhY3Rpb24gYW5kIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgKyBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUQgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2xvc2VkLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2tcbiAgUk9MTEVEX0JBQ0s6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0sgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ydW5QdWxsQWxsKG1zZywgY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpIHtcbiAgY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihmdW5jdGlvbiAoY29ubikge1xuICAgIG9ic2VydmVyLnJlc29sdmVDb25uZWN0aW9uKGNvbm4pO1xuICAgIGNvbm4ucnVuKG1zZywge30sIG9ic2VydmVyKTtcbiAgICBjb25uLnB1bGxBbGwob2JzZXJ2ZXIpO1xuICAgIGNvbm4uc3luYygpO1xuICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICByZXR1cm4gb2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gIH0pO1xuXG4gIC8vIGZvciBjb21taXQgJiByb2xsYmFjayB3ZSBuZWVkIHJlc3VsdCB0aGF0IHVzZXMgcmVhbCBjb25uZWN0aW9uIGhvbGRlciBhbmQgbm90aWZpZXMgaXQgd2hlblxuICAvLyBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW5kIGNhbiBiZSBzYWZlbHkgcmVsZWFzZWQgdG8gdGhlIHBvb2xcbiAgcmV0dXJuIG5ldyBfcmVzdWx0Mi5kZWZhdWx0KG9ic2VydmVyLCBtc2csIHt9LCBlbXB0eU1ldGFkYXRhU3VwcGxpZXIsIGNvbm5lY3Rpb25Ib2xkZXIpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgUmVzdWx0fSB3aXRoIGVtcHR5IGNvbm5lY3Rpb24gaG9sZGVyLlxuICogU2hvdWxkIGJlIHVzZWQgYXMgYSByZXN1bHQgZm9yIHJ1bm5pbmcgY3lwaGVyIHN0YXRlbWVudHMuIFRoZXkgY2FuIHJlc3VsdCBpbiBtZXRhZGF0YSBidXQgc2hvdWxkIG5vdFxuICogaW5mbHVlbmNlIHJlYWwgY29ubmVjdGlvbiBob2xkZXIgdG8gcmVsZWFzZSBjb25uZWN0aW9ucyBiZWNhdXNlIHNpbmdsZSB0cmFuc2FjdGlvbiBjYW4gaGF2ZVxuICoge0BsaW5rIFRyYW5zYWN0aW9uI3J1bn0gY2FsbGVkIG11bHRpcGxlIHRpbWVzLlxuICogQHBhcmFtIHtTdHJlYW1PYnNlcnZlcn0gb2JzZXJ2ZXIgLSBhbiBvYnNlcnZlciBmb3IgdGhlIGNyZWF0ZWQgcmVzdWx0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlbWVudCAtIHRoZSBjeXBoZXIgc3RhdGVtZW50IHRoYXQgcHJvZHVjZWQgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzIC0gdGhlIHBhcmFtZXRlcnMgZm9yIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0YWRhdGFTdXBwbGllciAtIHRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcmV0dXJuIHtSZXN1bHR9IG5ldyByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIG5ld1J1blJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhZGF0YVN1cHBsaWVyKSB7XG4gIHJldHVybiBuZXcgX3Jlc3VsdDIuZGVmYXVsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhZGF0YVN1cHBsaWVyLCBfY29ubmVjdGlvbkhvbGRlci5FTVBUWV9DT05ORUNUSU9OX0hPTERFUik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBSZXN1bHR9IHdpdGhvdXQgbWV0YWRhdGEgc3VwcGxpZXIgYW5kIHdpdGggZW1wdHkgY29ubmVjdGlvbiBob2xkZXIuXG4gKiBGb3IgY2FzZXMgd2hlbiByZXN1bHQgcmVwcmVzZW50cyBhbiBpbnRlcm1lZGlhdGUgb3IgZmFpbGVkIGFjdGlvbiwgZG9lcyBub3QgcmVxdWlyZSBhbnkgbWV0YWRhdGEgYW5kIGRvZXMgbm90XG4gKiBuZWVkIHRvIGluZmx1ZW5jZSByZWFsIGNvbm5lY3Rpb24gaG9sZGVyIHRvIHJlbGVhc2UgY29ubmVjdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBvYnNlcnZlciAtIGFuIG9ic2VydmVyIGZvciB0aGUgY3JlYXRlZCByZXN1bHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gdGhlIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSB0aGUgcGFyYW1ldGVycyBmb3IgY3lwaGVyIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VkIHRoZSByZXN1bHQuXG4gKiBAcmV0dXJuIHtSZXN1bHR9IG5ldyByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgcmV0dXJuIG5ldyBfcmVzdWx0Mi5kZWZhdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIGVtcHR5TWV0YWRhdGFTdXBwbGllciwgX2Nvbm5lY3Rpb25Ib2xkZXIuRU1QVFlfQ09OTkVDVElPTl9IT0xERVIpO1xufVxuXG5mdW5jdGlvbiBlbXB0eU1ldGFkYXRhU3VwcGxpZXIoKSB7XG4gIHJldHVybiB7fTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gVHJhbnNhY3Rpb247IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gRE8gTk9UIENIQU5HRSBUSEUgVkVSU0lPTiBCRUxPVyBIRVJFXG4vLyBUaGlzIGlzIHNldCBieSB0aGUgYnVpbGQgc3lzdGVtIGF0IHJlbGVhc2UgdGltZSwgdXNpbmdcbi8vICAgZ3VscCBzZXQgLS12ZXJzaW9uIDxyZWxlYXNldmVyc2lvbj5cbi8vXG4vLyBUaGlzIGlzIHNldCB1cCB0aGlzIHdheSB0byBrZWVwIHRoZSB2ZXJzaW9uIGluIHRoZSBjb2RlIGluXG4vLyBzeW5jIHdpdGggdGhlIG5wbSBwYWNrYWdlIHZlcnNpb24sIGFuZCB0byBhbGxvdyB0aGUgYnVpbGRcbi8vIHN5c3RlbSB0byBjb250cm9sIHZlcnNpb24gbmFtZXMgYXQgcGFja2FnaW5nIHRpbWUuXG5leHBvcnRzLmRlZmF1bHQgPSBcIjAuMC4wLWRldlwiOyIsInZhciBhc24xID0gZXhwb3J0cztcblxuYXNuMS5iaWdudW0gPSByZXF1aXJlKCdibi5qcycpO1xuXG5hc24xLmRlZmluZSA9IHJlcXVpcmUoJy4vYXNuMS9hcGknKS5kZWZpbmU7XG5hc24xLmJhc2UgPSByZXF1aXJlKCcuL2FzbjEvYmFzZScpO1xuYXNuMS5jb25zdGFudHMgPSByZXF1aXJlKCcuL2FzbjEvY29uc3RhbnRzJyk7XG5hc24xLmRlY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2RlY29kZXJzJyk7XG5hc24xLmVuY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2VuY29kZXJzJyk7XG4iLCJ2YXIgYXNuMSA9IHJlcXVpcmUoJy4uL2FzbjEnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBhcGkgPSBleHBvcnRzO1xuXG5hcGkuZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKG5hbWUsIGJvZHkpIHtcbiAgcmV0dXJuIG5ldyBFbnRpdHkobmFtZSwgYm9keSk7XG59O1xuXG5mdW5jdGlvbiBFbnRpdHkobmFtZSwgYm9keSkge1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gIHRoaXMuZGVjb2RlcnMgPSB7fTtcbiAgdGhpcy5lbmNvZGVycyA9IHt9O1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fY3JlYXRlTmFtZWQgPSBmdW5jdGlvbiBjcmVhdGVOYW1lZChiYXNlKSB7XG4gIHZhciBuYW1lZDtcbiAgdHJ5IHtcbiAgICBuYW1lZCA9IHJlcXVpcmUoJ3ZtJykucnVuSW5UaGlzQ29udGV4dChcbiAgICAgICcoZnVuY3Rpb24gJyArIHRoaXMubmFtZSArICcoZW50aXR5KSB7XFxuJyArXG4gICAgICAnICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcXG4nICtcbiAgICAgICd9KSdcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbmFtZWQgPSBmdW5jdGlvbiAoZW50aXR5KSB7XG4gICAgICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcbiAgICB9O1xuICB9XG4gIGluaGVyaXRzKG5hbWVkLCBiYXNlKTtcbiAgbmFtZWQucHJvdG90eXBlLl9pbml0TmFtZWQgPSBmdW5jdGlvbiBpbml0bmFtZWQoZW50aXR5KSB7XG4gICAgYmFzZS5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBuYW1lZCh0aGlzKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldERlY29kZXIgPSBmdW5jdGlvbiBfZ2V0RGVjb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGRlY29kZXJcbiAgaWYgKCF0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5kZWNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5kZWNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZGVjb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIGVuYywgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5fZ2V0RGVjb2RlcihlbmMpLmRlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldEVuY29kZXIgPSBmdW5jdGlvbiBfZ2V0RW5jb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGVuY29kZXJcbiAgaWYgKCF0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5lbmNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5lbmNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIGVuYywgLyogaW50ZXJuYWwgKi8gcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZW5jKS5lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG5mdW5jdGlvbiBEZWNvZGVyQnVmZmVyKGJhc2UsIG9wdGlvbnMpIHtcbiAgUmVwb3J0ZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYmFzZSkpIHtcbiAgICB0aGlzLmVycm9yKCdJbnB1dCBub3QgQnVmZmVyJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5iYXNlID0gYmFzZTtcbiAgdGhpcy5vZmZzZXQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IGJhc2UubGVuZ3RoO1xufVxuaW5oZXJpdHMoRGVjb2RlckJ1ZmZlciwgUmVwb3J0ZXIpO1xuZXhwb3J0cy5EZWNvZGVyQnVmZmVyID0gRGVjb2RlckJ1ZmZlcjtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgdmFyIHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIEVuY29kZXJCdWZmZXIodmFsdWUsIHJlcG9ydGVyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGlmICghKGl0ZW0gaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihvdXQsIG9mZnNldCkge1xuICBpZiAoIW91dClcbiAgICBvdXQgPSBuZXcgQnVmZmVyKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcbiIsInZhciBiYXNlID0gZXhwb3J0cztcblxuYmFzZS5SZXBvcnRlciA9IHJlcXVpcmUoJy4vcmVwb3J0ZXInKS5SZXBvcnRlcjtcbmJhc2UuRGVjb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRGVjb2RlckJ1ZmZlcjtcbmJhc2UuRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRW5jb2RlckJ1ZmZlcjtcbmJhc2UuTm9kZSA9IHJlcXVpcmUoJy4vbm9kZScpO1xuIiwidmFyIFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZScpLlJlcG9ydGVyO1xudmFyIEVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRW5jb2RlckJ1ZmZlcjtcbnZhciBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZScpLkRlY29kZXJCdWZmZXI7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG4vLyBTdXBwb3J0ZWQgdGFnc1xudmFyIHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JywgJ29iakRlc2MnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxudmFyIG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG52YXIgb3ZlcnJpZGVkID0gW1xuICAnX3BlZWtUYWcnLCAnX2RlY29kZVRhZycsICdfdXNlJyxcbiAgJ19kZWNvZGVTdHInLCAnX2RlY29kZU9iamlkJywgJ19kZWNvZGVUaW1lJyxcbiAgJ19kZWNvZGVOdWxsJywgJ19kZWNvZGVJbnQnLCAnX2RlY29kZUJvb2wnLCAnX2RlY29kZUxpc3QnLFxuXG4gICdfZW5jb2RlQ29tcG9zaXRlJywgJ19lbmNvZGVTdHInLCAnX2VuY29kZU9iamlkJywgJ19lbmNvZGVUaW1lJyxcbiAgJ19lbmNvZGVOdWxsJywgJ19lbmNvZGVJbnQnLCAnX2VuY29kZUJvb2wnXG5dO1xuXG5mdW5jdGlvbiBOb2RlKGVuYywgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5lbmMgPSBlbmM7XG5cbiAgc3RhdGUucGFyZW50ID0gcGFyZW50IHx8IG51bGw7XG4gIHN0YXRlLmNoaWxkcmVuID0gbnVsbDtcblxuICAvLyBTdGF0ZVxuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5hcmdzID0gbnVsbDtcbiAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBudWxsO1xuICBzdGF0ZS5jaG9pY2UgPSBudWxsO1xuICBzdGF0ZS5vcHRpb25hbCA9IGZhbHNlO1xuICBzdGF0ZS5hbnkgPSBmYWxzZTtcbiAgc3RhdGUub2JqID0gZmFsc2U7XG4gIHN0YXRlLnVzZSA9IG51bGw7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBudWxsO1xuICBzdGF0ZS5rZXkgPSBudWxsO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gbnVsbDtcbiAgc3RhdGUuZXhwbGljaXQgPSBudWxsO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmNvbnRhaW5zID0gbnVsbDtcblxuICAvLyBTaG91bGQgY3JlYXRlIG5ldyBpbnN0YW5jZSBvbiBlYWNoIG1ldGhvZFxuICBpZiAoIXN0YXRlLnBhcmVudCkge1xuICAgIHN0YXRlLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5fd3JhcCgpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IE5vZGU7XG5cbnZhciBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCcsICdjb250YWlucydcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGNzdGF0ZSA9IHt9O1xuICBzdGF0ZVByb3BzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgIGNzdGF0ZVtwcm9wXSA9IHN0YXRlW3Byb3BdO1xuICB9KTtcbiAgdmFyIHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICB2YXIgY2xvbmUgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goY2xvbmUpO1xuICAgICAgcmV0dXJuIGNsb25lW21ldGhvZF0uYXBwbHkoY2xvbmUsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSwgdGhpcyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoYm9keSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIHZhciBjaGlsZHJlbiA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9LCB0aGlzKTtcbiAgYXJncyA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiAhKGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpO1xuICB9LCB0aGlzKTtcblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmNoaWxkcmVuID09PSBudWxsKTtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAgLy8gUmVwbGFjZSBwYXJlbnQgdG8gbWFpbnRhaW4gYmFja3dhcmQgbGlua1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID0gdGhpcztcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuYXJncyA9PT0gbnVsbCk7XG4gICAgc3RhdGUuYXJncyA9IGFyZ3M7XG4gICAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbihhcmcpIHtcbiAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0JyB8fCBhcmcuY29uc3RydWN0b3IgIT09IE9iamVjdClcbiAgICAgICAgcmV0dXJuIGFyZztcblxuICAgICAgdmFyIHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWV0aG9kICsgJyBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAnICsgc3RhdGUuZW5jKTtcbiAgfTtcbn0pO1xuXG4vL1xuLy8gUHVibGljIG1ldGhvZHNcbi8vXG5cbnRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHtcbiAgTm9kZS5wcm90b3R5cGVbdGFnXSA9IGZ1bmN0aW9uIF90YWdNZXRob2QoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICBhc3NlcnQoaXRlbSk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUudXNlID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9wdGlvbmFsID0gZnVuY3Rpb24gb3B0aW9uYWwoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5kZWYgPSBmdW5jdGlvbiBkZWYodmFsKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbCk7XG4gIHN0YXRlWydkZWZhdWx0J10gPSB2YWw7XG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmV4cGxpY2l0ID0gZnVuY3Rpb24gZXhwbGljaXQobnVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmltcGxpY2l0ID0gZnVuY3Rpb24gaW1wbGljaXQobnVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9iaiA9IGZ1bmN0aW9uIG9iaigpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgc3RhdGUub2JqID0gdHJ1ZTtcblxuICBpZiAoYXJncy5sZW5ndGggIT09IDApXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmtleSA9IGZ1bmN0aW9uIGtleShuZXdLZXkpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5rZXkgPT09IG51bGwpO1xuICBzdGF0ZS5rZXkgPSBuZXdLZXk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5hbnkgPSBmdW5jdGlvbiBhbnkoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5hbnkgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY2hvaWNlID0gZnVuY3Rpb24gY2hvaWNlKG9iaikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmNob2ljZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNob2ljZSA9IG9iajtcbiAgdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqW2tleV07XG4gIH0pKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gY29udGFpbnMoaXRlbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNvbnRhaW5zID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vXG4vLyBEZWNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBpbnB1dC53cmFwUmVzdWx0KHN0YXRlLmNoaWxkcmVuWzBdLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpKTtcblxuICB2YXIgcmVzdWx0ID0gc3RhdGVbJ2RlZmF1bHQnXTtcbiAgdmFyIHByZXNlbnQgPSB0cnVlO1xuXG4gIHZhciBwcmV2S2V5ID0gbnVsbDtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgICAgIHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJlc2VudCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlc2VudCA9IHRoaXMuX3BlZWtUYWcoaW5wdXQsIHRhZywgc3RhdGUuYW55KTtcblxuICAgICAgaWYgKGlucHV0LmlzRXJyb3IocHJlc2VudCkpXG4gICAgICAgIHJldHVybiBwcmVzZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggb2JqZWN0IG9uIHN0YWNrXG4gIHZhciBwcmV2T2JqO1xuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcHJldk9iaiA9IGlucHV0LmVudGVyT2JqZWN0KCk7XG5cbiAgaWYgKHByZXNlbnQpIHtcbiAgICAvLyBVbndyYXAgZXhwbGljaXQgdmFsdWVzXG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQgPSBpbnB1dC5vZmZzZXQ7XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB2YXIgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgc3RhcnQsIGlucHV0Lmxlbmd0aCwgJ3RhZ2dlZCcpO1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgaW5wdXQub2Zmc2V0LCBpbnB1dC5sZW5ndGgsICdjb250ZW50Jyk7XG5cbiAgICAvLyBTZWxlY3QgcHJvcGVyIG1ldGhvZCBmb3IgdGFnXG4gICAgaWYgKHN0YXRlLmFueSlcbiAgICAgIHJlc3VsdCA9IHJlc3VsdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgIGVsc2VcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoaW5wdXQuaXNFcnJvcihyZXN1bHQpKVxuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIC8vIERlY29kZSBjaGlsZHJlblxuICAgIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCAmJiBzdGF0ZS5jaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiBkZWNvZGVDaGlsZHJlbihjaGlsZCkge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgaWdub3JpbmcgZXJyb3JzIGhlcmUsIHRvIGxldCBwYXJzZXIgY29udGludWUgd2l0aCBvdGhlclxuICAgICAgICAvLyBwYXJ0cyBvZiBlbmNvZGVkIGRhdGFcbiAgICAgICAgY2hpbGQuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEZWNvZGUgY29udGFpbmVkL2VuY29kZWQgYnkgc2NoZW1hLCBvbmx5IGluIGJpdCBvciBvY3RldCBzdHJpbmdzXG4gICAgaWYgKHN0YXRlLmNvbnRhaW5zICYmIChzdGF0ZS50YWcgPT09ICdvY3RzdHInIHx8IHN0YXRlLnRhZyA9PT0gJ2JpdHN0cicpKSB7XG4gICAgICB2YXIgZGF0YSA9IG5ldyBEZWNvZGVyQnVmZmVyKHJlc3VsdCk7XG4gICAgICByZXN1bHQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUuY29udGFpbnMsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgICAuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBQb3Agb2JqZWN0XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICByZXN1bHQgPSBpbnB1dC5sZWF2ZU9iamVjdChwcmV2T2JqKTtcblxuICAvLyBTZXQga2V5XG4gIGlmIChzdGF0ZS5rZXkgIT09IG51bGwgJiYgKHJlc3VsdCAhPT0gbnVsbCB8fCBwcmVzZW50ID09PSB0cnVlKSlcbiAgICBpbnB1dC5sZWF2ZUtleShwcmV2S2V5LCBzdGF0ZS5rZXksIHJlc3VsdCk7XG4gIGVsc2UgaWYgKHByZXZLZXkgIT09IG51bGwpXG4gICAgaW5wdXQuZXhpdEtleShwcmV2S2V5KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWMgPSBmdW5jdGlvbiBkZWNvZGVHZW5lcmljKHRhZywgaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICh0YWcgPT09ICdzZXEnIHx8IHRhZyA9PT0gJ3NldCcpXG4gICAgcmV0dXJuIG51bGw7XG4gIGlmICh0YWcgPT09ICdzZXFvZicgfHwgdGFnID09PSAnc2V0b2YnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVMaXN0KGlucHV0LCB0YWcsIHN0YXRlLmFyZ3NbMF0sIG9wdGlvbnMpO1xuICBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgc3RhdGUuYXJnc1swXSwgc3RhdGUuYXJnc1sxXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlT2JqaWQoaW5wdXQsIG51bGwsIG51bGwsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdnZW50aW1lJyB8fCB0YWcgPT09ICd1dGN0aW1lJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlVGltZShpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVOdWxsKGlucHV0LCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUJvb2woaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlU3RyKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVJbnQoaW5wdXQsIHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG5cbiAgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopXG4gICAgICAgIC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ3Vua25vd24gdGFnOiAnICsgdGFnKTtcbiAgfVxufTtcblxuTm9kZS5wcm90b3R5cGUuX2dldFVzZSA9IGZ1bmN0aW9uIF9nZXRVc2UoZW50aXR5LCBvYmopIHtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIC8vIENyZWF0ZSBhbHRlcmVkIHVzZSBkZWNvZGVyIGlmIGltcGxpY2l0IGlzIHNldFxuICBzdGF0ZS51c2VEZWNvZGVyID0gdGhpcy5fdXNlKGVudGl0eSwgb2JqKTtcbiAgYXNzZXJ0KHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmNoaWxkcmVuWzBdO1xuICBpZiAoc3RhdGUuaW1wbGljaXQgIT09IHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCkge1xuICAgIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLmNsb25lKCk7XG4gICAgc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0ID0gc3RhdGUuaW1wbGljaXQ7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLnVzZURlY29kZXI7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlQ2hvaWNlID0gZnVuY3Rpb24gZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIHJlc3VsdCA9IG51bGw7XG4gIHZhciBtYXRjaCA9IGZhbHNlO1xuXG4gIE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkuc29tZShmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICB2YXIgbm9kZSA9IHN0YXRlLmNob2ljZVtrZXldO1xuICAgIHRyeSB7XG4gICAgICB2YXIgdmFsdWUgPSBub2RlLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IodmFsdWUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJlc3VsdCA9IHsgdHlwZToga2V5LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKCFtYXRjaClcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ0Nob2ljZSBub3QgbWF0Y2hlZCcpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vL1xuLy8gRW5jb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgRW5jb2RlckJ1ZmZlcihkYXRhLCB0aGlzLnJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsICYmIHN0YXRlWydkZWZhdWx0J10gPT09IGRhdGEpXG4gICAgcmV0dXJuO1xuXG4gIHZhciByZXN1bHQgPSB0aGlzLl9lbmNvZGVWYWx1ZShkYXRhLCByZXBvcnRlciwgcGFyZW50KTtcbiAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybjtcblxuICBpZiAodGhpcy5fc2tpcERlZmF1bHQocmVzdWx0LCByZXBvcnRlciwgcGFyZW50KSlcbiAgICByZXR1cm47XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVWYWx1ZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuWzBdLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIgfHwgbmV3IFJlcG9ydGVyKCkpO1xuXG4gIHZhciByZXN1bHQgPSBudWxsO1xuXG4gIC8vIFNldCByZXBvcnRlciB0byBzaGFyZSBpdCB3aXRoIGEgY2hpbGQgY2xhc3NcbiAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyO1xuXG4gIC8vIENoZWNrIGlmIGRhdGEgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsICYmIGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsKVxuICAgICAgZGF0YSA9IHN0YXRlWydkZWZhdWx0J11cbiAgICBlbHNlXG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbmNvZGUgY2hpbGRyZW4gZmlyc3RcbiAgdmFyIGNvbnRlbnQgPSBudWxsO1xuICB2YXIgcHJpbWl0aXZlID0gZmFsc2U7XG4gIGlmIChzdGF0ZS5hbnkpIHtcbiAgICAvLyBBbnl0aGluZyB0aGF0IHdhcyBnaXZlbiBpcyB0cmFuc2xhdGVkIHRvIGJ1ZmZlclxuICAgIHJlc3VsdCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY2hvaWNlKSB7XG4gICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ2hvaWNlKGRhdGEsIHJlcG9ydGVyKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jb250YWlucykge1xuICAgIGNvbnRlbnQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUuY29udGFpbnMsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaGlsZHJlbikge1xuICAgIGNvbnRlbnQgPSBzdGF0ZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLnRhZyA9PT0gJ251bGxfJylcbiAgICAgICAgcmV0dXJuIGNoaWxkLl9lbmNvZGUobnVsbCwgcmVwb3J0ZXIsIGRhdGEpO1xuXG4gICAgICBpZiAoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkgPT09IG51bGwpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgc2hvdWxkIGhhdmUgYSBrZXknKTtcbiAgICAgIHZhciBwcmV2S2V5ID0gcmVwb3J0ZXIuZW50ZXJLZXkoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkpO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCcpO1xuXG4gICAgICB2YXIgcmVzID0gY2hpbGQuX2VuY29kZShkYXRhW2NoaWxkLl9iYXNlU3RhdGUua2V5XSwgcmVwb3J0ZXIsIGRhdGEpO1xuICAgICAgcmVwb3J0ZXIubGVhdmVLZXkocHJldktleSk7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgdGhpcykuZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSk7XG4gICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJ3NlcW9mJyB8fCBzdGF0ZS50YWcgPT09ICdzZXRvZicpIHtcbiAgICAgIC8vIFRPRE8oaW5kdXRueSk6IHRoaXMgc2hvdWxkIGJlIHRocm93biBvbiBEU0wgbGV2ZWxcbiAgICAgIGlmICghKHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJncy5sZW5ndGggPT09IDEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1RvbyBtYW55IGFyZ3MgZm9yIDogJyArIHN0YXRlLnRhZyk7XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSlcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Jyk7XG5cbiAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICAgICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS5hcmdzWzBdLCBkYXRhKS5fZW5jb2RlKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIH0sIGNoaWxkKSk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9lbmNvZGVQcmltaXRpdmUoc3RhdGUudGFnLCBkYXRhKTtcbiAgICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5jb2RlIGRhdGEgaXRzZWxmXG4gIHZhciByZXN1bHQ7XG4gIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgIHZhciB0YWcgPSBzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbCA/IHN0YXRlLmltcGxpY2l0IDogc3RhdGUudGFnO1xuICAgIHZhciBjbHMgPSBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCA/ICd1bml2ZXJzYWwnIDogJ2NvbnRleHQnO1xuXG4gICAgaWYgKHRhZyA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLnVzZSA9PT0gbnVsbClcbiAgICAgICAgcmVwb3J0ZXIuZXJyb3IoJ1RhZyBjb3VsZCBiZSBvbW1pdGVkIG9ubHkgZm9yIC51c2UoKScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUodGFnLCBwcmltaXRpdmUsIGNscywgY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JhcCBpbiBleHBsaWNpdFxuICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ29tcG9zaXRlKHN0YXRlLmV4cGxpY2l0LCBmYWxzZSwgJ2NvbnRleHQnLCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlID0gZnVuY3Rpb24gZW5jb2RlQ2hvaWNlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICB2YXIgbm9kZSA9IHN0YXRlLmNob2ljZVtkYXRhLnR5cGVdO1xuICBpZiAoIW5vZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBkYXRhLnR5cGUgKyAnIG5vdCBmb3VuZCBpbiAnICtcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkpKTtcbiAgfVxuICByZXR1cm4gbm9kZS5fZW5jb2RlKGRhdGEudmFsdWUsIHJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVQcmltaXRpdmUgPSBmdW5jdGlvbiBlbmNvZGVQcmltaXRpdmUodGFnLCBkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBzdGF0ZS5yZXZlcnNlQXJnc1swXSwgc3RhdGUuYXJnc1sxXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVUaW1lKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVJbnQoZGF0YSwgc3RhdGUuYXJncyAmJiBzdGF0ZS5yZXZlcnNlQXJnc1swXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVCb29sKGRhdGEpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICByZXR1cm4geyBvYmo6IHN0YXRlLm9iaiwgcGF0aExlbjogc3RhdGUucGF0aC5sZW5ndGggfTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXhpdEtleSA9IGZ1bmN0aW9uIGV4aXRLZXkoaW5kZXgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBpbmRleCAtIDEpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5ID0gZnVuY3Rpb24gbGVhdmVLZXkoaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB0aGlzLmV4aXRLZXkoaW5kZXgpO1xuICBpZiAoc3RhdGUub2JqICE9PSBudWxsKVxuICAgIHN0YXRlLm9ialtrZXldID0gdmFsdWU7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbignLycpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyT2JqZWN0ID0gZnVuY3Rpb24gZW50ZXJPYmplY3QoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIHByZXYgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHt9O1xuICByZXR1cm4gcHJldjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdCA9IGZ1bmN0aW9uIGxlYXZlT2JqZWN0KHByZXYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgbm93ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSBwcmV2O1xuICByZXR1cm4gbm93O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gIHZhciBlcnI7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIGluaGVyaXRlZCA9IG1zZyBpbnN0YW5jZW9mIFJlcG9ydGVyRXJyb3I7XG4gIGlmIChpbmhlcml0ZWQpIHtcbiAgICBlcnIgPSBtc2c7XG4gIH0gZWxzZSB7XG4gICAgZXJyID0gbmV3IFJlcG9ydGVyRXJyb3Ioc3RhdGUucGF0aC5tYXAoZnVuY3Rpb24oZWxlbSkge1xuICAgICAgcmV0dXJuICdbJyArIEpTT04uc3RyaW5naWZ5KGVsZW0pICsgJ10nO1xuICAgIH0pLmpvaW4oJycpLCBtc2cubWVzc2FnZSB8fCBtc2csIG1zZy5zdGFjayk7XG4gIH1cblxuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICB0aHJvdyBlcnI7XG5cbiAgaWYgKCFpbmhlcml0ZWQpXG4gICAgc3RhdGUuZXJyb3JzLnB1c2goZXJyKTtcblxuICByZXR1cm4gZXJyO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLndyYXBSZXN1bHQgPSBmdW5jdGlvbiB3cmFwUmVzdWx0KHJlc3VsdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiB0aGlzLmlzRXJyb3IocmVzdWx0KSA/IG51bGwgOiByZXN1bHQsXG4gICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnNcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIFJlcG9ydGVyRXJyb3IocGF0aCwgbXNnKSB7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucmV0aHJvdyhtc2cpO1xufTtcbmluaGVyaXRzKFJlcG9ydGVyRXJyb3IsIEVycm9yKTtcblxuUmVwb3J0ZXJFcnJvci5wcm90b3R5cGUucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3cobXNnKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1zZyArICcgYXQ6ICcgKyAodGhpcy5wYXRoIHx8ICcoc2hhbGxvdyknKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcG9ydGVyRXJyb3IpO1xuXG4gIGlmICghdGhpcy5zdGFjaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBJRSBvbmx5IGFkZHMgc3RhY2sgd2hlbiB0aHJvd25cbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG4iLCJ2YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzJyk7XG5cbmV4cG9ydHMudGFnQ2xhc3MgPSB7XG4gIDA6ICd1bml2ZXJzYWwnLFxuICAxOiAnYXBwbGljYXRpb24nLFxuICAyOiAnY29udGV4dCcsXG4gIDM6ICdwcml2YXRlJ1xufTtcbmV4cG9ydHMudGFnQ2xhc3NCeU5hbWUgPSBjb25zdGFudHMuX3JldmVyc2UoZXhwb3J0cy50YWdDbGFzcyk7XG5cbmV4cG9ydHMudGFnID0ge1xuICAweDAwOiAnZW5kJyxcbiAgMHgwMTogJ2Jvb2wnLFxuICAweDAyOiAnaW50JyxcbiAgMHgwMzogJ2JpdHN0cicsXG4gIDB4MDQ6ICdvY3RzdHInLFxuICAweDA1OiAnbnVsbF8nLFxuICAweDA2OiAnb2JqaWQnLFxuICAweDA3OiAnb2JqRGVzYycsXG4gIDB4MDg6ICdleHRlcm5hbCcsXG4gIDB4MDk6ICdyZWFsJyxcbiAgMHgwYTogJ2VudW0nLFxuICAweDBiOiAnZW1iZWQnLFxuICAweDBjOiAndXRmOHN0cicsXG4gIDB4MGQ6ICdyZWxhdGl2ZU9pZCcsXG4gIDB4MTA6ICdzZXEnLFxuICAweDExOiAnc2V0JyxcbiAgMHgxMjogJ251bXN0cicsXG4gIDB4MTM6ICdwcmludHN0cicsXG4gIDB4MTQ6ICd0NjFzdHInLFxuICAweDE1OiAndmlkZW9zdHInLFxuICAweDE2OiAnaWE1c3RyJyxcbiAgMHgxNzogJ3V0Y3RpbWUnLFxuICAweDE4OiAnZ2VudGltZScsXG4gIDB4MTk6ICdncmFwaHN0cicsXG4gIDB4MWE6ICdpc282NDZzdHInLFxuICAweDFiOiAnZ2Vuc3RyJyxcbiAgMHgxYzogJ3VuaXN0cicsXG4gIDB4MWQ6ICdjaGFyc3RyJyxcbiAgMHgxZTogJ2JtcHN0cidcbn07XG5leHBvcnRzLnRhZ0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZyk7XG4iLCJ2YXIgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICB2YXIgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICB2YXIgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xudmFyIGJpZ251bSA9IGFzbjEuYmlnbnVtO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRGVjb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBiYXNlLkRlY29kZXJCdWZmZXIpKVxuICAgIGRhdGEgPSBuZXcgYmFzZS5EZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLnRyZWUuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsICdGYWlsZWQgdG8gcGVlayB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuXG4gIHJldHVybiBkZWNvZGVkVGFnLnRhZyA9PT0gdGFnIHx8IGRlY29kZWRUYWcudGFnU3RyID09PSB0YWcgfHxcbiAgICAoZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnKSA9PT0gdGFnIHx8IGFueTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUYWcgPSBmdW5jdGlvbiBkZWNvZGVUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgICBidWZmZXIsXG4gICAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKVxuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIHZhciByZXMgPSBkZWNvZGVyLmRlY29kZShidWZmZXIsICdkZXInLCBvcHRpb25zKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSAmJiBwb3NzaWJsZUVuZClcbiAgICAgIGJyZWFrO1xuICAgIHJlc3VsdC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVTdHIgPSBmdW5jdGlvbiBkZWNvZGVTdHIoYnVmZmVyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICB2YXIgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIHZhciBzdHIgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgdmFyIG51bXN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKG51bXN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBudW1zdHI7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2N0c3RyJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIHZhciBwcmludHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzUHJpbnRzdHIocHJpbnRzdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBwcmludHN0cjtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICsgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQgPSBmdW5jdGlvbiBkZWNvZGVPYmppZChidWZmZXIsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIHZhciBpZGVudCA9IDA7XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBzdWJpZGVudCA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBpZGVudCA8PD0gNztcbiAgICBpZGVudCB8PSBzdWJpZGVudCAmIDB4N2Y7XG4gICAgaWYgKChzdWJpZGVudCAmIDB4ODApID09PSAwKSB7XG4gICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50KTtcbiAgICAgIGlkZW50ID0gMDtcbiAgICB9XG4gIH1cbiAgaWYgKHN1YmlkZW50ICYgMHg4MClcbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50KTtcblxuICB2YXIgZmlyc3QgPSAoaWRlbnRpZmllcnNbMF0gLyA0MCkgfCAwO1xuICB2YXIgc2Vjb25kID0gaWRlbnRpZmllcnNbMF0gJSA0MDtcblxuICBpZiAocmVsYXRpdmUpXG4gICAgcmVzdWx0ID0gaWRlbnRpZmllcnM7XG4gIGVsc2VcbiAgICByZXN1bHQgPSBbZmlyc3QsIHNlY29uZF0uY29uY2F0KGlkZW50aWZpZXJzLnNsaWNlKDEpKTtcblxuICBpZiAodmFsdWVzKSB7XG4gICAgdmFyIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignICcpXTtcbiAgICBpZiAodG1wID09PSB1bmRlZmluZWQpXG4gICAgICB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJy4nKV07XG4gICAgaWYgKHRtcCAhPT0gdW5kZWZpbmVkKVxuICAgICAgcmVzdWx0ID0gdG1wO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUaW1lID0gZnVuY3Rpb24gZGVjb2RlVGltZShidWZmZXIsIHRhZykge1xuICB2YXIgc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHZhciB5ZWFyID0gc3RyLnNsaWNlKDAsIDQpIHwgMDtcbiAgICB2YXIgbW9uID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICB2YXIgZGF5ID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgaG91ciA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHZhciBtaW4gPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMiwgMTQpIHwgMDtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHZhciB5ZWFyID0gc3RyLnNsaWNlKDAsIDIpIHwgMDtcbiAgICB2YXIgbW9uID0gc3RyLnNsaWNlKDIsIDQpIHwgMDtcbiAgICB2YXIgZGF5ID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICB2YXIgaG91ciA9IHN0ci5zbGljZSg2LCA4KSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHZhciBzZWMgPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgaWYgKHllYXIgPCA3MClcbiAgICAgIHllYXIgPSAyMDAwICsgeWVhcjtcbiAgICBlbHNlXG4gICAgICB5ZWFyID0gMTkwMCArIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIERhdGUuVVRDKHllYXIsIG1vbiAtIDEsIGRheSwgaG91ciwgbWluLCBzZWMsIDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU51bGwgPSBmdW5jdGlvbiBkZWNvZGVOdWxsKGJ1ZmZlcikge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVCb29sID0gZnVuY3Rpb24gZGVjb2RlQm9vbChidWZmZXIpIHtcbiAgdmFyIHJlcyA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcbiAgZWxzZVxuICAgIHJldHVybiByZXMgIT09IDA7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ1ZmZlciwgdmFsdWVzKSB7XG4gIC8vIEJpZ2ludCwgcmV0dXJuIGFzIGl0IGlzIChhc3N1bWUgYmlnIGVuZGlhbilcbiAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgdmFyIHJlcyA9IG5ldyBiaWdudW0ocmF3KTtcblxuICBpZiAodmFsdWVzKVxuICAgIHJlcyA9IHZhbHVlc1tyZXMudG9TdHJpbmcoMTApXSB8fCByZXM7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldERlY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZGVyRGVjb2RlVGFnKGJ1ZiwgZmFpbCkge1xuICB2YXIgdGFnID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKHRhZykpXG4gICAgcmV0dXJuIHRhZztcblxuICB2YXIgY2xzID0gZGVyLnRhZ0NsYXNzW3RhZyA+PiA2XTtcbiAgdmFyIHByaW1pdGl2ZSA9ICh0YWcgJiAweDIwKSA9PT0gMDtcblxuICAvLyBNdWx0aS1vY3RldCB0YWcgLSBsb2FkXG4gIGlmICgodGFnICYgMHgxZikgPT09IDB4MWYpIHtcbiAgICB2YXIgb2N0ID0gdGFnO1xuICAgIHRhZyA9IDA7XG4gICAgd2hpbGUgKChvY3QgJiAweDgwKSA9PT0gMHg4MCkge1xuICAgICAgb2N0ID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICAgIGlmIChidWYuaXNFcnJvcihvY3QpKVxuICAgICAgICByZXR1cm4gb2N0O1xuXG4gICAgICB0YWcgPDw9IDc7XG4gICAgICB0YWcgfD0gb2N0ICYgMHg3ZjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGFnICY9IDB4MWY7XG4gIH1cbiAgdmFyIHRhZ1N0ciA9IGRlci50YWdbdGFnXTtcblxuICByZXR1cm4ge1xuICAgIGNsczogY2xzLFxuICAgIHByaW1pdGl2ZTogcHJpbWl0aXZlLFxuICAgIHRhZzogdGFnLFxuICAgIHRhZ1N0cjogdGFnU3RyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlckRlY29kZUxlbihidWYsIHByaW1pdGl2ZSwgZmFpbCkge1xuICB2YXIgbGVuID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICAvLyBJbmRlZmluaXRlIGZvcm1cbiAgaWYgKCFwcmltaXRpdmUgJiYgbGVuID09PSAweDgwKVxuICAgIHJldHVybiBudWxsO1xuXG4gIC8vIERlZmluaXRlIGZvcm1cbiAgaWYgKChsZW4gJiAweDgwKSA9PT0gMCkge1xuICAgIC8vIFNob3J0IGZvcm1cbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIHZhciBudW0gPSBsZW4gJiAweDdmO1xuICBpZiAobnVtID4gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICB2YXIgaiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgaWYgKGJ1Zi5pc0Vycm9yKGopKVxuICAgICAgcmV0dXJuIGo7XG4gICAgbGVuIHw9IGo7XG4gIH1cblxuICByZXR1cm4gbGVuO1xufVxuIiwidmFyIGRlY29kZXJzID0gZXhwb3J0cztcblxuZGVjb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmRlY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIERFUkRlY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1EZWNvZGVyKGVudGl0eSkge1xuICBERVJEZWNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1EZWNvZGVyLCBERVJEZWNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRGVjb2RlcjtcblxuUEVNRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGxpbmVzID0gZGF0YS50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyk7XG5cbiAgdmFyIGxhYmVsID0gb3B0aW9ucy5sYWJlbC50b1VwcGVyQ2FzZSgpO1xuXG4gIHZhciByZSA9IC9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztcbiAgdmFyIHN0YXJ0ID0gLTE7XG4gIHZhciBlbmQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtYXRjaCA9IGxpbmVzW2ldLm1hdGNoKHJlKTtcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChtYXRjaFsyXSAhPT0gbGFiZWwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChzdGFydCA9PT0gLTEpIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0JFR0lOJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0VORCcpXG4gICAgICAgIGJyZWFrO1xuICAgICAgZW5kID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAnICsgbGFiZWwpO1xuXG4gIHZhciBiYXNlNjQgPSBsaW5lcy5zbGljZShzdGFydCArIDEsIGVuZCkuam9pbignJyk7XG4gIC8vIFJlbW92ZSBleGNlc3NpdmUgc3ltYm9sc1xuICBiYXNlNjQucmVwbGFjZSgvW15hLXowLTlcXCtcXC89XSsvZ2ksICcnKTtcblxuICB2YXIgaW5wdXQgPSBuZXcgQnVmZmVyKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcywgaW5wdXQsIG9wdGlvbnMpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRW5jb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkVuY29kZXI7XG5cbkRFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpLmpvaW4oKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGUgPSBmdW5jdGlvbiBlbmNvZGVDb21wb3NpdGUodGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkge1xuICB2YXIgZW5jb2RlZFRhZyA9IGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCB0aGlzLnJlcG9ydGVyKTtcblxuICAvLyBTaG9ydCBmb3JtXG4gIGlmIChjb250ZW50Lmxlbmd0aCA8IDB4ODApIHtcbiAgICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigyKTtcbiAgICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICAgIGhlYWRlclsxXSA9IGNvbnRlbnQubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIC8vIENvdW50IG9jdGV0cyByZXF1aXJlZCB0byBzdG9yZSBsZW5ndGhcbiAgdmFyIGxlbk9jdGV0cyA9IDE7XG4gIGZvciAodmFyIGkgPSBjb250ZW50Lmxlbmd0aDsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBsZW5PY3RldHMrKztcblxuICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigxICsgMSArIGxlbk9jdGV0cyk7XG4gIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gIGhlYWRlclsxXSA9IDB4ODAgfCBsZW5PY3RldHM7XG5cbiAgZm9yICh2YXIgaSA9IDEgKyBsZW5PY3RldHMsIGogPSBjb250ZW50Lmxlbmd0aDsgaiA+IDA7IGktLSwgaiA+Pj0gOClcbiAgICBoZWFkZXJbaV0gPSBqICYgMHhmZjtcblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVTdHIgPSBmdW5jdGlvbiBlbmNvZGVTdHIoc3RyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIHN0ci51bnVzZWQgfCAwLCBzdHIuZGF0YSBdKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCAqIDIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidWYud3JpdGVVSW50MTZCRShzdHIuY2hhckNvZGVBdChpKSwgaSAqIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihidWYpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgZGlnaXRzIGFuZCBzcGFjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXN0aW9uIG1hcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVPYmppZCA9IGZ1bmN0aW9uIGVuY29kZU9iamlkKGlkLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignc3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KGlkKSlcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCcpO1xuICAgIGlkID0gdmFsdWVzW2lkXS5zcGxpdCgvW1xcc1xcLl0rL2cpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgaWQgPSBpZC5zbGljZSgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ290OiAnICsgSlNPTi5zdHJpbmdpZnkoaWQpKTtcbiAgfVxuXG4gIGlmICghcmVsYXRpdmUpIHtcbiAgICBpZiAoaWRbMV0gPj0gNDApXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CJyk7XG4gICAgaWQuc3BsaWNlKDAsIDIsIGlkWzBdICogNDAgKyBpZFsxXSk7XG4gIH1cblxuICAvLyBDb3VudCBudW1iZXIgb2Ygb2N0ZXRzXG4gIHZhciBzaXplID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpZGVudCA9IGlkW2ldO1xuICAgIGZvciAoc2l6ZSsrOyBpZGVudCA+PSAweDgwOyBpZGVudCA+Pj0gNylcbiAgICAgIHNpemUrKztcbiAgfVxuXG4gIHZhciBvYmppZCA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIHZhciBvZmZzZXQgPSBvYmppZC5sZW5ndGggLSAxO1xuICBmb3IgKHZhciBpID0gaWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgaWRlbnQgPSBpZFtpXTtcbiAgICBvYmppZFtvZmZzZXQtLV0gPSBpZGVudCAmIDB4N2Y7XG4gICAgd2hpbGUgKChpZGVudCA+Pj0gNykgPiAwKVxuICAgICAgb2JqaWRbb2Zmc2V0LS1dID0gMHg4MCB8IChpZGVudCAmIDB4N2YpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIob2JqaWQpO1xufTtcblxuZnVuY3Rpb24gdHdvKG51bSkge1xuICBpZiAobnVtIDwgMTApXG4gICAgcmV0dXJuICcwJyArIG51bTtcbiAgZWxzZVxuICAgIHJldHVybiBudW07XG59XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVUaW1lID0gZnVuY3Rpb24gZW5jb2RlVGltZSh0aW1lLCB0YWcpIHtcbiAgdmFyIHN0cjtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcblxuICBpZiAodGFnID09PSAnZ2VudGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRGdWxsWWVhcigpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldEZ1bGxZZWFyKCkgJSAxMDApLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nICcgKyB0YWcgKyAnIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoc3RyLCAnb2N0c3RyJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlTnVsbCA9IGZ1bmN0aW9uIGVuY29kZU51bGwoKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCcnKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtLCB2YWx1ZXMpIHtcbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KG51bSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdWYWx1ZXMgbWFwIGRvZXNuXFwndCBjb250YWluOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG51bSkpO1xuICAgIH1cbiAgICBudW0gPSB2YWx1ZXNbbnVtXTtcbiAgfVxuXG4gIC8vIEJpZ251bSwgYXNzdW1lIGJpZyBlbmRpYW5cbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmICFCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIHZhciBudW1BcnJheSA9IG51bS50b0FycmF5KCk7XG4gICAgaWYgKCFudW0uc2lnbiAmJiBudW1BcnJheVswXSAmIDB4ODApIHtcbiAgICAgIG51bUFycmF5LnVuc2hpZnQoMCk7XG4gICAgfVxuICAgIG51bSA9IG5ldyBCdWZmZXIobnVtQXJyYXkpO1xuICB9XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgdmFyIHNpemUgPSBudW0ubGVuZ3RoO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgc2l6ZSsrO1xuXG4gICAgdmFyIG91dCA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gICAgbnVtLmNvcHkob3V0KTtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIG91dFswXSA9IDBcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvdXQpO1xuICB9XG5cbiAgaWYgKG51bSA8IDB4ODApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobnVtKTtcblxuICBpZiAobnVtIDwgMHgxMDApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsIG51bV0pO1xuXG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IG51bTsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBzaXplKys7XG5cbiAgdmFyIG91dCA9IG5ldyBBcnJheShzaXplKTtcbiAgZm9yICh2YXIgaSA9IG91dC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIG91dFtpXSA9IG51bSAmIDB4ZmY7XG4gICAgbnVtID4+PSA4O1xuICB9XG4gIGlmKG91dFswXSAmIDB4ODApIHtcbiAgICBvdXQudW5zaGlmdCgwKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG5ldyBCdWZmZXIob3V0KSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQm9vbCA9IGZ1bmN0aW9uIGVuY29kZUJvb2wodmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodmFsdWUgPyAweGZmIDogMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXRFbmNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3NraXBEZWZhdWx0ID0gZnVuY3Rpb24gc2tpcERlZmF1bHQoZGF0YUJ1ZmZlciwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBpO1xuICBpZiAoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGRhdGEgPSBkYXRhQnVmZmVyLmpvaW4oKTtcbiAgaWYgKHN0YXRlLmRlZmF1bHRCdWZmZXIgPT09IHVuZGVmaW5lZClcbiAgICBzdGF0ZS5kZWZhdWx0QnVmZmVyID0gdGhpcy5fZW5jb2RlVmFsdWUoc3RhdGVbJ2RlZmF1bHQnXSwgcmVwb3J0ZXIsIHBhcmVudCkuam9pbigpO1xuXG4gIGlmIChkYXRhLmxlbmd0aCAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoaT0wOyBpIDwgZGF0YS5sZW5ndGg7IGkrKylcbiAgICBpZiAoZGF0YVtpXSAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlcltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBlbmNvZGVUYWcodGFnLCBwcmltaXRpdmUsIGNscywgcmVwb3J0ZXIpIHtcbiAgdmFyIHJlcztcblxuICBpZiAodGFnID09PSAnc2Vxb2YnKVxuICAgIHRhZyA9ICdzZXEnO1xuICBlbHNlIGlmICh0YWcgPT09ICdzZXRvZicpXG4gICAgdGFnID0gJ3NldCc7XG5cbiAgaWYgKGRlci50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkodGFnKSlcbiAgICByZXMgPSBkZXIudGFnQnlOYW1lW3RhZ107XG4gIGVsc2UgaWYgKHR5cGVvZiB0YWcgPT09ICdudW1iZXInICYmICh0YWcgfCAwKSA9PT0gdGFnKVxuICAgIHJlcyA9IHRhZztcbiAgZWxzZVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5rbm93biB0YWc6ICcgKyB0YWcpO1xuXG4gIGlmIChyZXMgPj0gMHgxZilcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ011bHRpLW9jdGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRlZCcpO1xuXG4gIGlmICghcHJpbWl0aXZlKVxuICAgIHJlcyB8PSAweDIwO1xuXG4gIHJlcyB8PSAoZGVyLnRhZ0NsYXNzQnlOYW1lW2NscyB8fCAndW5pdmVyc2FsJ10gPDwgNik7XG5cbiAgcmV0dXJuIHJlcztcbn1cbiIsInZhciBlbmNvZGVycyA9IGV4cG9ydHM7XG5cbmVuY29kZXJzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5lbmNvZGVycy5wZW0gPSByZXF1aXJlKCcuL3BlbScpO1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIERFUkVuY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1FbmNvZGVyKGVudGl0eSkge1xuICBERVJFbmNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1FbmNvZGVyLCBERVJFbmNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRW5jb2RlcjtcblxuUEVNRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGJ1ZiA9IERFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gIHZhciBwID0gYnVmLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgdmFyIG91dCA9IFsgJy0tLS0tQkVHSU4gJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nIF07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkgKz0gNjQpXG4gICAgb3V0LnB1c2gocC5zbGljZShpLCBpICsgNjQpKTtcbiAgb3V0LnB1c2goJy0tLS0tRU5EICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyk7XG4gIHJldHVybiBvdXQuam9pbignXFxuJyk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb21cIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnblwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3NldFwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2ZcIik7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX2dldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JcIik7XG5cbnZhciBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldE93blByb3BlcnR5RGVzY3JpcHRvcik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIGdldChvYmplY3QsIHByb3BlcnR5LCByZWNlaXZlcikge1xuICBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIHZhciBkZXNjID0gKDAsIF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IyLmRlZmF1bHQpKG9iamVjdCwgcHJvcGVydHkpO1xuXG4gIGlmIChkZXNjID09PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgcGFyZW50ID0gKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkob2JqZWN0KTtcblxuICAgIGlmIChwYXJlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXQocGFyZW50LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykge1xuICAgIHJldHVybiBkZXNjLnZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBnZXR0ZXIgPSBkZXNjLmdldDtcblxuICAgIGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3NldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L3NldC1wcm90b3R5cGUtb2ZcIik7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9jcmVhdGVcIik7XG5cbnZhciBfY3JlYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZSk7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3R5cGVvZlwiKTtcblxudmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyAodHlwZW9mIHN1cGVyQ2xhc3MgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogKDAsIF90eXBlb2YzLmRlZmF1bHQpKHN1cGVyQ2xhc3MpKSk7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSAoMCwgX2NyZWF0ZTIuZGVmYXVsdCkoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCA/ICgwLCBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKFwiLi4vaGVscGVycy90eXBlb2ZcIik7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc2VsZiwgY2FsbCkge1xuICBpZiAoIXNlbGYpIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gY2FsbCAmJiAoKHR5cGVvZiBjYWxsID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShjYWxsKSkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZnJvbSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2FycmF5L2Zyb21cIik7XG5cbnZhciBfZnJvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mcm9tKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMltpXSA9IGFycltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKDAsIF9mcm9tMi5kZWZhdWx0KShhcnIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59OyIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIHBsYWNlSG9sZGVyc0NvdW50IChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpXG4gIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcbiAgLy8gcmVwcmVzZW50IG9uZSBieXRlXG4gIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlc1xuICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG4gIHJldHVybiBiNjRbbGVuIC0gMl0gPT09ICc9JyA/IDIgOiBiNjRbbGVuIC0gMV0gPT09ICc9JyA/IDEgOiAwXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICAvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAgcmV0dXJuIGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVyc0NvdW50KGI2NClcbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFyclxuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuICBwbGFjZUhvbGRlcnMgPSBwbGFjZUhvbGRlcnNDb3VudChiNjQpXG5cbiAgYXJyID0gbmV3IEFycihsZW4gKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlblxuXG4gIHZhciBMID0gMFxuXG4gIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmJyArICdmZXInKS5CdWZmZXI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXggKHN0ciwgc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByIDw8PSA0O1xuXG4gICAgICAvLyAnYScgLSAnZidcbiAgICAgIGlmIChjID49IDQ5ICYmIGMgPD0gNTQpIHtcbiAgICAgICAgciB8PSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJyAtICdGJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3ICYmIGMgPD0gMjIpIHtcbiAgICAgICAgciB8PSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciB8PSBjICYgMHhmO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQpIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICAvLyBTY2FuIDI0LWJpdCBjaHVua3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBudW1iZXJcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gNiwgaiA9IDA7IGkgPj0gc3RhcnQ7IGkgLT0gNikge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgaSwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgLy8gTk9URTogYDB4M2ZmZmZmYCBpcyBpbnRlbnRpb25hbCBoZXJlLCAyNmJpdHMgbWF4IHNoaWZ0ICsgMjRiaXQgaGV4IGxpbWJcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICAgIG9mZiArPSAyNDtcbiAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICBqKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpICsgNiAhPT0gc3RhcnQpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIHN0YXJ0LCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgfVxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbi8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIGlmICh0aGlzLnJhbmQuZ2V0Qnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhuKTtcblxuICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKVxuICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gIHJldHVybiByZXM7XG59O1xuXG5pZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG4gIGlmIChzZWxmLmNyeXB0byAmJiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBNb2Rlcm4gYnJvd3NlcnNcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnIpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9O1xuICB9IGVsc2UgaWYgKHNlbGYubXNDcnlwdG8gJiYgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBJRVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAvLyBTYWZhcmkncyBXZWJXb3JrZXJzIGRvIG5vdCBoYXZlIGBjcnlwdG9gXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBPbGQganVua1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICB9O1xuICB9XG59IGVsc2Uge1xuICAvLyBOb2RlLmpzIG9yIFdlYiB3b3JrZXIgd2l0aCBubyBjcnlwdG8gc3VwcG9ydFxuICB0cnkge1xuICAgIHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKG4pO1xuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuIiwiIiwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJ1JTQS1TSEEyMjQnXSA9IGV4cG9ydHMuc2hhMjI0V2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMjU2J10gPSBleHBvcnRzLnNoYTI1NldpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTI1NicsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCcsICdoZXgnKVxufVxuZXhwb3J0c1snUlNBLVNIQTM4NCddID0gZXhwb3J0cy5zaGEzODRXaXRoUlNBRW5jcnlwdGlvbiA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdzaGEzODQnLFxuICBpZDogbmV3IEJ1ZmZlcignMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1TSEE1MTInXSA9IGV4cG9ydHMuc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMSddID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydlY2RzYS13aXRoLVNIQTEnXSA9IHtcbiAgc2lnbjogJ2VjZHNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignJywgJ2hleCcpXG59XG5cbmV4cG9ydHMuRFNBID0gZXhwb3J0c1snRFNBLVNIQTEnXSA9IGV4cG9ydHNbJ0RTQS1TSEEnXSA9IHtcbiAgc2lnbjogJ2RzYScsXG4gIGhhc2g6ICdzaGExJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTIyNCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjI0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTI1NiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjU2J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjU2JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTM4NCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMzg0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMzg0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTUxMiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBNTEyJ10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVJJUEVNRDE2MCddID0ge1xuICBzaWduOiAnZHNhJyxcbiAgaGFzaDogJ3JtZDE2MCcsXG4gIGlkOiBuZXcgQnVmZmVyKCcnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1SSVBFTUQxNjAnXSA9IGV4cG9ydHMucmlwZW1kMTYwV2l0aFJTQSA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdybWQxNjAnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtTUQ1J10gPSBleHBvcnRzLm1kNVdpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ21kNScsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAnLCAnaGV4Jylcbn1cbiIsInZhciBfYWxnb3MgPSByZXF1aXJlKCcuL2FsZ29zJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3MgPSB7fVxuT2JqZWN0LmtleXMoX2FsZ29zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3Nba2V5XSA9IGFsZ29zW2tleS50b0xvd2VyQ2FzZSgpXSA9IF9hbGdvc1trZXldXG59KVxuXG5mdW5jdGlvbiBTaWduIChhbGdvcml0aG0pIHtcbiAgc3RyZWFtLldyaXRhYmxlLmNhbGwodGhpcylcblxuICB2YXIgZGF0YSA9IGFsZ29zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcbiAgfVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5TaWduLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbk1ldGhvZCAoa2V5LCBlbmMpIHtcbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgdmFyIHNpZyA9IHNpZ24oQnVmZmVyLmNvbmNhdChbdGhpcy5fdGFnLCBoYXNoXSksIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3NbYWxnb3JpdGhtXVxuICBpZiAoIWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuICB9XG5cbiAgdGhpcy5faGFzaCA9IGNyZWF0ZUhhc2goZGF0YS5oYXNoKVxuICB0aGlzLl90YWcgPSBkYXRhLmlkXG4gIHRoaXMuX3NpZ25UeXBlID0gZGF0YS5zaWduXG59XG5pbmhlcml0cyhWZXJpZnksIHN0cmVhbS5Xcml0YWJsZSlcblxuVmVyaWZ5LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcblxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jKVxuICB9XG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSB7XG4gICAgc2lnID0gbmV3IEJ1ZmZlcihzaWcsIGVuYylcbiAgfVxuXG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG5cbiAgcmV0dXJuIHZlcmlmeShzaWcsIEJ1ZmZlci5jb25jYXQoW3RoaXMuX3RhZywgaGFzaF0pLCBrZXksIHRoaXMuX3NpZ25UeXBlKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJzEuMy4xMzIuMC4xMCddID0gJ3NlY3AyNTZrMSdcblxuZXhwb3J0c1snMS4zLjEzMi4wLjMzJ10gPSAncDIyNCdcblxuZXhwb3J0c1snMS4yLjg0MC4xMDA0NS4zLjEuMSddID0gJ3AxOTInXG5cbmV4cG9ydHNbJzEuMi44NDAuMTAwNDUuMy4xLjcnXSA9ICdwMjU2J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzQnXSA9ICdwMzg0J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzUnXSA9ICdwNTIxJ1xuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzJylcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJ2VsbGlwdGljJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gZWxsaXB0aWMuZWNcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcblxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICB9XG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5nZW5LZXlQYWlyKClcblxuICBrZXkuX2ltcG9ydFByaXZhdGUocHJpdi5wcml2YXRlS2V5KVxuICB2YXIgb3V0ID0ga2V5LnNpZ24oaGFzaClcblxuICByZXR1cm4gbmV3IEJ1ZmZlcihvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmICghcy5jbXBuKDApKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkge1xuICAgIHIgPSBbIDAgXS5jb25jYXQocilcbiAgfVxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MCkge1xuICAgIHMgPSBbMF0uY29uY2F0KHMpXG4gIH1cblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgIC51cGRhdGUoeClcbiAgICAudXBkYXRlKGhiaXRzKVxuICAgIC5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaylcbiAgICAudXBkYXRlKHYpXG4gICAgLnVwZGF0ZShuZXcgQnVmZmVyKFsxXSkpXG4gICAgLnVwZGF0ZSh4KVxuICAgIC51cGRhdGUoaGJpdHMpXG4gICAgLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC5kaWdlc3QoKVxuICByZXR1cm4ge1xuICAgIGs6IGssXG4gICAgdjogdlxuICB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkge1xuICAgIGJpdHMuaXNocm4oc2hpZnQpXG4gIH1cbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0LCBrXG5cbiAgZG8ge1xuICAgIHQgPSBuZXcgQnVmZmVyKCcnKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspXG4gICAgICAgIC51cGRhdGUoa3YudilcbiAgICAgICAgLmRpZ2VzdCgpXG4gICAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwga3Yudl0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgICAgLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC5kaWdlc3QoKVxuICB9IHdoaWxlIChrLmNtcChxKSAhPT0gLTEpXG5cbiAgcmV0dXJuIGtcbn1cblxuZnVuY3Rpb24gbWFrZVIgKGcsIGssIHAsIHEpIHtcbiAgcmV0dXJuIGcudG9SZWQoQk4ubW9udChwKSkucmVkUG93KGspLmZyb21SZWQoKS5tb2QocSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaWduXG5tb2R1bGUuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXlcbm1vZHVsZS5leHBvcnRzLm1ha2VLZXkgPSBtYWtlS2V5XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMnKVxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSBlbGxpcHRpYy5lY1xuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSkge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDEgXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gbmV3IEJ1ZmZlcihwYWQpXG4gIHZhciByZWQgPSBCTi5tb250KHB1Yi5tb2R1bHVzKVxuICBzaWcgPSBuZXcgQk4oc2lnKS50b1JlZChyZWQpXG5cbiAgc2lnID0gc2lnLnJlZFBvdyhuZXcgQk4ocHViLnB1YmxpY0V4cG9uZW50KSlcblxuICBzaWcgPSBuZXcgQnVmZmVyKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gMFxuICBpZiAocGFkTnVtIDwgOCkge1xuICAgIG91dCA9IDFcbiAgfVxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkge1xuICAgIG91dCA9IDFcbiAgfVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0IHw9IChzaWdbaV0gXiBwYWRbaV0pXG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bChcbiAgICAgIHkudG9SZWQobW9udHApXG4gICAgICAgIC5yZWRQb3coci5tdWwodykubW9kKHEpKVxuICAgICAgICAuZnJvbVJlZCgpXG4gICkubW9kKHApLm1vZChxKVxuICByZXR1cm4gIXYuY21wKHIpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIH1cbiAgaWYgKGIuY21wKHEpID49IHEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJyk7XG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlcjtcbnZhciBTbG93QnVmZmVyID0gYnVmZmVyLlNsb3dCdWZmZXI7XG52YXIgTUFYX0xFTiA9IGJ1ZmZlci5rTWF4TGVuZ3RoIHx8IDIxNDc0ODM2NDc7XG5leHBvcnRzLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICB2YXIgZW5jID0gZW5jb2Rpbmc7XG4gIHZhciBfZmlsbCA9IGZpbGw7XG4gIGlmIChfZmlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jID0gdW5kZWZpbmVkO1xuICAgIF9maWxsID0gMDtcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgaWYgKHR5cGVvZiBfZmlsbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgZmlsbEJ1ZiA9IG5ldyBCdWZmZXIoX2ZpbGwsIGVuYyk7XG4gICAgdmFyIGZsZW4gPSBmaWxsQnVmLmxlbmd0aDtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBzaXplKSB7XG4gICAgICBidWZbaV0gPSBmaWxsQnVmW2kgJSBmbGVuXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoX2ZpbGwpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gYWxsb2NVbnNhZmUoc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplID4gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgQnVmZmVyKHNpemUpO1xufVxuZXhwb3J0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmZyb20gPT09ICdmdW5jdGlvbicgJiYgKCFnbG9iYWwuVWludDhBcnJheSB8fCBVaW50OEFycmF5LmZyb20gIT09IEJ1ZmZlci5mcm9tKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gZW5jb2RpbmdPck9mZnNldDtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHZhciBsZW4gPSBsZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAob2Zmc2V0ID49IHZhbHVlLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICBpZiAobGVuID4gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuKSk7XG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO1xuICAgIHZhbHVlLmNvcHkob3V0LCAwLCAwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8ICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCAnICsgJ0FycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJyk7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+PSBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHNpemUpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbmV4cG9ydHMua01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgYXJyLl9fcHJvdG9fXyA9IHtfX3Byb3RvX186IFVpbnQ4QXJyYXkucHJvdG90eXBlLCBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH19XG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgdHlwZW9mIGFyci5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJyAmJiAvLyBjaHJvbWUgOS0xMCBsYWNrIGBzdWJhcnJheWBcbiAgICAgICAgYXJyLnN1YmFycmF5KDEsIDEpLmJ5dGVMZW5ndGggPT09IDAgLy8gaWUxMCBoYXMgYnJva2VuIGBzdWJhcnJheWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGtNYXhMZW5ndGggKCkge1xuICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgICA/IDB4N2ZmZmZmZmZcbiAgICA6IDB4M2ZmZmZmZmZcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyICh0aGF0LCBsZW5ndGgpIHtcbiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCcpXG4gIH1cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgaWYgKHRoYXQgPT09IG51bGwpIHtcbiAgICAgIHRoYXQgPSBuZXcgQnVmZmVyKGxlbmd0aClcbiAgICB9XG4gICAgdGhhdC5sZW5ndGggPSBsZW5ndGhcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iaikpIHtcbiAgICB2YXIgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbilcblxuICAgIGlmICh0aGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoYXRcbiAgICB9XG5cbiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIHRoYXRcbiAgfVxuXG4gIGlmIChvYmopIHtcbiAgICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgb2JqLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgaXNuYW4ob2JqLmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCAwKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqKVxuICAgIH1cblxuICAgIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iai5kYXRhKVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwga01heExlbmd0aCgpYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpXG59XG5cbkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICAgIH1cbiAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSAnJyArIHN0cmluZ1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCBhbmQgYGlzLWJ1ZmZlcmAgKGluIFNhZmFyaSA1LTcpIHRvIGRldGVjdFxuLy8gQnVmZmVyIGluc3RhbmNlcy5cbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQxNiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCAyKTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSAmICgweGZmIDw8ICg4ICogKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkpKSkgPj4+XG4gICAgICAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSAqIDhcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQzMiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgNCk7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgPj4+IChsaXR0bGVFbmRpYW4gPyBpIDogMyAtIGkpICogOCkgJiAweGZmXG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gMFxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG4gIHZhciBpXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yIChpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2UgaWYgKGxlbiA8IDEwMDAgfHwgIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gYXNjZW5kaW5nIGNvcHkgZnJvbSBzdGFydFxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoY29kZSA8IDI1Nikge1xuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgdmFyIGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogdXRmOFRvQnl0ZXMobmV3IEJ1ZmZlcih2YWwsIGVuY29kaW5nKS50b1N0cmluZygpKVxuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiBpc25hbiAodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IHZhbCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuIiwidmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyQmFzZVxuaW5oZXJpdHMoQ2lwaGVyQmFzZSwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gQ2lwaGVyQmFzZSAoaGFzaE1vZGUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5oYXNoTW9kZSA9IHR5cGVvZiBoYXNoTW9kZSA9PT0gJ3N0cmluZydcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICB0aGlzW2hhc2hNb2RlXSA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpbmFsID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9XG4gIHRoaXMuX2RlY29kZXIgPSBudWxsXG4gIHRoaXMuX2VuY29kaW5nID0gbnVsbFxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGlucHV0RW5jKVxuICB9XG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYylcbiAgfVxuICByZXR1cm4gb3V0RGF0YVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZyA9IGZ1bmN0aW9uICgpIHt9XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5fdXBkYXRlKGRhdGEpKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfSBmaW5hbGx5IHtcbiAgICBuZXh0KGVycilcbiAgfVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLl9maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIGRvbmUoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9maW5hbCgpIHx8IG5ldyBCdWZmZXIoJycpXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jLCB0cnVlKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90b1N0cmluZyA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jLCBmaW4pIHtcbiAgaWYgKCF0aGlzLl9kZWNvZGVyKSB7XG4gICAgdGhpcy5fZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYylcbiAgICB0aGlzLl9lbmNvZGluZyA9IGVuY1xuICB9XG4gIGlmICh0aGlzLl9lbmNvZGluZyAhPT0gZW5jKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5cXCd0IHN3aXRjaCBlbmNvZGluZ3MnKVxuICB9XG4gIHZhciBvdXQgPSB0aGlzLl9kZWNvZGVyLndyaXRlKHZhbHVlKVxuICBpZiAoZmluKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmZyb207IiwidmFyIGNvcmUgID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpXG4gICwgJEpTT04gPSBjb3JlLkpTT04gfHwgKGNvcmUuSlNPTiA9IHtzdHJpbmdpZnk6IEpTT04uc3RyaW5naWZ5fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCl7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuICRKU09OLnN0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJndW1lbnRzKTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlJyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKXtcbiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpO1xufTsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2Mpe1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSl7XG4gIHJldHVybiAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmtleXM7IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5zZXRQcm90b3R5cGVPZjsiLCJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTsiLCJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc2V0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5zZXQudG8tanNvbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuU2V0OyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sOyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICBpZih0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpe1xuICBpZighKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSl7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59OyIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59OyIsInZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXIsIElURVJBVE9SKXtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3JPZihpdGVyLCBmYWxzZSwgcmVzdWx0LnB1c2gsIHJlc3VsdCwgSVRFUkFUT1IpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgdG9MZW5ndGggID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCB0b0luZGV4ICAgPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihJU19JTkNMVURFUyl7XG4gIHJldHVybiBmdW5jdGlvbigkdGhpcywgZWwsIGZyb21JbmRleCl7XG4gICAgdmFyIE8gICAgICA9IHRvSU9iamVjdCgkdGhpcylcbiAgICAgICwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpXG4gICAgICAsIGluZGV4ICA9IHRvSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpXG4gICAgICAsIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICBpZihJU19JTkNMVURFUyAmJiBlbCAhPSBlbCl3aGlsZShsZW5ndGggPiBpbmRleCl7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICBpZih2YWx1ZSAhPSB2YWx1ZSlyZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSN0b0luZGV4IGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvcig7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspaWYoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTyl7XG4gICAgICBpZihPW2luZGV4XSA9PT0gZWwpcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTsiLCIvLyAwIC0+IEFycmF5I2ZvckVhY2hcbi8vIDEgLT4gQXJyYXkjbWFwXG4vLyAyIC0+IEFycmF5I2ZpbHRlclxuLy8gMyAtPiBBcnJheSNzb21lXG4vLyA0IC0+IEFycmF5I2V2ZXJ5XG4vLyA1IC0+IEFycmF5I2ZpbmRcbi8vIDYgLT4gQXJyYXkjZmluZEluZGV4XG52YXIgY3R4ICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIElPYmplY3QgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCBhc2MgICAgICA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRZUEUsICRjcmVhdGUpe1xuICB2YXIgSVNfTUFQICAgICAgICA9IFRZUEUgPT0gMVxuICAgICwgSVNfRklMVEVSICAgICA9IFRZUEUgPT0gMlxuICAgICwgSVNfU09NRSAgICAgICA9IFRZUEUgPT0gM1xuICAgICwgSVNfRVZFUlkgICAgICA9IFRZUEUgPT0gNFxuICAgICwgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNlxuICAgICwgTk9fSE9MRVMgICAgICA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYXG4gICAgLCBjcmVhdGUgICAgICAgID0gJGNyZWF0ZSB8fCBhc2M7XG4gIHJldHVybiBmdW5jdGlvbigkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCl7XG4gICAgdmFyIE8gICAgICA9IHRvT2JqZWN0KCR0aGlzKVxuICAgICAgLCBzZWxmICAgPSBJT2JqZWN0KE8pXG4gICAgICAsIGYgICAgICA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKVxuICAgICAgLCBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aClcbiAgICAgICwgaW5kZXggID0gMFxuICAgICAgLCByZXN1bHQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkXG4gICAgICAsIHZhbCwgcmVzO1xuICAgIGZvcig7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspaWYoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZil7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZihUWVBFKXtcbiAgICAgICAgaWYoSVNfTUFQKXJlc3VsdFtpbmRleF0gPSByZXM7ICAgICAgICAgICAgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYocmVzKXN3aXRjaChUWVBFKXtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbDsgICAgICAgICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcmVzdWx0LnB1c2godmFsKTsgICAgICAgICAgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmKElTX0VWRVJZKXJldHVybiBmYWxzZTsgICAgICAgICAgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07IiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBpc0FycmF5ICA9IHJlcXVpcmUoJy4vX2lzLWFycmF5JylcbiAgLCBTUEVDSUVTICA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3JpZ2luYWwpe1xuICB2YXIgQztcbiAgaWYoaXNBcnJheShvcmlnaW5hbCkpe1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSlDID0gdW5kZWZpbmVkO1xuICAgIGlmKGlzT2JqZWN0KEMpKXtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYoQyA9PT0gbnVsbClDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTsiLCIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9yaWdpbmFsLCBsZW5ndGgpe1xuICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWwpKShsZW5ndGgpO1xufTsiLCIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpXG4gICwgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJylcbiAgLy8gRVMzIHdyb25nIGhlcmVcbiAgLCBBUkcgPSBjb2YoZnVuY3Rpb24oKXsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbihpdCwga2V5KXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59OyIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGNyZWF0ZSAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKVxuICAsIGN0eCAgICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgLCBhbkluc3RhbmNlICA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJylcbiAgLCBkZWZpbmVkICAgICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKVxuICAsIGZvck9mICAgICAgID0gcmVxdWlyZSgnLi9fZm9yLW9mJylcbiAgLCAkaXRlckRlZmluZSA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJylcbiAgLCBzdGVwICAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpXG4gICwgc2V0U3BlY2llcyAgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpXG4gICwgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpXG4gICwgZmFzdEtleSAgICAgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleVxuICAsIFNJWkUgICAgICAgID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbih0aGF0LCBrZXkpe1xuICAvLyBmYXN0IGNhc2VcbiAgdmFyIGluZGV4ID0gZmFzdEtleShrZXkpLCBlbnRyeTtcbiAgaWYoaW5kZXggIT09ICdGJylyZXR1cm4gdGhhdC5faVtpbmRleF07XG4gIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuICBmb3IoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKXtcbiAgICBpZihlbnRyeS5rID09IGtleSlyZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24od3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUil7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRoYXQsIGl0ZXJhYmxlKXtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgfSk7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgLy8gMjMuMi4zLjIgU2V0LnByb3RvdHlwZS5jbGVhcigpXG4gICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKXtcbiAgICAgICAgZm9yKHZhciB0aGF0ID0gdGhpcywgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubil7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYoZW50cnkucCllbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuICAgICAgICB9XG4gICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGF0W1NJWkVdID0gMDtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG4gICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbihrZXkpe1xuICAgICAgICB2YXIgdGhhdCAgPSB0aGlzXG4gICAgICAgICAgLCBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgICAgIGlmKGVudHJ5KXtcbiAgICAgICAgICB2YXIgbmV4dCA9IGVudHJ5Lm5cbiAgICAgICAgICAgICwgcHJldiA9IGVudHJ5LnA7XG4gICAgICAgICAgZGVsZXRlIHRoYXQuX2lbZW50cnkuaV07XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYocHJldilwcmV2Lm4gPSBuZXh0O1xuICAgICAgICAgIGlmKG5leHQpbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZih0aGF0Ll9mID09IGVudHJ5KXRoYXQuX2YgPSBuZXh0O1xuICAgICAgICAgIGlmKHRoYXQuX2wgPT0gZW50cnkpdGhhdC5fbCA9IHByZXY7XG4gICAgICAgICAgdGhhdFtTSVpFXS0tO1xuICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgLy8gMjMuMS4zLjUgTWFwLnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyosIHRoYXQgPSB1bmRlZmluZWQgKi8pe1xuICAgICAgICBhbkluc3RhbmNlKHRoaXMsIEMsICdmb3JFYWNoJyk7XG4gICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKVxuICAgICAgICAgICwgZW50cnk7XG4gICAgICAgIHdoaWxlKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZil7XG4gICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTtcbiAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgICAgICB3aGlsZShlbnRyeSAmJiBlbnRyeS5yKWVudHJ5ID0gZW50cnkucDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjIuMy43IFNldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcbiAgICAgICAgcmV0dXJuICEhZ2V0RW50cnkodGhpcywga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZihERVNDUklQVE9SUylkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiBkZWZpbmVkKHRoaXNbU0laRV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDO1xuICB9LFxuICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSlcbiAgICAgICwgcHJldiwgaW5kZXg7XG4gICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG4gICAgaWYoZW50cnkpe1xuICAgICAgZW50cnkudiA9IHZhbHVlO1xuICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhhdC5fbCA9IGVudHJ5ID0ge1xuICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcbiAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcbiAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG4gICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG4gICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkXG4gICAgICB9O1xuICAgICAgaWYoIXRoYXQuX2YpdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYocHJldilwcmV2Lm4gPSBlbnRyeTtcbiAgICAgIHRoYXRbU0laRV0rKztcbiAgICAgIC8vIGFkZCB0byBpbmRleFxuICAgICAgaWYoaW5kZXggIT09ICdGJyl0aGF0Ll9pW2luZGV4XSA9IGVudHJ5O1xuICAgIH0gcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIGdldEVudHJ5OiBnZXRFbnRyeSxcbiAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbihpdGVyYXRlZCwga2luZCl7XG4gICAgICB0aGlzLl90ID0gaXRlcmF0ZWQ7ICAvLyB0YXJnZXRcbiAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcbiAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7IC8vIHByZXZpb3VzXG4gICAgfSwgZnVuY3Rpb24oKXtcbiAgICAgIHZhciB0aGF0ICA9IHRoaXNcbiAgICAgICAgLCBraW5kICA9IHRoYXQuX2tcbiAgICAgICAgLCBlbnRyeSA9IHRoYXQuX2w7XG4gICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuICAgICAgICB0aGF0Ll90ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gc3RlcCgxKTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiBzdGVwIGJ5IGtpbmRcbiAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG4gICAgICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuICAgICAgcmV0dXJuIHN0ZXAoMCwgW2VudHJ5LmssIGVudHJ5LnZdKTtcbiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59OyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpXG4gICwgZnJvbSAgICA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG4gIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKXtcbiAgICBpZihjbGFzc29mKHRoaXMpICE9IE5BTUUpdGhyb3cgVHlwZUVycm9yKE5BTUUgKyBcIiN0b0pTT04gaXNuJ3QgZ2VuZXJpY1wiKTtcbiAgICByZXR1cm4gZnJvbSh0aGlzKTtcbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCAgICAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCAkZXhwb3J0ICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgbWV0YSAgICAgICAgICAgPSByZXF1aXJlKCcuL19tZXRhJylcbiAgLCBmYWlscyAgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBoaWRlICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIHJlZGVmaW5lQWxsICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJylcbiAgLCBmb3JPZiAgICAgICAgICA9IHJlcXVpcmUoJy4vX2Zvci1vZicpXG4gICwgYW5JbnN0YW5jZSAgICAgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpXG4gICwgaXNPYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKVxuICAsIGRQICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGVhY2ggICAgICAgICAgID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApXG4gICwgREVTQ1JJUFRPUlMgICAgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcbiAgdmFyIEJhc2UgID0gZ2xvYmFsW05BTUVdXG4gICAgLCBDICAgICA9IEJhc2VcbiAgICAsIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJ1xuICAgICwgcHJvdG8gPSBDICYmIEMucHJvdG90eXBlXG4gICAgLCBPICAgICA9IHt9O1xuICBpZighREVTQ1JJUFRPUlMgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24oKXtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSl7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUsICdfYycpO1xuICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG4gICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGFyZ2V0W0FEREVSXSwgdGFyZ2V0KTtcbiAgICB9KTtcbiAgICBlYWNoKCdhZGQsY2xlYXIsZGVsZXRlLGZvckVhY2gsZ2V0LGhhcyxzZXQsa2V5cyx2YWx1ZXMsZW50cmllcyx0b0pTT04nLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcbiAgICAgIHZhciBJU19BRERFUiA9IEtFWSA9PSAnYWRkJyB8fCBLRVkgPT0gJ3NldCc7XG4gICAgICBpZihLRVkgaW4gcHJvdG8gJiYgIShJU19XRUFLICYmIEtFWSA9PSAnY2xlYXInKSloaWRlKEMucHJvdG90eXBlLCBLRVksIGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgICBhbkluc3RhbmNlKHRoaXMsIEMsIEtFWSk7XG4gICAgICAgIGlmKCFJU19BRERFUiAmJiBJU19XRUFLICYmICFpc09iamVjdChhKSlyZXR1cm4gS0VZID09ICdnZXQnID8gdW5kZWZpbmVkIDogZmFsc2U7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9jW0tFWV0oYSA9PT0gMCA/IDAgOiBhLCBiKTtcbiAgICAgICAgcmV0dXJuIElTX0FEREVSID8gdGhpcyA6IHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmKCdzaXplJyBpbiBwcm90bylkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRUb1N0cmluZ1RhZyhDLCBOQU1FKTtcblxuICBPW05BTUVdID0gQztcbiAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYsIE8pO1xuXG4gIGlmKCFJU19XRUFLKWNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07IiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMi40LjAnfTtcbmlmKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIGNyZWF0ZURlc2MgICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIGluZGV4LCB2YWx1ZSl7XG4gIGlmKGluZGV4IGluIG9iamVjdCkkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7XG4gIGVsc2Ugb2JqZWN0W2luZGV4XSA9IHZhbHVlO1xufTsiLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0LCBsZW5ndGgpe1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZih0aGF0ID09PSB1bmRlZmluZWQpcmV0dXJuIGZuO1xuICBzd2l0Y2gobGVuZ3RoKXtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59OyIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoaXQgPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTsiLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIDc7IH19KS5hICE9IDc7XG59KTsiLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnRcbiAgLy8gaW4gb2xkIElFIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnXG4gICwgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07IiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7IiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKVxuICAsIGdPUFMgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpXG4gICwgcElFICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICB2YXIgcmVzdWx0ICAgICA9IGdldEtleXMoaXQpXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZihnZXRTeW1ib2xzKXtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpXG4gICAgICAsIGlzRW51bSAgPSBwSUUuZlxuICAgICAgLCBpICAgICAgID0gMFxuICAgICAgLCBrZXk7XG4gICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKXJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgID0gcmVxdWlyZSgnLi9fY29yZScpXG4gICwgY3R4ICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgLCBoaWRlICAgICAgPSByZXF1aXJlKCcuL19oaWRlJylcbiAgLCBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbih0eXBlLCBuYW1lLCBzb3VyY2Upe1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRlxuICAgICwgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuR1xuICAgICwgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuU1xuICAgICwgSVNfUFJPVE8gID0gdHlwZSAmICRleHBvcnQuUFxuICAgICwgSVNfQklORCAgID0gdHlwZSAmICRleHBvcnQuQlxuICAgICwgSVNfV1JBUCAgID0gdHlwZSAmICRleHBvcnQuV1xuICAgICwgZXhwb3J0cyAgID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSlcbiAgICAsIGV4cFByb3RvICA9IGV4cG9ydHNbUFJPVE9UWVBFXVxuICAgICwgdGFyZ2V0ICAgID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXVxuICAgICwga2V5LCBvd24sIG91dDtcbiAgaWYoSVNfR0xPQkFMKXNvdXJjZSA9IG5hbWU7XG4gIGZvcihrZXkgaW4gc291cmNlKXtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmKG93biAmJiBrZXkgaW4gZXhwb3J0cyljb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uKEMpe1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbihhLCBiLCBjKXtcbiAgICAgICAgaWYodGhpcyBpbnN0YW5jZW9mIEMpe1xuICAgICAgICAgIHN3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZihJU19QUk9UTyl7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSloaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YCBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaChlKXtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTsiLCJ2YXIgY3R4ICAgICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIGNhbGwgICAgICAgID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJylcbiAgLCBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKVxuICAsIGFuT2JqZWN0ICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b0xlbmd0aCAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgZ2V0SXRlckZuICAgPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpXG4gICwgQlJFQUsgICAgICAgPSB7fVxuICAsIFJFVFVSTiAgICAgID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUil7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSlcbiAgICAsIGYgICAgICA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKVxuICAgICwgaW5kZXggID0gMFxuICAgICwgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZihpc0FycmF5SXRlcihpdGVyRm4pKWZvcihsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyApe1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07IiwidmFyIGRQICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OyIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xufSk7IiwiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCBhcmdzLCB0aGF0KXtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2goYXJncy5sZW5ndGgpe1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiAgICAgICAgICAgICAgZm4uYXBwbHkodGhhdCwgYXJncyk7XG59OyIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59OyIsIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCBJVEVSQVRPUiAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJylcbiAgLCBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07IiwiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZyl7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07IiwiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpe1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2goZSl7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZihyZXQgIT09IHVuZGVmaW5lZClhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgZGVzY3JpcHRvciAgICAgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJylcbiAgLCBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJylcbiAgLCBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KXtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7bmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KX0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgICAgICAgID0gcmVxdWlyZSgnLi9fbGlicmFyeScpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHJlZGVmaW5lICAgICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKVxuICAsIGhpZGUgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICwgaGFzICAgICAgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIEl0ZXJhdG9ycyAgICAgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCAkaXRlckNyZWF0ZSAgICA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJylcbiAgLCBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJylcbiAgLCBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKVxuICAsIElURVJBVE9SICAgICAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJylcbiAgLCBCVUdHWSAgICAgICAgICA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKSAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gICwgRkZfSVRFUkFUT1IgICAgPSAnQEBpdGVyYXRvcidcbiAgLCBLRVlTICAgICAgICAgICA9ICdrZXlzJ1xuICAsIFZBTFVFUyAgICAgICAgID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKXtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24oa2luZCl7XG4gICAgaWYoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaChraW5kKXtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHICAgICAgICA9IE5BTUUgKyAnIEl0ZXJhdG9yJ1xuICAgICwgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTXG4gICAgLCBWQUxVRVNfQlVHID0gZmFsc2VcbiAgICAsIHByb3RvICAgICAgPSBCYXNlLnByb3RvdHlwZVxuICAgICwgJG5hdGl2ZSAgICA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXVxuICAgICwgJGRlZmF1bHQgICA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpXG4gICAgLCAkZW50cmllcyAgID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZFxuICAgICwgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmVcbiAgICAsIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYoJGFueU5hdGl2ZSl7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UpKTtcbiAgICBpZihJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSl7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYoIUxJQlJBUlkgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKWhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZihERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpe1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKXtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddICA9IHJldHVyblRoaXM7XG4gIGlmKERFRkFVTFQpe1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6ICBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZihGT1JDRUQpZm9yKGtleSBpbiBtZXRob2RzKXtcbiAgICAgIGlmKCEoa2V5IGluIHByb3RvKSlyZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59OyIsInZhciBJVEVSQVRPUiAgICAgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKVxuICAsIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uKCl7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uKCl7IHRocm93IDI7IH0pO1xufSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMsIHNraXBDbG9zaW5nKXtcbiAgaWYoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgID0gWzddXG4gICAgICAsIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIHtkb25lOiBzYWZlID0gdHJ1ZX07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkb25lLCB2YWx1ZSl7XG4gIHJldHVybiB7dmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmV9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHt9OyIsInZhciBnZXRLZXlzICAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpXG4gICwgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIGVsKXtcbiAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG4gICAgLCBrZXlzICAgPSBnZXRLZXlzKE8pXG4gICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuICAgICwgaW5kZXggID0gMFxuICAgICwga2V5O1xuICB3aGlsZShsZW5ndGggPiBpbmRleClpZihPW2tleSA9IGtleXNbaW5kZXgrK11dID09PSBlbClyZXR1cm4ga2V5O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHRydWU7IiwidmFyIE1FVEEgICAgID0gcmVxdWlyZSgnLi9fdWlkJykoJ21ldGEnKVxuICAsIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBoYXMgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgc2V0RGVzYyAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mXG4gICwgaWQgICAgICAgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIEZSRUVaRSA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24oaXQpe1xuICBzZXREZXNjKGl0LCBNRVRBLCB7dmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9fSk7XG59O1xudmFyIGZhc3RLZXkgPSBmdW5jdGlvbihpdCwgY3JlYXRlKXtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZighaXNPYmplY3QoaXQpKXJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmKCFoYXMoaXQsIE1FVEEpKXtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZighY3JlYXRlKXJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG4gIGlmKCFoYXMoaXQsIE1FVEEpKXtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYoIWNyZWF0ZSlyZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIGhhc2ggd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQV0udztcbn07XG4vLyBhZGQgbWV0YWRhdGEgb24gZnJlZXplLWZhbWlseSBtZXRob2RzIGNhbGxpbmdcbnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoRlJFRVpFICYmIG1ldGEuTkVFRCAmJiBpc0V4dGVuc2libGUoaXQpICYmICFoYXMoaXQsIE1FVEEpKXNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiAgICAgIE1FVEEsXG4gIE5FRUQ6ICAgICBmYWxzZSxcbiAgZmFzdEtleTogIGZhc3RLZXksXG4gIGdldFdlYWs6ICBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07IiwidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldFxuICAsIE9ic2VydmVyICA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyXG4gICwgcHJvY2VzcyAgID0gZ2xvYmFsLnByb2Nlc3NcbiAgLCBQcm9taXNlICAgPSBnbG9iYWwuUHJvbWlzZVxuICAsIGlzTm9kZSAgICA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpe1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZShoZWFkKXtcbiAgICAgIGZuICAgPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoKGUpe1xuICAgICAgICBpZihoZWFkKW5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmKHBhcmVudClwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmKGlzTm9kZSl7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlclxuICB9IGVsc2UgaWYoT2JzZXJ2ZXIpe1xuICAgIHZhciB0b2dnbGUgPSB0cnVlXG4gICAgICAsIG5vZGUgICA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbigpe1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpe1xuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGZuKXtcbiAgICB2YXIgdGFzayA9IHtmbjogZm4sIG5leHQ6IHVuZGVmaW5lZH07XG4gICAgaWYobGFzdClsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmKCFoZWFkKXtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKVxuICAsIGdPUFMgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKVxuICAsIHBJRSAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIElPYmplY3QgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgJGFzc2lnbiAgPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICB2YXIgQSA9IHt9XG4gICAgLCBCID0ge31cbiAgICAsIFMgPSBTeW1ib2woKVxuICAgICwgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUICAgICA9IHRvT2JqZWN0KHRhcmdldClcbiAgICAsIGFMZW4gID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICwgaW5kZXggPSAxXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mXG4gICAgLCBpc0VudW0gICAgID0gcElFLmY7XG4gIHdoaWxlKGFMZW4gPiBpbmRleCl7XG4gICAgdmFyIFMgICAgICA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKVxuICAgICAgLCBrZXlzICAgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpXG4gICAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgICAsIGogICAgICA9IDBcbiAgICAgICwga2V5O1xuICAgIHdoaWxlKGxlbmd0aCA+IGopaWYoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSlUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjsiLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgZFBzICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJylcbiAgLCBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKVxuICAsIElFX1BST1RPICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpXG4gICwgRW1wdHkgICAgICAgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9XG4gICwgUFJPVE9UWVBFICAgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbigpe1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKVxuICAgICwgaSAgICAgID0gZW51bUJ1Z0tleXMubGVuZ3RoXG4gICAgLCBsdCAgICAgPSAnPCdcbiAgICAsIGd0ICAgICA9ICc+J1xuICAgICwgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUoaS0tKWRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKXtcbiAgdmFyIHJlc3VsdDtcbiAgaWYoTyAhPT0gbnVsbCl7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBkUCAgICAgICAgICAgICA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpe1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYoSUU4X0RPTV9ERUZJTkUpdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cbiAgaWYoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKXRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmKCd2YWx1ZScgaW4gQXR0cmlidXRlcylPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59OyIsInZhciBkUCAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICwgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGdldEtleXMgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpe1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgICA9IGdldEtleXMoUHJvcGVydGllcylcbiAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgLCBpID0gMFxuICAgICwgUDtcbiAgd2hpbGUobGVuZ3RoID4gaSlkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07IiwidmFyIHBJRSAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpXG4gICwgY3JlYXRlRGVzYyAgICAgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJylcbiAgLCB0b0lPYmplY3QgICAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBoYXMgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpXG4gICwgZ09QRCAgICAgICAgICAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QRCA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKXtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZihJRThfRE9NX0RFRklORSl0cnkge1xuICAgIHJldHVybiBnT1BEKE8sIFApO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG4gIGlmKGhhcyhPLCBQKSlyZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59OyIsIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0JylcbiAgLCBnT1BOICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmZcbiAgLCB0b1N0cmluZyAgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uKGl0KXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2goZSl7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG4iLCIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJylcbiAgLCBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pe1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59OyIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7IiwiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgdG9PYmplY3QgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIElFX1BST1RPICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpXG4gICwgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihPKXtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZihoYXMoTywgSUVfUFJPVE8pKXJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcil7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTsiLCJ2YXIgaGFzICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCB0b0lPYmplY3QgICAgPSByZXF1aXJlKCcuL190by1pb2JqZWN0JylcbiAgLCBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKVxuICAsIElFX1BST1RPICAgICA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIG5hbWVzKXtcbiAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwga2V5O1xuICBmb3Ioa2V5IGluIE8paWYoa2V5ICE9IElFX1BST1RPKWhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZihoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpe1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07IiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpXG4gICwgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKXtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07IiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7IiwiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgY29yZSAgICA9IHJlcXVpcmUoJy4vX2NvcmUnKVxuICAsIGZhaWxzICAgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihLRVksIGV4ZWMpe1xuICB2YXIgZm4gID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldXG4gICAgLCBleHAgPSB7fTtcbiAgZXhwW0tFWV0gPSBleGVjKGZuKTtcbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcCwgdmFsdWUpe1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGUgIDogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGUgICAgOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlICAgICAgIDogdmFsdWVcbiAgfTtcbn07IiwidmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHRhcmdldCwgc3JjLCBzYWZlKXtcbiAgZm9yKHZhciBrZXkgaW4gc3JjKXtcbiAgICBpZihzYWZlICYmIHRhcmdldFtrZXldKXRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgZWxzZSBoaWRlKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH0gcmV0dXJuIHRhcmdldDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7IiwiLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24oTywgcHJvdG8pe1xuICBhbk9iamVjdChPKTtcbiAgaWYoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCl0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbih0ZXN0LCBidWdneSwgc2V0KXtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoKGUpeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90byl7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYoYnVnZ3kpTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgICAgPSByZXF1aXJlKCcuL19jb3JlJylcbiAgLCBkUCAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICwgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpXG4gICwgU1BFQ0lFUyAgICAgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSl7XG4gIHZhciBDID0gdHlwZW9mIGNvcmVbS0VZXSA9PSAnZnVuY3Rpb24nID8gY29yZVtLRVldIDogZ2xvYmFsW0tFWV07XG4gIGlmKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59OyIsInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mXG4gICwgaGFzID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgdGFnLCBzdGF0KXtcbiAgaWYoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSlkZWYoaXQsIFRBRywge2NvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZ30pO1xufTsiLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKVxuICAsIHVpZCAgICA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTsiLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJ1xuICAsIHN0b3JlICA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG59OyIsIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgU1BFQ0lFUyAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTywgRCl7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3IsIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07IiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKVxuICAsIGRlZmluZWQgICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRPX1NUUklORyl7XG4gIHJldHVybiBmdW5jdGlvbih0aGF0LCBwb3Mpe1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpXG4gICAgICAsIGkgPSB0b0ludGVnZXIocG9zKVxuICAgICAgLCBsID0gcy5sZW5ndGhcbiAgICAgICwgYSwgYjtcbiAgICBpZihpIDwgMCB8fCBpID49IGwpcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07IiwidmFyIGN0eCAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgaW52b2tlICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faW52b2tlJylcbiAgLCBodG1sICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19odG1sJylcbiAgLCBjZWwgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJylcbiAgLCBnbG9iYWwgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19nbG9iYWwnKVxuICAsIHByb2Nlc3MgICAgICAgICAgICA9IGdsb2JhbC5wcm9jZXNzXG4gICwgc2V0VGFzayAgICAgICAgICAgID0gZ2xvYmFsLnNldEltbWVkaWF0ZVxuICAsIGNsZWFyVGFzayAgICAgICAgICA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZVxuICAsIE1lc3NhZ2VDaGFubmVsICAgICA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbFxuICAsIGNvdW50ZXIgICAgICAgICAgICA9IDBcbiAgLCBxdWV1ZSAgICAgICAgICAgICAgPSB7fVxuICAsIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnXG4gICwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG52YXIgcnVuID0gZnVuY3Rpb24oKXtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIGlmKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSl7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50KXtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYoIXNldFRhc2sgfHwgIWNsZWFyVGFzayl7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pe1xuICAgIHZhciBhcmdzID0gW10sIGkgPSAxO1xuICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uKCl7XG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpe1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZihyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcycpe1xuICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmKE1lc3NhZ2VDaGFubmVsKXtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsO1xuICAgIHBvcnQgICAgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKXtcbiAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZihPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSl7XG4gICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbigpe1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG4gICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG4gICAgfTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogICBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59OyIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJylcbiAgLCBtYXggICAgICAgPSBNYXRoLm1heFxuICAsIG1pbiAgICAgICA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpbmRleCwgbGVuZ3RoKXtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07IiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCAgPSBNYXRoLmNlaWxcbiAgLCBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59OyIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0JylcbiAgLCBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07IiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpXG4gICwgbWluICAgICAgID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07IiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59OyIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIFMpe1xuICBpZighaXNPYmplY3QoaXQpKXJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpcmV0dXJuIHZhbDtcbiAgaWYodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICBpZighUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59OyIsInZhciBpZCA9IDBcbiAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59OyIsInZhciBnbG9iYWwgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgICAgICAgPSByZXF1aXJlKCcuL19jb3JlJylcbiAgLCBMSUJSQVJZICAgICAgICA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKVxuICAsIHdrc0V4dCAgICAgICAgID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpXG4gICwgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihuYW1lKXtcbiAgdmFyICRTeW1ib2wgPSBjb3JlLlN5bWJvbCB8fCAoY29yZS5TeW1ib2wgPSBMSUJSQVJZID8ge30gOiBnbG9iYWwuU3ltYm9sIHx8IHt9KTtcbiAgaWYobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSlkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7dmFsdWU6IHdrc0V4dC5mKG5hbWUpfSk7XG59OyIsImV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX3drcycpOyIsInZhciBzdG9yZSAgICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpXG4gICwgdWlkICAgICAgICA9IHJlcXVpcmUoJy4vX3VpZCcpXG4gICwgU3ltYm9sICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbFxuICAsIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlOyIsInZhciBjbGFzc29mICAgPSByZXF1aXJlKCcuL19jbGFzc29mJylcbiAgLCBJVEVSQVRPUiAgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKVxuICAsIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbihpdCl7XG4gIGlmKGl0ICE9IHVuZGVmaW5lZClyZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHRvT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCBjYWxsICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpXG4gICwgaXNBcnJheUl0ZXIgICAgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJylcbiAgLCB0b0xlbmd0aCAgICAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKVxuICAsIGdldEl0ZXJGbiAgICAgID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbihpdGVyKXsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCovKXtcbiAgICB2YXIgTyAgICAgICA9IHRvT2JqZWN0KGFycmF5TGlrZSlcbiAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcbiAgICAgICwgYUxlbiAgICA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgbWFwZm4gICA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkXG4gICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICAsIGluZGV4ICAgPSAwXG4gICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcbiAgICAgICwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmKG1hcHBpbmcpbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG4gICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEM7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKyl7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJylcbiAgLCBzdGVwICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJylcbiAgLCBJdGVyYXRvcnMgICAgICAgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCB0b0lPYmplY3QgICAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbigpe1xuICB2YXIgTyAgICAgPSB0aGlzLl90XG4gICAgLCBraW5kICA9IHRoaXMuX2tcbiAgICAsIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZighTyB8fCBpbmRleCA+PSBPLmxlbmd0aCl7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZihraW5kID09ICdrZXlzJyAgKXJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYoa2luZCA9PSAndmFsdWVzJylyZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7IiwiLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0Jywge2Fzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpfSk7IiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKX0pOyIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHtkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZn0pOyIsIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbigpe1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTsiLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCAgICAgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uKCl7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCl7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7IiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsICRrZXlzICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpe1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7IiwiLy8gMTkuMS4zLjE5IE9iamVjdC5zZXRQcm90b3R5cGVPZihPLCBwcm90bylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0fSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKVxuICAsIGdsb2JhbCAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY3R4ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgLCBjbGFzc29mICAgICAgICAgICAgPSByZXF1aXJlKCcuL19jbGFzc29mJylcbiAgLCAkZXhwb3J0ICAgICAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGlzT2JqZWN0ICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpXG4gICwgYUZ1bmN0aW9uICAgICAgICAgID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgYW5JbnN0YW5jZSAgICAgICAgID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKVxuICAsIGZvck9mICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2Zvci1vZicpXG4gICwgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpXG4gICwgdGFzayAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldFxuICAsIG1pY3JvdGFzayAgICAgICAgICA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKClcbiAgLCBQUk9NSVNFICAgICAgICAgICAgPSAnUHJvbWlzZSdcbiAgLCBUeXBlRXJyb3IgICAgICAgICAgPSBnbG9iYWwuVHlwZUVycm9yXG4gICwgcHJvY2VzcyAgICAgICAgICAgID0gZ2xvYmFsLnByb2Nlc3NcbiAgLCAkUHJvbWlzZSAgICAgICAgICAgPSBnbG9iYWxbUFJPTUlTRV1cbiAgLCBwcm9jZXNzICAgICAgICAgICAgPSBnbG9iYWwucHJvY2Vzc1xuICAsIGlzTm9kZSAgICAgICAgICAgICA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXG4gICwgZW1wdHkgICAgICAgICAgICAgID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfVxuICAsIEludGVybmFsLCBHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIFdyYXBwZXI7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIC8vIGNvcnJlY3Qgc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlICAgICA9ICRQcm9taXNlLnJlc29sdmUoMSlcbiAgICAgICwgRmFrZVByb21pc2UgPSAocHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9KVtyZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpXSA9IGZ1bmN0aW9uKGV4ZWMpeyBleGVjKGVtcHR5LCBlbXB0eSk7IH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG59KCk7XG5cbi8vIGhlbHBlcnNcbnZhciBzYW1lQ29uc3RydWN0b3IgPSBmdW5jdGlvbihhLCBiKXtcbiAgLy8gd2l0aCBsaWJyYXJ5IHdyYXBwZXIgc3BlY2lhbCBjYXNlXG4gIHJldHVybiBhID09PSBiIHx8IGEgPT09ICRQcm9taXNlICYmIGIgPT09IFdyYXBwZXI7XG59O1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbihpdCl7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG59O1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24oQyl7XG4gIHJldHVybiBzYW1lQ29uc3RydWN0b3IoJFByb21pc2UsIEMpXG4gICAgPyBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICA6IG5ldyBHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gR2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24oQyl7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uKCQkcmVzb2x2ZSwgJCRyZWplY3Qpe1xuICAgIGlmKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ICA9IGFGdW5jdGlvbihyZWplY3QpO1xufTtcbnZhciBwZXJmb3JtID0gZnVuY3Rpb24oZXhlYyl7XG4gIHRyeSB7XG4gICAgZXhlYygpO1xuICB9IGNhdGNoKGUpe1xuICAgIHJldHVybiB7ZXJyb3I6IGV9O1xuICB9XG59O1xudmFyIG5vdGlmeSA9IGZ1bmN0aW9uKHByb21pc2UsIGlzUmVqZWN0KXtcbiAgaWYocHJvbWlzZS5fbilyZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24oKXtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92XG4gICAgICAsIG9rICAgID0gcHJvbWlzZS5fcyA9PSAxXG4gICAgICAsIGkgICAgID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24ocmVhY3Rpb24pe1xuICAgICAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbFxuICAgICAgICAsIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlXG4gICAgICAgICwgcmVqZWN0ICA9IHJlYWN0aW9uLnJlamVjdFxuICAgICAgICAsIGRvbWFpbiAgPSByZWFjdGlvbi5kb21haW5cbiAgICAgICAgLCByZXN1bHQsIHRoZW47XG4gICAgICB0cnkge1xuICAgICAgICBpZihoYW5kbGVyKXtcbiAgICAgICAgICBpZighb2spe1xuICAgICAgICAgICAgaWYocHJvbWlzZS5faCA9PSAyKW9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGhhbmRsZXIgPT09IHRydWUpcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZihkb21haW4pZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTtcbiAgICAgICAgICAgIGlmKGRvbWFpbilkb21haW4uZXhpdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2Upe1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSl7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSlydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZihpc1JlamVjdCAmJiAhcHJvbWlzZS5faClvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uKCl7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdlxuICAgICAgLCBhYnJ1cHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYoaXNVbmhhbmRsZWQocHJvbWlzZSkpe1xuICAgICAgYWJydXB0ID0gcGVyZm9ybShmdW5jdGlvbigpe1xuICAgICAgICBpZihpc05vZGUpe1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbil7XG4gICAgICAgICAgaGFuZGxlcih7cHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZX0pO1xuICAgICAgICB9IGVsc2UgaWYoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcil7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmKGFicnVwdCl0aHJvdyBhYnJ1cHQuZXJyb3I7XG4gIH0pO1xufTtcbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uKHByb21pc2Upe1xuICBpZihwcm9taXNlLl9oID09IDEpcmV0dXJuIGZhbHNlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9hIHx8IHByb21pc2UuX2NcbiAgICAsIGkgICAgID0gMFxuICAgICwgcmVhY3Rpb247XG4gIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpe1xuICAgIHJlYWN0aW9uID0gY2hhaW5baSsrXTtcbiAgICBpZihyZWFjdGlvbi5mYWlsIHx8ICFpc1VuaGFuZGxlZChyZWFjdGlvbi5wcm9taXNlKSlyZXR1cm4gZmFsc2U7XG4gIH0gcmV0dXJuIHRydWU7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uKCl7XG4gICAgdmFyIGhhbmRsZXI7XG4gICAgaWYoaXNOb2RlKXtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZihoYW5kbGVyID0gZ2xvYmFsLm9ucmVqZWN0aW9uaGFuZGxlZCl7XG4gICAgICBoYW5kbGVyKHtwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3Z9KTtcbiAgICB9XG4gIH0pO1xufTtcbnZhciAkcmVqZWN0ID0gZnVuY3Rpb24odmFsdWUpe1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmKHByb21pc2UuX2QpcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmKCFwcm9taXNlLl9hKXByb21pc2UuX2EgPSBwcm9taXNlLl9jLnNsaWNlKCk7XG4gIG5vdGlmeShwcm9taXNlLCB0cnVlKTtcbn07XG52YXIgJHJlc29sdmUgPSBmdW5jdGlvbih2YWx1ZSl7XG4gIHZhciBwcm9taXNlID0gdGhpc1xuICAgICwgdGhlbjtcbiAgaWYocHJvbWlzZS5fZClyZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZihwcm9taXNlID09PSB2YWx1ZSl0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZih0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpe1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciB3cmFwcGVyID0ge193OiBwcm9taXNlLCBfZDogZmFsc2V9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICRyZWplY3QuY2FsbCh3cmFwcGVyLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgICAgIHByb21pc2UuX3MgPSAxO1xuICAgICAgbm90aWZ5KHByb21pc2UsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2goZSl7XG4gICAgJHJlamVjdC5jYWxsKHtfdzogcHJvbWlzZSwgX2Q6IGZhbHNlfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmKCFVU0VfTkFUSVZFKXtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgJFByb21pc2UgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKXtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaChlcnIpe1xuICAgICAgJHJlamVjdC5jYWxsKHRoaXMsIGVycik7XG4gICAgfVxuICB9O1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3Ipe1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCl7XG4gICAgICB2YXIgcmVhY3Rpb24gICAgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJFByb21pc2UpKTtcbiAgICAgIHJlYWN0aW9uLm9rICAgICA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCAgID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT0gJ2Z1bmN0aW9uJyAmJiBvblJlamVjdGVkO1xuICAgICAgcmVhY3Rpb24uZG9tYWluID0gaXNOb2RlID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYodGhpcy5fYSl0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYodGhpcy5fcylub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uKG9uUmVqZWN0ZWQpe1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24oKXtcbiAgICB2YXIgcHJvbWlzZSAgPSBuZXcgSW50ZXJuYWw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBjdHgoJHJlc29sdmUsIHByb21pc2UsIDEpO1xuICAgIHRoaXMucmVqZWN0ICA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwge1Byb21pc2U6ICRQcm9taXNlfSk7XG5yZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpKCRQcm9taXNlLCBQUk9NSVNFKTtcbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoUFJPTUlTRSk7XG5XcmFwcGVyID0gcmVxdWlyZSgnLi9fY29yZScpW1BST01JU0VdO1xuXG4vLyBzdGF0aWNzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG4gIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpe1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcylcbiAgICAgICwgJCRyZWplY3QgICA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgICQkcmVqZWN0KHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTElCUkFSWSB8fCAhVVNFX05BVElWRSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCl7XG4gICAgLy8gaW5zdGFuY2VvZiBpbnN0ZWFkIG9mIGludGVybmFsIHNsb3QgY2hlY2sgYmVjYXVzZSB3ZSBzaG91bGQgZml4IGl0IHdpdGhvdXQgcmVwbGFjZW1lbnQgbmF0aXZlIFByb21pc2UgY29yZVxuICAgIGlmKHggaW5zdGFuY2VvZiAkUHJvbWlzZSAmJiBzYW1lQ29uc3RydWN0b3IoeC5jb25zdHJ1Y3RvciwgdGhpcykpcmV0dXJuIHg7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKVxuICAgICAgLCAkJHJlc29sdmUgID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgICQkcmVzb2x2ZSh4KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIShVU0VfTkFUSVZFICYmIHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24oaXRlcil7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKXtcbiAgICB2YXIgQyAgICAgICAgICA9IHRoaXNcbiAgICAgICwgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICAsIHJlc29sdmUgICAgPSBjYXBhYmlsaXR5LnJlc29sdmVcbiAgICAgICwgcmVqZWN0ICAgICA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciBhYnJ1cHQgPSBwZXJmb3JtKGZ1bmN0aW9uKCl7XG4gICAgICB2YXIgdmFsdWVzICAgID0gW11cbiAgICAgICAgLCBpbmRleCAgICAgPSAwXG4gICAgICAgICwgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24ocHJvbWlzZSl7XG4gICAgICAgIHZhciAkaW5kZXggICAgICAgID0gaW5kZXgrK1xuICAgICAgICAgICwgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24odmFsdWUpe1xuICAgICAgICAgIGlmKGFscmVhZHlDYWxsZWQpcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmKGFicnVwdClyZWplY3QoYWJydXB0LmVycm9yKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpe1xuICAgIHZhciBDICAgICAgICAgID0gdGhpc1xuICAgICAgLCBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgICwgcmVqZWN0ICAgICA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciBhYnJ1cHQgPSBwZXJmb3JtKGZ1bmN0aW9uKCl7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uKHByb21pc2Upe1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZihhYnJ1cHQpcmVqZWN0KGFicnVwdC5lcnJvcik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG5cbi8vIDIzLjIgU2V0IE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKCdTZXQnLCBmdW5jdGlvbihnZXQpe1xuICByZXR1cm4gZnVuY3Rpb24gU2V0KCl7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcbiAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpe1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHRoaXMsIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nKTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ICA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uKGl0ZXJhdGVkKXtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24oKXtcbiAgdmFyIE8gICAgID0gdGhpcy5fdFxuICAgICwgaW5kZXggPSB0aGlzLl9pXG4gICAgLCBwb2ludDtcbiAgaWYoaW5kZXggPj0gTy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHt2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlfTtcbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgaGFzICAgICAgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIERFU0NSSVBUT1JTICAgID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKVxuICAsICRleHBvcnQgICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCByZWRlZmluZSAgICAgICA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJylcbiAgLCBNRVRBICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVlcbiAgLCAkZmFpbHMgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBzaGFyZWQgICAgICAgICA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpXG4gICwgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpXG4gICwgdWlkICAgICAgICAgICAgPSByZXF1aXJlKCcuL191aWQnKVxuICAsIHdrcyAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fd2tzJylcbiAgLCB3a3NFeHQgICAgICAgICA9IHJlcXVpcmUoJy4vX3drcy1leHQnKVxuICAsIHdrc0RlZmluZSAgICAgID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpXG4gICwga2V5T2YgICAgICAgICAgPSByZXF1aXJlKCcuL19rZXlvZicpXG4gICwgZW51bUtleXMgICAgICAgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKVxuICAsIGlzQXJyYXkgICAgICAgID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKVxuICAsIGFuT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b0lPYmplY3QgICAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBjcmVhdGVEZXNjICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKVxuICAsIF9jcmVhdGUgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgZ09QTkV4dCAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKVxuICAsICRHT1BEICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKVxuICAsICREUCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJylcbiAgLCAka2V5cyAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJylcbiAgLCBnT1BEICAgICAgICAgICA9ICRHT1BELmZcbiAgLCBkUCAgICAgICAgICAgICA9ICREUC5mXG4gICwgZ09QTiAgICAgICAgICAgPSBnT1BORXh0LmZcbiAgLCAkU3ltYm9sICAgICAgICA9IGdsb2JhbC5TeW1ib2xcbiAgLCAkSlNPTiAgICAgICAgICA9IGdsb2JhbC5KU09OXG4gICwgX3N0cmluZ2lmeSAgICAgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnlcbiAgLCBQUk9UT1RZUEUgICAgICA9ICdwcm90b3R5cGUnXG4gICwgSElEREVOICAgICAgICAgPSB3a3MoJ19oaWRkZW4nKVxuICAsIFRPX1BSSU1JVElWRSAgID0gd2tzKCd0b1ByaW1pdGl2ZScpXG4gICwgaXNFbnVtICAgICAgICAgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZVxuICAsIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKVxuICAsIEFsbFN5bWJvbHMgICAgID0gc2hhcmVkKCdzeW1ib2xzJylcbiAgLCBPUFN5bWJvbHMgICAgICA9IHNoYXJlZCgnb3Atc3ltYm9scycpXG4gICwgT2JqZWN0UHJvdG8gICAgPSBPYmplY3RbUFJPVE9UWVBFXVxuICAsIFVTRV9OQVRJVkUgICAgID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJ1xuICAsIFFPYmplY3QgICAgICAgID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBkUCh0aGlzLCAnYScsIHt2YWx1ZTogN30pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZihwcm90b0Rlc2MpZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZihwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKWRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24odGFnKXtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCl7XG4gIGlmKGl0ID09PSBPYmplY3RQcm90bykkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZihoYXMoQWxsU3ltYm9scywga2V5KSl7XG4gICAgaWYoIUQuZW51bWVyYWJsZSl7XG4gICAgICBpZighaGFzKGl0LCBISURERU4pKWRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0paXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKXtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpXG4gICAgLCBpICAgID0gMFxuICAgICwgbCA9IGtleXMubGVuZ3RoXG4gICAgLCBrZXk7XG4gIHdoaWxlKGwgPiBpKSRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApe1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSl7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKXJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICBpdCAgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZihpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSlELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcbiAgdmFyIG5hbWVzICA9IGdPUE4odG9JT2JqZWN0KGl0KSlcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpe1xuICAgIGlmKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSlyZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpe1xuICB2YXIgSVNfT1AgID0gaXQgPT09IE9iamVjdFByb3RvXG4gICAgLCBuYW1lcyAgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSlcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpe1xuICAgIGlmKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSlyZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmKCFVU0VfTkFUSVZFKXtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuICAgIGlmKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKXRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24odmFsdWUpe1xuICAgICAgaWYodGhpcyA9PT0gT2JqZWN0UHJvdG8pJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSl0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmKERFU0NSSVBUT1JTICYmIHNldHRlcilzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHtjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mICAgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiAgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSl7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uKG5hbWUpe1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH1cbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwge1N5bWJvbDogJFN5bWJvbH0pO1xuXG5mb3IodmFyIHN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaSA9IDA7IHN5bWJvbHMubGVuZ3RoID4gaTsgKXdrcyhzeW1ib2xzW2krK10pO1xuXG5mb3IodmFyIHN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBpID0gMDsgc3ltYm9scy5sZW5ndGggPiBpOyApd2tzRGVmaW5lKHN5bWJvbHNbaSsrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG4gICAgaWYoaXNTeW1ib2woa2V5KSlyZXR1cm4ga2V5T2YoU3ltYm9sUmVnaXN0cnksIGtleSk7XG4gICAgdGhyb3cgVHlwZUVycm9yKGtleSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uKCl7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24oKXsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24oKXtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoe2E6IFN9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpe1xuICAgIGlmKGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKXJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIHZhciBhcmdzID0gW2l0XVxuICAgICAgLCBpICAgID0gMVxuICAgICAgLCByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmKHR5cGVvZiByZXBsYWNlciA9PSAnZnVuY3Rpb24nKSRyZXBsYWNlciA9IHJlcGxhY2VyO1xuICAgIGlmKCRyZXBsYWNlciB8fCAhaXNBcnJheShyZXBsYWNlcikpcmVwbGFjZXIgPSBmdW5jdGlvbihrZXksIHZhbHVlKXtcbiAgICAgIGlmKCRyZXBsYWNlcil2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYoIWlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpOyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciAkZXhwb3J0ICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHt0b0pTT046IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tdG8tanNvbicpKCdTZXQnKX0pOyIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpOyIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpOyIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgaGlkZSAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIEl0ZXJhdG9ycyAgICAgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKVxuICAsIFRPX1NUUklOR19UQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxuZm9yKHZhciBjb2xsZWN0aW9ucyA9IFsnTm9kZUxpc3QnLCAnRE9NVG9rZW5MaXN0JywgJ01lZGlhTGlzdCcsICdTdHlsZVNoZWV0TGlzdCcsICdDU1NSdWxlTGlzdCddLCBpID0gMDsgaSA8IDU7IGkrKyl7XG4gIHZhciBOQU1FICAgICAgID0gY29sbGVjdGlvbnNbaV1cbiAgICAsIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV1cbiAgICAsIHByb3RvICAgICAgPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZihwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10paGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cblxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xuICB9XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG4iLCJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFQ0RIKGN1cnZlKSB7XG5cdHJldHVybiBuZXcgRUNESChjdXJ2ZSk7XG59O1xuXG52YXIgYWxpYXNlcyA9IHtcblx0c2VjcDI1NmsxOiB7XG5cdFx0bmFtZTogJ3NlY3AyNTZrMScsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0c2VjcDIyNHIxOiB7XG5cdFx0bmFtZTogJ3AyMjQnLFxuXHRcdGJ5dGVMZW5ndGg6IDI4XG5cdH0sXG5cdHByaW1lMjU2djE6IHtcblx0XHRuYW1lOiAncDI1NicsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0cHJpbWUxOTJ2MToge1xuXHRcdG5hbWU6ICdwMTkyJyxcblx0XHRieXRlTGVuZ3RoOiAyNFxuXHR9LFxuXHRlZDI1NTE5OiB7XG5cdFx0bmFtZTogJ2VkMjU1MTknLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AzODRyMToge1xuXHRcdG5hbWU6ICdwMzg0Jyxcblx0XHRieXRlTGVuZ3RoOiA0OFxuXHR9LFxuXHRzZWNwNTIxcjE6IHtcblx0XHRuYW1lOiAncDUyMScsXG5cdFx0Ynl0ZUxlbmd0aDogNjZcblx0fVxufTtcblxuYWxpYXNlcy5wMjI0ID0gYWxpYXNlcy5zZWNwMjI0cjE7XG5hbGlhc2VzLnAyNTYgPSBhbGlhc2VzLnNlY3AyNTZyMSA9IGFsaWFzZXMucHJpbWUyNTZ2MTtcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxO1xuYWxpYXNlcy5wMzg0ID0gYWxpYXNlcy5zZWNwMzg0cjE7XG5hbGlhc2VzLnA1MjEgPSBhbGlhc2VzLnNlY3A1MjFyMTtcblxuZnVuY3Rpb24gRUNESChjdXJ2ZSkge1xuXHR0aGlzLmN1cnZlVHlwZSA9IGFsaWFzZXNbY3VydmVdO1xuXHRpZiAoIXRoaXMuY3VydmVUeXBlICkge1xuXHRcdHRoaXMuY3VydmVUeXBlID0ge1xuXHRcdFx0bmFtZTogY3VydmVcblx0XHR9O1xuXHR9XG5cdHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSk7XG5cdHRoaXMua2V5cyA9IHZvaWQgMDtcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpO1xuXHRyZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoZW5jLCBmb3JtYXQpO1xufTtcblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuXHRpbmVuYyA9IGluZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIob3RoZXIpKSB7XG5cdFx0b3RoZXIgPSBuZXcgQnVmZmVyKG90aGVyLCBpbmVuYyk7XG5cdH1cblx0dmFyIG90aGVyUHViID0gdGhpcy5jdXJ2ZS5rZXlGcm9tUHVibGljKG90aGVyKS5nZXRQdWJsaWMoKTtcblx0dmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKCk7XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShvdXQsIGVuYywgdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aCk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcblx0dmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpO1xuXHRpZiAoZm9ybWF0ID09PSAnaHlicmlkJykge1xuXHRcdGlmIChrZXlba2V5Lmxlbmd0aCAtIDFdICUgMikge1xuXHRcdFx0a2V5WzBdID0gNztcblx0XHR9IGVsc2Uge1xuXHRcdFx0a2V5IFswXSA9IDY7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShrZXksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKTtcbn07XG5cbkVDREgucHJvdG90eXBlLnNldFB1YmxpY0tleSA9IGZ1bmN0aW9uIChwdWIsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG5cdFx0cHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG5cdH1cblx0dGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMocHViKTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKHByaXYsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuXHRcdHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG5cdH1cblx0dmFyIF9wcml2ID0gbmV3IEJOKHByaXYpO1xuXHRfcHJpdiA9IF9wcml2LnRvU3RyaW5nKDE2KTtcblx0dGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jLCBsZW4pIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGJuKSkge1xuXHRcdGJuID0gYm4udG9BcnJheSgpO1xuXHR9XG5cdHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKTtcblx0aWYgKGxlbiAmJiBidWYubGVuZ3RoIDwgbGVuKSB7XG5cdFx0dmFyIHplcm9zID0gbmV3IEJ1ZmZlcihsZW4gLSBidWYubGVuZ3RoKTtcblx0XHR6ZXJvcy5maWxsKDApO1xuXHRcdGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKTtcblx0fVxuXHRpZiAoIWVuYykge1xuXHRcdHJldHVybiBidWY7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuXHR9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgbWQ1ID0gcmVxdWlyZSgnLi9tZDUnKVxudmFyIHJtZDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2hOb0NvbnN0cnVjdG9yKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG4gIHRoaXMuYnVmZmVycyA9IFtdXG59XG5cbmluaGVyaXRzKEhhc2hOb0NvbnN0cnVjdG9yLCBCYXNlKVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuYnVmZmVycy5wdXNoKGRhdGEpXG59XG5cbkhhc2hOb0NvbnN0cnVjdG9yLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuYnVmZmVycylcbiAgdmFyIHIgPSB0aGlzLl9oYXNoKGJ1ZilcbiAgdGhpcy5idWZmZXJzID0gbnVsbFxuXG4gIHJldHVybiByXG59XG5cbmZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG5cbiAgdGhpcy5faGFzaCA9IGhhc2hcbn1cblxuaW5oZXJpdHMoSGFzaCwgQmFzZSlcblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhhc2gucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIYXNoIChhbGcpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKCdtZDUnID09PSBhbGcpIHJldHVybiBuZXcgSGFzaE5vQ29uc3RydWN0b3IobWQ1KVxuICBpZiAoJ3JtZDE2MCcgPT09IGFsZyB8fCAncmlwZW1kMTYwJyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKHJtZDE2MClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW50U2l6ZSA9IDQ7XG52YXIgemVyb0J1ZmZlciA9IG5ldyBCdWZmZXIoaW50U2l6ZSk7IHplcm9CdWZmZXIuZmlsbCgwKTtcbnZhciBjaHJzeiA9IDg7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pIHtcbiAgaWYgKChidWYubGVuZ3RoICUgaW50U2l6ZSkgIT09IDApIHtcbiAgICB2YXIgbGVuID0gYnVmLmxlbmd0aCArIChpbnRTaXplIC0gKGJ1Zi5sZW5ndGggJSBpbnRTaXplKSk7XG4gICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCB6ZXJvQnVmZmVyXSwgbGVuKTtcbiAgfVxuXG4gIHZhciBhcnIgPSBbXTtcbiAgdmFyIGZuID0gYmlnRW5kaWFuID8gYnVmLnJlYWRJbnQzMkJFIDogYnVmLnJlYWRJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkgKz0gaW50U2l6ZSkge1xuICAgIGFyci5wdXNoKGZuLmNhbGwoYnVmLCBpKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXIoYXJyLCBzaXplLCBiaWdFbmRpYW4pIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi53cml0ZUludDMyQkUgOiBidWYud3JpdGVJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGZuLmNhbGwoYnVmLCBhcnJbaV0sIGkgKiA0LCB0cnVlKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5mdW5jdGlvbiBoYXNoKGJ1ZiwgZm4sIGhhc2hTaXplLCBiaWdFbmRpYW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gbmV3IEJ1ZmZlcihidWYpO1xuICB2YXIgYXJyID0gZm4odG9BcnJheShidWYsIGJpZ0VuZGlhbiksIGJ1Zi5sZW5ndGggKiBjaHJzeik7XG4gIHJldHVybiB0b0J1ZmZlcihhcnIsIGhhc2hTaXplLCBiaWdFbmRpYW4pO1xufVxuZXhwb3J0cy5oYXNoID0gaGFzaDsiLCIndXNlIHN0cmljdCc7XG4vKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZVxuICogRGlnZXN0IEFsZ29yaXRobSwgYXMgZGVmaW5lZCBpbiBSRkMgMTMyMS5cbiAqIFZlcnNpb24gMi4xIENvcHlyaWdodCAoQykgUGF1bCBKb2huc3RvbiAxOTk5IC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cbiAqL1xuXG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG4vKlxuICogQ2FsY3VsYXRlIHRoZSBNRDUgb2YgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcywgYW5kIGEgYml0IGxlbmd0aFxuICovXG5mdW5jdGlvbiBjb3JlX21kNSh4LCBsZW4pXG57XG4gIC8qIGFwcGVuZCBwYWRkaW5nICovXG4gIHhbbGVuID4+IDVdIHw9IDB4ODAgPDwgKChsZW4pICUgMzIpO1xuICB4WygoKGxlbiArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBsZW47XG5cbiAgdmFyIGEgPSAgMTczMjU4NDE5MztcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xuICB2YXIgYyA9IC0xNzMyNTg0MTk0O1xuICB2YXIgZCA9ICAyNzE3MzM4Nzg7XG5cbiAgZm9yKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDE2KVxuICB7XG4gICAgdmFyIG9sZGEgPSBhO1xuICAgIHZhciBvbGRiID0gYjtcbiAgICB2YXIgb2xkYyA9IGM7XG4gICAgdmFyIG9sZGQgPSBkO1xuXG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDBdLCA3ICwgLTY4MDg3NjkzNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDFdLCAxMiwgLTM4OTU2NDU4Nik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDJdLCAxNywgIDYwNjEwNTgxOSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDNdLCAyMiwgLTEwNDQ1MjUzMzApO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyA0XSwgNyAsIC0xNzY0MTg4OTcpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA1XSwgMTIsICAxMjAwMDgwNDI2KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsgNl0sIDE3LCAtMTQ3MzIzMTM0MSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDddLCAyMiwgLTQ1NzA1OTgzKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgOF0sIDcgLCAgMTc3MDAzNTQxNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDldLCAxMiwgLTE5NTg0MTQ0MTcpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTcsIC00MjA2Myk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTFdLCAyMiwgLTE5OTA0MDQxNjIpO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKzEyXSwgNyAsICAxODA0NjAzNjgyKTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsxM10sIDEyLCAtNDAzNDExMDEpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzE0XSwgMTcsIC0xNTAyMDAyMjkwKTtcbiAgICBiID0gbWQ1X2ZmKGIsIGMsIGQsIGEsIHhbaSsxNV0sIDIyLCAgMTIzNjUzNTMyOSk7XG5cbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgMV0sIDUgLCAtMTY1Nzk2NTEwKTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgNl0sIDkgLCAtMTA2OTUwMTYzMik7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTFdLCAxNCwgIDY0MzcxNzcxMyk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDBdLCAyMCwgLTM3Mzg5NzMwMik7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDVdLCA1ICwgLTcwMTU1ODY5MSk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTBdLCA5ICwgIDM4MDE2MDgzKTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE0LCAtNjYwNDc4MzM1KTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsgNF0sIDIwLCAtNDA1NTM3ODQ4KTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDUgLCAgNTY4NDQ2NDM4KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsxNF0sIDkgLCAtMTAxOTgwMzY5MCk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krIDNdLCAxNCwgLTE4NzM2Mzk2MSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDhdLCAyMCwgIDExNjM1MzE1MDEpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKzEzXSwgNSAsIC0xNDQ0NjgxNDY3KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgMl0sIDkgLCAtNTE0MDM3ODQpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyA3XSwgMTQsICAxNzM1MzI4NDczKTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsxMl0sIDIwLCAtMTkyNjYwNzczNCk7XG5cbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgNV0sIDQgLCAtMzc4NTU4KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgOF0sIDExLCAtMjAyMjU3NDQ2Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTFdLCAxNiwgIDE4MzkwMzA1NjIpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKzE0XSwgMjMsIC0zNTMwOTU1Nik7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDFdLCA0ICwgLTE1MzA5OTIwNjApO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyA0XSwgMTEsICAxMjcyODkzMzUzKTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE2LCAtMTU1NDk3NjMyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxMF0sIDIzLCAtMTA5NDczMDY0MCk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krMTNdLCA0ICwgIDY4MTI3OTE3NCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDBdLCAxMSwgLTM1ODUzNzIyMik7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDNdLCAxNiwgLTcyMjUyMTk3OSk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDZdLCAyMywgIDc2MDI5MTg5KTtcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDQgLCAtNjQwMzY0NDg3KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsxMl0sIDExLCAtNDIxODE1ODM1KTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE2LCAgNTMwNzQyNTIwKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsgMl0sIDIzLCAtOTk1MzM4NjUxKTtcblxuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyAwXSwgNiAsIC0xOTg2MzA4NDQpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyA3XSwgMTAsICAxMTI2ODkxNDE1KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE1LCAtMTQxNjM1NDkwNSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDVdLCAyMSwgLTU3NDM0MDU1KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDYgLCAgMTcwMDQ4NTU3MSk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krIDNdLCAxMCwgLTE4OTQ5ODY2MDYpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTUsIC0xMDUxNTIzKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsgMV0sIDIxLCAtMjA1NDkyMjc5OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDhdLCA2ICwgIDE4NzMzMTMzNTkpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKzE1XSwgMTAsIC0zMDYxMTc0NCk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDZdLCAxNSwgLTE1NjAxOTgzODApO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKzEzXSwgMjEsICAxMzA5MTUxNjQ5KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDYgLCAtMTQ1NTIzMDcwKTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDJdLCAxNSwgIDcxODc4NzI1OSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDldLCAyMSwgLTM0MzQ4NTU1MSk7XG5cbiAgICBhID0gc2FmZV9hZGQoYSwgb2xkYSk7XG4gICAgYiA9IHNhZmVfYWRkKGIsIG9sZGIpO1xuICAgIGMgPSBzYWZlX2FkZChjLCBvbGRjKTtcbiAgICBkID0gc2FmZV9hZGQoZCwgb2xkZCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5KGEsIGIsIGMsIGQpO1xuXG59XG5cbi8qXG4gKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBmb3VyIGJhc2ljIG9wZXJhdGlvbnMgdGhlIGFsZ29yaXRobSB1c2VzLlxuICovXG5mdW5jdGlvbiBtZDVfY21uKHEsIGEsIGIsIHgsIHMsIHQpXG57XG4gIHJldHVybiBzYWZlX2FkZChiaXRfcm9sKHNhZmVfYWRkKHNhZmVfYWRkKGEsIHEpLCBzYWZlX2FkZCh4LCB0KSksIHMpLGIpO1xufVxuZnVuY3Rpb24gbWQ1X2ZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9nZyhhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaGgoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9paShhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbihjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5cbi8qXG4gKiBBZGQgaW50ZWdlcnMsIHdyYXBwaW5nIGF0IDJeMzIuIFRoaXMgdXNlcyAxNi1iaXQgb3BlcmF0aW9ucyBpbnRlcm5hbGx5XG4gKiB0byB3b3JrIGFyb3VuZCBidWdzIGluIHNvbWUgSlMgaW50ZXJwcmV0ZXJzLlxuICovXG5mdW5jdGlvbiBzYWZlX2FkZCh4LCB5KVxue1xuICB2YXIgbHN3ID0gKHggJiAweEZGRkYpICsgKHkgJiAweEZGRkYpO1xuICB2YXIgbXN3ID0gKHggPj4gMTYpICsgKHkgPj4gMTYpICsgKGxzdyA+PiAxNik7XG4gIHJldHVybiAobXN3IDw8IDE2KSB8IChsc3cgJiAweEZGRkYpO1xufVxuXG4vKlxuICogQml0d2lzZSByb3RhdGUgYSAzMi1iaXQgbnVtYmVyIHRvIHRoZSBsZWZ0LlxuICovXG5mdW5jdGlvbiBiaXRfcm9sKG51bSwgY250KVxue1xuICByZXR1cm4gKG51bSA8PCBjbnQpIHwgKG51bSA+Pj4gKDMyIC0gY250KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWQ1KGJ1Zikge1xuICByZXR1cm4gaGVscGVycy5oYXNoKGJ1ZiwgY29yZV9tZDUsIDE2KTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9icm93c2VyJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cblxudmFyIFpFUk9TID0gbmV3IEJ1ZmZlcigxMjgpXG5aRVJPUy5maWxsKDApXG5cbmZ1bmN0aW9uIEhtYWMoYWxnLCBrZXkpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5ID0gbmV3IEJ1ZmZlcihrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGNyZWF0ZUhhc2goYWxnKS51cGRhdGUoa2V5KS5kaWdlc3QoKVxuXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IHRoaXMuX2lwYWQgPSBuZXcgQnVmZmVyKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIFRyYW5zZm9ybSlcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhLCBlbmMpXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSG1hYy5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG5cbiAgbmV4dCgpXG59XG5cbkhtYWMucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChuZXh0KSB7XG4gIHRoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuXG4gIHJldHVybiBjcmVhdGVIYXNoKHRoaXMuX2FsZykudXBkYXRlKHRoaXMuX29wYWQpLnVwZGF0ZShoKS5kaWdlc3QoZW5jKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUhtYWMoYWxnLCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoT2JqZWN0LmtleXMocmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduL2FsZ29zJykpKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG47W1xuICAnQ2lwaGVyJyxcbiAgJ2NyZWF0ZUNpcGhlcicsXG4gICdDaXBoZXJpdicsXG4gICdjcmVhdGVDaXBoZXJpdicsXG4gICdEZWNpcGhlcicsXG4gICdjcmVhdGVEZWNpcGhlcicsXG4gICdEZWNpcGhlcml2JyxcbiAgJ2NyZWF0ZURlY2lwaGVyaXYnLFxuICAnZ2V0Q2lwaGVycycsXG4gICdsaXN0Q2lwaGVycydcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGFlc1trZXldXG59KVxuXG52YXIgZGggPSByZXF1aXJlKCdkaWZmaWUtaGVsbG1hbicpXG47W1xuICAnRGlmZmllSGVsbG1hbkdyb3VwJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdnZXREaWZmaWVIZWxsbWFuJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW4nLFxuICAnRGlmZmllSGVsbG1hbidcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGRoW2tleV1cbn0pXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcbjtbXG4gICdjcmVhdGVTaWduJyxcbiAgJ1NpZ24nLFxuICAnY3JlYXRlVmVyaWZ5JyxcbiAgJ1ZlcmlmeSdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHNpZ25ba2V5XVxufSlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuO1tcbiAgJ3B1YmxpY0VuY3J5cHQnLFxuICAncHJpdmF0ZUVuY3J5cHQnLFxuICAncHVibGljRGVjcnlwdCcsXG4gICdwcml2YXRlRGVjcnlwdCdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHB1YmxpY0VuY3J5cHRba2V5XVxufSlcblxuLy8gdGhlIGxlYXN0IEkgY2FuIGRvIGlzIG1ha2UgZXJyb3IgbWVzc2FnZXMgZm9yIHRoZSByZXN0IG9mIHRoZSBub2RlLmpzL2NyeXB0byBhcGkuXG47W1xuICAnY3JlYXRlQ3JlZGVudGlhbHMnXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgZXhwb3J0c1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgJ3NvcnJ5LCAnICsgbmFtZSArICcgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgICAnd2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMnLFxuICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgICBdLmpvaW4oJ1xcbicpKVxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnV0aWxzID0gcmVxdWlyZSgnLi9kZXMvdXRpbHMnKTtcbmV4cG9ydHMuQ2lwaGVyID0gcmVxdWlyZSgnLi9kZXMvY2lwaGVyJyk7XG5leHBvcnRzLkRFUyA9IHJlcXVpcmUoJy4vZGVzL2RlcycpO1xuZXhwb3J0cy5DQkMgPSByZXF1aXJlKCcuL2Rlcy9jYmMnKTtcbmV4cG9ydHMuRURFID0gcmVxdWlyZSgnLi9kZXMvZWRlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgcHJvdG8gPSB7fTtcblxuZnVuY3Rpb24gQ0JDU3RhdGUoaXYpIHtcbiAgYXNzZXJ0LmVxdWFsKGl2Lmxlbmd0aCwgOCwgJ0ludmFsaWQgSVYgbGVuZ3RoJyk7XG5cbiAgdGhpcy5pdiA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml2Lmxlbmd0aDsgaSsrKVxuICAgIHRoaXMuaXZbaV0gPSBpdltpXTtcbn1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUoQmFzZSkge1xuICBmdW5jdGlvbiBDQkMob3B0aW9ucykge1xuICAgIEJhc2UuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLl9jYmNJbml0KCk7XG4gIH1cbiAgaW5oZXJpdHMoQ0JDLCBCYXNlKTtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHByb3RvKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgQ0JDLnByb3RvdHlwZVtrZXldID0gcHJvdG9ba2V5XTtcbiAgfVxuXG4gIENCQy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQ0JDKG9wdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBDQkM7XG59XG5cbmV4cG9ydHMuaW5zdGFudGlhdGUgPSBpbnN0YW50aWF0ZTtcblxucHJvdG8uX2NiY0luaXQgPSBmdW5jdGlvbiBfY2JjSW5pdCgpIHtcbiAgdmFyIHN0YXRlID0gbmV3IENCQ1N0YXRlKHRoaXMub3B0aW9ucy5pdik7XG4gIHRoaXMuX2NiY1N0YXRlID0gc3RhdGU7XG59O1xuXG5wcm90by5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9jYmNTdGF0ZTtcbiAgdmFyIHN1cGVyUHJvdG8gPSB0aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGU7XG5cbiAgdmFyIGl2ID0gc3RhdGUuaXY7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldIF49IGlucFtpbk9mZiArIGldO1xuXG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaXYsIDAsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gb3V0W291dE9mZiArIGldO1xuICB9IGVsc2Uge1xuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIG91dFtvdXRPZmYgKyBpXSBePSBpdltpXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gaW5wW2luT2ZmICsgaV07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIENpcGhlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgdGhpcy50eXBlID0gdGhpcy5vcHRpb25zLnR5cGU7XG4gIHRoaXMuYmxvY2tTaXplID0gODtcbiAgdGhpcy5faW5pdCgpO1xuXG4gIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXI7XG5cbkNpcGhlci5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBfaW5pdCgpIHtcbiAgLy8gTWlnaHQgYmUgb3ZlcnJpZGVkXG59O1xuXG5DaXBoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShkYXRhKSB7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2RlY3J5cHQnKVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVEZWNyeXB0KGRhdGEpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUVuY3J5cHQoZGF0YSk7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9idWZmZXIgPSBmdW5jdGlvbiBfYnVmZmVyKGRhdGEsIG9mZikge1xuICAvLyBBcHBlbmQgZGF0YSB0byBidWZmZXJcbiAgdmFyIG1pbiA9IE1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aCAtIHRoaXMuYnVmZmVyT2ZmLCBkYXRhLmxlbmd0aCAtIG9mZik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluOyBpKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYgKyBpXSA9IGRhdGFbb2ZmICsgaV07XG4gIHRoaXMuYnVmZmVyT2ZmICs9IG1pbjtcblxuICAvLyBTaGlmdCBuZXh0XG4gIHJldHVybiBtaW47XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9mbHVzaEJ1ZmZlciA9IGZ1bmN0aW9uIF9mbHVzaEJ1ZmZlcihvdXQsIG9mZikge1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgb2ZmKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xuICByZXR1cm4gdGhpcy5ibG9ja1NpemU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZUVuY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSAoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIHwgMDtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICBpZiAodGhpcy5idWZmZXJPZmYgIT09IDApIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gICAgaWYgKHRoaXMuYnVmZmVyT2ZmID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gV3JpdGUgYmxvY2tzXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCAtICgoZGF0YS5sZW5ndGggLSBpbnB1dE9mZikgJSB0aGlzLmJsb2NrU2l6ZSk7XG4gIGZvciAoOyBpbnB1dE9mZiA8IG1heDsgaW5wdXRPZmYgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICB0aGlzLl91cGRhdGUoZGF0YSwgaW5wdXRPZmYsIG91dCwgb3V0cHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5ibG9ja1NpemU7XG4gIH1cblxuICAvLyBRdWV1ZSByZXN0XG4gIGZvciAoOyBpbnB1dE9mZiA8IGRhdGEubGVuZ3RoOyBpbnB1dE9mZisrLCB0aGlzLmJ1ZmZlck9mZisrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXSA9IGRhdGFbaW5wdXRPZmZdO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZURlY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSBNYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIC0gMTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBUT0RPKGluZHV0bnkpOiBvcHRpbWl6ZSBpdCwgdGhpcyBpcyBmYXIgZnJvbSBvcHRpbWFsXG4gIGZvciAoOyBjb3VudCA+IDA7IGNvdW50LS0pIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBCdWZmZXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIGZpbmFsKGJ1ZmZlcikge1xuICB2YXIgZmlyc3Q7XG4gIGlmIChidWZmZXIpXG4gICAgZmlyc3QgPSB0aGlzLnVwZGF0ZShidWZmZXIpO1xuXG4gIHZhciBsYXN0O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRW5jcnlwdCgpO1xuICBlbHNlXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRGVjcnlwdCgpO1xuXG4gIGlmIChmaXJzdClcbiAgICByZXR1cm4gZmlyc3QuY29uY2F0KGxhc3QpO1xuICBlbHNlXG4gICAgcmV0dXJuIGxhc3Q7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIGlmIChvZmYgPT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHdoaWxlIChvZmYgPCBidWZmZXIubGVuZ3RoKVxuICAgIGJ1ZmZlcltvZmYrK10gPSAwO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRW5jcnlwdCgpIHtcbiAgaWYgKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsIHRoaXMuYnVmZmVyT2ZmKSlcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCAwKTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRGVjcnlwdCgpIHtcbiAgYXNzZXJ0LmVxdWFsKHRoaXMuYnVmZmVyT2ZmLCB0aGlzLmJsb2NrU2l6ZSwgJ05vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Jyk7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIDApO1xuXG4gIHJldHVybiB0aGlzLl91bnBhZChvdXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciB1dGlscyA9IGRlcy51dGlscztcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xuXG5mdW5jdGlvbiBERVNTdGF0ZSgpIHtcbiAgdGhpcy50bXAgPSBuZXcgQXJyYXkoMik7XG4gIHRoaXMua2V5cyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIERFUyhvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBERVNTdGF0ZSgpO1xuICB0aGlzLl9kZXNTdGF0ZSA9IHN0YXRlO1xuXG4gIHRoaXMuZGVyaXZlS2V5cyhzdGF0ZSwgb3B0aW9ucy5rZXkpO1xufVxuaW5oZXJpdHMoREVTLCBDaXBoZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBERVM7XG5cbkRFUy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IERFUyhvcHRpb25zKTtcbn07XG5cbnZhciBzaGlmdFRhYmxlID0gW1xuICAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLFxuICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxXG5dO1xuXG5ERVMucHJvdG90eXBlLmRlcml2ZUtleXMgPSBmdW5jdGlvbiBkZXJpdmVLZXlzKHN0YXRlLCBrZXkpIHtcbiAgc3RhdGUua2V5cyA9IG5ldyBBcnJheSgxNiAqIDIpO1xuXG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCB0aGlzLmJsb2NrU2l6ZSwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrTCA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDApO1xuICB2YXIga1IgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCA0KTtcblxuICB1dGlscy5wYzEoa0wsIGtSLCBzdGF0ZS50bXAsIDApO1xuICBrTCA9IHN0YXRlLnRtcFswXTtcbiAga1IgPSBzdGF0ZS50bXBbMV07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBzaGlmdCA9IHNoaWZ0VGFibGVbaSA+Pj4gMV07XG4gICAga0wgPSB1dGlscy5yMjhzaGwoa0wsIHNoaWZ0KTtcbiAgICBrUiA9IHV0aWxzLnIyOHNobChrUiwgc2hpZnQpO1xuICAgIHV0aWxzLnBjMihrTCwga1IsIHN0YXRlLmtleXMsIGkpO1xuICB9XG59O1xuXG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Rlc1N0YXRlO1xuXG4gIHZhciBsID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYpO1xuICB2YXIgciA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmICsgNCk7XG5cbiAgLy8gSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5pcChsLCByLCBzdGF0ZS50bXAsIDApO1xuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICB0aGlzLl9lbmNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuICBlbHNlXG4gICAgdGhpcy5fZGVjcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcblxuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCBsLCBvdXRPZmYpO1xuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgciwgb3V0T2ZmICsgNCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIHZhciB2YWx1ZSA9IGJ1ZmZlci5sZW5ndGggLSBvZmY7XG4gIGZvciAodmFyIGkgPSBvZmY7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYnVmZmVyW2ldID0gdmFsdWU7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5ERVMucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgdmFyIHBhZCA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gIGZvciAodmFyIGkgPSBidWZmZXIubGVuZ3RoIC0gcGFkOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGFzc2VydC5lcXVhbChidWZmZXJbaV0sIHBhZCk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5zbGljZSgwLCBidWZmZXIubGVuZ3RoIC0gcGFkKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2VuY3J5cHQgPSBmdW5jdGlvbiBfZW5jcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gbFN0YXJ0O1xuICB2YXIgciA9IHJTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChyLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gcjtcbiAgICByID0gKGwgXiBmKSA+Pj4gMDtcbiAgICBsID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAociwgbCwgb3V0LCBvZmYpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZGVjcnlwdCA9IGZ1bmN0aW9uIF9kZWNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSByU3RhcnQ7XG4gIHZhciByID0gbFN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IHN0YXRlLmtleXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQobCwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IGw7XG4gICAgbCA9IChyIF4gZikgPj4+IDA7XG4gICAgciA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKGwsIHIsIG91dCwgb2ZmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgZGVzID0gcmVxdWlyZSgnLi4vZGVzJyk7XG52YXIgQ2lwaGVyID0gZGVzLkNpcGhlcjtcbnZhciBERVMgPSBkZXMuREVTO1xuXG5mdW5jdGlvbiBFREVTdGF0ZSh0eXBlLCBrZXkpIHtcbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIDI0LCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGsxID0ga2V5LnNsaWNlKDAsIDgpO1xuICB2YXIgazIgPSBrZXkuc2xpY2UoOCwgMTYpO1xuICB2YXIgazMgPSBrZXkuc2xpY2UoMTYsIDI0KTtcblxuICBpZiAodHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMSB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGszIH0pXG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGszIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazEgfSlcbiAgICBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIEVERShvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBFREVTdGF0ZSh0aGlzLnR5cGUsIHRoaXMub3B0aW9ucy5rZXkpO1xuICB0aGlzLl9lZGVTdGF0ZSA9IHN0YXRlO1xufVxuaW5oZXJpdHMoRURFLCBDaXBoZXIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVERTtcblxuRURFLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRURFKG9wdGlvbnMpO1xufTtcblxuRURFLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9lZGVTdGF0ZTtcblxuICBzdGF0ZS5jaXBoZXJzWzBdLl91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzFdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1syXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG59O1xuXG5FREUucHJvdG90eXBlLl9wYWQgPSBERVMucHJvdG90eXBlLl9wYWQ7XG5FREUucHJvdG90eXBlLl91bnBhZCA9IERFUy5wcm90b3R5cGUuX3VucGFkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRShieXRlcywgb2ZmKSB7XG4gIHZhciByZXMgPSAgKGJ5dGVzWzAgKyBvZmZdIDw8IDI0KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzEgKyBvZmZdIDw8IDE2KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzIgKyBvZmZdIDw8IDgpIHxcbiAgICAgICAgICAgICBieXRlc1szICsgb2ZmXTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn07XG5cbmV4cG9ydHMud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUoYnl0ZXMsIHZhbHVlLCBvZmYpIHtcbiAgYnl0ZXNbMCArIG9mZl0gPSB2YWx1ZSA+Pj4gMjQ7XG4gIGJ5dGVzWzEgKyBvZmZdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICBieXRlc1syICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICBieXRlc1szICsgb2ZmXSA9IHZhbHVlICYgMHhmZjtcbn07XG5cbmV4cG9ydHMuaXAgPSBmdW5jdGlvbiBpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucmlwID0gZnVuY3Rpb24gcmlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaSA9IDQ7IGkgPCA4OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGMxID0gZnVuY3Rpb24gcGMxKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICAvLyA3LCAxNSwgMjMsIDMxLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA2LCAxNCwgMjIsIDMwLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA1LCAxMywgMjEsIDI5LCAzOSwgNDcsIDU1LCA2M1xuICAvLyA0LCAxMiwgMjAsIDI4XG4gIGZvciAodmFyIGkgPSA3OyBpID49IDU7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIC8vIDEsIDksIDE3LCAyNSwgMzMsIDQxLCA0OSwgNTdcbiAgLy8gMiwgMTAsIDE4LCAyNiwgMzQsIDQyLCA1MCwgNThcbiAgLy8gMywgMTEsIDE5LCAyNywgMzUsIDQzLCA1MSwgNTlcbiAgLy8gMzYsIDQ0LCA1MiwgNjBcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucjI4c2hsID0gZnVuY3Rpb24gcjI4c2hsKG51bSwgc2hpZnQpIHtcbiAgcmV0dXJuICgobnVtIDw8IHNoaWZ0KSAmIDB4ZmZmZmZmZikgfCAobnVtID4+PiAoMjggLSBzaGlmdCkpO1xufTtcblxudmFyIHBjMnRhYmxlID0gW1xuICAvLyBpbkwgPT4gb3V0TFxuICAxNCwgMTEsIDE3LCA0LCAyNywgMjMsIDI1LCAwLFxuICAxMywgMjIsIDcsIDE4LCA1LCA5LCAxNiwgMjQsXG4gIDIsIDIwLCAxMiwgMjEsIDEsIDgsIDE1LCAyNixcblxuICAvLyBpblIgPT4gb3V0UlxuICAxNSwgNCwgMjUsIDE5LCA5LCAxLCAyNiwgMTYsXG4gIDUsIDExLCAyMywgOCwgMTIsIDcsIDE3LCAwLFxuICAyMiwgMywgMTAsIDE0LCA2LCAyMCwgMjcsIDI0XG5dO1xuXG5leHBvcnRzLnBjMiA9IGZ1bmN0aW9uIHBjMihpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgdmFyIGxlbiA9IHBjMnRhYmxlLmxlbmd0aCA+Pj4gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5MID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IHBjMnRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpblIgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLmV4cGFuZCA9IGZ1bmN0aW9uIGV4cGFuZChyLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBvdXRMID0gKChyICYgMSkgPDwgNSkgfCAociA+Pj4gMjcpO1xuICBmb3IgKHZhciBpID0gMjM7IGkgPj0gMTU7IGkgLT0gNCkge1xuICAgIG91dEwgPDw9IDY7XG4gICAgb3V0TCB8PSAociA+Pj4gaSkgJiAweDNmO1xuICB9XG4gIGZvciAodmFyIGkgPSAxMTsgaSA+PSAzOyBpIC09IDQpIHtcbiAgICBvdXRSIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gICAgb3V0UiA8PD0gNjtcbiAgfVxuICBvdXRSIHw9ICgociAmIDB4MWYpIDw8IDEpIHwgKHIgPj4+IDMxKTtcblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxudmFyIHNUYWJsZSA9IFtcbiAgMTQsIDAsIDQsIDE1LCAxMywgNywgMSwgNCwgMiwgMTQsIDE1LCAyLCAxMSwgMTMsIDgsIDEsXG4gIDMsIDEwLCAxMCwgNiwgNiwgMTIsIDEyLCAxMSwgNSwgOSwgOSwgNSwgMCwgMywgNywgOCxcbiAgNCwgMTUsIDEsIDEyLCAxNCwgOCwgOCwgMiwgMTMsIDQsIDYsIDksIDIsIDEsIDExLCA3LFxuICAxNSwgNSwgMTIsIDExLCA5LCAzLCA3LCAxNCwgMywgMTAsIDEwLCAwLCA1LCA2LCAwLCAxMyxcblxuICAxNSwgMywgMSwgMTMsIDgsIDQsIDE0LCA3LCA2LCAxNSwgMTEsIDIsIDMsIDgsIDQsIDE0LFxuICA5LCAxMiwgNywgMCwgMiwgMSwgMTMsIDEwLCAxMiwgNiwgMCwgOSwgNSwgMTEsIDEwLCA1LFxuICAwLCAxMywgMTQsIDgsIDcsIDEwLCAxMSwgMSwgMTAsIDMsIDQsIDE1LCAxMywgNCwgMSwgMixcbiAgNSwgMTEsIDgsIDYsIDEyLCA3LCA2LCAxMiwgOSwgMCwgMywgNSwgMiwgMTQsIDE1LCA5LFxuXG4gIDEwLCAxMywgMCwgNywgOSwgMCwgMTQsIDksIDYsIDMsIDMsIDQsIDE1LCA2LCA1LCAxMCxcbiAgMSwgMiwgMTMsIDgsIDEyLCA1LCA3LCAxNCwgMTEsIDEyLCA0LCAxMSwgMiwgMTUsIDgsIDEsXG4gIDEzLCAxLCA2LCAxMCwgNCwgMTMsIDksIDAsIDgsIDYsIDE1LCA5LCAzLCA4LCAwLCA3LFxuICAxMSwgNCwgMSwgMTUsIDIsIDE0LCAxMiwgMywgNSwgMTEsIDEwLCA1LCAxNCwgMiwgNywgMTIsXG5cbiAgNywgMTMsIDEzLCA4LCAxNCwgMTEsIDMsIDUsIDAsIDYsIDYsIDE1LCA5LCAwLCAxMCwgMyxcbiAgMSwgNCwgMiwgNywgOCwgMiwgNSwgMTIsIDExLCAxLCAxMiwgMTAsIDQsIDE0LCAxNSwgOSxcbiAgMTAsIDMsIDYsIDE1LCA5LCAwLCAwLCA2LCAxMiwgMTAsIDExLCAxLCA3LCAxMywgMTMsIDgsXG4gIDE1LCA5LCAxLCA0LCAzLCA1LCAxNCwgMTEsIDUsIDEyLCAyLCA3LCA4LCAyLCA0LCAxNCxcblxuICAyLCAxNCwgMTIsIDExLCA0LCAyLCAxLCAxMiwgNywgNCwgMTAsIDcsIDExLCAxMywgNiwgMSxcbiAgOCwgNSwgNSwgMCwgMywgMTUsIDE1LCAxMCwgMTMsIDMsIDAsIDksIDE0LCA4LCA5LCA2LFxuICA0LCAxMSwgMiwgOCwgMSwgMTIsIDExLCA3LCAxMCwgMSwgMTMsIDE0LCA3LCAyLCA4LCAxMyxcbiAgMTUsIDYsIDksIDE1LCAxMiwgMCwgNSwgOSwgNiwgMTAsIDMsIDQsIDAsIDUsIDE0LCAzLFxuXG4gIDEyLCAxMCwgMSwgMTUsIDEwLCA0LCAxNSwgMiwgOSwgNywgMiwgMTIsIDYsIDksIDgsIDUsXG4gIDAsIDYsIDEzLCAxLCAzLCAxMywgNCwgMTQsIDE0LCAwLCA3LCAxMSwgNSwgMywgMTEsIDgsXG4gIDksIDQsIDE0LCAzLCAxNSwgMiwgNSwgMTIsIDIsIDksIDgsIDUsIDEyLCAxNSwgMywgMTAsXG4gIDcsIDExLCAwLCAxNCwgNCwgMSwgMTAsIDcsIDEsIDYsIDEzLCAwLCAxMSwgOCwgNiwgMTMsXG5cbiAgNCwgMTMsIDExLCAwLCAyLCAxMSwgMTQsIDcsIDE1LCA0LCAwLCA5LCA4LCAxLCAxMywgMTAsXG4gIDMsIDE0LCAxMiwgMywgOSwgNSwgNywgMTIsIDUsIDIsIDEwLCAxNSwgNiwgOCwgMSwgNixcbiAgMSwgNiwgNCwgMTEsIDExLCAxMywgMTMsIDgsIDEyLCAxLCAzLCA0LCA3LCAxMCwgMTQsIDcsXG4gIDEwLCA5LCAxNSwgNSwgNiwgMCwgOCwgMTUsIDAsIDE0LCA1LCAyLCA5LCAzLCAyLCAxMixcblxuICAxMywgMSwgMiwgMTUsIDgsIDEzLCA0LCA4LCA2LCAxMCwgMTUsIDMsIDExLCA3LCAxLCA0LFxuICAxMCwgMTIsIDksIDUsIDMsIDYsIDE0LCAxMSwgNSwgMCwgMCwgMTQsIDEyLCA5LCA3LCAyLFxuICA3LCAyLCAxMSwgMSwgNCwgMTQsIDEsIDcsIDksIDQsIDEyLCAxMCwgMTQsIDgsIDIsIDEzLFxuICAwLCAxNSwgNiwgMTIsIDEwLCA5LCAxMywgMCwgMTUsIDMsIDMsIDUsIDUsIDYsIDgsIDExXG5dO1xuXG5leHBvcnRzLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGluTCwgaW5SKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluTCA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlW2kgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5SID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbNCAqIDB4NDAgKyBpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxudmFyIHBlcm11dGVUYWJsZSA9IFtcbiAgMTYsIDI1LCAxMiwgMTEsIDMsIDIwLCA0LCAxNSwgMzEsIDE3LCA5LCA2LCAyNywgMTQsIDEsIDIyLFxuICAzMCwgMjQsIDgsIDE4LCAwLCA1LCAyOSwgMjMsIDEzLCAxOSwgMiwgMjYsIDEwLCAyMSwgMjgsIDdcbl07XG5cbmV4cG9ydHMucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUobnVtKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBlcm11dGVUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dCA8PD0gMTtcbiAgICBvdXQgfD0gKG51bSA+Pj4gcGVybXV0ZVRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYWRTcGxpdCA9IGZ1bmN0aW9uIHBhZFNwbGl0KG51bSwgc2l6ZSwgZ3JvdXApIHtcbiAgdmFyIHN0ciA9IG51bS50b1N0cmluZygyKTtcbiAgd2hpbGUgKHN0ci5sZW5ndGggPCBzaXplKVxuICAgIHN0ciA9ICcwJyArIHN0cjtcblxuICB2YXIgb3V0ID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBncm91cClcbiAgICBvdXQucHVzaChzdHIuc2xpY2UoaSwgaSArIGdyb3VwKSk7XG4gIHJldHVybiBvdXQuam9pbignICcpO1xufTtcbiIsInZhciBnZW5lcmF0ZVByaW1lID0gcmVxdWlyZSgnLi9saWIvZ2VuZXJhdGVQcmltZScpXG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9saWIvcHJpbWVzLmpzb24nKVxuXG52YXIgREggPSByZXF1aXJlKCcuL2xpYi9kaCcpXG5cbmZ1bmN0aW9uIGdldERpZmZpZUhlbGxtYW4gKG1vZCkge1xuICB2YXIgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLnByaW1lLCAnaGV4JylcbiAgdmFyIGdlbiA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0uZ2VuLCAnaGV4JylcblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW4pXG59XG5cbnZhciBFTkNPRElOR1MgPSB7XG4gICdiaW5hcnknOiB0cnVlLCAnaGV4JzogdHJ1ZSwgJ2Jhc2U2NCc6IHRydWVcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGlmZmllSGVsbG1hbiAocHJpbWUsIGVuYywgZ2VuZXJhdG9yLCBnZW5jKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoZW5jKSB8fCBFTkNPRElOR1NbZW5jXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNyZWF0ZURpZmZpZUhlbGxtYW4ocHJpbWUsICdiaW5hcnknLCBlbmMsIGdlbmVyYXRvcilcbiAgfVxuXG4gIGVuYyA9IGVuYyB8fCAnYmluYXJ5J1xuICBnZW5jID0gZ2VuYyB8fCAnYmluYXJ5J1xuICBnZW5lcmF0b3IgPSBnZW5lcmF0b3IgfHwgbmV3IEJ1ZmZlcihbMl0pXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuZXJhdG9yKSkge1xuICAgIGdlbmVyYXRvciA9IG5ldyBCdWZmZXIoZ2VuZXJhdG9yLCBnZW5jKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBwcmltZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbmV3IERIKGdlbmVyYXRlUHJpbWUocHJpbWUsIGdlbmVyYXRvciksIGdlbmVyYXRvciwgdHJ1ZSlcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaW1lKSkge1xuICAgIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZSwgZW5jKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuZXJhdG9yLCB0cnVlKVxufVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5nZXREaWZmaWVIZWxsbWFuID0gZ2V0RGlmZmllSGVsbG1hblxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuID0gZXhwb3J0cy5EaWZmaWVIZWxsbWFuID0gY3JlYXRlRGlmZmllSGVsbG1hblxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vZ2VuZXJhdGVQcmltZScpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gREg7XG5cbmZ1bmN0aW9uIHNldFB1YmxpY0tleShwdWIsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHViID0gbmV3IEJOKHB1Yik7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzZXRQcml2YXRlS2V5KHByaXYsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuICAgIHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHJpdiA9IG5ldyBCTihwcml2KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbnZhciBwcmltZUNhY2hlID0ge307XG5mdW5jdGlvbiBjaGVja1ByaW1lKHByaW1lLCBnZW5lcmF0b3IpIHtcbiAgdmFyIGdlbiA9IGdlbmVyYXRvci50b1N0cmluZygnaGV4Jyk7XG4gIHZhciBoZXggPSBbZ2VuLCBwcmltZS50b1N0cmluZygxNildLmpvaW4oJ18nKTtcbiAgaWYgKGhleCBpbiBwcmltZUNhY2hlKSB7XG4gICAgcmV0dXJuIHByaW1lQ2FjaGVbaGV4XTtcbiAgfVxuICB2YXIgZXJyb3IgPSAwO1xuXG4gIGlmIChwcmltZS5pc0V2ZW4oKSB8fFxuICAgICFwcmltZXMuc2ltcGxlU2lldmUgfHxcbiAgICAhcHJpbWVzLmZlcm1hdFRlc3QocHJpbWUpIHx8XG4gICAgIW1pbGxlclJhYmluLnRlc3QocHJpbWUpKSB7XG4gICAgLy9ub3QgYSBwcmltZSBzbyArMVxuICAgIGVycm9yICs9IDE7XG5cbiAgICBpZiAoZ2VuID09PSAnMDInIHx8IGdlbiA9PT0gJzA1Jykge1xuICAgICAgLy8gd2UnZCBiZSBhYmxlIHRvIGNoZWNrIHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIGl0IHdvdWxkIGZhaWwgc28gKzhcbiAgICAgIGVycm9yICs9IDg7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vd2Ugd291bGRuJ3QgYmUgYWJsZSB0byB0ZXN0IHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIHNvICs0XG4gICAgICBlcnJvciArPSA0O1xuICAgIH1cbiAgICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgaWYgKCFtaWxsZXJSYWJpbi50ZXN0KHByaW1lLnNocm4oMSkpKSB7XG4gICAgLy9ub3QgYSBzYWZlIHByaW1lXG4gICAgZXJyb3IgKz0gMjtcbiAgfVxuICB2YXIgcmVtO1xuICBzd2l0Y2ggKGdlbikge1xuICAgIGNhc2UgJzAyJzpcbiAgICAgIGlmIChwcmltZS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgLy8gdW5zdWlkYWJsZSBnZW5lcmF0b3JcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzA1JzpcbiAgICAgIHJlbSA9IHByaW1lLm1vZChURU4pO1xuICAgICAgaWYgKHJlbS5jbXAoVEhSRUUpICYmIHJlbS5jbXAoU0VWRU4pKSB7XG4gICAgICAgIC8vIHByaW1lIG1vZCAxMCBuZWVkcyB0byBlcXVhbCAzIG9yIDdcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBlcnJvciArPSA0O1xuICB9XG4gIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICByZXR1cm4gZXJyb3I7XG59XG5cbmZ1bmN0aW9uIERIKHByaW1lLCBnZW5lcmF0b3IsIG1hbGxlYWJsZSkge1xuICB0aGlzLnNldEdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICB0aGlzLl9fcHJpbWUgPSBuZXcgQk4ocHJpbWUpO1xuICB0aGlzLl9wcmltZSA9IEJOLm1vbnQodGhpcy5fX3ByaW1lKTtcbiAgdGhpcy5fcHJpbWVMZW4gPSBwcmltZS5sZW5ndGg7XG4gIHRoaXMuX3B1YiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpdiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpbWVDb2RlID0gdW5kZWZpbmVkO1xuICBpZiAobWFsbGVhYmxlKSB7XG4gICAgdGhpcy5zZXRQdWJsaWNLZXkgPSBzZXRQdWJsaWNLZXk7XG4gICAgdGhpcy5zZXRQcml2YXRlS2V5ID0gc2V0UHJpdmF0ZUtleTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9wcmltZUNvZGUgPSA4O1xuICB9XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoREgucHJvdG90eXBlLCAndmVyaWZ5RXJyb3InLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fcHJpbWVDb2RlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fcHJpbWVDb2RlID0gY2hlY2tQcmltZSh0aGlzLl9fcHJpbWUsIHRoaXMuX19nZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJpbWVDb2RlO1xuICB9XG59KTtcbkRILnByb3RvdHlwZS5nZW5lcmF0ZUtleXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5fcHJpdikge1xuICAgIHRoaXMuX3ByaXYgPSBuZXcgQk4ocmFuZG9tQnl0ZXModGhpcy5fcHJpbWVMZW4pKTtcbiAgfVxuICB0aGlzLl9wdWIgPSB0aGlzLl9nZW4udG9SZWQodGhpcy5fcHJpbWUpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleSgpO1xufTtcblxuREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgb3RoZXIgPSBuZXcgQk4ob3RoZXIpO1xuICBvdGhlciA9IG90aGVyLnRvUmVkKHRoaXMuX3ByaW1lKTtcbiAgdmFyIHNlY3JldCA9IG90aGVyLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNlY3JldC50b0FycmF5KCkpO1xuICB2YXIgcHJpbWUgPSB0aGlzLmdldFByaW1lKCk7XG4gIGlmIChvdXQubGVuZ3RoIDwgcHJpbWUubGVuZ3RoKSB7XG4gICAgdmFyIGZyb250ID0gbmV3IEJ1ZmZlcihwcmltZS5sZW5ndGggLSBvdXQubGVuZ3RoKTtcbiAgICBmcm9udC5maWxsKDApO1xuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW2Zyb250LCBvdXRdKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuREgucHJvdG90eXBlLmdldFB1YmxpY0tleSA9IGZ1bmN0aW9uIGdldFB1YmxpY0tleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3B1YiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZUtleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3ByaXYsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpbWUgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9fcHJpbWUsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fZ2VuLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLnNldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChnZW4sIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW4pKSB7XG4gICAgZ2VuID0gbmV3IEJ1ZmZlcihnZW4sIGVuYyk7XG4gIH1cbiAgdGhpcy5fX2dlbiA9IGdlbjtcbiAgdGhpcy5fZ2VuID0gbmV3IEJOKGdlbik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYykge1xuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihibi50b0FycmF5KCkpO1xuICBpZiAoIWVuYykge1xuICAgIHJldHVybiBidWY7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuICB9XG59XG4iLCJ2YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kUHJpbWU7XG5maW5kUHJpbWUuc2ltcGxlU2lldmUgPSBzaW1wbGVTaWV2ZTtcbmZpbmRQcmltZS5mZXJtYXRUZXN0ID0gZmVybWF0VGVzdDtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIE9ORSA9IG5ldyBCTigxKTtcbnZhciBUV08gPSBuZXcgQk4oMik7XG52YXIgRklWRSA9IG5ldyBCTig1KTtcbnZhciBTSVhURUVOID0gbmV3IEJOKDE2KTtcbnZhciBFSUdIVCA9IG5ldyBCTig4KTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgRk9VUiA9IG5ldyBCTig0KTtcbnZhciBUV0VMVkUgPSBuZXcgQk4oMTIpO1xudmFyIHByaW1lcyA9IG51bGw7XG5cbmZ1bmN0aW9uIF9nZXRQcmltZXMoKSB7XG4gIGlmIChwcmltZXMgIT09IG51bGwpXG4gICAgcmV0dXJuIHByaW1lcztcblxuICB2YXIgbGltaXQgPSAweDEwMDAwMDtcbiAgdmFyIHJlcyA9IFtdO1xuICByZXNbMF0gPSAyO1xuICBmb3IgKHZhciBpID0gMSwgayA9IDM7IGsgPCBsaW1pdDsgayArPSAyKSB7XG4gICAgdmFyIHNxcnQgPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KGspKTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGkgJiYgcmVzW2pdIDw9IHNxcnQ7IGorKylcbiAgICAgIGlmIChrICUgcmVzW2pdID09PSAwKVxuICAgICAgICBicmVhaztcblxuICAgIGlmIChpICE9PSBqICYmIHJlc1tqXSA8PSBzcXJ0KVxuICAgICAgY29udGludWU7XG5cbiAgICByZXNbaSsrXSA9IGs7XG4gIH1cbiAgcHJpbWVzID0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVTaWV2ZShwKSB7XG4gIHZhciBwcmltZXMgPSBfZ2V0UHJpbWVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmltZXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHAubW9kbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICBpZiAocC5jbXBuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmZXJtYXRUZXN0KHApIHtcbiAgdmFyIHJlZCA9IEJOLm1vbnQocCk7XG4gIHJldHVybiBUV08udG9SZWQocmVkKS5yZWRQb3cocC5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gZmluZFByaW1lKGJpdHMsIGdlbikge1xuICBpZiAoYml0cyA8IDE2KSB7XG4gICAgLy8gdGhpcyBpcyB3aGF0IG9wZW5zc2wgZG9lc1xuICAgIGlmIChnZW4gPT09IDIgfHwgZ2VuID09PSA1KSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDdiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4MjddKTtcbiAgICB9XG4gIH1cbiAgZ2VuID0gbmV3IEJOKGdlbik7XG5cbiAgdmFyIG51bSwgbjI7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBudW0gPSBuZXcgQk4ocmFuZG9tQnl0ZXMoTWF0aC5jZWlsKGJpdHMgLyA4KSkpO1xuICAgIHdoaWxlIChudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7XG4gICAgICBudW0uaXNocm4oMSk7XG4gICAgfVxuICAgIGlmIChudW0uaXNFdmVuKCkpIHtcbiAgICAgIG51bS5pYWRkKE9ORSk7XG4gICAgfVxuICAgIGlmICghbnVtLnRlc3RuKDEpKSB7XG4gICAgICBudW0uaWFkZChUV08pO1xuICAgIH1cbiAgICBpZiAoIWdlbi5jbXAoVFdPKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ2VuLmNtcChGSVZFKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVEVOKS5jbXAoVEhSRUUpKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH1cbiAgICBuMiA9IG51bS5zaHJuKDEpO1xuICAgIGlmIChzaW1wbGVTaWV2ZShuMikgJiYgc2ltcGxlU2lldmUobnVtKSAmJlxuICAgICAgZmVybWF0VGVzdChuMikgJiYgZmVybWF0VGVzdChudW0pICYmXG4gICAgICBtaWxsZXJSYWJpbi50ZXN0KG4yKSAmJiBtaWxsZXJSYWJpbi50ZXN0KG51bSkpIHtcbiAgICAgIHJldHVybiBudW07XG4gICAgfVxuICB9XG5cbn1cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgICBcIm1vZHAxXCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDJcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDVcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTRcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNhZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNlwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2MzE5OWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTdcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMThcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfVxufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gZXhwb3J0cztcblxuZWxsaXB0aWMudmVyc2lvbiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5lbGxpcHRpYy51dGlscyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvdXRpbHMnKTtcbmVsbGlwdGljLnJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG5lbGxpcHRpYy5jdXJ2ZSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmUnKTtcbmVsbGlwdGljLmN1cnZlcyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmVzJyk7XG5cbi8vIFByb3RvY29sc1xuZWxsaXB0aWMuZWMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VjJyk7XG5lbGxpcHRpYy5lZGRzYSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWRkc2EnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgLy8gR2VuZXJhbGl6ZWQgR3JlZyBNYXh3ZWxsJ3MgdHJpY2tcbiAgdmFyIGFkanVzdENvdW50ID0gdGhpcy5uICYmIHRoaXMucC5kaXYodGhpcy5uKTtcbiAgaWYgKCFhZGp1c3RDb3VudCB8fCBhZGp1c3RDb3VudC5jbXBuKDEwMCkgPiAwKSB7XG4gICAgdGhpcy5yZWROID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9tYXh3ZWxsVHJpY2sgPSB0cnVlO1xuICAgIHRoaXMucmVkTiA9IHRoaXMubi50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gQmFzZUN1cnZlO1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl9maXhlZE5hZk11bCA9IGZ1bmN0aW9uIF9maXhlZE5hZk11bChwLCBrKSB7XG4gIGFzc2VydChwLnByZWNvbXB1dGVkKTtcbiAgdmFyIGRvdWJsZXMgPSBwLl9nZXREb3VibGVzKCk7XG5cbiAgdmFyIG5hZiA9IGdldE5BRihrLCAxKTtcbiAgdmFyIEkgPSAoMSA8PCAoZG91Ymxlcy5zdGVwICsgMSkpIC0gKGRvdWJsZXMuc3RlcCAlIDIgPT09IDAgPyAyIDogMSk7XG4gIEkgLz0gMztcblxuICAvLyBUcmFuc2xhdGUgaW50byBtb3JlIHdpbmRvd2VkIGZvcm1cbiAgdmFyIHJlcHIgPSBbXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBuYWYubGVuZ3RoOyBqICs9IGRvdWJsZXMuc3RlcCkge1xuICAgIHZhciBuYWZXID0gMDtcbiAgICBmb3IgKHZhciBrID0gaiArIGRvdWJsZXMuc3RlcCAtIDE7IGsgPj0gajsgay0tKVxuICAgICAgbmFmVyA9IChuYWZXIDw8IDEpICsgbmFmW2tdO1xuICAgIHJlcHIucHVzaChuYWZXKTtcbiAgfVxuXG4gIHZhciBhID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciBiID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBJOyBpID4gMDsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgbmFmVyA9IHJlcHJbal07XG4gICAgICBpZiAobmFmVyA9PT0gaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0pO1xuICAgICAgZWxzZSBpZiAobmFmVyA9PT0gLWkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdLm5lZygpKTtcbiAgICB9XG4gICAgYSA9IGEuYWRkKGIpO1xuICB9XG4gIHJldHVybiBhLnRvUCgpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bCA9IGZ1bmN0aW9uIF93bmFmTXVsKHAsIGspIHtcbiAgdmFyIHcgPSA0O1xuXG4gIC8vIFByZWNvbXB1dGUgd2luZG93XG4gIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHModyk7XG4gIHcgPSBuYWZQb2ludHMud25kO1xuICB2YXIgd25kID0gbmFmUG9pbnRzLnBvaW50cztcblxuICAvLyBHZXQgTkFGIGZvcm1cbiAgdmFyIG5hZiA9IGdldE5BRihrLCB3KTtcblxuICAvLyBBZGQgYHRoaXNgKihOKzEpIGZvciBldmVyeSB3LU5BRiBpbmRleFxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBuYWYubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyBDb3VudCB6ZXJvZXNcbiAgICBmb3IgKHZhciBrID0gMDsgaSA+PSAwICYmIG5hZltpXSA9PT0gMDsgaS0tKVxuICAgICAgaysrO1xuICAgIGlmIChpID49IDApXG4gICAgICBrKys7XG4gICAgYWNjID0gYWNjLmRibHAoayk7XG5cbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcbiAgICB2YXIgeiA9IG5hZltpXTtcbiAgICBhc3NlcnQoeiAhPT0gMCk7XG4gICAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpIHtcbiAgICAgIC8vIEogKy0gUFxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSiArLSBKXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwLnR5cGUgPT09ICdhZmZpbmUnID8gYWNjLnRvUCgpIDogYWNjO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bEFkZCA9IGZ1bmN0aW9uIF93bmFmTXVsQWRkKGRlZlcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIHduZFdpZHRoID0gdGhpcy5fd25hZlQxO1xuICB2YXIgd25kID0gdGhpcy5fd25hZlQyO1xuICB2YXIgbmFmID0gdGhpcy5fd25hZlQzO1xuXG4gIC8vIEZpbGwgYWxsIGFycmF5c1xuICB2YXIgbWF4ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDE7IGkgLT0gMikge1xuICAgIHZhciBhID0gaSAtIDE7XG4gICAgdmFyIGIgPSBpO1xuICAgIGlmICh3bmRXaWR0aFthXSAhPT0gMSB8fCB3bmRXaWR0aFtiXSAhPT0gMSkge1xuICAgICAgbmFmW2FdID0gZ2V0TkFGKGNvZWZmc1thXSwgd25kV2lkdGhbYV0pO1xuICAgICAgbmFmW2JdID0gZ2V0TkFGKGNvZWZmc1tiXSwgd25kV2lkdGhbYl0pO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdIC8qIDcgKi9cbiAgICBdO1xuXG4gICAgLy8gVHJ5IHRvIGF2b2lkIFByb2plY3RpdmUgcG9pbnRzLCBpZiBwb3NzaWJsZVxuICAgIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55LnJlZE5lZygpKSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IFtcbiAgICAgIC0zLCAvKiAtMSAtMSAqL1xuICAgICAgLTEsIC8qIC0xIDAgKi9cbiAgICAgIC01LCAvKiAtMSAxICovXG4gICAgICAtNywgLyogMCAtMSAqL1xuICAgICAgMCwgLyogMCAwICovXG4gICAgICA3LCAvKiAwIDEgKi9cbiAgICAgIDUsIC8qIDEgLTEgKi9cbiAgICAgIDEsIC8qIDEgMCAqL1xuICAgICAgMyAgLyogMSAxICovXG4gICAgXTtcblxuICAgIHZhciBqc2YgPSBnZXRKU0YoY29lZmZzW2FdLCBjb2VmZnNbYl0pO1xuICAgIG1heCA9IE1hdGgubWF4KGpzZlswXS5sZW5ndGgsIG1heCk7XG4gICAgbmFmW2FdID0gbmV3IEFycmF5KG1heCk7XG4gICAgbmFmW2JdID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXg7IGorKykge1xuICAgICAgdmFyIGphID0ganNmWzBdW2pdIHwgMDtcbiAgICAgIHZhciBqYiA9IGpzZlsxXVtqXSB8IDA7XG5cbiAgICAgIG5hZlthXVtqXSA9IGluZGV4WyhqYSArIDEpICogMyArIChqYiArIDEpXTtcbiAgICAgIG5hZltiXVtqXSA9IDA7XG4gICAgICB3bmRbYV0gPSBjb21iO1xuICAgIH1cbiAgfVxuXG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIHRtcCA9IHRoaXMuX3duYWZUNDtcbiAgZm9yICh2YXIgaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHRtcFtqXSA9IG5hZltqXVtpXSB8IDA7XG4gICAgICAgIGlmICh0bXBbal0gIT09IDApXG4gICAgICAgICAgemVybyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF6ZXJvKVxuICAgICAgICBicmVhaztcbiAgICAgIGsrKztcbiAgICAgIGktLTtcbiAgICB9XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIHZhciB6ID0gdG1wW2pdO1xuICAgICAgdmFyIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgIHduZFtpXSA9IG51bGw7XG5cbiAgaWYgKGphY29iaWFuUmVzdWx0KVxuICAgIHJldHVybiBhY2M7XG4gIGVsc2VcbiAgICByZXR1cm4gYWNjLnRvUCgpO1xufTtcblxuZnVuY3Rpb24gQmFzZVBvaW50KGN1cnZlLCB0eXBlKSB7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IG51bGw7XG59XG5CYXNlQ3VydmUuQmFzZVBvaW50ID0gQmFzZVBvaW50O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEoLypvdGhlciovKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgYnl0ZXMgPSB1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpO1xuXG4gIHZhciBsZW4gPSB0aGlzLnAuYnl0ZUxlbmd0aCgpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCwgaHlicmlkLW9kZCwgaHlicmlkLWV2ZW5cbiAgaWYgKChieXRlc1swXSA9PT0gMHgwNCB8fCBieXRlc1swXSA9PT0gMHgwNiB8fCBieXRlc1swXSA9PT0gMHgwNykgJiZcbiAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IDIgKiBsZW4pIHtcbiAgICBpZiAoYnl0ZXNbMF0gPT09IDB4MDYpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAwKTtcbiAgICBlbHNlIGlmIChieXRlc1swXSA9PT0gMHgwNylcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDEpO1xuXG4gICAgdmFyIHJlcyA9ICB0aGlzLnBvaW50KGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSkgO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZW5jLCBjb21wYWN0KSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5fZW5jb2RlKGNvbXBhY3QpLCBlbmMpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZShwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcHJlY29tcHV0ZWQgPSB7XG4gICAgZG91YmxlczogbnVsbCxcbiAgICBuYWY6IG51bGwsXG4gICAgYmV0YTogbnVsbFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91Ymxlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzID0gZnVuY3Rpb24gX2dldE5BRlBvaW50cyh3bmQpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5uYWYpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO1xuXG4gIHZhciByZXMgPSBbIHRoaXMgXTtcbiAgdmFyIG1heCA9ICgxIDw8IHduZCkgLSAxO1xuICB2YXIgZGJsID0gbWF4ID09PSAxID8gbnVsbCA6IHRoaXMuZGJsKCk7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbWF4OyBpKyspXG4gICAgcmVzW2ldID0gcmVzW2kgLSAxXS5hZGQoZGJsKTtcbiAgcmV0dXJuIHtcbiAgICB3bmQ6IHduZCxcbiAgICBwb2ludHM6IHJlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAoaykge1xuICB2YXIgciA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKVxuICAgIHIgPSByLmRibCgpO1xuICByZXR1cm4gcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IHJlcXVpcmUoJy4uL2N1cnZlJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEVkd2FyZHNDdXJ2ZShjb25mKSB7XG4gIC8vIE5PVEU6IEltcG9ydGFudCBhcyB3ZSBhcmUgY3JlYXRpbmcgcG9pbnQgaW4gQmFzZS5jYWxsKClcbiAgdGhpcy50d2lzdGVkID0gKGNvbmYuYSB8IDApICE9PSAxO1xuICB0aGlzLm1PbmVBID0gdGhpcy50d2lzdGVkICYmIChjb25mLmEgfCAwKSA9PT0gLTE7XG4gIHRoaXMuZXh0ZW5kZWQgPSB0aGlzLm1PbmVBO1xuXG4gIEJhc2UuY2FsbCh0aGlzLCAnZWR3YXJkcycsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS51bW9kKHRoaXMucmVkLm0pO1xuICB0aGlzLmEgPSB0aGlzLmEudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMgPSBuZXcgQk4oY29uZi5jLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMyID0gdGhpcy5jLnJlZFNxcigpO1xuICB0aGlzLmQgPSBuZXcgQk4oY29uZi5kLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmRkID0gdGhpcy5kLnJlZEFkZCh0aGlzLmQpO1xuXG4gIGFzc2VydCghdGhpcy50d2lzdGVkIHx8IHRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSA9PT0gMCk7XG4gIHRoaXMub25lQyA9IChjb25mLmMgfCAwKSA9PT0gMTtcbn1cbmluaGVyaXRzKEVkd2FyZHNDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IEVkd2FyZHNDdXJ2ZTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQSA9IGZ1bmN0aW9uIF9tdWxBKG51bSkge1xuICBpZiAodGhpcy5tT25lQSlcbiAgICByZXR1cm4gbnVtLnJlZE5lZygpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYS5yZWRNdWwobnVtKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEMgPSBmdW5jdGlvbiBfbXVsQyhudW0pIHtcbiAgaWYgKHRoaXMub25lQylcbiAgICByZXR1cm4gbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYy5yZWRNdWwobnVtKTtcbn07XG5cbi8vIEp1c3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTaG9ydCBjdXJ2ZVxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5LCB6LCB0KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bCh4MikpO1xuICB2YXIgbGhzID0gdGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHgyKSk7XG5cbiAgdmFyIHkyID0gcmhzLnJlZE11bChsaHMucmVkSW52bSgpKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWSA9IGZ1bmN0aW9uIHBvaW50RnJvbVkoeSwgb2RkKSB7XG4gIHkgPSBuZXcgQk4oeSwgMTYpO1xuICBpZiAoIXkucmVkKVxuICAgIHkgPSB5LnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyB4XjIgPSAoeV4yIC0gMSkgLyAoZCB5XjIgKyAxKVxuICB2YXIgeTIgPSB5LnJlZFNxcigpO1xuICB2YXIgbGhzID0geTIucmVkU3ViKHRoaXMub25lKTtcbiAgdmFyIHJocyA9IHkyLnJlZE11bCh0aGlzLmQpLnJlZEFkZCh0aGlzLm9uZSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5pc09kZCgpICE9PSBvZGQpXG4gICAgeCA9IHgucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyBDdXJ2ZTogQSAqIFheMiArIFleMiA9IENeMiAqICgxICsgRCAqIFheMiAqIFleMilcbiAgcG9pbnQubm9ybWFsaXplKCk7XG5cbiAgdmFyIHgyID0gcG9pbnQueC5yZWRTcXIoKTtcbiAgdmFyIHkyID0gcG9pbnQueS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHgyLnJlZE11bCh0aGlzLmEpLnJlZEFkZCh5Mik7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bCh4MikucmVkTXVsKHkyKSkpO1xuXG4gIHJldHVybiBsaHMuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeSwgeiwgdCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMuek9uZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IHogPyBuZXcgQk4oeiwgMTYpIDogdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdCAmJiBuZXcgQk4odCwgMTYpO1xuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICh0aGlzLnQgJiYgIXRoaXMudC5yZWQpXG4gICAgICB0aGlzLnQgPSB0aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG5cbiAgICAvLyBVc2UgZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZCAmJiAhdGhpcy50KSB7XG4gICAgICB0aGlzLnQgPSB0aGlzLngucmVkTXVsKHRoaXMueSk7XG4gICAgICBpZiAoIXRoaXMuek9uZSlcbiAgICAgICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTtcbiAgICB9XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCB6LCB0KTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSwgb2JqWzJdKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMueC5jbXBuKDApID09PSAwICYmXG4gICAgICAgICB0aGlzLnkuY21wKHRoaXMueikgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dERibCA9IGZ1bmN0aW9uIF9leHREYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWh3Y2RcbiAgLy8gNE0gKyA0U1xuXG4gIC8vIEEgPSBYMV4yXG4gIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBCID0gWTFeMlxuICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gQyA9IDIgKiBaMV4yXG4gIHZhciBjID0gdGhpcy56LnJlZFNxcigpO1xuICBjID0gYy5yZWRJQWRkKGMpO1xuICAvLyBEID0gYSAqIEFcbiAgdmFyIGQgPSB0aGlzLmN1cnZlLl9tdWxBKGEpO1xuICAvLyBFID0gKFgxICsgWTEpXjIgLSBBIC0gQlxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYik7XG4gIC8vIEcgPSBEICsgQlxuICB2YXIgZyA9IGQucmVkQWRkKGIpO1xuICAvLyBGID0gRyAtIENcbiAgdmFyIGYgPSBnLnJlZFN1YihjKTtcbiAgLy8gSCA9IEQgLSBCXG4gIHZhciBoID0gZC5yZWRTdWIoYik7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakRibCA9IGZ1bmN0aW9uIF9wcm9qRGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1iYmpscFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA3LWJsXG4gIC8vIGFuZCBvdGhlcnNcbiAgLy8gR2VuZXJhbGx5IDNNICsgNFMgb3IgMk0gKyA0U1xuXG4gIC8vIEIgPSAoWDEgKyBZMSleMlxuICB2YXIgYiA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxXjJcbiAgdmFyIGMgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEQgPSBZMV4yXG4gIHZhciBkID0gdGhpcy55LnJlZFNxcigpO1xuXG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBFID0gYSAqIENcbiAgICB2YXIgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgdmFyIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICB2YXIgaiA9IGYucmVkU3ViKGgpLnJlZElTdWIoaCk7XG4gICAgICAvLyBYMyA9IChCLUMtRCkqSlxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRJU3ViKGQpLnJlZE11bChqKTtcbiAgICAgIC8vIFkzID0gRiAqIChFIC0gRClcbiAgICAgIG55ID0gZi5yZWRNdWwoZS5yZWRTdWIoZCkpO1xuICAgICAgLy8gWjMgPSBGICogSlxuICAgICAgbnogPSBmLnJlZE11bChqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRSA9IEMgKyBEXG4gICAgdmFyIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIHZhciBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLmMucmVkTXVsKHRoaXMueikpLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICB2YXIgaiA9IGUucmVkU3ViKGgpLnJlZFN1YihoKTtcbiAgICAvLyBYMyA9IGMgKiAoQiAtIEUpICogSlxuICAgIG54ID0gdGhpcy5jdXJ2ZS5fbXVsQyhiLnJlZElTdWIoZSkpLnJlZE11bChqKTtcbiAgICAvLyBZMyA9IGMgKiBFICogKEMgLSBEKVxuICAgIG55ID0gdGhpcy5jdXJ2ZS5fbXVsQyhlKS5yZWRNdWwoYy5yZWRJU3ViKGQpKTtcbiAgICAvLyBaMyA9IEUgKiBKXG4gICAgbnogPSBlLnJlZE11bChqKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBEb3VibGUgaW4gZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dERibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pEYmwoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0QWRkID0gZnVuY3Rpb24gX2V4dEFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWh3Y2QtM1xuICAvLyA4TVxuXG4gIC8vIEEgPSAoWTEgLSBYMSkgKiAoWTIgLSBYMilcbiAgdmFyIGEgPSB0aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKHAueS5yZWRTdWIocC54KSk7XG4gIC8vIEIgPSAoWTEgKyBYMSkgKiAoWTIgKyBYMilcbiAgdmFyIGIgPSB0aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKHAueS5yZWRBZGQocC54KSk7XG4gIC8vIEMgPSBUMSAqIGsgKiBUMlxuICB2YXIgYyA9IHRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKHAudCk7XG4gIC8vIEQgPSBaMSAqIDIgKiBaMlxuICB2YXIgZCA9IHRoaXMuei5yZWRNdWwocC56LnJlZEFkZChwLnopKTtcbiAgLy8gRSA9IEIgLSBBXG4gIHZhciBlID0gYi5yZWRTdWIoYSk7XG4gIC8vIEYgPSBEIC0gQ1xuICB2YXIgZiA9IGQucmVkU3ViKGMpO1xuICAvLyBHID0gRCArIENcbiAgdmFyIGcgPSBkLnJlZEFkZChjKTtcbiAgLy8gSCA9IEIgKyBBXG4gIHZhciBoID0gYi5yZWRBZGQoYSk7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakFkZCA9IGZ1bmN0aW9uIF9wcm9qQWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtYmJqbHBcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwNy1ibFxuICAvLyAxME0gKyAxU1xuXG4gIC8vIEEgPSBaMSAqIFoyXG4gIHZhciBhID0gdGhpcy56LnJlZE11bChwLnopO1xuICAvLyBCID0gQV4yXG4gIHZhciBiID0gYS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxICogWDJcbiAgdmFyIGMgPSB0aGlzLngucmVkTXVsKHAueCk7XG4gIC8vIEQgPSBZMSAqIFkyXG4gIHZhciBkID0gdGhpcy55LnJlZE11bChwLnkpO1xuICAvLyBFID0gZCAqIEMgKiBEXG4gIHZhciBlID0gdGhpcy5jdXJ2ZS5kLnJlZE11bChjKS5yZWRNdWwoZCk7XG4gIC8vIEYgPSBCIC0gRVxuICB2YXIgZiA9IGIucmVkU3ViKGUpO1xuICAvLyBHID0gQiArIEVcbiAgdmFyIGcgPSBiLnJlZEFkZChlKTtcbiAgLy8gWDMgPSBBICogRiAqICgoWDEgKyBZMSkgKiAoWDIgKyBZMikgLSBDIC0gRClcbiAgdmFyIHRtcCA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwocC54LnJlZEFkZChwLnkpKS5yZWRJU3ViKGMpLnJlZElTdWIoZCk7XG4gIHZhciBueCA9IGEucmVkTXVsKGYpLnJlZE11bCh0bXApO1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIGEgKiBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKHRoaXMuY3VydmUuX211bEEoYykpKTtcbiAgICAvLyBaMyA9IEYgKiBHXG4gICAgbnogPSBmLnJlZE11bChnKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKGMpKTtcbiAgICAvLyBaMyA9IGMgKiBGICogR1xuICAgIG56ID0gdGhpcy5jdXJ2ZS5fbXVsQyhmKS5yZWRNdWwoZyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dEFkZChwKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qQWRkKHApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIGZhbHNlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgaWYgKHRoaXMuek9uZSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgdmFyIHppID0gdGhpcy56LnJlZEludm0oKTtcbiAgdGhpcy54ID0gdGhpcy54LnJlZE11bCh6aSk7XG4gIHRoaXMueSA9IHRoaXMueS5yZWRNdWwoemkpO1xuICBpZiAodGhpcy50KVxuICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwoemkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgdGhpcy56T25lID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnQgJiYgdGhpcy50LnJlZE5lZygpKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEob3RoZXIpIHtcbiAgcmV0dXJuIHRoaXMgPT09IG90aGVyIHx8XG4gICAgICAgICB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy5nZXRZKCkuY21wKG90aGVyLmdldFkoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDb21wYXRpYmlsaXR5IHdpdGggQmFzZUN1cnZlXG5Qb2ludC5wcm90b3R5cGUudG9QID0gUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZTtcblBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IFBvaW50LnByb3RvdHlwZS5hZGQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IGV4cG9ydHM7XG5cbmN1cnZlLmJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbmN1cnZlLnNob3J0ID0gcmVxdWlyZSgnLi9zaG9ydCcpO1xuY3VydmUubW9udCA9IHJlcXVpcmUoJy4vbW9udCcpO1xuY3VydmUuZWR3YXJkcyA9IHJlcXVpcmUoJy4vZWR3YXJkcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNilcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYmFzaXMgPSB0aGlzLl9nZXRFbmRvQmFzaXMobGFtYmRhKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmV0YTogYmV0YSxcbiAgICBsYW1iZGE6IGxhbWJkYSxcbiAgICBiYXNpczogYmFzaXNcbiAgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHMgPSBmdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSkge1xuICAvLyBGaW5kIHJvb3RzIG9mIGZvciB4XjIgKyB4ICsgMSBpbiBGXG4gIC8vIFJvb3QgPSAoLTEgKy0gU3FydCgtMykpIC8gMlxuICAvL1xuICB2YXIgcmVkID0gbnVtID09PSB0aGlzLnAgPyB0aGlzLnJlZCA6IEJOLm1vbnQobnVtKTtcbiAgdmFyIHRpbnYgPSBuZXcgQk4oMikudG9SZWQocmVkKS5yZWRJbnZtKCk7XG4gIHZhciBudGludiA9IHRpbnYucmVkTmVnKCk7XG5cbiAgdmFyIHMgPSBuZXcgQk4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO1xuXG4gIHZhciBsMSA9IG50aW52LnJlZEFkZChzKS5mcm9tUmVkKCk7XG4gIHZhciBsMiA9IG50aW52LnJlZFN1YihzKS5mcm9tUmVkKCk7XG4gIHJldHVybiBbIGwxLCBsMiBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcyA9IGZ1bmN0aW9uIF9nZXRFbmRvQmFzaXMobGFtYmRhKSB7XG4gIC8vIGFwcnhTcXJ0ID49IHNxcnQodGhpcy5uKVxuICB2YXIgYXByeFNxcnQgPSB0aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkgLyAyKSk7XG5cbiAgLy8gMy43NFxuICAvLyBSdW4gRUdDRCwgdW50aWwgcihMICsgMSkgPCBhcHJ4U3FydFxuICB2YXIgdSA9IGxhbWJkYTtcbiAgdmFyIHYgPSB0aGlzLm4uY2xvbmUoKTtcbiAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICB2YXIgeTEgPSBuZXcgQk4oMCk7XG4gIHZhciB4MiA9IG5ldyBCTigwKTtcbiAgdmFyIHkyID0gbmV3IEJOKDEpO1xuXG4gIC8vIE5PVEU6IGFsbCB2ZWN0b3JzIGFyZSByb290cyBvZjogYSArIGIgKiBsYW1iZGEgPSAwIChtb2QgbilcbiAgdmFyIGEwO1xuICB2YXIgYjA7XG4gIC8vIEZpcnN0IHZlY3RvclxuICB2YXIgYTE7XG4gIHZhciBiMTtcbiAgLy8gU2Vjb25kIHZlY3RvclxuICB2YXIgYTI7XG4gIHZhciBiMjtcblxuICB2YXIgcHJldlI7XG4gIHZhciBpID0gMDtcbiAgdmFyIHI7XG4gIHZhciB4O1xuICB3aGlsZSAodS5jbXBuKDApICE9PSAwKSB7XG4gICAgdmFyIHEgPSB2LmRpdih1KTtcbiAgICByID0gdi5zdWIocS5tdWwodSkpO1xuICAgIHggPSB4Mi5zdWIocS5tdWwoeDEpKTtcbiAgICB2YXIgeSA9IHkyLnN1YihxLm11bCh5MSkpO1xuXG4gICAgaWYgKCFhMSAmJiByLmNtcChhcHJ4U3FydCkgPCAwKSB7XG4gICAgICBhMCA9IHByZXZSLm5lZygpO1xuICAgICAgYjAgPSB4MTtcbiAgICAgIGExID0gci5uZWcoKTtcbiAgICAgIGIxID0geDtcbiAgICB9IGVsc2UgaWYgKGExICYmICsraSA9PT0gMikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZXZSID0gcjtcblxuICAgIHYgPSB1O1xuICAgIHUgPSByO1xuICAgIHgyID0geDE7XG4gICAgeDEgPSB4O1xuICAgIHkyID0geTE7XG4gICAgeTEgPSB5O1xuICB9XG4gIGEyID0gci5uZWcoKTtcbiAgYjIgPSB4O1xuXG4gIHZhciBsZW4xID0gYTEuc3FyKCkuYWRkKGIxLnNxcigpKTtcbiAgdmFyIGxlbjIgPSBhMi5zcXIoKS5hZGQoYjIuc3FyKCkpO1xuICBpZiAobGVuMi5jbXAobGVuMSkgPj0gMCkge1xuICAgIGEyID0gYTA7XG4gICAgYjIgPSBiMDtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBzaWduc1xuICBpZiAoYTEubmVnYXRpdmUpIHtcbiAgICBhMSA9IGExLm5lZygpO1xuICAgIGIxID0gYjEubmVnKCk7XG4gIH1cbiAgaWYgKGEyLm5lZ2F0aXZlKSB7XG4gICAgYTIgPSBhMi5uZWcoKTtcbiAgICBiMiA9IGIyLm5lZygpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IGE6IGExLCBiOiBiMSB9LFxuICAgIHsgYTogYTIsIGI6IGIyIH1cbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgbnBvaW50cyA9IHRoaXMuX2VuZG9XbmFmVDE7XG4gIHZhciBuY29lZmZzID0gdGhpcy5fZW5kb1duYWZUMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BsaXQgPSB0aGlzLl9lbmRvU3BsaXQoY29lZmZzW2ldKTtcbiAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgIGlmIChzcGxpdC5rMS5uZWdhdGl2ZSkge1xuICAgICAgc3BsaXQuazEuaW5lZygpO1xuICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgIH1cbiAgICBpZiAoc3BsaXQuazIubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgIGJldGEgPSBiZXRhLm5lZyh0cnVlKTtcbiAgICB9XG5cbiAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgbnBvaW50c1tpICogMiArIDFdID0gYmV0YTtcbiAgICBuY29lZmZzW2kgKiAyXSA9IHNwbGl0LmsxO1xuICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICB9XG4gIHZhciByZXMgPSB0aGlzLl93bmFmTXVsQWRkKDEsIG5wb2ludHMsIG5jb2VmZnMsIGkgKiAyLCBqYWNvYmlhblJlc3VsdCk7XG5cbiAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHtcbiAgICBucG9pbnRzW2pdID0gbnVsbDtcbiAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKGVuZG9NdWwpXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSlcbiAgICB9LFxuICAgIG5hZjogdGhpcy5wcmVjb21wdXRlZC5uYWYgJiYge1xuICAgICAgd25kOiB0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKVxuICAgIH1cbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfSxcbiAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLm5hZi5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfVxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG5cbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFsgdGhpcyBdLCBbIGsgXSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgcmV0dXJuIHRoaXMgPT09IHAgfHxcbiAgICAgICAgIHRoaXMuaW5mID09PSBwLmluZiAmJlxuICAgICAgICAgICAgICh0aGlzLmluZiB8fCB0aGlzLnguY21wKHAueCkgPT09IDAgJiYgdGhpcy55LmNtcChwLnkpID09PSAwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpKTtcbiAgaWYgKF9wcmVjb21wdXRlICYmIHRoaXMucHJlY29tcHV0ZWQpIHtcbiAgICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgICB2YXIgbmVnYXRlID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIHAubmVnKCk7XG4gICAgfTtcbiAgICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0ogPSBmdW5jdGlvbiB0b0ooKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLmN1cnZlLm9uZSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBKUG9pbnQoY3VydmUsIHgsIHksIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2phY29iaWFuJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IG5ldyBCTigwKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgfVxuICBpZiAoIXRoaXMueC5yZWQpXG4gICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnkucmVkKVxuICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy56LnJlZClcbiAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuXG4gIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG59XG5pbmhlcml0cyhKUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHopIHtcbiAgcmV0dXJuIG5ldyBKUG9pbnQodGhpcywgeCwgeSwgeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRvUCA9IGZ1bmN0aW9uIHRvUCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciB6aW52ID0gdGhpcy56LnJlZEludm0oKTtcbiAgdmFyIHppbnYyID0gemludi5yZWRTcXIoKTtcbiAgdmFyIGF4ID0gdGhpcy54LnJlZE11bCh6aW52Mik7XG4gIHZhciBheSA9IHRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCwgYXkpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSwgdGhpcy56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDEyTSArIDRTICsgN0FcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLngucmVkTXVsKHB6Mik7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBmdW5jdGlvbiBtaXhlZEFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHAudG9KKCk7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyA4TSArIDNTICsgN0FcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLng7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIpLnJlZE11bCh0aGlzLnopO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAocG93KSB7XG4gIGlmIChwb3cgPT09IDApXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKCFwb3cpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3c7IGkrKylcbiAgICAgIHIgPSByLmRibCgpO1xuICAgIHJldHVybiByO1xuICB9XG5cbiAgLy8gMU0gKyAyUyArIDFBICsgTiAqICg0UyArIDVNICsgOEEpXG4gIC8vIE4gPSAxID0+IDZNICsgNlMgKyA5QVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcbiAgdmFyIHRpbnYgPSB0aGlzLmN1cnZlLnRpbnY7XG5cbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIC8vIFJldXNlIHJlc3VsdHNcbiAgdmFyIGp5ZCA9IGp5LnJlZEFkZChqeSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspIHtcbiAgICB2YXIgangyID0gangucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDIgPSBqeWQucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDQgPSBqeWQyLnJlZFNxcigpO1xuICAgIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gICAgdmFyIHQxID0gangucmVkTXVsKGp5ZDIpO1xuICAgIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcbiAgICB2YXIgZG55ID0gYy5yZWRNdWwodDIpO1xuICAgIGRueSA9IGRueS5yZWRJQWRkKGRueSkucmVkSVN1YihqeWQ0KTtcbiAgICB2YXIgbnogPSBqeWQucmVkTXVsKGp6KTtcbiAgICBpZiAoaSArIDEgPCBwb3cpXG4gICAgICBqejQgPSBqejQucmVkTXVsKGp5ZDQpO1xuXG4gICAganggPSBueDtcbiAgICBqeiA9IG56O1xuICAgIGp5ZCA9IGRueTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChqeCwganlkLnJlZE11bCh0aW52KSwganopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5femVyb0RibCgpO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLnRocmVlQSlcbiAgICByZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9kYmwoKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3plcm9EYmwgPSBmdW5jdGlvbiBfemVyb0RibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTRBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYTsgYSA9IDBcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gICAgLy8gVCA9IE0gXiAyIC0gMipTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcblxuICAgIC8vIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcblxuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyKlkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA5LWxcbiAgICAvLyAyTSArIDVTICsgMTNBXG5cbiAgICAvLyBBID0gWDFeMlxuICAgIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIEIgPSBZMV4yXG4gICAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gQyA9IEJeMlxuICAgIHZhciBjID0gYi5yZWRTcXIoKTtcbiAgICAvLyBEID0gMiAqICgoWDEgKyBCKV4yIC0gQSAtIEMpXG4gICAgdmFyIGQgPSB0aGlzLngucmVkQWRkKGIpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihjKTtcbiAgICBkID0gZC5yZWRJQWRkKGQpO1xuICAgIC8vIEUgPSAzICogQVxuICAgIHZhciBlID0gYS5yZWRBZGQoYSkucmVkSUFkZChhKTtcbiAgICAvLyBGID0gRV4yXG4gICAgdmFyIGYgPSBlLnJlZFNxcigpO1xuXG4gICAgLy8gOCAqIENcbiAgICB2YXIgYzggPSBjLnJlZElBZGQoYyk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuXG4gICAgLy8gWDMgPSBGIC0gMiAqIERcbiAgICBueCA9IGYucmVkSVN1YihkKS5yZWRJU3ViKGQpO1xuICAgIC8vIFkzID0gRSAqIChEIC0gWDMpIC0gOCAqIENcbiAgICBueSA9IGUucmVkTXVsKGQucmVkSVN1YihueCkpLnJlZElTdWIoYzgpO1xuICAgIC8vIFozID0gMiAqIFkxICogWjFcbiAgICBueiA9IHRoaXMueS5yZWRNdWwodGhpcy56KTtcbiAgICBueiA9IG56LnJlZElBZGQobnopO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fdGhyZWVEYmwgPSBmdW5jdGlvbiBfdGhyZWVEYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE1QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGFcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCkucmVkSUFkZCh0aGlzLmN1cnZlLmEpO1xuICAgIC8vIFQgPSBNXjIgLSAyICogU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMiAqIFkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWwjZG91YmxpbmctZGJsLTIwMDEtYlxuICAgIC8vIDNNICsgNVNcblxuICAgIC8vIGRlbHRhID0gWjFeMlxuICAgIHZhciBkZWx0YSA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAvLyBnYW1tYSA9IFkxXjJcbiAgICB2YXIgZ2FtbWEgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gYmV0YSA9IFgxICogZ2FtbWFcbiAgICB2YXIgYmV0YSA9IHRoaXMueC5yZWRNdWwoZ2FtbWEpO1xuICAgIC8vIGFscGhhID0gMyAqIChYMSAtIGRlbHRhKSAqIChYMSArIGRlbHRhKVxuICAgIHZhciBhbHBoYSA9IHRoaXMueC5yZWRTdWIoZGVsdGEpLnJlZE11bCh0aGlzLngucmVkQWRkKGRlbHRhKSk7XG4gICAgYWxwaGEgPSBhbHBoYS5yZWRBZGQoYWxwaGEpLnJlZElBZGQoYWxwaGEpO1xuICAgIC8vIFgzID0gYWxwaGFeMiAtIDggKiBiZXRhXG4gICAgdmFyIGJldGE0ID0gYmV0YS5yZWRJQWRkKGJldGEpO1xuICAgIGJldGE0ID0gYmV0YTQucmVkSUFkZChiZXRhNCk7XG4gICAgdmFyIGJldGE4ID0gYmV0YTQucmVkQWRkKGJldGE0KTtcbiAgICBueCA9IGFscGhhLnJlZFNxcigpLnJlZElTdWIoYmV0YTgpO1xuICAgIC8vIFozID0gKFkxICsgWjEpXjIgLSBnYW1tYSAtIGRlbHRhXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihnYW1tYSkucmVkSVN1YihkZWx0YSk7XG4gICAgLy8gWTMgPSBhbHBoYSAqICg0ICogYmV0YSAtIFgzKSAtIDggKiBnYW1tYV4yXG4gICAgdmFyIGdnYW1tYTggPSBnYW1tYS5yZWRTcXIoKTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBueSA9IGFscGhhLnJlZE11bChiZXRhNC5yZWRJU3ViKG54KSkucmVkSVN1YihnZ2FtbWE4KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX2RibCA9IGZ1bmN0aW9uIF9kYmwoKSB7XG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIC8vIDRNICsgNlMgKyAxMEFcbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgdmFyIGp5MiA9IGp5LnJlZFNxcigpO1xuXG4gIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gIHZhciBqeGQ0ID0gangucmVkQWRkKGp4KTtcbiAganhkNCA9IGp4ZDQucmVkSUFkZChqeGQ0KTtcbiAgdmFyIHQxID0ganhkNC5yZWRNdWwoankyKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcblxuICB2YXIganlkOCA9IGp5Mi5yZWRTcXIoKTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodDIpLnJlZElTdWIoanlkOCk7XG4gIHZhciBueiA9IGp5LnJlZEFkZChqeSkucmVkTXVsKGp6KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRycGwgPSBmdW5jdGlvbiB0cnBsKCkge1xuICBpZiAoIXRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCkuYWRkKHRoaXMpO1xuXG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sI3RyaXBsaW5nLXRwbC0yMDA3LWJsXG4gIC8vIDVNICsgMTBTICsgLi4uXG5cbiAgLy8gWFggPSBYMV4yXG4gIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gWVkgPSBZMV4yXG4gIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gWlogPSBaMV4yXG4gIHZhciB6eiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgLy8gWVlZWSA9IFlZXjJcbiAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgLy8gTSA9IDMgKiBYWCArIGEgKiBaWjI7IGEgPSAwXG4gIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgLy8gTU0gPSBNXjJcbiAgdmFyIG1tID0gbS5yZWRTcXIoKTtcbiAgLy8gRSA9IDYgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpIC0gTU1cbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICBlID0gZS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRBZGQoZSkucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkSVN1YihtbSk7XG4gIC8vIEVFID0gRV4yXG4gIHZhciBlZSA9IGUucmVkU3FyKCk7XG4gIC8vIFQgPSAxNipZWVlZXG4gIHZhciB0ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICAvLyBVID0gKE0gKyBFKV4yIC0gTU0gLSBFRSAtIFRcbiAgdmFyIHUgPSBtLnJlZElBZGQoZSkucmVkU3FyKCkucmVkSVN1YihtbSkucmVkSVN1YihlZSkucmVkSVN1Yih0KTtcbiAgLy8gWDMgPSA0ICogKFgxICogRUUgLSA0ICogWVkgKiBVKVxuICB2YXIgeXl1NCA9IHl5LnJlZE11bCh1KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgdmFyIG54ID0gdGhpcy54LnJlZE11bChlZSkucmVkSVN1Yih5eXU0KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgLy8gWTMgPSA4ICogWTEgKiAoVSAqIChUIC0gVSkgLSBFICogRUUpXG4gIHZhciBueSA9IHRoaXMueS5yZWRNdWwodS5yZWRNdWwodC5yZWRJU3ViKHUpKS5yZWRJU3ViKGUucmVkTXVsKGVlKSkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICAvLyBaMyA9IChaMSArIEUpXjIgLSBaWiAtIEVFXG4gIHZhciBueiA9IHRoaXMuei5yZWRBZGQoZSkucmVkU3FyKCkucmVkSVN1Yih6eikucmVkSVN1YihlZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaywga2Jhc2UpIHtcbiAgayA9IG5ldyBCTihrLCBrYmFzZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICByZXR1cm4gdGhpcy5lcShwLnRvSigpKTtcblxuICBpZiAodGhpcyA9PT0gcClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyB4MSAqIHoyXjIgPT0geDIgKiB6MV4yXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgaWYgKHRoaXMueC5yZWRNdWwocHoyKS5yZWRJU3ViKHAueC5yZWRNdWwoejIpKS5jbXBuKDApICE9PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyB5MSAqIHoyXjMgPT0geTIgKiB6MV4zXG4gIHZhciB6MyA9IHoyLnJlZE11bCh0aGlzLnopO1xuICB2YXIgcHozID0gcHoyLnJlZE11bChwLnopO1xuICByZXR1cm4gdGhpcy55LnJlZE11bChwejMpLnJlZElTdWIocC55LnJlZE11bCh6MykpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciB6cyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHpzKTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHpzKTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIEpQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBKUG9pbnQgeDogJyArIHRoaXMueC50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnoudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlcyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vZWxsaXB0aWMnKTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gUHJlc2V0Q3VydmUob3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlID09PSAnc2hvcnQnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuc2hvcnQob3B0aW9ucyk7XG4gIGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ2Vkd2FyZHMnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuZWR3YXJkcyhvcHRpb25zKTtcbiAgZWxzZVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUubW9udChvcHRpb25zKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaDtcblxuICBhc3NlcnQodGhpcy5nLnZhbGlkYXRlKCksICdJbnZhbGlkIGN1cnZlJyk7XG4gIGFzc2VydCh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCAnSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8nKTtcbn1cbmN1cnZlcy5QcmVzZXRDdXJ2ZSA9IFByZXNldEN1cnZlO1xuXG5mdW5jdGlvbiBkZWZpbmVDdXJ2ZShuYW1lLCBvcHRpb25zKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGN1cnZlID0gbmV3IFByZXNldEN1cnZlKG9wdGlvbnMpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBjdXJ2ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3VydmU7XG4gICAgfVxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyMjQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDIyNCcsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZScsXG4gIGI6ICdiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCcsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMScsXG4gICAgJ2JkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0J1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyNTYnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNWFjNjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGInLFxuICBuOiAnZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYnLFxuICAgICc0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3A1MjEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICcwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiAnICtcbiAgICAgJzk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICcgK1xuICAgICAnM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAnLFxuICBuOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAnICtcbiAgICAgJ2Y3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5JyxcbiAgaGFzaDogaGFzaC5zaGE1MTIsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICcgK1xuICAgICcwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyAnICtcbiAgICAnYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYnLFxuICAgICcwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAnICtcbiAgICAnNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgJyArXG4gICAgJzNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ2N1cnZlMjU1MTknLCB7XG4gIHR5cGU6ICdtb250JyxcbiAgcHJpbWU6ICdwMjU1MTknLFxuICBwOiAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcsXG4gIGE6ICc3NmQwNicsXG4gIGI6ICcxJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnOSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4J1xuICBdXG59KTtcblxudmFyIHByZTtcbnRyeSB7XG4gIHByZSA9IHJlcXVpcmUoJy4vcHJlY29tcHV0ZWQvc2VjcDI1NmsxJyk7XG59IGNhdGNoIChlKSB7XG4gIHByZSA9IHVuZGVmaW5lZDtcbn1cblxuZGVmaW5lQ3VydmUoJ3NlY3AyNTZrMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdrMjU2JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyxcbiAgYTogJzAnLFxuICBiOiAnNycsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MScsXG4gIGg6ICcxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG5cbiAgLy8gUHJlY29tcHV0ZWQgZW5kb21vcnBoaXNtXG4gIGJldGE6ICc3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlJyxcbiAgbGFtYmRhOiAnNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MicsXG4gIGJhc2lzOiBbXG4gICAge1xuICAgICAgYTogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1JyxcbiAgICAgIGI6ICctZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMnXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSdcbiAgICB9XG4gIF0sXG5cbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCcsXG4gICAgJzQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgnLFxuICAgIHByZVxuICBdXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBIbWFjRFJCRyA9IHJlcXVpcmUoJ2htYWMtZHJiZycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxudmFyIEtleVBhaXIgPSByZXF1aXJlKCcuL2tleScpO1xudmFyIFNpZ25hdHVyZSA9IHJlcXVpcmUoJy4vc2lnbmF0dXJlJyk7XG5cbmZ1bmN0aW9uIEVDKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVDKSlcbiAgICByZXR1cm4gbmV3IEVDKG9wdGlvbnMpO1xuXG4gIC8vIFNob3J0Y3V0IGBlbGxpcHRpYy5lYyhjdXJ2ZS1uYW1lKWBcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIGFzc2VydChlbGxpcHRpYy5jdXJ2ZXMuaGFzT3duUHJvcGVydHkob3B0aW9ucyksICdVbmtub3duIGN1cnZlICcgKyBvcHRpb25zKTtcblxuICAgIG9wdGlvbnMgPSBlbGxpcHRpYy5jdXJ2ZXNbb3B0aW9uc107XG4gIH1cblxuICAvLyBTaG9ydGN1dCBmb3IgYGVsbGlwdGljLmVjKGVsbGlwdGljLmN1cnZlcy5jdXJ2ZU5hbWUpYFxuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIGVsbGlwdGljLmN1cnZlcy5QcmVzZXRDdXJ2ZSlcbiAgICBvcHRpb25zID0geyBjdXJ2ZTogb3B0aW9ucyB9O1xuXG4gIHRoaXMuY3VydmUgPSBvcHRpb25zLmN1cnZlLmN1cnZlO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMubmggPSB0aGlzLm4udXNocm4oMSk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcblxuICAvLyBQb2ludCBvbiBjdXJ2ZVxuICB0aGlzLmcgPSBvcHRpb25zLmN1cnZlLmc7XG4gIHRoaXMuZy5wcmVjb21wdXRlKG9wdGlvbnMuY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIC8vIEhhc2ggZm9yIGZ1bmN0aW9uIGZvciBEUkJHXG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaCB8fCBvcHRpb25zLmN1cnZlLmhhc2g7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEVDO1xuXG5FQy5wcm90b3R5cGUua2V5UGFpciA9IGZ1bmN0aW9uIGtleVBhaXIob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEtleVBhaXIodGhpcywgb3B0aW9ucyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVByaXZhdGUgPSBmdW5jdGlvbiBrZXlGcm9tUHJpdmF0ZShwcml2LCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVByaXZhdGUodGhpcywgcHJpdiwgZW5jKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1YiwgZW5jKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZW5LZXlQYWlyID0gZnVuY3Rpb24gZ2VuS2V5UGFpcihvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IEhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuYyB8fCAndXRmOCcsXG4gICAgZW50cm9weTogb3B0aW9ucy5lbnRyb3B5IHx8IGVsbGlwdGljLnJhbmQodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksXG4gICAgZW50cm9weUVuYzogb3B0aW9ucy5lbnRyb3B5ICYmIG9wdGlvbnMuZW50cm9weUVuYyB8fCAndXRmOCcsXG4gICAgbm9uY2U6IHRoaXMubi50b0FycmF5KClcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZG8ge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH0gd2hpbGUgKHRydWUpO1xufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIHRydW5jYXRlVG9OKG1zZywgdHJ1bmNPbmx5KSB7XG4gIHZhciBkZWx0YSA9IG1zZy5ieXRlTGVuZ3RoKCkgKiA4IC0gdGhpcy5uLmJpdExlbmd0aCgpO1xuICBpZiAoZGVsdGEgPiAwKVxuICAgIG1zZyA9IG1zZy51c2hybihkZWx0YSk7XG4gIGlmICghdHJ1bmNPbmx5ICYmIG1zZy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBtc2cuc3ViKHRoaXMubik7XG4gIGVsc2VcbiAgICByZXR1cm4gbXNnO1xufTtcblxuRUMucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywga2V5LCBlbmMsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBlbmMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAga2V5ID0gdGhpcy5rZXlGcm9tUHJpdmF0ZShrZXksIGVuYyk7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG5cbiAgLy8gWmVyby1leHRlbmQga2V5IHRvIHByb3ZpZGUgZW5vdWdoIGVudHJvcHlcbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIGJrZXkgPSBrZXkuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIG5vbmNlIHRvIGhhdmUgdGhlIHNhbWUgYnl0ZSBzaXplIGFzIE5cbiAgdmFyIG5vbmNlID0gbXNnLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBIbWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIGVudHJvcHk6IGJrZXksXG4gICAgbm9uY2U6IG5vbmNlLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmMgfHwgJ3V0ZjgnXG4gIH0pO1xuXG4gIC8vIE51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZVxuICB2YXIgbnMxID0gdGhpcy5uLnN1YihuZXcgQk4oMSkpO1xuXG4gIGZvciAodmFyIGl0ZXIgPSAwOyB0cnVlOyBpdGVyKyspIHtcbiAgICB2YXIgayA9IG9wdGlvbnMuayA/XG4gICAgICAgIG9wdGlvbnMuayhpdGVyKSA6XG4gICAgICAgIG5ldyBCTihkcmJnLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtcbiAgICBrID0gdGhpcy5fdHJ1bmNhdGVUb04oaywgdHJ1ZSk7XG4gICAgaWYgKGsuY21wbigxKSA8PSAwIHx8IGsuY21wKG5zMSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwID0gdGhpcy5nLm11bChrKTtcbiAgICBpZiAoa3AuaXNJbmZpbml0eSgpKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3BYID0ga3AuZ2V0WCgpO1xuICAgIHZhciByID0ga3BYLnVtb2QodGhpcy5uKTtcbiAgICBpZiAoci5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcyA9IGsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO1xuICAgIHMgPSBzLnVtb2QodGhpcy5uKTtcbiAgICBpZiAocy5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcmVjb3ZlcnlQYXJhbSA9IChrcC5nZXRZKCkuaXNPZGQoKSA/IDEgOiAwKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoa3BYLmNtcChyKSAhPT0gMCA/IDIgOiAwKTtcblxuICAgIC8vIFVzZSBjb21wbGVtZW50IG9mIGBzYCwgaWYgaXQgaXMgPiBgbiAvIDJgXG4gICAgaWYgKG9wdGlvbnMuY2Fub25pY2FsICYmIHMuY21wKHRoaXMubmgpID4gMCkge1xuICAgICAgcyA9IHRoaXMubi5zdWIocyk7XG4gICAgICByZWNvdmVyeVBhcmFtIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoeyByOiByLCBzOiBzLCByZWNvdmVyeVBhcmFtOiByZWNvdmVyeVBhcmFtIH0pO1xuICB9XG59O1xuXG5FQy5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlLCBrZXksIGVuYykge1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuICBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMoa2V5LCBlbmMpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgJ2hleCcpO1xuXG4gIC8vIFBlcmZvcm0gcHJpbWl0aXZlIHZhbHVlcyB2YWxpZGF0aW9uXG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG4gIGlmIChyLmNtcG4oMSkgPCAwIHx8IHIuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzLmNtcG4oMSkgPCAwIHx8IHMuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGUgc2lnbmF0dXJlXG4gIHZhciBzaW52ID0gcy5pbnZtKHRoaXMubik7XG4gIHZhciB1MSA9IHNpbnYubXVsKG1zZykudW1vZCh0aGlzLm4pO1xuICB2YXIgdTIgPSBzaW52Lm11bChyKS51bW9kKHRoaXMubik7XG5cbiAgaWYgKCF0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2spIHtcbiAgICB2YXIgcCA9IHRoaXMuZy5tdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICAgIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBwLmdldFgoKS51bW9kKHRoaXMubikuY21wKHIpID09PSAwO1xuICB9XG5cbiAgLy8gTk9URTogR3JlZyBNYXh3ZWxsJ3MgdHJpY2ssIGluc3BpcmVkIGJ5OlxuICAvLyBodHRwczovL2dpdC5pby92YWQzS1xuXG4gIHZhciBwID0gdGhpcy5nLmptdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIENvbXBhcmUgYHAueGAgb2YgSmFjb2JpYW4gcG9pbnQgd2l0aCBgcmAsXG4gIC8vIHRoaXMgd2lsbCBkbyBgcC54ID09IHIgKiBwLnpeMmAgaW5zdGVhZCBvZiBtdWx0aXBseWluZyBgcC54YCBieSB0aGVcbiAgLy8gaW52ZXJzZSBvZiBgcC56XjJgXG4gIHJldHVybiBwLmVxWFRvUChyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5ID0gZnVuY3Rpb24obXNnLCBzaWduYXR1cmUsIGosIGVuYykge1xuICBhc3NlcnQoKDMgJiBqKSA9PT0gaiwgJ1RoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMnKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG5cbiAgdmFyIG4gPSB0aGlzLm47XG4gIHZhciBlID0gbmV3IEJOKG1zZyk7XG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG5cbiAgLy8gQSBzZXQgTFNCIHNpZ25pZmllcyB0aGF0IHRoZSB5LWNvb3JkaW5hdGUgaXMgb2RkXG4gIHZhciBpc1lPZGQgPSBqICYgMTtcbiAgdmFyIGlzU2Vjb25kS2V5ID0gaiA+PiAxO1xuICBpZiAoci5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSkgPj0gMCAmJiBpc1NlY29uZEtleSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZScpO1xuXG4gIC8vIDEuMS4gTGV0IHggPSByICsgam4uXG4gIGlmIChpc1NlY29uZEtleSlcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIuYWRkKHRoaXMuY3VydmUubiksIGlzWU9kZCk7XG4gIGVsc2VcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIsIGlzWU9kZCk7XG5cbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICB2YXIgczEgPSBuLnN1YihlKS5tdWwockludikudW1vZChuKTtcbiAgdmFyIHMyID0gcy5tdWwockludikudW1vZChuKTtcblxuICAvLyAxLjYuMSBDb21wdXRlIFEgPSByXi0xIChzUiAtICBlRylcbiAgLy8gICAgICAgICAgICAgICBRID0gcl4tMSAoc1IgKyAtZUcpXG4gIHJldHVybiB0aGlzLmcubXVsQWRkKHMxLCByLCBzMik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gS2V5UGFpcihlYywgb3B0aW9ucykge1xuICB0aGlzLmVjID0gZWM7XG4gIHRoaXMucHJpdiA9IG51bGw7XG4gIHRoaXMucHViID0gbnVsbDtcblxuICAvLyBLZXlQYWlyKGVjLCB7IHByaXY6IC4uLiwgcHViOiAuLi4gfSlcbiAgaWYgKG9wdGlvbnMucHJpdilcbiAgICB0aGlzLl9pbXBvcnRQcml2YXRlKG9wdGlvbnMucHJpdiwgb3B0aW9ucy5wcml2RW5jKTtcbiAgaWYgKG9wdGlvbnMucHViKVxuICAgIHRoaXMuX2ltcG9ydFB1YmxpYyhvcHRpb25zLnB1Yiwgb3B0aW9ucy5wdWJFbmMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVjLCBwdWIsIGVuYykge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHB1YjogcHViLFxuICAgIHB1YkVuYzogZW5jXG4gIH0pO1xufTtcblxuS2V5UGFpci5mcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGZyb21Qcml2YXRlKGVjLCBwcml2LCBlbmMpIHtcbiAgaWYgKHByaXYgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwcml2O1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHByaXY6IHByaXYsXG4gICAgcHJpdkVuYzogZW5jXG4gIH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdmFyIHB1YiA9IHRoaXMuZ2V0UHVibGljKCk7XG5cbiAgaWYgKHB1Yi5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnSW52YWxpZCBwdWJsaWMga2V5JyB9O1xuICBpZiAoIXB1Yi52YWxpZGF0ZSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQnIH07XG4gIGlmICghcHViLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdQdWJsaWMga2V5ICogTiAhPSBPJyB9O1xuXG4gIHJldHVybiB7IHJlc3VsdDogdHJ1ZSwgcmVhc29uOiBudWxsIH07XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoY29tcGFjdCwgZW5jKSB7XG4gIC8vIGNvbXBhY3QgaXMgb3B0aW9uYWwgYXJndW1lbnRcbiAgaWYgKHR5cGVvZiBjb21wYWN0ID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGNvbXBhY3Q7XG4gICAgY29tcGFjdCA9IG51bGw7XG4gIH1cblxuICBpZiAoIXRoaXMucHViKVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5nLm11bCh0aGlzLnByaXYpO1xuXG4gIGlmICghZW5jKVxuICAgIHJldHVybiB0aGlzLnB1YjtcblxuICByZXR1cm4gdGhpcy5wdWIuZW5jb2RlKGVuYywgY29tcGFjdCk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQcml2YXRlID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZShlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHRoaXMucHJpdi50b1N0cmluZygxNiwgMik7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5wcml2O1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGUgPSBmdW5jdGlvbiBfaW1wb3J0UHJpdmF0ZShrZXksIGVuYykge1xuICB0aGlzLnByaXYgPSBuZXcgQk4oa2V5LCBlbmMgfHwgMTYpO1xuXG4gIC8vIEVuc3VyZSB0aGF0IHRoZSBwcml2IHdvbid0IGJlIGJpZ2dlciB0aGFuIG4sIG90aGVyd2lzZSB3ZSBtYXkgZmFpbFxuICAvLyBpbiBmaXhlZCBtdWx0aXBsaWNhdGlvbiBtZXRob2RcbiAgdGhpcy5wcml2ID0gdGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQdWJsaWMgPSBmdW5jdGlvbiBfaW1wb3J0UHVibGljKGtleSwgZW5jKSB7XG4gIGlmIChrZXkueCB8fCBrZXkueSkge1xuICAgIC8vIE1vbnRnb21lcnkgcG9pbnRzIG9ubHkgaGF2ZSBhbiBgeGAgY29vcmRpbmF0ZS5cbiAgICAvLyBXZWllcnN0cmFzcy9FZHdhcmRzIHBvaW50cyBvbiB0aGUgb3RoZXIgaGFuZCBoYXZlIGJvdGggYHhgIGFuZFxuICAgIC8vIGB5YCBjb29yZGluYXRlcy5cbiAgICBpZiAodGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnbW9udCcpIHtcbiAgICAgIGFzc2VydChrZXkueCwgJ05lZWQgeCBjb29yZGluYXRlJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdzaG9ydCcgfHxcbiAgICAgICAgICAgICAgIHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ2Vkd2FyZHMnKSB7XG4gICAgICBhc3NlcnQoa2V5LnggJiYga2V5LnksICdOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlJyk7XG4gICAgfVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5wb2ludChrZXkueCwga2V5LnkpO1xuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLnB1YiA9IHRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoa2V5LCBlbmMpO1xufTtcblxuLy8gRUNESFxuS2V5UGFpci5wcm90b3R5cGUuZGVyaXZlID0gZnVuY3Rpb24gZGVyaXZlKHB1Yikge1xuICByZXR1cm4gcHViLm11bCh0aGlzLnByaXYpLmdldFgoKTtcbn07XG5cbi8vIEVDRFNBXG5LZXlQYWlyLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtc2csIGVuYywgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5lYy5zaWduKG1zZywgdGhpcywgZW5jLCBvcHRpb25zKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtc2csIHNpZ25hdHVyZSkge1xuICByZXR1cm4gdGhpcy5lYy52ZXJpZnkobXNnLCBzaWduYXR1cmUsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIHJldHVybiAnPEtleSBwcml2OiAnICsgKHRoaXMucHJpdiAmJiB0aGlzLnByaXYudG9TdHJpbmcoMTYsIDIpKSArXG4gICAgICAgICAnIHB1YjogJyArICh0aGlzLnB1YiAmJiB0aGlzLnB1Yi5pbnNwZWN0KCkpICsgJyA+Jztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFNpZ25hdHVyZShvcHRpb25zLCBlbmMpIHtcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX2ltcG9ydERFUihvcHRpb25zLCBlbmMpKVxuICAgIHJldHVybjtcblxuICBhc3NlcnQob3B0aW9ucy5yICYmIG9wdGlvbnMucywgJ1NpZ25hdHVyZSB3aXRob3V0IHIgb3IgcycpO1xuICB0aGlzLnIgPSBuZXcgQk4ob3B0aW9ucy5yLCAxNik7XG4gIHRoaXMucyA9IG5ldyBCTihvcHRpb25zLnMsIDE2KTtcbiAgaWYgKG9wdGlvbnMucmVjb3ZlcnlQYXJhbSA9PT0gdW5kZWZpbmVkKVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG4gIGVsc2VcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBvcHRpb25zLnJlY292ZXJ5UGFyYW07XG59XG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcblxuZnVuY3Rpb24gUG9zaXRpb24oKSB7XG4gIHRoaXMucGxhY2UgPSAwO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGgoYnVmLCBwKSB7XG4gIHZhciBpbml0aWFsID0gYnVmW3AucGxhY2UrK107XG4gIGlmICghKGluaXRpYWwgJiAweDgwKSkge1xuICAgIHJldHVybiBpbml0aWFsO1xuICB9XG4gIHZhciBvY3RldExlbiA9IGluaXRpYWwgJiAweGY7XG4gIHZhciB2YWwgPSAwO1xuICBmb3IgKHZhciBpID0gMCwgb2ZmID0gcC5wbGFjZTsgaSA8IG9jdGV0TGVuOyBpKyssIG9mZisrKSB7XG4gICAgdmFsIDw8PSA4O1xuICAgIHZhbCB8PSBidWZbb2ZmXTtcbiAgfVxuICBwLnBsYWNlID0gb2ZmO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBybVBhZGRpbmcoYnVmKSB7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICB3aGlsZSAoIWJ1ZltpXSAmJiAhKGJ1ZltpICsgMV0gJiAweDgwKSAmJiBpIDwgbGVuKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLl9pbXBvcnRERVIgPSBmdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsIGVuYykge1xuICBkYXRhID0gdXRpbHMudG9BcnJheShkYXRhLCBlbmMpO1xuICB2YXIgcCA9IG5ldyBQb3NpdGlvbigpO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDMwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmICgobGVuICsgcC5wbGFjZSkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHJsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIHZhciByID0gZGF0YS5zbGljZShwLnBsYWNlLCBybGVuICsgcC5wbGFjZSk7XG4gIHAucGxhY2UgKz0gcmxlbjtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgwMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgc2xlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzbGVuICsgcC5wbGFjZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcyA9IGRhdGEuc2xpY2UocC5wbGFjZSwgc2xlbiArIHAucGxhY2UpO1xuICBpZiAoclswXSA9PT0gMCAmJiAoclsxXSAmIDB4ODApKSB7XG4gICAgciA9IHIuc2xpY2UoMSk7XG4gIH1cbiAgaWYgKHNbMF0gPT09IDAgJiYgKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG5cbiAgdGhpcy5yID0gbmV3IEJOKHIpO1xuICB0aGlzLnMgPSBuZXcgQk4ocyk7XG4gIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA8IDB4ODApIHtcbiAgICBhcnIucHVzaChsZW4pO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgb2N0ZXRzID0gMSArIChNYXRoLmxvZyhsZW4pIC8gTWF0aC5MTjIgPj4+IDMpO1xuICBhcnIucHVzaChvY3RldHMgfCAweDgwKTtcbiAgd2hpbGUgKC0tb2N0ZXRzKSB7XG4gICAgYXJyLnB1c2goKGxlbiA+Pj4gKG9jdGV0cyA8PCAzKSkgJiAweGZmKTtcbiAgfVxuICBhcnIucHVzaChsZW4pO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvREVSID0gZnVuY3Rpb24gdG9ERVIoZW5jKSB7XG4gIHZhciByID0gdGhpcy5yLnRvQXJyYXkoKTtcbiAgdmFyIHMgPSB0aGlzLnMudG9BcnJheSgpO1xuXG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHJbMF0gJiAweDgwKVxuICAgIHIgPSBbIDAgXS5jb25jYXQocik7XG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHNbMF0gJiAweDgwKVxuICAgIHMgPSBbIDAgXS5jb25jYXQocyk7XG5cbiAgciA9IHJtUGFkZGluZyhyKTtcbiAgcyA9IHJtUGFkZGluZyhzKTtcblxuICB3aGlsZSAoIXNbMF0gJiYgIShzWzFdICYgMHg4MCkpIHtcbiAgICBzID0gcy5zbGljZSgxKTtcbiAgfVxuICB2YXIgYXJyID0gWyAweDAyIF07XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHIubGVuZ3RoKTtcbiAgYXJyID0gYXJyLmNvbmNhdChyKTtcbiAgYXJyLnB1c2goMHgwMik7XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHMubGVuZ3RoKTtcbiAgdmFyIGJhY2tIYWxmID0gYXJyLmNvbmNhdChzKTtcbiAgdmFyIHJlcyA9IFsgMHgzMCBdO1xuICBjb25zdHJ1Y3RMZW5ndGgocmVzLCBiYWNrSGFsZi5sZW5ndGgpO1xuICByZXMgPSByZXMuY29uY2F0KGJhY2tIYWxmKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUREU0EoY3VydmUpIHtcbiAgYXNzZXJ0KGN1cnZlID09PSAnZWQyNTUxOScsICdvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyJyk7XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVERFNBKSlcbiAgICByZXR1cm4gbmV3IEVERFNBKGN1cnZlKTtcblxuICB2YXIgY3VydmUgPSBlbGxpcHRpYy5jdXJ2ZXNbY3VydmVdLmN1cnZlO1xuICB0aGlzLmN1cnZlID0gY3VydmU7XG4gIHRoaXMuZyA9IGN1cnZlLmc7XG4gIHRoaXMuZy5wcmVjb21wdXRlKGN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICB0aGlzLnBvaW50Q2xhc3MgPSBjdXJ2ZS5wb2ludCgpLmNvbnN0cnVjdG9yO1xuICB0aGlzLmVuY29kaW5nTGVuZ3RoID0gTWF0aC5jZWlsKGN1cnZlLm4uYml0TGVuZ3RoKCkgLyA4KTtcbiAgdGhpcy5oYXNoID0gaGFzaC5zaGE1MTI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRUREU0E7XG5cbi8qKlxuKiBAcGFyYW0ge0FycmF5fFN0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8S2V5UGFpcn0gc2VjcmV0IC0gc2VjcmV0IGJ5dGVzIG9yIGEga2V5cGFpclxuKiBAcmV0dXJucyB7U2lnbmF0dXJlfSAtIHNpZ25hdHVyZVxuKi9cbkVERFNBLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtZXNzYWdlLCBzZWNyZXQpIHtcbiAgbWVzc2FnZSA9IHBhcnNlQnl0ZXMobWVzc2FnZSk7XG4gIHZhciBrZXkgPSB0aGlzLmtleUZyb21TZWNyZXQoc2VjcmV0KTtcbiAgdmFyIHIgPSB0aGlzLmhhc2hJbnQoa2V5Lm1lc3NhZ2VQcmVmaXgoKSwgbWVzc2FnZSk7XG4gIHZhciBSID0gdGhpcy5nLm11bChyKTtcbiAgdmFyIFJlbmNvZGVkID0gdGhpcy5lbmNvZGVQb2ludChSKTtcbiAgdmFyIHNfID0gdGhpcy5oYXNoSW50KFJlbmNvZGVkLCBrZXkucHViQnl0ZXMoKSwgbWVzc2FnZSlcbiAgICAgICAgICAgICAgIC5tdWwoa2V5LnByaXYoKSk7XG4gIHZhciBTID0gci5hZGQoc18pLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbiAgcmV0dXJuIHRoaXMubWFrZVNpZ25hdHVyZSh7IFI6IFIsIFM6IFMsIFJlbmNvZGVkOiBSZW5jb2RlZCB9KTtcbn07XG5cbi8qKlxuKiBAcGFyYW0ge0FycmF5fSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xTaWduYXR1cmV9IHNpZyAtIHNpZyBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xQb2ludHxLZXlQYWlyfSBwdWIgLSBwdWJsaWMga2V5XG4qIEByZXR1cm5zIHtCb29sZWFufSAtIHRydWUgaWYgcHVibGljIGtleSBtYXRjaGVzIHNpZyBvZiBtZXNzYWdlXG4qL1xuRUREU0EucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcsIHB1Yikge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgc2lnID0gdGhpcy5tYWtlU2lnbmF0dXJlKHNpZyk7XG4gIHZhciBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMocHViKTtcbiAgdmFyIGggPSB0aGlzLmhhc2hJbnQoc2lnLlJlbmNvZGVkKCksIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKTtcbiAgdmFyIFNHID0gdGhpcy5nLm11bChzaWcuUygpKTtcbiAgdmFyIFJwbHVzQWggPSBzaWcuUigpLmFkZChrZXkucHViKCkubXVsKGgpKTtcbiAgcmV0dXJuIFJwbHVzQWguZXEoU0cpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KCkge1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICBoYXNoLnVwZGF0ZShhcmd1bWVudHNbaV0pO1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGhhc2guZGlnZXN0KCkpLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21TZWNyZXQgPSBmdW5jdGlvbiBrZXlGcm9tU2VjcmV0KHNlY3JldCkge1xuICByZXR1cm4gS2V5UGFpci5mcm9tU2VjcmV0KHRoaXMsIHNlY3JldCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUubWFrZVNpZ25hdHVyZSA9IGZ1bmN0aW9uIG1ha2VTaWduYXR1cmUoc2lnKSB7XG4gIGlmIChzaWcgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIHNpZztcbiAgcmV0dXJuIG5ldyBTaWduYXR1cmUodGhpcywgc2lnKTtcbn07XG5cbi8qKlxuKiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1qb3NlZnNzb24tZWRkc2EtZWQyNTUxOS0wMyNzZWN0aW9uLTUuMlxuKlxuKiBFRERTQSBkZWZpbmVzIG1ldGhvZHMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBwb2ludHMgYW5kIGludGVnZXJzLiBUaGVzZSBhcmVcbiogaGVscGVyIGNvbnZlbmllbmNlIG1ldGhvZHMsIHRoYXQgcGFzcyBhbG9uZyB0byB1dGlsaXR5IGZ1bmN0aW9ucyBpbXBsaWVkXG4qIHBhcmFtZXRlcnMuXG4qXG4qL1xuRUREU0EucHJvdG90eXBlLmVuY29kZVBvaW50ID0gZnVuY3Rpb24gZW5jb2RlUG9pbnQocG9pbnQpIHtcbiAgdmFyIGVuYyA9IHBvaW50LmdldFkoKS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xuICBlbmNbdGhpcy5lbmNvZGluZ0xlbmd0aCAtIDFdIHw9IHBvaW50LmdldFgoKS5pc09kZCgpID8gMHg4MCA6IDA7XG4gIHJldHVybiBlbmM7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcykge1xuICBieXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXMoYnl0ZXMpO1xuXG4gIHZhciBsYXN0SXggPSBieXRlcy5sZW5ndGggLSAxO1xuICB2YXIgbm9ybWVkID0gYnl0ZXMuc2xpY2UoMCwgbGFzdEl4KS5jb25jYXQoYnl0ZXNbbGFzdEl4XSAmIH4weDgwKTtcbiAgdmFyIHhJc09kZCA9IChieXRlc1tsYXN0SXhdICYgMHg4MCkgIT09IDA7XG5cbiAgdmFyIHkgPSB1dGlscy5pbnRGcm9tTEUobm9ybWVkKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnRGcm9tWSh5LCB4SXNPZGQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmVuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0pIHtcbiAgcmV0dXJuIG51bS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChieXRlcykge1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGJ5dGVzKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5pc1BvaW50ID0gZnVuY3Rpb24gaXNQb2ludCh2YWwpIHtcbiAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gaW5zdGFuY2VcbiogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHB1YmxpYy9wcml2YXRlIGtleSBwYXJhbWV0ZXJzXG4qXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMuc2VjcmV0XSAtIHNlY3JldCBzZWVkIGJ5dGVzXG4qIEBwYXJhbSB7UG9pbnR9IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgKGFrYSBgQWAgaW4gZWRkc2EgdGVybXMpXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgZW5jb2RlZCBhcyBieXRlc1xuKlxuKi9cbmZ1bmN0aW9uIEtleVBhaXIoZWRkc2EsIHBhcmFtcykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG4gIHRoaXMuX3NlY3JldCA9IHBhcnNlQnl0ZXMocGFyYW1zLnNlY3JldCk7XG4gIGlmIChlZGRzYS5pc1BvaW50KHBhcmFtcy5wdWIpKVxuICAgIHRoaXMuX3B1YiA9IHBhcmFtcy5wdWI7XG4gIGVsc2VcbiAgICB0aGlzLl9wdWJCeXRlcyA9IHBhcnNlQnl0ZXMocGFyYW1zLnB1Yik7XG59XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWRkc2EsIHB1Yikge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgcHViOiBwdWIgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21TZWNyZXQgPSBmdW5jdGlvbiBmcm9tU2VjcmV0KGVkZHNhLCBzZWNyZXQpIHtcbiAgaWYgKHNlY3JldCBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHNlY3JldDtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHNlY3JldDogc2VjcmV0IH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2VjcmV0ID0gZnVuY3Rpb24gc2VjcmV0KCkge1xuICByZXR1cm4gdGhpcy5fc2VjcmV0O1xufTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YkJ5dGVzJywgZnVuY3Rpb24gcHViQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWInLCBmdW5jdGlvbiBwdWIoKSB7XG4gIGlmICh0aGlzLl9wdWJCeXRlcylcbiAgICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdkJ5dGVzJywgZnVuY3Rpb24gcHJpdkJ5dGVzKCkge1xuICB2YXIgZWRkc2EgPSB0aGlzLmVkZHNhO1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICB2YXIgbGFzdEl4ID0gZWRkc2EuZW5jb2RpbmdMZW5ndGggLSAxO1xuXG4gIHZhciBhID0gaGFzaC5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG4gIGFbMF0gJj0gMjQ4O1xuICBhW2xhc3RJeF0gJj0gMTI3O1xuICBhW2xhc3RJeF0gfD0gNjQ7XG5cbiAgcmV0dXJuIGE7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXYnLCBmdW5jdGlvbiBwcml2KCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ2hhc2gnLCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdtZXNzYWdlUHJlZml4JywgZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpIHtcbiAgcmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xufSk7XG5cbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgY2FuIG9ubHkgdmVyaWZ5Jyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLnNpZ24obWVzc2FnZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLnZlcmlmeShtZXNzYWdlLCBzaWcsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0U2VjcmV0ID0gZnVuY3Rpb24gZ2V0U2VjcmV0KGVuYykge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBpcyBwdWJsaWMgb25seScpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuc2VjcmV0KCksIGVuYyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoZW5jKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5wdWJCeXRlcygpLCBlbmMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBjYWNoZWRQcm9wZXJ0eSA9IHV0aWxzLmNhY2hlZFByb3BlcnR5O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xuXG4vKipcbiogQHBhcmFtIHtFRERTQX0gZWRkc2EgLSBlZGRzYSBpbnN0YW5jZVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxPYmplY3R9IHNpZyAtXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fFBvaW50fSBbc2lnLlJdIC0gUiBwb2ludCBhcyBQb2ludCBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxibn0gW3NpZy5TXSAtIFMgc2NhbGFyIGFzIGJuIG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlJlbmNvZGVkXSAtIFIgcG9pbnQgZW5jb2RlZFxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5TZW5jb2RlZF0gLSBTIHNjYWxhciBlbmNvZGVkXG4qL1xuZnVuY3Rpb24gU2lnbmF0dXJlKGVkZHNhLCBzaWcpIHtcbiAgdGhpcy5lZGRzYSA9IGVkZHNhO1xuXG4gIGlmICh0eXBlb2Ygc2lnICE9PSAnb2JqZWN0JylcbiAgICBzaWcgPSBwYXJzZUJ5dGVzKHNpZyk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc2lnKSkge1xuICAgIHNpZyA9IHtcbiAgICAgIFI6IHNpZy5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCksXG4gICAgICBTOiBzaWcuc2xpY2UoZWRkc2EuZW5jb2RpbmdMZW5ndGgpXG4gICAgfTtcbiAgfVxuXG4gIGFzc2VydChzaWcuUiAmJiBzaWcuUywgJ1NpZ25hdHVyZSB3aXRob3V0IFIgb3IgUycpO1xuXG4gIGlmIChlZGRzYS5pc1BvaW50KHNpZy5SKSlcbiAgICB0aGlzLl9SID0gc2lnLlI7XG4gIGlmIChzaWcuUyBpbnN0YW5jZW9mIEJOKVxuICAgIHRoaXMuX1MgPSBzaWcuUztcblxuICB0aGlzLl9SZW5jb2RlZCA9IEFycmF5LmlzQXJyYXkoc2lnLlIpID8gc2lnLlIgOiBzaWcuUmVuY29kZWQ7XG4gIHRoaXMuX1NlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUykgPyBzaWcuUyA6IHNpZy5TZW5jb2RlZDtcbn1cblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUycsIGZ1bmN0aW9uIFMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1InLCBmdW5jdGlvbiBSKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLlJlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1JlbmNvZGVkJywgZnVuY3Rpb24gUmVuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTZW5jb2RlZCcsIGZ1bmN0aW9uIFNlbmNvZGVkKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpO1xufSk7XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9CeXRlcyA9IGZ1bmN0aW9uIHRvQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSk7XG59O1xuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24gdG9IZXgoKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy50b0J5dGVzKCksICdoZXgnKS50b1VwcGVyQ2FzZSgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaWduYXR1cmU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzknLFxuICAgICAgICAnZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVmYTZmZmVlOWZlZDY5NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYScsXG4gICAgICAgICc5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZCcsXG4gICAgICAgICc5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZhMDBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCcsXG4gICAgICAgICc1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3JyxcbiAgICAgICAgJzdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGEnLFxuICAgICAgICAnNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUnLFxuICAgICAgICAnN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjYnLFxuICAgICAgICAnNmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGInLFxuICAgICAgICAnZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAnLFxuICAgICAgICAnNzM3MGY5MWNmYjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMScsXG4gICAgICAgICcxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZicsXG4gICAgICAgICc2N2M4NzZkMDZmM2UwNmRlMWRhZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2JyxcbiAgICAgICAgJzM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NicsXG4gICAgICAgICc0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxJyxcbiAgICAgICAgJzFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzJyxcbiAgICAgICAgJ2JlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlJyxcbiAgICAgICAgJ2IzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzJyxcbiAgICAgICAgJzdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdjNzMxMTFmNGNjMGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxJyxcbiAgICAgICAgJ2U4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiJyxcbiAgICAgICAgJzY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNjMjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCcsXG4gICAgICAgICc2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInXG4gICAgICBdXG4gICAgXVxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCcsXG4gICAgICAgICdkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYicsXG4gICAgICAgICdkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0JyxcbiAgICAgICAgJzQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmJyxcbiAgICAgICAgJzJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGInLFxuICAgICAgICAnMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzknLFxuICAgICAgICAnMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYicsXG4gICAgICAgICdkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQnLFxuICAgICAgICAnOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDcnLFxuICAgICAgICAnY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUnLFxuICAgICAgICAnOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViJyxcbiAgICAgICAgJzNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhJyxcbiAgICAgICAgJ2UzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlJyxcbiAgICAgICAgJ2M1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5JyxcbiAgICAgICAgJ2U0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmJyxcbiAgICAgICAgJzhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjJyxcbiAgICAgICAgJ2Q1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMnLFxuICAgICAgICAnNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCcsXG4gICAgICAgICdmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNicsXG4gICAgICAgICc4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxJyxcbiAgICAgICAgJ2YzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3JyxcbiAgICAgICAgJzRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NicsXG4gICAgICAgICdkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0JyxcbiAgICAgICAgJzYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MicsXG4gICAgICAgICdhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0JyxcbiAgICAgICAgJzMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NicsXG4gICAgICAgICdiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCcsXG4gICAgICAgICdiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmJyxcbiAgICAgICAgJzIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEnLFxuICAgICAgICAnNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYnLFxuICAgICAgICAnOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQnLFxuICAgICAgICAnMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYnLFxuICAgICAgICAnZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEnLFxuICAgICAgICAnMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEnLFxuICAgICAgICAnY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MycsXG4gICAgICAgICdjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3JyxcbiAgICAgICAgJ2QzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkJyxcbiAgICAgICAgJ2NkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYnLFxuICAgICAgICAnNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMnLFxuICAgICAgICAnYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUnLFxuICAgICAgICAnYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMnLFxuICAgICAgICAnNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCcsXG4gICAgICAgICc5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknXG4gICAgICBdXG4gICAgXVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBtaW5Bc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgbWluVXRpbHMgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzJyk7XG5cbnV0aWxzLmFzc2VydCA9IG1pbkFzc2VydDtcbnV0aWxzLnRvQXJyYXkgPSBtaW5VdGlscy50b0FycmF5O1xudXRpbHMuemVybzIgPSBtaW5VdGlscy56ZXJvMjtcbnV0aWxzLnRvSGV4ID0gbWluVXRpbHMudG9IZXg7XG51dGlscy5lbmNvZGUgPSBtaW5VdGlscy5lbmNvZGU7XG5cbi8vIFJlcHJlc2VudCBudW0gaW4gYSB3LU5BRiBmb3JtXG5mdW5jdGlvbiBnZXROQUYobnVtLCB3KSB7XG4gIHZhciBuYWYgPSBbXTtcbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuICB3aGlsZSAoay5jbXBuKDEpID49IDApIHtcbiAgICB2YXIgejtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICB2YXIgbW9kID0gay5hbmRsbih3cyAtIDEpO1xuICAgICAgaWYgKG1vZCA+ICh3cyA+PiAxKSAtIDEpXG4gICAgICAgIHogPSAod3MgPj4gMSkgLSBtb2Q7XG4gICAgICBlbHNlXG4gICAgICAgIHogPSBtb2Q7XG4gICAgICBrLmlzdWJuKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG4gICAgbmFmLnB1c2goeik7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24sIHNoaWZ0IGJ5IHdvcmQgaWYgcG9zc2libGVcbiAgICB2YXIgc2hpZnQgPSAoay5jbXBuKDApICE9PSAwICYmIGsuYW5kbG4od3MgLSAxKSA9PT0gMCkgPyAodyArIDEpIDogMTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNoaWZ0OyBpKyspXG4gICAgICBuYWYucHVzaCgwKTtcbiAgICBrLml1c2hybihzaGlmdCk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXVxuICBdO1xuXG4gIGsxID0gazEuY2xvbmUoKTtcbiAgazIgPSBrMi5jbG9uZSgpO1xuICB2YXIgZDEgPSAwO1xuICB2YXIgZDIgPSAwO1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG5cbiAgICAvLyBGaXJzdCBwaGFzZVxuICAgIHZhciBtMTQgPSAoazEuYW5kbG4oMykgKyBkMSkgJiAzO1xuICAgIHZhciBtMjQgPSAoazIuYW5kbG4oMykgKyBkMikgJiAzO1xuICAgIGlmIChtMTQgPT09IDMpXG4gICAgICBtMTQgPSAtMTtcbiAgICBpZiAobTI0ID09PSAzKVxuICAgICAgbTI0ID0gLTE7XG4gICAgdmFyIHUxO1xuICAgIGlmICgobTE0ICYgMSkgPT09IDApIHtcbiAgICAgIHUxID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsyLmFuZGxuKDcpICsgZDIpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0xNCA9PT0gMilcbiAgICAgICAgdTIgPSAtbTI0O1xuICAgICAgZWxzZVxuICAgICAgICB1MiA9IG0yNDtcbiAgICB9XG4gICAganNmWzFdLnB1c2godTIpO1xuXG4gICAgLy8gU2Vjb25kIHBoYXNlXG4gICAgaWYgKDIgKiBkMSA9PT0gdTEgKyAxKVxuICAgICAgZDEgPSAxIC0gZDE7XG4gICAgaWYgKDIgKiBkMiA9PT0gdTIgKyAxKVxuICAgICAgZDIgPSAxIC0gZDI7XG4gICAgazEuaXVzaHJuKDEpO1xuICAgIGsyLml1c2hybigxKTtcbiAgfVxuXG4gIHJldHVybiBqc2Y7XG59XG51dGlscy5nZXRKU0YgPSBnZXRKU0Y7XG5cbmZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaiwgbmFtZSwgY29tcHV0ZXIpIHtcbiAgdmFyIGtleSA9ICdfJyArIG5hbWU7XG4gIG9iai5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB1bmRlZmluZWQgPyB0aGlzW2tleV0gOlxuICAgICAgICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIl9hcmdzXCI6IFtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgICAgIFwic2NvcGVcIjogbnVsbCxcbiAgICAgICAgXCJlc2NhcGVkTmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgICAgIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgICAgICBcInNwZWNcIjogXCI+PTYuMC4wIDw3LjAuMFwiLFxuICAgICAgICBcInR5cGVcIjogXCJyYW5nZVwiXG4gICAgICB9LFxuICAgICAgXCIvVXNlcnMvbHV0b3ZpY2gvUHJvamVjdHMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiXG4gICAgXVxuICBdLFxuICBcIl9mcm9tXCI6IFwiZWxsaXB0aWNAPj02LjAuMCA8Ny4wLjBcIixcbiAgXCJfaWRcIjogXCJlbGxpcHRpY0A2LjQuMFwiLFxuICBcIl9pbkNhY2hlXCI6IHRydWUsXG4gIFwiX2luc3RhbGxhYmxlXCI6IHRydWUsXG4gIFwiX2xvY2F0aW9uXCI6IFwiL2VsbGlwdGljXCIsXG4gIFwiX25vZGVWZXJzaW9uXCI6IFwiNy4wLjBcIixcbiAgXCJfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbFwiOiB7XG4gICAgXCJob3N0XCI6IFwicGFja2FnZXMtMTgtZWFzdC5pbnRlcm5hbC5ucG1qcy5jb21cIixcbiAgICBcInRtcFwiOiBcInRtcC9lbGxpcHRpYy02LjQuMC50Z3pfMTQ4Nzc5ODg2NjQyOF8wLjMwNTEwNjIwMTkwNzYxOTgzXCJcbiAgfSxcbiAgXCJfbnBtVXNlclwiOiB7XG4gICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiLFxuICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiXG4gIH0sXG4gIFwiX25wbVZlcnNpb25cIjogXCIzLjEwLjhcIixcbiAgXCJfcGhhbnRvbUNoaWxkcmVuXCI6IHt9LFxuICBcIl9yZXF1ZXN0ZWRcIjoge1xuICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgXCJzY29wZVwiOiBudWxsLFxuICAgIFwiZXNjYXBlZE5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICAgIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjYuMC4wXCIsXG4gICAgXCJzcGVjXCI6IFwiPj02LjAuMCA8Ny4wLjBcIixcbiAgICBcInR5cGVcIjogXCJyYW5nZVwiXG4gIH0sXG4gIFwiX3JlcXVpcmVkQnlcIjogW1xuICAgIFwiL2Jyb3dzZXJpZnktc2lnblwiLFxuICAgIFwiL2NyZWF0ZS1lY2RoXCJcbiAgXSxcbiAgXCJfcmVzb2x2ZWRcIjogXCJodHRwOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi40LjAudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcImNhYzlhZjg3NjJjODU4MzYxODcwMDNjOGRmZTE5M2U1ZTJlYWU1ZGZcIixcbiAgXCJfc2hyaW5rd3JhcFwiOiBudWxsLFxuICBcIl9zcGVjXCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gIFwiX3doZXJlXCI6IFwiL1VzZXJzL2x1dG92aWNoL1Byb2plY3RzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ25cIixcbiAgXCJhdXRob3JcIjoge1xuICAgIFwibmFtZVwiOiBcIkZlZG9yIEluZHV0bnlcIixcbiAgICBcImVtYWlsXCI6IFwiZmVkb3JAaW5kdXRueS5jb21cIlxuICB9LFxuICBcImJ1Z3NcIjoge1xuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWMvaXNzdWVzXCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYm4uanNcIjogXCJeNC40LjBcIixcbiAgICBcImJyb3JhbmRcIjogXCJeMS4wLjFcIixcbiAgICBcImhhc2guanNcIjogXCJeMS4wLjBcIixcbiAgICBcImhtYWMtZHJiZ1wiOiBcIl4xLjAuMFwiLFxuICAgIFwiaW5oZXJpdHNcIjogXCJeMi4wLjFcIixcbiAgICBcIm1pbmltYWxpc3RpYy1hc3NlcnRcIjogXCJeMS4wLjBcIixcbiAgICBcIm1pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHNcIjogXCJeMS4wLjBcIlxuICB9LFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUMgY3J5cHRvZ3JhcGh5XCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJyZnNcIjogXCJeMS40LjNcIixcbiAgICBcImNvdmVyYWxsc1wiOiBcIl4yLjExLjNcIixcbiAgICBcImdydW50XCI6IFwiXjAuNC41XCIsXG4gICAgXCJncnVudC1icm93c2VyaWZ5XCI6IFwiXjUuMC4wXCIsXG4gICAgXCJncnVudC1jbGlcIjogXCJeMS4yLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29ubmVjdFwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi1jb3B5XCI6IFwiXjEuMC4wXCIsXG4gICAgXCJncnVudC1jb250cmliLXVnbGlmeVwiOiBcIl4xLjAuMVwiLFxuICAgIFwiZ3J1bnQtbW9jaGEtaXN0YW5idWxcIjogXCJeMy4wLjFcIixcbiAgICBcImdydW50LXNhdWNlbGFic1wiOiBcIl44LjYuMlwiLFxuICAgIFwiaXN0YW5idWxcIjogXCJeMC40LjJcIixcbiAgICBcImpzY3NcIjogXCJeMi45LjBcIixcbiAgICBcImpzaGludFwiOiBcIl4yLjYuMFwiLFxuICAgIFwibW9jaGFcIjogXCJeMi4xLjBcIlxuICB9LFxuICBcImRpcmVjdG9yaWVzXCI6IHt9LFxuICBcImRpc3RcIjoge1xuICAgIFwic2hhc3VtXCI6IFwiY2FjOWFmODc2MmM4NTgzNjE4NzAwM2M4ZGZlMTkzZTVlMmVhZTVkZlwiLFxuICAgIFwidGFyYmFsbFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi40LjAudGd6XCJcbiAgfSxcbiAgXCJmaWxlc1wiOiBbXG4gICAgXCJsaWJcIlxuICBdLFxuICBcImdpdEhlYWRcIjogXCI2YjBkMmI3NmNhYWU5MTQ3MTY0OWM4ZTIxZjBiMWQzYmEwZjk2MDkwXCIsXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpY1wiLFxuICBcImtleXdvcmRzXCI6IFtcbiAgICBcIkVDXCIsXG4gICAgXCJFbGxpcHRpY1wiLFxuICAgIFwiY3VydmVcIixcbiAgICBcIkNyeXB0b2dyYXBoeVwiXG4gIF0sXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcIm1haW5cIjogXCJsaWIvZWxsaXB0aWMuanNcIixcbiAgXCJtYWludGFpbmVyc1wiOiBbXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiLFxuICAgICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCJcbiAgICB9XG4gIF0sXG4gIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gIFwib3B0aW9uYWxEZXBlbmRlbmNpZXNcIjoge30sXG4gIFwicmVhZG1lXCI6IFwiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kIVwiLFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWMuZ2l0XCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImpzY3NcIjogXCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsXG4gICAgXCJqc2hpbnRcIjogXCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsXG4gICAgXCJsaW50XCI6IFwibnBtIHJ1biBqc2NzICYmIG5wbSBydW4ganNoaW50XCIsXG4gICAgXCJ0ZXN0XCI6IFwibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdW5pdFwiLFxuICAgIFwidW5pdFwiOiBcImlzdGFuYnVsIHRlc3QgX21vY2hhIC0tcmVwb3J0ZXI9c3BlYyB0ZXN0L2luZGV4LmpzXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiZ3J1bnQgZGlzdCAmJiBnaXQgYWRkIGRpc3QvXCJcbiAgfSxcbiAgXCJ2ZXJzaW9uXCI6IFwiNi40LjBcIlxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzIHx8IHt9O1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG5FdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbihuKSB7XG4gIGlmICghaXNOdW1iZXIobikgfHwgbiA8IDAgfHwgaXNOYU4obikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIGlmICghdGhpcy5fZXZlbnRzLmVycm9yIHx8XG4gICAgICAgIChpc09iamVjdCh0aGlzLl9ldmVudHMuZXJyb3IpICYmICF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSkge1xuICAgICAgZXIgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkIFwiZXJyb3JcIiBldmVudC4gKCcgKyBlciArICcpJyk7XG4gICAgICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChpc1VuZGVmaW5lZChoYW5kbGVyKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHNsb3dlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgbGlzdGVuZXJzID0gaGFuZGxlci5zbGljZSgpO1xuICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG07XG5cbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgaWYgKHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lcilcbiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgaXNGdW5jdGlvbihsaXN0ZW5lci5saXN0ZW5lcikgP1xuICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgZWxzZSBpZiAoaXNPYmplY3QodGhpcy5fZXZlbnRzW3R5cGVdKSlcbiAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuICBlbHNlXG4gICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdO1xuXG4gIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9tYXhMaXN0ZW5lcnMpKSB7XG4gICAgICBtID0gdGhpcy5fbWF4TGlzdGVuZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfVxuXG4gICAgaWYgKG0gJiYgbSA+IDAgJiYgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCA+IG0pIHtcbiAgICAgIHRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArXG4gICAgICAgICAgICAgICAgICAgICdsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAnVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUudHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBpbiBJRSAxMFxuICAgICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIHZhciBmaXJlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGcoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBnKTtcblxuICAgIGlmICghZmlyZWQpIHtcbiAgICAgIGZpcmVkID0gdHJ1ZTtcbiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgZy5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICB0aGlzLm9uKHR5cGUsIGcpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWRcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXR1cm4gdGhpcztcblxuICBsaXN0ID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuICBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgcG9zaXRpb24gPSAtMTtcblxuICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHxcbiAgICAgIChpc0Z1bmN0aW9uKGxpc3QubGlzdGVuZXIpICYmIGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG5cbiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkge1xuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tID4gMDspIHtcbiAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fFxuICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbGlzdC5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdC5zcGxpY2UocG9zaXRpb24sIDEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGtleSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBmb3IgKGtleSBpbiB0aGlzLl9ldmVudHMpIHtcbiAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgfSBlbHNlIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAvLyBMSUZPIG9yZGVyXG4gICAgd2hpbGUgKGxpc3RlbmVycy5sZW5ndGgpXG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tsaXN0ZW5lcnMubGVuZ3RoIC0gMV0pO1xuICB9XG4gIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIHJldDtcbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXQgPSBbXTtcbiAgZWxzZSBpZiAoaXNGdW5jdGlvbih0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIHJldCA9IFt0aGlzLl9ldmVudHNbdHlwZV1dO1xuICBlbHNlXG4gICAgcmV0ID0gdGhpcy5fZXZlbnRzW3R5cGVdLnNsaWNlKCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIGlmICh0aGlzLl9ldmVudHMpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKVxuICAgICAgcmV0dXJuIDE7XG4gICAgZWxzZSBpZiAoZXZsaXN0ZW5lcilcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xufTtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuIiwidmFyIG1kNSA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoL21kNScpXG5tb2R1bGUuZXhwb3J0cyA9IEVWUF9CeXRlc1RvS2V5XG5mdW5jdGlvbiBFVlBfQnl0ZXNUb0tleSAocGFzc3dvcmQsIHNhbHQsIGtleUxlbiwgaXZMZW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSB7XG4gICAgcGFzc3dvcmQgPSBuZXcgQnVmZmVyKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgfVxuICBpZiAoc2FsdCAmJiAhQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSB7XG4gICAgc2FsdCA9IG5ldyBCdWZmZXIoc2FsdCwgJ2JpbmFyeScpXG4gIH1cbiAga2V5TGVuID0ga2V5TGVuIC8gOFxuICBpdkxlbiA9IGl2TGVuIHx8IDBcbiAgdmFyIGtpID0gMFxuICB2YXIgaWkgPSAwXG4gIHZhciBrZXkgPSBuZXcgQnVmZmVyKGtleUxlbilcbiAgdmFyIGl2ID0gbmV3IEJ1ZmZlcihpdkxlbilcbiAgdmFyIGFkZG1kID0gMFxuICB2YXIgbWRfYnVmXG4gIHZhciBpXG4gIHZhciBidWZzID0gW11cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoYWRkbWQrKyA+IDApIHtcbiAgICAgIGJ1ZnMucHVzaChtZF9idWYpXG4gICAgfVxuICAgIGJ1ZnMucHVzaChwYXNzd29yZClcbiAgICBpZiAoc2FsdCkge1xuICAgICAgYnVmcy5wdXNoKHNhbHQpXG4gICAgfVxuICAgIG1kX2J1ZiA9IG1kNShCdWZmZXIuY29uY2F0KGJ1ZnMpKVxuICAgIGJ1ZnMgPSBbXVxuICAgIGkgPSAwXG4gICAgaWYgKGtleUxlbiA+IDApIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChrZXlMZW4gPT09IDApIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID09PSBtZF9idWYubGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBrZXlba2krK10gPSBtZF9idWZbaV1cbiAgICAgICAga2V5TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdkxlbiA+IDAgJiYgaSAhPT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgaWYgKGl2TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaXZbaWkrK10gPSBtZF9idWZbaV1cbiAgICAgICAgaXZMZW4tLVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleUxlbiA9PT0gMCAmJiBpdkxlbiA9PT0gMCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG1kX2J1Zi5sZW5ndGg7IGkrKykge1xuICAgIG1kX2J1ZltpXSA9IDBcbiAgfVxuICByZXR1cm4ge1xuICAgIGtleToga2V5LFxuICAgIGl2OiBpdlxuICB9XG59XG4iLCJ2YXIgaGFzaCA9IGV4cG9ydHM7XG5cbmhhc2gudXRpbHMgPSByZXF1aXJlKCcuL2hhc2gvdXRpbHMnKTtcbmhhc2guY29tbW9uID0gcmVxdWlyZSgnLi9oYXNoL2NvbW1vbicpO1xuaGFzaC5zaGEgPSByZXF1aXJlKCcuL2hhc2gvc2hhJyk7XG5oYXNoLnJpcGVtZCA9IHJlcXVpcmUoJy4vaGFzaC9yaXBlbWQnKTtcbmhhc2guaG1hYyA9IHJlcXVpcmUoJy4vaGFzaC9obWFjJyk7XG5cbi8vIFByb3h5IGhhc2ggZnVuY3Rpb25zIHRvIHRoZSBtYWluIG9iamVjdFxuaGFzaC5zaGExID0gaGFzaC5zaGEuc2hhMTtcbmhhc2guc2hhMjU2ID0gaGFzaC5zaGEuc2hhMjU2O1xuaGFzaC5zaGEyMjQgPSBoYXNoLnNoYS5zaGEyMjQ7XG5oYXNoLnNoYTM4NCA9IGhhc2guc2hhLnNoYTM4NDtcbmhhc2guc2hhNTEyID0gaGFzaC5zaGEuc2hhNTEyO1xuaGFzaC5yaXBlbWQxNjAgPSBoYXNoLnJpcGVtZC5yaXBlbWQxNjA7XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBCbG9ja0hhc2goKSB7XG4gIHRoaXMucGVuZGluZyA9IG51bGw7XG4gIHRoaXMucGVuZGluZ1RvdGFsID0gMDtcbiAgdGhpcy5ibG9ja1NpemUgPSB0aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZTtcbiAgdGhpcy5vdXRTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplO1xuICB0aGlzLmhtYWNTdHJlbmd0aCA9IHRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoO1xuICB0aGlzLnBhZExlbmd0aCA9IHRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoIC8gODtcbiAgdGhpcy5lbmRpYW4gPSAnYmlnJztcblxuICB0aGlzLl9kZWx0YTggPSB0aGlzLmJsb2NrU2l6ZSAvIDg7XG4gIHRoaXMuX2RlbHRhMzIgPSB0aGlzLmJsb2NrU2l6ZSAvIDMyO1xufVxuZXhwb3J0cy5CbG9ja0hhc2ggPSBCbG9ja0hhc2g7XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIC8vIENvbnZlcnQgbWVzc2FnZSB0byBhcnJheSwgcGFkIGl0LCBhbmQgam9pbiBpbnRvIDMyYml0IGJsb2Nrc1xuICBtc2cgPSB1dGlscy50b0FycmF5KG1zZywgZW5jKTtcbiAgaWYgKCF0aGlzLnBlbmRpbmcpXG4gICAgdGhpcy5wZW5kaW5nID0gbXNnO1xuICBlbHNlXG4gICAgdGhpcy5wZW5kaW5nID0gdGhpcy5wZW5kaW5nLmNvbmNhdChtc2cpO1xuICB0aGlzLnBlbmRpbmdUb3RhbCArPSBtc2cubGVuZ3RoO1xuXG4gIC8vIEVub3VnaCBkYXRhLCB0cnkgdXBkYXRpbmdcbiAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPj0gdGhpcy5fZGVsdGE4KSB7XG4gICAgbXNnID0gdGhpcy5wZW5kaW5nO1xuXG4gICAgLy8gUHJvY2VzcyBwZW5kaW5nIGRhdGEgaW4gYmxvY2tzXG4gICAgdmFyIHIgPSBtc2cubGVuZ3RoICUgdGhpcy5fZGVsdGE4O1xuICAgIHRoaXMucGVuZGluZyA9IG1zZy5zbGljZShtc2cubGVuZ3RoIC0gciwgbXNnLmxlbmd0aCk7XG4gICAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuXG4gICAgbXNnID0gdXRpbHMuam9pbjMyKG1zZywgMCwgbXNnLmxlbmd0aCAtIHIsIHRoaXMuZW5kaWFuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gdGhpcy5fZGVsdGEzMilcbiAgICAgIHRoaXMuX3VwZGF0ZShtc2csIGksIGkgKyB0aGlzLl9kZWx0YTMyKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKTtcbiAgYXNzZXJ0KHRoaXMucGVuZGluZyA9PT0gbnVsbCk7XG5cbiAgcmV0dXJuIHRoaXMuX2RpZ2VzdChlbmMpO1xufTtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gcGFkKCkge1xuICB2YXIgbGVuID0gdGhpcy5wZW5kaW5nVG90YWw7XG4gIHZhciBieXRlcyA9IHRoaXMuX2RlbHRhODtcbiAgdmFyIGsgPSBieXRlcyAtICgobGVuICsgdGhpcy5wYWRMZW5ndGgpICUgYnl0ZXMpO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGsgKyB0aGlzLnBhZExlbmd0aCk7XG4gIHJlc1swXSA9IDB4ODA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgazsgaSsrKVxuICAgIHJlc1tpXSA9IDA7XG5cbiAgLy8gQXBwZW5kIGxlbmd0aFxuICBsZW4gPDw9IDM7XG4gIGlmICh0aGlzLmVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICBmb3IgKHZhciB0ID0gODsgdCA8IHRoaXMucGFkTGVuZ3RoOyB0KyspXG4gICAgICByZXNbaSsrXSA9IDA7XG5cbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMTYpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gIH0gZWxzZSB7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMTYpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuXG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG4iLCJ2YXIgaG1hYyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnLi4vaGFzaCcpO1xudmFyIHV0aWxzID0gaGFzaC51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEhtYWMoaGFzaCwga2V5LCBlbmMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWMpKVxuICAgIHJldHVybiBuZXcgSG1hYyhoYXNoLCBrZXksIGVuYyk7XG4gIHRoaXMuSGFzaCA9IGhhc2g7XG4gIHRoaXMuYmxvY2tTaXplID0gaGFzaC5ibG9ja1NpemUgLyA4O1xuICB0aGlzLm91dFNpemUgPSBoYXNoLm91dFNpemUgLyA4O1xuICB0aGlzLmlubmVyID0gbnVsbDtcbiAgdGhpcy5vdXRlciA9IG51bGw7XG5cbiAgdGhpcy5faW5pdCh1dGlscy50b0FycmF5KGtleSwgZW5jKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWM7XG5cbkhtYWMucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChrZXkpIHtcbiAgLy8gU2hvcnRlbiBrZXksIGlmIG5lZWRlZFxuICBpZiAoa2V5Lmxlbmd0aCA+IHRoaXMuYmxvY2tTaXplKVxuICAgIGtleSA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KS5kaWdlc3QoKTtcbiAgYXNzZXJ0KGtleS5sZW5ndGggPD0gdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIEFkZCBwYWRkaW5nIHRvIGtleVxuICBmb3IgKHZhciBpID0ga2V5Lmxlbmd0aDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAga2V5LnB1c2goMCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4MzY7XG4gIHRoaXMuaW5uZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG5cbiAgLy8gMHgzNiBeIDB4NWMgPSAweDZhXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDZhO1xuICB0aGlzLm91dGVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xufTtcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIHRoaXMuaW5uZXIudXBkYXRlKG1zZywgZW5jKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpO1xuICByZXR1cm4gdGhpcy5vdXRlci5kaWdlc3QoZW5jKTtcbn07XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG5cbnZhciByb3RsMzIgPSB1dGlscy5yb3RsMzI7XG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl8zID0gdXRpbHMuc3VtMzJfMztcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBCbG9ja0hhc2ggPSBoYXNoLmNvbW1vbi5CbG9ja0hhc2g7XG5cbmZ1bmN0aW9uIFJJUEVNRDE2MCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJJUEVNRDE2MCkpXG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcblxuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5lbmRpYW4gPSAnbGl0dGxlJztcbn1cbnV0aWxzLmluaGVyaXRzKFJJUEVNRDE2MCwgQmxvY2tIYXNoKTtcbmV4cG9ydHMucmlwZW1kMTYwID0gUklQRU1EMTYwO1xuXG5SSVBFTUQxNjAuYmxvY2tTaXplID0gNTEyO1xuUklQRU1EMTYwLm91dFNpemUgPSAxNjA7XG5SSVBFTUQxNjAuaG1hY1N0cmVuZ3RoID0gMTkyO1xuUklQRU1EMTYwLnBhZExlbmd0aCA9IDY0O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgQSA9IHRoaXMuaFswXTtcbiAgdmFyIEIgPSB0aGlzLmhbMV07XG4gIHZhciBDID0gdGhpcy5oWzJdO1xuICB2YXIgRCA9IHRoaXMuaFszXTtcbiAgdmFyIEUgPSB0aGlzLmhbNF07XG4gIHZhciBBaCA9IEE7XG4gIHZhciBCaCA9IEI7XG4gIHZhciBDaCA9IEM7XG4gIHZhciBEaCA9IEQ7XG4gIHZhciBFaCA9IEU7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7IGorKykge1xuICAgIHZhciBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQSwgZihqLCBCLCBDLCBEKSwgbXNnW3Jbal0gKyBzdGFydF0sIEsoaikpLFxuICAgICAgICBzW2pdKSxcbiAgICAgIEUpO1xuICAgIEEgPSBFO1xuICAgIEUgPSBEO1xuICAgIEQgPSByb3RsMzIoQywgMTApO1xuICAgIEMgPSBCO1xuICAgIEIgPSBUO1xuICAgIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBaCwgZig3OSAtIGosIEJoLCBDaCwgRGgpLCBtc2dbcmhbal0gKyBzdGFydF0sIEtoKGopKSxcbiAgICAgICAgc2hbal0pLFxuICAgICAgRWgpO1xuICAgIEFoID0gRWg7XG4gICAgRWggPSBEaDtcbiAgICBEaCA9IHJvdGwzMihDaCwgMTApO1xuICAgIENoID0gQmg7XG4gICAgQmggPSBUO1xuICB9XG4gIFQgPSBzdW0zMl8zKHRoaXMuaFsxXSwgQywgRGgpO1xuICB0aGlzLmhbMV0gPSBzdW0zMl8zKHRoaXMuaFsyXSwgRCwgRWgpO1xuICB0aGlzLmhbMl0gPSBzdW0zMl8zKHRoaXMuaFszXSwgRSwgQWgpO1xuICB0aGlzLmhbM10gPSBzdW0zMl8zKHRoaXMuaFs0XSwgQSwgQmgpO1xuICB0aGlzLmhbNF0gPSBzdW0zMl8zKHRoaXMuaFswXSwgQiwgQ2gpO1xuICB0aGlzLmhbMF0gPSBUO1xufTtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdsaXR0bGUnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xufTtcblxuZnVuY3Rpb24gZihqLCB4LCB5LCB6KSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiB4IF4geSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuICh4ICYgeSkgfCAoKH54KSAmIHopO1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAoeCB8ICh+eSkpIF4gejtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gKHggJiB6KSB8ICh5ICYgKH56KSk7XG4gIGVsc2VcbiAgICByZXR1cm4geCBeICh5IHwgKH56KSk7XG59XG5cbmZ1bmN0aW9uIEsoaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YTgyNzk5OTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZWQ5ZWJhMTtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg4ZjFiYmNkYztcbiAgZWxzZVxuICAgIHJldHVybiAweGE5NTNmZDRlO1xufVxuXG5mdW5jdGlvbiBLaChqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDUwYTI4YmU2O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVjNGRkMTI0O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZkNzAzZWYzO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDdhNmQ3NmU5O1xuICBlbHNlXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG59XG5cbnZhciByID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dO1xuXG52YXIgcmggPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl07XG5cbnZhciBzID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXTtcblxudmFyIHNoID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXTtcbiIsInZhciBoYXNoID0gcmVxdWlyZSgnLi4vaGFzaCcpO1xudmFyIHV0aWxzID0gaGFzaC51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciByb3RyMzIgPSB1dGlscy5yb3RyMzI7XG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgc3VtMzJfNSA9IHV0aWxzLnN1bTMyXzU7XG52YXIgcm90cjY0X2hpID0gdXRpbHMucm90cjY0X2hpO1xudmFyIHJvdHI2NF9sbyA9IHV0aWxzLnJvdHI2NF9sbztcbnZhciBzaHI2NF9oaSA9IHV0aWxzLnNocjY0X2hpO1xudmFyIHNocjY0X2xvID0gdXRpbHMuc2hyNjRfbG87XG52YXIgc3VtNjQgPSB1dGlscy5zdW02NDtcbnZhciBzdW02NF9oaSA9IHV0aWxzLnN1bTY0X2hpO1xudmFyIHN1bTY0X2xvID0gdXRpbHMuc3VtNjRfbG87XG52YXIgc3VtNjRfNF9oaSA9IHV0aWxzLnN1bTY0XzRfaGk7XG52YXIgc3VtNjRfNF9sbyA9IHV0aWxzLnN1bTY0XzRfbG87XG52YXIgc3VtNjRfNV9oaSA9IHV0aWxzLnN1bTY0XzVfaGk7XG52YXIgc3VtNjRfNV9sbyA9IHV0aWxzLnN1bTY0XzVfbG87XG52YXIgQmxvY2tIYXNoID0gaGFzaC5jb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhMjU2X0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4NzEzNzQ0OTEsIDB4YjVjMGZiY2YsIDB4ZTliNWRiYTUsXG4gIDB4Mzk1NmMyNWIsIDB4NTlmMTExZjEsIDB4OTIzZjgyYTQsIDB4YWIxYzVlZDUsXG4gIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsXG4gIDB4NzJiZTVkNzQsIDB4ODBkZWIxZmUsIDB4OWJkYzA2YTcsIDB4YzE5YmYxNzQsXG4gIDB4ZTQ5YjY5YzEsIDB4ZWZiZTQ3ODYsIDB4MGZjMTlkYzYsIDB4MjQwY2ExY2MsXG4gIDB4MmRlOTJjNmYsIDB4NGE3NDg0YWEsIDB4NWNiMGE5ZGMsIDB4NzZmOTg4ZGEsXG4gIDB4OTgzZTUxNTIsIDB4YTgzMWM2NmQsIDB4YjAwMzI3YzgsIDB4YmY1OTdmYzcsXG4gIDB4YzZlMDBiZjMsIDB4ZDVhNzkxNDcsIDB4MDZjYTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsXG4gIDB4NjUwYTczNTQsIDB4NzY2YTBhYmIsIDB4ODFjMmM5MmUsIDB4OTI3MjJjODUsXG4gIDB4YTJiZmU4YTEsIDB4YTgxYTY2NGIsIDB4YzI0YjhiNzAsIDB4Yzc2YzUxYTMsXG4gIDB4ZDE5MmU4MTksIDB4ZDY5OTA2MjQsIDB4ZjQwZTM1ODUsIDB4MTA2YWEwNzAsXG4gIDB4MTlhNGMxMTYsIDB4MWUzNzZjMDgsIDB4Mjc0ODc3NGMsIDB4MzRiMGJjYjUsXG4gIDB4MzkxYzBjYjMsIDB4NGVkOGFhNGEsIDB4NWI5Y2NhNGYsIDB4NjgyZTZmZjMsXG4gIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsXG4gIDB4OTBiZWZmZmEsIDB4YTQ1MDZjZWIsIDB4YmVmOWEzZjcsIDB4YzY3MTc4ZjJcbl07XG5cbnZhciBzaGE1MTJfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXTtcblxudmFyIHNoYTFfSyA9IFtcbiAgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSxcbiAgMHg4RjFCQkNEQywgMHhDQTYyQzFENlxuXTtcblxuZnVuY3Rpb24gU0hBMjU2KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlcbiAgICByZXR1cm4gbmV3IFNIQTI1NigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4NmEwOWU2NjcsIDB4YmI2N2FlODUsIDB4M2M2ZWYzNzIsIDB4YTU0ZmY1M2EsXG4gICAgICAgICAgICAgMHg1MTBlNTI3ZiwgMHg5YjA1Njg4YywgMHgxZjgzZDlhYiwgMHg1YmUwY2QxOSBdO1xuICB0aGlzLmsgPSBzaGEyNTZfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDY0KTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTI1NiwgQmxvY2tIYXNoKTtcbmV4cG9ydHMuc2hhMjU2ID0gU0hBMjU2O1xuXG5TSEEyNTYuYmxvY2tTaXplID0gNTEyO1xuU0hBMjU2Lm91dFNpemUgPSAyNTY7XG5TSEEyNTYuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjU2LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSBzdW0zMl80KGcxXzI1NihXW2kgLSAyXSksIFdbaSAtIDddLCBnMF8yNTYoV1tpIC0gMTVdKSwgV1tpIC0gMTZdKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG4gIHZhciBmID0gdGhpcy5oWzVdO1xuICB2YXIgZyA9IHRoaXMuaFs2XTtcbiAgdmFyIGggPSB0aGlzLmhbN107XG5cbiAgYXNzZXJ0KHRoaXMuay5sZW5ndGggPT09IFcubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIFQxID0gc3VtMzJfNShoLCBzMV8yNTYoZSksIGNoMzIoZSwgZiwgZyksIHRoaXMua1tpXSwgV1tpXSk7XG4gICAgdmFyIFQyID0gc3VtMzIoczBfMjU2KGEpLCBtYWozMihhLCBiLCBjKSk7XG4gICAgaCA9IGc7XG4gICAgZyA9IGY7XG4gICAgZiA9IGU7XG4gICAgZSA9IHN1bTMyKGQsIFQxKTtcbiAgICBkID0gYztcbiAgICBjID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gc3VtMzIoVDEsIFQyKTtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG4gIHRoaXMuaFs1XSA9IHN1bTMyKHRoaXMuaFs1XSwgZik7XG4gIHRoaXMuaFs2XSA9IHN1bTMyKHRoaXMuaFs2XSwgZyk7XG4gIHRoaXMuaFs3XSA9IHN1bTMyKHRoaXMuaFs3XSwgaCk7XG59O1xuXG5TSEEyNTYucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBTSEEyMjQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKVxuICAgIHJldHVybiBuZXcgU0hBMjI0KCk7XG5cbiAgU0hBMjU2LmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHhjMTA1OWVkOCwgMHgzNjdjZDUwNywgMHgzMDcwZGQxNywgMHhmNzBlNTkzOSxcbiAgICAgICAgICAgICAweGZmYzAwYjMxLCAweDY4NTgxNTExLCAweDY0Zjk4ZmE3LCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEyMjQsIFNIQTI1Nik7XG5leHBvcnRzLnNoYTIyNCA9IFNIQTIyNDtcblxuU0hBMjI0LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTIyNC5vdXRTaXplID0gMjI0O1xuU0hBMjI0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTIyNC5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjI0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICAvLyBKdXN0IHRydW5jYXRlIG91dHB1dFxuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBNTEyKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBNTEyKSlcbiAgICByZXR1cm4gbmV3IFNIQTUxMigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4NmEwOWU2NjcsIDB4ZjNiY2M5MDgsXG4gICAgICAgICAgICAgMHhiYjY3YWU4NSwgMHg4NGNhYTczYixcbiAgICAgICAgICAgICAweDNjNmVmMzcyLCAweGZlOTRmODJiLFxuICAgICAgICAgICAgIDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEsXG4gICAgICAgICAgICAgMHg1MTBlNTI3ZiwgMHhhZGU2ODJkMSxcbiAgICAgICAgICAgICAweDliMDU2ODhjLCAweDJiM2U2YzFmLFxuICAgICAgICAgICAgIDB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmIsXG4gICAgICAgICAgICAgMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSBdO1xuICB0aGlzLmsgPSBzaGE1MTJfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDE2MCk7XG59XG51dGlscy5pbmhlcml0cyhTSEE1MTIsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTUxMiA9IFNIQTUxMjtcblxuU0hBNTEyLmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEE1MTIub3V0U2l6ZSA9IDUxMjtcblNIQTUxMi5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEE1MTIucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEE1MTIucHJvdG90eXBlLl9wcmVwYXJlQmxvY2sgPSBmdW5jdGlvbiBfcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgLy8gMzIgeCAzMmJpdCB3b3Jkc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBnMV81MTJfaGkoV1tpIC0gNF0sIFdbaSAtIDNdKTsgIC8vIGkgLSAyXG4gICAgdmFyIGMwX2xvID0gZzFfNTEyX2xvKFdbaSAtIDRdLCBXW2kgLSAzXSk7XG4gICAgdmFyIGMxX2hpID0gV1tpIC0gMTRdOyAgLy8gaSAtIDdcbiAgICB2YXIgYzFfbG8gPSBXW2kgLSAxM107XG4gICAgdmFyIGMyX2hpID0gZzBfNTEyX2hpKFdbaSAtIDMwXSwgV1tpIC0gMjldKTsgIC8vIGkgLSAxNVxuICAgIHZhciBjMl9sbyA9IGcwXzUxMl9sbyhXW2kgLSAzMF0sIFdbaSAtIDI5XSk7XG4gICAgdmFyIGMzX2hpID0gV1tpIC0gMzJdOyAgLy8gaSAtIDE2XG4gICAgdmFyIGMzX2xvID0gV1tpIC0gMzFdO1xuXG4gICAgV1tpXSA9IHN1bTY0XzRfaGkoYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvKTtcbiAgICBXW2kgKyAxXSA9IHN1bTY0XzRfbG8oYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvKTtcbiAgfVxufTtcblxuU0hBNTEyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHRoaXMuX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KTtcblxuICB2YXIgVyA9IHRoaXMuVztcblxuICB2YXIgYWggPSB0aGlzLmhbMF07XG4gIHZhciBhbCA9IHRoaXMuaFsxXTtcbiAgdmFyIGJoID0gdGhpcy5oWzJdO1xuICB2YXIgYmwgPSB0aGlzLmhbM107XG4gIHZhciBjaCA9IHRoaXMuaFs0XTtcbiAgdmFyIGNsID0gdGhpcy5oWzVdO1xuICB2YXIgZGggPSB0aGlzLmhbNl07XG4gIHZhciBkbCA9IHRoaXMuaFs3XTtcbiAgdmFyIGVoID0gdGhpcy5oWzhdO1xuICB2YXIgZWwgPSB0aGlzLmhbOV07XG4gIHZhciBmaCA9IHRoaXMuaFsxMF07XG4gIHZhciBmbCA9IHRoaXMuaFsxMV07XG4gIHZhciBnaCA9IHRoaXMuaFsxMl07XG4gIHZhciBnbCA9IHRoaXMuaFsxM107XG4gIHZhciBoaCA9IHRoaXMuaFsxNF07XG4gIHZhciBobCA9IHRoaXMuaFsxNV07XG5cbiAgYXNzZXJ0KHRoaXMuay5sZW5ndGggPT09IFcubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gaGg7XG4gICAgdmFyIGMwX2xvID0gaGw7XG4gICAgdmFyIGMxX2hpID0gczFfNTEyX2hpKGVoLCBlbCk7XG4gICAgdmFyIGMxX2xvID0gczFfNTEyX2xvKGVoLCBlbCk7XG4gICAgdmFyIGMyX2hpID0gY2g2NF9oaShlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzJfbG8gPSBjaDY0X2xvKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjM19oaSA9IHRoaXMua1tpXTtcbiAgICB2YXIgYzNfbG8gPSB0aGlzLmtbaSArIDFdO1xuICAgIHZhciBjNF9oaSA9IFdbaV07XG4gICAgdmFyIGM0X2xvID0gV1tpICsgMV07XG5cbiAgICB2YXIgVDFfaGkgPSBzdW02NF81X2hpKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0X2hpLCBjNF9sbyk7XG4gICAgdmFyIFQxX2xvID0gc3VtNjRfNV9sbyhjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjNF9oaSwgYzRfbG8pO1xuXG4gICAgdmFyIGMwX2hpID0gczBfNTEyX2hpKGFoLCBhbCk7XG4gICAgdmFyIGMwX2xvID0gczBfNTEyX2xvKGFoLCBhbCk7XG4gICAgdmFyIGMxX2hpID0gbWFqNjRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG4gICAgdmFyIGMxX2xvID0gbWFqNjRfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG5cbiAgICB2YXIgVDJfaGkgPSBzdW02NF9oaShjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG4gICAgdmFyIFQyX2xvID0gc3VtNjRfbG8oYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuXG4gICAgaGggPSBnaDtcbiAgICBobCA9IGdsO1xuXG4gICAgZ2ggPSBmaDtcbiAgICBnbCA9IGZsO1xuXG4gICAgZmggPSBlaDtcbiAgICBmbCA9IGVsO1xuXG4gICAgZWggPSBzdW02NF9oaShkaCwgZGwsIFQxX2hpLCBUMV9sbyk7XG4gICAgZWwgPSBzdW02NF9sbyhkbCwgZGwsIFQxX2hpLCBUMV9sbyk7XG5cbiAgICBkaCA9IGNoO1xuICAgIGRsID0gY2w7XG5cbiAgICBjaCA9IGJoO1xuICAgIGNsID0gYmw7XG5cbiAgICBiaCA9IGFoO1xuICAgIGJsID0gYWw7XG5cbiAgICBhaCA9IHN1bTY0X2hpKFQxX2hpLCBUMV9sbywgVDJfaGksIFQyX2xvKTtcbiAgICBhbCA9IHN1bTY0X2xvKFQxX2hpLCBUMV9sbywgVDJfaGksIFQyX2xvKTtcbiAgfVxuXG4gIHN1bTY0KHRoaXMuaCwgMCwgYWgsIGFsKTtcbiAgc3VtNjQodGhpcy5oLCAyLCBiaCwgYmwpO1xuICBzdW02NCh0aGlzLmgsIDQsIGNoLCBjbCk7XG4gIHN1bTY0KHRoaXMuaCwgNiwgZGgsIGRsKTtcbiAgc3VtNjQodGhpcy5oLCA4LCBlaCwgZWwpO1xuICBzdW02NCh0aGlzLmgsIDEwLCBmaCwgZmwpO1xuICBzdW02NCh0aGlzLmgsIDEyLCBnaCwgZ2wpO1xuICBzdW02NCh0aGlzLmgsIDE0LCBoaCwgaGwpO1xufTtcblxuU0hBNTEyLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMzg0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMzg0KSlcbiAgICByZXR1cm4gbmV3IFNIQTM4NCgpO1xuXG4gIFNIQTUxMi5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgsXG4gICAgICAgICAgICAgMHg2MjlhMjkyYSwgMHgzNjdjZDUwNyxcbiAgICAgICAgICAgICAweDkxNTkwMTVhLCAweDMwNzBkZDE3LFxuICAgICAgICAgICAgIDB4MTUyZmVjZDgsIDB4ZjcwZTU5MzksXG4gICAgICAgICAgICAgMHg2NzMzMjY2NywgMHhmZmMwMGIzMSxcbiAgICAgICAgICAgICAweDhlYjQ0YTg3LCAweDY4NTgxNTExLFxuICAgICAgICAgICAgIDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcsXG4gICAgICAgICAgICAgMHg0N2I1NDgxZCwgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMzg0LCBTSEE1MTIpO1xuZXhwb3J0cy5zaGEzODQgPSBTSEEzODQ7XG5cblNIQTM4NC5ibG9ja1NpemUgPSAxMDI0O1xuU0hBMzg0Lm91dFNpemUgPSAzODQ7XG5TSEEzODQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMzg0LnBhZExlbmd0aCA9IDEyODtcblxuU0hBMzg0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBTSEExKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMSkpXG4gICAgcmV0dXJuIG5ldyBTSEExKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSwgMHg5OGJhZGNmZSxcbiAgICAgICAgICAgICAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg4MCk7XG59XG5cbnV0aWxzLmluaGVyaXRzKFNIQTEsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTEgPSBTSEExO1xuXG5TSEExLmJsb2NrU2l6ZSA9IDUxMjtcblNIQTEub3V0U2l6ZSA9IDE2MDtcblNIQTEuaG1hY1N0cmVuZ3RoID0gODA7XG5TSEExLnBhZExlbmd0aCA9IDY0O1xuXG5TSEExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG5cbiAgZm9yKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHJvdGwzMihXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdLCAxKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHMgPSB+fihpIC8gMjApO1xuICAgIHZhciB0ID0gc3VtMzJfNShyb3RsMzIoYSwgNSksIGZ0XzEocywgYiwgYywgZCksIGUsIFdbaV0sIHNoYTFfS1tzXSk7XG4gICAgZSA9IGQ7XG4gICAgZCA9IGM7XG4gICAgYyA9IHJvdGwzMihiLCAzMCk7XG4gICAgYiA9IGE7XG4gICAgYSA9IHQ7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xufTtcblxuU0hBMS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIGNoMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICgofngpICYgeik7XG59XG5cbmZ1bmN0aW9uIG1hajMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoeCAmIHopIF4gKHkgJiB6KTtcbn1cblxuZnVuY3Rpb24gcDMyKHgsIHksIHopIHtcbiAgcmV0dXJuIHggXiB5IF4gejtcbn1cblxuZnVuY3Rpb24gczBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAyKSBeIHJvdHIzMih4LCAxMykgXiByb3RyMzIoeCwgMjIpO1xufVxuXG5mdW5jdGlvbiBzMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDYpIF4gcm90cjMyKHgsIDExKSBeIHJvdHIzMih4LCAyNSk7XG59XG5cbmZ1bmN0aW9uIGcwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNykgXiByb3RyMzIoeCwgMTgpIF4gKHggPj4+IDMpO1xufVxuXG5mdW5jdGlvbiBnMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDE3KSBeIHJvdHIzMih4LCAxOSkgXiAoeCA+Pj4gMTApO1xufVxuXG5mdW5jdGlvbiBmdF8xKHMsIHgsIHksIHopIHtcbiAgaWYgKHMgPT09IDApXG4gICAgcmV0dXJuIGNoMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAxIHx8IHMgPT09IDMpXG4gICAgcmV0dXJuIHAzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDIpXG4gICAgcmV0dXJuIG1hajMyKHgsIHksIHopO1xufVxuXG5mdW5jdGlvbiBjaDY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoKH54aCkgJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY2g2NF9sbyh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhsICYgeWwpIF4gKCh+eGwpICYgemwpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoeGggJiB6aCkgXiAoeWggJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICh4bCAmIHpsKSBeICh5bCAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMF81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDI4KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgMik7ICAvLyAzNFxuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA3KTsgIC8vIDM5XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTQpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOCk7XG4gIHZhciBjMl9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDkpOyAgLy8gNDFcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cbiIsInZhciB1dGlscyA9IGV4cG9ydHM7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5mdW5jdGlvbiB0b0FycmF5KG1zZywgZW5jKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1zZykpXG4gICAgcmV0dXJuIG1zZy5zbGljZSgpO1xuICBpZiAoIW1zZylcbiAgICByZXR1cm4gW107XG4gIHZhciByZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCFlbmMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjID0gbXNnLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgICAgdmFyIGxvID0gYyAmIDB4ZmY7XG4gICAgICAgIGlmIChoaSlcbiAgICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzLnB1c2gobG8pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgICAgbXNnID0gbXNnLnJlcGxhY2UoL1teYS16MC05XSsvaWcsICcnKTtcbiAgICAgIGlmIChtc2cubGVuZ3RoICUgMiAhPT0gMClcbiAgICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgICAgcmVzW2ldID0gbXNnW2ldIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9BcnJheSA9IHRvQXJyYXk7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbmZ1bmN0aW9uIGh0b25sKHcpIHtcbiAgdmFyIHJlcyA9ICh3ID4+PiAyNCkgfFxuICAgICAgICAgICAgKCh3ID4+PiA4KSAmIDB4ZmYwMCkgfFxuICAgICAgICAgICAgKCh3IDw8IDgpICYgMHhmZjAwMDApIHxcbiAgICAgICAgICAgICgodyAmIDB4ZmYpIDw8IDI0KTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn1cbnV0aWxzLmh0b25sID0gaHRvbmw7XG5cbmZ1bmN0aW9uIHRvSGV4MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB3ID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdsaXR0bGUnKVxuICAgICAgdyA9IGh0b25sKHcpO1xuICAgIHJlcyArPSB6ZXJvOCh3LnRvU3RyaW5nKDE2KSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4MzIgPSB0b0hleDMyO1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gemVybzgod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDcpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA2KVxuICAgIHJldHVybiAnMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDUpXG4gICAgcmV0dXJuICcwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDQpXG4gICAgcmV0dXJuICcwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAzKVxuICAgIHJldHVybiAnMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDIpXG4gICAgcmV0dXJuICcwMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm84ID0gemVybzg7XG5cbmZ1bmN0aW9uIGpvaW4zMihtc2csIHN0YXJ0LCBlbmQsIGVuZGlhbikge1xuICB2YXIgbGVuID0gZW5kIC0gc3RhcnQ7XG4gIGFzc2VydChsZW4gJSA0ID09PSAwKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4gLyA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSBzdGFydDsgaSA8IHJlcy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpXG4gICAgICB3ID0gKG1zZ1trXSA8PCAyNCkgfCAobXNnW2sgKyAxXSA8PCAxNikgfCAobXNnW2sgKyAyXSA8PCA4KSB8IG1zZ1trICsgM107XG4gICAgZWxzZVxuICAgICAgdyA9IChtc2dbayArIDNdIDw8IDI0KSB8IChtc2dbayArIDJdIDw8IDE2KSB8IChtc2dbayArIDFdIDw8IDgpIHwgbXNnW2tdO1xuICAgIHJlc1tpXSA9IHcgPj4+IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLmpvaW4zMiA9IGpvaW4zMjtcblxuZnVuY3Rpb24gc3BsaXQzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gbmV3IEFycmF5KG1zZy5sZW5ndGggKiA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgbSA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJykge1xuICAgICAgcmVzW2tdID0gbSA+Pj4gMjQ7XG4gICAgICByZXNbayArIDFdID0gKG0gPj4+IDE2KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDJdID0gKG0gPj4+IDgpICYgMHhmZjtcbiAgICAgIHJlc1trICsgM10gPSBtICYgMHhmZjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2sgKyAzXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNba10gPSBtICYgMHhmZjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnNwbGl0MzIgPSBzcGxpdDMyO1xuXG5mdW5jdGlvbiByb3RyMzIodywgYikge1xuICByZXR1cm4gKHcgPj4+IGIpIHwgKHcgPDwgKDMyIC0gYikpO1xufVxudXRpbHMucm90cjMyID0gcm90cjMyO1xuXG5mdW5jdGlvbiByb3RsMzIodywgYikge1xuICByZXR1cm4gKHcgPDwgYikgfCAodyA+Pj4gKDMyIC0gYikpO1xufVxudXRpbHMucm90bDMyID0gcm90bDMyO1xuXG5mdW5jdGlvbiBzdW0zMihhLCBiKSB7XG4gIHJldHVybiAoYSArIGIpID4+PiAwO1xufVxudXRpbHMuc3VtMzIgPSBzdW0zMjtcblxuZnVuY3Rpb24gc3VtMzJfMyhhLCBiLCBjKSB7XG4gIHJldHVybiAoYSArIGIgKyBjKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyXzMgPSBzdW0zMl8zO1xuXG5mdW5jdGlvbiBzdW0zMl80KGEsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyXzQgPSBzdW0zMl80O1xuXG5mdW5jdGlvbiBzdW0zMl81KGEsIGIsIGMsIGQsIGUpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkICsgZSkgPj4+IDA7XG59XG51dGlscy5zdW0zMl81ID0gc3VtMzJfNTtcblxuZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZykge1xuICBpZiAoIWNvbmQpXG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xufVxudXRpbHMuYXNzZXJ0ID0gYXNzZXJ0O1xuXG51dGlscy5pbmhlcml0cyA9IGluaGVyaXRzO1xuXG5mdW5jdGlvbiBzdW02NChidWYsIHBvcywgYWgsIGFsKSB7XG4gIHZhciBiaCA9IGJ1Zltwb3NdO1xuICB2YXIgYmwgPSBidWZbcG9zICsgMV07XG5cbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIGJ1Zltwb3NdID0gaGkgPj4+IDA7XG4gIGJ1Zltwb3MgKyAxXSA9IGxvO1xufVxuZXhwb3J0cy5zdW02NCA9IHN1bTY0O1xuXG5mdW5jdGlvbiBzdW02NF9oaShhaCwgYWwsIGJoLCBibCkge1xuICB2YXIgbG8gPSAoYWwgKyBibCkgPj4+IDA7XG4gIHZhciBoaSA9IChsbyA8IGFsID8gMSA6IDApICsgYWggKyBiaDtcbiAgcmV0dXJuIGhpID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfaGkgPSBzdW02NF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfbG8oYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gYWwgKyBibDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfbG8gPSBzdW02NF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBjYXJyeTtcbiAgcmV0dXJuIGhpID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNF9oaSA9IHN1bTY0XzRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzRfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsO1xuICByZXR1cm4gbG8gPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF80X2xvID0gc3VtNjRfNF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNV9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBlbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZWwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGVoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzVfaGkgPSBzdW02NF81X2hpO1xuXG5mdW5jdGlvbiBzdW02NF81X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCwgZWgsIGVsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsICsgZWw7XG5cbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNV9sbyA9IHN1bTY0XzVfbG87XG5cbmZ1bmN0aW9uIHJvdHI2NF9oaShhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhbCA8PCAoMzIgLSBudW0pKSB8IChhaCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59O1xuZXhwb3J0cy5yb3RyNjRfaGkgPSByb3RyNjRfaGk7XG5cbmZ1bmN0aW9uIHJvdHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59O1xuZXhwb3J0cy5yb3RyNjRfbG8gPSByb3RyNjRfbG87XG5cbmZ1bmN0aW9uIHNocjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHJldHVybiBhaCA+Pj4gbnVtO1xufTtcbmV4cG9ydHMuc2hyNjRfaGkgPSBzaHI2NF9oaTtcblxuZnVuY3Rpb24gc2hyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMuc2hyNjRfbG8gPSBzaHI2NF9sbztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpXG4gICAgcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuICB0aGlzLnByZWRSZXNpc3QgPSAhIW9wdGlvbnMucHJlZFJlc2lzdDtcblxuICB0aGlzLm91dExlbiA9IHRoaXMuaGFzaC5vdXRTaXplO1xuICB0aGlzLm1pbkVudHJvcHkgPSBvcHRpb25zLm1pbkVudHJvcHkgfHwgdGhpcy5oYXNoLmhtYWNTdHJlbmd0aDtcblxuICB0aGlzLnJlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyB8fCAnaGV4Jyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5yZXNlZWQgPSAxO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gMHgxMDAwMDAwMDAwMDAwOyAgLy8gMl40OFxufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl9obWFjID0gZnVuY3Rpb24gaG1hYygpIHtcbiAgcmV0dXJuIG5ldyBoYXNoLmhtYWModGhpcy5oYXNoLCB0aGlzLkspO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoc2VlZCkge1xuICB2YXIga21hYyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDAgXSk7XG4gIGlmIChzZWVkKVxuICAgIGttYWMgPSBrbWFjLnVwZGF0ZShzZWVkKTtcbiAgdGhpcy5LID0ga21hYy5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICBpZiAoIXNlZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuSyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMSBdKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShzZWVkKVxuICAgICAgICAgICAgICAgLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUucmVzZWVkID0gZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksIGVudHJvcHlFbmMsIGFkZCwgYWRkRW5jKSB7XG4gIC8vIE9wdGlvbmFsIGVudHJvcHkgZW5jXG4gIGlmICh0eXBlb2YgZW50cm9weUVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW50cm9weUVuYztcbiAgICBlbnRyb3B5RW5jID0gbnVsbDtcbiAgfVxuXG4gIGVudHJvcHkgPSB1dGlscy50b0FycmF5KGVudHJvcHksIGVudHJvcHlFbmMpO1xuICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jKTtcblxuICBhc3NlcnQoZW50cm9weS5sZW5ndGggPj0gKHRoaXMubWluRW50cm9weSAvIDgpLFxuICAgICAgICAgJ05vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogJyArIHRoaXMubWluRW50cm9weSArICcgYml0cycpO1xuXG4gIHRoaXMuX3VwZGF0ZShlbnRyb3B5LmNvbmNhdChhZGQgfHwgW10pKTtcbiAgdGhpcy5yZXNlZWQgPSAxO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuLCBlbmMsIGFkZCwgYWRkRW5jKSB7XG4gIGlmICh0aGlzLnJlc2VlZCA+IHRoaXMucmVzZWVkSW50ZXJ2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZXNlZWQgaXMgcmVxdWlyZWQnKTtcblxuICAvLyBPcHRpb25hbCBlbmNvZGluZ1xuICBpZiAodHlwZW9mIGVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cblxuICAvLyBPcHRpb25hbCBhZGRpdGlvbmFsIGRhdGFcbiAgaWYgKGFkZCkge1xuICAgIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMgfHwgJ2hleCcpO1xuICAgIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB9XG5cbiAgdmFyIHRlbXAgPSBbXTtcbiAgd2hpbGUgKHRlbXAubGVuZ3RoIDwgbGVuKSB7XG4gICAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICAgIHRlbXAgPSB0ZW1wLmNvbmNhdCh0aGlzLlYpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHRlbXAuc2xpY2UoMCwgbGVuKTtcbiAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIHRoaXMucmVzZWVkKys7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsImV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBtID0gZSAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBlID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBtTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKHZhbHVlICogYyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSBlICsgZUJpYXNcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogTWF0aC5wb3coMiwgZUJpYXMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gMFxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG0gJiAweGZmLCBpICs9IGQsIG0gLz0gMjU2LCBtTGVuIC09IDgpIHt9XG5cbiAgZSA9IChlIDw8IG1MZW4pIHwgbVxuICBlTGVuICs9IG1MZW5cbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyOFxufVxuIiwiXG52YXIgaW5kZXhPZiA9IFtdLmluZGV4T2Y7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYXJyLCBvYmope1xuICBpZiAoaW5kZXhPZikgcmV0dXJuIGFyci5pbmRleE9mKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGFycltpXSA9PT0gb2JqKSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59OyIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgfVxufVxuIiwiLyohXG4gKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxuLy8gVGhlIF9pc0J1ZmZlciBjaGVjayBpcyBmb3IgU2FmYXJpIDUtNyBzdXBwb3J0LCBiZWNhdXNlIGl0J3MgbWlzc2luZ1xuLy8gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoaXNCdWZmZXIob2JqKSB8fCBpc1Nsb3dCdWZmZXIob2JqKSB8fCAhIW9iai5faXNCdWZmZXIpXG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyIChvYmopIHtcbiAgcmV0dXJuICEhb2JqLmNvbnN0cnVjdG9yICYmIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cblxuLy8gRm9yIE5vZGUgdjAuMTAgc3VwcG9ydC4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseS5cbmZ1bmN0aW9uIGlzU2xvd0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqLnJlYWRGbG9hdExFID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmouc2xpY2UgPT09ICdmdW5jdGlvbicgJiYgaXNCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHVzZXJBZ2VudCA9IGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ7XG52YXIgaXNSdW5uaW5nSW5JRSA9IHVzZXJBZ2VudCAmJiB1c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgXCIpID4gLTE7XG5cbi8vIE1ha2UgcHJvcGVydGllcyB3cml0YWJsZSBpbiBJRSwgYXMgcGVyXG4vLyBodHRwOi8vd3d3LmFkZXF1YXRlbHlnb29kLmNvbS9SZXBsYWNpbmctc2V0VGltZW91dC1HbG9iYWxseS5odG1sXG5pZiAoaXNSdW5uaW5nSW5JRSkge1xuICAgIGdsb2JhbC5zZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQ7XG4gICAgZ2xvYmFsLmNsZWFyVGltZW91dCA9IGdsb2JhbC5jbGVhclRpbWVvdXQ7XG4gICAgZ2xvYmFsLnNldEludGVydmFsID0gZ2xvYmFsLnNldEludGVydmFsO1xuICAgIGdsb2JhbC5jbGVhckludGVydmFsID0gZ2xvYmFsLmNsZWFySW50ZXJ2YWw7XG4gICAgZ2xvYmFsLkRhdGUgPSBnbG9iYWwuRGF0ZTtcbn1cblxuLy8gc2V0SW1tZWRpYXRlIGlzIG5vdCBhIHN0YW5kYXJkIGZ1bmN0aW9uXG4vLyBhdm9pZCBhZGRpbmcgdGhlIHByb3AgdG8gdGhlIHdpbmRvdyBvYmplY3QgaWYgbm90IHByZXNlbnRcbmlmIChnbG9iYWwuc2V0SW1tZWRpYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICBnbG9iYWwuc2V0SW1tZWRpYXRlID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbiAgICBnbG9iYWwuY2xlYXJJbW1lZGlhdGUgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG59XG5cbi8vIG5vZGUgZXhwZWN0cyBzZXRUaW1lb3V0L3NldEludGVydmFsIHRvIHJldHVybiBhIGZuIG9iamVjdCB3LyAucmVmKCkvLnVucmVmKClcbi8vIGJyb3dzZXJzLCBhIG51bWJlci5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2pvaGFuc2VuL1Npbm9uLkpTL3B1bGwvNDM2XG5cbnZhciBOT09QID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9O1xudmFyIHRpbWVvdXRSZXN1bHQgPSBzZXRUaW1lb3V0KE5PT1AsIDApO1xudmFyIGFkZFRpbWVyUmV0dXJuc09iamVjdCA9IHR5cGVvZiB0aW1lb3V0UmVzdWx0ID09PSBcIm9iamVjdFwiO1xudmFyIGhydGltZVByZXNlbnQgPSAoZ2xvYmFsLnByb2Nlc3MgJiYgdHlwZW9mIGdsb2JhbC5wcm9jZXNzLmhydGltZSA9PT0gXCJmdW5jdGlvblwiKTtcbmNsZWFyVGltZW91dCh0aW1lb3V0UmVzdWx0KTtcblxudmFyIE5hdGl2ZURhdGUgPSBEYXRlO1xudmFyIHVuaXF1ZVRpbWVySWQgPSAxO1xuXG4vKipcbiAqIFBhcnNlIHN0cmluZ3MgbGlrZSBcIjAxOjEwOjAwXCIgKG1lYW5pbmcgMSBob3VyLCAxMCBtaW51dGVzLCAwIHNlY29uZHMpIGludG9cbiAqIG51bWJlciBvZiBtaWxsaXNlY29uZHMuIFRoaXMgaXMgdXNlZCB0byBzdXBwb3J0IGh1bWFuLXJlYWRhYmxlIHN0cmluZ3MgcGFzc2VkXG4gKiB0byBjbG9jay50aWNrKClcbiAqL1xuZnVuY3Rpb24gcGFyc2VUaW1lKHN0cikge1xuICAgIGlmICghc3RyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHZhciBzdHJpbmdzID0gc3RyLnNwbGl0KFwiOlwiKTtcbiAgICB2YXIgbCA9IHN0cmluZ3MubGVuZ3RoO1xuICAgIHZhciBpID0gbDtcbiAgICB2YXIgbXMgPSAwO1xuICAgIHZhciBwYXJzZWQ7XG5cbiAgICBpZiAobCA+IDMgfHwgIS9eKFxcZFxcZDopezAsMn1cXGRcXGQ/JC8udGVzdChzdHIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRpY2sgb25seSB1bmRlcnN0YW5kcyBudW1iZXJzLCAnbTpzJyBhbmQgJ2g6bTpzJy4gRWFjaCBwYXJ0IG11c3QgYmUgdHdvIGRpZ2l0c1wiKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZ3NbaV0sIDEwKTtcblxuICAgICAgICBpZiAocGFyc2VkID49IDYwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRpbWUgXCIgKyBzdHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbXMgKz0gcGFyc2VkICogTWF0aC5wb3coNjAsIChsIC0gaSAtIDEpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXMgKiAxMDAwO1xufVxuXG4vKipcbiAqIEZsb29yIGZ1bmN0aW9uIHRoYXQgYWxzbyB3b3JrcyBmb3IgbmVnYXRpdmUgbnVtYmVyc1xuICovXG5mdW5jdGlvbiBmaXhlZEZsb29yKG4pIHtcbiAgICByZXR1cm4gKG4gPj0gMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobikpO1xufVxuXG4vKipcbiAqICUgb3BlcmF0b3IgdGhhdCBhbHNvIHdvcmtzIGZvciBuZWdhdGl2ZSBudW1iZXJzXG4gKi9cbmZ1bmN0aW9uIGZpeGVkTW9kdWxvKG4sIG0pIHtcbiAgICByZXR1cm4gKChuICUgbSkgKyBtKSAlIG07XG59XG5cbi8qKlxuICogVXNlZCB0byBncm9rIHRoZSBgbm93YCBwYXJhbWV0ZXIgdG8gY3JlYXRlQ2xvY2suXG4gKi9cbmZ1bmN0aW9uIGdldEVwb2NoKGVwb2NoKSB7XG4gICAgaWYgKCFlcG9jaCkgeyByZXR1cm4gMDsgfVxuICAgIGlmICh0eXBlb2YgZXBvY2guZ2V0VGltZSA9PT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiBlcG9jaC5nZXRUaW1lKCk7IH1cbiAgICBpZiAodHlwZW9mIGVwb2NoID09PSBcIm51bWJlclwiKSB7IHJldHVybiBlcG9jaDsgfVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJub3cgc2hvdWxkIGJlIG1pbGxpc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoXCIpO1xufVxuXG5mdW5jdGlvbiBpblJhbmdlKGZyb20sIHRvLCB0aW1lcikge1xuICAgIHJldHVybiB0aW1lciAmJiB0aW1lci5jYWxsQXQgPj0gZnJvbSAmJiB0aW1lci5jYWxsQXQgPD0gdG87XG59XG5cbmZ1bmN0aW9uIG1pcnJvckRhdGVQcm9wZXJ0aWVzKHRhcmdldCwgc291cmNlKSB7XG4gICAgdmFyIHByb3A7XG4gICAgZm9yIChwcm9wIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXQgc3BlY2lhbCBub3cgaW1wbGVtZW50YXRpb25cbiAgICBpZiAoc291cmNlLm5vdykge1xuICAgICAgICB0YXJnZXQubm93ID0gZnVuY3Rpb24gbm93KCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5jbG9jay5ub3c7XG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHRhcmdldC5ub3c7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNwZWNpYWwgdG9Tb3VyY2UgaW1wbGVtZW50YXRpb25cbiAgICBpZiAoc291cmNlLnRvU291cmNlKSB7XG4gICAgICAgIHRhcmdldC50b1NvdXJjZSA9IGZ1bmN0aW9uIHRvU291cmNlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS50b1NvdXJjZSgpO1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSB0YXJnZXQudG9Tb3VyY2U7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNwZWNpYWwgdG9TdHJpbmcgaW1wbGVtZW50YXRpb25cbiAgICB0YXJnZXQudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS50b1N0cmluZygpO1xuICAgIH07XG5cbiAgICB0YXJnZXQucHJvdG90eXBlID0gc291cmNlLnByb3RvdHlwZTtcbiAgICB0YXJnZXQucGFyc2UgPSBzb3VyY2UucGFyc2U7XG4gICAgdGFyZ2V0LlVUQyA9IHNvdXJjZS5VVEM7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS50b1VUQ1N0cmluZyA9IHNvdXJjZS5wcm90b3R5cGUudG9VVENTdHJpbmc7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRlKCkge1xuICAgIGZ1bmN0aW9uIENsb2NrRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1zKSB7XG4gICAgICAgIC8vIERlZmVuc2l2ZSBhbmQgdmVyYm9zZSB0byBhdm9pZCBwb3RlbnRpYWwgaGFybSBpbiBwYXNzaW5nXG4gICAgICAgIC8vIGV4cGxpY2l0IHVuZGVmaW5lZCB3aGVuIHVzZXIgZG9lcyBub3QgcGFzcyBhcmd1bWVudFxuICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoQ2xvY2tEYXRlLmNsb2NrLm5vdyk7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIpO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRGF0ZSh5ZWFyLCBtb250aCk7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXIpO1xuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlKTtcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pcnJvckRhdGVQcm9wZXJ0aWVzKENsb2NrRGF0ZSwgTmF0aXZlRGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRpbWVyKGNsb2NrLCB0aW1lcikge1xuICAgIGlmICh0aW1lci5mdW5jID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGJhY2sgbXVzdCBiZSBwcm92aWRlZCB0byB0aW1lciBjYWxsc1wiKTtcbiAgICB9XG5cbiAgICBpZiAoIWNsb2NrLnRpbWVycykge1xuICAgICAgICBjbG9jay50aW1lcnMgPSB7fTtcbiAgICB9XG5cbiAgICB0aW1lci5pZCA9IHVuaXF1ZVRpbWVySWQrKztcbiAgICB0aW1lci5jcmVhdGVkQXQgPSBjbG9jay5ub3c7XG4gICAgdGltZXIuY2FsbEF0ID0gY2xvY2subm93ICsgKHBhcnNlSW50KHRpbWVyLmRlbGF5KSB8fCAoY2xvY2suZHVyaW5nVGljayA/IDEgOiAwKSk7XG5cbiAgICBjbG9jay50aW1lcnNbdGltZXIuaWRdID0gdGltZXI7XG5cbiAgICBpZiAoYWRkVGltZXJSZXR1cm5zT2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogdGltZXIuaWQsXG4gICAgICAgICAgICByZWY6IE5PT1AsXG4gICAgICAgICAgICB1bnJlZjogTk9PUFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aW1lci5pZDtcbn1cblxuXG4vKiBlc2xpbnQgY29uc2lzdGVudC1yZXR1cm46IFwib2ZmXCIgKi9cbmZ1bmN0aW9uIGNvbXBhcmVUaW1lcnMoYSwgYikge1xuICAgIC8vIFNvcnQgZmlyc3QgYnkgYWJzb2x1dGUgdGltaW5nXG4gICAgaWYgKGEuY2FsbEF0IDwgYi5jYWxsQXQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoYS5jYWxsQXQgPiBiLmNhbGxBdCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICAvLyBTb3J0IG5leHQgYnkgaW1tZWRpYXRlLCBpbW1lZGlhdGUgdGltZXJzIHRha2UgcHJlY2VkZW5jZVxuICAgIGlmIChhLmltbWVkaWF0ZSAmJiAhYi5pbW1lZGlhdGUpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoIWEuaW1tZWRpYXRlICYmIGIuaW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8vIFNvcnQgbmV4dCBieSBjcmVhdGlvbiB0aW1lLCBlYXJsaWVyLWNyZWF0ZWQgdGltZXJzIHRha2UgcHJlY2VkZW5jZVxuICAgIGlmIChhLmNyZWF0ZWRBdCA8IGIuY3JlYXRlZEF0KSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGEuY3JlYXRlZEF0ID4gYi5jcmVhdGVkQXQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgLy8gU29ydCBuZXh0IGJ5IGlkLCBsb3dlci1pZCB0aW1lcnMgdGFrZSBwcmVjZWRlbmNlXG4gICAgaWYgKGEuaWQgPCBiLmlkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGEuaWQgPiBiLmlkKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8vIEFzIHRpbWVyIGlkcyBhcmUgdW5pcXVlLCBubyBmYWxsYmFjayBgMGAgaXMgbmVjZXNzYXJ5XG59XG5cbmZ1bmN0aW9uIGZpcnN0VGltZXJJblJhbmdlKGNsb2NrLCBmcm9tLCB0bykge1xuICAgIHZhciB0aW1lcnMgPSBjbG9jay50aW1lcnM7XG4gICAgdmFyIHRpbWVyID0gbnVsbDtcbiAgICB2YXIgaWQsIGlzSW5SYW5nZTtcblxuICAgIGZvciAoaWQgaW4gdGltZXJzKSB7XG4gICAgICAgIGlmICh0aW1lcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICBpc0luUmFuZ2UgPSBpblJhbmdlKGZyb20sIHRvLCB0aW1lcnNbaWRdKTtcblxuICAgICAgICAgICAgaWYgKGlzSW5SYW5nZSAmJiAoIXRpbWVyIHx8IGNvbXBhcmVUaW1lcnModGltZXIsIHRpbWVyc1tpZF0pID09PSAxKSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gdGltZXJzW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aW1lcjtcbn1cblxuZnVuY3Rpb24gZmlyc3RUaW1lcihjbG9jaykge1xuICAgIHZhciB0aW1lcnMgPSBjbG9jay50aW1lcnM7XG4gICAgdmFyIHRpbWVyID0gbnVsbDtcbiAgICB2YXIgaWQ7XG5cbiAgICBmb3IgKGlkIGluIHRpbWVycykge1xuICAgICAgICBpZiAodGltZXJzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aW1lciB8fCBjb21wYXJlVGltZXJzKHRpbWVyLCB0aW1lcnNbaWRdKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gdGltZXJzW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aW1lcjtcbn1cblxuZnVuY3Rpb24gbGFzdFRpbWVyKGNsb2NrKSB7XG4gICAgdmFyIHRpbWVycyA9IGNsb2NrLnRpbWVycztcbiAgICB2YXIgdGltZXIgPSBudWxsO1xuICAgIHZhciBpZDtcblxuICAgIGZvciAoaWQgaW4gdGltZXJzKSB7XG4gICAgICAgIGlmICh0aW1lcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRpbWVyIHx8IGNvbXBhcmVUaW1lcnModGltZXIsIHRpbWVyc1tpZF0pID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gdGltZXJzW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aW1lcjtcbn1cblxuZnVuY3Rpb24gY2FsbFRpbWVyKGNsb2NrLCB0aW1lcikge1xuICAgIHZhciBleGNlcHRpb247XG5cbiAgICBpZiAodHlwZW9mIHRpbWVyLmludGVydmFsID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGNsb2NrLnRpbWVyc1t0aW1lci5pZF0uY2FsbEF0ICs9IHRpbWVyLmludGVydmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBjbG9jay50aW1lcnNbdGltZXIuaWRdO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGltZXIuZnVuYyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aW1lci5mdW5jLmFwcGx5KG51bGwsIHRpbWVyLmFyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogZXNsaW50IG5vLWV2YWw6IFwib2ZmXCIgKi9cbiAgICAgICAgICAgIGV2YWwodGltZXIuZnVuYyk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4Y2VwdGlvbiA9IGU7XG4gICAgfVxuXG4gICAgaWYgKCFjbG9jay50aW1lcnNbdGltZXIuaWRdKSB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0aW1lclR5cGUodGltZXIpIHtcbiAgICBpZiAodGltZXIuaW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybiBcIkltbWVkaWF0ZVwiO1xuICAgIH1cbiAgICBpZiAodGltZXIuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gXCJJbnRlcnZhbFwiO1xuICAgIH1cbiAgICByZXR1cm4gXCJUaW1lb3V0XCI7XG59XG5cbmZ1bmN0aW9uIGNsZWFyVGltZXIoY2xvY2ssIHRpbWVySWQsIHR0eXBlKSB7XG4gICAgaWYgKCF0aW1lcklkKSB7XG4gICAgICAgIC8vIG51bGwgYXBwZWFycyB0byBiZSBhbGxvd2VkIGluIG1vc3QgYnJvd3NlcnMsIGFuZCBhcHBlYXJzIHRvIGJlXG4gICAgICAgIC8vIHJlbGllZCB1cG9uIGJ5IHNvbWUgbGlicmFyaWVzLCBsaWtlIEJvb3RzdHJhcCBjYXJvdXNlbFxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFjbG9jay50aW1lcnMpIHtcbiAgICAgICAgY2xvY2sudGltZXJzID0gW107XG4gICAgfVxuXG4gICAgLy8gaW4gTm9kZSwgdGltZXJJZCBpcyBhbiBvYmplY3Qgd2l0aCAucmVmKCkvLnVucmVmKCksIGFuZFxuICAgIC8vIGl0cyAuaWQgZmllbGQgaXMgdGhlIGFjdHVhbCB0aW1lciBpZC5cbiAgICBpZiAodHlwZW9mIHRpbWVySWQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdGltZXJJZCA9IHRpbWVySWQuaWQ7XG4gICAgfVxuXG4gICAgaWYgKGNsb2NrLnRpbWVycy5oYXNPd25Qcm9wZXJ0eSh0aW1lcklkKSkge1xuICAgICAgICAvLyBjaGVjayB0aGF0IHRoZSBJRCBtYXRjaGVzIGEgdGltZXIgb2YgdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgICB2YXIgdGltZXIgPSBjbG9jay50aW1lcnNbdGltZXJJZF07XG4gICAgICAgIGlmICh0aW1lclR5cGUodGltZXIpID09PSB0dHlwZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNsb2NrLnRpbWVyc1t0aW1lcklkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjbGVhciB0aW1lcjogdGltZXIgY3JlYXRlZCB3aXRoIHNldFwiICsgdGltZXJUeXBlKHRpbWVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgXCIoKSBidXQgY2xlYXJlZCB3aXRoIGNsZWFyXCIgKyB0dHlwZSArIFwiKClcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuaW5zdGFsbChjbG9jaywgdGFyZ2V0KSB7XG4gICAgdmFyIG1ldGhvZCxcbiAgICAgICAgaSxcbiAgICAgICAgbDtcbiAgICB2YXIgaW5zdGFsbGVkSHJUaW1lID0gXCJfaHJ0aW1lXCI7XG5cbiAgICBmb3IgKGkgPSAwLCBsID0gY2xvY2subWV0aG9kcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgbWV0aG9kID0gY2xvY2subWV0aG9kc1tpXTtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJocnRpbWVcIiAmJiB0YXJnZXQucHJvY2Vzcykge1xuICAgICAgICAgICAgdGFyZ2V0LnByb2Nlc3MuaHJ0aW1lID0gY2xvY2tbaW5zdGFsbGVkSHJUaW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0YXJnZXRbbWV0aG9kXSAmJiB0YXJnZXRbbWV0aG9kXS5oYWRPd25Qcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFttZXRob2RdID0gY2xvY2tbXCJfXCIgKyBtZXRob2RdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0W21ldGhvZF07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7IC8qIGVzbGludCBlbXB0eS1ibG9jazogXCJvZmZcIiAqLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcmV2ZW50IG11bHRpcGxlIGV4ZWN1dGlvbnMgd2hpY2ggd2lsbCBjb21wbGV0ZWx5IHJlbW92ZSB0aGVzZSBwcm9wc1xuICAgIGNsb2NrLm1ldGhvZHMgPSBbXTtcbn1cblxuZnVuY3Rpb24gaGlqYWNrTWV0aG9kKHRhcmdldCwgbWV0aG9kLCBjbG9jaykge1xuICAgIHZhciBwcm9wO1xuXG4gICAgY2xvY2tbbWV0aG9kXS5oYWRPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIG1ldGhvZCk7XG4gICAgY2xvY2tbXCJfXCIgKyBtZXRob2RdID0gdGFyZ2V0W21ldGhvZF07XG5cbiAgICBpZiAobWV0aG9kID09PSBcIkRhdGVcIikge1xuICAgICAgICB2YXIgZGF0ZSA9IG1pcnJvckRhdGVQcm9wZXJ0aWVzKGNsb2NrW21ldGhvZF0sIHRhcmdldFttZXRob2RdKTtcbiAgICAgICAgdGFyZ2V0W21ldGhvZF0gPSBkYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFttZXRob2RdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNsb2NrW21ldGhvZF0uYXBwbHkoY2xvY2ssIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChwcm9wIGluIGNsb2NrW21ldGhvZF0pIHtcbiAgICAgICAgICAgIGlmIChjbG9ja1ttZXRob2RdLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W21ldGhvZF1bcHJvcF0gPSBjbG9ja1ttZXRob2RdW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0W21ldGhvZF0uY2xvY2sgPSBjbG9jaztcbn1cblxudmFyIHRpbWVycyA9IHtcbiAgICBzZXRUaW1lb3V0OiBzZXRUaW1lb3V0LFxuICAgIGNsZWFyVGltZW91dDogY2xlYXJUaW1lb3V0LFxuICAgIHNldEltbWVkaWF0ZTogZ2xvYmFsLnNldEltbWVkaWF0ZSxcbiAgICBjbGVhckltbWVkaWF0ZTogZ2xvYmFsLmNsZWFySW1tZWRpYXRlLFxuICAgIHNldEludGVydmFsOiBzZXRJbnRlcnZhbCxcbiAgICBjbGVhckludGVydmFsOiBjbGVhckludGVydmFsLFxuICAgIERhdGU6IERhdGVcbn07XG5cbmlmIChocnRpbWVQcmVzZW50KSB7XG4gICAgdGltZXJzLmhydGltZSA9IGdsb2JhbC5wcm9jZXNzLmhydGltZTtcbn1cblxudmFyIGtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIGtzID0gW107XG4gICAgdmFyIGtleTtcblxuICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGtzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBrcztcbn07XG5cbmV4cG9ydHMudGltZXJzID0gdGltZXJzO1xuXG5mdW5jdGlvbiBjcmVhdGVDbG9jayhub3csIGxvb3BMaW1pdCkge1xuICAgIGxvb3BMaW1pdCA9IGxvb3BMaW1pdCB8fCAxMDAwO1xuXG4gICAgdmFyIGNsb2NrID0ge1xuICAgICAgICBub3c6IGdldEVwb2NoKG5vdyksXG4gICAgICAgIGhyTm93OiAwLFxuICAgICAgICB0aW1lb3V0czoge30sXG4gICAgICAgIERhdGU6IGNyZWF0ZURhdGUoKSxcbiAgICAgICAgbG9vcExpbWl0OiBsb29wTGltaXRcbiAgICB9O1xuXG4gICAgY2xvY2suRGF0ZS5jbG9jayA9IGNsb2NrO1xuXG4gICAgY2xvY2suc2V0VGltZW91dCA9IGZ1bmN0aW9uIHNldFRpbWVvdXQoZnVuYywgdGltZW91dCkge1xuICAgICAgICByZXR1cm4gYWRkVGltZXIoY2xvY2ssIHtcbiAgICAgICAgICAgIGZ1bmM6IGZ1bmMsXG4gICAgICAgICAgICBhcmdzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgICAgICAgZGVsYXk6IHRpbWVvdXRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNsb2NrLmNsZWFyVGltZW91dCA9IGZ1bmN0aW9uIGNsZWFyVGltZW91dCh0aW1lcklkKSB7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVyKGNsb2NrLCB0aW1lcklkLCBcIlRpbWVvdXRcIik7XG4gICAgfTtcblxuICAgIGNsb2NrLnNldEludGVydmFsID0gZnVuY3Rpb24gc2V0SW50ZXJ2YWwoZnVuYywgdGltZW91dCkge1xuICAgICAgICByZXR1cm4gYWRkVGltZXIoY2xvY2ssIHtcbiAgICAgICAgICAgIGZ1bmM6IGZ1bmMsXG4gICAgICAgICAgICBhcmdzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgICAgICAgZGVsYXk6IHRpbWVvdXQsXG4gICAgICAgICAgICBpbnRlcnZhbDogdGltZW91dFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY2xvY2suY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uIGNsZWFySW50ZXJ2YWwodGltZXJJZCkge1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lcihjbG9jaywgdGltZXJJZCwgXCJJbnRlcnZhbFwiKTtcbiAgICB9O1xuXG4gICAgY2xvY2suc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZ1bmMpIHtcbiAgICAgICAgcmV0dXJuIGFkZFRpbWVyKGNsb2NrLCB7XG4gICAgICAgICAgICBmdW5jOiBmdW5jLFxuICAgICAgICAgICAgYXJnczogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSxcbiAgICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY2xvY2suY2xlYXJJbW1lZGlhdGUgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZSh0aW1lcklkKSB7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVyKGNsb2NrLCB0aW1lcklkLCBcIkltbWVkaWF0ZVwiKTtcbiAgICB9O1xuXG4gICAgY2xvY2sudGljayA9IGZ1bmN0aW9uIHRpY2sobXMpIHtcbiAgICAgICAgbXMgPSB0eXBlb2YgbXMgPT09IFwibnVtYmVyXCIgPyBtcyA6IHBhcnNlVGltZShtcyk7XG4gICAgICAgIHZhciB0aWNrRnJvbSA9IGNsb2NrLm5vdztcbiAgICAgICAgdmFyIHRpY2tUbyA9IGNsb2NrLm5vdyArIG1zO1xuICAgICAgICB2YXIgcHJldmlvdXMgPSBjbG9jay5ub3c7XG4gICAgICAgIHZhciB0aW1lciA9IGZpcnN0VGltZXJJblJhbmdlKGNsb2NrLCB0aWNrRnJvbSwgdGlja1RvKTtcbiAgICAgICAgdmFyIG9sZE5vdywgZmlyc3RFeGNlcHRpb247XG5cbiAgICAgICAgY2xvY2suZHVyaW5nVGljayA9IHRydWU7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlSHJUaW1lKG5ld05vdykge1xuICAgICAgICAgICAgY2xvY2suaHJOb3cgKz0gKG5ld05vdyAtIGNsb2NrLm5vdyk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodGltZXIgJiYgdGlja0Zyb20gPD0gdGlja1RvKSB7XG4gICAgICAgICAgICBpZiAoY2xvY2sudGltZXJzW3RpbWVyLmlkXSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUhyVGltZSh0aW1lci5jYWxsQXQpO1xuICAgICAgICAgICAgICAgIHRpY2tGcm9tID0gdGltZXIuY2FsbEF0O1xuICAgICAgICAgICAgICAgIGNsb2NrLm5vdyA9IHRpbWVyLmNhbGxBdDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbGROb3cgPSBjbG9jay5ub3c7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxUaW1lcihjbG9jaywgdGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb21wZW5zYXRlIGZvciBhbnkgc2V0U3lzdGVtVGltZSgpIGNhbGwgZHVyaW5nIHRpbWVyIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGROb3cgIT09IGNsb2NrLm5vdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGlja0Zyb20gKz0gY2xvY2subm93IC0gb2xkTm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGlja1RvICs9IGNsb2NrLm5vdyAtIG9sZE5vdztcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzICs9IGNsb2NrLm5vdyAtIG9sZE5vdztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RFeGNlcHRpb24gPSBmaXJzdEV4Y2VwdGlvbiB8fCBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGltZXIgPSBmaXJzdFRpbWVySW5SYW5nZShjbG9jaywgcHJldmlvdXMsIHRpY2tUbyk7XG4gICAgICAgICAgICBwcmV2aW91cyA9IHRpY2tGcm9tO1xuICAgICAgICB9XG5cbiAgICAgICAgY2xvY2suZHVyaW5nVGljayA9IGZhbHNlO1xuICAgICAgICB1cGRhdGVIclRpbWUodGlja1RvKTtcbiAgICAgICAgY2xvY2subm93ID0gdGlja1RvO1xuXG4gICAgICAgIGlmIChmaXJzdEV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgZmlyc3RFeGNlcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgIH07XG5cbiAgICBjbG9jay5uZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgdmFyIHRpbWVyID0gZmlyc3RUaW1lcihjbG9jayk7XG4gICAgICAgIGlmICghdGltZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjbG9jay5ub3c7XG4gICAgICAgIH1cblxuICAgICAgICBjbG9jay5kdXJpbmdUaWNrID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNsb2NrLm5vdyA9IHRpbWVyLmNhbGxBdDtcbiAgICAgICAgICAgIGNhbGxUaW1lcihjbG9jaywgdGltZXIpO1xuICAgICAgICAgICAgcmV0dXJuIGNsb2NrLm5vdztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNsb2NrLmR1cmluZ1RpY2sgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjbG9jay5ydW5BbGwgPSBmdW5jdGlvbiBydW5BbGwoKSB7XG4gICAgICAgIHZhciBudW1UaW1lcnMsIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjbG9jay5sb29wTGltaXQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFjbG9jay50aW1lcnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBudW1UaW1lcnMgPSBPYmplY3Qua2V5cyhjbG9jay50aW1lcnMpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChudW1UaW1lcnMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbG9jay5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBYm9ydGluZyBhZnRlciBydW5uaW5nIFwiICsgY2xvY2subG9vcExpbWl0ICsgXCIgdGltZXJzLCBhc3N1bWluZyBhbiBpbmZpbml0ZSBsb29wIVwiKTtcbiAgICB9O1xuXG4gICAgY2xvY2sucnVuVG9MYXN0ID0gZnVuY3Rpb24gcnVuVG9MYXN0KCkge1xuICAgICAgICB2YXIgdGltZXIgPSBsYXN0VGltZXIoY2xvY2spO1xuICAgICAgICBpZiAoIXRpbWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsb2NrLnRpY2sodGltZXIuY2FsbEF0KTtcbiAgICB9O1xuXG4gICAgY2xvY2sucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgY2xvY2sudGltZXJzID0ge307XG4gICAgfTtcblxuICAgIGNsb2NrLnNldFN5c3RlbVRpbWUgPSBmdW5jdGlvbiBzZXRTeXN0ZW1UaW1lKHN5c3RlbVRpbWUpIHtcbiAgICAgICAgLy8gZGV0ZXJtaW5lIHRpbWUgZGlmZmVyZW5jZVxuICAgICAgICB2YXIgbmV3Tm93ID0gZ2V0RXBvY2goc3lzdGVtVGltZSk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0gbmV3Tm93IC0gY2xvY2subm93O1xuICAgICAgICB2YXIgaWQsIHRpbWVyO1xuXG4gICAgICAgIC8vIHVwZGF0ZSAnc3lzdGVtIGNsb2NrJ1xuICAgICAgICBjbG9jay5ub3cgPSBuZXdOb3c7XG5cbiAgICAgICAgLy8gdXBkYXRlIHRpbWVycyBhbmQgaW50ZXJ2YWxzIHRvIGtlZXAgdGhlbSBzdGFibGVcbiAgICAgICAgZm9yIChpZCBpbiBjbG9jay50aW1lcnMpIHtcbiAgICAgICAgICAgIGlmIChjbG9jay50aW1lcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBjbG9jay50aW1lcnNbaWRdO1xuICAgICAgICAgICAgICAgIHRpbWVyLmNyZWF0ZWRBdCArPSBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgIHRpbWVyLmNhbGxBdCArPSBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGlmIChocnRpbWVQcmVzZW50KSB7XG4gICAgICAgIGNsb2NrLmhydGltZSA9IGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcmV2KSkge1xuICAgICAgICAgICAgICAgIHZhciBvbGRTZWNzID0gKHByZXZbMF0gKyBwcmV2WzFdIC8gMWU5KTtcbiAgICAgICAgICAgICAgICB2YXIgbmV3U2VjcyA9IChjbG9jay5ock5vdyAvIDEwMDApO1xuICAgICAgICAgICAgICAgIHZhciBkaWZmZXJlbmNlID0gKG5ld1NlY3MgLSBvbGRTZWNzKTtcbiAgICAgICAgICAgICAgICB2YXIgc2VjcyA9IGZpeGVkRmxvb3IoZGlmZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgdmFyIG5hbm9zZWNzID0gZml4ZWRNb2R1bG8oZGlmZmVyZW5jZSAqIDFlOSwgMWU5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBzZWNzLFxuICAgICAgICAgICAgICAgICAgICBuYW5vc2Vjc1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGZpeGVkRmxvb3IoY2xvY2suaHJOb3cgLyAxMDAwKSxcbiAgICAgICAgICAgICAgICBmaXhlZE1vZHVsbyhjbG9jay5ock5vdyAqIDFlNiwgMWU5KVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvY2s7XG59XG5leHBvcnRzLmNyZWF0ZUNsb2NrID0gY3JlYXRlQ2xvY2s7XG5cbmV4cG9ydHMuaW5zdGFsbCA9IGZ1bmN0aW9uIGluc3RhbGwodGFyZ2V0LCBub3csIHRvRmFrZSwgbG9vcExpbWl0KSB7XG4gICAgdmFyIGksIGw7XG5cbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB0b0Zha2UgPSBub3c7XG4gICAgICAgIG5vdyA9IHRhcmdldC5nZXRUaW1lKCk7XG4gICAgICAgIHRhcmdldCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgdG9GYWtlID0gbm93O1xuICAgICAgICBub3cgPSB0YXJnZXQ7XG4gICAgICAgIHRhcmdldCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICAgIH1cblxuICAgIHZhciBjbG9jayA9IGNyZWF0ZUNsb2NrKG5vdywgbG9vcExpbWl0KTtcblxuICAgIGNsb2NrLnVuaW5zdGFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdW5pbnN0YWxsKGNsb2NrLCB0YXJnZXQpO1xuICAgIH07XG5cbiAgICBjbG9jay5tZXRob2RzID0gdG9GYWtlIHx8IFtdO1xuXG4gICAgaWYgKGNsb2NrLm1ldGhvZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNsb2NrLm1ldGhvZHMgPSBrZXlzKHRpbWVycyk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMCwgbCA9IGNsb2NrLm1ldGhvZHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChjbG9jay5tZXRob2RzW2ldID09PSBcImhydGltZVwiKSB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0LnByb2Nlc3MgJiYgdHlwZW9mIHRhcmdldC5wcm9jZXNzLmhydGltZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGlqYWNrTWV0aG9kKHRhcmdldC5wcm9jZXNzLCBjbG9jay5tZXRob2RzW2ldLCBjbG9jayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoaWphY2tNZXRob2QodGFyZ2V0LCBjbG9jay5tZXRob2RzW2ldLCBjbG9jayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xvY2s7XG59O1xuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciBidWYgPSB0aGlzLnJhbmQuZ2VuZXJhdGUoTWF0aC5jZWlsKGxlbiAvIDgpKTtcblxuICAvLyBTZXQgbG93IGJpdHNcbiAgYnVmWzBdIHw9IDM7XG5cbiAgLy8gTWFzayBoaWdoIGJpdHNcbiAgdmFyIG1hc2sgPSBsZW4gJiAweDc7XG4gIGlmIChtYXNrICE9PSAwKVxuICAgIGJ1ZltidWYubGVuZ3RoIC0gMV0gPj49IDcgLSBtYXNrO1xuXG4gIHJldHVybiBuZXcgYm4oYnVmKTtcbn1cblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcblxuICAgIHZhciBnID0gbi5nY2QoYSk7XG4gICAgaWYgKGcuY21wbigxKSAhPT0gMClcbiAgICAgIHJldHVybiBnO1xuXG4gICAgdmFyIHggPSBhLnRvUmVkKHJlZCkucmVkUG93KGQpO1xuICAgIGlmICh4LmNtcChyb25lKSA9PT0gMCB8fCB4LmNtcChybjEpID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHM7IGkrKykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG5cbiAgICAgIGlmICh4LmNtcChyb25lKSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgICAgaWYgKHguY21wKHJuMSkgPT09IDApXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcbiAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuIiwiZXhwb3J0cy5lbmRpYW5uZXNzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0xFJyB9O1xuXG5leHBvcnRzLmhvc3RuYW1lID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbi5ob3N0bmFtZVxuICAgIH1cbiAgICBlbHNlIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubG9hZGF2ZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdIH07XG5cbmV4cG9ydHMudXB0aW1lID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMCB9O1xuXG5leHBvcnRzLmZyZWVtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLnRvdGFsbWVtID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBOdW1iZXIuTUFYX1ZBTFVFO1xufTtcblxuZXhwb3J0cy5jcHVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy50eXBlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0Jyb3dzZXInIH07XG5cbmV4cG9ydHMucmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5hcHBWZXJzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59O1xuXG5leHBvcnRzLm5ldHdvcmtJbnRlcmZhY2VzXG49IGV4cG9ydHMuZ2V0TmV0d29ya0ludGVyZmFjZXNcbj0gZnVuY3Rpb24gKCkgeyByZXR1cm4ge30gfTtcblxuZXhwb3J0cy5hcmNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ2phdmFzY3JpcHQnIH07XG5cbmV4cG9ydHMucGxhdGZvcm0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnYnJvd3NlcicgfTtcblxuZXhwb3J0cy50bXBkaXIgPSBleHBvcnRzLnRtcERpciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gJy90bXAnO1xufTtcblxuZXhwb3J0cy5FT0wgPSAnXFxuJztcbiIsIm1vZHVsZS5leHBvcnRzPXtcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjFcIjogXCJhZXMtMTI4LWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yXCI6IFwiYWVzLTEyOC1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuM1wiOiBcImFlcy0xMjgtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjRcIjogXCJhZXMtMTI4LWNmYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMVwiOiBcImFlcy0xOTItZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyXCI6IFwiYWVzLTE5Mi1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjNcIjogXCJhZXMtMTkyLW9mYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNFwiOiBcImFlcy0xOTItY2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxXCI6IFwiYWVzLTI1Ni1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDJcIjogXCJhZXMtMjU2LWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40M1wiOiBcImFlcy0yNTYtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0XCI6IFwiYWVzLTI1Ni1jZmJcIlxufSIsIi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvYXNuMS5qc1xuLy8gRmVkb3IsIHlvdSBhcmUgYW1hemluZy5cblxudmFyIGFzbjEgPSByZXF1aXJlKCdhc24xLmpzJylcblxudmFyIFJTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnUlNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMicpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2NvZWZmaWNpZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHJpdmF0ZUtleSA9IFJTQVByaXZhdGVLZXlcblxudmFyIFJTQVB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdSU0FQdWJsaWNLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHVibGljS2V5ID0gUlNBUHVibGljS2V5XG5cbnZhciBQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5QdWJsaWNLZXkgPSBQdWJsaWNLZXlcblxudmFyIEFsZ29yaXRobUlkZW50aWZpZXIgPSBhc24xLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ25vbmUnKS5udWxsXygpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2N1cnZlJykub2JqaWQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdnJykuaW50KClcbiAgICApLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ1ByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHJpdmF0ZUtleSA9IFByaXZhdGVLZXlJbmZvXG52YXIgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgdGhpcy5rZXkoJ2RlY3J5cHQnKS5zZXEoKS5vYmooXG4gICAgICAgIHRoaXMua2V5KCdrZGUnKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgna2RlcGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgICAgICAgdGhpcy5rZXkoJ3NhbHQnKS5vY3RzdHIoKSxcbiAgICAgICAgICAgIHRoaXMua2V5KCdpdGVycycpLmludCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLmtleSgnY2lwaGVyJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdhbGdvJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgnaXYnKS5vY3RzdHIoKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuXG5leHBvcnRzLkVuY3J5cHRlZFByaXZhdGVLZXkgPSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mb1xuXG52YXIgRFNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdEU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJfa2V5JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZfa2V5JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuRFNBUHJpdmF0ZUtleSA9IERTQVByaXZhdGVLZXlcblxuZXhwb3J0cy5EU0FwYXJhbSA9IGFzbjEuZGVmaW5lKCdEU0FwYXJhbScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5pbnQoKVxufSlcbnZhciBFQ1ByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRUNQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlS2V5Jykub2N0c3RyKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShFQ1BhcmFtZXRlcnMpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNLZXknKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLkVDUHJpdmF0ZUtleSA9IEVDUHJpdmF0ZUtleVxudmFyIEVDUGFyYW1ldGVycyA9IGFzbjEuZGVmaW5lKCdFQ1BhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICBuYW1lZEN1cnZlOiB0aGlzLm9iamlkKClcbiAgfSlcbn0pXG5cbmV4cG9ydHMuc2lnbmF0dXJlID0gYXNuMS5kZWZpbmUoJ3NpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3InKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncycpLmludCgpXG4gIClcbn0pXG4iLCIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FwYXRpbC9wZW1zdHJpcFxudmFyIGZpbmRQcm9jID0gL1Byb2MtVHlwZTogNCxFTkNSWVBURURcXHI/XFxuREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVxccj9cXG5cXHI/XFxuKFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXHI/XFxuL21cbnZhciBzdGFydFJlZ2V4ID0gL14tLS0tLUJFR0lOICguKikgS0VZLS0tLS1cXHI/XFxuL21cbnZhciBmdWxsUmVnZXggPSAvXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxccj9cXG4tLS0tLUVORCBcXDEgS0VZLS0tLS0kL21cbnZhciBldnAgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9rZXksIHBhc3N3b3JkKSB7XG4gIHZhciBrZXkgPSBva2V5LnRvU3RyaW5nKClcbiAgdmFyIG1hdGNoID0ga2V5Lm1hdGNoKGZpbmRQcm9jKVxuICB2YXIgZGVjcnlwdGVkXG4gIGlmICghbWF0Y2gpIHtcbiAgICB2YXIgbWF0Y2gyID0ga2V5Lm1hdGNoKGZ1bGxSZWdleClcbiAgICBkZWNyeXB0ZWQgPSBuZXcgQnVmZmVyKG1hdGNoMlsyXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHN1aXRlID0gJ2FlcycgKyBtYXRjaFsxXVxuICAgIHZhciBpdiA9IG5ldyBCdWZmZXIobWF0Y2hbMl0sICdoZXgnKVxuICAgIHZhciBjaXBoZXJUZXh0ID0gbmV3IEJ1ZmZlcihtYXRjaFszXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gICAgdmFyIGNpcGhlcktleSA9IGV2cChwYXNzd29yZCwgaXYuc2xpY2UoMCwgOCksIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpLmtleVxuICAgIHZhciBvdXQgPSBbXVxuICAgIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGNpcGhlcktleSwgaXYpXG4gICAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KG91dClcbiAgfVxuICB2YXIgdGFnID0ga2V5Lm1hdGNoKHN0YXJ0UmVnZXgpWzFdICsgJyBLRVknXG4gIHJldHVybiB7XG4gICAgdGFnOiB0YWcsXG4gICAgZGF0YTogZGVjcnlwdGVkXG4gIH1cbn1cbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZUtleXNcblxuZnVuY3Rpb24gcGFyc2VLZXlzIChidWZmZXIpIHtcbiAgdmFyIHBhc3N3b3JkXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiAhQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBwYXNzd29yZCA9IGJ1ZmZlci5wYXNzcGhyYXNlXG4gICAgYnVmZmVyID0gYnVmZmVyLmtleVxuICB9XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnUFVCTElDIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICBuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSA9IG5kYXRhLnN1YmplY3RQdWJsaWNLZXlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2VjJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhXG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ0VOQ1JZUFRFRCBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIGRhdGEgPSBkZWNyeXB0KGRhdGEsIHBhc3N3b3JkKVxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGNhc2UgJ1BSSVZBVEUgS0VZJzpcbiAgICAgIG5kYXRhID0gYXNuMS5Qcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VydmU6IG5kYXRhLmFsZ29yaXRobS5jdXJ2ZSxcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpLnByaXZhdGVLZXlcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnByaXZfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIHBhcmFtczogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdSU0EgUFVCTElDIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ1JTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdEU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgIHBhcmFtczogYXNuMS5EU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIH1cbiAgICBjYXNlICdFQyBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VydmU6IGRhdGEucGFyYW1ldGVycy52YWx1ZSxcbiAgICAgICAgcHJpdmF0ZUtleTogZGF0YS5wcml2YXRlS2V5XG4gICAgICB9XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICB9XG59XG5wYXJzZUtleXMuc2lnbmF0dXJlID0gYXNuMS5zaWduYXR1cmVcbmZ1bmN0aW9uIGRlY3J5cHQgKGRhdGEsIHBhc3N3b3JkKSB7XG4gIHZhciBzYWx0ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHRcbiAgdmFyIGl0ZXJzID0gcGFyc2VJbnQoZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksIDEwKVxuICB2YXIgYWxnbyA9IGFlc2lkW2RhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbignLicpXVxuICB2YXIgaXYgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdlxuICB2YXIgY2lwaGVyVGV4dCA9IGRhdGEuc3ViamVjdFByaXZhdGVLZXlcbiAgdmFyIGtleWxlbiA9IHBhcnNlSW50KGFsZ28uc3BsaXQoJy0nKVsxXSwgMTApIC8gOFxuICB2YXIga2V5ID0gY29tcGF0LnBia2RmMlN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJzLCBrZXlsZW4pXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgcmVzdWx0ID0gc3BsaXRQYXRoKHBhdGgpLFxuICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgIGRpciA9IHJlc3VsdFsxXTtcblxuICBpZiAoIXJvb3QgJiYgIWRpcikge1xuICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlclxuICAgIHJldHVybiAnLic7XG4gIH1cblxuICBpZiAoZGlyKSB7XG4gICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2hcbiAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByb290ICsgZGlyO1xufTtcblxuXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24ocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gc3BsaXRQYXRoKHBhdGgpWzJdO1xuICAvLyBUT0RPOiBtYWtlIHRoaXMgY29tcGFyaXNvbiBjYXNlLWluc2Vuc2l0aXZlIG9uIHdpbmRvd3M/XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsInZhciBjcmVhdGVIbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxudmFyIGNoZWNrUGFyYW1ldGVycyA9IHJlcXVpcmUoJy4vcHJlY29uZGl0aW9uJylcblxuZXhwb3J0cy5wYmtkZjIgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGRpZ2VzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZGlnZXN0XG4gICAgZGlnZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBjaGVja1BhcmFtZXRlcnMoaXRlcmF0aW9ucywga2V5bGVuKVxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMicpXG5cbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgY2FsbGJhY2sobnVsbCwgZXhwb3J0cy5wYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCkpXG4gIH0pXG59XG5cbnZhciBkZWZhdWx0RW5jb2RpbmdcbmlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufSBlbHNlIHtcbiAgdmFyIHBWZXJzaW9uTWFqb3IgPSBwYXJzZUludChwcm9jZXNzLnZlcnNpb24uc3BsaXQoJy4nKVswXS5zbGljZSgxKSwgMTApXG5cbiAgZGVmYXVsdEVuY29kaW5nID0gcFZlcnNpb25NYWpvciA+PSA2ID8gJ3V0Zi04JyA6ICdiaW5hcnknXG59XG5cbmV4cG9ydHMucGJrZGYyU3luYyA9IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IG5ldyBCdWZmZXIocGFzc3dvcmQsIGRlZmF1bHRFbmNvZGluZylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2FsdCkpIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsIGRlZmF1bHRFbmNvZGluZylcblxuICBjaGVja1BhcmFtZXRlcnMoaXRlcmF0aW9ucywga2V5bGVuKVxuXG4gIGRpZ2VzdCA9IGRpZ2VzdCB8fCAnc2hhMSdcblxuICB2YXIgaExlblxuICB2YXIgbCA9IDFcbiAgdmFyIERLID0gbmV3IEJ1ZmZlcihrZXlsZW4pXG4gIHZhciBibG9jazEgPSBuZXcgQnVmZmVyKHNhbHQubGVuZ3RoICsgNClcbiAgc2FsdC5jb3B5KGJsb2NrMSwgMCwgMCwgc2FsdC5sZW5ndGgpXG5cbiAgdmFyIHJcbiAgdmFyIFRcblxuICBmb3IgKHZhciBpID0gMTsgaSA8PSBsOyBpKyspIHtcbiAgICBibG9jazEud3JpdGVVSW50MzJCRShpLCBzYWx0Lmxlbmd0aClcbiAgICB2YXIgVSA9IGNyZWF0ZUhtYWMoZGlnZXN0LCBwYXNzd29yZCkudXBkYXRlKGJsb2NrMSkuZGlnZXN0KClcblxuICAgIGlmICghaExlbikge1xuICAgICAgaExlbiA9IFUubGVuZ3RoXG4gICAgICBUID0gbmV3IEJ1ZmZlcihoTGVuKVxuICAgICAgbCA9IE1hdGguY2VpbChrZXlsZW4gLyBoTGVuKVxuICAgICAgciA9IGtleWxlbiAtIChsIC0gMSkgKiBoTGVuXG4gICAgfVxuXG4gICAgVS5jb3B5KFQsIDAsIDAsIGhMZW4pXG5cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8IGl0ZXJhdGlvbnM7IGorKykge1xuICAgICAgVSA9IGNyZWF0ZUhtYWMoZGlnZXN0LCBwYXNzd29yZCkudXBkYXRlKFUpLmRpZ2VzdCgpXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGhMZW47IGsrKykgVFtrXSBePSBVW2tdXG4gICAgfVxuXG4gICAgdmFyIGRlc3RQb3MgPSAoaSAtIDEpICogaExlblxuICAgIHZhciBsZW4gPSAoaSA9PT0gbCA/IHIgOiBoTGVuKVxuICAgIFQuY29weShESywgZGVzdFBvcywgMCwgbGVuKVxuICB9XG5cbiAgcmV0dXJuIERLXG59XG4iLCJ2YXIgTUFYX0FMTE9DID0gTWF0aC5wb3coMiwgMzApIC0gMSAvLyBkZWZhdWx0IGluIGlvanNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMsIGtleWxlbikge1xuICBpZiAodHlwZW9mIGl0ZXJhdGlvbnMgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSXRlcmF0aW9ucyBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGl0ZXJhdGlvbnMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGl0ZXJhdGlvbnMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlsZW4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignS2V5IGxlbmd0aCBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGtleWxlbiA8IDAgfHwga2V5bGVuID4gTUFYX0FMTE9DIHx8IGtleWxlbiAhPT0ga2V5bGVuKSB7IC8qIGVzbGludCBuby1zZWxmLWNvbXBhcmU6IDAgKi9cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQga2V5IGxlbmd0aCcpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKCFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBuZXh0VGljaztcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5uZXh0VGljaztcbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soZm4sIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2FsbGJhY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGFyZ3MsIGk7XG4gIHN3aXRjaCAobGVuKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTtcbiAgY2FzZSAyOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja09uZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7XG4gICAgfSk7XG4gIGNhc2UgMzpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIpO1xuICAgIH0pO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH0pO1xuICBkZWZhdWx0OlxuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgYXJnc1tpKytdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2soKSB7XG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsImV4cG9ydHMucHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJy4vcHVibGljRW5jcnlwdCcpO1xuZXhwb3J0cy5wcml2YXRlRGVjcnlwdCA9IHJlcXVpcmUoJy4vcHJpdmF0ZURlY3J5cHQnKTtcblxuZXhwb3J0cy5wcml2YXRlRW5jcnlwdCA9IGZ1bmN0aW9uIHByaXZhdGVFbmNyeXB0KGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnB1YmxpY0VuY3J5cHQoa2V5LCBidWYsIHRydWUpO1xufTtcblxuZXhwb3J0cy5wdWJsaWNEZWNyeXB0ID0gZnVuY3Rpb24gcHVibGljRGVjcnlwdChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wcml2YXRlRGVjcnlwdChrZXksIGJ1ZiwgdHJ1ZSk7XG59OyIsInZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNlZWQsIGxlbikge1xuICB2YXIgdCA9IG5ldyBCdWZmZXIoJycpO1xuICB2YXIgIGkgPSAwLCBjO1xuICB3aGlsZSAodC5sZW5ndGggPCBsZW4pIHtcbiAgICBjID0gaTJvcHMoaSsrKTtcbiAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwgY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShzZWVkKS51cGRhdGUoYykuZGlnZXN0KCldKTtcbiAgfVxuICByZXR1cm4gdC5zbGljZSgwLCBsZW4pO1xufTtcblxuZnVuY3Rpb24gaTJvcHMoYykge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcig0KTtcbiAgb3V0LndyaXRlVUludDMyQkUoYywwKTtcbiAgcmV0dXJuIG91dDtcbn0iLCJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpO1xudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJyk7XG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKTtcbnZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKTtcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKTtcbnZhciB3aXRoUHVibGljID0gcmVxdWlyZSgnLi93aXRoUHVibGljJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHByaXZhdGVEZWNyeXB0KHByaXZhdGVfa2V5LCBlbmMsIHJldmVyc2UpIHtcbiAgdmFyIHBhZGRpbmc7XG4gIGlmIChwcml2YXRlX2tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHByaXZhdGVfa2V5LnBhZGRpbmc7XG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxO1xuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0O1xuICB9XG4gIFxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHByaXZhdGVfa2V5KTtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIGlmIChlbmMubGVuZ3RoID4gayB8fCBuZXcgYm4oZW5jKS5jbXAoa2V5Lm1vZHVsdXMpID49IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICB2YXIgbXNnO1xuICBpZiAocmV2ZXJzZSkge1xuICAgIG1zZyA9IHdpdGhQdWJsaWMobmV3IGJuKGVuYyksIGtleSk7XG4gIH0gZWxzZSB7XG4gICAgbXNnID0gY3J0KGVuYywga2V5KTtcbiAgfVxuICB2YXIgekJ1ZmZlciA9IG5ldyBCdWZmZXIoayAtIG1zZy5sZW5ndGgpO1xuICB6QnVmZmVyLmZpbGwoMCk7XG4gIG1zZyA9IEJ1ZmZlci5jb25jYXQoW3pCdWZmZXIsIG1zZ10sIGspO1xuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHJldHVybiBvYWVwKGtleSwgbXNnKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAxKSB7XG4gICAgcmV0dXJuIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcmV0dXJuIG1zZztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBvYWVwKGtleSwgbXNnKXtcbiAgdmFyIG4gPSBrZXkubW9kdWx1cztcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShuZXcgQnVmZmVyKCcnKSkuZGlnZXN0KCk7XG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoO1xuICB2YXIgaExlbjIgPSAyICogaExlbjtcbiAgaWYgKG1zZ1swXSAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBtYXNrZWRTZWVkID0gbXNnLnNsaWNlKDEsIGhMZW4gKyAxKTtcbiAgdmFyIG1hc2tlZERiID0gIG1zZy5zbGljZShoTGVuICsgMSk7XG4gIHZhciBzZWVkID0geG9yKG1hc2tlZFNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpO1xuICB2YXIgZGIgPSB4b3IobWFza2VkRGIsIG1nZihzZWVkLCBrIC0gaExlbiAtIDEpKTtcbiAgaWYgKGNvbXBhcmUoaUhhc2gsIGRiLnNsaWNlKDAsIGhMZW4pKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBpID0gaExlbjtcbiAgd2hpbGUgKGRiW2ldID09PSAwKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChkYltpKytdICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgcmV0dXJuIGRiLnNsaWNlKGkpO1xufVxuXG5mdW5jdGlvbiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSl7XG4gIHZhciBwMSA9IG1zZy5zbGljZSgwLCAyKTtcbiAgdmFyIGkgPSAyO1xuICB2YXIgc3RhdHVzID0gMDtcbiAgd2hpbGUgKG1zZ1tpKytdICE9PSAwKSB7XG4gICAgaWYgKGkgPj0gbXNnLmxlbmd0aCkge1xuICAgICAgc3RhdHVzKys7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdmFyIHBzID0gbXNnLnNsaWNlKDIsIGkgLSAxKTtcbiAgdmFyIHAyID0gbXNnLnNsaWNlKGkgLSAxLCBpKTtcblxuICBpZiAoKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDInICYmICFyZXZlcnNlKSB8fCAocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMScgJiYgcmV2ZXJzZSkpe1xuICAgIHN0YXR1cysrO1xuICB9XG4gIGlmIChwcy5sZW5ndGggPCA4KSB7XG4gICAgc3RhdHVzKys7XG4gIH1cbiAgaWYgKHN0YXR1cykge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHJldHVybiAgbXNnLnNsaWNlKGkpO1xufVxuZnVuY3Rpb24gY29tcGFyZShhLCBiKXtcbiAgYSA9IG5ldyBCdWZmZXIoYSk7XG4gIGIgPSBuZXcgQnVmZmVyKGIpO1xuICB2YXIgZGlmID0gMDtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgZGlmKys7XG4gICAgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgfVxuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgZGlmICs9IChhW2ldIF4gYltpXSk7XG4gIH1cbiAgcmV0dXJuIGRpZjtcbn0iLCJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKTtcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpO1xudmFyIHhvciA9IHJlcXVpcmUoJy4veG9yJyk7XG52YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKTtcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpO1xuXG52YXIgY29uc3RhbnRzID0ge1xuICBSU0FfUEtDUzFfT0FFUF9QQURESU5HOiA0LFxuICBSU0FfUEtDUzFfUEFERElOOiAxLFxuICBSU0FfTk9fUEFERElORzogM1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwdWJsaWNFbmNyeXB0KHB1YmxpY19rZXksIG1zZywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZztcbiAgaWYgKHB1YmxpY19rZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwdWJsaWNfa2V5LnBhZGRpbmc7XG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxO1xuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0O1xuICB9XG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHVibGljX2tleSk7XG4gIHZhciBwYWRkZWRNc2c7XG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcGFkZGVkTXNnID0gb2FlcChrZXksIG1zZyk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHBhZGRlZE1zZyA9IHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcGFkZGVkTXNnID0gbmV3IGJuKG1zZyk7XG4gICAgaWYgKHBhZGRlZE1zZy5jbXAoa2V5Lm1vZHVsdXMpID49IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSB0b28gbG9uZyBmb3IgbW9kdWx1cycpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpO1xuICB9XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcmV0dXJuIGNydChwYWRkZWRNc2csIGtleSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHdpdGhQdWJsaWMocGFkZGVkTXNnLCBrZXkpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBvYWVwKGtleSwgbXNnKXtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShuZXcgQnVmZmVyKCcnKSkuZGlnZXN0KCk7XG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoO1xuICB2YXIgaExlbjIgPSAyICogaExlbjtcbiAgaWYgKG1MZW4gPiBrIC0gaExlbjIgLSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJyk7XG4gIH1cbiAgdmFyIHBzID0gbmV3IEJ1ZmZlcihrIC0gbUxlbiAtIGhMZW4yIC0gMik7XG4gIHBzLmZpbGwoMCk7XG4gIHZhciBkYmxlbiA9IGsgLSBoTGVuIC0gMTtcbiAgdmFyIHNlZWQgPSByYW5kb21CeXRlcyhoTGVuKTtcbiAgdmFyIG1hc2tlZERiID0geG9yKEJ1ZmZlci5jb25jYXQoW2lIYXNoLCBwcywgbmV3IEJ1ZmZlcihbMV0pLCBtc2ddLCBkYmxlbiksIG1nZihzZWVkLCBkYmxlbikpO1xuICB2YXIgbWFza2VkU2VlZCA9IHhvcihzZWVkLCBtZ2YobWFza2VkRGIsIGhMZW4pKTtcbiAgcmV0dXJuIG5ldyBibihCdWZmZXIuY29uY2F0KFtuZXcgQnVmZmVyKFswXSksIG1hc2tlZFNlZWQsIG1hc2tlZERiXSwgaykpO1xufVxuZnVuY3Rpb24gcGtjczEoa2V5LCBtc2csIHJldmVyc2Upe1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGg7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICBpZiAobUxlbiA+IGsgLSAxMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpO1xuICB9XG4gIHZhciBwcztcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBwcyA9IG5ldyBCdWZmZXIoayAtIG1MZW4gLSAzKTtcbiAgICBwcy5maWxsKDB4ZmYpO1xuICB9IGVsc2Uge1xuICAgIHBzID0gbm9uWmVybyhrIC0gbUxlbiAtIDMpO1xuICB9XG4gIHJldHVybiBuZXcgYm4oQnVmZmVyLmNvbmNhdChbbmV3IEJ1ZmZlcihbMCwgcmV2ZXJzZT8xOjJdKSwgcHMsIG5ldyBCdWZmZXIoWzBdKSwgbXNnXSwgaykpO1xufVxuZnVuY3Rpb24gbm9uWmVybyhsZW4sIGNyeXB0bykge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbioyKTtcbiAgdmFyIGN1ciA9IDA7XG4gIHZhciBudW07XG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgaWYgKGN1ciA9PT0gY2FjaGUubGVuZ3RoKSB7XG4gICAgICBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbioyKTtcbiAgICAgIGN1ciA9IDA7XG4gICAgfVxuICAgIG51bSA9IGNhY2hlW2N1cisrXTtcbiAgICBpZiAobnVtKSB7XG4gICAgICBvdXRbaSsrXSA9IG51bTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn0iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xuZnVuY3Rpb24gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcihwYWRkZWRNc2dcbiAgICAudG9SZWQoYm4ubW9udChrZXkubW9kdWx1cykpXG4gICAgLnJlZFBvdyhuZXcgYm4oa2V5LnB1YmxpY0V4cG9uZW50KSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLnRvQXJyYXkoKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aFB1YmxpYzsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhvcihhLCBiKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGFbaV0gXj0gYltpXTtcbiAgfVxuICByZXR1cm4gYVxufTsiLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gb2xkQnJvd3NlciAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxcbnVzZSBjaHJvbWUsIEZpcmVGb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEnKVxufVxuXG52YXIgY3J5cHRvID0gZ2xvYmFsLmNyeXB0byB8fCBnbG9iYWwubXNDcnlwdG9cblxuaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmFuZG9tQnl0ZXNcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gb2xkQnJvd3NlclxufVxuXG5mdW5jdGlvbiByYW5kb21CeXRlcyAoc2l6ZSwgY2IpIHtcbiAgLy8gcGhhbnRvbWpzIG5lZWRzIHRvIHRocm93XG4gIGlmIChzaXplID4gNjU1MzYpIHRocm93IG5ldyBFcnJvcigncmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcycpXG4gIC8vIGluIGNhc2UgYnJvd3NlcmlmeSAgaXNuJ3QgdXNpbmcgdGhlIFVpbnQ4QXJyYXkgdmVyc2lvblxuICB2YXIgcmF3Qnl0ZXMgPSBuZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoc2l6ZSlcblxuICAvLyBUaGlzIHdpbGwgbm90IHdvcmsgaW4gb2xkZXIgYnJvd3NlcnMuXG4gIC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXNcbiAgaWYgKHNpemUgPiAwKSB7ICAvLyBnZXRSYW5kb21WYWx1ZXMgZmFpbHMgb24gSUUgaWYgc2l6ZSA9PSAwXG4gICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhyYXdCeXRlcylcbiAgfVxuICAvLyBwaGFudG9tanMgZG9lc24ndCBsaWtlIGEgYnVmZmVyIGJlaW5nIHBhc3NlZCBoZXJlXG4gIHZhciBieXRlcyA9IG5ldyBCdWZmZXIocmF3Qnl0ZXMuYnVmZmVyKVxuXG4gIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBjYihudWxsLCBieXRlcylcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX2R1cGxleC5qc1wiKVxuIiwiLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHByb2Nlc3NOZXh0VGljayA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV93cml0YWJsZScpO1xuXG51dGlsLmluaGVyaXRzKER1cGxleCwgUmVhZGFibGUpO1xuXG52YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbmZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICB2YXIgbWV0aG9kID0ga2V5c1t2XTtcbiAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG5cbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG5cbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG59XG5cbi8vIHRoZSBuby1oYWxmLW9wZW4gZW5mb3JjZXJcbmZ1bmN0aW9uIG9uZW5kKCkge1xuICAvLyBpZiB3ZSBhbGxvdyBoYWxmLW9wZW4gc3RhdGUsIG9yIGlmIHRoZSB3cml0YWJsZSBzaWRlIGVuZGVkLFxuICAvLyB0aGVuIHdlJ3JlIG9rLlxuICBpZiAodGhpcy5hbGxvd0hhbGZPcGVuIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybjtcblxuICAvLyBubyBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4uXG4gIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLlxuICBwcm9jZXNzTmV4dFRpY2sob25FbmROVCwgdGhpcyk7XG59XG5cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn0iLCIvLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtO1xuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBTdHJlYW0gPSByZXF1aXJlKCdzdCcgKyAncmVhbScpO1xuICB9IGNhdGNoIChfKSB7fSBmaW5hbGx5IHtcbiAgICBpZiAoIVN0cmVhbSkgU3RyZWFtID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuICB9XG59KSgpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGJ1ZmZlclNoaW0gPSByZXF1aXJlKCdidWZmZXItc2hpbXMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgZGVidWdVdGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIGRlYnVnID0gdm9pZCAwO1xuaWYgKGRlYnVnVXRpbCAmJiBkZWJ1Z1V0aWwuZGVidWdsb2cpIHtcbiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpO1xufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbiAoKSB7fTtcbn1cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnlcbiAgICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gICAgLy8gdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICAgIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH4gfnRoaXMuaGlnaFdhdGVyTWFyaztcblxuICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZVxuICAvLyBsaW5rZWQgbGlzdCBjYW4gcmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIGJlZ2lubmluZyBmYXN0ZXIgdGhhblxuICAvLyBhcnJheS5zaGlmdCgpXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGVMaXN0ZW5pbmcgPSBmYWxzZTtcbiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyB3aGVuIHBpcGluZywgd2Ugb25seSBjYXJlIGFib3V0ICdyZWFkYWJsZScgZXZlbnRzIHRoYXQgaGFwcGVuXG4gIC8vIGFmdGVyIHJlYWQoKWluZyBhbGwgdGhlIGJ5dGVzIGFuZCBub3QgZ2V0dGluZyBhbnkgcHVzaGJhY2suXG4gIHRoaXMucmFuT3V0ID0gZmFsc2U7XG5cbiAgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcbiAgdGhpcy5hd2FpdERyYWluID0gMDtcblxuICAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcblxuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpO1xuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3lcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMucmVhZCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fcmVhZCA9IG9wdGlvbnMucmVhZDtcblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICBjaHVuayA9IGJ1ZmZlclNoaW0uZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGVuY29kaW5nLCBmYWxzZSk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCAnJywgdHJ1ZSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPT09IGZhbHNlO1xufTtcblxuZnVuY3Rpb24gcmVhZGFibGVBZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQpIHtcbiAgdmFyIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2UgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkge1xuICAgIGlmIChzdGF0ZS5lbmRlZCAmJiAhYWRkVG9Gcm9udCkge1xuICAgICAgdmFyIGUgPSBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZEVtaXR0ZWQgJiYgYWRkVG9Gcm9udCkge1xuICAgICAgdmFyIF9lID0gbmV3IEVycm9yKCdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcpO1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgX2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2tpcEFkZDtcbiAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFhZGRUb0Zyb250ICYmICFlbmNvZGluZykge1xuICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICBza2lwQWRkID0gIXN0YXRlLm9iamVjdE1vZGUgJiYgY2h1bmsubGVuZ3RoID09PSAwO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFkZFRvRnJvbnQpIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcblxuICAgICAgLy8gRG9uJ3QgYWRkIHRvIHRoZSBidWZmZXIgaWYgd2UndmUgZGVjb2RlZCB0byBhbiBlbXB0eSBzdHJpbmcgY2h1bmsgYW5kXG4gICAgICAvLyB3ZSdyZSBub3QgaW4gb2JqZWN0IG1vZGVcbiAgICAgIGlmICghc2tpcEFkZCkge1xuICAgICAgICAvLyBpZiB3ZSB3YW50IHRoZSBkYXRhIG5vdywganVzdCBlbWl0IGl0LlxuICAgICAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICAgICAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICAgICAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgICAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICAgICAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTtcbn1cblxuLy8gaWYgaXQncyBwYXN0IHRoZSBoaWdoIHdhdGVyIG1hcmssIHdlIGNhbiBwdXNoIGluIHNvbWUgbW9yZS5cbi8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lXG4vLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCxcbi8vIHN1Y2ggYXMgdGhlIHJlcGwuICBBbHNvLCBpZiB0aGUgcHVzaCgpIHRyaWdnZXJlZCBhXG4vLyByZWFkYWJsZSBldmVudCwgYW5kIHRoZSB1c2VyIGNhbGxlZCByZWFkKGxhcmdlTnVtYmVyKSBzdWNoIHRoYXRcbi8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyXG4vLyAncmVhZGFibGUnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLlxuZnVuY3Rpb24gbmVlZE1vcmVEYXRhKHN0YXRlKSB7XG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyIHRvIHByZXZlbnQgaW5jcmVhc2luZyBod20gZXhjZXNzaXZlbHkgaW5cbiAgICAvLyB0aW55IGFtb3VudHNcbiAgICBuLS07XG4gICAgbiB8PSBuID4+PiAxO1xuICAgIG4gfD0gbiA+Pj4gMjtcbiAgICBuIHw9IG4gPj4+IDQ7XG4gICAgbiB8PSBuID4+PiA4O1xuICAgIG4gfD0gbiA+Pj4gMTY7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBuO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGhvd011Y2hUb1JlYWQobiwgc3RhdGUpIHtcbiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwO1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIDE7XG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9XG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuICBpZiAobiA+IHN0YXRlLmhpZ2hXYXRlck1hcmspIHN0YXRlLmhpZ2hXYXRlck1hcmsgPSBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKTtcbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gbjtcbiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2hcbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn1cblxuLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcblxuICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmxlbmd0aCAtPSBuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vd1xuICAgIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgICBpZiAoIXN0YXRlLmVuZGVkKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7XG4gIHZhciBlciA9IG51bGw7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGNodW5rKSAmJiB0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICByZXR1cm4gZXI7XG59XG5cbmZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUuZW5kZWQpIHJldHVybjtcbiAgaWYgKHN0YXRlLmRlY29kZXIpIHtcbiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuXG4gIC8vIGVtaXQgJ3JlYWRhYmxlJyBub3cgdG8gbWFrZSBzdXJlIGl0IGdldHMgcGlja2VkIHVwLlxuICBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbn1cblxuLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBpZiAoc3RhdGUuc3luYykgcHJvY2Vzc05leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhzdHJlYW0pIHtcbiAgZGVidWcoJ2VtaXQgcmVhZGFibGUnKTtcbiAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7XG4gIGZsb3coc3RyZWFtKTtcbn1cblxuLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nTW9yZSkge1xuICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTtcbiAgICBwcm9jZXNzTmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgd2hpbGUgKCFzdGF0ZS5yZWFkaW5nICYmICFzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5lbmRlZCAmJiBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKVxuICAgICAgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO2Vsc2UgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB9XG4gIHN0YXRlLnJlYWRpbmdNb3JlID0gZmFsc2U7XG59XG5cbi8vIGFic3RyYWN0IG1ldGhvZC4gIHRvIGJlIG92ZXJyaWRkZW4gaW4gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguXG4vLyBmb3IgdmlydHVhbCAobm9uLXN0cmluZywgbm9uLWJ1ZmZlcikgc3RyZWFtcywgXCJsZW5ndGhcIiBpcyBzb21ld2hhdFxuLy8gYXJiaXRyYXJ5LCBhbmQgcGVyaGFwcyBub3QgdmVyeSBtZWFuaW5nZnVsLlxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignX3JlYWQoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykge1xuICB2YXIgc3JjID0gdGhpcztcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcblxuICB2YXIgZG9FbmQgPSAoIXBpcGVPcHRzIHx8IHBpcGVPcHRzLmVuZCAhPT0gZmFsc2UpICYmIGRlc3QgIT09IHByb2Nlc3Muc3Rkb3V0ICYmIGRlc3QgIT09IHByb2Nlc3Muc3RkZXJyO1xuXG4gIHZhciBlbmRGbiA9IGRvRW5kID8gb25lbmQgOiBjbGVhbnVwO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcHJvY2Vzc05leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSkge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBjbGVhbnVwKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG4gIC8vIHdoZW4gdGhlIGRlc3QgZHJhaW5zLCBpdCByZWR1Y2VzIHRoZSBhd2FpdERyYWluIGNvdW50ZXJcbiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpXG4gIC8vIGhhbmRsZXIgaW4gZmxvdygpLCBidXQgYWRkaW5nIGFuZCByZW1vdmluZyByZXBlYXRlZGx5IGlzXG4gIC8vIHRvbyBzbG93LlxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7XG4gICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBjbGVhbnVwKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuXG4gICAgY2xlYW5lZFVwID0gdHJ1ZTtcblxuICAgIC8vIGlmIHRoZSByZWFkZXIgaXMgd2FpdGluZyBmb3IgYSBkcmFpbiBldmVudCBmcm9tIHRoaXNcbiAgICAvLyBzcGVjaWZpYyB3cml0ZXIsIHRoZW4gaXQgd291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgc3RhcnRcbiAgICAvLyBmbG93aW5nIGFnYWluLlxuICAgIC8vIFNvLCBpZiB0aGlzIGlzIGF3YWl0aW5nIGEgZHJhaW4sIHRoZW4gd2UganVzdCBjYWxsIGl0IG5vdy5cbiAgICAvLyBJZiB3ZSBkb24ndCBrbm93LCB0aGVuIGFzc3VtZSB0aGF0IHdlIGFyZSB3YWl0aW5nIGZvciBvbmUuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpO1xuICB9XG5cbiAgLy8gSWYgdGhlIHVzZXIgcHVzaGVzIG1vcmUgZGF0YSB3aGlsZSB3ZSdyZSB3cml0aW5nIHRvIGRlc3QgdGhlbiB3ZSdsbCBlbmQgdXBcbiAgLy8gaW4gb25kYXRhIGFnYWluLiBIb3dldmVyLCB3ZSBvbmx5IHdhbnQgdG8gaW5jcmVhc2UgYXdhaXREcmFpbiBvbmNlIGJlY2F1c2VcbiAgLy8gZGVzdCB3aWxsIG9ubHkgZW1pdCBvbmUgJ2RyYWluJyBldmVudCBmb3IgdGhlIG11bHRpcGxlIHdyaXRlcy5cbiAgLy8gPT4gSW50cm9kdWNlIGEgZ3VhcmQgb24gaW5jcmVhc2luZyBhd2FpdERyYWluLlxuICB2YXIgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICBzcmMub24oJ2RhdGEnLCBvbmRhdGEpO1xuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IGZhbHNlO1xuICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTtcbiAgICBpZiAoZmFsc2UgPT09IHJldCAmJiAhaW5jcmVhc2VkQXdhaXREcmFpbikge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4pO1xuICAgICAgICBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHNyYy5wYXVzZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG4gIHByZXBlbmRMaXN0ZW5lcihkZXN0LCAnZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG5cbiAgZnVuY3Rpb24gdW5waXBlKCkge1xuICAgIGRlYnVnKCd1bnBpcGUnKTtcbiAgICBzcmMudW5waXBlKGRlc3QpO1xuICB9XG5cbiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTtcblxuICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlID0gc3JjLl9yZWFkYWJsZVN0YXRlO1xuICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluKSBzdGF0ZS5hd2FpdERyYWluLS07XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpcztcblxuICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCFkZXN0KSBkZXN0ID0gc3RhdGUucGlwZXM7XG5cbiAgICAvLyBnb3QgYSBtYXRjaC5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0c1tpXS5lbWl0KCd1bnBpcGUnLCB0aGlzKTtcbiAgICB9cmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG5cbiAgc3RhdGUucGlwZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgc3RhdGUucGlwZXNDb3VudCAtPSAxO1xuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTtcblxuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUub24uY2FsbCh0aGlzLCBldiwgZm4pO1xuXG4gIGlmIChldiA9PT0gJ2RhdGEnKSB7XG4gICAgLy8gU3RhcnQgZmxvd2luZyBvbiBuZXh0IHRpY2sgaWYgc3RyZWFtIGlzbid0IGV4cGxpY2l0bHkgcGF1c2VkXG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHRoaXMucmVzdW1lKCk7XG4gIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHByb2Nlc3NOZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzLCBzdGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5SZWFkYWJsZS5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBSZWFkYWJsZS5wcm90b3R5cGUub247XG5cbmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikge1xuICBkZWJ1ZygncmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwJyk7XG4gIHNlbGYucmVhZCgwKTtcbn1cblxuLy8gcGF1c2UoKSBhbmQgcmVzdW1lKCkgYXJlIHJlbW5hbnRzIG9mIHRoZSBsZWdhY3kgcmVhZGFibGUgc3RyZWFtIEFQSVxuLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLlxuUmVhZGFibGUucHJvdG90eXBlLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpO1xuICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiByZXN1bWUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlc3VtZVNjaGVkdWxlZCkge1xuICAgIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IHRydWU7XG4gICAgcHJvY2Vzc05leHRUaWNrKHJlc3VtZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICB9XG5cbiAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG4gIHN0YXRlLmF3YWl0RHJhaW4gPSAwO1xuICBzdHJlYW0uZW1pdCgncmVzdW1lJyk7XG4gIGZsb3coc3RyZWFtKTtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLnJlYWRpbmcpIHN0cmVhbS5yZWFkKDApO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gIGRlYnVnKCdjYWxsIHBhdXNlIGZsb3dpbmc9JWonLCB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpO1xuICBpZiAoZmFsc2UgIT09IHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwYXVzZScpO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncGF1c2UnKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZsb3coc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2Zsb3cnLCBzdGF0ZS5mbG93aW5nKTtcbiAgd2hpbGUgKHN0YXRlLmZsb3dpbmcgJiYgc3RyZWFtLnJlYWQoKSAhPT0gbnVsbCkge31cbn1cblxuLy8gd3JhcCBhbiBvbGQtc3R5bGUgc3RyZWFtIGFzIHRoZSBhc3luYyBkYXRhIHNvdXJjZS5cbi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS5cbi8vIEl0IGlzIGFuIHVnbHkgdW5mb3J0dW5hdGUgbWVzcyBvZiBoaXN0b3J5LlxuUmVhZGFibGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIGRlYnVnKCd3cmFwcGVkIGVuZCcpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHNlbGYucHVzaChjaHVuayk7XG4gICAgfVxuXG4gICAgc2VsZi5wdXNoKG51bGwpO1xuICB9KTtcblxuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG5cbiAgICAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcbiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47XG5cbiAgICB2YXIgcmV0ID0gc2VsZi5wdXNoKGNodW5rKTtcbiAgICBpZiAoIXJldCkge1xuICAgICAgcGF1c2VkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5wYXVzZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gcHJveHkgYWxsIHRoZSBvdGhlciBtZXRob2RzLlxuICAvLyBpbXBvcnRhbnQgd2hlbiB3cmFwcGluZyBmaWx0ZXJzIGFuZCBkdXBsZXhlcy5cbiAgZm9yICh2YXIgaSBpbiBzdHJlYW0pIHtcbiAgICBpZiAodGhpc1tpXSA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBzdHJlYW1baV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNbaV0gPSBmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHN0cmVhbVttZXRob2RdLmFwcGx5KHN0cmVhbSwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0oaSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJveHkgY2VydGFpbiBpbXBvcnRhbnQgZXZlbnRzLlxuICB2YXIgZXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuICBmb3JFYWNoKGV2ZW50cywgZnVuY3Rpb24gKGV2KSB7XG4gICAgc3RyZWFtLm9uKGV2LCBzZWxmLmVtaXQuYmluZChzZWxmLCBldikpO1xuICB9KTtcblxuICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuICBzZWxmLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pO1xuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn07XG5cbi8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblJlYWRhYmxlLl9mcm9tTGlzdCA9IGZyb21MaXN0O1xuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHZhciByZXQ7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdFxuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IGZyb21MaXN0UGFydGlhbChuLCBzdGF0ZS5idWZmZXIsIHN0YXRlLmRlY29kZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gRXh0cmFjdHMgb25seSBlbm91Z2ggYnVmZmVyZWQgZGF0YSB0byBzYXRpc2Z5IHRoZSBhbW91bnQgcmVxdWVzdGVkLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdFBhcnRpYWwobiwgbGlzdCwgaGFzU3RyaW5ncykge1xuICB2YXIgcmV0O1xuICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzXG4gICAgcmV0ID0gbGlzdC5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTtcbiAgfSBlbHNlIGlmIChuID09PSBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBmaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2hcbiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyXG4gICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YVxuLy8gY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHZhciByZXQgPSBwLmRhdGE7XG4gIG4gLT0gcmV0Lmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBzdHIubGVuZ3RoID8gc3RyLmxlbmd0aCA6IG47XG4gICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEgY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KSB7XG4gIHZhciByZXQgPSBidWZmZXJTaGltLmFsbG9jVW5zYWZlKG4pO1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICBwLmRhdGEuY29weShyZXQpO1xuICBuIC09IHAuZGF0YS5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcHJvY2Vzc05leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5kZXhPZih4cywgeCkge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmICh4c1tpXSA9PT0geCkgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufSIsIi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gVHJhbnNmb3JtU3RhdGUoc3RyZWFtKSB7XG4gIHRoaXMuYWZ0ZXJUcmFuc2Zvcm0gPSBmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICByZXR1cm4gYWZ0ZXJUcmFuc2Zvcm0oc3RyZWFtLCBlciwgZGF0YSk7XG4gIH07XG5cbiAgdGhpcy5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHRoaXMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG4gIHRoaXMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRoaXMud3JpdGVlbmNvZGluZyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG5cbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoIWNiKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdubyB3cml0ZWNiIGluIFRyYW5zZm9ybSBjbGFzcycpKTtcblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSBzdHJlYW0ucHVzaChkYXRhKTtcblxuICBjYihlcik7XG5cbiAgdmFyIHJzID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHN0cmVhbS5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG5cbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUgPSBuZXcgVHJhbnNmb3JtU3RhdGUodGhpcyk7XG5cbiAgdmFyIHN0cmVhbSA9IHRoaXM7XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfVxuXG4gIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy5cbiAgdGhpcy5vbmNlKCdwcmVmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgICBkb25lKHN0cmVhbSwgZXIsIGRhdGEpO1xuICAgIH0pO2Vsc2UgZG9uZShzdHJlYW0pO1xuICB9KTtcbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPT0gbnVsbCAmJiBkYXRhICE9PSB1bmRlZmluZWQpIHN0cmVhbS5wdXNoKGRhdGEpO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG4gIHZhciB3cyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAod3MubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCcpO1xuXG4gIGlmICh0cy50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcHJvY2Vzc05leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW07XG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIFN0cmVhbSA9IHJlcXVpcmUoJ3N0JyArICdyZWFtJyk7XG4gIH0gY2F0Y2ggKF8pIHt9IGZpbmFsbHkge1xuICAgIGlmICghU3RyZWFtKSBTdHJlYW0gPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG4gIH1cbn0pKCk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtIHx8IGh3bSA9PT0gMCA/IGh3bSA6IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSB+IH50aGlzLmhpZ2hXYXRlck1hcms7XG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcbiAgdGhpcy5lbmRpbmcgPSBmYWxzZTtcbiAgLy8gd2hlbiBlbmQoKSBoYXMgYmVlbiBjYWxsZWQsIGFuZCByZXR1cm5lZFxuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuXG4gIC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcbiAgdGhpcy5jb3JrZWQgPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcbiAgdGhpcy53cml0ZWNiID0gbnVsbDtcblxuICAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG4gIHRoaXMud3JpdGVsZW4gPSAwO1xuXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcblxuICAvLyBudW1iZXIgb2YgcGVuZGluZyB1c2VyLXN1cHBsaWVkIHdyaXRlIGNhbGxiYWNrc1xuICAvLyB0aGlzIG11c3QgYmUgMCBiZWZvcmUgJ2ZpbmlzaCcgY2FuIGJlIGVtaXR0ZWRcbiAgdGhpcy5wZW5kaW5nY2IgPSAwO1xuXG4gIC8vIGVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXNcbiAgdGhpcy5wcmVmaW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluXG4gIHRoaXMuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG5cbiAgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHNcbiAgdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG5cbiAgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5c1xuICAvLyBvbmUgYWxsb2NhdGVkIGFuZCBmcmVlIHRvIHVzZSwgYW5kIHdlIG1haW50YWluIGF0IG1vc3QgdHdvXG4gIHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3QodGhpcyk7XG59XG5cbldyaXRhYmxlU3RhdGUucHJvdG90eXBlLmdldEJ1ZmZlciA9IGZ1bmN0aW9uIGdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIG91dC5wdXNoKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCk7XG4gICAgICB9LCAnX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgJyArICdpbnN0ZWFkLicpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpO1xuXG4vLyBUZXN0IF93cml0YWJsZVN0YXRlIGZvciBpbmhlcml0YW5jZSB0byBhY2NvdW50IGZvciBEdXBsZXggc3RyZWFtcyxcbi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS5cbnZhciByZWFsSGFzSW5zdGFuY2U7XG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaGFzSW5zdGFuY2UgJiYgdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdID09PSAnZnVuY3Rpb24nKSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7XG5cbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG5cbiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlXG4gIC8vIE5vZGUuanMgTGF6eVRyYW5zZm9ybSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaGFzIGEgbm9uLXRyaXZpYWwgZ2V0dGVyIGZvclxuICAvLyBgX3dyaXRhYmxlU3RhdGVgIHRoYXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24uXG4gIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHtcbiAgICByZXR1cm4gbmV3IFdyaXRhYmxlKG9wdGlvbnMpO1xuICB9XG5cbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeS5cbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGUgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRlID0gb3B0aW9ucy53cml0ZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlJykpO1xufTtcblxuZnVuY3Rpb24gd3JpdGVBZnRlckVuZChzdHJlYW0sIGNiKSB7XG4gIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7XG4gIC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7XG59XG5cbi8vIElmIHdlIGdldCBzb21ldGhpbmcgdGhhdCBpcyBub3QgYSBidWZmZXIsIHN0cmluZywgbnVsbCwgb3IgdW5kZWZpbmVkLFxuLy8gYW5kIHdlJ3JlIG5vdCBpbiBvYmplY3RNb2RlLCB0aGVuIHRoYXQncyBhbiBlcnJvci5cbi8vIE90aGVyd2lzZSBzdHJlYW0gY2h1bmtzIGFyZSBhbGwgY29uc2lkZXJlZCB0byBiZSBvZiBsZW5ndGg9MSwgYW5kIHRoZVxuLy8gd2F0ZXJtYXJrcyBkZXRlcm1pbmUgaG93IG1hbnkgb2JqZWN0cyB0byBrZWVwIGluIHRoZSBidWZmZXIsIHJhdGhlciB0aGFuXG4vLyBob3cgbWFueSBieXRlcyBvciBjaGFyYWN0ZXJzLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG4gIC8vIEFsd2F5cyB0aHJvdyBlcnJvciBpZiBhIG51bGwgaXMgd3JpdHRlblxuICAvLyBpZiB3ZSBhcmUgbm90IGluIG9iamVjdCBtb2RlIHRoZW4gdGhyb3dcbiAgLy8gaWYgaXQgaXMgbm90IGEgYnVmZmVyLCBzdHJpbmcsIG9yIHVuZGVmaW5lZC5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwcm9jZXNzTmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmICh2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgc3RhdGUuY29ya2VkKys7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUudW5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQtLTtcblxuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIGNsZWFyQnVmZmVyKHRoaXMsIHN0YXRlKTtcbiAgfVxufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykge1xuICAvLyBub2RlOjpQYXJzZUVuY29kaW5nKCkgcmVxdWlyZXMgbG93ZXIgY2FzZS5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIGVuY29kaW5nID0gZW5jb2RpbmcudG9Mb3dlckNhc2UoKTtcbiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2RpbmcgPSBlbmNvZGluZztcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKSB7XG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgY2h1bmsgPSBidWZmZXJTaGltLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5cbi8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG5cbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuICBpZiAoIXJldCkgc3RhdGUubmVlZERyYWluID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHtcbiAgICB2YXIgbGFzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG5ldyBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuICBpZiAoc3luYykgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7ZWxzZSBjYihlcik7XG5cbiAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG5cbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcblxuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki9cbiAgICAgIGFzeW5jV3JpdGUoYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIC8qPC9yZXBsYWNlbWVudD4qL1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYikge1xuICBpZiAoIWZpbmlzaGVkKSBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSk7XG4gIHN0YXRlLnBlbmRpbmdjYi0tO1xuICBjYigpO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuLy8gTXVzdCBmb3JjZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgb24gbmV4dFRpY2ssIHNvIHRoYXQgd2UgZG9uJ3Rcbi8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm5cbi8vIHZhbHVlLCBhbmQgaGFzIGEgY2hhbmNlIHRvIGF0dGFjaCBhICdkcmFpbicgbGlzdGVuZXIuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59XG5cbi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG5cbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgYnVmZmVyW2NvdW50XSA9IGVudHJ5O1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ193cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xufTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkKSB7XG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBuZWVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG4gIGlmIChuZWVkKSB7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZWVkO1xufVxuXG5mdW5jdGlvbiBlbmRXcml0YWJsZShzdHJlYW0sIHN0YXRlLCBjYikge1xuICBzdGF0ZS5lbmRpbmcgPSB0cnVlO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwcm9jZXNzTmV4dFRpY2soY2IpO2Vsc2Ugc3RyZWFtLm9uY2UoJ2ZpbmlzaCcsIGNiKTtcbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG4vLyBJdCBzZWVtcyBhIGxpbmtlZCBsaXN0IGJ1dCBpdCBpcyBub3Rcbi8vIHRoZXJlIHdpbGwgYmUgb25seSAyIG9mIHRoZXNlIGZvciBlYWNoIHN0cmVhbVxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuXG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKGVycikge1xuICAgIHZhciBlbnRyeSA9IF90aGlzLmVudHJ5O1xuICAgIF90aGlzLmVudHJ5ID0gbnVsbDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgICBjYihlcnIpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgIH1cbiAgICBpZiAoc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlKSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IF90aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBfdGhpcztcbiAgICB9XG4gIH07XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBCdWZmZXJMaXN0O1xuXG5mdW5jdGlvbiBCdWZmZXJMaXN0KCkge1xuICB0aGlzLmhlYWQgPSBudWxsO1xuICB0aGlzLnRhaWwgPSBudWxsO1xuICB0aGlzLmxlbmd0aCA9IDA7XG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodikge1xuICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeTtlbHNlIHRoaXMuaGVhZCA9IGVudHJ5O1xuICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgKyt0aGlzLmxlbmd0aDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAodikge1xuICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IHRoaXMuaGVhZCB9O1xuICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgKyt0aGlzLmxlbmd0aDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhO1xuICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgLS10aGlzLmxlbmd0aDtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICB0aGlzLmxlbmd0aCA9IDA7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gKHMpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciBwID0gdGhpcy5oZWFkO1xuICB2YXIgcmV0ID0gJycgKyBwLmRhdGE7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gIH1yZXR1cm4gcmV0O1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gKG4pIHtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gYnVmZmVyU2hpbS5hbGxvYygwKTtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gIHZhciByZXQgPSBidWZmZXJTaGltLmFsbG9jVW5zYWZlKG4gPj4+IDApO1xuICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgdmFyIGkgPSAwO1xuICB3aGlsZSAocCkge1xuICAgIHAuZGF0YS5jb3B5KHJldCwgaSk7XG4gICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgIHAgPSBwLm5leHQ7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qc1wiKVxuIiwidmFyIFN0cmVhbSA9IChmdW5jdGlvbiAoKXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTsgLy8gaGFjayB0byBmaXggYSBjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3VlIHdoZW4gdXNlZCB3aXRoIGJyb3dzZXJpZnlcbiAgfSBjYXRjaChfKXt9XG59KCkpO1xuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBTdHJlYW0gfHwgZXhwb3J0cztcbmV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbmV4cG9ydHMuRHVwbGV4ID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbmV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbmV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5cbmlmICghcHJvY2Vzcy5icm93c2VyICYmIHByb2Nlc3MuZW52LlJFQURBQkxFX1NUUkVBTSA9PT0gJ2Rpc2FibGUnICYmIFN0cmVhbSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzXCIpXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzXCIpXG4iLCIvKlxuQ3J5cHRvSlMgdjMuMS4yXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcbihjKSAyMDA5LTIwMTMgYnkgSmVmZiBNb3R0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxuKi9cbi8qKiBAcHJlc2VydmVcbihjKSAyMDEyIGJ5IEPDqWRyaWMgTWVzbmlsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG5SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLy8gY29uc3RhbnRzIHRhYmxlXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSwgMHg4RjFCQkNEQywgMHhBOTUzRkQ0RV1cbnZhciBociA9IFsweDUwQTI4QkU2LCAweDVDNEREMTI0LCAweDZENzAzRUYzLCAweDdBNkQ3NkU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBieXRlc1RvV29yZHMgKGJ5dGVzKSB7XG4gIHZhciB3b3JkcyA9IFtdXG4gIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrLCBiICs9IDgpIHtcbiAgICB3b3Jkc1tiID4+PiA1XSB8PSBieXRlc1tpXSA8PCAoMjQgLSBiICUgMzIpXG4gIH1cbiAgcmV0dXJuIHdvcmRzXG59XG5cbmZ1bmN0aW9uIHdvcmRzVG9CeXRlcyAod29yZHMpIHtcbiAgdmFyIGJ5dGVzID0gW11cbiAgZm9yICh2YXIgYiA9IDA7IGIgPCB3b3Jkcy5sZW5ndGggKiAzMjsgYiArPSA4KSB7XG4gICAgYnl0ZXMucHVzaCgod29yZHNbYiA+Pj4gNV0gPj4+ICgyNCAtIGIgJSAzMikpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0Jsb2NrIChILCBNLCBvZmZzZXQpIHtcbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaVxuICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV1cblxuICAgIC8vIFN3YXBcbiAgICBNW29mZnNldF9pXSA9IChcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgfCAoTV9vZmZzZXRfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgMjQpIHwgKE1fb2Zmc2V0X2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gICAgKVxuICB9XG5cbiAgLy8gV29ya2luZyB2YXJpYWJsZXNcbiAgdmFyIGFsLCBibCwgY2wsIGRsLCBlbFxuICB2YXIgYXIsIGJyLCBjciwgZHIsIGVyXG5cbiAgYXIgPSBhbCA9IEhbMF1cbiAgYnIgPSBibCA9IEhbMV1cbiAgY3IgPSBjbCA9IEhbMl1cbiAgZHIgPSBkbCA9IEhbM11cbiAgZXIgPSBlbCA9IEhbNF1cblxuICAvLyBjb21wdXRhdGlvblxuICB2YXIgdFxuICBmb3IgKGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHQgPSAoYWwgKyBNW29mZnNldCArIHpsW2ldXSkgfCAwXG4gICAgaWYgKGkgPCAxNikge1xuICAgICAgdCArPSBmMShibCwgY2wsIGRsKSArIGhsWzBdXG4gICAgfSBlbHNlIGlmIChpIDwgMzIpIHtcbiAgICAgIHQgKz0gZjIoYmwsIGNsLCBkbCkgKyBobFsxXVxuICAgIH0gZWxzZSBpZiAoaSA8IDQ4KSB7XG4gICAgICB0ICs9IGYzKGJsLCBjbCwgZGwpICsgaGxbMl1cbiAgICB9IGVsc2UgaWYgKGkgPCA2NCkge1xuICAgICAgdCArPSBmNChibCwgY2wsIGRsKSArIGhsWzNdXG4gICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuICAgICAgdCArPSBmNShibCwgY2wsIGRsKSArIGhsWzRdXG4gICAgfVxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNsW2ldKVxuICAgIHQgPSAodCArIGVsKSB8IDBcbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdFxuXG4gICAgdCA9IChhciArIE1bb2Zmc2V0ICsgenJbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGY1KGJyLCBjciwgZHIpICsgaHJbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmNChiciwgY3IsIGRyKSArIGhyWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYnIsIGNyLCBkcikgKyBoclsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGYyKGJyLCBjciwgZHIpICsgaHJbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGYxKGJyLCBjciwgZHIpICsgaHJbNF1cbiAgICB9XG5cbiAgICB0ID0gdCB8IDBcbiAgICB0ID0gcm90bCh0LCBzcltpXSlcbiAgICB0ID0gKHQgKyBlcikgfCAwXG4gICAgYXIgPSBlclxuICAgIGVyID0gZHJcbiAgICBkciA9IHJvdGwoY3IsIDEwKVxuICAgIGNyID0gYnJcbiAgICBiciA9IHRcbiAgfVxuXG4gIC8vIGludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG4gIHQgPSAoSFsxXSArIGNsICsgZHIpIHwgMFxuICBIWzFdID0gKEhbMl0gKyBkbCArIGVyKSB8IDBcbiAgSFsyXSA9IChIWzNdICsgZWwgKyBhcikgfCAwXG4gIEhbM10gPSAoSFs0XSArIGFsICsgYnIpIHwgMFxuICBIWzRdID0gKEhbMF0gKyBibCArIGNyKSB8IDBcbiAgSFswXSA9IHRcbn1cblxuZnVuY3Rpb24gZjEgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoeSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGYyICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh5KSkgfCAoKH54KSAmICh6KSkpXG59XG5cbmZ1bmN0aW9uIGYzICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSB8ICh+KHkpKSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGY0ICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh6KSkgfCAoKHkpICYgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gZjUgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoKHkpIHwgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIHJpcGVtZDE2MCAobWVzc2FnZSkge1xuICB2YXIgSCA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2LCAweEMzRDJFMUYwXVxuXG4gIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gbmV3IEJ1ZmZlcihtZXNzYWdlLCAndXRmOCcpXG4gIH1cblxuICB2YXIgbSA9IGJ5dGVzVG9Xb3JkcyhtZXNzYWdlKVxuXG4gIHZhciBuQml0c0xlZnQgPSBtZXNzYWdlLmxlbmd0aCAqIDhcbiAgdmFyIG5CaXRzVG90YWwgPSBtZXNzYWdlLmxlbmd0aCAqIDhcblxuICAvLyBBZGQgcGFkZGluZ1xuICBtW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMilcbiAgbVsoKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gKFxuICAgICgoKG5CaXRzVG90YWwgPDwgOCkgfCAobkJpdHNUb3RhbCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAoKChuQml0c1RvdGFsIDw8IDI0KSB8IChuQml0c1RvdGFsID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICApXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSArPSAxNikge1xuICAgIHByb2Nlc3NCbG9jayhILCBtLCBpKVxuICB9XG5cbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIC8vIHNob3J0Y3V0XG4gICAgdmFyIEhfaSA9IEhbaV1cblxuICAgIC8vIFN3YXBcbiAgICBIW2ldID0gKCgoSF9pIDw8IDgpIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKEhfaSA8PCAyNCkgfCAoSF9pID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICB9XG5cbiAgdmFyIGRpZ2VzdGJ5dGVzID0gd29yZHNUb0J5dGVzKEgpXG4gIHJldHVybiBuZXcgQnVmZmVyKGRpZ2VzdGJ5dGVzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJpcGVtZDE2MFxuIiwiLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBuZXcgQnVmZmVyKGJsb2NrU2l6ZSlcbiAgdGhpcy5fZmluYWxTaXplID0gZmluYWxTaXplXG4gIHRoaXMuX2Jsb2NrU2l6ZSA9IGJsb2NrU2l6ZVxuICB0aGlzLl9sZW4gPSAwXG4gIHRoaXMuX3MgPSAwXG59XG5cbkhhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgbCA9IHRoaXMuX2xlbiArPSBkYXRhLmxlbmd0aFxuICB2YXIgcyA9IHRoaXMuX3MgfHwgMFxuICB2YXIgZiA9IDBcbiAgdmFyIGJ1ZmZlciA9IHRoaXMuX2Jsb2NrXG5cbiAgd2hpbGUgKHMgPCBsKSB7XG4gICAgdmFyIHQgPSBNYXRoLm1pbihkYXRhLmxlbmd0aCwgZiArIHRoaXMuX2Jsb2NrU2l6ZSAtIChzICUgdGhpcy5fYmxvY2tTaXplKSlcbiAgICB2YXIgY2ggPSAodCAtIGYpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoOyBpKyspIHtcbiAgICAgIGJ1ZmZlclsocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgKyBpXSA9IGRhdGFbaSArIGZdXG4gICAgfVxuXG4gICAgcyArPSBjaFxuICAgIGYgKz0gY2hcblxuICAgIGlmICgocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShidWZmZXIpXG4gICAgfVxuICB9XG4gIHRoaXMuX3MgPSBzXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICAvLyBTdXBwb3NlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgTSwgaW4gYml0cywgaXMgbFxuICB2YXIgbCA9IHRoaXMuX2xlbiAqIDhcblxuICAvLyBBcHBlbmQgdGhlIGJpdCAxIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2VcbiAgdGhpcy5fYmxvY2tbdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXSA9IDB4ODBcblxuICAvLyBhbmQgdGhlbiBrIHplcm8gYml0cywgd2hlcmUgayBpcyB0aGUgc21hbGxlc3Qgbm9uLW5lZ2F0aXZlIHNvbHV0aW9uIHRvIHRoZSBlcXVhdGlvbiAobCArIDEgKyBrKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemUgKyAxKVxuXG4gIGlmIChsICUgKHRoaXMuX2Jsb2NrU2l6ZSAqIDgpID49IHRoaXMuX2ZpbmFsU2l6ZSAqIDgpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgLy8gdG8gdGhpcyBhcHBlbmQgdGhlIGJsb2NrIHdoaWNoIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgbCB3cml0dGVuIGluIGJpbmFyeVxuICAvLyBUT0RPOiBoYW5kbGUgY2FzZSB3aGVyZSBsIGlzID4gTWF0aC5wb3coMiwgMjkpXG4gIHRoaXMuX2Jsb2NrLndyaXRlSW50MzJCRShsLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIHZhciBoYXNoID0gdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSB8fCB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMCwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNoYTEuanMgb2YgdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0hBLTAgYW5kIFNIQS0xIGlzIGp1c3QgYSBiaXR3aXNlIHJvdGF0ZSBsZWZ0XG4gKiBvcGVyYXRpb24gd2FzIGFkZGVkLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0xLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVmVyc2lvbiAyLjFhIENvcHlyaWdodCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDAyLlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlXG4gKiBTZWUgaHR0cDovL3BhamhvbWUub3JnLnVrL2NyeXB0L21kNSBmb3IgZGV0YWlscy5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDY0KVxuXG5mdW5jdGlvbiBTaGEyMjQgKCkge1xuICB0aGlzLmluaXQoKVxuXG4gIHRoaXMuX3cgPSBXIC8vIG5ldyBBcnJheSg2NClcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEyMjQsIFNoYTI1NilcblxuU2hhMjI0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHhjMTA1OWVkOFxuICB0aGlzLl9iID0gMHgzNjdjZDUwN1xuICB0aGlzLl9jID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lID0gMHhmZmMwMGIzMVxuICB0aGlzLl9mID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nID0gMHg2NGY5OGZhN1xuICB0aGlzLl9oID0gMHhiZWZhNGZhNFxuXG4gIHJldHVybiB0aGlzXG59XG5cblNoYTIyNC5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigzMilcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5faCwgMjgpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyNTZcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTSEE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDQ4KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTM4NFxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXVxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTUxMiAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGE1MTIsIEhhc2gpXG5cblNoYTUxMi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweDZhMDllNjY3XG4gIHRoaXMuX2JoID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jaCA9IDB4M2M2ZWYzNzJcbiAgdGhpcy5fZGggPSAweGE1NGZmNTNhXG4gIHRoaXMuX2VoID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9maCA9IDB4OWIwNTY4OGNcbiAgdGhpcy5fZ2ggPSAweDFmODNkOWFiXG4gIHRoaXMuX2hoID0gMHg1YmUwY2QxOVxuXG4gIHRoaXMuX2FsID0gMHhmM2JjYzkwOFxuICB0aGlzLl9ibCA9IDB4ODRjYWE3M2JcbiAgdGhpcy5fY2wgPSAweGZlOTRmODJiXG4gIHRoaXMuX2RsID0gMHg1ZjFkMzZmMVxuICB0aGlzLl9lbCA9IDB4YWRlNjgyZDFcbiAgdGhpcy5fZmwgPSAweDJiM2U2YzFmXG4gIHRoaXMuX2dsID0gMHhmYjQxYmQ2YlxuICB0aGlzLl9obCA9IDB4MTM3ZTIxNzlcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBDaCAoeCwgeSwgeikge1xuICByZXR1cm4geiBeICh4ICYgKHkgXiB6KSlcbn1cblxuZnVuY3Rpb24gbWFqICh4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIHwgKHogJiAoeCB8IHkpKVxufVxuXG5mdW5jdGlvbiBzaWdtYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMjggfCB4bCA8PCA0KSBeICh4bCA+Pj4gMiB8IHggPDwgMzApIF4gKHhsID4+PiA3IHwgeCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE0IHwgeGwgPDwgMTgpIF4gKHggPj4+IDE4IHwgeGwgPDwgMTQpIF4gKHhsID4+PiA5IHwgeCA8PCAyMylcbn1cblxuZnVuY3Rpb24gR2FtbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3KVxufVxuXG5mdW5jdGlvbiBHYW1tYTBsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3IHwgeGwgPDwgMjUpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMWwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2IHwgeGwgPDwgMjYpXG59XG5cbmZ1bmN0aW9uIGdldENhcnJ5IChhLCBiKSB7XG4gIHJldHVybiAoYSA+Pj4gMCkgPCAoYiA+Pj4gMCkgPyAxIDogMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYWggPSB0aGlzLl9haCB8IDBcbiAgdmFyIGJoID0gdGhpcy5fYmggfCAwXG4gIHZhciBjaCA9IHRoaXMuX2NoIHwgMFxuICB2YXIgZGggPSB0aGlzLl9kaCB8IDBcbiAgdmFyIGVoID0gdGhpcy5fZWggfCAwXG4gIHZhciBmaCA9IHRoaXMuX2ZoIHwgMFxuICB2YXIgZ2ggPSB0aGlzLl9naCB8IDBcbiAgdmFyIGhoID0gdGhpcy5faGggfCAwXG5cbiAgdmFyIGFsID0gdGhpcy5fYWwgfCAwXG4gIHZhciBibCA9IHRoaXMuX2JsIHwgMFxuICB2YXIgY2wgPSB0aGlzLl9jbCB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZGwgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2VsIHwgMFxuICB2YXIgZmwgPSB0aGlzLl9mbCB8IDBcbiAgdmFyIGdsID0gdGhpcy5fZ2wgfCAwXG4gIHZhciBobCA9IHRoaXMuX2hsIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkgKz0gMikge1xuICAgIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICAgIFdbaSArIDFdID0gTS5yZWFkSW50MzJCRShpICogNCArIDQpXG4gIH1cbiAgZm9yICg7IGkgPCAxNjA7IGkgKz0gMikge1xuICAgIHZhciB4aCA9IFdbaSAtIDE1ICogMl1cbiAgICB2YXIgeGwgPSBXW2kgLSAxNSAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTAgPSBHYW1tYTAoeGgsIHhsKVxuICAgIHZhciBnYW1tYTBsID0gR2FtbWEwbCh4bCwgeGgpXG5cbiAgICB4aCA9IFdbaSAtIDIgKiAyXVxuICAgIHhsID0gV1tpIC0gMiAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTEgPSBHYW1tYTEoeGgsIHhsKVxuICAgIHZhciBnYW1tYTFsID0gR2FtbWExbCh4bCwgeGgpXG5cbiAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cbiAgICB2YXIgV2k3aCA9IFdbaSAtIDcgKiAyXVxuICAgIHZhciBXaTdsID0gV1tpIC0gNyAqIDIgKyAxXVxuXG4gICAgdmFyIFdpMTZoID0gV1tpIC0gMTYgKiAyXVxuICAgIHZhciBXaTE2bCA9IFdbaSAtIDE2ICogMiArIDFdXG5cbiAgICB2YXIgV2lsID0gKGdhbW1hMGwgKyBXaTdsKSB8IDBcbiAgICB2YXIgV2loID0gKGdhbW1hMCArIFdpN2ggKyBnZXRDYXJyeShXaWwsIGdhbW1hMGwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgZ2FtbWExbCkgfCAwXG4gICAgV2loID0gKFdpaCArIGdhbW1hMSArIGdldENhcnJ5KFdpbCwgZ2FtbWExbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBXaTE2bCkgfCAwXG4gICAgV2loID0gKFdpaCArIFdpMTZoICsgZ2V0Q2FycnkoV2lsLCBXaTE2bCkpIHwgMFxuXG4gICAgV1tpXSA9IFdpaFxuICAgIFdbaSArIDFdID0gV2lsXG4gIH1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgV2loID0gV1tqXVxuICAgIFdpbCA9IFdbaiArIDFdXG5cbiAgICB2YXIgbWFqaCA9IG1haihhaCwgYmgsIGNoKVxuICAgIHZhciBtYWpsID0gbWFqKGFsLCBibCwgY2wpXG5cbiAgICB2YXIgc2lnbWEwaCA9IHNpZ21hMChhaCwgYWwpXG4gICAgdmFyIHNpZ21hMGwgPSBzaWdtYTAoYWwsIGFoKVxuICAgIHZhciBzaWdtYTFoID0gc2lnbWExKGVoLCBlbClcbiAgICB2YXIgc2lnbWExbCA9IHNpZ21hMShlbCwgZWgpXG5cbiAgICAvLyB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbal0gKyBXW2pdXG4gICAgdmFyIEtpaCA9IEtbal1cbiAgICB2YXIgS2lsID0gS1tqICsgMV1cblxuICAgIHZhciBjaGggPSBDaChlaCwgZmgsIGdoKVxuICAgIHZhciBjaGwgPSBDaChlbCwgZmwsIGdsKVxuXG4gICAgdmFyIHQxbCA9IChobCArIHNpZ21hMWwpIHwgMFxuICAgIHZhciB0MWggPSAoaGggKyBzaWdtYTFoICsgZ2V0Q2FycnkodDFsLCBobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBjaGwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBjaGggKyBnZXRDYXJyeSh0MWwsIGNobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBLaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBLaWggKyBnZXRDYXJyeSh0MWwsIEtpbCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBXaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBXaWggKyBnZXRDYXJyeSh0MWwsIFdpbCkpIHwgMFxuXG4gICAgLy8gdDIgPSBzaWdtYTAgKyBtYWpcbiAgICB2YXIgdDJsID0gKHNpZ21hMGwgKyBtYWpsKSB8IDBcbiAgICB2YXIgdDJoID0gKHNpZ21hMGggKyBtYWpoICsgZ2V0Q2FycnkodDJsLCBzaWdtYTBsKSkgfCAwXG5cbiAgICBoaCA9IGdoXG4gICAgaGwgPSBnbFxuICAgIGdoID0gZmhcbiAgICBnbCA9IGZsXG4gICAgZmggPSBlaFxuICAgIGZsID0gZWxcbiAgICBlbCA9IChkbCArIHQxbCkgfCAwXG4gICAgZWggPSAoZGggKyB0MWggKyBnZXRDYXJyeShlbCwgZGwpKSB8IDBcbiAgICBkaCA9IGNoXG4gICAgZGwgPSBjbFxuICAgIGNoID0gYmhcbiAgICBjbCA9IGJsXG4gICAgYmggPSBhaFxuICAgIGJsID0gYWxcbiAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMFxuICAgIGFoID0gKHQxaCArIHQyaCArIGdldENhcnJ5KGFsLCB0MWwpKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2FsID0gKHRoaXMuX2FsICsgYWwpIHwgMFxuICB0aGlzLl9ibCA9ICh0aGlzLl9ibCArIGJsKSB8IDBcbiAgdGhpcy5fY2wgPSAodGhpcy5fY2wgKyBjbCkgfCAwXG4gIHRoaXMuX2RsID0gKHRoaXMuX2RsICsgZGwpIHwgMFxuICB0aGlzLl9lbCA9ICh0aGlzLl9lbCArIGVsKSB8IDBcbiAgdGhpcy5fZmwgPSAodGhpcy5fZmwgKyBmbCkgfCAwXG4gIHRoaXMuX2dsID0gKHRoaXMuX2dsICsgZ2wpIHwgMFxuICB0aGlzLl9obCA9ICh0aGlzLl9obCArIGhsKSB8IDBcblxuICB0aGlzLl9haCA9ICh0aGlzLl9haCArIGFoICsgZ2V0Q2FycnkodGhpcy5fYWwsIGFsKSkgfCAwXG4gIHRoaXMuX2JoID0gKHRoaXMuX2JoICsgYmggKyBnZXRDYXJyeSh0aGlzLl9ibCwgYmwpKSB8IDBcbiAgdGhpcy5fY2ggPSAodGhpcy5fY2ggKyBjaCArIGdldENhcnJ5KHRoaXMuX2NsLCBjbCkpIHwgMFxuICB0aGlzLl9kaCA9ICh0aGlzLl9kaCArIGRoICsgZ2V0Q2FycnkodGhpcy5fZGwsIGRsKSkgfCAwXG4gIHRoaXMuX2VoID0gKHRoaXMuX2VoICsgZWggKyBnZXRDYXJyeSh0aGlzLl9lbCwgZWwpKSB8IDBcbiAgdGhpcy5fZmggPSAodGhpcy5fZmggKyBmaCArIGdldENhcnJ5KHRoaXMuX2ZsLCBmbCkpIHwgMFxuICB0aGlzLl9naCA9ICh0aGlzLl9naCArIGdoICsgZ2V0Q2FycnkodGhpcy5fZ2wsIGdsKSkgfCAwXG4gIHRoaXMuX2hoID0gKHRoaXMuX2hoICsgaGggKyBnZXRDYXJyeSh0aGlzLl9obCwgaGwpKSB8IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDY0KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2doLCB0aGlzLl9nbCwgNDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9oaCwgdGhpcy5faGwsIDU2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhNTEyXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzJyk7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuNC54XG5TdHJlYW0uU3RyZWFtID0gU3RyZWFtO1xuXG5cblxuLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudFxuLy8gcGFydCBvZiB0aGlzIGNsYXNzKSBpcyBvdmVycmlkZGVuIGluIHRoZSBSZWFkYWJsZSBjbGFzcy5cblxuZnVuY3Rpb24gU3RyZWFtKCkge1xuICBFRS5jYWxsKHRoaXMpO1xufVxuXG5TdHJlYW0ucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbihkZXN0LCBvcHRpb25zKSB7XG4gIHZhciBzb3VyY2UgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGlmIChkZXN0LndyaXRhYmxlKSB7XG4gICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkge1xuICAgICAgICBzb3VyY2UucGF1c2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpO1xuXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICAvLyBJZiB0aGUgJ2VuZCcgb3B0aW9uIGlzIG5vdCBzdXBwbGllZCwgZGVzdC5lbmQoKSB3aWxsIGJlIGNhbGxlZCB3aGVuXG4gIC8vIHNvdXJjZSBnZXRzIHRoZSAnZW5kJyBvciAnY2xvc2UnIGV2ZW50cy4gIE9ubHkgZGVzdC5lbmQoKSBvbmNlLlxuICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHtcbiAgICBzb3VyY2Uub24oJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2Uub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH1cblxuICB2YXIgZGlkT25FbmQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7XG4gIH1cblxuICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgc3RyZWFtIGVycm9yIGluIHBpcGUuXG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIHJlbW92ZSBhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG4gIH1cblxuICBzb3VyY2Uub24oJ2VuZCcsIGNsZWFudXApO1xuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpO1xuXG4gIC8vIEFsbG93IGZvciB1bml4LWxpa2UgdXNhZ2U6IEEucGlwZShCKS5waXBlKEMpXG4gIHJldHVybiBkZXN0O1xufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgaXNCdWZmZXJFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nXG4gIHx8IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICBjYXNlICdoZXgnOiBjYXNlICd1dGY4JzogY2FzZSAndXRmLTgnOiBjYXNlICdhc2NpaSc6IGNhc2UgJ2JpbmFyeSc6IGNhc2UgJ2Jhc2U2NCc6IGNhc2UgJ3VjczInOiBjYXNlICd1Y3MtMic6IGNhc2UgJ3V0ZjE2bGUnOiBjYXNlICd1dGYtMTZsZSc6IGNhc2UgJ3Jhdyc6IHJldHVybiB0cnVlO1xuICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlO1xuICAgICAgIH1cbiAgICAgfVxuXG5cbmZ1bmN0aW9uIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIGlmIChlbmNvZGluZyAmJiAhaXNCdWZmZXJFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIH1cbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLiBDRVNVLTggaXMgaGFuZGxlZCBhcyBwYXJ0IG9mIHRoZSBVVEYtOCBlbmNvZGluZy5cbi8vXG4vLyBAVE9ETyBIYW5kbGluZyBhbGwgZW5jb2RpbmdzIGluc2lkZSBhIHNpbmdsZSBvYmplY3QgbWFrZXMgaXQgdmVyeSBkaWZmaWN1bHRcbi8vIHRvIHJlYXNvbiBhYm91dCB0aGlzIGNvZGUsIHNvIGl0IHNob3VsZCBiZSBzcGxpdCB1cCBpbiB0aGUgZnV0dXJlLlxuLy8gQFRPRE8gVGhlcmUgc2hvdWxkIGJlIGEgdXRmOC1zdHJpY3QgZW5jb2RpbmcgdGhhdCByZWplY3RzIGludmFsaWQgVVRGLTggY29kZVxuLy8gcG9pbnRzIGFzIHVzZWQgYnkgQ0VTVS04LlxudmFyIFN0cmluZ0RlY29kZXIgPSBleHBvcnRzLlN0cmluZ0RlY29kZXIgPSBmdW5jdGlvbihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9dLywgJycpO1xuICBhc3NlcnRFbmNvZGluZyhlbmNvZGluZyk7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgLy8gQ0VTVS04IHJlcHJlc2VudHMgZWFjaCBvZiBTdXJyb2dhdGUgUGFpciBieSAzLWJ5dGVzXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICAvLyBVVEYtMTYgcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDItYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDI7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAvLyBCYXNlLTY0IHN0b3JlcyAzIGJ5dGVzIGluIDQgY2hhcnMsIGFuZCBwYWRzIHRoZSByZW1haW5kZXIuXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAzO1xuICAgICAgdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IGJhc2U2NERldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBwYXNzVGhyb3VnaFdyaXRlO1xuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRW5vdWdoIHNwYWNlIHRvIHN0b3JlIGFsbCBieXRlcyBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIuIFVURi04IG5lZWRzIDRcbiAgLy8gYnl0ZXMsIGJ1dCBDRVNVLTggbWF5IHJlcXVpcmUgdXAgdG8gNiAoMyBieXRlcyBwZXIgc3Vycm9nYXRlKS5cbiAgdGhpcy5jaGFyQnVmZmVyID0gbmV3IEJ1ZmZlcig2KTtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJSZWNlaXZlZCA9IDA7XG4gIC8vIE51bWJlciBvZiBieXRlcyBleHBlY3RlZCBmb3IgdGhlIGN1cnJlbnQgaW5jb21wbGV0ZSBtdWx0aS1ieXRlIGNoYXJhY3Rlci5cbiAgdGhpcy5jaGFyTGVuZ3RoID0gMDtcbn07XG5cblxuLy8gd3JpdGUgZGVjb2RlcyB0aGUgZ2l2ZW4gYnVmZmVyIGFuZCByZXR1cm5zIGl0IGFzIEpTIHN0cmluZyB0aGF0IGlzXG4vLyBndWFyYW50ZWVkIHRvIG5vdCBjb250YWluIGFueSBwYXJ0aWFsIG11bHRpLWJ5dGUgY2hhcmFjdGVycy4gQW55IHBhcnRpYWxcbi8vIGNoYXJhY3RlciBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgaXMgYnVmZmVyZWQgdXAsIGFuZCB3aWxsIGJlXG4vLyByZXR1cm5lZCB3aGVuIGNhbGxpbmcgd3JpdGUgYWdhaW4gd2l0aCB0aGUgcmVtYWluaW5nIGJ5dGVzLlxuLy9cbi8vIE5vdGU6IENvbnZlcnRpbmcgYSBCdWZmZXIgY29udGFpbmluZyBhbiBvcnBoYW4gc3Vycm9nYXRlIHRvIGEgU3RyaW5nXG4vLyBjdXJyZW50bHkgd29ya3MsIGJ1dCBjb252ZXJ0aW5nIGEgU3RyaW5nIHRvIGEgQnVmZmVyICh2aWEgYG5ldyBCdWZmZXJgLCBvclxuLy8gQnVmZmVyI3dyaXRlKSB3aWxsIHJlcGxhY2UgaW5jb21wbGV0ZSBzdXJyb2dhdGVzIHdpdGggdGhlIHVuaWNvZGVcbi8vIHJlcGxhY2VtZW50IGNoYXJhY3Rlci4gU2VlIGh0dHBzOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvMTIxMTczMDA5LyAuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICB2YXIgY2hhclN0ciA9ICcnO1xuICAvLyBpZiBvdXIgbGFzdCB3cml0ZSBlbmRlZCB3aXRoIGFuIGluY29tcGxldGUgbXVsdGlieXRlIGNoYXJhY3RlclxuICB3aGlsZSAodGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgLy8gZGV0ZXJtaW5lIGhvdyBtYW55IHJlbWFpbmluZyBieXRlcyB0aGlzIGJ1ZmZlciBoYXMgdG8gb2ZmZXIgZm9yIHRoaXMgY2hhclxuICAgIHZhciBhdmFpbGFibGUgPSAoYnVmZmVyLmxlbmd0aCA+PSB0aGlzLmNoYXJMZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCkgP1xuICAgICAgICB0aGlzLmNoYXJMZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCA6XG4gICAgICAgIGJ1ZmZlci5sZW5ndGg7XG5cbiAgICAvLyBhZGQgdGhlIG5ldyBieXRlcyB0byB0aGUgY2hhciBidWZmZXJcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIHRoaXMuY2hhclJlY2VpdmVkLCAwLCBhdmFpbGFibGUpO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IGF2YWlsYWJsZTtcblxuICAgIGlmICh0aGlzLmNoYXJSZWNlaXZlZCA8IHRoaXMuY2hhckxlbmd0aCkge1xuICAgICAgLy8gc3RpbGwgbm90IGVub3VnaCBjaGFycyBpbiB0aGlzIGJ1ZmZlcj8gd2FpdCBmb3IgbW9yZSAuLi5cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYnl0ZXMgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50IGNoYXJhY3RlciBmcm9tIHRoZSBidWZmZXJcbiAgICBidWZmZXIgPSBidWZmZXIuc2xpY2UoYXZhaWxhYmxlLCBidWZmZXIubGVuZ3RoKTtcblxuICAgIC8vIGdldCB0aGUgY2hhcmFjdGVyIHRoYXQgd2FzIHNwbGl0XG4gICAgY2hhclN0ciA9IHRoaXMuY2hhckJ1ZmZlci5zbGljZSgwLCB0aGlzLmNoYXJMZW5ndGgpLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xuXG4gICAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICAgIHZhciBjaGFyQ29kZSA9IGNoYXJTdHIuY2hhckNvZGVBdChjaGFyU3RyLmxlbmd0aCAtIDEpO1xuICAgIGlmIChjaGFyQ29kZSA+PSAweEQ4MDAgJiYgY2hhckNvZGUgPD0gMHhEQkZGKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggKz0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgICAgY2hhclN0ciA9ICcnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHRoaXMuY2hhclJlY2VpdmVkID0gdGhpcy5jaGFyTGVuZ3RoID0gMDtcblxuICAgIC8vIGlmIHRoZXJlIGFyZSBubyBtb3JlIGJ5dGVzIGluIHRoaXMgYnVmZmVyLCBqdXN0IGVtaXQgb3VyIGNoYXJcbiAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNoYXJTdHI7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIGFuZCBzZXQgY2hhckxlbmd0aCAvIGNoYXJSZWNlaXZlZFxuICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcik7XG5cbiAgdmFyIGVuZCA9IGJ1ZmZlci5sZW5ndGg7XG4gIGlmICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBidWZmZXIgdGhlIGluY29tcGxldGUgY2hhcmFjdGVyIGJ5dGVzIHdlIGdvdFxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgMCwgYnVmZmVyLmxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkLCBlbmQpO1xuICAgIGVuZCAtPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgfVxuXG4gIGNoYXJTdHIgKz0gYnVmZmVyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIGVuZCk7XG5cbiAgdmFyIGVuZCA9IGNoYXJTdHIubGVuZ3RoIC0gMTtcbiAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGVuZCk7XG4gIC8vIENFU1UtODogbGVhZCBzdXJyb2dhdGUgKEQ4MDAtREJGRikgaXMgYWxzbyB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXJcbiAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICB2YXIgc2l6ZSA9IHRoaXMuc3Vycm9nYXRlU2l6ZTtcbiAgICB0aGlzLmNoYXJMZW5ndGggKz0gc2l6ZTtcbiAgICB0aGlzLmNoYXJSZWNlaXZlZCArPSBzaXplO1xuICAgIHRoaXMuY2hhckJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgc2l6ZSwgMCwgc2l6ZSk7XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCAwLCBzaXplKTtcbiAgICByZXR1cm4gY2hhclN0ci5zdWJzdHJpbmcoMCwgZW5kKTtcbiAgfVxuXG4gIC8vIG9yIGp1c3QgZW1pdCB0aGUgY2hhclN0clxuICByZXR1cm4gY2hhclN0cjtcbn07XG5cbi8vIGRldGVjdEluY29tcGxldGVDaGFyIGRldGVybWluZXMgaWYgdGhlcmUgaXMgYW4gaW5jb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXIgYXRcbi8vIHRoZSBlbmQgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gSWYgc28sIGl0IHNldHMgdGhpcy5jaGFyTGVuZ3RoIHRvIHRoZSBieXRlXG4vLyBsZW5ndGggdGhhdCBjaGFyYWN0ZXIsIGFuZCBzZXRzIHRoaXMuY2hhclJlY2VpdmVkIHRvIHRoZSBudW1iZXIgb2YgYnl0ZXNcbi8vIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBjaGFyYWN0ZXIuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgd2UgaGF2ZSB0byBjaGVjayBhdCB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyXG4gIHZhciBpID0gKGJ1ZmZlci5sZW5ndGggPj0gMykgPyAzIDogYnVmZmVyLmxlbmd0aDtcblxuICAvLyBGaWd1cmUgb3V0IGlmIG9uZSBvZiB0aGUgbGFzdCBpIGJ5dGVzIG9mIG91ciBidWZmZXIgYW5ub3VuY2VzIGFuXG4gIC8vIGluY29tcGxldGUgY2hhci5cbiAgZm9yICg7IGkgPiAwOyBpLS0pIHtcbiAgICB2YXIgYyA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gaV07XG5cbiAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtOCNEZXNjcmlwdGlvblxuXG4gICAgLy8gMTEwWFhYWFhcbiAgICBpZiAoaSA9PSAxICYmIGMgPj4gNSA9PSAweDA2KSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gMTExMFhYWFhcbiAgICBpZiAoaSA8PSAyICYmIGMgPj4gNCA9PSAweDBFKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSAzO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gMTExMTBYWFhcbiAgICBpZiAoaSA8PSAzICYmIGMgPj4gMyA9PSAweDFFKSB7XG4gICAgICB0aGlzLmNoYXJMZW5ndGggPSA0O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gaTtcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gJyc7XG4gIGlmIChidWZmZXIgJiYgYnVmZmVyLmxlbmd0aClcbiAgICByZXMgPSB0aGlzLndyaXRlKGJ1ZmZlcik7XG5cbiAgaWYgKHRoaXMuY2hhclJlY2VpdmVkKSB7XG4gICAgdmFyIGNyID0gdGhpcy5jaGFyUmVjZWl2ZWQ7XG4gICAgdmFyIGJ1ZiA9IHRoaXMuY2hhckJ1ZmZlcjtcbiAgICB2YXIgZW5jID0gdGhpcy5lbmNvZGluZztcbiAgICByZXMgKz0gYnVmLnNsaWNlKDAsIGNyKS50b1N0cmluZyhlbmMpO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIHBhc3NUaHJvdWdoV3JpdGUoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHV0ZjE2RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDI7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMiA6IDA7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NERldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcikge1xuICB0aGlzLmNoYXJSZWNlaXZlZCA9IGJ1ZmZlci5sZW5ndGggJSAzO1xuICB0aGlzLmNoYXJMZW5ndGggPSB0aGlzLmNoYXJSZWNlaXZlZCA/IDMgOiAwO1xufVxuIiwiXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlO1xuXG4vKipcbiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKiBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudGhyb3dEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50cmFjZURlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIGZ1bmN0aW9uIHRvIGRlcHJlY2F0ZVxuICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWRcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBuZXcgXCJkZXByZWNhdGVkXCIgdmVyc2lvbiBvZiBgZm5gXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZSAoZm4sIG1zZykge1xuICBpZiAoY29uZmlnKCdub0RlcHJlY2F0aW9uJykpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnKCd0cmFjZURlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgY29uc29sZS50cmFjZShtc2cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBgbG9jYWxTdG9yYWdlYCBmb3IgYm9vbGVhbiB2YWx1ZXMgZm9yIHRoZSBnaXZlbiBgbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm5zIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29uZmlnIChuYW1lKSB7XG4gIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzXG4gIHRyeSB7XG4gICAgaWYgKCFnbG9iYWwubG9jYWxTdG9yYWdlKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07XG4gIGlmIChudWxsID09IHZhbCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xufVxuIiwidmFyIGluZGV4T2YgPSByZXF1aXJlKCdpbmRleG9mJyk7XG5cbnZhciBPYmplY3Rfa2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICBpZiAoT2JqZWN0LmtleXMpIHJldHVybiBPYmplY3Qua2V5cyhvYmopXG4gICAgZWxzZSB7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIG9iaikgcmVzLnB1c2goa2V5KVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn07XG5cbnZhciBmb3JFYWNoID0gZnVuY3Rpb24gKHhzLCBmbikge1xuICAgIGlmICh4cy5mb3JFYWNoKSByZXR1cm4geHMuZm9yRWFjaChmbilcbiAgICBlbHNlIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm4oeHNbaV0sIGksIHhzKTtcbiAgICB9XG59O1xuXG52YXIgZGVmaW5lUHJvcCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdfJywge30pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgbmFtZSwge1xuICAgICAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG59KCkpO1xuXG52YXIgZ2xvYmFscyA9IFsnQXJyYXknLCAnQm9vbGVhbicsICdEYXRlJywgJ0Vycm9yJywgJ0V2YWxFcnJvcicsICdGdW5jdGlvbicsXG4nSW5maW5pdHknLCAnSlNPTicsICdNYXRoJywgJ05hTicsICdOdW1iZXInLCAnT2JqZWN0JywgJ1JhbmdlRXJyb3InLFxuJ1JlZmVyZW5jZUVycm9yJywgJ1JlZ0V4cCcsICdTdHJpbmcnLCAnU3ludGF4RXJyb3InLCAnVHlwZUVycm9yJywgJ1VSSUVycm9yJyxcbidkZWNvZGVVUkknLCAnZGVjb2RlVVJJQ29tcG9uZW50JywgJ2VuY29kZVVSSScsICdlbmNvZGVVUklDb21wb25lbnQnLCAnZXNjYXBlJyxcbidldmFsJywgJ2lzRmluaXRlJywgJ2lzTmFOJywgJ3BhcnNlRmxvYXQnLCAncGFyc2VJbnQnLCAndW5kZWZpbmVkJywgJ3VuZXNjYXBlJ107XG5cbmZ1bmN0aW9uIENvbnRleHQoKSB7fVxuQ29udGV4dC5wcm90b3R5cGUgPSB7fTtcblxudmFyIFNjcmlwdCA9IGV4cG9ydHMuU2NyaXB0ID0gZnVuY3Rpb24gTm9kZVNjcmlwdCAoY29kZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTY3JpcHQpKSByZXR1cm4gbmV3IFNjcmlwdChjb2RlKTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5JbkNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGlmICghKGNvbnRleHQgaW5zdGFuY2VvZiBDb250ZXh0KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwibmVlZHMgYSAnY29udGV4dCcgYXJndW1lbnQuXCIpO1xuICAgIH1cbiAgICBcbiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWYgKCFpZnJhbWUuc3R5bGUpIGlmcmFtZS5zdHlsZSA9IHt9O1xuICAgIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIFxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgICBcbiAgICB2YXIgd2luID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c7XG4gICAgdmFyIHdFdmFsID0gd2luLmV2YWwsIHdFeGVjU2NyaXB0ID0gd2luLmV4ZWNTY3JpcHQ7XG5cbiAgICBpZiAoIXdFdmFsICYmIHdFeGVjU2NyaXB0KSB7XG4gICAgICAgIC8vIHdpbi5ldmFsKCkgbWFnaWNhbGx5IGFwcGVhcnMgd2hlbiB0aGlzIGlzIGNhbGxlZCBpbiBJRTpcbiAgICAgICAgd0V4ZWNTY3JpcHQuY2FsbCh3aW4sICdudWxsJyk7XG4gICAgICAgIHdFdmFsID0gd2luLmV2YWw7XG4gICAgfVxuICAgIFxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY29udGV4dCksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgfSk7XG4gICAgZm9yRWFjaChnbG9iYWxzLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChjb250ZXh0W2tleV0pIHtcbiAgICAgICAgICAgIHdpbltrZXldID0gY29udGV4dFtrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgdmFyIHdpbktleXMgPSBPYmplY3Rfa2V5cyh3aW4pO1xuXG4gICAgdmFyIHJlcyA9IHdFdmFsLmNhbGwod2luLCB0aGlzLmNvZGUpO1xuICAgIFxuICAgIGZvckVhY2goT2JqZWN0X2tleXMod2luKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAvLyBBdm9pZCBjb3B5aW5nIGNpcmN1bGFyIG9iamVjdHMgbGlrZSBgdG9wYCBhbmQgYHdpbmRvd2AgYnkgb25seVxuICAgICAgICAvLyB1cGRhdGluZyBleGlzdGluZyBjb250ZXh0IHByb3BlcnRpZXMgb3IgbmV3IHByb3BlcnRpZXMgaW4gdGhlIGB3aW5gXG4gICAgICAgIC8vIHRoYXQgd2FzIG9ubHkgaW50cm9kdWNlZCBhZnRlciB0aGUgZXZhbC5cbiAgICAgICAgaWYgKGtleSBpbiBjb250ZXh0IHx8IGluZGV4T2Yod2luS2V5cywga2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRba2V5XSA9IHdpbltrZXldO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGNvbnRleHQpKSB7XG4gICAgICAgICAgICBkZWZpbmVQcm9wKGNvbnRleHQsIGtleSwgd2luW2tleV0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHJldHVybiByZXM7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluVGhpc0NvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGV2YWwodGhpcy5jb2RlKTsgLy8gbWF5YmUuLi5cbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5OZXdDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgY3R4ID0gU2NyaXB0LmNyZWF0ZUNvbnRleHQoY29udGV4dCk7XG4gICAgdmFyIHJlcyA9IHRoaXMucnVuSW5Db250ZXh0KGN0eCk7XG5cbiAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGN0eCksIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgY29udGV4dFtrZXldID0gY3R4W2tleV07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzO1xufTtcblxuZm9yRWFjaChPYmplY3Rfa2V5cyhTY3JpcHQucHJvdG90eXBlKSwgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBleHBvcnRzW25hbWVdID0gU2NyaXB0W25hbWVdID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgICAgdmFyIHMgPSBTY3JpcHQoY29kZSk7XG4gICAgICAgIHJldHVybiBzW25hbWVdLmFwcGx5KHMsIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgfTtcbn0pO1xuXG5leHBvcnRzLmNyZWF0ZVNjcmlwdCA9IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgcmV0dXJuIGV4cG9ydHMuU2NyaXB0KGNvZGUpO1xufTtcblxuZXhwb3J0cy5jcmVhdGVDb250ZXh0ID0gU2NyaXB0LmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjb3B5ID0gbmV3IENvbnRleHQoKTtcbiAgICBpZih0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgY29weVtrZXldID0gY29udGV4dFtrZXldO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBTZXNzaW9uIGZyb20gJy4vc2Vzc2lvbic7XG5pbXBvcnQgUG9vbCBmcm9tICcuL2ludGVybmFsL3Bvb2wnO1xuaW1wb3J0IHtjb25uZWN0fSBmcm9tICcuL2ludGVybmFsL2Nvbm5lY3Rvcic7XG5pbXBvcnQgU3RyZWFtT2JzZXJ2ZXIgZnJvbSAnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInO1xuaW1wb3J0IHtuZXdFcnJvciwgU0VSVklDRV9VTkFWQUlMQUJMRX0gZnJvbSAnLi9lcnJvcic7XG5pbXBvcnQge0RpcmVjdENvbm5lY3Rpb25Qcm92aWRlcn0gZnJvbSAnLi9pbnRlcm5hbC9jb25uZWN0aW9uLXByb3ZpZGVycyc7XG5cbmNvbnN0IFJFQUQgPSAnUkVBRCcsIFdSSVRFID0gJ1dSSVRFJztcbi8qKlxuICogQSBkcml2ZXIgbWFpbnRhaW5zIG9uZSBvciBtb3JlIHtAbGluayBTZXNzaW9uIHNlc3Npb25zfSB3aXRoIGEgcmVtb3RlXG4gKiBOZW80aiBpbnN0YW5jZS4gVGhyb3VnaCB0aGUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHlvdSBjYW4gc2VuZCBzdGF0ZW1lbnRzXG4gKiBhbmQgcmV0cmlldmUgcmVzdWx0cyBmcm9tIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBEcml2ZXJzIGFyZSByZWFzb25hYmx5IGV4cGVuc2l2ZSB0byBjcmVhdGUgLSB5b3Ugc2hvdWxkIHN0cml2ZSB0byBrZWVwIG9uZVxuICogZHJpdmVyIGluc3RhbmNlIGFyb3VuZCBwZXIgTmVvNGogSW5zdGFuY2UgeW91IGNvbm5lY3QgdG8uXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuY2xhc3MgRHJpdmVyIHtcbiAgLyoqXG4gICAqIFlvdSBzaG91bGQgbm90IGJlIGNhbGxpbmcgdGhpcyBkaXJlY3RseSwgaW5zdGVhZCB1c2Uge0BsaW5rIGRyaXZlcn0uXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyQWdlbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih1cmwsIHVzZXJBZ2VudCwgdG9rZW4gPSB7fSwgY29uZmlnID0ge30pIHtcbiAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgdGhpcy5fdXNlckFnZW50ID0gdXNlckFnZW50O1xuICAgIHRoaXMuX29wZW5TZXNzaW9ucyA9IHt9O1xuICAgIHRoaXMuX3Nlc3Npb25JZEdlbmVyYXRvciA9IDA7XG4gICAgdGhpcy5fdG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5fcG9vbCA9IG5ldyBQb29sKFxuICAgICAgdGhpcy5fY3JlYXRlQ29ubmVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgdGhpcy5fZGVzdHJveUNvbm5lY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgIERyaXZlci5fdmFsaWRhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksXG4gICAgICBjb25maWcuY29ubmVjdGlvblBvb2xTaXplXG4gICAgKTtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVDb25uZWN0aW9uUHJvdmlkZXIodXJsLCB0aGlzLl9wb29sLCB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2suYmluZCh0aGlzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbm5lY3Rpb24gaW5zdGFuY2UuXG4gICAqIEByZXR1cm4ge0Nvbm5lY3Rpb259IG5ldyBjb25uZWN0b3ItYXBpIHNlc3Npb24gaW5zdGFuY2UsIGEgbG93IGxldmVsIHNlc3Npb24gQVBJLlxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG4gIF9jcmVhdGVDb25uZWN0aW9uKHVybCwgcmVsZWFzZSkge1xuICAgIGxldCBzZXNzaW9uSWQgPSB0aGlzLl9zZXNzaW9uSWRHZW5lcmF0b3IrKztcbiAgICBsZXQgY29ubiA9IGNvbm5lY3QodXJsLCB0aGlzLl9jb25maWcpO1xuICAgIGxldCBzdHJlYW1PYnNlcnZlciA9IG5ldyBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMsIGNvbm4pO1xuICAgIGNvbm4uaW5pdGlhbGl6ZSh0aGlzLl91c2VyQWdlbnQsIHRoaXMuX3Rva2VuLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgY29ubi5faWQgPSBzZXNzaW9uSWQ7XG4gICAgY29ubi5fcmVsZWFzZSA9ICgpID0+IHJlbGVhc2UodXJsLCBjb25uKTtcblxuICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdID0gY29ubjtcbiAgICByZXR1cm4gY29ubjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IGEgY29ubmVjdGlvbiBpcyB1c2FibGVcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyBvcGVuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiovXG4gIHN0YXRpYyBfdmFsaWRhdGVDb25uZWN0aW9uKGNvbm4pIHtcbiAgICByZXR1cm4gY29ubi5pc09wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwb3NlIG9mIGEgbGl2ZSBzZXNzaW9uLCBjbG9zaW5nIGFueSBhc3NvY2lhdGVkIHJlc291cmNlcy5cbiAgICogQHJldHVybiB7U2Vzc2lvbn0gbmV3IHNlc3Npb24uXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cbiAgX2Rlc3Ryb3lDb25uZWN0aW9uKGNvbm4pIHtcbiAgICBkZWxldGUgdGhpcy5fb3BlblNlc3Npb25zW2Nvbm4uX2lkXTtcbiAgICBjb25uLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWNxdWlyZSBhIHNlc3Npb24gdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZGF0YWJhc2UuIFRoZSBkcml2ZXIgbWFpbnRhaW5zXG4gICAqIGEgcG9vbCBvZiBzZXNzaW9ucywgc28gY2FsbGluZyB0aGlzIG1ldGhvZCBpcyBub3JtYWxseSBjaGVhcCBiZWNhdXNlIHlvdVxuICAgKiB3aWxsIGJlIHB1bGxpbmcgYSBzZXNzaW9uIG91dCBvZiB0aGUgY29tbW9uIHBvb2wuXG4gICAqXG4gICAqIFRoaXMgY29tZXMgd2l0aCBzb21lIHJlc3BvbnNpYmlsaXR5IC0gbWFrZSBzdXJlIHlvdSBhbHdheXMgY2FsbFxuICAgKiB7QGxpbmsgU2Vzc2lvbiNjbG9zZSgpfSB3aGVuIHlvdSBhcmUgZG9uZSB1c2luZyBhIHNlc3Npb24sIGFuZCBsaWtld2lzZSxcbiAgICogbWFrZSBzdXJlIHlvdSBkb24ndCBjbG9zZSB5b3VyIHNlc3Npb24gYmVmb3JlIHlvdSBhcmUgZG9uZSB1c2luZyBpdC4gT25jZVxuICAgKiBpdCBpcyByZXR1cm5lZCB0byB0aGUgcG9vbCwgdGhlIHNlc3Npb24gd2lsbCBiZSByZXNldCB0byBhIGNsZWFuIHN0YXRlIGFuZFxuICAgKiBtYWRlIGF2YWlsYWJsZSBmb3Igb3RoZXJzIHRvIHVzZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFttb2RlPVdSSVRFXSB0aGUgYWNjZXNzIG1vZGUgb2YgdGhpcyBzZXNzaW9uLCBhbGxvd2VkIHZhbHVlcyBhcmUge0BsaW5rIFJFQUR9IGFuZCB7QGxpbmsgV1JJVEV9LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jvb2ttYXJrPW51bGxdIHRoZSBpbml0aWFsIHJlZmVyZW5jZSB0byBzb21lIHByZXZpb3VzIHRyYW5zYWN0aW9uLiBWYWx1ZSBpcyBvcHRpb25hbCBhbmRcbiAgICogYWJzZW5jZSBpbmRpY2F0ZXMgdGhhdCB0aGF0IHRoZSBib29rbWFyayBkb2VzIG5vdCBleGlzdCBvciBpcyB1bmtub3duLlxuICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBuZXcgc2Vzc2lvbi5cbiAgICovXG4gIHNlc3Npb24obW9kZSwgYm9va21hcmspIHtcbiAgICBjb25zdCBzZXNzaW9uTW9kZSA9IERyaXZlci5fdmFsaWRhdGVTZXNzaW9uTW9kZShtb2RlKTtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlU2Vzc2lvbihzZXNzaW9uTW9kZSwgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgdGhpcy5fY29uZmlnKTtcbiAgfVxuXG4gIHN0YXRpYyBfdmFsaWRhdGVTZXNzaW9uTW9kZShyYXdNb2RlKSB7XG4gICAgY29uc3QgbW9kZSA9IHJhd01vZGUgfHwgV1JJVEU7XG4gICAgaWYgKG1vZGUgIT09IFJFQUQgJiYgbW9kZSAhPT0gV1JJVEUpIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdJbGxlZ2FsIHNlc3Npb24gbW9kZSAnICsgbW9kZSk7XG4gICAgfVxuICAgIHJldHVybiBtb2RlO1xuICB9XG5cbiAgLy9FeHRlbnNpb24gcG9pbnRcbiAgX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG5ldyBEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gIH1cblxuICAvL0V4dGVuc2lvbiBwb2ludFxuICBfY3JlYXRlU2Vzc2lvbihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpIHtcbiAgICByZXR1cm4gbmV3IFNlc3Npb24obW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKTtcbiAgfVxuXG4gIF9kcml2ZXJPbkVycm9yQ2FsbGJhY2soZXJyb3IpIHtcbiAgICBjb25zdCB1c2VyRGVmaW5lZE9uRXJyb3JDYWxsYmFjayA9IHRoaXMub25FcnJvcjtcbiAgICBpZiAodXNlckRlZmluZWRPbkVycm9yQ2FsbGJhY2sgJiYgZXJyb3IuY29kZSA9PT0gU0VSVklDRV9VTkFWQUlMQUJMRSkge1xuICAgICAgdXNlckRlZmluZWRPbkVycm9yQ2FsbGJhY2soZXJyb3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHRlbGwgdGhlIGRyaXZlciBhYm91dCB0aGlzIGVycm9yXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGFsbCBvcGVuIHNlc3Npb25zIGFuZCBvdGhlciBhc3NvY2lhdGVkIHJlc291cmNlcy4gWW91IHNob3VsZFxuICAgKiBtYWtlIHN1cmUgdG8gdXNlIHRoaXMgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGRyaXZlciBpbnN0YW5jZS5cbiAgICogQHJldHVybiB1bmRlZmluZWRcbiAgICovXG4gIGNsb3NlKCkge1xuICAgIGZvciAobGV0IHNlc3Npb25JZCBpbiB0aGlzLl9vcGVuU2Vzc2lvbnMpIHtcbiAgICAgIGlmICh0aGlzLl9vcGVuU2Vzc2lvbnMuaGFzT3duUHJvcGVydHkoc2Vzc2lvbklkKSkge1xuICAgICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXS5jbG9zZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5fcG9vbC5wdXJnZUFsbCgpO1xuICAgIH1cbiAgfVxufVxuXG4vKiogSW50ZXJuYWwgc3RyZWFtIG9ic2VydmVyIHVzZWQgZm9yIGNvbm5lY3Rpb24gc3RhdGUgKi9cbmNsYXNzIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIgZXh0ZW5kcyBTdHJlYW1PYnNlcnZlciB7XG4gIGNvbnN0cnVjdG9yKGRyaXZlciwgY29ubikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZHJpdmVyID0gZHJpdmVyO1xuICAgIHRoaXMuX2Nvbm4gPSBjb25uO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25FcnJvcihlcnJvcikge1xuICAgIGlmICghdGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICBzdXBlci5vbkVycm9yKGVycm9yKTtcbiAgICAgIGlmICh0aGlzLl9kcml2ZXIub25FcnJvcikge1xuICAgICAgICB0aGlzLl9kcml2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29tcGxldGVkKG1lc3NhZ2UpIHtcbiAgICBpZiAodGhpcy5fZHJpdmVyLm9uQ29tcGxldGVkKSB7XG4gICAgICB0aGlzLl9kcml2ZXIub25Db21wbGV0ZWQobWVzc2FnZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9jb25uICYmIG1lc3NhZ2UgJiYgbWVzc2FnZS5zZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX2Nvbm4uc2V0U2VydmVyVmVyc2lvbihtZXNzYWdlLnNlcnZlcik7XG4gICAgfVxuICB9XG59XG5cblxuXG5leHBvcnQge0RyaXZlciwgUkVBRCwgV1JJVEV9XG5cbmV4cG9ydCBkZWZhdWx0IERyaXZlclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEEgY29tbW9uIHBsYWNlIGZvciBjb25zdHJ1Y3RpbmcgZXJyb3Igb2JqZWN0cywgdG8ga2VlcCB0aGVtXG4vLyB1bmlmb3JtIGFjcm9zcyB0aGUgZHJpdmVyIHN1cmZhY2UuXG5cbmNvbnN0IFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnU2VydmljZVVuYXZhaWxhYmxlJztcbmNvbnN0IFNFU1NJT05fRVhQSVJFRCA9ICdTZXNzaW9uRXhwaXJlZCc7XG5jb25zdCBQUk9UT0NPTF9FUlJPUiA9ICdQcm90b2NvbEVycm9yJztcblxuZnVuY3Rpb24gbmV3RXJyb3IobWVzc2FnZSwgY29kZT1cIk4vQVwiKSB7XG4gIC8vIFRPRE86IElkZWEgaXMgdGhhdCB3ZSBjYW4gY2hlY2sgdGhlIGNvZGUgaGVyZSBhbmQgdGhyb3cgc3ViLWNsYXNzZXNcbiAgLy8gb2YgTmVvNGpFcnJvciBhcyBhcHByb3ByaWF0ZVxuICByZXR1cm4gbmV3IE5lbzRqRXJyb3IobWVzc2FnZSwgY29kZSk7XG59XG5cbmNsYXNzIE5lbzRqRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCBtZXNzYWdlLCBjb2RlPVwiTi9BXCIgKSB7XG4gICAgc3VwZXIoIG1lc3NhZ2UgKTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgbmV3RXJyb3IsXG4gIE5lbzRqRXJyb3IsXG4gIFNFUlZJQ0VfVU5BVkFJTEFCTEUsXG4gIFNFU1NJT05fRVhQSVJFRCxcbiAgUFJPVE9DT0xfRVJST1Jcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIENsYXNzIGZvciBOb2RlIFR5cGUuXG4gKi8gXG5jbGFzcyBOb2RlIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IGlkZW50aXR5IC0gVW5pcXVlIGlkZW50aXR5XG4gICAqIEBwYXJhbSB7QXJyYXl9IGxhYmVscyAtIEFycmF5IGZvciBhbGwgbGFiZWxzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggbm9kZSBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpZGVudGl0eSwgbGFiZWxzLCBwcm9wZXJ0aWVzKSB7XG4gICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgcyA9IFwiKFwiICsgdGhpcy5pZGVudGl0eTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzICs9IFwiOlwiICsgdGhpcy5sYWJlbHNbaV07XG4gICAgfVxuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBzICs9IFwiIHtcIjtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgcyArPSBrZXlzW2ldICsgXCI6XCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgfVxuICAgICAgcyArPSBcIn1cIjtcbiAgICB9XG4gICAgcyArPSBcIilcIjtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBSZWxhdGlvbnNoaXAgVHlwZS5cbiAqLyBcbmNsYXNzIFJlbGF0aW9uc2hpcCB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgTm9kZVxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IGVuZCAtIElkZW50aXR5IG9mIGVuZCBOb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0gUmVsYXRpb25zaGlwIHR5cGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBNYXAgd2l0aCByZWxhdGlvbnNoaXAgcHJvcGVydGllc1xuICAgKi9cbiAgY29uc3RydWN0b3IoaWRlbnRpdHksIHN0YXJ0LCBlbmQsIHR5cGUsIHByb3BlcnRpZXMpIHtcbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBzID0gXCIoXCIgKyB0aGlzLnN0YXJ0ICsgXCIpLVs6XCIgKyB0aGlzLnR5cGU7XG4gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpO1xuICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHMgKz0gXCIge1wiO1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICB9XG4gICAgICBzICs9IFwifVwiO1xuICAgIH1cbiAgICBzICs9IFwiXS0+KFwiICsgdGhpcy5lbmQgKyBcIilcIjtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBVbmJvdW5kUmVsYXRpb25zaGlwIFR5cGUuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqLyBcbmNsYXNzIFVuYm91bmRSZWxhdGlvbnNoaXAge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpZGVudGl0eSwgdHlwZSwgcHJvcGVydGllcykge1xuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQmluZCByZWxhdGlvbnNoaXBcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBzdGFydCAtIElkZW50aXR5IG9mIHN0YXJ0IG5vZGVcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBlbmQgLSBJZGVudGl0eSBvZiBlbmQgbm9kZVxuICAgKiBAcmV0dXJuIHtSZWxhdGlvbnNoaXB9IC0gQ3JlYXRlZCByZWxhdGlvbnNoaXBcbiAgICovXG4gIGJpbmQoIHN0YXJ0LCBlbmQgKSB7XG4gICAgcmV0dXJuIG5ldyBSZWxhdGlvbnNoaXAoXG4gICAgICB0aGlzLmlkZW50aXR5LCBcbiAgICAgIHN0YXJ0LCBcbiAgICAgIGVuZCwgXG4gICAgICB0aGlzLnR5cGUsIFxuICAgICAgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBzID0gXCItWzpcIiArIHRoaXMudHlwZTtcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcyk7XG4gICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgcyArPSBcIiB7XCI7XG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzW2tleXNbaV1dKTtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCJ9XCI7XG4gICAgfVxuICAgIHMgKz0gXCJdLT5cIjtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciBQYXRoU2VnbWVudCBUeXBlLlxuICovIFxuY2xhc3MgUGF0aFNlZ21lbnQge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Tm9kZX0gc3RhcnQgLSBzdGFydCBub2RlXG4gICAqIEBwYXJhbSB7UmVsYXRpb25zaGlwfSByZWwgLSByZWxhdGlvbnNoaXAgdGhhdCBjb25uZWN0cyBzdGFydCBhbmQgZW5kIG5vZGVcbiAgICogQHBhcmFtIHtOb2RlfSBlbmQgLSBlbmQgbm9kZVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc3RhcnQsIHJlbCwgZW5kKSB7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMucmVsYXRpb25zaGlwID0gcmVsO1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFBhdGggVHlwZS5cbiAqLyBcbmNsYXNzIFBhdGgge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Tm9kZX0gc3RhcnQgIC0gc3RhcnQgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IGVuZCAtIGVuZCBub2RlXG4gICAqIEBwYXJhbSB7QXJyYXl9IHNlZ21lbnRzIC0gQXJyYXkgb2YgU2VnbWVudHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0YXJ0LCBlbmQsIHNlZ21lbnRzKSB7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMuc2VnbWVudHMgPSBzZWdtZW50cztcbiAgICB0aGlzLmxlbmd0aCA9IHNlZ21lbnRzLmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQge1xuICBOb2RlLFxuICBSZWxhdGlvbnNoaXAsXG4gIFVuYm91bmRSZWxhdGlvbnNoaXAsXG4gIFBhdGgsXG4gIFBhdGhTZWdtZW50XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtpbnQsIGlzSW50LCBpblNhZmVSYW5nZSwgdG9OdW1iZXIsIHRvU3RyaW5nfSBmcm9tICcuL2ludGVnZXInO1xuaW1wb3J0IHtOb2RlLCBSZWxhdGlvbnNoaXAsIFVuYm91bmRSZWxhdGlvbnNoaXAsIFBhdGhTZWdtZW50LCBQYXRofSBmcm9tICcuL2dyYXBoLXR5cGVzJ1xuaW1wb3J0IHtOZW80akVycm9yLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVNTSU9OX0VYUElSRUQsIFBST1RPQ09MX0VSUk9SfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCBSZXN1bHQgZnJvbSAnLi9yZXN1bHQnO1xuaW1wb3J0IFJlc3VsdFN1bW1hcnkgZnJvbSAnLi9yZXN1bHQtc3VtbWFyeSc7XG5pbXBvcnQgUmVjb3JkIGZyb20gJy4vcmVjb3JkJztcbmltcG9ydCB7RHJpdmVyLCBSRUFELCBXUklURX0gZnJvbSAnLi9kcml2ZXInO1xuaW1wb3J0IFJvdXRpbmdEcml2ZXIgZnJvbSAnLi9yb3V0aW5nLWRyaXZlcic7XG5pbXBvcnQgVkVSU0lPTiBmcm9tICcuLi92ZXJzaW9uJztcbmltcG9ydCB7cGFyc2VTY2hlbWUsIHBhcnNlVXJsfSBmcm9tIFwiLi9pbnRlcm5hbC9jb25uZWN0b3JcIjtcbmltcG9ydCB7YXNzZXJ0U3RyaW5nfSBmcm9tIFwiLi9pbnRlcm5hbC91dGlsXCI7XG5cblxuY29uc3QgYXV0aCA9e1xuICBiYXNpYzogKHVzZXJuYW1lLCBwYXNzd29yZCwgcmVhbG0gPSB1bmRlZmluZWQpID0+IHtcbiAgICBpZiAocmVhbG0pIHtcbiAgICAgIHJldHVybiB7c2NoZW1lOiBcImJhc2ljXCIsIHByaW5jaXBhbDogdXNlcm5hbWUsIGNyZWRlbnRpYWxzOiBwYXNzd29yZCwgcmVhbG06IHJlYWxtfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiB1c2VybmFtZSwgY3JlZGVudGlhbHM6IHBhc3N3b3JkfTtcbiAgICB9XG4gIH0sXG4gICAgY3VzdG9tOiAocHJpbmNpcGFsLCBjcmVkZW50aWFscywgcmVhbG0sIHNjaGVtZSwgcGFyYW1ldGVycyA9IHVuZGVmaW5lZCApID0+IHtcbiAgICBpZiAocGFyYW1ldGVycykge1xuICAgICAgcmV0dXJuICB7c2NoZW1lOiBzY2hlbWUsIHByaW5jaXBhbDogcHJpbmNpcGFsLCBjcmVkZW50aWFsczogY3JlZGVudGlhbHMsIHJlYWxtOiByZWFsbSxcbiAgICAgICAgcGFyYW1ldGVyczogcGFyYW1ldGVyc31cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICB7c2NoZW1lOiBzY2hlbWUsIHByaW5jaXBhbDogcHJpbmNpcGFsLCBjcmVkZW50aWFsczogY3JlZGVudGlhbHMsIHJlYWxtOiByZWFsbX1cbiAgICB9XG4gIH1cbn07XG5sZXQgVVNFUl9BR0VOVCA9IFwibmVvNGotamF2YXNjcmlwdC9cIiArIFZFUlNJT047XG5cbi8qKlxuICogQ29uc3RydWN0IGEgbmV3IE5lbzRqIERyaXZlci4gVGhpcyBpcyB5b3VyIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoaXNcbiAqIGxpYnJhcnkuXG4gKlxuICogIyMgQ29uZmlndXJhdGlvblxuICpcbiAqIFRoaXMgZnVuY3Rpb24gb3B0aW9uYWxseSB0YWtlcyBhIGNvbmZpZ3VyYXRpb24gYXJndW1lbnQuIEF2YWlsYWJsZSBjb25maWd1cmF0aW9uXG4gKiBvcHRpb25zIGFyZSBhcyBmb2xsb3dzOlxuICpcbiAqICAgICB7XG4gKiAgICAgICAvLyBFbmNyeXB0aW9uIGxldmVsOiBFTkNSWVBUSU9OX09OIG9yIEVOQ1JZUFRJT05fT0ZGLlxuICogICAgICAgZW5jcnlwdGVkOiBFTkNSWVBUSU9OX09OfEVOQ1JZUFRJT05fT0ZGXG4gKlxuICogICAgICAgLy8gVHJ1c3Qgc3RyYXRlZ3kgdG8gdXNlIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4gVGhlcmUgaXMgbm8gbW9kZSB0byBkaXNhYmxlXG4gKiAgICAgICAvLyB0cnVzdCBvdGhlciB0aGFuIGRpc2FibGluZyBlbmNyeXB0aW9uIGFsdG9nZXRoZXIuIFRoZSByZWFzb24gZm9yXG4gKiAgICAgICAvLyB0aGlzIGlzIHRoYXQgaWYgeW91IGRvbid0IGtub3cgd2hvIHlvdSBhcmUgdGFsa2luZyB0bywgaXQgaXMgZWFzeSBmb3IgYW5cbiAqICAgICAgIC8vIGF0dGFja2VyIHRvIGhpamFjayB5b3VyIGVuY3J5cHRlZCBjb25uZWN0aW9uLCByZW5kZXJpbmcgZW5jcnlwdGlvbiBwb2ludGxlc3MuXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfQUxMX0NFUlRJRklDQVRFUyBpcyB0aGUgZGVmYXVsdCBjaG9pY2UgZm9yIE5vZGVKUyBkZXBsb3ltZW50cy4gSXQgb25seSByZXF1aXJlc1xuICogICAgICAgLy8gbmV3IGhvc3QgdG8gcHJvdmlkZSBhIGNlcnRpZmljYXRlIGFuZCBkb2VzIG5vIHZlcmlmaWNhdGlvbiBvZiB0aGUgcHJvdmlkZWQgY2VydGlmaWNhdGUuXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfT05fRklSU1RfVVNFIGlzIGF2YWlsYWJsZSBmb3IgbW9kZXJuIE5vZGVKUyBkZXBsb3ltZW50cywgYW5kIHdvcmtzXG4gKiAgICAgICAvLyBzaW1pbGFybHkgdG8gaG93IGBzc2xgIHdvcmtzIC0gdGhlIGZpcnN0IHRpbWUgd2UgY29ubmVjdCB0byBhIG5ldyBob3N0LFxuICogICAgICAgLy8gd2UgcmVtZW1iZXIgdGhlIGNlcnRpZmljYXRlIHRoZXkgdXNlLiBJZiB0aGUgY2VydGlmaWNhdGUgZXZlciBjaGFuZ2VzLCB3ZVxuICogICAgICAgLy8gYXNzdW1lIGl0IGlzIGFuIGF0dGVtcHQgdG8gaGlqYWNrIHRoZSBjb25uZWN0aW9uIGFuZCByZXF1aXJlIG1hbnVhbCBpbnRlcnZlbnRpb24uXG4gKiAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgYnkgZGVmYXVsdCwgY29ubmVjdGlvbnMgXCJqdXN0IHdvcmtcIiB3aGlsZSBzdGlsbCBnaXZpbmcgeW91XG4gKiAgICAgICAvLyBnb29kIGVuY3J5cHRlZCBwcm90ZWN0aW9uLlxuICogICAgICAgLy9cbiAqICAgICAgIC8vIFRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTIGlzIHRoZSBjbGFzc2ljIGFwcHJvYWNoIHRvIHRydXN0IHZlcmlmaWNhdGlvbiAtXG4gKiAgICAgICAvLyB3aGVuZXZlciB3ZSBlc3RhYmxpc2ggYW4gZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHdlIGVuc3VyZSB0aGUgaG9zdCBpcyB1c2luZ1xuICogICAgICAgLy8gYW4gZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSB0aGF0IGlzIGluLCBvciBpcyBzaWduZWQgYnksIGEgY2VydGlmaWNhdGUgbGlzdGVkXG4gKiAgICAgICAvLyBhcyB0cnVzdGVkLiBJbiB0aGUgd2ViIGJ1bmRsZSwgdGhpcyBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGlzIG1haW50YWluZWRcbiAqICAgICAgIC8vIGJ5IHRoZSB3ZWIgYnJvd3Nlci4gSW4gTm9kZUpTLCB5b3UgY29uZmlndXJlIHRoZSBsaXN0IHdpdGggdGhlIG5leHQgY29uZmlnIG9wdGlvbi5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9TWVNURU1fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBtZWFuZCB0aGF0IHlvdSB0cnVzdCB3aGF0ZXZlciBjZXJ0aWZpY2F0ZXNcbiAqICAgICAgIC8vIGFyZSBpbiB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBjaGFpbiBvZiB0aFxuICogICAgICAgdHJ1c3Q6IFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFU1wiIHwgXCJUUlVTVF9PTl9GSVJTVF9VU0VcIiB8IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiIHxcbiAgKiAgICAgICBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIgfCBcIlRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gKlxuICogICAgICAgLy8gTGlzdCBvZiBvbmUgb3IgbW9yZSBwYXRocyB0byB0cnVzdGVkIGVuY3J5cHRpb24gY2VydGlmaWNhdGVzLiBUaGlzIG9ubHlcbiAqICAgICAgIC8vIHdvcmtzIGluIHRoZSBOb2RlSlMgYnVuZGxlLCBhbmQgb25seSBtYXR0ZXJzIGlmIHlvdSB1c2UgXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiLlxuICogICAgICAgLy8gVGhlIGNlcnRpZmljYXRlIGZpbGVzIHNob3VsZCBiZSBpbiByZWd1bGFyIFguNTA5IFBFTSBmb3JtYXQuXG4gKiAgICAgICAvLyBGb3IgaW5zdGFuY2UsIFsnLi90cnVzdGVkLnBlbSddXG4gKiAgICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXSxcbiAqXG4gKiAgICAgICAvLyBQYXRoIHRvIGEgZmlsZSB3aGVyZSB0aGUgZHJpdmVyIHNhdmVzIGhvc3RzIGl0IGhhcyBzZWVuIGluIHRoZSBwYXN0LCB0aGlzIGlzXG4gKiAgICAgICAvLyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHNzbCB0b29sJ3Mga25vd25faG9zdHMgZmlsZS4gRWFjaCB0aW1lIHdlIGNvbm5lY3QgdG8gYVxuICogICAgICAgLy8gbmV3IGhvc3QsIGEgaGFzaCBvZiB0aGVpciBjZXJ0aWZpY2F0ZSBpcyBzdG9yZWQgYWxvbmcgd2l0aCB0aGUgZG9tYWluIG5hbWUgYW5kXG4gKiAgICAgICAvLyBwb3J0LCBhbmQgdGhpcyBpcyB0aGVuIHVzZWQgdG8gdmVyaWZ5IHRoZSBob3N0IGNlcnRpZmljYXRlIGRvZXMgbm90IGNoYW5nZS5cbiAqICAgICAgIC8vIFRoaXMgc2V0dGluZyBoYXMgbm8gZWZmZWN0IHVubGVzcyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgZW5hYmxlZC5cbiAqICAgICAgIGtub3duSG9zdHM6XCJ+Ly5uZW80ai9rbm93bl9ob3N0c1wiLFxuICpcbiAqICAgICAgIC8vIFRoZSBtYXggbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGFsbG93ZWQgaWRsZSBpbiB0aGUgcG9vbCBhdCBhbnkgdGltZS5cbiAqICAgICAgIC8vIENvbm5lY3Rpb24gd2lsbCBiZSBkZXN0cm95ZWQgaWYgdGhpcyB0aHJlc2hvbGQgaXMgZXhjZWVkZWQuXG4gKiAgICAgICBjb25uZWN0aW9uUG9vbFNpemU6IDUwLFxuICpcbiAqICAgICAgIC8vIFNwZWNpZnkgdGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdHJhbnNhY3Rpb25zIGFyZSBhbGxvd2VkIHRvIHJldHJ5IHZpYVxuICogICAgICAgLy8ge0BsaW5rIFNlc3Npb24jcmVhZFRyYW5zYWN0aW9uKCl9IGFuZCB7QGxpbmsgU2Vzc2lvbiN3cml0ZVRyYW5zYWN0aW9uKCl9IGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zXG4gKiAgICAgICAvLyB3aWxsIHJldHJ5IHRoZSBnaXZlbiB1bml0IG9mIHdvcmsgb24gYFNlcnZpY2VVbmF2YWlsYWJsZWAsIGBTZXNzaW9uRXhwaXJlZGAgYW5kIHRyYW5zaWVudCBlcnJvcnMgd2l0aFxuICogICAgICAgLy8gZXhwb25lbnRpYWwgYmFja29mZiB1c2luZyBpbml0aWFsIGRlbGF5IG9mIDEgc2Vjb25kLiBEZWZhdWx0IHZhbHVlIGlzIDMwMDAwIHdoaWNoIGlzIDMwIHNlY29uZHMuXG4gKiAgICAgICBtYXhUcmFuc2FjdGlvblJldHJ5VGltZTogMzAwMDAsXG4gKiAgICAgfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCBmb3IgdGhlIE5lbzRqIGRhdGFiYXNlLCBmb3IgaW5zdGFuY2UgXCJib2x0Oi8vbG9jYWxob3N0XCJcbiAqIEBwYXJhbSB7TWFwPFN0cmluZyxTdHJpbmc+fSBhdXRoVG9rZW4gQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuIFNlZSB7QGxpbmsgYXV0aH0gZm9yIGhlbHBlcnMuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIENvbmZpZ3VyYXRpb24gb2JqZWN0LiBTZWUgdGhlIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBhYm92ZSBmb3IgZGV0YWlscy5cbiAqIEByZXR1cm5zIHtEcml2ZXJ9XG4gKi9cbmZ1bmN0aW9uIGRyaXZlcih1cmwsIGF1dGhUb2tlbiwgY29uZmlnID0ge30pIHtcbiAgYXNzZXJ0U3RyaW5nKHVybCwgJ0JvbHQgVVJMJyk7XG4gIGNvbnN0IHNjaGVtZSA9IHBhcnNlU2NoZW1lKHVybCk7XG4gIGlmIChzY2hlbWUgPT09IFwiYm9sdCtyb3V0aW5nOi8vXCIpIHtcbiAgICByZXR1cm4gbmV3IFJvdXRpbmdEcml2ZXIocGFyc2VVcmwodXJsKSwgVVNFUl9BR0VOVCwgYXV0aFRva2VuLCBjb25maWcpO1xuICB9IGVsc2UgaWYgKHNjaGVtZSA9PT0gXCJib2x0Oi8vXCIpIHtcbiAgICByZXR1cm4gbmV3IERyaXZlcihwYXJzZVVybCh1cmwpLCBVU0VSX0FHRU5ULCBhdXRoVG9rZW4sIGNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBzY2hlbWU6IFwiICsgc2NoZW1lKTtcblxuICB9XG59XG5cblxuY29uc3QgdHlwZXMgPXtcbiAgTm9kZSxcbiAgUmVsYXRpb25zaGlwLFxuICBVbmJvdW5kUmVsYXRpb25zaGlwLFxuICBQYXRoU2VnbWVudCxcbiAgUGF0aCxcbiAgUmVzdWx0LFxuICBSZXN1bHRTdW1tYXJ5LFxuICBSZWNvcmRcbiAgfTtcblxuY29uc3Qgc2Vzc2lvbiA9IHtcbiAgUkVBRCxcbiAgV1JJVEVcbn07XG5jb25zdCBlcnJvciA9IHtcbiAgU0VSVklDRV9VTkFWQUlMQUJMRSxcbiAgU0VTU0lPTl9FWFBJUkVELFxuICBQUk9UT0NPTF9FUlJPUlxufTtcbmNvbnN0IGludGVnZXIgPSB7XG4gIHRvTnVtYmVyLFxuICB0b1N0cmluZyxcbiAgaW5TYWZlUmFuZ2Vcbn07XG5cbmNvbnN0IGZvckV4cG9ydCA9IHtcbiAgZHJpdmVyLFxuICBpbnQsXG4gIGlzSW50LFxuICBpbnRlZ2VyLFxuICBOZW80akVycm9yLFxuICBhdXRoLFxuICB0eXBlcyxcbiAgc2Vzc2lvbixcbiAgZXJyb3Jcbn07XG5cbmV4cG9ydCB7XG4gIGRyaXZlcixcbiAgaW50LFxuICBpc0ludCxcbiAgaW50ZWdlcixcbiAgTmVvNGpFcnJvcixcbiAgYXV0aCxcbiAgdHlwZXMsXG4gIHNlc3Npb24sXG4gIGVycm9yXG59XG5leHBvcnQgZGVmYXVsdCBmb3JFeHBvcnRcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyA2NC1iaXQgSW50ZWdlciBsaWJyYXJ5LCBvcmlnaW5hbGx5IGZyb20gTG9uZy5qcyBieSBkY29kZUlPXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGNvZGVJTy9Mb25nLmpzXG4vLyBMaWNlbnNlIEFwYWNoZSAyXG5cbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gXCIuL2Vycm9yXCI7XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIDY0IGJpdCB0d28ncy1jb21wbGVtZW50IGludGVnZXIsIGdpdmVuIGl0cyBsb3cgYW5kIGhpZ2ggMzIgYml0IHZhbHVlcyBhcyAqc2lnbmVkKiBpbnRlZ2Vycy5cbiAqICBTZWUgdGhlIGZyb20qIGZ1bmN0aW9ucyBiZWxvdyBmb3IgbW9yZSBjb252ZW5pZW50IHdheXMgb2YgY29uc3RydWN0aW5nIEludGVnZXJzLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBleHBvcnRzIEludGVnZXJcbiAqIEBjbGFzcyBBIEludGVnZXIgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIDY0IGJpdCB0d28ncy1jb21wbGVtZW50IGludGVnZXIgdmFsdWUuXG4gKiBAcGFyYW0ge251bWJlcn0gbG93IFRoZSBsb3cgKHNpZ25lZCkgMzIgYml0cyBvZiB0aGUgbG9uZ1xuICogQHBhcmFtIHtudW1iZXJ9IGhpZ2ggVGhlIGhpZ2ggKHNpZ25lZCkgMzIgYml0cyBvZiB0aGUgbG9uZ1xuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgb3IgbWFkZSBpbnRlcm5hbCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIuXG4gKi9cbmNsYXNzIEludGVnZXIge1xuICBjb25zdHJ1Y3Rvcihsb3csIGhpZ2gpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5sb3cgPSBsb3d8MDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5oaWdoID0gaGlnaHwwO1xuICB9XG5cbiAgLy8gVGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIEludGVnZXIgaXMgdGhlIHR3byBnaXZlbiBzaWduZWQsIDMyLWJpdCB2YWx1ZXMuXG4gIC8vIFdlIHVzZSAzMi1iaXQgcGllY2VzIGJlY2F1c2UgdGhlc2UgYXJlIHRoZSBzaXplIG9mIGludGVnZXJzIG9uIHdoaWNoXG4gIC8vIEphdmFzY3JpcHQgcGVyZm9ybXMgYml0LW9wZXJhdGlvbnMuICBGb3Igb3BlcmF0aW9ucyBsaWtlIGFkZGl0aW9uIGFuZFxuICAvLyBtdWx0aXBsaWNhdGlvbiwgd2Ugc3BsaXQgZWFjaCBudW1iZXIgaW50byAxNiBiaXQgcGllY2VzLCB3aGljaCBjYW4gZWFzaWx5IGJlXG4gIC8vIG11bHRpcGxpZWQgd2l0aGluIEphdmFzY3JpcHQncyBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiB3aXRob3V0IG92ZXJmbG93XG4gIC8vIG9yIGNoYW5nZSBpbiBzaWduLlxuICAvL1xuICAvLyBJbiB0aGUgYWxnb3JpdGhtcyBiZWxvdywgd2UgZnJlcXVlbnRseSByZWR1Y2UgdGhlIG5lZ2F0aXZlIGNhc2UgdG8gdGhlXG4gIC8vIHBvc2l0aXZlIGNhc2UgYnkgbmVnYXRpbmcgdGhlIGlucHV0KHMpIGFuZCB0aGVuIHBvc3QtcHJvY2Vzc2luZyB0aGUgcmVzdWx0LlxuICAvLyBOb3RlIHRoYXQgd2UgbXVzdCBBTFdBWVMgY2hlY2sgc3BlY2lhbGx5IHdoZXRoZXIgdGhvc2UgdmFsdWVzIGFyZSBNSU5fVkFMVUVcbiAgLy8gKC0yXjYzKSBiZWNhdXNlIC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFIChzaW5jZSAyXjYzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhc1xuICAvLyBhIHBvc2l0aXZlIG51bWJlciwgaXQgb3ZlcmZsb3dzIGJhY2sgaW50byBhIG5lZ2F0aXZlKS4gIE5vdCBoYW5kbGluZyB0aGlzXG4gIC8vIGNhc2Ugd291bGQgb2Z0ZW4gcmVzdWx0IGluIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgLy9cbiAgLy8gQ29tbW9uIGNvbnN0YW50IHZhbHVlcyBaRVJPLCBPTkUsIE5FR19PTkUsIGV0Yy4gYXJlIGRlZmluZWQgYmVsb3cgdGhlIGZyb20qXG4gIC8vIG1ldGhvZHMgb24gd2hpY2ggdGhleSBkZXBlbmQuXG5cblxuICBpblNhZmVSYW5nZSgpIHtyZXR1cm4gdGhpcy5ncmVhdGVyVGhhbk9yRXF1YWwoSW50ZWdlci5NSU5fU0FGRV9WQUxVRSkgJiYgdGhpcy5sZXNzVGhhbk9yRXF1YWwoSW50ZWdlci5NQVhfU0FGRV9WQUxVRSl9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhbiBleGFjdCBqYXZhc2NyaXB0IE51bWJlciwgYXNzdW1pbmcgaXQgaXMgYSAzMiBiaXQgaW50ZWdlci5cbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgdG9JbnQoKSB7IHJldHVybiB0aGlzLmxvdzsgfTtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYSB0aGUgbmVhcmVzdCBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHZhbHVlIChkb3VibGUsIDUzIGJpdCBtYW50aXNzYSkuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG4gIHRvTnVtYmVyKCl7IHJldHVybiB0aGlzLmhpZ2ggKiBUV09fUFdSXzMyX0RCTCArICh0aGlzLmxvdyA+Pj4gMCk7IH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYSBzdHJpbmcgd3JpdHRlbiBpbiB0aGUgc3BlY2lmaWVkIHJhZGl4LlxuICAgKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFJhZGl4ICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogQG92ZXJyaWRlXG4gICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGByYWRpeGAgaXMgb3V0IG9mIHJhbmdlXG4gICAqIEBleHBvc2VcbiAgICovXG4gIHRvU3RyaW5nKHJhZGl4KSB7XG4gICAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpXG4gICAgICByZXR1cm4gJzAnO1xuICAgIHZhciByZW07XG4gICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBJbnRlZ2VyIHZhbHVlIGJlZm9yZSBpdCBjYW4gYmUgbmVnYXRlZCwgc28gd2UgcmVtb3ZlXG4gICAgICAgIC8vIHRoZSBib3R0b20tbW9zdCBkaWdpdCBpbiB0aGlzIGJhc2UgYW5kIHRoZW4gcmVjdXJzZSB0byBkbyB0aGUgcmVzdC5cbiAgICAgICAgdmFyIHJhZGl4SW50ZWdlciA9IEludGVnZXIuZnJvbU51bWJlcihyYWRpeCk7XG4gICAgICAgIHZhciBkaXYgPSB0aGlzLmRpdihyYWRpeEludGVnZXIpO1xuICAgICAgICByZW0gPSBkaXYubXVsdGlwbHkocmFkaXhJbnRlZ2VyKS5zdWJ0cmFjdCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGRpdi50b1N0cmluZyhyYWRpeCkgKyByZW0udG9JbnQoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuICctJyArIHRoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpO1xuICAgIH1cblxuICAgIC8vIERvIHNldmVyYWwgKDYpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgICAvLyBtaW5pbWl6ZSB0aGUgY2FsbHMgdG8gdGhlIHZlcnkgZXhwZW5zaXZlIGVtdWxhdGVkIGRpdi5cbiAgICB2YXIgcmFkaXhUb1Bvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCA2KSApO1xuICAgIHJlbSA9IHRoaXM7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB2YXIgcmVtRGl2ID0gcmVtLmRpdihyYWRpeFRvUG93ZXIpLFxuICAgICAgICAgIGludHZhbCA9IHJlbS5zdWJ0cmFjdChyZW1EaXYubXVsdGlwbHkocmFkaXhUb1Bvd2VyKSkudG9JbnQoKSA+Pj4gMCxcbiAgICAgICAgICBkaWdpdHMgPSBpbnR2YWwudG9TdHJpbmcocmFkaXgpO1xuICAgICAgcmVtID0gcmVtRGl2O1xuICAgICAgaWYgKHJlbS5pc1plcm8oKSlcbiAgICAgICAgcmV0dXJuIGRpZ2l0cyArIHJlc3VsdDtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3aGlsZSAoZGlnaXRzLmxlbmd0aCA8IDYpXG4gICAgICAgICAgZGlnaXRzID0gJzAnICsgZGlnaXRzO1xuICAgICAgICByZXN1bHQgPSAnJyArIGRpZ2l0cyArIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaGlnaCAzMiBiaXRzIGFzIGEgc2lnbmVkIGludGVnZXIuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBoaWdoIGJpdHNcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgZ2V0SGlnaEJpdHMoKSB7IHJldHVybiB0aGlzLmhpZ2g7IH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICogQHJldHVybnMge251bWJlcn0gU2lnbmVkIGxvdyBiaXRzXG4gICAqIEBleHBvc2VcbiAgICovXG4gIGdldExvd0JpdHMoKSB7IHJldHVybiB0aGlzLmxvdzsgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEludGVnZXIuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGdldE51bUJpdHNBYnMoKSB7XG4gICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKVxuICAgICAgcmV0dXJuIHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSA/IDY0IDogdGhpcy5uZWdhdGUoKS5nZXROdW1CaXRzQWJzKCk7XG4gICAgdmFyIHZhbCA9IHRoaXMuaGlnaCAhPSAwID8gdGhpcy5oaWdoIDogdGhpcy5sb3c7XG4gICAgZm9yICh2YXIgYml0ID0gMzE7IGJpdCA+IDA7IGJpdC0tKVxuICAgICAgaWYgKCh2YWwgJiAoMSA8PCBiaXQpKSAhPSAwKVxuICAgICAgICBicmVhaztcbiAgICByZXR1cm4gdGhpcy5oaWdoICE9IDAgPyBiaXQgKyAzMyA6IGJpdCArIDE7XG4gIH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZXF1YWxzIHplcm8uXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBpc1plcm8oKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlnaCA9PT0gMCAmJiB0aGlzLmxvdyA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBuZWdhdGl2ZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGlzTmVnYXRpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlnaCA8IDA7XG4gIH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgcG9zaXRpdmUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBpc1Bvc2l0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLmhpZ2ggPj0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBvZGQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBpc09kZCgpIHsgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAxOyB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGV2ZW4uXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBpc0V2ZW4oKSB7IHJldHVybiAodGhpcy5sb3cgJiAxKSA9PT0gMDsgfTtcblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZXF1YWxzIHRoZSBzcGVjaWZpZWQncy5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgZXF1YWxzKG90aGVyKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpXG4gICAgICBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICByZXR1cm4gdGhpcy5oaWdoID09PSBvdGhlci5oaWdoICYmIHRoaXMubG93ID09PSBvdGhlci5sb3c7XG4gIH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBzcGVjaWZpZWQncy5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgbm90RXF1YWxzKG90aGVyKSB7ICF0aGlzLmVxdWFscygvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpOyB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkJ3MuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGxlc3NUaGFuKG90aGVyKSB7IHJldHVybiB0aGlzLmNvbXBhcmUoLyogdmFsaWRhdGVzICovIG90aGVyKSA8IDA7IH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRoZSBzcGVjaWZpZWQncy5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgbGVzc1RoYW5PckVxdWFsKG90aGVyKSB7IHJldHVybiB0aGlzLmNvbXBhcmUoLyogdmFsaWRhdGVzICovIG90aGVyKSA8PSAwOyB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkJ3MuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGdyZWF0ZXJUaGFuKG90aGVyKSB7IHJldHVybiB0aGlzLmNvbXBhcmUoLyogdmFsaWRhdGVzICovIG90aGVyKSA+IDA7IH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRoZSBzcGVjaWZpZWQncy5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgZ3JlYXRlclRoYW5PckVxdWFsKG90aGVyKSB7IHJldHVybiB0aGlzLmNvbXBhcmUoLyogdmFsaWRhdGVzICovIG90aGVyKSA+PSAwOyB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmVzIHRoaXMgSW50ZWdlcidzIHZhbHVlIHdpdGggdGhlIHNwZWNpZmllZCdzLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IDAgaWYgdGhleSBhcmUgdGhlIHNhbWUsIDEgaWYgdGhlIHRoaXMgaXMgZ3JlYXRlciBhbmQgLTFcbiAgICogIGlmIHRoZSBnaXZlbiBvbmUgaXMgZ3JlYXRlclxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBjb21wYXJlKG90aGVyKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpXG4gICAgICBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICBpZiAodGhpcy5lcXVhbHMob3RoZXIpKVxuICAgICAgcmV0dXJuIDA7XG4gICAgdmFyIHRoaXNOZWcgPSB0aGlzLmlzTmVnYXRpdmUoKSxcbiAgICAgIG90aGVyTmVnID0gb3RoZXIuaXNOZWdhdGl2ZSgpO1xuICAgIGlmICh0aGlzTmVnICYmICFvdGhlck5lZylcbiAgICAgIHJldHVybiAtMTtcbiAgICBpZiAoIXRoaXNOZWcgJiYgb3RoZXJOZWcpXG4gICAgICByZXR1cm4gMTtcbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBzaWduIGJpdHMgYXJlIHRoZSBzYW1lXG4gICAgcmV0dXJuIHRoaXMuc3VidHJhY3Qob3RoZXIpLmlzTmVnYXRpdmUoKSA/IC0xIDogMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZWdhdGVzIHRoaXMgSW50ZWdlcidzIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IE5lZ2F0ZWQgSW50ZWdlclxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBuZWdhdGUoKSB7XG4gICAgaWYgKHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSlcbiAgICAgIHJldHVybiBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgICByZXR1cm4gdGhpcy5ub3QoKS5hZGQoSW50ZWdlci5PTkUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gYWRkZW5kIEFkZGVuZFxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFN1bVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBhZGQoYWRkZW5kKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihhZGRlbmQpKVxuICAgICAgYWRkZW5kID0gSW50ZWdlci5mcm9tVmFsdWUoYWRkZW5kKTtcblxuICAgIC8vIERpdmlkZSBlYWNoIG51bWJlciBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIHN1bSB0aGUgY2h1bmtzLlxuXG4gICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgdmFyIGEzMiA9IHRoaXMuaGlnaCAmIDB4RkZGRjtcbiAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xuICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgIHZhciBiNDggPSBhZGRlbmQuaGlnaCA+Pj4gMTY7XG4gICAgdmFyIGIzMiA9IGFkZGVuZC5oaWdoICYgMHhGRkZGO1xuICAgIHZhciBiMTYgPSBhZGRlbmQubG93ID4+PiAxNjtcbiAgICB2YXIgYjAwID0gYWRkZW5kLmxvdyAmIDB4RkZGRjtcblxuICAgIHZhciBjNDggPSAwLCBjMzIgPSAwLCBjMTYgPSAwLCBjMDAgPSAwO1xuICAgIGMwMCArPSBhMDAgKyBiMDA7XG4gICAgYzE2ICs9IGMwMCA+Pj4gMTY7XG4gICAgYzAwICY9IDB4RkZGRjtcbiAgICBjMTYgKz0gYTE2ICsgYjE2O1xuICAgIGMzMiArPSBjMTYgPj4+IDE2O1xuICAgIGMxNiAmPSAweEZGRkY7XG4gICAgYzMyICs9IGEzMiArIGIzMjtcbiAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICBjMzIgJj0gMHhGRkZGO1xuICAgIGM0OCArPSBhNDggKyBiNDg7XG4gICAgYzQ4ICY9IDB4RkZGRjtcbiAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cygoYzE2IDw8IDE2KSB8IGMwMCwgKGM0OCA8PCAxNikgfCBjMzIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IHN1YnRyYWhlbmQgU3VidHJhaGVuZFxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IERpZmZlcmVuY2VcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgc3VidHJhY3Qoc3VidHJhaGVuZCkge1xuICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoc3VidHJhaGVuZCkpXG4gICAgICBzdWJ0cmFoZW5kID0gSW50ZWdlci5mcm9tVmFsdWUoc3VidHJhaGVuZCk7XG4gICAgcmV0dXJuIHRoaXMuYWRkKHN1YnRyYWhlbmQubmVnYXRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByb2R1Y3Qgb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG11bHRpcGxpZXIgTXVsdGlwbGllclxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFByb2R1Y3RcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgbXVsdGlwbHkobXVsdGlwbGllcikge1xuICAgIGlmICh0aGlzLmlzWmVybygpKVxuICAgICAgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG11bHRpcGxpZXIpKVxuICAgICAgbXVsdGlwbGllciA9IEludGVnZXIuZnJvbVZhbHVlKG11bHRpcGxpZXIpO1xuICAgIGlmIChtdWx0aXBsaWVyLmlzWmVybygpKVxuICAgICAgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKVxuICAgICAgcmV0dXJuIG11bHRpcGxpZXIuaXNPZGQoKSA/IEludGVnZXIuTUlOX1ZBTFVFIDogSW50ZWdlci5aRVJPO1xuICAgIGlmIChtdWx0aXBsaWVyLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpXG4gICAgICByZXR1cm4gdGhpcy5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG5cbiAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgIGlmIChtdWx0aXBsaWVyLmlzTmVnYXRpdmUoKSlcbiAgICAgICAgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllci5uZWdhdGUoKSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG11bHRpcGxpZXIpLm5lZ2F0ZSgpO1xuICAgIH0gZWxzZSBpZiAobXVsdGlwbGllci5pc05lZ2F0aXZlKCkpXG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcblxuICAgIC8vIElmIGJvdGggbG9uZ3MgYXJlIHNtYWxsLCB1c2UgZmxvYXQgbXVsdGlwbGljYXRpb25cbiAgICBpZiAodGhpcy5sZXNzVGhhbihUV09fUFdSXzI0KSAmJiBtdWx0aXBsaWVyLmxlc3NUaGFuKFRXT19QV1JfMjQpKVxuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih0aGlzLnRvTnVtYmVyKCkgKiBtdWx0aXBsaWVyLnRvTnVtYmVyKCkpO1xuXG4gICAgLy8gRGl2aWRlIGVhY2ggbG9uZyBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIGFkZCB1cCA0eDQgcHJvZHVjdHMuXG4gICAgLy8gV2UgY2FuIHNraXAgcHJvZHVjdHMgdGhhdCB3b3VsZCBvdmVyZmxvdy5cblxuICAgIHZhciBhNDggPSB0aGlzLmhpZ2ggPj4+IDE2O1xuICAgIHZhciBhMzIgPSB0aGlzLmhpZ2ggJiAweEZGRkY7XG4gICAgdmFyIGExNiA9IHRoaXMubG93ID4+PiAxNjtcbiAgICB2YXIgYTAwID0gdGhpcy5sb3cgJiAweEZGRkY7XG5cbiAgICB2YXIgYjQ4ID0gbXVsdGlwbGllci5oaWdoID4+PiAxNjtcbiAgICB2YXIgYjMyID0gbXVsdGlwbGllci5oaWdoICYgMHhGRkZGO1xuICAgIHZhciBiMTYgPSBtdWx0aXBsaWVyLmxvdyA+Pj4gMTY7XG4gICAgdmFyIGIwMCA9IG11bHRpcGxpZXIubG93ICYgMHhGRkZGO1xuXG4gICAgdmFyIGM0OCA9IDAsIGMzMiA9IDAsIGMxNiA9IDAsIGMwMCA9IDA7XG4gICAgYzAwICs9IGEwMCAqIGIwMDtcbiAgICBjMTYgKz0gYzAwID4+PiAxNjtcbiAgICBjMDAgJj0gMHhGRkZGO1xuICAgIGMxNiArPSBhMTYgKiBiMDA7XG4gICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgYzE2ICY9IDB4RkZGRjtcbiAgICBjMTYgKz0gYTAwICogYjE2O1xuICAgIGMzMiArPSBjMTYgPj4+IDE2O1xuICAgIGMxNiAmPSAweEZGRkY7XG4gICAgYzMyICs9IGEzMiAqIGIwMDtcbiAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICBjMzIgJj0gMHhGRkZGO1xuICAgIGMzMiArPSBhMTYgKiBiMTY7XG4gICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgYzMyICY9IDB4RkZGRjtcbiAgICBjMzIgKz0gYTAwICogYjMyO1xuICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgIGMzMiAmPSAweEZGRkY7XG4gICAgYzQ4ICs9IGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAqIGI0ODtcbiAgICBjNDggJj0gMHhGRkZGO1xuICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKChjMTYgPDwgMTYpIHwgYzAwLCAoYzQ4IDw8IDE2KSB8IGMzMik7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIGRpdmlkZWQgYnkgdGhlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBkaXZpc29yIERpdmlzb3JcbiAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBRdW90aWVudFxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBkaXYoZGl2aXNvcikge1xuICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoZGl2aXNvcikpXG4gICAgICAgIGRpdmlzb3IgPSBJbnRlZ2VyLmZyb21WYWx1ZShkaXZpc29yKTtcbiAgICBpZiAoZGl2aXNvci5pc1plcm8oKSlcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ2RpdmlzaW9uIGJ5IHplcm8nKTtcbiAgICBpZiAodGhpcy5pc1plcm8oKSlcbiAgICAgICAgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICB2YXIgYXBwcm94LCByZW0sIHJlcztcbiAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICBpZiAoZGl2aXNvci5lcXVhbHMoSW50ZWdlci5PTkUpIHx8IGRpdmlzb3IuZXF1YWxzKEludGVnZXIuTkVHX09ORSkpXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLk1JTl9WQUxVRTsgIC8vIHJlY2FsbCB0aGF0IC1NSU5fVkFMVUUgPT0gTUlOX1ZBTFVFXG4gICAgICBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLk9ORTtcbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIHxvdGhlcnwgPj0gMiwgc28gfHRoaXMvb3RoZXJ8IDwgfE1JTl9WQUxVRXwuXG4gICAgICAgIHZhciBoYWxmVGhpcyA9IHRoaXMuc2hpZnRSaWdodCgxKTtcbiAgICAgICAgYXBwcm94ID0gaGFsZlRoaXMuZGl2KGRpdmlzb3IpLnNoaWZ0TGVmdCgxKTtcbiAgICAgICAgaWYgKGFwcHJveC5lcXVhbHMoSW50ZWdlci5aRVJPKSkge1xuICAgICAgICAgIHJldHVybiBkaXZpc29yLmlzTmVnYXRpdmUoKSA/IEludGVnZXIuT05FIDogSW50ZWdlci5ORUdfT05FO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbSA9IHRoaXMuc3VidHJhY3QoZGl2aXNvci5tdWx0aXBseShhcHByb3gpKTtcbiAgICAgICAgICByZXMgPSBhcHByb3guYWRkKHJlbS5kaXYoZGl2aXNvcikpO1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSlcbiAgICAgIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICBpZiAoZGl2aXNvci5pc05lZ2F0aXZlKCkpXG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihkaXZpc29yLm5lZ2F0ZSgpKTtcbiAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdihkaXZpc29yKS5uZWdhdGUoKTtcbiAgICB9IGVsc2UgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKVxuICAgICAgcmV0dXJuIHRoaXMuZGl2KGRpdmlzb3IubmVnYXRlKCkpLm5lZ2F0ZSgpO1xuXG4gICAgLy8gUmVwZWF0IHRoZSBmb2xsb3dpbmcgdW50aWwgdGhlIHJlbWFpbmRlciBpcyBsZXNzIHRoYW4gb3RoZXI6ICBmaW5kIGFcbiAgICAvLyBmbG9hdGluZy1wb2ludCB0aGF0IGFwcHJveGltYXRlcyByZW1haW5kZXIgLyBvdGhlciAqZnJvbSBiZWxvdyosIGFkZCB0aGlzXG4gICAgLy8gaW50byB0aGUgcmVzdWx0LCBhbmQgc3VidHJhY3QgaXQgZnJvbSB0aGUgcmVtYWluZGVyLiAgSXQgaXMgY3JpdGljYWwgdGhhdFxuICAgIC8vIHRoZSBhcHByb3hpbWF0ZSB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHJlYWwgdmFsdWUgc28gdGhhdCB0aGVcbiAgICAvLyByZW1haW5kZXIgbmV2ZXIgYmVjb21lcyBuZWdhdGl2ZS5cbiAgICByZXMgPSBJbnRlZ2VyLlpFUk87XG4gICAgcmVtID0gdGhpcztcbiAgICB3aGlsZSAocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChkaXZpc29yKSkge1xuICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIHJlc3VsdCBvZiBkaXZpc2lvbi4gVGhpcyBtYXkgYmUgYSBsaXR0bGUgZ3JlYXRlciBvclxuICAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBhY3R1YWwgdmFsdWUuXG4gICAgICBhcHByb3ggPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHJlbS50b051bWJlcigpIC8gZGl2aXNvci50b051bWJlcigpKSk7XG5cbiAgICAgIC8vIFdlIHdpbGwgdHdlYWsgdGhlIGFwcHJveGltYXRlIHJlc3VsdCBieSBjaGFuZ2luZyBpdCBpbiB0aGUgNDgtdGggZGlnaXQgb3JcbiAgICAgIC8vIHRoZSBzbWFsbGVzdCBub24tZnJhY3Rpb25hbCBkaWdpdCwgd2hpY2hldmVyIGlzIGxhcmdlci5cbiAgICAgIHZhciBsb2cyID0gTWF0aC5jZWlsKE1hdGgubG9nKGFwcHJveCkgLyBNYXRoLkxOMiksXG4gICAgICAgICAgZGVsdGEgPSAobG9nMiA8PSA0OCkgPyAxIDogTWF0aC5wb3coMiwgbG9nMiAtIDQ4KSxcblxuICAgICAgLy8gRGVjcmVhc2UgdGhlIGFwcHJveGltYXRpb24gdW50aWwgaXQgaXMgc21hbGxlciB0aGFuIHRoZSByZW1haW5kZXIuICBOb3RlXG4gICAgICAvLyB0aGF0IGlmIGl0IGlzIHRvbyBsYXJnZSwgdGhlIHByb2R1Y3Qgb3ZlcmZsb3dzIGFuZCBpcyBuZWdhdGl2ZS5cbiAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpLFxuICAgICAgYXBwcm94UmVtID0gYXBwcm94UmVzLm11bHRpcGx5KGRpdmlzb3IpO1xuICAgICAgd2hpbGUgKGFwcHJveFJlbS5pc05lZ2F0aXZlKCkgfHwgYXBwcm94UmVtLmdyZWF0ZXJUaGFuKHJlbSkpIHtcbiAgICAgICAgYXBwcm94IC09IGRlbHRhO1xuICAgICAgICBhcHByb3hSZXMgPSBJbnRlZ2VyLmZyb21OdW1iZXIoYXBwcm94KTtcbiAgICAgICAgYXBwcm94UmVtID0gYXBwcm94UmVzLm11bHRpcGx5KGRpdmlzb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBrbm93IHRoZSBhbnN3ZXIgY2FuJ3QgYmUgemVyby4uLiBhbmQgYWN0dWFsbHksIHplcm8gd291bGQgY2F1c2VcbiAgICAgIC8vIGluZmluaXRlIHJlY3Vyc2lvbiBzaW5jZSB3ZSB3b3VsZCBtYWtlIG5vIHByb2dyZXNzLlxuICAgICAgaWYgKGFwcHJveFJlcy5pc1plcm8oKSlcbiAgICAgICAgYXBwcm94UmVzID0gSW50ZWdlci5PTkU7XG5cbiAgICAgIHJlcyA9IHJlcy5hZGQoYXBwcm94UmVzKTtcbiAgICAgIHJlbSA9IHJlbS5zdWJ0cmFjdChhcHByb3hSZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIG1vZHVsbyB0aGUgc3BlY2lmaWVkLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFJlbWFpbmRlclxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBtb2R1bG8oZGl2aXNvcikge1xuICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoZGl2aXNvcikpXG4gICAgICBkaXZpc29yID0gSW50ZWdlci5mcm9tVmFsdWUoZGl2aXNvcik7XG4gICAgcmV0dXJuIHRoaXMuc3VidHJhY3QodGhpcy5kaXYoZGl2aXNvcikubXVsdGlwbHkoZGl2aXNvcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJpdHdpc2UgTk9UIG9mIHRoaXMgSW50ZWdlci5cbiAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBub3QoKSB7XG4gICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMofnRoaXMubG93LCB+dGhpcy5oaWdoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIEFORCBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGFuZChvdGhlcikge1xuICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKVxuICAgICAgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgJiBvdGhlci5sb3csIHRoaXMuaGlnaCAmIG90aGVyLmhpZ2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJpdHdpc2UgT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgc3BlY2lmaWVkLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBvcihvdGhlcikge1xuICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKVxuICAgICAgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgfCBvdGhlci5sb3csIHRoaXMuaGlnaCB8IG90aGVyLmhpZ2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJpdHdpc2UgWE9SIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIGdpdmVuIG9uZS5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgeG9yKG90aGVyKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpXG4gICAgICBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyBeIG90aGVyLmxvdywgdGhpcy5oaWdoIF4gb3RoZXIuaGlnaCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIEludGVnZXIgd2l0aCBiaXRzIHNoaWZ0ZWQgdG8gdGhlIGxlZnQgYnkgdGhlIGdpdmVuIGFtb3VudC5cbiAgICogQHBhcmFtIHtudW1iZXJ8IUludGVnZXJ9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcbiAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgc2hpZnRMZWZ0KG51bUJpdHMpIHtcbiAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpXG4gICAgICBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgIGlmICgobnVtQml0cyAmPSA2MykgPT09IDApXG4gICAgICByZXR1cm4gdGhpcztcbiAgICBlbHNlIGlmIChudW1CaXRzIDwgMzIpXG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyA8PCBudW1CaXRzLCAodGhpcy5oaWdoIDw8IG51bUJpdHMpIHwgKHRoaXMubG93ID4+PiAoMzIgLSBudW1CaXRzKSkpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKDAsIHRoaXMubG93IDw8IChudW1CaXRzIC0gMzIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgYXJpdGhtZXRpY2FsbHkgc2hpZnRlZCB0byB0aGUgcmlnaHQgYnkgdGhlIGdpdmVuIGFtb3VudC5cbiAgICogQHBhcmFtIHtudW1iZXJ8IUludGVnZXJ9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcbiAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgc2hpZnRSaWdodChudW1CaXRzKSB7XG4gICAgaWYgKEludGVnZXIuaXNJbnRlZ2VyKG51bUJpdHMpKVxuICAgICAgbnVtQml0cyA9IG51bUJpdHMudG9JbnQoKTtcbiAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgZWxzZSBpZiAobnVtQml0cyA8IDMyKVxuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoKHRoaXMubG93ID4+PiBudW1CaXRzKSB8ICh0aGlzLmhpZ2ggPDwgKDMyIC0gbnVtQml0cykpLCB0aGlzLmhpZ2ggPj4gbnVtQml0cyk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5oaWdoID4+IChudW1CaXRzIC0gMzIpLCB0aGlzLmhpZ2ggPj0gMCA/IDAgOiAtMSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBpbmRpY2F0b3IgdXNlZCB0byByZWxpYWJseSBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgSW50ZWdlciBvciBub3QuXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqIEBjb25zdFxuICogQGV4cG9zZVxuICogQHByaXZhdGVcbiAqL1xuSW50ZWdlci5fX2lzSW50ZWdlcl9fO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSW50ZWdlci5wcm90b3R5cGUsIFwiX19pc0ludGVnZXJfX1wiLCB7XG4gICAgdmFsdWU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiBmYWxzZVxufSk7XG5cbi8qKlxuICogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgYSBJbnRlZ2VyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyp9IG9iaiBPYmplY3RcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmlzSW50ZWdlciA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiAob2JqICYmIG9ialtcIl9faXNJbnRlZ2VyX19cIl0pID09PSB0cnVlO1xufTtcblxuXG5cbi8qKlxuICogQSBjYWNoZSBvZiB0aGUgSW50ZWdlciByZXByZXNlbnRhdGlvbnMgb2Ygc21hbGwgaW50ZWdlciB2YWx1ZXMuXG4gKiBAdHlwZSB7IU9iamVjdH1cbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIElOVF9DQUNIRSA9IHt9O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gMzIgYml0IGludGVnZXIgdmFsdWUuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgMzIgYml0IGludGVnZXIgaW4gcXVlc3Rpb25cbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21JbnQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciBvYmosIGNhY2hlZE9iajtcbiAgICB2YWx1ZSA9IHZhbHVlIHwgMDtcbiAgICBpZiAoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDEyOCkge1xuICAgICAgICBjYWNoZWRPYmogPSBJTlRfQ0FDSEVbdmFsdWVdO1xuICAgICAgICBpZiAoY2FjaGVkT2JqKVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZE9iajtcbiAgICB9XG4gICAgb2JqID0gbmV3IEludGVnZXIodmFsdWUsIHZhbHVlIDwgMCA/IC0xIDogMCwgZmFsc2UpO1xuICAgIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KVxuICAgICAgICBJTlRfQ0FDSEVbdmFsdWVdID0gb2JqO1xuICAgIHJldHVybiBvYmo7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gdmFsdWUsIHByb3ZpZGVkIHRoYXQgaXQgaXMgYSBmaW5pdGUgbnVtYmVyLiBPdGhlcndpc2UsIHplcm8gaXMgcmV0dXJuZWQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgbnVtYmVyIGluIHF1ZXN0aW9uXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tTnVtYmVyID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgaWYgKHZhbHVlIDw9IC1UV09fUFdSXzYzX0RCTClcbiAgICAgICAgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICAgIGlmICh2YWx1ZSArIDEgPj0gVFdPX1BXUl82M19EQkwpXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgICBpZiAodmFsdWUgPCAwKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKC12YWx1ZSkubmVnYXRlKCk7XG4gICAgcmV0dXJuIG5ldyBJbnRlZ2VyKCh2YWx1ZSAlIFRXT19QV1JfMzJfREJMKSB8IDAsICh2YWx1ZSAvIFRXT19QV1JfMzJfREJMKSB8IDAgKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSA2NCBiaXQgaW50ZWdlciB0aGF0IGNvbWVzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGdpdmVuIGxvdyBhbmQgaGlnaCBiaXRzLiBFYWNoIGlzXG4gKiAgYXNzdW1lZCB0byB1c2UgMzIgYml0cy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxvd0JpdHMgVGhlIGxvdyAzMiBiaXRzXG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaEJpdHMgVGhlIGhpZ2ggMzIgYml0c1xuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbUJpdHMgPSBmdW5jdGlvbihsb3dCaXRzLCBoaWdoQml0cykge1xuICAgIHJldHVybiBuZXcgSW50ZWdlcihsb3dCaXRzLCBoaWdoQml0cyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBzdHJpbmcsIHdyaXR0ZW4gdXNpbmcgdGhlIHNwZWNpZmllZCByYWRpeC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciBUaGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgSW50ZWdlclxuICogQHBhcmFtIHtudW1iZXI9fSByYWRpeCBUaGUgcmFkaXggaW4gd2hpY2ggdGhlIHRleHQgaXMgd3JpdHRlbiAoMi0zNiksIGRlZmF1bHRzIHRvIDEwXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tU3RyaW5nID0gZnVuY3Rpb24oc3RyLCByYWRpeCkge1xuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKVxuICAgICAgICB0aHJvdyBuZXdFcnJvcignbnVtYmVyIGZvcm1hdCBlcnJvcjogZW1wdHkgc3RyaW5nJyk7XG4gICAgaWYgKHN0ciA9PT0gXCJOYU5cIiB8fCBzdHIgPT09IFwiSW5maW5pdHlcIiB8fCBzdHIgPT09IFwiK0luZmluaXR5XCIgfHwgc3RyID09PSBcIi1JbmZpbml0eVwiKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgIHJhZGl4ID0gcmFkaXggfHwgMTA7XG4gICAgaWYgKHJhZGl4IDwgMiB8fCAzNiA8IHJhZGl4KVxuICAgICAgICB0aHJvdyBuZXdFcnJvcigncmFkaXggb3V0IG9mIHJhbmdlOiAnICsgcmFkaXgpO1xuXG4gICAgdmFyIHA7XG4gICAgaWYgKChwID0gc3RyLmluZGV4T2YoJy0nKSkgPiAwKVxuICAgICAgICB0aHJvdyBuZXdFcnJvcignbnVtYmVyIGZvcm1hdCBlcnJvcjogaW50ZXJpb3IgXCItXCIgY2hhcmFjdGVyOiAnICsgc3RyKTtcbiAgICBlbHNlIGlmIChwID09PSAwKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5mcm9tU3RyaW5nKHN0ci5zdWJzdHJpbmcoMSksIHJhZGl4KS5uZWdhdGUoKTtcblxuICAgIC8vIERvIHNldmVyYWwgKDgpIGRpZ2l0cyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcCwgc28gYXMgdG9cbiAgICAvLyBtaW5pbWl6ZSB0aGUgY2FsbHMgdG8gdGhlIHZlcnkgZXhwZW5zaXZlIGVtdWxhdGVkIGRpdi5cbiAgICB2YXIgcmFkaXhUb1Bvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCA4KSk7XG5cbiAgICB2YXIgcmVzdWx0ID0gSW50ZWdlci5aRVJPO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSArPSA4KSB7XG4gICAgICAgIHZhciBzaXplID0gTWF0aC5taW4oOCwgc3RyLmxlbmd0aCAtIGkpO1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZUludChzdHIuc3Vic3RyaW5nKGksIGkgKyBzaXplKSwgcmFkaXgpO1xuICAgICAgICBpZiAoc2l6ZSA8IDgpIHtcbiAgICAgICAgICAgIHZhciBwb3dlciA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgc2l6ZSkpO1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KHBvd2VyKS5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocmFkaXhUb1Bvd2VyKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5hZGQoSW50ZWdlci5mcm9tTnVtYmVyKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byBhIEludGVnZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXJ9fSB2YWwgVmFsdWVcbiAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tVmFsdWUgPSBmdW5jdGlvbih2YWwpIHtcbiAgICBpZiAodmFsIC8qIGlzIGNvbXBhdGlibGUgKi8gaW5zdGFuY2VvZiBJbnRlZ2VyKVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcih2YWwpO1xuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJylcbiAgICAgICAgcmV0dXJuIEludGVnZXIuZnJvbVN0cmluZyh2YWwpO1xuICAgIC8vIFRocm93cyBmb3Igbm9uLW9iamVjdHMsIGNvbnZlcnRzIG5vbi1pbnN0YW5jZW9mIEludGVnZXI6XG4gICAgcmV0dXJuIG5ldyBJbnRlZ2VyKHZhbC5sb3csIHZhbC5oaWdoKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byBhIG51bWJlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfCF7bG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcn19IHZhbCBWYWx1ZVxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci50b051bWJlciA9IGZ1bmN0aW9uKHZhbCkge1xuIHJldHVybiBJbnRlZ2VyLmZyb21WYWx1ZSh2YWwpLnRvTnVtYmVyKCk7XG59O1xuXG4vKipcbiogQ29udmVydHMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byBhIHN0cmluZy5cbiogQGFjY2VzcyBwcml2YXRlXG4qIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXJ9fSB2YWwgVmFsdWVcbiogQHBhcmFtIHtudW1iZXJ9IHJhZGl4IG9wdGlvbmFsIHJhZGl4IGZvciBzdHJpbmcgY29udmVyc2lvbiwgZGVmYXVsdHMgdG8gMTBcbiogQHJldHVybnMge1N0cmluZ31cbiogQGV4cG9zZVxuKi9cbkludGVnZXIudG9TdHJpbmcgPSBmdW5jdGlvbih2YWwsIHJhZGl4KSB7XG4gIHJldHVybiBJbnRlZ2VyLmZyb21WYWx1ZSh2YWwpLnRvU3RyaW5nKHJhZGl4KVxufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGluIHRoZSBzYWZlIHJhbmdlIGluIG9yZGVyIHRvIGJlIGNvbnZlcnRlZCB0byBhIG5hdGl2ZSBudW1iZXJcbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfCF7bG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcn19IHZhbCBWYWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IHJhZGl4IG9wdGlvbmFsIHJhZGl4IGZvciBzdHJpbmcgY29udmVyc2lvbiwgZGVmYXVsdHMgdG8gMTBcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmluU2FmZVJhbmdlID0gZnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiBJbnRlZ2VyLmZyb21WYWx1ZSh2YWwpLmluU2FmZVJhbmdlKCk7XG59O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMTZfREJMID0gMSA8PCAxNjtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzI0X0RCTCA9IDEgPDwgMjQ7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8zMl9EQkwgPSBUV09fUFdSXzE2X0RCTCAqIFRXT19QV1JfMTZfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjRfREJMID0gVFdPX1BXUl8zMl9EQkwgKiBUV09fUFdSXzMyX0RCTDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzYzX0RCTCA9IFRXT19QV1JfNjRfREJMIC8gMjtcblxuLyoqXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjQgPSBJbnRlZ2VyLmZyb21JbnQoVFdPX1BXUl8yNF9EQkwpO1xuXG4vKipcbiAqIFNpZ25lZCB6ZXJvLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLlpFUk8gPSBJbnRlZ2VyLmZyb21JbnQoMCk7XG5cbi8qKlxuICogU2lnbmVkIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5PTkUgPSBJbnRlZ2VyLmZyb21JbnQoMSk7XG5cbi8qKlxuICogU2lnbmVkIG5lZ2F0aXZlIG9uZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5ORUdfT05FID0gSW50ZWdlci5mcm9tSW50KC0xKTtcblxuLyoqXG4gKiBNYXhpbXVtIHNpZ25lZCB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NQVhfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4RkZGRkZGRkZ8MCwgMHg3RkZGRkZGRnwwLCBmYWxzZSk7XG5cbi8qKlxuICogTWluaW11bSBzaWduZWQgdmFsdWUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTUlOX1ZBTFVFID0gSW50ZWdlci5mcm9tQml0cygwLCAweDgwMDAwMDAwfDAsIGZhbHNlKTtcblxuLyoqXG4gKiBNaW5pbXVtIHNhZmUgdmFsdWUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTUlOX1NBRkVfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4MXwwLCAweEZGRkZGRkZGRkZFMDAwMDB8MCk7XG5cbi8qKlxuKiBNYXhpbXVtIHNhZmUgdmFsdWUuXG4qIEB0eXBlIHshSW50ZWdlcn1cbiogQGV4cG9zZVxuKi9cbkludGVnZXIuTUFYX1NBRkVfVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDB4RkZGRkZGRkZ8MCwweDFGRkZGRnwwKTtcblxuLyoqXG4gKiBDYXN0IHZhbHVlIHRvIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB1c2UuXG4gKiBAcmV0dXJuIHtJbnRlZ2VyfSAtIEFuIG9iamVjdCBvZiB0eXBlIEludGVnZXIuXG4gKi9cbmxldCBpbnQgPSBJbnRlZ2VyLmZyb21WYWx1ZTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhcmlhYmxlIGlzIG9mIEludGVnZXIgdHlwZS5cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge0Jvb2xlYW59IC0gSXMgaXQgb2YgdGhlIEludGVnZXIgdHlwZT9cbiAqL1xubGV0IGlzSW50ID0gSW50ZWdlci5pc0ludGVnZXI7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YXJpYWJsZSBjYW4gYmUgc2FmZWx5IGNvbnZlcnRlZCB0byBhIG51bWJlclxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmlhYmxlIHRvIGNoZWNrXG4gKiBAcmV0dXJuIHtCb29sZWFufSAtIHRydWUgaWYgaXQgaXMgc2FmZSB0byBjYWxsIHRvTnVtYmVyIG9uIHZhcmlhYmxlIG90aGVyd2lzZSBmYWxzZVxuICovXG5sZXQgaW5TYWZlUmFuZ2UgPSBJbnRlZ2VyLmluU2FmZVJhbmdlO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgdmFyaWFibGUgdG8gYSBudW1iZXJcbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjb252ZXJ0XG4gKiBAcmV0dXJuIHtudW1iZXJ9IC0gdGhlIHZhcmlhYmxlIGFzIGEgbnVtYmVyXG4gKi9cbmxldCB0b051bWJlciA9IEludGVnZXIudG9OdW1iZXI7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGludGVnZXIgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFkaXggLSByYWRpeCB0byB1c2UgaW4gc3RyaW5nIGNvbnZlcnNpb24sIGRlZmF1bHRzIHRvIDEwXG4gKiBAcmV0dXJuIHtTdHJpbmd9IC0gcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZWdlclxuICovXG5sZXQgdG9TdHJpbmcgPSBJbnRlZ2VyLnRvU3RyaW5nO1xuXG5leHBvcnQge1xuICAgIGludCxcbiAgICBpc0ludCxcbiAgICBpblNhZmVSYW5nZSxcbiAgICB0b051bWJlcixcbiAgICB0b1N0cmluZ1xufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlZ2VyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbiBcbi8qKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY29tbW9uIEFQSSBmb3IgZGVhbGluZyB3aXRoIGJpbmFyeSBkYXRhIHRoYXRcbiAgKiB3b3JrcyBmb3IgYm90aCBicm93c2VycyAodmlhIEFycmF5QnVmZmVyL0RhdGFWaWV3KSBhbmQgZm9yIE5vZGVKU1xuICAqKHZpYSBCdWZmZXIgQVBJKS5cbiAgKi9cblxubGV0IF9ub2RlID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcbi8qKlxuICAqIENvbW1vbiBiYXNlIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgbW9zdCBidWZmZXIgbWV0aG9kcy5cbiAgKiBCdWZmZXJzIGFyZSBzdGF0ZWZ1bCAtIHRoZXkgdHJhY2sgYSBjdXJyZW50IFwicG9zaXRpb25cIiwgdGhpcyBoZWxwcyBncmVhdGx5XG4gICogd2hlbiByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20gdGhlbSBpbmNyZW1lbnRhbGx5LiBZb3UgY2FuIGFsc28gaWdub3JlIHRoZVxuICAqIHN0YXRlZnVsIHJlYWQvd3JpdGUgbWV0aG9kcy5cbiAgKiByZWFkWFhYIGFuZCB3cml0ZVhYWC1tZXRob2RzIG1vdmUgdGhlIGlubmVyIHBvc2l0aW9uIG9mIHRoZSBidWZmZXIuXG4gICogcHV0WFhYIGFuZCBnZXRYWFgtbWV0aG9kcyBkbyBub3QuXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5jbGFzcyBCYXNlQnVmZmVyXG57XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBpbnN0YW5jZSB3aXRoIHRoZSBpbmplY3RlZCBzaXplLlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBzaXplXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoc2l6ZSkge1xuICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIHRoaXMubGVuZ3RoID0gc2l6ZTtcbiAgICAvLyBDYWxsaW5nIHRoZXNlIG91dCAtIHRoaXMgaXMgdGhlIHJlcXVpcmVkIFxuICAgIC8vIG1ldGhvZHMgYSBzdWJjbGFzcyBuZWVkcyB0byBpbXBsZW1lbnRcbiAgICBsZXQgZ2V0VUludDggPSBudWxsO1xuICAgIGxldCBnZXRJbnQ4ID0gbnVsbDtcbiAgICBsZXQgZ2V0RmxvYXQ2NCA9IG51bGw7XG4gICAgbGV0IGdldFNsaWNlID0gbnVsbDtcbiAgICBsZXQgcHV0RmxvYXQ2NCA9IG51bGw7XG4gICAgbGV0IHB1dFVJbnQ4ID0gbnVsbDtcbiAgICBsZXQgcHV0SW50OCA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG4gIGdldEludDE2IChwKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSAgICAgIDw8IDhcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG4gIGdldFVJbnQxNiAocCkge1xuICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHApICAgICA8PCA4XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwXG4gICAqL1xuICBnZXRJbnQzMiAocCkge1xuICAgIHJldHVybiB0aGlzLmdldEludDgocCkgICAgIDw8IDI0XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDEpIDw8IDE2XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDhcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG4gIGdldFVJbnQzMiAocCkge1xuICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHApICAgICA8PCAyNFxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNlxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA4XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwXG4gICAqL1xuICBnZXRJbnQ2NCAocCkge1xuICAgIHJldHVybiB0aGlzLmdldEludDgocCkgICAgICA8PCA1NlxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCA0OFxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA0MFxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAzKSA8PCAzMlxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyA0KSA8PCAyNFxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyA1KSA8PCAxNlxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyA2KSA8PCA4XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNsaWNlIG9mIHRoaXMgYnVmZmVyLiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBjb3B5IGFueSBkYXRhLFxuICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgKiBAcGFyYW0gc3RhcnRcbiAgICogQHBhcmFtIGxlbmd0aFxuICAgKi9cbiAgZ2V0U2xpY2UgKCBzdGFydCwgbGVuZ3RoICkge1xuICAgIHJldHVybiBuZXcgU2xpY2VCdWZmZXIoIHN0YXJ0LCBsZW5ndGgsIHRoaXMgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICBwdXRJbnQxNiAoIHAsIHZhbCApIHtcbiAgICB0aGlzLnB1dEludDgoICBwLCAgICAgdmFsID4+IDggKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMSwgdmFsICAgICAgJiAweEZGICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgcHV0VUludDE2ICggcCwgdmFsICkge1xuICAgIHRoaXMucHV0VUludDgoIHAsICAgICB2YWwgPj4gOCAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMSwgdmFsICAgICAgJiAweEZGICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgcHV0SW50MzIgKCBwLCB2YWwgKSB7XG4gICAgdGhpcy5wdXRJbnQ4KCAgcCwgICAgIHZhbCA+PiAyNCApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDIsIHZhbCA+PiA4ICAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMywgdmFsICAgICAgICYgMHhGRiApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHB1dFVJbnQzMiAoIHAsIHZhbCApIHtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwLCAgICAgdmFsID4+IDI0ICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAxLCB2YWwgPj4gMTYgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDIsIHZhbCA+PiA4ICAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMywgdmFsICAgICAgICYgMHhGRiApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHB1dEludDY0ICggcCwgdmFsICkge1xuICAgIHRoaXMucHV0SW50OCggIHAsIHZhbCA+PiA0OCApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAxLCB2YWwgPj4gNDIgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDIsIHZhbCA+PiAzNiAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMywgdmFsID4+IDMwICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyA0LCB2YWwgPj4gMjQgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDUsIHZhbCA+PiAxNiAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgNiwgdmFsID4+IDggICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyA3LCB2YWwgICAgICAgJiAweEZGICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBvc2l0aW9uXG4gICAqIEBwYXJhbSBvdGhlclxuICAgKi9cbiAgcHV0Qnl0ZXMgKCBwb3NpdGlvbiwgb3RoZXIgKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGVuZD1vdGhlci5yZW1haW5pbmcoKTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICB0aGlzLnB1dFVJbnQ4KCBwb3NpdGlvbiArIGksIG90aGVyLnJlYWRVSW50OCgpICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICovXG4gIHJlYWRVSW50OCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VUludDgoIHRoaXMuX3VwZGF0ZVBvcygxKSApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICovXG4gIHJlYWRJbnQ4ICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KCB0aGlzLl91cGRhdGVQb3MoMSkgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAqL1xuICByZWFkVUludDE2ICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVSW50MTYoIHRoaXMuX3VwZGF0ZVBvcygyKSApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICovXG4gIHJlYWRVSW50MzIgKCkge1xuICAgIHJldHVybiB0aGlzLmdldFVJbnQzMiggdGhpcy5fdXBkYXRlUG9zKDQpICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZEludDE2ICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbnQxNiggdGhpcy5fdXBkYXRlUG9zKDIpICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZEludDMyICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbnQzMiggdGhpcy5fdXBkYXRlUG9zKDQpICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZEludDY0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbnQzMiggdGhpcy5fdXBkYXRlUG9zKDgpICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZEZsb2F0NjQgKCkge1xuICAgIHJldHVybiB0aGlzLmdldEZsb2F0NjQoIHRoaXMuX3VwZGF0ZVBvcyg4KSApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICB3cml0ZVVJbnQ4ICggdmFsICkge1xuICAgIHRoaXMucHV0VUludDgoIHRoaXMuX3VwZGF0ZVBvcygxKSwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgd3JpdGVJbnQ4ICggdmFsICkge1xuICAgIHRoaXMucHV0SW50OCggdGhpcy5fdXBkYXRlUG9zKDEpLCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICB3cml0ZUludDE2ICggdmFsICkge1xuICAgIHRoaXMucHV0SW50MTYoIHRoaXMuX3VwZGF0ZVBvcygyKSwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgd3JpdGVJbnQzMiAoIHZhbCApIHtcbiAgICB0aGlzLnB1dEludDMyKCB0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHdyaXRlVUludDMyICggdmFsICkge1xuICAgIHRoaXMucHV0VUludDMyKCB0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHdyaXRlSW50NjQgKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRJbnQ2NCggdGhpcy5fdXBkYXRlUG9zKDgpLCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICB3cml0ZUZsb2F0NjQgKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRGbG9hdDY0KCB0aGlzLl91cGRhdGVQb3MoOCksIHZhbCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHdyaXRlQnl0ZXMgKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRCeXRlcyggdGhpcy5fdXBkYXRlUG9zKHZhbC5yZW1haW5pbmcoKSksIHZhbCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2xpY2Ugb2YgdGhpcyBidWZmZXIuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGNvcHkgYW55IGRhdGEsXG4gICAqIGJ1dCBzaW1wbHkgcHJvdmlkZXMgYSBzbGljZSB2aWV3IG9mIHRoaXMgYnVmZmVyXG4gICAqIEBwYXJhbSBsZW5ndGhcbiAgICovXG4gIHJlYWRTbGljZSAoIGxlbmd0aCApIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTbGljZSggdGhpcy5fdXBkYXRlUG9zKCBsZW5ndGggKSwgbGVuZ3RoICk7XG4gIH1cblxuICBfdXBkYXRlUG9zICggbGVuZ3RoICkge1xuICAgIGxldCBwID0gdGhpcy5wb3NpdGlvbjtcbiAgICB0aGlzLnBvc2l0aW9uICs9IGxlbmd0aDtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcmVtYW5pbmdcbiAgICovXG4gIHJlbWFpbmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gdGhpcy5wb3NpdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYXMgcmVtYW5pbmdcbiAgICovXG4gIGhhc1JlbWFpbmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVtYWluaW5nKCkgPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHBvc2l0aW9uIHN0YXRlXG4gICAqL1xuICByZXNldCAoKSB7XG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIgYW5kIGl0J3Mgc3RhdGUuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSArIFwiKCBwb3NpdGlvbj1cIit0aGlzLnBvc2l0aW9uK1wiIClcXG4gIFwiICsgdGhpcy50b0hleCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IEJ1ZmZlciBhcyBhIHN0cmluZ1xuICAgKi9cbiAgdG9IZXggKCkge1xuICAgIC8vIFRPRE8gc29tZXRoaW5nIGxpa2UgU3RyaW5nQnVpbGRlcj9cbiAgICBsZXQgb3V0ID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBoZXhCeXRlID0gdGhpcy5nZXRVSW50OChpKS50b1N0cmluZygxNik7XG4gICAgICBpZiggaGV4Qnl0ZS5sZW5ndGggPT0gMSApIHtcbiAgICAgICAgaGV4Qnl0ZSA9IFwiMFwiICsgaGV4Qnl0ZTtcbiAgICAgIH1cbiAgICAgIG91dCArPSBoZXhCeXRlICsgXCIgXCJcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2ljIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiB0aGF0IHNob3VsZCB3b3JrIGluIG1vc3QgYW55IG1vZGVybiBKUyBlbnYuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgSGVhcEJ1ZmZlciBleHRlbmRzIEJhc2VCdWZmZXIge1xuICBjb25zdHJ1Y3RvciAoYXJnKSB7XG4gICAgbGV0IGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyID8gYXJnIDogbmV3IEFycmF5QnVmZmVyKGFyZylcbiAgICBzdXBlcihidWZmZXIuYnl0ZUxlbmd0aCApO1xuICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgICB0aGlzLl92aWV3ID0gbmV3IERhdGFWaWV3KCB0aGlzLl9idWZmZXIgKTtcbiAgfVxuXG4gIHB1dFVJbnQ4ICggcG9zaXRpb24sIHZhbCApIHtcbiAgICB0aGlzLl92aWV3LnNldFVpbnQ4KHBvc2l0aW9uLCB2YWwpO1xuICB9XG5cbiAgZ2V0VUludDggKCBwb3NpdGlvbiApIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRVaW50OChwb3NpdGlvbik7XG4gIH1cblxuICBwdXRJbnQ4ICggcG9zaXRpb24sIHZhbCApIHtcbiAgICB0aGlzLl92aWV3LnNldEludDgocG9zaXRpb24sIHZhbCk7XG4gIH1cblxuICBnZXRJbnQ4ICggcG9zaXRpb24gKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0SW50OChwb3NpdGlvbik7XG4gIH1cblxuICBnZXRGbG9hdDY0ICggcG9zaXRpb24gKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0RmxvYXQ2NChwb3NpdGlvbik7XG4gIH1cblxuICBwdXRGbG9hdDY0ICggcG9zaXRpb24sIHZhbCApIHtcbiAgICB0aGlzLl92aWV3LnNldEZsb2F0NjQoIHBvc2l0aW9uLCB2YWwgKTtcbiAgfVxuXG4gIGdldFNsaWNlICggc3RhcnQsIGxlbmd0aCApIHtcbiAgICBpZiggdGhpcy5fYnVmZmVyLnNsaWNlICkge1xuICAgICAgcmV0dXJuIG5ldyBIZWFwQnVmZmVyKCB0aGlzLl9idWZmZXIuc2xpY2UoIHN0YXJ0LCBzdGFydCArIGxlbmd0aCApICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNvbWUgcGxhdGZvcm1zIChlZy4gcGhhbnRvbWpzKSBkb24ndCBzdXBwb3J0IHNsaWNlLCBzbyBmYWxsIGJhY2sgdG8gYSBjb3B5XG4gICAgICAvLyBXZSBkbyB0aGlzIHJhdGhlciB0aGFuIHJldHVybiBhIFNsaWNlQnVmZmVyLCBiZWNhdXNlIHNsaWNlQnVmZmVyIGNhbm5vdFxuICAgICAgLy8gYmUgcGFzc2VkIHRvIG5hdGl2ZSBuZXR3b3JrIHdyaXRlIG9wcyBldGMgLSB3ZSBuZWVkIEFycmF5QnVmZmVyIGZvciB0aGF0XG4gICAgICBsZXQgY29weSA9IG5ldyBIZWFwQnVmZmVyKGxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvcHkucHV0VUludDgoIGksIHRoaXMuZ2V0VUludDgoIGkgKyBzdGFydCApICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29weTtcbiAgICB9XG4gIH1cblxuICAvKiogXG4gICAqIFNwZWNpZmljIHRvIEhlYXBCdWZmZXIsIHRoaXMgZ2V0cyBhIERhdGFWaWV3IGZyb20gdGhlXG4gICAqIGN1cnJlbnQgcG9zaXRpb24gYW5kIG9mIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLiBcbiAgICovXG4gIHJlYWRWaWV3ICggbGVuZ3RoICkge1xuICAgIHJldHVybiBuZXcgRGF0YVZpZXcoIHRoaXMuX2J1ZmZlciwgdGhpcy5fdXBkYXRlUG9zKGxlbmd0aCksIGxlbmd0aCApO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHZpZXcgYXMgc2xpY2Ugb2YgYW5vdGhlciBidWZmZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgU2xpY2VCdWZmZXIgZXh0ZW5kcyBCYXNlQnVmZmVyIHtcbiAgY29uc3RydWN0b3IoIHN0YXJ0LCBsZW5ndGgsIGlubmVyICkge1xuICAgIHN1cGVyKGxlbmd0aCk7XG4gICAgdGhpcy5fc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLl9pbm5lciA9IGlubmVyO1xuICB9XG5cbiAgcHV0VUludDggKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX2lubmVyLnB1dFVJbnQ4KCB0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwgKTtcbiAgfVxuXG4gIGdldFVJbnQ4ICggcG9zaXRpb24gKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldFVJbnQ4KCB0aGlzLl9zdGFydCArIHBvc2l0aW9uICk7XG4gIH1cblxuICBwdXRJbnQ4ICggcG9zaXRpb24sIHZhbCApIHtcbiAgICB0aGlzLl9pbm5lci5wdXRJbnQ4KCB0aGlzLl9zdGFydCArIHBvc2l0aW9uLCB2YWwgKTtcbiAgfVxuXG4gIHB1dEZsb2F0NjQgKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX2lubmVyLnB1dEZsb2F0NjQoIHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24sIHZhbCApO1xuICB9XG5cbiAgZ2V0SW50OCAoIHBvc2l0aW9uICkge1xuICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRJbnQ4KCB0aGlzLl9zdGFydCArIHBvc2l0aW9uICk7XG4gIH1cblxuICBnZXRGbG9hdDY0IChwb3NpdGlvbikge1xuICAgIHJldHVybiB0aGlzLl9pbm5lci5nZXRGbG9hdDY0KCB0aGlzLl9zdGFydCArIHBvc2l0aW9uICk7XG4gIH1cbn1cblxuLyoqXG4gKiBCdWZmZXIgdGhhdCBjb21iaW5lcyBtdWx0aXBsZSBidWZmZXJzLCBleHBvc2luZyB0aGVtIGFzIG9uZSBzaW5nbGUgYnVmZmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbmNsYXNzIENvbWJpbmVkQnVmZmVyIGV4dGVuZHMgQmFzZUJ1ZmZlciB7XG4gIGNvbnN0cnVjdG9yIChidWZmZXJzKSB7XG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gYnVmZmVyc1tpXS5sZW5ndGg7XG4gICAgfVxuICAgIHN1cGVyKCBsZW5ndGggKTtcbiAgICB0aGlzLl9idWZmZXJzID0gYnVmZmVycztcbiAgfVxuXG4gIGdldFVJbnQ4ICggcG9zaXRpb24gKSB7XG4gICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGJ1ZmZlciA9IHRoaXMuX2J1ZmZlcnNbaV07XG4gICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgIGlmKCBwb3NpdGlvbiA+PSBidWZmZXIubGVuZ3RoICkge1xuICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5nZXRVSW50OChwb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0SW50OCAoIHBvc2l0aW9uICkge1xuICAgIC8vIFN1cmVseSB0aGVyZSdzIGEgZmFzdGVyIHdheSB0byBkbyB0aGlzLi4gc29tZSBzb3J0IG9mIGxvb2t1cCB0YWJsZSB0aGluZz9cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2J1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBidWZmZXIgPSB0aGlzLl9idWZmZXJzW2ldO1xuICAgICAgLy8gSWYgdGhlIHBvc2l0aW9uIGlzIG5vdCBpbiB0aGUgY3VycmVudCBidWZmZXIsIHNraXAgdGhlIGN1cnJlbnQgYnVmZmVyXG4gICAgICBpZiggcG9zaXRpb24gPj0gYnVmZmVyLmxlbmd0aCApIHtcbiAgICAgICAgcG9zaXRpb24gLT0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBidWZmZXIuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RmxvYXQ2NCAoIHBvc2l0aW9uICkge1xuICAgIC8vIEF0IHNvbWUgcG9pbnQsIGEgbW9yZSBlZmZpY2llbnQgaW1wbC4gRm9yIG5vdywgd2UgY29weSB0aGUgOCBieXRlc1xuICAgIC8vIHdlIHdhbnQgdG8gcmVhZCBhbmQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybSBpbXBsIG9mIElFRUUgNzU0LlxuICAgIGxldCBiID0gYWxsb2MoOCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHsgYi5wdXRVSW50OChpLCB0aGlzLmdldFVJbnQ4KCBwb3NpdGlvbiArIGkgKSk7IH07XG4gICAgcmV0dXJuIGIuZ2V0RmxvYXQ2NCgwKTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1ZmZlciB1c2VkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudFxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbmNsYXNzIE5vZGVCdWZmZXIgZXh0ZW5kcyBCYXNlQnVmZmVyIHtcbiAgY29uc3RydWN0b3IoYXJnKSB7XG4gICAgbGV0IGJ1ZmZlciA9IGFyZyBpbnN0YW5jZW9mIF9ub2RlLkJ1ZmZlciA/IGFyZyA6IG5ldyBfbm9kZS5CdWZmZXIoYXJnKTtcbiAgICBzdXBlcihidWZmZXIubGVuZ3RoKTtcbiAgICB0aGlzLl9idWZmZXIgPSBidWZmZXI7XG4gIH1cblxuICBnZXRVSW50OCAocG9zaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWRVSW50OCggcG9zaXRpb24gKTtcbiAgfVxuXG4gIGdldEludDggKHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkSW50OCggcG9zaXRpb24gKTtcbiAgfVxuXG4gIGdldEZsb2F0NjQgKHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkRG91YmxlQkUocG9zaXRpb24pO1xuICB9XG5cbiAgcHV0VUludDggKHBvc2l0aW9uLCB2YWwpIHtcbiAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCggdmFsLCBwb3NpdGlvbiApO1xuICB9XG5cbiAgcHV0SW50OCAocG9zaXRpb24sIHZhbCkge1xuICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgoIHZhbCwgcG9zaXRpb24gKTtcbiAgfVxuXG4gIHB1dEZsb2F0NjQgKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX2J1ZmZlci53cml0ZURvdWJsZUJFKCB2YWwsIHBvc2l0aW9uICk7XG4gIH1cblxuICBwdXRCeXRlcyAoIHBvc2l0aW9uLCB2YWwgKSB7XG4gICAgaWYoIHZhbCBpbnN0YW5jZW9mIE5vZGVCdWZmZXIgKSB7XG4gICAgICBsZXQgYnl0ZXNUb0NvcHkgPSBNYXRoLm1pbiggdmFsLmxlbmd0aCAtIHZhbC5wb3NpdGlvbiwgdGhpcy5sZW5ndGggLSBwb3NpdGlvbiApO1xuICAgICAgdmFsLl9idWZmZXIuY29weShcbiAgICAgICAgdGhpcy5fYnVmZmVyLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdmFsLnBvc2l0aW9uLFxuICAgICAgICB2YWwucG9zaXRpb24gKyBieXRlc1RvQ29weSApO1xuICAgICAgdmFsLnBvc2l0aW9uICs9IGJ5dGVzVG9Db3B5O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdXBlci5wdXRCeXRlcyhwb3NpdGlvbiwgdmFsKTtcbiAgICB9XG4gIH07XG5cbiAgZ2V0U2xpY2UgKCBzdGFydCwgbGVuZ3RoICkge1xuICAgIHJldHVybiBuZXcgTm9kZUJ1ZmZlciggdGhpcy5fYnVmZmVyLnNsaWNlKCBzdGFydCwgc3RhcnQgKyBsZW5ndGggKSApO1xuICB9XG59XG5cbi8vIFVzZSBIZWFwQnVmZmVyIGJ5IGRlZmF1bHQsIHVubGVzcyBCdWZmZXIgQVBJIGlzIGF2YWlsYWJsZSwgc2VlIGJlbG93XG5sZXQgX0RlZmF1bHRCdWZmZXIgPSBIZWFwQnVmZmVyO1xudHJ5IHtcbiAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB3ZSdyZSBub3QgcnVubmluZyBvbiBOb2RlSlMgb3IgZXF1aXZhbGVudFxuICByZXF1aXJlLnJlc29sdmUoXCJidWZmZXJcIik7XG4gIF9EZWZhdWx0QnVmZmVyID0gTm9kZUJ1ZmZlcjtcbn0gY2F0Y2goZSkge31cblxuLyoqXG4gKiBBbGxvY2F0ZSBhIG5ldyBidWZmZXIgdXNpbmcgd2hhdGV2ZXIgbWVjaGFuaXNtIGlzIG1vc3Qgc2Vuc2libGUgZm9yIHRoZVxuICogY3VycmVudCBwbGF0Zm9ybVxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge0ludGVnZXJ9IHNpemVcbiAqIEByZXR1cm4gbmV3IGJ1ZmZlclxuICovXG5mdW5jdGlvbiBhbGxvYyAoc2l6ZSkge1xuICByZXR1cm4gbmV3IF9EZWZhdWx0QnVmZmVyKHNpemUpO1xufVxuXG5leHBvcnQge1xuICBCYXNlQnVmZmVyLFxuICBIZWFwQnVmZmVyLFxuICBTbGljZUJ1ZmZlcixcbiAgQ29tYmluZWRCdWZmZXIsXG4gIE5vZGVCdWZmZXIsXG4gIGFsbG9jXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21iaW5lZEJ1ZmZlcn0gZnJvbSAnLi9idWYnO1xuY29uc3Qgb2JzZXJ2ZXIgPSB7XG4gIGluc3RhbmNlOiBudWxsLFxuICB1cGRhdGVJbnN0YW5jZTogKGluc3RhbmNlKSA9PiB7XG4gICAgb2JzZXJ2ZXIuaW5zdGFuY2UgPSBpbnN0YW5jZVxuICB9XG59O1xuXG5jbGFzcyBEdW1teUNoYW5uZWwge1xuICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgdGhpcy53cml0dGVuID0gW107XG4gIH1cbiAgaXNFbmNyeXB0ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHdyaXRlKCBidWYgKSB7XG4gICAgdGhpcy53cml0dGVuLnB1c2goYnVmKTtcbiAgICBvYnNlcnZlci51cGRhdGVJbnN0YW5jZSh0aGlzKTtcbiAgfVxuICB0b0hleCgpIHtcbiAgICB2YXIgb3V0ID0gXCJcIjtcbiAgICBmb3IoIHZhciBpPTA7IGk8dGhpcy53cml0dGVuLmxlbmd0aDsgaSsrICkge1xuICAgICAgb3V0ICs9IHRoaXMud3JpdHRlbltpXS50b0hleCgpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIHRvQnVmZmVyICgpIHtcbiAgICByZXR1cm4gbmV3IENvbWJpbmVkQnVmZmVyKCB0aGlzLndyaXR0ZW4gKTtcbiAgfVxufVxuXG5jb25zdCBjaGFubmVsID0gRHVtbXlDaGFubmVsO1xuXG5leHBvcnQgeyBjaGFubmVsLCBvYnNlcnZlciB9XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBuZXQgZnJvbSBcIm5ldFwiO1xuaW1wb3J0IHRscyBmcm9tIFwidGxzXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtFT0x9IGZyb20gXCJvc1wiO1xuaW1wb3J0IHtOb2RlQnVmZmVyfSBmcm9tIFwiLi9idWZcIjtcbmltcG9ydCB7RU5DUllQVElPTl9PRkYsIGlzRW1wdHlPYmplY3RPck51bGx9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7bmV3RXJyb3IsIFNFU1NJT05fRVhQSVJFRH0gZnJvbSBcIi4vLi4vZXJyb3JcIjtcblxubGV0IF9DT05ORUNUSU9OX0lER0VOID0gMDtcblxuZnVuY3Rpb24gdXNlckhvbWUoKSB7XG4gIC8vIEZvciBzb21lIHJlYXNvbiwgQnJvd3NlcmlmeSBjaG9rZXMgb24gc2hpbW1pbmcgYHByb2Nlc3NgLiBUaGlzIGNvZGVcbiAgLy8gd2lsbCBuZXZlciBnZXQgZXhlY3V0ZWQgb24gdGhlIGJyb3dzZXIgYW55d2F5LCB0byBqdXN0IGhhY2sgYXJvdW5kIGl0XG4gIGxldCBnZXRPdXRPZkhlcmVCcm93c2VyaWZ5WW91cmVEcnVuayA9IHJlcXVpcmU7XG4gIGxldCBwcm9jZXNzID0gZ2V0T3V0T2ZIZXJlQnJvd3NlcmlmeVlvdXJlRHJ1bmsoJ3Byb2Nlc3MnKTtcblxuICByZXR1cm4gcHJvY2Vzcy5lbnZbKHByb2Nlc3MucGxhdGZvcm0gPT0gJ3dpbjMyJykgPyAnVVNFUlBST0ZJTEUnIDogJ0hPTUUnXTtcbn1cblxuZnVuY3Rpb24gbWtGdWxsUGF0aChwYXRoVG9DcmVhdGUpIHtcbiAgdHJ5IHtcbiAgICBmcy5ta2RpclN5bmMoIHBhdGhUb0NyZWF0ZSApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYoZS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgLy8gQ3JlYXRlIHBhcmVudCBkaXJcbiAgICAgIG1rRnVsbFBhdGgocGF0aC5kaXJuYW1lKCBwYXRoVG9DcmVhdGUgKSk7XG4gICAgICAvLyBBbmQgbm93IHRyeSBhZ2FpblxuICAgICAgbWtGdWxsUGF0aCggcGF0aFRvQ3JlYXRlICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlLmNvZGUgPT09ICdFRVhJU1QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZpbmdlcnByaW50KCBzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIGNiICkge1xuICB0cnkge1xuICAgIGZzLmFjY2Vzc1N5bmMoIGtub3duSG9zdHNQYXRoICk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJldHVybiBjYihudWxsKVxuICB9XG4gIGxldCBmb3VuZCA9IGZhbHNlO1xuICByZXF1aXJlKCdyZWFkbGluZScpLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgaW5wdXQ6IGZzLmNyZWF0ZVJlYWRTdHJlYW0oa25vd25Ib3N0c1BhdGgpXG4gIH0pLm9uKCdsaW5lJywgKGxpbmUpICA9PiB7XG4gICAgaWYoICFmb3VuZCAmJiBsaW5lLnN0YXJ0c1dpdGgoIHNlcnZlcklkICkpIHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIGNiKCBsaW5lLnNwbGl0KFwiIFwiKVsxXSApO1xuICAgIH1cbiAgfSkub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmKCFmb3VuZCkge1xuICAgICAgY2IobnVsbCk7XG4gICAgfVxuICB9KTtcbn1cblxuY29uc3QgX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmcgPSB7fTtcbmZ1bmN0aW9uIHN0b3JlRmluZ2VycHJpbnQoIHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgZmluZ2VycHJpbnQsIGNiICkge1xuICAvLyB3ZSBjaGVjayBpZiB0aGUgc2VydmVySWQgaGFzIGJlZW4gYXBwZW5kZWRcbiAgaWYoISFfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZ1tzZXJ2ZXJJZF0pe1xuICAgIC8vIGlmIGl0IGhhcywgd2UgaWdub3JlIGl0XG4gICAgcmV0dXJuIGNiKG51bGwpO1xuICB9XG5cbiAgLy8gd2UgbWFrZSB0aGUgbGluZSBhcyBhcHBlbmRlZFxuICAvLyAoIDEgaXMgbW9yZSBlZmZpY2llbnQgdG8gc3RvcmUgdGhhbiB0cnVlIGJlY2F1c2UgdHJ1ZSBpcyBhbiBvZGRiYWxsIClcbiAgX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmdbc2VydmVySWRdID0gMTtcblxuICAvLyBJZiBmaWxlIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBmdWxsIHBhdGggdG8gaXRcbiAgdHJ5IHtcbiAgICBmcy5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG1rRnVsbFBhdGgocGF0aC5kaXJuYW1lKGtub3duSG9zdHNQYXRoKSk7XG4gIH1cblxuICBmcy5hcHBlbmRGaWxlKGtub3duSG9zdHNQYXRoLCBzZXJ2ZXJJZCArIFwiIFwiICsgZmluZ2VycHJpbnQgKyBFT0wsIFwidXRmOFwiLCAoZXJyKSA9PiB7XG4gICAgZGVsZXRlIF9sb2NrRmluZ2VycHJpbnRGcm9tQXBwZW5kaW5nW3NlcnZlcklkXTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gY2IoZXJyKTtcbiAgfSk7XG59XG5cbmNvbnN0IFRydXN0U3RyYXRlZ3kgPSB7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaW5jZSB2ZXJzaW9uIDEuMC4gV2lsbCBiZSBkZWxldGVkIGluIGEgZnV0dXJlIHZlcnNpb24uIHtAbGluayAjVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVN9LlxuICAgKi9cbiAgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFUzogZnVuY3Rpb24oIG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlICkge1xuICAgIGNvbnNvbGUubG9nKFwiYFRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYXMgb3B0aW9uIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBcIiArXG4gICAgICBcInRoZSBkcml2ZXIuIFBsZWFzZSB1c2UgYFRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTYCBpbnN0ZWFkLlwiKTtcbiAgICByZXR1cm4gVHJ1c3RTdHJhdGVneS5UUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyhvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7XG4gIH0sXG4gIFRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTIDogZnVuY3Rpb24oIG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlICkge1xuICAgIGlmKCAhb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzIHx8IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5sZW5ndGggPT0gMCApIHtcbiAgICAgIG9uRmFpbHVyZShuZXdFcnJvcihcIllvdSBhcmUgdXNpbmcgVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgYXMgdGhlIG1ldGhvZCBcIiArXG4gICAgICAgIFwidG8gdmVyaWZ5IHRydXN0IGZvciBlbmNyeXB0ZWQgIGNvbm5lY3Rpb25zLCBidXQgaGF2ZSBub3QgY29uZmlndXJlZCBhbnkgXCIgK1xuICAgICAgICBcInRydXN0ZWRDZXJ0aWZpY2F0ZXMuIFlvdSAgbXVzdCBzcGVjaWZ5IHRoZSBwYXRoIHRvIGF0IGxlYXN0IG9uZSB0cnVzdGVkIFwiICtcbiAgICAgICAgXCJYLjUwOSBjZXJ0aWZpY2F0ZSBmb3IgdGhpcyB0byB3b3JrLiBUd28gb3RoZXIgYWx0ZXJuYXRpdmVzIGlzIHRvIHVzZSBcIiArXG4gICAgICAgIFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFUyBvciB0byBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBlbmNyeXB0ZWQ9XFxcIlwiICsgRU5DUllQVElPTl9PRkYgKyBcIlxcXCJcIiArXG4gICAgICAgIFwiaW4geW91ciBkcml2ZXIgY29uZmlndXJhdGlvbi5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB0bHNPcHRzID0ge1xuICAgICAgY2E6IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5tYXAoKGYpID0+IGZzLnJlYWRGaWxlU3luYyhmKSksXG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IGNoZWNrIGZvciB0aGlzIGluIHRoZSBjb25uZWN0IGNhbGxiYWNrLCB0byBnaXZlXG4gICAgICAvLyBhIG1vcmUgaGVscGZ1bCBlcnJvciB0byB0aGUgdXNlclxuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICBsZXQgc29ja2V0ID0gdGxzLmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIHRsc09wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc29ja2V0LmF1dGhvcml6ZWQpIHtcbiAgICAgICAgb25GYWlsdXJlKG5ld0Vycm9yKFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB0cnVzdGVkLiBJZiB5b3UgdHJ1c3QgdGhlIGRhdGFiYXNlIHlvdSBhcmUgY29ubmVjdGluZyB0bywgYWRkXCIgK1xuICAgICAgICAgIFwiIHRoZSBzaWduaW5nIGNlcnRpZmljYXRlLCBvciB0aGUgc2VydmVyIGNlcnRpZmljYXRlLCB0byB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZXMgdHJ1c3RlZCBieSB0aGlzIGRyaXZlclwiICtcbiAgICAgICAgICBcIiB1c2luZyBgbmVvNGoudjEuZHJpdmVyKC4uLCB7IHRydXN0ZWRDZXJ0aWZpY2F0ZXM6WydwYXRoL3RvL2NlcnRpZmljYXRlLmNydCddfSkuIFRoaXMgXCIgK1xuICAgICAgICAgIFwiIGlzIGEgc2VjdXJpdHkgbWVhc3VyZSB0byBwcm90ZWN0IGFnYWluc3QgbWFuLWluLXRoZS1taWRkbGUgYXR0YWNrcy4gSWYgeW91IGFyZSBqdXN0IHRyeWluZyBcIiArXG4gICAgICAgICAgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBgZW5jcnlwdGVkPVxcXCJcIiArIEVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYFwiICtcbiAgICAgICAgICBcIiBpbiB0aGUgZHJpdmVyIG9wdGlvbnMuIFNvY2tldCByZXNwb25kZWQgd2l0aDogXCIgKyBzb2NrZXQuYXV0aG9yaXphdGlvbkVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuICBUUlVTVF9TWVNURU1fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyA6IGZ1bmN0aW9uKCBvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSApIHtcblxuICAgIGxldCB0bHNPcHRzID0ge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSBjaGVjayBmb3IgdGhpcyBpbiB0aGUgY29ubmVjdCBjYWxsYmFjaywgdG8gZ2l2ZVxuICAgICAgLy8gYSBtb3JlIGhlbHBmdWwgZXJyb3IgdG8gdGhlIHVzZXJcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuICAgIGxldCBzb2NrZXQgPSB0bHMuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzb2NrZXQuYXV0aG9yaXplZCkge1xuICAgICAgICBvbkZhaWx1cmUobmV3RXJyb3IoXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuIElmIHlvdSB0cnVzdCB0aGUgZGF0YWJhc2UgeW91IGFyZSBjb25uZWN0aW5nIHRvLCB1c2UgXCIgK1xuICAgICAgICAgIFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgYW5kIGFkZFwiICtcbiAgICAgICAgICBcIiB0aGUgc2lnbmluZyBjZXJ0aWZpY2F0ZSwgb3IgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSwgdG8gdGhlIGxpc3Qgb2YgY2VydGlmaWNhdGVzIHRydXN0ZWQgYnkgdGhpcyBkcml2ZXJcIiArXG4gICAgICAgICAgXCIgdXNpbmcgYG5lbzRqLnYxLmRyaXZlciguLiwgeyB0cnVzdGVkQ2VydGlmaWNhdGVzOlsncGF0aC90by9jZXJ0aWZpY2F0ZS5jcnQnXX0pLiBUaGlzIFwiICtcbiAgICAgICAgICBcIiBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgdG8gcHJvdGVjdCBhZ2FpbnN0IG1hbi1pbi10aGUtbWlkZGxlIGF0dGFja3MuIElmIHlvdSBhcmUganVzdCB0cnlpbmcgXCIgK1xuICAgICAgICAgIFwiIE5lbzRqIG91dCBhbmQgYXJlIG5vdCBjb25jZXJuZWQgYWJvdXQgZW5jcnlwdGlvbiwgc2ltcGx5IGRpc2FibGUgaXQgdXNpbmcgYGVuY3J5cHRlZD1cXFwiXCIgKyBFTkNSWVBUSU9OX09GRiArIFwiXFxcImBcIiArXG4gICAgICAgICAgXCIgaW4gdGhlIGRyaXZlciBvcHRpb25zLiBTb2NrZXQgcmVzcG9uZGVkIHdpdGg6IFwiICsgc29ja2V0LmF1dGhvcml6YXRpb25FcnJvcikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGluIDEuMSBpbiBmYXZvdXIgb2Yge0BsaW5rICNUUlVTVF9BTExfQ0VSVElGSUNBVEVTfS4gV2lsbCBiZSBkZWxldGVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gICAqL1xuICBUUlVTVF9PTl9GSVJTVF9VU0UgOiBmdW5jdGlvbiggb3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUgKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImBUUlVTVF9PTl9GSVJTVF9VU0VgIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYXMgb3B0aW9uIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBcIiArXG4gICAgICAgICAgXCJ0aGUgZHJpdmVyLiBQbGVhc2UgdXNlIGBUUlVTVF9BTExfQ0VSVElGSUNBVEVTYCBpbnN0ZWFkLlwiKTtcblxuICAgIGxldCB0bHNPcHRzID0ge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlIGFnYWluc3Qga25vd25faG9zdHNcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgbGV0IHNvY2tldCA9IHRscy5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc2VydmVyQ2VydCA9IHNvY2tldC5nZXRQZWVyQ2VydGlmaWNhdGUoLypyYXc9Ki90cnVlKTtcblxuICAgICAgaWYoICFzZXJ2ZXJDZXJ0LnJhdyApIHtcbiAgICAgICAgLy8gSWYgYHJhd2AgaXMgbm90IGF2YWlsYWJsZSwgd2UncmUgb24gYW4gb2xkIHZlcnNpb24gb2YgTm9kZUpTLCBhbmRcbiAgICAgICAgLy8gdGhlIHJhdyBjZXJ0IGNhbm5vdCBiZSBhY2Nlc3NlZCAob3IsIGF0IGxlYXN0IEkgY291bGRuJ3QgZmluZCBhIHdheSB0bylcbiAgICAgICAgLy8gdGhlcmVmb3JlLCB3ZSBjYW4ndCBnZW5lcmF0ZSBhIFNIQTUxMiBmaW5nZXJwcmludCwgbWVhbmluZyB3ZSBjYW4ndFxuICAgICAgICAvLyBkbyBUT0ZVLCBhbmQgdGhlIHNhZmUgYXBwcm9hY2ggaXMgdG8gZmFpbC5cbiAgICAgICAgb25GYWlsdXJlKG5ld0Vycm9yKFwiWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgTm9kZUpTIHRoYXQgZG9lcyBub3QgXCIgK1xuICAgICAgICAgIFwic3VwcG9ydCB0cnVzdC1vbi1maXJzdCB1c2UgZW5jcnlwdGlvbi4gWW91IGNhbiBlaXRoZXIgdXBncmFkZSBOb2RlSlMgdG8gXCIgK1xuICAgICAgICAgIFwiYSBuZXdlciB2ZXJzaW9uLCB1c2UgYHRydXN0OlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTYCBpbiB5b3VyIGRyaXZlciBcIiArXG4gICAgICAgICAgXCJjb25maWcgaW5zdGVhZCwgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIHVzaW5nIGBlbmNyeXB0ZWQ6XFxcIlwiICsgRU5DUllQVElPTl9PRkYrIFwiXFxcImAuXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgc2VydmVyRmluZ2VycHJpbnQgPSByZXF1aXJlKCdjcnlwdG8nKS5jcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoc2VydmVyQ2VydC5yYXcpLmRpZ2VzdChcImhleFwiKTtcbiAgICAgIGxldCBrbm93bkhvc3RzUGF0aCA9IG9wdHMua25vd25Ib3N0cyB8fCBwYXRoLmpvaW4odXNlckhvbWUoKSwgXCIubmVvNGpcIiwgXCJrbm93bl9ob3N0c1wiKTtcbiAgICAgIGxldCBzZXJ2ZXJJZCA9IG9wdHMuaG9zdCArIFwiOlwiICsgb3B0cy5wb3J0O1xuXG4gICAgICBsb2FkRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCAoa25vd25GaW5nZXJwcmludCkgPT4ge1xuICAgICAgICBpZigga25vd25GaW5nZXJwcmludCA9PT0gc2VydmVyRmluZ2VycHJpbnQgKSB7XG4gICAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICAgIH0gZWxzZSBpZigga25vd25GaW5nZXJwcmludCA9PSBudWxsICkge1xuICAgICAgICAgIHN0b3JlRmluZ2VycHJpbnQoIHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgc2VydmVyRmluZ2VycHJpbnQsIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9uRmFpbHVyZShlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9uU3VjY2VzcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uRmFpbHVyZShuZXdFcnJvcihcIkRhdGFiYXNlIGVuY3J5cHRpb24gY2VydGlmaWNhdGUgaGFzIGNoYW5nZWQsIGFuZCBubyBsb25nZXIgXCIgK1xuICAgICAgICAgICAgXCJtYXRjaGVzIHRoZSBjZXJ0aWZpY2F0ZSBzdG9yZWQgZm9yIFwiICsgc2VydmVySWQgKyBcIiBpbiBgXCIgKyBrbm93bkhvc3RzUGF0aCArXG4gICAgICAgICAgICBcImAuIEFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbiwgdGhpcyBkcml2ZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSB0cnVzdCB0aGUgbmV3IFwiICtcbiAgICAgICAgICAgIFwiY2VydGlmaWNhdGUsIGJlY2F1c2UgZG9pbmcgc28gd291bGQgYWxsb3cgYW4gYXR0YWNrZXIgdG8gcHJldGVuZCB0byBiZSB0aGUgTmVvNGogXCIgK1xuICAgICAgICAgICAgXCJpbnN0YW5jZSB3ZSB3YW50IHRvIGNvbm5lY3QgdG8uIFRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZCBieSB0aGUgc2VydmVyIGxvb2tzIGxpa2U6IFwiICtcbiAgICAgICAgICAgIHNlcnZlckNlcnQgKyBcIi4gSWYgeW91IHRydXN0IHRoYXQgdGhpcyBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCwgc2ltcGx5IHJlbW92ZSB0aGUgbGluZSBcIiArXG4gICAgICAgICAgICBcInN0YXJ0aW5nIHdpdGggXCIgKyBzZXJ2ZXJJZCArIFwiIGluIGBcIiArIGtub3duSG9zdHNQYXRoICsgXCJgLCBhbmQgdGhlIGRyaXZlciB3aWxsIFwiICtcbiAgICAgICAgICAgIFwidXBkYXRlIHRoZSBmaWxlIHdpdGggdGhlIG5ldyBjZXJ0aWZpY2F0ZS4gWW91IGNhbiBjb25maWd1cmUgd2hpY2ggZmlsZSB0aGUgZHJpdmVyIFwiICtcbiAgICAgICAgICAgIFwic2hvdWxkIHVzZSB0byBzdG9yZSB0aGlzIGluZm9ybWF0aW9uIGJ5IHNldHRpbmcgYGtub3duSG9zdHNgIHRvIGFub3RoZXIgcGF0aCBpbiBcIiArXG4gICAgICAgICAgICBcInlvdXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24gLSBhbmQgeW91IGNhbiBkaXNhYmxlIGVuY3J5cHRpb24gdGhlcmUgYXMgd2VsbCB1c2luZyBcIiArXG4gICAgICAgICAgICBcImBlbmNyeXB0ZWQ6XFxcIlwiICsgRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgLlwiKSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfSxcblxuICBUUlVTVF9BTExfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiAob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcbiAgICBjb25zdCB0bHNPcHRzID0ge1xuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG4gICAgY29uc3Qgc29ja2V0ID0gdGxzLmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIHRsc09wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlID0gc29ja2V0LmdldFBlZXJDZXJ0aWZpY2F0ZSgpO1xuICAgICAgaWYgKGlzRW1wdHlPYmplY3RPck51bGwoY2VydGlmaWNhdGUpKSB7XG4gICAgICAgIG9uRmFpbHVyZShuZXdFcnJvcihcIlNlY3VyZSBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsIGJ1dCBzZXJ2ZXIgZGlkIG5vdCByZXR1cm4gYW55IHZhbGlkIFwiICtcbiAgICAgICAgICAgIFwiY2VydGlmaWNhdGVzLiBTdWNoIGNvbm5lY3Rpb24gY2FuIG5vdCBiZSB0cnVzdGVkLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICtcbiAgICAgICAgICAgIFwiIE5lbzRqIG91dCBhbmQgYXJlIG5vdCBjb25jZXJuZWQgYWJvdXQgZW5jcnlwdGlvbiwgc2ltcGx5IGRpc2FibGUgaXQgdXNpbmcgXCIgK1xuICAgICAgICAgICAgXCJgZW5jcnlwdGVkPVxcXCJcIiArIEVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYCBpbiB0aGUgZHJpdmVyIG9wdGlvbnMuIFwiICtcbiAgICAgICAgICAgIFwiU29ja2V0IHJlc3BvbmRlZCB3aXRoOiBcIiArIHNvY2tldC5hdXRob3JpemF0aW9uRXJyb3IpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbm5lY3QoIG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlPSgoKT0+bnVsbCkgKSB7XG4gIC8vc3RpbGwgYWxsb3cgYm9vbGVhbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgaWYgKG9wdHMuZW5jcnlwdGVkID09PSBmYWxzZSB8fCBvcHRzLmVuY3J5cHRlZCA9PT0gRU5DUllQVElPTl9PRkYpIHtcbiAgICB2YXIgY29ubiA9IG5ldC5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCBvblN1Y2Nlc3MpO1xuICAgIGNvbm4ub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gY29ubjtcbiAgfSBlbHNlIGlmKCBUcnVzdFN0cmF0ZWd5W29wdHMudHJ1c3RdKSB7XG4gICAgcmV0dXJuIFRydXN0U3RyYXRlZ3lbb3B0cy50cnVzdF0ob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpO1xuICB9IGVsc2Uge1xuICAgIG9uRmFpbHVyZShuZXdFcnJvcihcIlVua25vd24gdHJ1c3Qgc3RyYXRlZ3k6IFwiICsgb3B0cy50cnVzdCArIFwiLiBQbGVhc2UgdXNlIGVpdGhlciBcIiArXG4gICAgICBcInRydXN0OidUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUycgb3IgdHJ1c3Q6J1RSVVNUX0FMTF9DRVJUSUZJQ0FURVMnIGluIHlvdXIgZHJpdmVyIFwiICtcbiAgICAgIFwiY29uZmlndXJhdGlvbi4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArXG4gICAgICBcImBlbmNyeXB0ZWQ6XFxcIlwiICsgRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgLiBUaGVyZSBpcyBubyBtZWNoYW5pc20gdG8gdXNlIGVuY3J5cHRpb24gd2l0aG91dCB0cnVzdCB2ZXJpZmljYXRpb24sIFwiICtcbiAgICAgIFwiYmVjYXVzZSB0aGlzIGluY3VycyB0aGUgb3ZlcmhlYWQgb2YgZW5jcnlwdGlvbiB3aXRob3V0IGltcHJvdmluZyBzZWN1cml0eS4gSWYgXCIgK1xuICAgICAgXCJ0aGUgZHJpdmVyIGRvZXMgbm90IHZlcmlmeSB0aGF0IHRoZSBwZWVyIGl0IGlzIGNvbm5lY3RlZCB0byBpcyByZWFsbHkgTmVvNGosIGl0IFwiICtcbiAgICAgIFwiaXMgdmVyeSBlYXN5IGZvciBhbiBhdHRhY2tlciB0byBieXBhc3MgdGhlIGVuY3J5cHRpb24gYnkgcHJldGVuZGluZyB0byBiZSBOZW80ai5cIikpO1xuICB9XG59XG5cbi8qKlxuICogSW4gYSBOb2RlLmpzIGVudmlyb25tZW50IHRoZSAnbmV0JyBtb2R1bGUgaXMgdXNlZFxuICogYXMgdHJhbnNwb3J0LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbmNsYXNzIE5vZGVDaGFubmVsIHtcblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmhvc3QgLSBUaGUgaG9zdCwgaW5jbHVkaW5nIHByb3RvY29sIHRvIGNvbm5lY3QgdG8uXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gb3B0cy5wb3J0IC0gVGhlIHBvcnQgdG8gdXNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmlkID0gX0NPTk5FQ1RJT05fSURHRU4rKztcbiAgICB0aGlzLmF2YWlsYWJsZSA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uVGVybWluYXRlZCA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9lbmNyeXB0ZWQgPSBvcHRzLmVuY3J5cHRlZDtcbiAgICB0aGlzLl9jb25uID0gY29ubmVjdChvcHRzLCAoKSA9PiB7XG4gICAgICBpZighc2VsZi5fb3Blbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuX2Nvbm4ub24oJ2RhdGEnLCAoIGJ1ZmZlciApID0+IHtcbiAgICAgICAgaWYoIHNlbGYub25tZXNzYWdlICkge1xuICAgICAgICAgIHNlbGYub25tZXNzYWdlKCBuZXcgTm9kZUJ1ZmZlciggYnVmZmVyICkgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuX2Nvbm4ub24oJ2Vycm9yJywgc2VsZi5faGFuZGxlQ29ubmVjdGlvbkVycm9yKTtcbiAgICAgIHNlbGYuX2Nvbm4ub24oJ2VuZCcsIHNlbGYuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkKTtcblxuICAgICAgLy8gRHJhaW4gYWxsIHBlbmRpbmcgbWVzc2FnZXNcbiAgICAgIGxldCBwZW5kaW5nID0gc2VsZi5fcGVuZGluZztcbiAgICAgIHNlbGYuX3BlbmRpbmcgPSBudWxsO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwZW5kaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHNlbGYud3JpdGUoIHBlbmRpbmdbaV0gKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuICB9XG5cbiAgX2hhbmRsZUNvbm5lY3Rpb25FcnJvciggZXJyICkge1xuICAgIGxldCBtc2cgPSBlcnIubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyJztcbiAgICB0aGlzLl9lcnJvciA9IG5ld0Vycm9yKG1zZywgU0VTU0lPTl9FWFBJUkVEKTtcbiAgICBpZiggdGhpcy5vbmVycm9yICkge1xuICAgICAgdGhpcy5vbmVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICB9XG4gIH1cblxuICBfaGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWQoKSB7XG4gICAgICB0aGlzLl9lcnJvciA9IG5ld0Vycm9yKCdDb25uZWN0aW9uIHdhcyBjbG9zZWQgYnkgc2VydmVyJywgU0VTU0lPTl9FWFBJUkVEKTtcbiAgICAgIGlmKCB0aGlzLm9uZXJyb3IgKSB7XG4gICAgICAgIHRoaXMub25lcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICB9XG4gIH1cblxuICBpc0VuY3J5cHRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5jcnlwdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBwYXNzZWQgaW4gYnVmZmVyIHRvIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtOb2RlQnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgdG8gd3JpdGVcbiAgICovXG4gIHdyaXRlICggYnVmZmVyICkge1xuICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAvLyB3ZSBhcmUgbm90IHlldCBjb25uZWN0ZWQsIHNvIHdlIHF1ZXVlIHRoaW5ncyBsb2NhbGx5LlxuICAgIGlmKCB0aGlzLl9wZW5kaW5nICE9PSBudWxsICkge1xuICAgICAgdGhpcy5fcGVuZGluZy5wdXNoKCBidWZmZXIgKTtcbiAgICB9IGVsc2UgaWYoIGJ1ZmZlciBpbnN0YW5jZW9mIE5vZGVCdWZmZXIgKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyggXCJbQ29ubiNcIit0aGlzLmlkK1wiXSBTRU5EOiBcIiwgYnVmZmVyLnRvU3RyaW5nKCkgKTtcbiAgICAgIHRoaXMuX2Nvbm4ud3JpdGUoIGJ1ZmZlci5fYnVmZmVyICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCBcIkRvbid0IGtub3cgaG93IHRvIHdyaXRlOiBcIiArIGJ1ZmZlciApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiAtIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2xvc2UuXG4gICAqL1xuICBjbG9zZShjYiA9ICgoKSA9PiBudWxsKSkge1xuICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICBpZiggdGhpcy5fY29ubiApIHtcbiAgICAgIHRoaXMuX2Nvbm4uZW5kKCk7XG4gICAgICB0aGlzLl9jb25uLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB0aGlzLl9oYW5kbGVDb25uZWN0aW9uVGVybWluYXRlZCk7XG4gICAgICB0aGlzLl9jb25uLm9uKCdlbmQnLCBjYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9XG59XG5sZXQgX25vZGVDaGFubmVsTW9kdWxlID0ge2NoYW5uZWw6IE5vZGVDaGFubmVsLCBhdmFpbGFibGU6IHRydWV9O1xuXG50cnkge1xuICAvLyBPbmx5IGRlZmluZSB0aGlzIG1vZHVsZSBpZiAnbmV0JyBpcyBhdmFpbGFibGVcbiAgcmVxdWlyZS5yZXNvbHZlKFwibmV0XCIpO1xufSBjYXRjaChlKSB7XG4gIF9ub2RlQ2hhbm5lbE1vZHVsZSA9IHsgYXZhaWxhYmxlIDogZmFsc2UgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgX25vZGVDaGFubmVsTW9kdWxlXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtIZWFwQnVmZmVyfSBmcm9tICcuL2J1Zic7XG5pbXBvcnQge25ld0Vycm9yfSBmcm9tICcuLy4uL2Vycm9yJztcbmltcG9ydCB7RU5DUllQVElPTl9PTiwgRU5DUllQVElPTl9PRkZ9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IFdlYlNvY2tldENoYW5uZWwgdG8gYmUgdXNlZCBpbiB3ZWIgYnJvd3NlcnMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5ob3N0IC0gVGhlIGhvc3QsIGluY2x1ZGluZyBwcm90b2NvbCB0byBjb25uZWN0IHRvLlxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IG9wdHMucG9ydCAtIFRoZSBwb3J0IHRvIHVzZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzKSB7XG5cbiAgICB0aGlzLl9vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLl9wZW5kaW5nID0gW107XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvci5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5fZW5jcnlwdGVkID0gb3B0cy5lbmNyeXB0ZWQ7XG5cbiAgICBsZXQgc2NoZW1lID0gXCJ3c1wiO1xuICAgIC8vQWxsb3cgYm9vbGVhbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBpZiggb3B0cy5lbmNyeXB0ZWQgPT09IHRydWUgfHwgb3B0cy5lbmNyeXB0ZWQgPT09IEVOQ1JZUFRJT05fT04pIHtcbiAgICAgIGlmKCghb3B0cy50cnVzdCkgfHwgb3B0cy50cnVzdCA9PT0gXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiICkge1xuICAgICAgICBzY2hlbWUgPSBcIndzc1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZXJyb3IgPSBuZXdFcnJvcihcIlRoZSBicm93c2VyIHZlcnNpb24gb2YgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyBvbmUgdHJ1c3QgXCIgK1xuICAgICAgICAgIFwic3RyYXRlZ3ksICdUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUycuIFwiK29wdHMudHJ1c3QrXCIgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIFwiICtcbiAgICAgICAgICBcImVpdGhlciB1c2UgVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIGJ5IHNldHRpbmcgXCIgK1xuICAgICAgICAgIFwiYGVuY3J5cHRlZDpcXFwiXCIgKyBFTkNSWVBUSU9OX09GRiArIFwiXFxcImAgaW4gdGhlIGRyaXZlciBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cmwgPSBzY2hlbWUgKyBcIjovL1wiICsgb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG4gICAgdGhpcy5fd3MgPSBuZXcgV2ViU29ja2V0KHRoaXMuX3VybCk7XG4gICAgdGhpcy5fd3MuYmluYXJ5VHlwZSA9IFwiYXJyYXlidWZmZXJcIjtcblxuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAvL0FsbCBjb25uZWN0aW9uIGVycm9ycyBhcmUgbm90IHNlbnQgdG8gdGhlIGVycm9yIGhhbmRsZXJcbiAgICAvL3dlIG11c3QgYWxzbyBjaGVjayBmb3IgZGlydHkgY2xvc2UgY2FsbHNcbiAgICB0aGlzLl93cy5vbmNsb3NlID0gZnVuY3Rpb24oZSkge1xuICAgICAgICBpZiAoIWUud2FzQ2xlYW4pIHtcbiAgICAgICAgICBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fd3Mub25vcGVuID0gZnVuY3Rpb24oKSB7XG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgbGV0IHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZSggcGVuZGluZ1tpXSApO1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fd3Mub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiggc2VsZi5vbm1lc3NhZ2UgKSB7XG4gICAgICAgIHZhciBiID0gbmV3IEhlYXBCdWZmZXIoIGV2ZW50LmRhdGEgKTtcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UoIGIgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5fd3Mub25lcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcjtcbiAgfVxuXG4gIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IoKSB7XG4gICAgLy8gb25lcnJvciB0cmlnZ2VycyBvbiB3ZWJzb2NrZXQgY2xvc2UgYXMgd2VsbC4uIGRvbid0IGdldCBtZSBzdGFydGVkLlxuICAgIGlmKCB0aGlzLl9vcGVuICkge1xuICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNTc3OTgzMS9ob3ctdG8tY2F0Y2gtd2Vic29ja2V0LWNvbm5lY3Rpb24tdG8td3MteHh4bm4tZmFpbGVkLWNvbm5lY3Rpb24tY2xvc2VkLWJlXG4gICAgICB0aGlzLl9lcnJvciA9IG5ld0Vycm9yKCBcIldlYlNvY2tldCBjb25uZWN0aW9uIGZhaWx1cmUuIER1ZSB0byBzZWN1cml0eSBcIiArXG4gICAgICAgIFwiY29uc3RyYWludHMgaW4geW91ciB3ZWIgYnJvd3NlciwgdGhlIHJlYXNvbiBmb3IgdGhlIGZhaWx1cmUgaXMgbm90IGF2YWlsYWJsZSBcIiArXG4gICAgICAgIFwidG8gdGhpcyBOZW80aiBEcml2ZXIuIFBsZWFzZSB1c2UgeW91ciBicm93c2VycyBkZXZlbG9wbWVudCBjb25zb2xlIHRvIGRldGVybWluZSBcIiArXG4gICAgICAgIFwidGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGZhaWx1cmUuIENvbW1vbiByZWFzb25zIGluY2x1ZGUgdGhlIGRhdGFiYXNlIGJlaW5nIFwiICtcbiAgICAgICAgXCJ1bmF2YWlsYWJsZSwgdXNpbmcgdGhlIHdyb25nIGNvbm5lY3Rpb24gVVJMIG9yIHRlbXBvcmFyeSBuZXR3b3JrIHByb2JsZW1zLiBcIiArXG4gICAgICAgIFwiSWYgeW91IGhhdmUgZW5hYmxlZCBlbmNyeXB0aW9uLCBlbnN1cmUgeW91ciBicm93c2VyIGlzIGNvbmZpZ3VyZWQgdG8gdHJ1c3QgdGhlIFwiICtcbiAgICAgICAgXCJjZXJ0aWZpY2F0ZSBOZW80aiBpcyBjb25maWd1cmVkIHRvIHVzZS4gV2ViU29ja2V0IGByZWFkeVN0YXRlYCBpczogXCIgKyB0aGlzLl93cy5yZWFkeVN0YXRlICk7XG4gICAgICBpZiAodGhpcy5vbmVycm9yKSB7XG4gICAgICAgIHRoaXMub25lcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNFbmNyeXB0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuY3J5cHRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0aGUgcGFzc2VkIGluIGJ1ZmZlciB0byBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7SGVhcEJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAqL1xuICB3cml0ZSAoIGJ1ZmZlciApIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgcXVldWUsIHB1c2ggdGhpcyBvbiB0aGF0IHF1ZXVlLiBUaGlzIG1lYW5zXG4gICAgLy8gd2UgYXJlIG5vdCB5ZXQgY29ubmVjdGVkLCBzbyB3ZSBxdWV1ZSB0aGluZ3MgbG9jYWxseS5cbiAgICBpZiggdGhpcy5fcGVuZGluZyAhPT0gbnVsbCApIHtcbiAgICAgIHRoaXMuX3BlbmRpbmcucHVzaCggYnVmZmVyICk7XG4gICAgfSBlbHNlIGlmKCBidWZmZXIgaW5zdGFuY2VvZiBIZWFwQnVmZmVyICkge1xuICAgICAgdGhpcy5fd3Muc2VuZCggYnVmZmVyLl9idWZmZXIgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoIFwiRG9uJ3Qga25vdyBob3cgdG8gc2VuZCBidWZmZXI6IFwiICsgYnVmZmVyICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlICggY2IgPSAoICgpID0+IG51bGwgKSkge1xuICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICB0aGlzLl93cy5jbG9zZSgpO1xuICAgIHRoaXMuX3dzLm9uY2xvc2UgPSBjYjtcbiAgfVxufVxuXG5sZXQgYXZhaWxhYmxlID0gdHlwZW9mIFdlYlNvY2tldCAhPT0gJ3VuZGVmaW5lZCc7XG5sZXQgX3dlYnNvY2tldENoYW5uZWxNb2R1bGUgPSB7Y2hhbm5lbDogV2ViU29ja2V0Q2hhbm5lbCwgYXZhaWxhYmxlOiBhdmFpbGFibGV9O1xuXG5leHBvcnQgZGVmYXVsdCBfd2Vic29ja2V0Q2hhbm5lbE1vZHVsZVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7YWxsb2MsIEJhc2VCdWZmZXIsIENvbWJpbmVkQnVmZmVyfSBmcm9tICcuL2J1Zic7XG5cbmxldFxuICBfQ0hVTktfSEVBREVSX1NJWkUgPSAyLFxuICBfTUVTU0FHRV9CT1VOREFSWSA9IDB4MDAsXG4gIF9ERUZBVUxUX0JVRkZFUl9TSVpFID0gMTQwMDsgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNjEzNzM0L21heGltdW0tcGFja2V0LXNpemUtZm9yLWEtdGNwLWNvbm5lY3Rpb25cblxuLyoqXG4gKiBMb29rcyBsaWtlIGEgd3JpdGFibGUgYnVmZmVyLCBjaHVua3Mgb3V0cHV0IHRyYW5zcGFyZW50bHkgaW50byBhIGNoYW5uZWwgYmVsb3cuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgQ2h1bmtlciBleHRlbmRzIEJhc2VCdWZmZXIge1xuICBjb25zdHJ1Y3RvcihjaGFubmVsLCBidWZmZXJTaXplKSB7XG4gICAgc3VwZXIoMCk7XG4gICAgdGhpcy5fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemUgfHwgX0RFRkFVTFRfQlVGRkVSX1NJWkU7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2J1ZmZlciA9IGFsbG9jKHRoaXMuX2J1ZmZlclNpemUpO1xuICAgIHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0ID0gMDtcbiAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHB1dFVJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgdGhpcy5fYnVmZmVyLndyaXRlVUludDgodmFsKTtcbiAgfVxuXG4gIHB1dEludDgocG9zaXRpb24sIHZhbCkge1xuICAgIHRoaXMuX2Vuc3VyZSgxKTtcbiAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQ4KHZhbCk7XG4gIH1cblxuICBwdXRGbG9hdDY0KHBvc2l0aW9uLCB2YWwpIHtcbiAgICB0aGlzLl9lbnN1cmUoOCk7XG4gICAgdGhpcy5fYnVmZmVyLndyaXRlRmxvYXQ2NCh2YWwpO1xuICB9XG5cbiAgcHV0Qnl0ZXMocG9zaXRpb24sIGRhdGEpIHtcbiAgICAvLyBUT0RPOiBJZiBkYXRhIGlzIGxhcmdlciB0aGFuIG91ciBjaHVuayBzaXplIG9yIHNvLCB3ZSdyZSB2ZXJ5IGxpa2VseSBiZXR0ZXIgb2ZmIGp1c3QgcGFzc2luZyB0aGlzIGJ1ZmZlciBvblxuICAgIC8vIHJhdGhlciB0aGFuIGRvaW5nIHRoZSBjb3B5IGhlcmUgVE9ETzogKmhvd2V2ZXIqIG5vdGUgdGhhdCB3ZSBuZWVkIHNvbWUgd2F5IHRvIGZpbmQgb3V0IHdoZW4gdGhlIGRhdGEgaGFzIGJlZW5cbiAgICAvLyB3cml0dGVuIChhbmQgdGh1cyB0aGUgYnVmZmVyIGNhbiBiZSByZS11c2VkKSBpZiB3ZSB0YWtlIHRoYXQgYXBwcm9hY2hcbiAgICB3aGlsZSAoZGF0YS5yZW1haW5pbmcoKSA+IDApIHtcbiAgICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbiBvcGVuIGNodW5rLCBhbmQgdGhhdCBpdCBoYXMgYXQgbGVhc3Qgb25lIGJ5dGUgb2Ygc3BhY2UgbGVmdFxuICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSA+IGRhdGEucmVtYWluaW5nKCkpIHtcbiAgICAgICAgdGhpcy5fYnVmZmVyLndyaXRlQnl0ZXMoZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9idWZmZXIud3JpdGVCeXRlcyhkYXRhLnJlYWRTbGljZSh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmbHVzaCgpIHtcbiAgICBpZiAodGhpcy5fYnVmZmVyLnBvc2l0aW9uID4gMCkge1xuICAgICAgdGhpcy5fY2xvc2VDaHVua0lmT3BlbigpO1xuXG4gICAgICAvLyBMb2NhbCBjb3B5IGFuZCBjbGVhciB0aGUgYnVmZmVyIGZpZWxkLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYnVmZmVyIGlzIG5vdCByZS1yZWxlYXNlZCBpZiB0aGUgZmx1c2ggY2FsbCBmYWlsc1xuICAgICAgbGV0IG91dCA9IHRoaXMuX2J1ZmZlcjtcbiAgICAgIHRoaXMuX2J1ZmZlciA9IG51bGw7XG5cbiAgICAgIHRoaXMuX2NoLndyaXRlKG91dC5nZXRTbGljZSgwLCBvdXQucG9zaXRpb24pKTtcblxuICAgICAgLy8gQWxsb2MgYSBuZXcgb3V0cHV0IGJ1ZmZlci4gV2UgYXNzdW1lIHdlJ3JlIHVzaW5nIE5vZGVKUydzIGJ1ZmZlciBwb29saW5nIHVuZGVyIHRoZSBob29kIGhlcmUhXG4gICAgICB0aGlzLl9idWZmZXIgPSBhbGxvYyh0aGlzLl9idWZmZXJTaXplKTtcbiAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCb2x0IG1lc3NhZ2VzIGFyZSBlbmNvZGVkIGluIG9uZSBvciBtb3JlIGNodW5rcywgYW5kIHRoZSBib3VuZGFyeSBiZXR3ZWVuIHR3byBtZXNzYWdlc1xuICAgKiBpcyBlbmNvZGVkIGFzIGEgMC1sZW5ndGggY2h1bmssIGAwMCAwMGAuIFRoaXMgaW5zZXJ0cyBzdWNoIGEgbWVzc2FnZSBib3VuZGFyeSwgY2xvc2luZ1xuICAgKiBhbnkgY3VycmVudGx5IG9wZW4gY2h1bmsgYXMgbmVlZGVkXG4gICAqL1xuICBtZXNzYWdlQm91bmRhcnkoKSB7XG5cbiAgICB0aGlzLl9jbG9zZUNodW5rSWZPcGVuKCk7XG5cbiAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpIDwgX0NIVU5LX0hFQURFUl9TSVpFKSB7XG4gICAgICB0aGlzLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgbWVzc2FnZSBib3VuZGFyeVxuICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDE2KF9NRVNTQUdFX0JPVU5EQVJZKTtcbiAgfVxuXG4gIC8qKiBFbnN1cmUgYXQgbGVhc3QgdGhlIGdpdmVuIHNpemUgaXMgYXZhaWxhYmxlIGZvciB3cml0aW5nICovXG4gIF9lbnN1cmUoc2l6ZSkge1xuICAgIGxldCB0b1dyaXRlU2l6ZSA9IHRoaXMuX2NodW5rT3BlbiA/IHNpemUgOiBzaXplICsgX0NIVU5LX0hFQURFUl9TSVpFO1xuICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPCB0b1dyaXRlU2l6ZSkge1xuICAgICAgdGhpcy5mbHVzaCgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICB0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbjtcbiAgICAgIHRoaXMuX2J1ZmZlci5wb3NpdGlvbiA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbiArIF9DSFVOS19IRUFERVJfU0laRTtcbiAgICAgIHRoaXMuX2NodW5rT3BlbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgX2Nsb3NlQ2h1bmtJZk9wZW4oKSB7XG4gICAgaWYgKHRoaXMuX2NodW5rT3Blbikge1xuICAgICAgbGV0IGNodW5rU2l6ZSA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbiAtICh0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCArIF9DSFVOS19IRUFERVJfU0laRSk7XG4gICAgICB0aGlzLl9idWZmZXIucHV0VUludDE2KHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0LCBjaHVua1NpemUpO1xuICAgICAgdGhpcy5fY2h1bmtPcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cblxuLyoqXG4gKiBDb21iaW5lcyBjaHVua3MgdW50aWwgYSBjb21wbGV0ZSBtZXNzYWdlIGlzIGdhdGhlcmVkIHVwLCBhbmQgdGhlbiBmb3J3YXJkcyB0aGF0XG4gKiBtZXNzYWdlIHRvIGFuICdvbm1lc3NhZ2UnIGxpc3RlbmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbmNsYXNzIERlY2h1bmtlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gMDtcbiAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gIH1cblxuICBBV0FJVElOR19DSFVOSyhidWYpIHtcbiAgICBpZiAoYnVmLnJlbWFpbmluZygpID49IDIpIHtcbiAgICAgIC8vIFdob2xlIGhlYWRlciBhdmFpbGFibGUsIHJlYWQgdGhhdFxuICAgICAgcmV0dXJuIHRoaXMuX29uSGVhZGVyKGJ1Zi5yZWFkVUludDE2KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPbmx5IG9uZSBieXRlIGF2YWlsYWJsZSwgcmVhZCB0aGF0IGFuZCB3YWl0IGZvciB0aGUgc2Vjb25kIGJ5dGVcbiAgICAgIHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciA9IGJ1Zi5yZWFkVUludDgoKSA8PCA4O1xuICAgICAgcmV0dXJuIHRoaXMuSU5fSEVBREVSO1xuICAgIH1cbiAgfVxuXG4gIElOX0hFQURFUihidWYpIHtcbiAgICAvLyBGaXJzdCBoZWFkZXIgYnl0ZSByZWFkLCBub3cgd2UgcmVhZCB0aGUgbmV4dCBvbmVcbiAgICByZXR1cm4gdGhpcy5fb25IZWFkZXIoKHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciB8IGJ1Zi5yZWFkVUludDgoKSkgJiAweEZGRkYpO1xuICB9XG5cbiAgSU5fQ0hVTksoYnVmKSB7XG4gICAgaWYgKHRoaXMuX2NodW5rU2l6ZSA8PSBidWYucmVtYWluaW5nKCkpIHtcbiAgICAgIC8vIEN1cnJlbnQgcGFja2V0IGlzIGxhcmdlciB0aGFuIGN1cnJlbnQgY2h1bmssIG9yIHNhbWUgc2l6ZTpcbiAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlLnB1c2goYnVmLnJlYWRTbGljZSh0aGlzLl9jaHVua1NpemUpKTtcbiAgICAgIHJldHVybiB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDdXJyZW50IHBhY2tldCBpcyBzbWFsbGVyIHRoYW4gdGhlIGNodW5rIHdlJ3JlIHJlYWRpbmcsIHNwbGl0IHRoZSBjdXJyZW50IGNodW5rIGl0c2VsZiB1cFxuICAgICAgdGhpcy5fY2h1bmtTaXplIC09IGJ1Zi5yZW1haW5pbmcoKTtcbiAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlLnB1c2goYnVmLnJlYWRTbGljZShidWYucmVtYWluaW5nKCkpKTtcbiAgICAgIHJldHVybiB0aGlzLklOX0NIVU5LO1xuICAgIH1cbiAgfVxuXG4gIENMT1NFRChidWYpIHtcbiAgICAvLyBuby1vcFxuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgY29tcGxldGUgY2h1bmsgaGVhZGVyIGhhcyBiZWVuIHJlY2lldmVkICovXG4gIF9vbkhlYWRlcihoZWFkZXIpIHtcbiAgICBpZiAoaGVhZGVyID09IDApIHtcbiAgICAgIC8vIE1lc3NhZ2UgYm91bmRhcnlcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRNZXNzYWdlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIG1lc3NhZ2UgPSB0aGlzLl9jdXJyZW50TWVzc2FnZVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBuZXcgQ29tYmluZWRCdWZmZXIoIHRoaXMuX2N1cnJlbnRNZXNzYWdlICk7XG4gICAgICB9XG4gICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgICAgdGhpcy5vbm1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICByZXR1cm4gdGhpcy5BV0FJVElOR19DSFVOSztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2h1bmtTaXplID0gaGVhZGVyO1xuICAgICAgcmV0dXJuIHRoaXMuSU5fQ0hVTks7XG4gICAgfVxuICB9XG5cbiAgd3JpdGUoYnVmKSB7XG4gICAgd2hpbGUgKGJ1Zi5oYXNSZW1haW5pbmcoKSkge1xuICAgICAgdGhpcy5fc3RhdGUgPSB0aGlzLl9zdGF0ZShidWYpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge1xuICBDaHVua2VyLFxuICBEZWNodW5rZXJcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge25ld0Vycm9yfSBmcm9tICcuLi9lcnJvcic7XG5cbi8qKlxuICogVXRpbGl0eSB0byBsYXppbHkgaW5pdGlhbGl6ZSBjb25uZWN0aW9ucyBhbmQgcmV0dXJuIHRoZW0gYmFjayB0byB0aGUgcG9vbCB3aGVuIHVudXNlZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29ubmVjdGlvbkhvbGRlciB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSAtIHRoZSBhY2Nlc3MgbW9kZSBmb3IgbmV3IGNvbm5lY3Rpb24gaG9sZGVyLlxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb25Qcm92aWRlcn0gY29ubmVjdGlvblByb3ZpZGVyIC0gdGhlIGNvbm5lY3Rpb24gcHJvdmlkZXIgdG8gYWNxdWlyZSBjb25uZWN0aW9ucyBmcm9tLlxuICAgKi9cbiAgY29uc3RydWN0b3IobW9kZSwgY29ubmVjdGlvblByb3ZpZGVyKSB7XG4gICAgdGhpcy5fbW9kZSA9IG1vZGU7XG4gICAgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyID0gY29ubmVjdGlvblByb3ZpZGVyO1xuICAgIHRoaXMuX3JlZmVyZW5jZUNvdW50ID0gMDtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoaXMgaG9sZGVyIGluaXRpYWxpemUgbmV3IGNvbm5lY3Rpb24gaWYgbm9uZSBleGlzdHMgYWxyZWFkeS5cbiAgICogQHJldHVybiB7dW5kZWZpbmVkfVxuICAgKi9cbiAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX3JlZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlci5hY3F1aXJlQ29ubmVjdGlvbih0aGlzLl9tb2RlKTtcbiAgICB9XG4gICAgdGhpcy5fcmVmZXJlbmNlQ291bnQrKztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiBwcm9taXNlLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENvbm5lY3Rpb24+fSBwcm9taXNlIHJlc29sdmVkIHdpdGggdGhlIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgICovXG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmeSB0aGlzIGhvbGRlciB0aGF0IHNpbmdsZSBwYXJ0eSBkb2VzIG5vdCByZXF1aXJlIGN1cnJlbnQgY29ubmVjdGlvbiBhbnkgbW9yZS5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDb25uZWN0aW9uPn0gcHJvbWlzZSByZXNvbHZlZCB3aXRoIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWxlYXNlQ29ubmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWZlcmVuY2VDb3VudC0tO1xuICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgLy8gcmVsZWFzZSBhIGNvbm5lY3Rpb24gd2l0aG91dCBtdXRpbmcgQUNLX0ZBSUxVUkUsIHRoaXMgaXMgdGhlIGxhc3QgYWN0aW9uIG9uIHRoaXMgY29ubmVjdGlvblxuICAgICAgcmV0dXJuIHRoaXMuX3JlbGVhc2VDb25uZWN0aW9uKHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoaXMgaG9sZGVyIGFuZCByZWxlYXNlcyBjdXJyZW50IGNvbm5lY3Rpb24gKGlmIGFueSkgZGVzcGl0ZSBhbnkgZXhpc3RpbmcgdXNlcnMuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q29ubmVjdGlvbj59IHByb21pc2UgcmVzb2x2ZWQgd2hlbiBjdXJyZW50IGNvbm5lY3Rpb24gaXMgcmVsZWFzZWQgdG8gdGhlIHBvb2wuXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICB9XG4gICAgdGhpcy5fcmVmZXJlbmNlQ291bnQgPSAwO1xuICAgIC8vIHJlbGVhc2UgYSBjb25uZWN0aW9uIGFuZCBtdXRlIEFDS19GQUlMVVJFLCB0aGlzIG1pZ2h0IGJlIGNhbGxlZCBjb25jdXJyZW50bHkgd2l0aCBvdGhlclxuICAgIC8vIG9wZXJhdGlvbnMgYW5kIHRodXMgc2hvdWxkIGlnbm9yZSBmYWlsdXJlIGhhbmRsaW5nXG4gICAgcmV0dXJuIHRoaXMuX3JlbGVhc2VDb25uZWN0aW9uKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgcG9vbGVkIGNvbm5lY3Rpb24gaW5zdGFuY2UgdG8gdGhlIGNvbm5lY3Rpb24gcG9vbC5cbiAgICogV2UgZG9uJ3QgcG9vbCBTZXNzaW9uIGluc3RhbmNlcywgdG8gYXZvaWQgdXNlcnMgdXNpbmcgdGhlIFNlc3Npb24gYWZ0ZXIgdGhleSd2ZSBjYWxsZWQgY2xvc2UuXG4gICAqIFRoZSBgU2Vzc2lvbmAgb2JqZWN0IGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgYXJvdW5kIENvbm5lY3Rpb24gYW55d2F5LCBzbyBpdCBtYWtlcyBsaXR0bGUgZGlmZmVyZW5jZS5cbiAgICogQHJldHVybiB7UHJvbWlzZX0gLSBwcm9taXNlIHJlc29sdmVkIHRoZW4gY29ubmVjdGlvbiBpcyByZXR1cm5lZCB0byB0aGUgcG9vbC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9yZWxlYXNlQ29ubmVjdGlvbihzeW5jKSB7XG4gICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgICAgaWYoc3luYykge1xuICAgICAgICAgIGNvbm5lY3Rpb24ucmVzZXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25uZWN0aW9uLnJlc2V0QXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25uZWN0aW9uLnN5bmMoKTtcbiAgICAgICAgY29ubmVjdGlvbi5fcmVsZWFzZSgpO1xuICAgICAgfVxuICAgIH0pLmNhdGNoKGlnbm9yZWRFcnJvciA9PiB7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gIH1cbn1cblxuY2xhc3MgRW1wdHlDb25uZWN0aW9uSG9sZGVyIGV4dGVuZHMgQ29ubmVjdGlvbkhvbGRlciB7XG5cbiAgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKSB7XG4gICAgLy8gbm90aGluZyB0byBpbml0aWFsaXplXG4gIH1cblxuICBnZXRDb25uZWN0aW9uKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXdFcnJvcignVGhpcyBjb25uZWN0aW9uIGhvbGRlciBkb2VzIG5vdCBzZXJ2ZSBjb25uZWN0aW9ucycpKTtcbiAgfVxuXG4gIHJlbGVhc2VDb25uZWN0aW9uKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbm5lY3Rpb24gaG9sZGVyIHRoYXQgZG9lcyBub3QgbWFuYWdlIGFueSBjb25uZWN0aW9ucy5cbiAqIEB0eXBlIHtDb25uZWN0aW9uSG9sZGVyfVxuICovXG5leHBvcnQgY29uc3QgRU1QVFlfQ09OTkVDVElPTl9IT0xERVIgPSBuZXcgRW1wdHlDb25uZWN0aW9uSG9sZGVyKCk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtuZXdFcnJvciwgU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VTU0lPTl9FWFBJUkVEfSBmcm9tICcuLi9lcnJvcic7XG5pbXBvcnQge1JFQUQsIFdSSVRFfSBmcm9tICcuLi9kcml2ZXInO1xuaW1wb3J0IFNlc3Npb24gZnJvbSAnLi4vc2Vzc2lvbic7XG5pbXBvcnQgUm91bmRSb2JpbkFycmF5IGZyb20gJy4vcm91bmQtcm9iaW4tYXJyYXknO1xuaW1wb3J0IFJvdXRpbmdUYWJsZSBmcm9tICcuL3JvdXRpbmctdGFibGUnO1xuaW1wb3J0IFJlZGlzY292ZXJ5IGZyb20gJy4vcmVkaXNjb3ZlcnknO1xuXG5jbGFzcyBDb25uZWN0aW9uUHJvdmlkZXIge1xuXG4gIGFjcXVpcmVDb25uZWN0aW9uKG1vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fic3RyYWN0IG1ldGhvZCcpO1xuICB9XG5cbiAgX3dpdGhBZGRpdGlvbmFsT25FcnJvckNhbGxiYWNrKGNvbm5lY3Rpb25Qcm9taXNlLCBkcml2ZXJPbkVycm9yQ2FsbGJhY2spIHtcbiAgICAvLyBpbnN0YWxsIGVycm9yIGhhbmRsZXIgZnJvbSB0aGUgZHJpdmVyIG9uIHRoZSBjb25uZWN0aW9uIHByb21pc2U7IHRoaXMgY2FsbGJhY2sgaXMgaW5zdGFsbGVkIHNlcGFyYXRlbHlcbiAgICAvLyBzbyB0aGF0IGl0IGRvZXMgbm90IGhhbmRsZSBlcnJvcnMsIGluc3RlYWQgaXQgaXMganVzdCBhbiBhZGRpdGlvbmFsIGVycm9yIHJlcG9ydGluZyBmYWNpbGl0eS5cbiAgICBjb25uZWN0aW9uUHJvbWlzZS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBkcml2ZXJPbkVycm9yQ2FsbGJhY2soZXJyb3IpXG4gICAgfSk7XG4gICAgLy8gcmV0dXJuIHRoZSBvcmlnaW5hbCBjb25uZWN0aW9uIHByb21pc2VcbiAgICByZXR1cm4gY29ubmVjdGlvblByb21pc2U7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdENvbm5lY3Rpb25Qcm92aWRlciBleHRlbmRzIENvbm5lY3Rpb25Qcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fYWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgdGhpcy5fY29ubmVjdGlvblBvb2wgPSBjb25uZWN0aW9uUG9vbDtcbiAgICB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2sgPSBkcml2ZXJPbkVycm9yQ2FsbGJhY2s7XG4gIH1cblxuICBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb25Qb29sLmFjcXVpcmUodGhpcy5fYWRkcmVzcyk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29ubmVjdGlvbik7XG4gICAgcmV0dXJuIHRoaXMuX3dpdGhBZGRpdGlvbmFsT25FcnJvckNhbGxiYWNrKGNvbm5lY3Rpb25Qcm9taXNlLCB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2spO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkQmFsYW5jZXIgZXh0ZW5kcyBDb25uZWN0aW9uUHJvdmlkZXIge1xuXG4gIGNvbnN0cnVjdG9yKGFkZHJlc3MsIGNvbm5lY3Rpb25Qb29sLCBkcml2ZXJPbkVycm9yQ2FsbGJhY2spIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3JvdXRpbmdUYWJsZSA9IG5ldyBSb3V0aW5nVGFibGUobmV3IFJvdW5kUm9iaW5BcnJheShbYWRkcmVzc10pKTtcbiAgICB0aGlzLl9yZWRpc2NvdmVyeSA9IG5ldyBSZWRpc2NvdmVyeSgpO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qb29sID0gY29ubmVjdGlvblBvb2w7XG4gICAgdGhpcy5fZHJpdmVyT25FcnJvckNhbGxiYWNrID0gZHJpdmVyT25FcnJvckNhbGxiYWNrO1xuICB9XG5cbiAgYWNxdWlyZUNvbm5lY3Rpb24obW9kZSkge1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm9taXNlID0gdGhpcy5fZnJlc2hSb3V0aW5nVGFibGUoKS50aGVuKHJvdXRpbmdUYWJsZSA9PiB7XG4gICAgICBpZiAobW9kZSA9PT0gUkVBRCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWNxdWlyZUNvbm5lY3Rpb25Ub1NlcnZlcihyb3V0aW5nVGFibGUucmVhZGVycywgJ3JlYWQnKTtcbiAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gV1JJVEUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjcXVpcmVDb25uZWN0aW9uVG9TZXJ2ZXIocm91dGluZ1RhYmxlLndyaXRlcnMsICd3cml0ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ0lsbGVnYWwgbW9kZSAnICsgbW9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3dpdGhBZGRpdGlvbmFsT25FcnJvckNhbGxiYWNrKGNvbm5lY3Rpb25Qcm9taXNlLCB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2spO1xuICB9XG5cbiAgZm9yZ2V0KGFkZHJlc3MpIHtcbiAgICB0aGlzLl9yb3V0aW5nVGFibGUuZm9yZ2V0KGFkZHJlc3MpO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qb29sLnB1cmdlKGFkZHJlc3MpO1xuICB9XG5cbiAgZm9yZ2V0V3JpdGVyKGFkZHJlc3MpIHtcbiAgICB0aGlzLl9yb3V0aW5nVGFibGUuZm9yZ2V0V3JpdGVyKGFkZHJlc3MpO1xuICB9XG5cbiAgX2FjcXVpcmVDb25uZWN0aW9uVG9TZXJ2ZXIoc2VydmVyc1JvdW5kUm9iaW5BcnJheSwgc2VydmVyTmFtZSkge1xuICAgIGNvbnN0IGFkZHJlc3MgPSBzZXJ2ZXJzUm91bmRSb2JpbkFycmF5Lm5leHQoKTtcbiAgICBpZiAoIWFkZHJlc3MpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXdFcnJvcignTm8gJyArIHNlcnZlck5hbWUgKyAnIHNlcnZlcnMgYXZhaWxhYmxlJywgU0VTU0lPTl9FWFBJUkVEKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUG9vbC5hY3F1aXJlKGFkZHJlc3MpO1xuICB9XG5cbiAgX2ZyZXNoUm91dGluZ1RhYmxlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRSb3V0aW5nVGFibGUgPSB0aGlzLl9yb3V0aW5nVGFibGU7XG5cbiAgICBpZiAoIWN1cnJlbnRSb3V0aW5nVGFibGUuaXNTdGFsZSgpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGN1cnJlbnRSb3V0aW5nVGFibGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFJvdXRpbmdUYWJsZShjdXJyZW50Um91dGluZ1RhYmxlKTtcbiAgfVxuXG4gIF9yZWZyZXNoUm91dGluZ1RhYmxlKGN1cnJlbnRSb3V0aW5nVGFibGUpIHtcbiAgICBjb25zdCBrbm93blJvdXRlcnMgPSBjdXJyZW50Um91dGluZ1RhYmxlLnJvdXRlcnMudG9BcnJheSgpO1xuXG4gICAgY29uc3QgcmVmcmVzaGVkVGFibGVQcm9taXNlID0ga25vd25Sb3V0ZXJzLnJlZHVjZSgocmVmcmVzaGVkVGFibGVQcm9taXNlLCBjdXJyZW50Um91dGVyLCBjdXJyZW50SW5kZXgpID0+IHtcbiAgICAgIHJldHVybiByZWZyZXNoZWRUYWJsZVByb21pc2UudGhlbihuZXdSb3V0aW5nVGFibGUgPT4ge1xuICAgICAgICBpZiAobmV3Um91dGluZ1RhYmxlKSB7XG4gICAgICAgICAgaWYgKCFuZXdSb3V0aW5nVGFibGUud3JpdGVycy5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkIHJvdXRpbmcgdGFibGUgd2FzIGZldGNoZWQgLSBqdXN0IHJldHVybiBpdCwgdHJ5IG5leHQgcm91dGVyIG90aGVyd2lzZVxuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdXRpbmdUYWJsZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcmV0dXJuZWQgcm91dGluZyB0YWJsZSB3YXMgdW5kZWZpbmVkLCB0aGlzIG1lYW5zIGEgY29ubmVjdGlvbiBlcnJvciBoYXBwZW5lZCBhbmQgd2UgbmVlZCB0byBmb3JnZXQgdGhlXG4gICAgICAgICAgLy8gcHJldmlvdXMgcm91dGVyIGFuZCB0cnkgdGhlIG5leHQgb25lXG4gICAgICAgICAgY29uc3QgcHJldmlvdXNSb3V0ZXJJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG4gICAgICAgICAgdGhpcy5fZm9yZ2V0Um91dGVyKGN1cnJlbnRSb3V0aW5nVGFibGUsIGtub3duUm91dGVycywgcHJldmlvdXNSb3V0ZXJJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0cnkgbmV4dCByb3V0ZXJcbiAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuX2NyZWF0ZVNlc3Npb25Gb3JSZWRpc2NvdmVyeShjdXJyZW50Um91dGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZGlzY292ZXJ5Lmxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHNlc3Npb24sIGN1cnJlbnRSb3V0ZXIpO1xuICAgICAgfSk7XG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtcblxuICAgIHJldHVybiByZWZyZXNoZWRUYWJsZVByb21pc2UudGhlbihuZXdSb3V0aW5nVGFibGUgPT4ge1xuICAgICAgaWYgKG5ld1JvdXRpbmdUYWJsZSAmJiAhbmV3Um91dGluZ1RhYmxlLndyaXRlcnMuaXNFbXB0eSgpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVJvdXRpbmdUYWJsZShuZXdSb3V0aW5nVGFibGUpO1xuICAgICAgICByZXR1cm4gbmV3Um91dGluZ1RhYmxlO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3JnZXQgdGhlIGxhc3Qga25vd24gcm91dGVyIGJlY2F1c2UgaXQgZGlkIG5vdCByZXR1cm4gYSB2YWxpZCByb3V0aW5nIHRhYmxlXG4gICAgICBjb25zdCBsYXN0Um91dGVySW5kZXggPSBrbm93blJvdXRlcnMubGVuZ3RoIC0gMTtcbiAgICAgIHRoaXMuX2ZvcmdldFJvdXRlcihjdXJyZW50Um91dGluZ1RhYmxlLCBrbm93blJvdXRlcnMsIGxhc3RSb3V0ZXJJbmRleCk7XG5cbiAgICAgIC8vIG5vbmUgb2YgdGhlIGV4aXN0aW5nIHJvdXRlcnMgcmV0dXJuZWQgdmFsaWQgcm91dGluZyB0YWJsZSwgdGhyb3cgZXhjZXB0aW9uXG4gICAgICB0aHJvdyBuZXdFcnJvcignQ291bGQgbm90IHBlcmZvcm0gZGlzY292ZXJ5LiBObyByb3V0aW5nIHNlcnZlcnMgYXZhaWxhYmxlLicsIFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZVNlc3Npb25Gb3JSZWRpc2NvdmVyeShyb3V0ZXJBZGRyZXNzKSB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb25Qb29sLmFjcXVpcmUocm91dGVyQWRkcmVzcyk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29ubmVjdGlvbik7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3IFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uUHJvbWlzZSk7XG4gICAgcmV0dXJuIG5ldyBTZXNzaW9uKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG4gIH1cblxuICBfdXBkYXRlUm91dGluZ1RhYmxlKG5ld1JvdXRpbmdUYWJsZSkge1xuICAgIGNvbnN0IGN1cnJlbnRSb3V0aW5nVGFibGUgPSB0aGlzLl9yb3V0aW5nVGFibGU7XG5cbiAgICAvLyBjbG9zZSBvbGQgY29ubmVjdGlvbnMgdG8gc2VydmVycyBub3QgcHJlc2VudCBpbiB0aGUgbmV3IHJvdXRpbmcgdGFibGVcbiAgICBjb25zdCBzdGFsZVNlcnZlcnMgPSBjdXJyZW50Um91dGluZ1RhYmxlLnNlcnZlcnNEaWZmKG5ld1JvdXRpbmdUYWJsZSk7XG4gICAgc3RhbGVTZXJ2ZXJzLmZvckVhY2goc2VydmVyID0+IHRoaXMuX2Nvbm5lY3Rpb25Qb29sLnB1cmdlKHNlcnZlcikpO1xuXG4gICAgLy8gbWFrZSB0aGlzIGRyaXZlciBpbnN0YW5jZSBhd2FyZSBvZiB0aGUgbmV3IHRhYmxlXG4gICAgdGhpcy5fcm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlO1xuICB9XG5cbiAgX2ZvcmdldFJvdXRlcihyb3V0aW5nVGFibGUsIHJvdXRlcnNBcnJheSwgcm91dGVySW5kZXgpIHtcbiAgICBjb25zdCBhZGRyZXNzID0gcm91dGVyc0FycmF5W3JvdXRlckluZGV4XTtcbiAgICBpZiAoYWRkcmVzcykge1xuICAgICAgcm91dGluZ1RhYmxlLmZvcmdldFJvdXRlcihhZGRyZXNzKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlciBleHRlbmRzIENvbm5lY3Rpb25Qcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvblByb21pc2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gY29ubmVjdGlvblByb21pc2U7XG4gIH1cblxuICBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IG51bGw7XG4gICAgcmV0dXJuIGNvbm5lY3Rpb25Qcm9taXNlO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBXZWJTb2NrZXRDaGFubmVsIGZyb20gJy4vY2gtd2Vic29ja2V0JztcbmltcG9ydCBOb2RlQ2hhbm5lbCBmcm9tICcuL2NoLW5vZGUnO1xuaW1wb3J0IHtDaHVua2VyLCBEZWNodW5rZXJ9IGZyb20gJy4vY2h1bmtpbmcnO1xuaW1wb3J0IGhhc0ZlYXR1cmUgZnJvbSAnLi9mZWF0dXJlcyc7XG5pbXBvcnQge1BhY2tlciwgVW5wYWNrZXJ9IGZyb20gJy4vcGFja3N0cmVhbSc7XG5pbXBvcnQge2FsbG9jfSBmcm9tICcuL2J1Zic7XG5pbXBvcnQge05vZGUsIFBhdGgsIFBhdGhTZWdtZW50LCBSZWxhdGlvbnNoaXAsIFVuYm91bmRSZWxhdGlvbnNoaXB9IGZyb20gJy4uL2dyYXBoLXR5cGVzJztcbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gJy4vLi4vZXJyb3InO1xuXG5sZXQgQ2hhbm5lbDtcbmlmKCBOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gIENoYW5uZWwgPSBOb2RlQ2hhbm5lbC5jaGFubmVsO1xufVxuZWxzZSBpZiggV2ViU29ja2V0Q2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgQ2hhbm5lbCA9IFdlYlNvY2tldENoYW5uZWwuY2hhbm5lbDtcbn1cbmVsc2Uge1xuICAgIHRocm93IG5ld0Vycm9yKFwiRmF0YWw6IE5vIGNvbXBhdGlibGUgdHJhbnNwb3J0IGF2YWlsYWJsZS4gTmVlZCB0byBydW4gb24gYSBwbGF0Zm9ybSB3aXRoIHRoZSBXZWJTb2NrZXQgQVBJLlwiKTtcbn1cblxuXG5sZXRcbi8vIFNpZ25hdHVyZSBieXRlcyBmb3IgZWFjaCBtZXNzYWdlIHR5cGVcbklOSVQgPSAweDAxLCAgICAgICAgICAgIC8vIDAwMDAgMDAwMSAvLyBJTklUIDx1c2VyX2FnZW50PlxuQUNLX0ZBSUxVUkUgPSAweDBFLCAgICAgLy8gMDAwMCAxMTEwIC8vIEFDS19GQUlMVVJFXG5SRVNFVCA9IDB4MEYsICAgICAgICAgICAvLyAwMDAwIDExMTEgLy8gUkVTRVRcblJVTiA9IDB4MTAsICAgICAgICAgICAgIC8vIDAwMDEgMDAwMCAvLyBSVU4gPHN0YXRlbWVudD4gPHBhcmFtZXRlcnM+XG5ESVNDQVJEX0FMTCA9IDB4MkYsICAgICAvLyAwMDEwIDExMTEgLy8gRElTQ0FSRCAqXG5QVUxMX0FMTCA9IDB4M0YsICAgICAgICAvLyAwMDExIDExMTEgLy8gUFVMTCAqXG5TVUNDRVNTID0gMHg3MCwgICAgICAgICAvLyAwMTExIDAwMDAgLy8gU1VDQ0VTUyA8bWV0YWRhdGE+XG5SRUNPUkQgPSAweDcxLCAgICAgICAgICAvLyAwMTExIDAwMDEgLy8gUkVDT1JEIDx2YWx1ZT5cbklHTk9SRUQgPSAweDdFLCAgICAgICAgIC8vIDAxMTEgMTExMCAvLyBJR05PUkVEIDxtZXRhZGF0YT5cbkZBSUxVUkUgPSAweDdGLCAgICAgICAgIC8vIDAxMTEgMTExMSAvLyBGQUlMVVJFIDxtZXRhZGF0YT5cblxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBoaWdoZXItbGV2ZWwgZ3JhcGggb2JqZWN0c1xuTk9ERSA9IDB4NEUsXG5SRUxBVElPTlNISVAgPSAweDUyLFxuVU5CT1VORF9SRUxBVElPTlNISVAgPSAweDcyLFxuUEFUSCA9IDB4NTAsXG4vL3NlbnQgYmVmb3JlIHZlcnNpb24gbmVnb3RpYXRpb25cbk1BR0lDX1BSRUFNQkxFID0gMHg2MDYwQjAxNyxcbkRFQlVHID0gZmFsc2U7XG5cbmxldCBVUkxSRUdFWCA9IG5ldyBSZWdFeHAoW1xuICBcIihbXi9dKy8vKT9cIiwgICAgICAgICAgLy8gc2NoZW1lXG4gIFwiKChbXjovPyNdKilcIiwgICAgICAvLyBob3N0bmFtZVxuICBcIig/OjooWzAtOV0rKSk/KVwiLCAgLy8gcG9ydCAob3B0aW9uYWwpXG4gIFwiLipcIl0uam9pbihcIlwiKSk7ICAgICAvLyBldmVyeXRoaW5nIGVsc2VcblxuZnVuY3Rpb24gcGFyc2VTY2hlbWUoIHVybCApIHtcbiAgbGV0IHNjaGVtZSA9IHVybC5tYXRjaChVUkxSRUdFWClbMV0gfHwgJyc7XG4gIHJldHVybiBzY2hlbWUudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VVcmwodXJsKSB7XG4gIHJldHVybiB1cmwubWF0Y2goIFVSTFJFR0VYIClbMl07XG59XG5cbmZ1bmN0aW9uIHBhcnNlSG9zdCggdXJsICkge1xuICByZXR1cm4gdXJsLm1hdGNoKCBVUkxSRUdFWCApWzNdO1xufVxuXG5mdW5jdGlvbiBwYXJzZVBvcnQoIHVybCApIHtcbiAgcmV0dXJuIHVybC5tYXRjaCggVVJMUkVHRVggKVs0XTtcbn1cblxuLyoqXG4gKiBWZXJ5IHJ1ZGltZW50YXJ5IGxvZyBoYW5kbGluZywgc2hvdWxkIHByb2JhYmx5IGJlIHJlcGxhY2VkIGJ5IHNvbWV0aGluZyBwcm9wZXIgYXQgc29tZSBwb2ludC5cbiAqIEBwYXJhbSBhY3RvciB0aGUgcGFydCB0aGF0IHNlbnQgdGhlIG1lc3NhZ2UsICdTJyBmb3Igc2VydmVyIGFuZCAnQycgZm9yIGNsaWVudFxuICogQHBhcmFtIG1zZyB0aGUgYm9sdCBtZXNzYWdlXG4gKi9cbmZ1bmN0aW9uIGxvZyhhY3RvciwgbXNnKSB7XG4gIGlmIChERUJVRykge1xuICAgIGZvcih2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG1zZyArPSBcIiBcIiArIEpTT04uc3RyaW5naWZ5KGFyZ3VtZW50c1tpXSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGFjdG9yICsgXCI6XCIgKyBtc2cpO1xuICB9XG59XG5cbmZ1bmN0aW9uIE5PX09QKCl7fVxuXG5sZXQgTk9fT1BfT0JTRVJWRVIgPSB7XG4gIG9uTmV4dCA6IE5PX09QLFxuICBvbkNvbXBsZXRlZCA6IE5PX09QLFxuICBvbkVycm9yIDogTk9fT1Bcbn07XG5cbi8qKiBNYXBzIGZyb20gcGFja3N0cmVhbSBzdHJ1Y3R1cmVzIHRvIE5lbzRqIGRvbWFpbiBvYmplY3RzICovXG5sZXQgX21hcHBlcnMgPSB7XG4gIG5vZGUgOiAoIHVucGFja2VyLCBidWYgKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBOb2RlKFxuICAgICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksIC8vIElkZW50aXR5XG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gTGFiZWxzXG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSAgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHJlbCA6ICggdW5wYWNrZXIsIGJ1ZiApID0+IHtcbiAgICByZXR1cm4gbmV3IFJlbGF0aW9uc2hpcChcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpLCAgLy8gSWRlbnRpdHlcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpLCAgLy8gU3RhcnQgTm9kZSBJZGVudGl0eVxuICAgICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksICAvLyBFbmQgTm9kZSBJZGVudGl0eVxuICAgICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksICAvLyBUeXBlXG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgdW5ib3VuZFJlbCA6ICggdW5wYWNrZXIsIGJ1ZiApID0+IHtcbiAgICByZXR1cm4gbmV3IFVuYm91bmRSZWxhdGlvbnNoaXAoXG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgIC8vIElkZW50aXR5XG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgIC8vIFR5cGVcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpIC8vIFByb3BlcnRpZXNcbiAgICApO1xuICB9LFxuICBwYXRoIDogKCB1bnBhY2tlciwgYnVmICkgPT4ge1xuICAgIGxldCBub2RlcyA9IHVucGFja2VyLnVucGFjayhidWYpLFxuICAgICAgICByZWxzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHNlcXVlbmNlID0gdW5wYWNrZXIudW5wYWNrKGJ1Zik7XG4gICAgbGV0IHByZXZOb2RlID0gbm9kZXNbMF0sXG4gICAgICAgIHNlZ21lbnRzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcXVlbmNlLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIGxldCByZWxJbmRleCA9IHNlcXVlbmNlW2ldLFxuICAgICAgICAgICAgbmV4dE5vZGUgPSBub2Rlc1tzZXF1ZW5jZVtpICsgMV1dLFxuICAgICAgICAgICAgcmVsO1xuICAgICAgICBpZiAocmVsSW5kZXggPiAwKSB7XG4gICAgICAgICAgICByZWwgPSByZWxzW3JlbEluZGV4IC0gMV07XG4gICAgICAgICAgICBpZiggcmVsIGluc3RhbmNlb2YgVW5ib3VuZFJlbGF0aW9uc2hpcCApIHtcbiAgICAgICAgICAgICAgLy8gVG8gYXZvaWQgZHVwbGljYXRpb24sIHJlbGF0aW9uc2hpcHMgaW4gYSBwYXRoIGRvIG5vdCBjb250YWluXG4gICAgICAgICAgICAgIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHN0YXJ0IGFuZCBlbmQgbm9kZXMsIHRoYXQncyBpbnN0ZWFkXG4gICAgICAgICAgICAgIC8vIGluZmVycmVkIGZyb20gdGhlIHBhdGggc2VxdWVuY2UuIFRoaXMgaXMgdXMgaW5mZXJyaW5nIChhbmQsXG4gICAgICAgICAgICAgIC8vIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHJlbWVtYmVyaW5nKSB0aGUgc3RhcnQvZW5kIG9mIGEgcmVsLlxuICAgICAgICAgICAgICByZWxzW3JlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChwcmV2Tm9kZS5pZGVudGl0eSwgbmV4dE5vZGUuaWRlbnRpdHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVsID0gcmVsc1stcmVsSW5kZXggLSAxXTtcbiAgICAgICAgICAgIGlmKCByZWwgaW5zdGFuY2VvZiBVbmJvdW5kUmVsYXRpb25zaGlwICkge1xuICAgICAgICAgICAgICAvLyBTZWUgYWJvdmVcbiAgICAgICAgICAgICAgcmVsc1stcmVsSW5kZXggLSAxXSA9IHJlbCA9IHJlbC5iaW5kKG5leHROb2RlLmlkZW50aXR5LCBwcmV2Tm9kZS5pZGVudGl0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRG9uZSBoeWRyYXRpbmcgb25lIHBhdGggc2VnbWVudC5cbiAgICAgICAgc2VnbWVudHMucHVzaCggbmV3IFBhdGhTZWdtZW50KCBwcmV2Tm9kZSwgcmVsLCBuZXh0Tm9kZSApICk7XG4gICAgICAgIHByZXZOb2RlID0gbmV4dE5vZGU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUGF0aChub2Rlc1swXSwgbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0sICBzZWdtZW50cyApO1xuICB9XG59O1xuXG4vKipcbiAqIEEgY29ubmVjdGlvbiBtYW5hZ2VzIHNlbmRpbmcgYW5kIHJlY2lldmluZyBtZXNzYWdlcyBvdmVyIGEgY2hhbm5lbC4gQVxuICogY29ubmVjdG9yIGlzIHZlcnkgY2xvc2VseSB0aWVkIHRvIHRoZSBCb2x0IHByb3RvY29sLCBpdCBpbXBsZW1lbnRzIHRoZVxuICogc2FtZSBtZXNzYWdlIHN0cnVjdHVyZSB3aXRoIHZlcnkgbGl0dGxlIGZyaWxscy4gVGhpcyBtZWFucyBDb25uZWN0b3JzIGFyZVxuICogbmF0dXJhbGx5IHRpZWQgdG8gYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5kIHdlIGV4cGVjdFxuICogYW5vdGhlciBsYXllciB3aWxsIGJlIG5lZWRlZCB0byBzdXBwb3J0IG11bHRpcGxlIHZlcnNpb25zLlxuICpcbiAqIFRoZSBjb25uZWN0b3IgdHJpZXMgdG8gYmF0Y2ggb3V0Ym91bmQgbWVzc2FnZXMgYnkgcmVxdWlyaW5nIGl0cyB1c2Vyc1xuICogdG8gY2FsbCAnc3luYycgd2hlbiBtZXNzYWdlcyBuZWVkIHRvIGJlIHNlbnQsIGFuZCBpdCByb3V0ZXMgcmVzcG9uc2VcbiAqIG1lc3NhZ2VzIGJhY2sgdG8gdGhlIG9yaWdpbmF0b3JzIG9mIHRoZSByZXF1ZXN0cyB0aGF0IGNyZWF0ZWQgdGhvc2VcbiAqIHJlc3BvbnNlIG1lc3NhZ2VzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbmNsYXNzIENvbm5lY3Rpb24ge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGNoYW5uZWwgLSBjaGFubmVsIHdpdGggYSAnd3JpdGUnIGZ1bmN0aW9uIGFuZCBhICdvbm1lc3NhZ2UnXG4gICAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgcHJvcGVydHlcbiAgICogQHBhcmFtIHVybCAtIHVybCB0byBjb25uZWN0IHRvXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoY2hhbm5lbCwgdXJsKSB7XG4gICAgLyoqXG4gICAgICogQW4gb3JkZXJlZCBxdWV1ZSBvZiBvYnNlcnZlcnMsIGVhY2ggZXhjaGFuZ2UgcmVzcG9uc2UgKHplcm8gb3IgbW9yZVxuICAgICAqIFJFQ09SRCBtZXNzYWdlcyBmb2xsb3dlZCBieSBhIFNVQ0NFU1MgbWVzc2FnZSkgd2UgcmVjaWV2ZSB3aWxsIGJlIHJvdXRlZFxuICAgICAqIHRvIHRoZSBuZXh0IHBlbmRpbmcgb2JzZXJ2ZXIuXG4gICAgICovXG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy5zZXJ2ZXIgPSB7YWRkcmVzczogdXJsfTtcbiAgICB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzID0gW107XG4gICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2NoID0gY2hhbm5lbDtcbiAgICB0aGlzLl9kZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgdGhpcy5fY2h1bmtlciA9IG5ldyBDaHVua2VyKCBjaGFubmVsICk7XG4gICAgdGhpcy5fcGFja2VyID0gbmV3IFBhY2tlciggdGhpcy5fY2h1bmtlciApO1xuICAgIHRoaXMuX3VucGFja2VyID0gbmV3IFVucGFja2VyKCk7XG5cbiAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgIHRoaXMuX2N1cnJlbnRGYWlsdXJlID0gbnVsbDtcblxuICAgIC8vIFNldCB0byB0cnVlIG9uIGZhdGFsIGVycm9ycywgdG8gZ2V0IHRoaXMgb3V0IG9mIHNlc3Npb24gcG9vbC5cbiAgICB0aGlzLl9pc0Jyb2tlbiA9IGZhbHNlO1xuXG4gICAgLy8gRm9yIGRlc2VyaWFsaXphdGlvbiwgZXhwbGFpbiB0byB0aGUgdW5wYWNrZXIgaG93IHRvIHVucGFjayBub2RlcywgcmVscywgcGF0aHM7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tOT0RFXSA9IF9tYXBwZXJzLm5vZGU7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tSRUxBVElPTlNISVBdID0gX21hcHBlcnMucmVsO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbVU5CT1VORF9SRUxBVElPTlNISVBdID0gX21hcHBlcnMudW5ib3VuZFJlbDtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1BBVEhdID0gX21hcHBlcnMucGF0aDtcblxuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAvLyBUT0RPOiBVc2luZyBgb25tZXNzYWdlYCBhbmQgYG9uZXJyb3JgIGNhbWUgZnJvbSB0aGUgV2ViU29ja2V0IEFQSSxcbiAgICAvLyBpdCByZWFkcyBwb29ybHkgYW5kIGhhcyBzZXZlcmFsIGFubm95aW5nIGRyYXdiYWNrcy4gU3dhcCB0byBoYXZpbmdcbiAgICAvLyBDaGFubmVsIGV4dGVuZCBFdmVudEVtaXR0ZXIgaW5zdGVhZCwgdGhlbiB3ZSBjYW4gdXNlIGBvbignZGF0YScsLi4pYFxuICAgIHRoaXMuX2NoLm9ubWVzc2FnZSA9IChidWYpID0+IHtcbiAgICAgIGxldCBwcm9wb3NlZCA9IGJ1Zi5yZWFkSW50MzIoKTtcbiAgICAgIGlmKCBwcm9wb3NlZCA9PSAxICkge1xuICAgICAgICAvLyBPaywgcHJvdG9jb2wgcnVubmluZy4gU2ltcGx5IGZvcndhcmQgYWxsIG1lc3NhZ2VzIHBhc3RcbiAgICAgICAgLy8gdGhpcyB0byB0aGUgZGVjaHVua2VyXG4gICAgICAgIHNlbGYuX2NoLm9ubWVzc2FnZSA9IChidWYpID0+IHtcbiAgICAgICAgICBzZWxmLl9kZWNodW5rZXIud3JpdGUoYnVmKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiggYnVmLmhhc1JlbWFpbmluZygpICkge1xuICAgICAgICAgIHNlbGYuX2RlY2h1bmtlci53cml0ZShidWYucmVhZFNsaWNlKCBidWYucmVtYWluaW5nKCkgKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJvcG9zZWQgPT0gMTIxMzQ4NjE2MCkgey8vc2VydmVyIHJlc3BvbmRlZCAxMjEzNDg2MTYwID09IDB4NDg1NDU0NTAgPT0gXCJIVFRQXCJcbiAgICAgICAgc2VsZi5faGFuZGxlRmF0YWxFcnJvcihuZXdFcnJvcihcIlNlcnZlciByZXNwb25kZWQgSFRUUC4gTWFrZSBzdXJlIHlvdSBhcmUgbm90IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBodHRwIGVuZHBvaW50IFwiICtcbiAgICAgICAgICBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc2VsZi5faGFuZGxlRmF0YWxFcnJvcihuZXdFcnJvcihcIlVua25vd24gQm9sdCBwcm90b2NvbCB2ZXJzaW9uOiBcIiArIHByb3Bvc2VkKSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIExpc3RlbiB0byBjb25uZWN0aW9uIGVycm9ycy4gSW1wb3J0YW50IG5vdGUgdGhvdWdoO1xuICAgIC8vIEluIHNvbWUgY2FzZXMgd2Ugd2lsbCBnZXQgYSBjaGFubmVsIHRoYXQgaXMgYWxyZWFkeSBicm9rZW4gKGZvciBpbnN0YW5jZSxcbiAgICAvLyBpZiB0aGUgdXNlciBwYXNzZXMgaW52YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbnMpLiBJbiB0aGlzIGNhc2UsIG9uZXJyb3JcbiAgICAvLyB3aWxsIGhhdmUgXCJhbHJlYWR5IHRyaWdnZXJlZFwiIGJlZm9yZSB3ZSBhZGQgb3V0IGxpc3RlbmVyIGhlcmUuIFNvIHRoZSBsaW5lXG4gICAgLy8gYmVsb3cgYWxzbyBjaGVja3MgdGhhdCB0aGUgY2hhbm5lbCBpcyBub3QgYWxyZWFkeSBmYWlsZWQuIFRoaXMgY291bGQgYmUgbmljZWx5XG4gICAgLy8gZW5jYXBzdWxhdGVkIGludG8gQ2hhbm5lbCBpZiB3ZSB1c2VkIGBvbignZXJyb3InLCAuLilgIHJhdGhlciB0aGFuIGBvbmVycm9yPS4uYFxuICAgIC8vIGFzIG91dGxpbmVkIGluIHRoZSBjb21tZW50IGFib3V0IGBvbm1lc3NhZ2VgIGZ1cnRoZXIgdXAgaW4gdGhpcyBmaWxlLlxuICAgIHRoaXMuX2NoLm9uZXJyb3IgPSB0aGlzLl9oYW5kbGVGYXRhbEVycm9yLmJpbmQodGhpcyk7XG4gICAgaWYoIHRoaXMuX2NoLl9lcnJvciApIHtcbiAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IodGhpcy5fY2guX2Vycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZWNodW5rZXIub25tZXNzYWdlID0gKGJ1ZikgPT4ge1xuICAgICAgc2VsZi5faGFuZGxlTWVzc2FnZSggc2VsZi5fdW5wYWNrZXIudW5wYWNrKCBidWYgKSApO1xuICAgIH07XG5cbiAgICBsZXQgaGFuZHNoYWtlID0gYWxsb2MoIDUgKiA0ICk7XG4gICAgLy9tYWdpYyBwcmVhbWJsZVxuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKCBNQUdJQ19QUkVBTUJMRSApO1xuICAgIC8vcHJvcG9zZWQgdmVyc2lvbnNcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMiggMSApO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKCAwICk7XG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoIDAgKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMiggMCApO1xuICAgIGhhbmRzaGFrZS5yZXNldCgpO1xuICAgIHRoaXMuX2NoLndyaXRlKCBoYW5kc2hha2UgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIkZhdGFsXCIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgZGVhZC4gT25seSBjYWxsIHRoaXMgaWYgc29tZXRoaW5nXG4gICAqIGhhcHBlbnMgdGhhdCBjYW5ub3QgYmUgcmVjb3ZlcmVkIGZyb20uIFRoaXMgd2lsbCBsZWFkIHRvIGFsbCBzdWJzY3JpYmVyc1xuICAgKiBmYWlsaW5nLCBhbmQgdGhlIGNvbm5lY3Rpb24gZ2V0dGluZyBlamVjdGVkIGZyb20gdGhlIHNlc3Npb24gcG9vbC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBhbiBlcnJvciBvYmplY3QsIGZvcndhcmRlZCB0byBhbGwgY3VycmVudCBhbmQgZnV0dXJlIHN1YnNjcmliZXJzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaGFuZGxlRmF0YWxFcnJvciggZXJyICkge1xuICAgIHRoaXMuX2lzQnJva2VuID0gdHJ1ZTtcbiAgICB0aGlzLl9lcnJvciA9IGVycjtcbiAgICBpZiggdGhpcy5fY3VycmVudE9ic2VydmVyICYmIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yICkge1xuICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICB9XG4gICAgd2hpbGUoIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMubGVuZ3RoID4gMCApIHtcbiAgICAgIGxldCBvYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgIGlmKCBvYnNlcnZlciAmJiBvYnNlcnZlci5vbkVycm9yICkge1xuICAgICAgICBvYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZU1lc3NhZ2UoIG1zZyApIHtcbiAgICBjb25zdCBwYXlsb2FkID0gbXNnLmZpZWxkc1swXTtcblxuICAgIHN3aXRjaCggbXNnLnNpZ25hdHVyZSApIHtcbiAgICAgIGNhc2UgUkVDT1JEOlxuICAgICAgICBsb2coXCJTXCIsIFwiUkVDT1JEXCIsIG1zZyk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbk5leHQoIHBheWxvYWQgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNVQ0NFU1M6XG4gICAgICAgIGxvZyhcIlNcIiwgXCJTVUNDRVNTXCIsIG1zZyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uQ29tcGxldGVkKCBwYXlsb2FkICk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGQUlMVVJFOlxuICAgICAgICBsb2coXCJTXCIsIFwiRkFJTFVSRVwiLCBtc2cpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRGYWlsdXJlID0gbmV3RXJyb3IocGF5bG9hZC5tZXNzYWdlLCBwYXlsb2FkLmNvZGUpO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKCB0aGlzLl9jdXJyZW50RmFpbHVyZSApO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgICAvLyBUaGluZ3MgYXJlIG5vdyBicm9rZW4uIFBlbmRpbmcgb2JzZXJ2ZXJzIHdpbGwgZ2V0IEZBSUxVUkUgbWVzc2FnZXMgcm91dGVkIHVudGlsXG4gICAgICAgICAgLy8gV2UgYXJlIGRvbmUgaGFuZGxpbmcgdGhpcyBmYWlsdXJlLlxuICAgICAgICAgIGlmKCAhdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGlzSGFuZGxpbmdGYWlsdXJlIHdhcyBmYWxzZSwgbWVhbmluZyB0aGlzIGlzIHRoZSBmaXJzdCBmYWlsdXJlIG1lc3NhZ2VcbiAgICAgICAgICAgIC8vIHdlIHNlZSBmcm9tIHRoaXMgZmFpbHVyZS4gV2UgbWF5IHNlZSBzZXZlcmFsIG90aGVycywgb25lIGZvciBlYWNoIG1lc3NhZ2VcbiAgICAgICAgICAgIC8vIHdlIGhhZCBcIm9wdGltaXN0aWNhbGx5XCIgYWxyZWFkeSBzZW50IGFmdGVyIHdoYXRldmVyIGl0IHdhcyB0aGF0IGZhaWxlZC5cbiAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBhbmQgbmVlZCB0byBBQ0sgdGhlIGZpcnN0IG9uZSwgd2hpY2ggaXMgd2h5IHdlIGFyZSB0cmFja2luZ1xuICAgICAgICAgICAgLy8gdGhpcyBfaXNIYW5kbGluZ0ZhaWx1cmUgdGhpbmcuXG4gICAgICAgICAgICB0aGlzLl9hY2tGYWlsdXJlKHtcbiAgICAgICAgICAgICAgb25OZXh0OiBOT19PUCxcbiAgICAgICAgICAgICAgb25FcnJvcjogTk9fT1AsXG4gICAgICAgICAgICAgIG9uQ29tcGxldGVkOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RmFpbHVyZSA9IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSUdOT1JFRDpcbiAgICAgICAgbG9nKFwiU1wiLCBcIklHTk9SRURcIiwgbXNnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudEZhaWx1cmUgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IpXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcih0aGlzLl9jdXJyZW50RmFpbHVyZSk7XG4gICAgICAgICAgZWxzZSBpZih0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcilcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKHBheWxvYWQpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IobmV3RXJyb3IoXCJVbmtub3duIEJvbHQgcHJvdG9jb2wgbWVzc2FnZTogXCIgKyBtc2cpKTtcbiAgICB9XG4gIH1cblxuICAvKiogUXVldWUgYW4gSU5JVC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIGluaXRpYWxpemUoIGNsaWVudE5hbWUsIHRva2VuLCBvYnNlcnZlciApIHtcbiAgICBsb2coXCJDXCIsIFwiSU5JVFwiLCBjbGllbnROYW1lLCB0b2tlbik7XG4gICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoIElOSVQsIFt0aGlzLl9wYWNrYWJsZShjbGllbnROYW1lKSwgdGhpcy5fcGFja2FibGUodG9rZW4pXSxcbiAgICAgIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSApO1xuICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgdGhpcy5zeW5jKCk7XG4gIH1cblxuICAvKiogUXVldWUgYSBSVU4tbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICBydW4oIHN0YXRlbWVudCwgcGFyYW1zLCBvYnNlcnZlciApIHtcbiAgICBsb2coXCJDXCIsIFwiUlVOXCIsIHN0YXRlbWVudCwgcGFyYW1zKTtcbiAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdCggUlVOLCBbdGhpcy5fcGFja2FibGUoc3RhdGVtZW50KSwgdGhpcy5fcGFja2FibGUocGFyYW1zKV0sXG4gICAgICAoZXJyKSA9PiB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKGVycikgICk7XG4gICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgfVxuXG4gIC8qKiBRdWV1ZSBhIFBVTExfQUxMLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgcHVsbEFsbCggb2JzZXJ2ZXIgKSB7XG4gICAgbG9nKFwiQ1wiLCBcIlBVTExfQUxMXCIpO1xuICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KCBQVUxMX0FMTCwgW10sIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSApO1xuICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gIH1cblxuICAvKiogUXVldWUgYSBESVNDQVJEX0FMTC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIGRpc2NhcmRBbGwoIG9ic2VydmVyICkge1xuICAgIGxvZyhcIkNcIiwgXCJESVNDQVJEX0FMTFwiKTtcbiAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdCggRElTQ0FSRF9BTEwsIFtdLCAoZXJyKSA9PiB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKGVycikgKTtcbiAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICB9XG5cbiAgLyoqIFF1ZXVlIGEgUkVTRVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZS4gTXV0ZXMgZmFpbHVyZSBoYW5kbGluZy4gKi9cbiAgcmVzZXRBc3luYyggb2JzZXJ2ZXIgKSB7XG4gICAgbG9nKFwiQ1wiLCBcIlJFU0VUX0FTWU5DXCIpO1xuICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgbGV0IHdyYXBwZWRPYnMgPSB7XG4gICAgICBvbk5leHQ6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25OZXh0IDogTk9fT1AsXG4gICAgICBvbkVycm9yOiBvYnNlcnZlciA/IG9ic2VydmVyLm9uRXJyb3IgOiBOT19PUCxcbiAgICAgIG9uQ29tcGxldGVkOiAoKSA9PiB7XG4gICAgICAgIHNlbGYuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgIGlmIChvYnNlcnZlcikge1xuICAgICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIod3JhcHBlZE9icyk7XG4gICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoIFJFU0VULCBbXSwgKGVycikgPT4gdGhpcy5faGFuZGxlRmF0YWxFcnJvcihlcnIpICk7XG4gICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgfVxuXG4gIC8qKiBRdWV1ZSBhIFJFU0VULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgcmVzZXQob2JzZXJ2ZXIpIHtcbiAgICBsb2coJ0MnLCAnUkVTRVQnKTtcbiAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSRVNFVCwgW10sIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSk7XG4gICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgfVxuXG4gIC8qKiBRdWV1ZSBhIEFDS19GQUlMVVJFLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgX2Fja0ZhaWx1cmUoIG9ic2VydmVyICkge1xuICAgIGxvZyhcIkNcIiwgXCJBQ0tfRkFJTFVSRVwiKTtcbiAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdCggQUNLX0ZBSUxVUkUsIFtdLCAoZXJyKSA9PiB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKGVycikgKTtcbiAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICB9XG5cbiAgX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpIHtcbiAgICBpZiggdGhpcy5faXNCcm9rZW4gKSB7XG4gICAgICBpZiggb2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIub25FcnJvciApIHtcbiAgICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9ic2VydmVyID0gb2JzZXJ2ZXIgfHwgTk9fT1BfT0JTRVJWRVI7XG4gICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQgPSBvYnNlcnZlci5vbkNvbXBsZXRlZCB8fCBOT19PUDtcbiAgICBvYnNlcnZlci5vbkVycm9yID0gb2JzZXJ2ZXIub25FcnJvciB8fCBOT19PUDtcbiAgICBvYnNlcnZlci5vbk5leHQgPSBvYnNlcnZlci5vbk5leHQgfHwgTk9fT1A7XG4gICAgaWYoIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9PT0gdW5kZWZpbmVkICkge1xuICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMucHVzaCggb2JzZXJ2ZXIgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3luY2hyb25pemUgLSBmbHVzaCBhbGwgcXVldWVkIG91dGdvaW5nIG1lc3NhZ2VzIGFuZCByb3V0ZSB0aGVpciByZXNwb25zZXNcbiAgICogdG8gdGhlaXIgcmVzcGVjdGl2ZSBoYW5kbGVycy5cbiAgICovXG4gIHN5bmMoKSB7XG4gICAgdGhpcy5fY2h1bmtlci5mbHVzaCgpO1xuICB9XG5cbiAgLyoqIENoZWNrIGlmIHRoaXMgY29ubmVjdGlvbiBpcyBpbiB3b3JraW5nIGNvbmRpdGlvbiAqL1xuICBpc09wZW4oKSB7XG4gICAgcmV0dXJuICF0aGlzLl9pc0Jyb2tlbiAmJiB0aGlzLl9jaC5fb3BlbjtcbiAgfVxuXG4gIGlzRW5jcnlwdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jaC5pc0VuY3J5cHRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgY2xvc2Ugb24gdGhlIGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlKGNiKSB7XG4gICAgdGhpcy5fY2guY2xvc2UoY2IpO1xuICB9XG5cbiAgX3BhY2thYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFja2VyLnBhY2thYmxlKHZhbHVlLCAoZXJyKSA9PiB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKGVycikpO1xuICB9XG5cbiAgc2V0U2VydmVyVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgdGhpcy5zZXJ2ZXIudmVyc2lvbiA9IHZlcnNpb247XG4gIH1cbn1cblxuLyoqXG4gKiBDcmV0ZSBuZXcgY29ubmVjdGlvbiB0byB0aGUgcHJvdmlkZWQgdXJsLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gJ25lbzRqJy1wcmVmaXhlZCBVUkwgdG8gTmVvNGogQm9sdCBlbmRwb2ludFxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZ1xuICogQHJldHVybiB7Q29ubmVjdGlvbn0gLSBOZXcgY29ubmVjdGlvblxuICovXG5mdW5jdGlvbiBjb25uZWN0KCB1cmwsIGNvbmZpZyA9IHt9KSB7XG4gIGxldCBDaCA9IGNvbmZpZy5jaGFubmVsIHx8IENoYW5uZWw7XG4gIGNvbnN0IGhvc3QgPSBwYXJzZUhvc3QodXJsKTtcbiAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydCh1cmwpIHx8IDc2ODc7XG4gIGNvbnN0IGNvbXBsZXRlVXJsID0gaG9zdCArICc6JyArIHBvcnQ7XG5cbiAgcmV0dXJuIG5ldyBDb25uZWN0aW9uKCBuZXcgQ2goe1xuICAgIGhvc3Q6IHBhcnNlSG9zdCh1cmwpLFxuICAgIHBvcnQ6IHBhcnNlUG9ydCh1cmwpIHx8IDc2ODcsXG4gICAgLy8gRGVmYXVsdCB0byB1c2luZyBlbmNyeXB0aW9uIGlmIHRydXN0LW9uLWZpcnN0LXVzZSBpcyBhdmFpbGFibGVcbiAgICBlbmNyeXB0ZWQgOiAoY29uZmlnLmVuY3J5cHRlZCA9PSBudWxsKSA/ICBoYXNGZWF0dXJlKFwidHJ1c3RfYWxsX2NlcnRpZmljYXRlc1wiKSA6IGNvbmZpZy5lbmNyeXB0ZWQsXG4gICAgLy8gRGVmYXVsdCB0byB1c2luZyBUUlVTVF9BTExfQ0VSVElGSUNBVEVTIGlmIGl0IGlzIGF2YWlsYWJsZVxuICAgIHRydXN0IDogY29uZmlnLnRydXN0IHx8IChoYXNGZWF0dXJlKFwidHJ1c3RfYWxsX2NlcnRpZmljYXRlc1wiKSA/IFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFU1wiIDogXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiKSxcbiAgICB0cnVzdGVkQ2VydGlmaWNhdGVzIDogY29uZmlnLnRydXN0ZWRDZXJ0aWZpY2F0ZXMgfHwgW10sXG4gICAga25vd25Ib3N0cyA6IGNvbmZpZy5rbm93bkhvc3RzXG4gIH0pLCBjb21wbGV0ZVVybCk7XG59XG5cbmV4cG9ydCB7XG4gICAgY29ubmVjdCxcbiAgICBwYXJzZVNjaGVtZSxcbiAgICBwYXJzZVVybCxcbiAgICBDb25uZWN0aW9uXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQ2VudHJhbCBwbGFjZSB0byBkZXRlY3QgZmVhdHVyZSBzdXBwb3J0IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSxcbi8vIGV4cGFuZCBhcyBuZWVkZWQuXG5cbmNvbnN0IEZFQVRVUkVTID0ge1xuICB0cnVzdF9vbl9maXJzdF91c2UgOiAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoaXMgaXMgaW5zYW5lLiBXZSBhcmUgdmVyaWZ5aW5nIHRoYXQgd2UgaGF2ZSBhIHZlcnNpb24gb2YgZ2V0UGVlckNlcnRpZmljYXRlXG4gICAgICAvLyB0aGF0IHN1cHBvcnRzIHJlYWRpbmcgdGhlIHdob2xlIGNlcnRpZmljYXRlLCBlZyB0aGlzIGNvbW1pdDpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9jb21taXQvMzQ1YzQwYjZcbiAgICAgIGNvbnN0IGdldFBlZXJDZXJ0aWZpY2F0ZUZ1bmN0aW9uID0gcmVxdWlyZSgndGxzJykuVExTU29ja2V0LnByb3RvdHlwZS5nZXRQZWVyQ2VydGlmaWNhdGU7XG4gICAgICBjb25zdCBudW1iZXJPZlBhcmFtZXRlcnMgPSBnZXRQZWVyQ2VydGlmaWNhdGVGdW5jdGlvbi5sZW5ndGg7XG4gICAgICByZXR1cm4gbnVtYmVyT2ZQYXJhbWV0ZXJzID49IDE7XG4gICAgfSBjYXRjaCggZSApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sXG4gIHRydXN0X2FsbF9jZXJ0aWZpY2F0ZXM6ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZ2V0UGVlckNlcnRpZmljYXRlRnVuY3Rpb24gPSByZXF1aXJlKCd0bHMnKS5UTFNTb2NrZXQucHJvdG90eXBlLmdldFBlZXJDZXJ0aWZpY2F0ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGhhc0ZlYXR1cmUoIG5hbWUgKSB7XG4gIHJldHVybiBGRUFUVVJFU1tuYW1lXSAmJiBGRUFUVVJFU1tuYW1lXSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoYXNGZWF0dXJlO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBSb3VuZFJvYmluQXJyYXkgZnJvbSAnLi9yb3VuZC1yb2Jpbi1hcnJheSc7XG5pbXBvcnQge25ld0Vycm9yLCBQUk9UT0NPTF9FUlJPUiwgU0VSVklDRV9VTkFWQUlMQUJMRX0gZnJvbSAnLi4vZXJyb3InO1xuaW1wb3J0IEludGVnZXIsIHtpbnR9IGZyb20gJy4uL2ludGVnZXInO1xuXG5jb25zdCBQUk9DRURVUkVfQ0FMTCA9ICdDQUxMIGRibXMuY2x1c3Rlci5yb3V0aW5nLmdldFNlcnZlcnMnO1xuY29uc3QgUFJPQ0VEVVJFX05PVF9GT1VORF9DT0RFID0gJ05lby5DbGllbnRFcnJvci5Qcm9jZWR1cmUuUHJvY2VkdXJlTm90Rm91bmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHZXRTZXJ2ZXJzVXRpbCB7XG5cbiAgY2FsbEdldFNlcnZlcnMoc2Vzc2lvbiwgcm91dGVyQWRkcmVzcykge1xuICAgIHJldHVybiBzZXNzaW9uLnJ1bihQUk9DRURVUkVfQ0FMTCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5yZWNvcmRzO1xuICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvci5jb2RlID09PSBQUk9DRURVUkVfTk9UX0ZPVU5EX0NPREUpIHtcbiAgICAgICAgLy8gdGhyb3cgd2hlbiBnZXRTZXJ2ZXJzIHByb2NlZHVyZSBub3QgZm91bmQgYmVjYXVzZSB0aGlzIGlzIGNsZWFybHkgYSBjb25maWd1cmF0aW9uIGlzc3VlXG4gICAgICAgIHRocm93IG5ld0Vycm9yKCdTZXJ2ZXIgJyArIHJvdXRlckFkZHJlc3MgKyAnIGNvdWxkIG5vdCBwZXJmb3JtIHJvdXRpbmcuICcgK1xuICAgICAgICAgICdNYWtlIHN1cmUgeW91IGFyZSBjb25uZWN0aW5nIHRvIGEgY2F1c2FsIGNsdXN0ZXInLCBTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiBub3RoaW5nIHdoZW4gZmFpbGVkIHRvIGNvbm5lY3QgYmVjYXVzZSBjb2RlIGhpZ2hlciBpbiB0aGUgY2FsbHN0YWNrIGlzIHN0aWxsIGFibGUgdG8gcmV0cnkgd2l0aCBhXG4gICAgICAvLyBkaWZmZXJlbnQgc2Vzc2lvbiB0b3dhcmRzIGEgZGlmZmVyZW50IHJvdXRlclxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBwYXJzZVR0bChyZWNvcmQsIHJvdXRlckFkZHJlc3MpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgbm93ID0gaW50KERhdGUubm93KCkpO1xuICAgICAgY29uc3QgZXhwaXJlcyA9IHJlY29yZC5nZXQoJ3R0bCcpLm11bHRpcGx5KDEwMDApLmFkZChub3cpO1xuICAgICAgLy8gaWYgdGhlIHNlcnZlciB1c2VzIGEgcmVhbGx5IGJpZyBleHBpcmUgdGltZSBsaWtlIExvbmcuTUFYX1ZBTFVFIHRoaXMgbWF5IGhhdmUgb3ZlcmZsb3dlZFxuICAgICAgaWYgKGV4cGlyZXMubGVzc1RoYW4obm93KSkge1xuICAgICAgICByZXR1cm4gSW50ZWdlci5NQVhfVkFMVUU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXhwaXJlcztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gcGFyc2UgVFRMIGVudHJ5IGZyb20gcm91dGVyICcgKyByb3V0ZXJBZGRyZXNzICsgJyBmcm9tIHJlY29yZDpcXG4nICsgSlNPTi5zdHJpbmdpZnkocmVjb3JkKSxcbiAgICAgICAgUFJPVE9DT0xfRVJST1IpO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlU2VydmVycyhyZWNvcmQsIHJvdXRlckFkZHJlc3MpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2VydmVycyA9IHJlY29yZC5nZXQoJ3NlcnZlcnMnKTtcblxuICAgICAgY29uc3Qgcm91dGVycyA9IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICAgIGNvbnN0IHJlYWRlcnMgPSBuZXcgUm91bmRSb2JpbkFycmF5KCk7XG4gICAgICBjb25zdCB3cml0ZXJzID0gbmV3IFJvdW5kUm9iaW5BcnJheSgpO1xuXG4gICAgICBzZXJ2ZXJzLmZvckVhY2goc2VydmVyID0+IHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IHNlcnZlclsncm9sZSddO1xuICAgICAgICBjb25zdCBhZGRyZXNzZXMgPSBzZXJ2ZXJbJ2FkZHJlc3NlcyddO1xuXG4gICAgICAgIGlmIChyb2xlID09PSAnUk9VVEUnKSB7XG4gICAgICAgICAgcm91dGVycy5wdXNoQWxsKGFkZHJlc3Nlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAocm9sZSA9PT0gJ1dSSVRFJykge1xuICAgICAgICAgIHdyaXRlcnMucHVzaEFsbChhZGRyZXNzZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHJvbGUgPT09ICdSRUFEJykge1xuICAgICAgICAgIHJlYWRlcnMucHVzaEFsbChhZGRyZXNzZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ld0Vycm9yKCdVbmtub3duIHNlcnZlciByb2xlIFwiJyArIHJvbGUgKyAnXCInLCBQUk9UT0NPTF9FUlJPUik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICByb3V0ZXJzOiByb3V0ZXJzLFxuICAgICAgICByZWFkZXJzOiByZWFkZXJzLFxuICAgICAgICB3cml0ZXJzOiB3cml0ZXJzXG4gICAgICB9XG4gICAgfSBjYXRjaCAoaWdub3JlKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcihcbiAgICAgICAgJ1VuYWJsZSB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IGZyb20gcm91dGVyICcgKyByb3V0ZXJBZGRyZXNzICsgJyBmcm9tIHJlY29yZDpcXG4nICsgSlNPTi5zdHJpbmdpZnkocmVjb3JkKSxcbiAgICAgICAgUFJPVE9DT0xfRVJST1IpO1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgdXRmOCBmcm9tIFwiLi91dGY4XCI7XG5pbXBvcnQgSW50ZWdlciwge2ludCwgaXNJbnR9IGZyb20gXCIuLi9pbnRlZ2VyXCI7XG5pbXBvcnQge25ld0Vycm9yfSBmcm9tIFwiLi8uLi9lcnJvclwiO1xuXG5jb25zdCBUSU5ZX1NUUklORyA9IDB4ODA7XG5jb25zdCBUSU5ZX0xJU1QgPSAweDkwO1xuY29uc3QgVElOWV9NQVAgPSAweEEwO1xuY29uc3QgVElOWV9TVFJVQ1QgPSAweEIwO1xuY29uc3QgTlVMTCA9IDB4QzA7XG5jb25zdCBGTE9BVF82NCA9IDB4QzE7XG5jb25zdCBGQUxTRSA9IDB4QzI7XG5jb25zdCBUUlVFID0gMHhDMztcbmNvbnN0IElOVF84ID0gMHhDODtcbmNvbnN0IElOVF8xNiA9IDB4Qzk7XG5jb25zdCBJTlRfMzIgPSAweENBO1xuY29uc3QgSU5UXzY0ID0gMHhDQjtcbmNvbnN0IFNUUklOR184ID0gMHhEMDtcbmNvbnN0IFNUUklOR18xNiA9IDB4RDE7XG5jb25zdCBTVFJJTkdfMzIgPSAweEQyO1xuY29uc3QgTElTVF84ID0gMHhENDtcbmNvbnN0IExJU1RfMTYgPSAweEQ1O1xuY29uc3QgTElTVF8zMiA9IDB4RDY7XG5jb25zdCBNQVBfOCA9IDB4RDg7XG5jb25zdCBNQVBfMTYgPSAweEQ5O1xuY29uc3QgTUFQXzMyID0gMHhEQTtcbmNvbnN0IFNUUlVDVF84ID0gMHhEQztcbmNvbnN0IFNUUlVDVF8xNiA9IDB4REQ7XG5cbi8qKlxuICAqIEEgU3RydWN0dXJlIGhhdmUgYSBzaWduYXR1cmUgYW5kIGZpZWxkcy5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cbmNsYXNzIFN0cnVjdHVyZSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3Rvciggc2lnbmF0dXJlLCBmaWVsZHMgKSB7XG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgZmllbGRTdHIgPSBcIlwiO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmKGkgPiAwKSB7IGZpZWxkU3RyKz1cIiwgXCIgfVxuICAgICAgZmllbGRTdHIgKz0gdGhpcy5maWVsZHNbaV07XG4gICAgfVxuICAgIHJldHVybiBcIlN0cnVjdHVyZShcIiArIHRoaXMuc2lnbmF0dXJlICsgXCIsIFtcIiArIHRoaXMuZmllbGRzICsgXCJdKVwiXG4gIH1cbn1cblxuLyoqXG4gICogQ2xhc3MgdG8gcGFja1xuICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAqL1xuY2xhc3MgUGFja2VyIHtcbiAgY29uc3RydWN0b3IgKGNoYW5uZWwpIHtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhY2thYmxlIGZ1bmN0aW9uIG91dCBvZiB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgICogQHBhcmFtIHggdGhlIHZhbHVlIHRvIHBhY2tcbiAgICogQHBhcmFtIG9uRXJyb3IgY2FsbGJhY2sgZm9yIHRoZSBjYXNlIHdoZW4gdmFsdWUgY2Fubm90IGJlIHBhY2tlZFxuICAgKiBAcmV0dXJucyBGdW5jdGlvblxuICAgKi9cbiAgcGFja2FibGUgKHgsIG9uRXJyb3IpIHtcbiAgICBpZiAoeCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMuX2NoLndyaXRlVUludDgoIE5VTEwgKTtcbiAgICB9IGVsc2UgaWYgKHggPT09IHRydWUpIHtcbiAgICAgIHJldHVybiAoKSA9PiB0aGlzLl9jaC53cml0ZVVJbnQ4KCBUUlVFICk7XG4gICAgfSBlbHNlIGlmICh4ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMuX2NoLndyaXRlVUludDgoIEZBTFNFICk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YoeCkgPT0gXCJudW1iZXJcIikge1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMucGFja0Zsb2F0KHgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mKHgpID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiAoKSA9PiB0aGlzLnBhY2tTdHJpbmcoeCwgb25FcnJvcik7XG4gICAgfSBlbHNlIGlmIChpc0ludCh4KSkge1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMucGFja0ludGVnZXIoIHggKTtcbiAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdGhpcy5wYWNrTGlzdEhlYWRlcih4Lmxlbmd0aCwgb25FcnJvcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRoaXMucGFja2FibGUoeFtpXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHhbaV0sIG9uRXJyb3IpKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBTdHJ1Y3R1cmUpIHtcbiAgICAgIHZhciBwYWNrYWJsZUZpZWxkcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4LmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYWNrYWJsZUZpZWxkc1tpXSA9IHRoaXMucGFja2FibGUoeC5maWVsZHNbaV0sIG9uRXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICgpID0+IHRoaXMucGFja1N0cnVjdCggeC5zaWduYXR1cmUsIHBhY2thYmxlRmllbGRzICk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YoeCkgPT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh4KTtcblxuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoeFtrZXlzW2ldXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhY2tNYXBIZWFkZXIoY291bnQsIG9uRXJyb3IpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoeFtrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucGFja1N0cmluZyhrZXkpO1xuICAgICAgICAgICAgdGhpcy5wYWNrYWJsZSh4W2tleV0sIG9uRXJyb3IpKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob25FcnJvcikge1xuICAgICAgICBvbkVycm9yKG5ld0Vycm9yKFwiQ2Fubm90IHBhY2sgdGhpcyB2YWx1ZTogXCIgKyB4KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKCkgPT4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYWNrcyBhIHN0cnVjdFxuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgb2YgdGhlIHN0cnVjdFxuICAgKiBAcGFyYW0gcGFja2FibGVGaWVsZHMgdGhlIGZpZWxkcyBvZiB0aGUgc3RydWN0LCBtYWtlIHN1cmUgeW91IGNhbGwgYHBhY2thYmxlIG9uIGFsbCBmaWVsZHNgXG4gICAqL1xuICBwYWNrU3RydWN0ICggc2lnbmF0dXJlLCBwYWNrYWJsZUZpZWxkcywgb25FcnJvcikge1xuICAgIHBhY2thYmxlRmllbGRzID0gcGFja2FibGVGaWVsZHMgfHwgW107XG4gICAgdGhpcy5wYWNrU3RydWN0SGVhZGVyKHBhY2thYmxlRmllbGRzLmxlbmd0aCwgc2lnbmF0dXJlLCBvbkVycm9yKTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgcGFja2FibGVGaWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhY2thYmxlRmllbGRzW2ldKCk7XG4gICAgfVxuICB9XG4gIHBhY2tJbnRlZ2VyICh4KSB7XG4gICAgdmFyIGhpZ2ggPSB4LmhpZ2gsXG4gICAgICAgIGxvdyAgPSB4LmxvdztcblxuICAgIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHgxMCkgJiYgeC5sZXNzVGhhbigweDgwKSkge1xuICAgICAgdGhpcy5fY2gud3JpdGVJbnQ4KGxvdyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwKSAmJiB4Lmxlc3NUaGFuKC0weDEwKSkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfOCk7XG4gICAgICB0aGlzLl9jaC53cml0ZUludDgobG93KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMCkgJiYgeC5sZXNzVGhhbigweDgwMDApKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8xNik7XG4gICAgICB0aGlzLl9jaC53cml0ZUludDE2KGxvdyk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwMDAwMDAwKSAmJiB4Lmxlc3NUaGFuKDB4ODAwMDAwMDApKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF8zMik7XG4gICAgICB0aGlzLl9jaC53cml0ZUludDMyKGxvdyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfNjQpO1xuICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihoaWdoKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICB9XG4gIH1cbiAgcGFja0Zsb2F0KHgpIHtcbiAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KEZMT0FUXzY0KTtcbiAgICB0aGlzLl9jaC53cml0ZUZsb2F0NjQoeCk7XG4gIH1cblxuICBwYWNrU3RyaW5nICh4LCBvbkVycm9yKSB7XG4gICAgbGV0IGJ5dGVzID0gdXRmOC5lbmNvZGUoeCk7XG4gICAgbGV0IHNpemUgPSBieXRlcy5sZW5ndGg7XG4gICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfU1RSSU5HIHwgc2l6ZSk7XG4gICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfOClcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR18xNik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUvMjU2Pj4wKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzMyKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvMTY3NzcyMTY+PjApJTI1Nik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzY1NTM2Pj4wKSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZS8yNTY+PjApJTI1Nik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUlMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkVycm9yKG5ld0Vycm9yKFwiVVRGLTggc3RyaW5ncyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICB9XG4gIH1cblxuICBwYWNrTGlzdEhlYWRlciAoc2l6ZSwgb25FcnJvcikge1xuICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX0xJU1QgfCBzaXplKTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzgpXG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF8xNik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzI1Nj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSUyNTYpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDAwMDAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfMzIpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZS8xNjc3NzIxNj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvNjU1MzY+PjApJTI1Nik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzI1Nj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSUyNTYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkVycm9yKG5ld0Vycm9yKFwiTGlzdHMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgfVxuICB9XG5cbiAgcGFja01hcEhlYWRlciAoc2l6ZSwgb25FcnJvcikge1xuICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX01BUCB8IHNpemUpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF84KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplLzI1Nj4+MCk7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUlMjU2KTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChNQVBfMzIpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZS8xNjc3NzIxNj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvNjU1MzY+PjApJTI1Nik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzI1Nj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSUyNTYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvbkVycm9yKG5ld0Vycm9yKFwiTWFwcyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICB9XG4gIH1cblxuICBwYWNrU3RydWN0SGVhZGVyIChzaXplLCBzaWduYXR1cmUsIG9uRXJyb3IpIHtcbiAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9TVFJVQ1QgfCBzaXplKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2lnbmF0dXJlKTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJVQ1RfOCk7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaWduYXR1cmUpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSVUNUXzE2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZS8yNTY+PjApO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplJTI1Nik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uRXJyb3IobmV3RXJyb3IoXCJTdHJ1Y3R1cmVzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgKiBDbGFzcyB0byB1bnBhY2tcbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cbmNsYXNzIFVucGFja2VyIHtcbiAgY29uc3RydWN0b3IgKCkge1xuICAgIC8vIEhpZ2hlciBsZXZlbCBsYXllcnMgY2FuIHNwZWNpZnkgaG93IHRvIG1hcCBzdHJ1Y3RzIHRvIGhpZ2hlci1sZXZlbCBvYmplY3RzLlxuICAgIC8vIElmIHdlIHJlY2lldmUgYSBzdHJ1Y3QgdGhhdCBoYXMgYSBzaWduYXR1cmUgdGhhdCBkb2VzIG5vdCBoYXZlIGEgbWFwcGVyLFxuICAgIC8vIHdlIHNpbXBseSByZXR1cm4gYSBTdHJ1Y3R1cmUgb2JqZWN0LlxuICAgIHRoaXMuc3RydWN0TWFwcGVycyA9IHt9O1xuICB9XG5cbiAgdW5wYWNrTGlzdCAoc2l6ZSwgYnVmZmVyKSB7XG4gICAgbGV0IHZhbHVlID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgdmFsdWUucHVzaCggdGhpcy51bnBhY2soIGJ1ZmZlciApICk7XG4gICAgfSBcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB1bnBhY2tNYXAgKHNpemUsIGJ1ZmZlcikge1xuICAgIGxldCB2YWx1ZSA9IHt9O1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGxldCBrZXkgPSB0aGlzLnVucGFjayhidWZmZXIpO1xuICAgICAgdmFsdWVba2V5XSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHVucGFja1N0cnVjdCAoc2l6ZSwgYnVmZmVyKSB7XG4gICAgbGV0IHNpZ25hdHVyZSA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBsZXQgbWFwcGVyID0gdGhpcy5zdHJ1Y3RNYXBwZXJzW3NpZ25hdHVyZV07XG4gICAgaWYoIG1hcHBlciApIHtcbiAgICAgIHJldHVybiBtYXBwZXIoIHRoaXMsIGJ1ZmZlciApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdmFsdWUgPSBuZXcgU3RydWN0dXJlKHNpZ25hdHVyZSwgW10pO1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICB2YWx1ZS5maWVsZHMucHVzaCh0aGlzLnVucGFjayhidWZmZXIpKTtcbiAgICAgIH0gXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgdW5wYWNrICggYnVmZmVyICkge1xuICAgIGxldCBtYXJrZXIgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWYgKG1hcmtlciA9PSBOVUxMKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBUUlVFKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBGQUxTRSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZMT0FUXzY0KSB7XG4gICAgICByZXR1cm4gYnVmZmVyLnJlYWRGbG9hdDY0KCk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPj0gMCAmJiBtYXJrZXIgPCAxMjgpIHtcbiAgICAgIHJldHVybiBpbnQobWFya2VyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA+PSAyNDAgJiYgbWFya2VyIDwgMjU2KSB7XG4gICAgICByZXR1cm4gaW50KG1hcmtlciAtIDI1Nik7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzgpIHtcbiAgICAgIHJldHVybiBpbnQoYnVmZmVyLnJlYWRJbnQ4KCkpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF8xNikge1xuICAgICAgcmV0dXJuIGludChidWZmZXIucmVhZEludDE2KCkpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF8zMikge1xuICAgICAgbGV0IGIgPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICByZXR1cm4gaW50KGIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IElOVF82NCkge1xuICAgICAgbGV0IGhpZ2ggPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICBsZXQgbG93ICA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgIHJldHVybiBuZXcgSW50ZWdlciggbG93LCBoaWdoICk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzgpIHtcbiAgICAgIHJldHVybiB1dGY4LmRlY29kZSggYnVmZmVyLCBidWZmZXIucmVhZFVJbnQ4KCkpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR18xNikge1xuICAgICAgcmV0dXJuIHV0ZjguZGVjb2RlKCBidWZmZXIsIGJ1ZmZlci5yZWFkVUludDE2KCkgKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMzIpIHtcbiAgICAgIHJldHVybiB1dGY4LmRlY29kZSggYnVmZmVyLCBidWZmZXIucmVhZFVJbnQzMigpICk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF84KSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzE2KSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTElTVF8zMikge1xuICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQzMigpLCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF84KSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8xNikge1xuICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzMyKSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MzIoKSwgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfOCkge1xuICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfMTYpIHtcbiAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChidWZmZXIucmVhZFVJbnQxNigpLCBidWZmZXIpO1xuICAgIH1cbiAgICBsZXQgbWFya2VySGlnaCA9IG1hcmtlciAmIDB4RjA7XG4gICAgbGV0IG1hcmtlckxvdyA9IG1hcmtlciAmIDB4MEY7XG4gICAgaWYgKG1hcmtlckhpZ2ggPT0gMHg4MCkge1xuICAgICAgcmV0dXJuIHV0ZjguZGVjb2RlKCBidWZmZXIsIG1hcmtlckxvdyApO1xuICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweDkwKSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHhBMCkge1xuICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlckhpZ2ggPT0gMHhCMCkge1xuICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoXCJVbmtub3duIHBhY2tlZCB2YWx1ZSB3aXRoIG1hcmtlciBcIiArIG1hcmtlci50b1N0cmluZygxNikpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQge1xuICBQYWNrZXIsXG4gIFVucGFja2VyLFxuICBTdHJ1Y3R1cmVcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5jbGFzcyBQb29sIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBjcmVhdGUgIGFuIGFsbG9jYXRpb24gZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgbmV3IHJlc291cmNlLiBJdCdzIGdpdmVuXG4gICAqICAgICAgICAgICAgICAgIGEgc2luZ2xlIGFyZ3VtZW50LCBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZXR1cm4gdGhlIHJlc291cmNlIHRvXG4gICAqICAgICAgICAgICAgICAgIHRoZSBwb29sIGlmIGludm9rZWQsIHdoaWNoIGlzIG1lYW50IHRvIGJlIGNhbGxlZCBvbiAuZGlzcG9zZVxuICAgKiAgICAgICAgICAgICAgICBvciAuY2xvc2Ugb3Igd2hhdGV2ZXIgbWVjaGFuaXNtIHRoZSByZXNvdXJjZSB1c2VzIHRvIGZpbmFsaXplLlxuICAgKiBAcGFyYW0gZGVzdHJveSBjYWxsZWQgd2l0aCB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBldmljdGVkIGZyb20gdGhpcyBwb29sXG4gICAqIEBwYXJhbSB2YWxpZGF0ZSBjYWxsZWQgYXQgdmFyaW91cyB0aW1lcyAobGlrZSB3aGVuIGFuIGluc3RhbmNlIGlzIGFjcXVpcmVkIGFuZFxuICAgKiAgICAgICAgICAgICAgICAgd2hlbiBpdCBpcyByZXR1cm5lZCkuIElmIHRoaXMgcmV0dXJucyBmYWxzZSwgdGhlIHJlc291cmNlIHdpbGxcbiAgICogICAgICAgICAgICAgICAgIGJlIGV2aWN0ZWRcbiAgICogQHBhcmFtIG1heElkbGUgdGhlIG1heCBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGFsbG93ZWQgaWRsZSBpbiB0aGUgcG9vbCBhdFxuICAgKiAgICAgICAgICAgICAgICBhbnkgdGltZS4gSWYgdGhpcyB0aHJlc2hvbGQgaXMgZXhjZWVkZWQsIHJlc291cmNlcyB3aWxsIGJlIGV2aWN0ZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjcmVhdGUsIGRlc3Ryb3k9KCgpPT50cnVlKSwgdmFsaWRhdGU9KCgpPT50cnVlKSwgbWF4SWRsZT01MCkge1xuICAgIHRoaXMuX2NyZWF0ZSA9IGNyZWF0ZTtcbiAgICB0aGlzLl9kZXN0cm95ID0gZGVzdHJveTtcbiAgICB0aGlzLl92YWxpZGF0ZSA9IHZhbGlkYXRlO1xuICAgIHRoaXMuX21heElkbGUgPSBtYXhJZGxlO1xuICAgIHRoaXMuX3Bvb2xzID0ge307XG4gICAgdGhpcy5fcmVsZWFzZSA9IHRoaXMuX3JlbGVhc2UuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGFjcXVpcmUoa2V5KSB7XG4gICAgbGV0IHJlc291cmNlO1xuICAgIGxldCBwb29sID0gdGhpcy5fcG9vbHNba2V5XTtcbiAgICBpZiAoIXBvb2wpIHtcbiAgICAgIHBvb2wgPSBbXTtcbiAgICAgIHRoaXMuX3Bvb2xzW2tleV0gPSBwb29sO1xuICAgIH1cbiAgICB3aGlsZSAocG9vbC5sZW5ndGgpIHtcbiAgICAgIHJlc291cmNlID0gcG9vbC5wb3AoKTtcblxuICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRlKHJlc291cmNlKSkge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9kZXN0cm95KHJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlKGtleSwgdGhpcy5fcmVsZWFzZSk7XG4gIH1cblxuICBwdXJnZShrZXkpIHtcbiAgICBsZXQgcmVzb3VyY2U7XG4gICAgbGV0IHBvb2wgPSB0aGlzLl9wb29sc1trZXldIHx8IFtdO1xuICAgIHdoaWxlIChwb29sLmxlbmd0aCkge1xuICAgICAgcmVzb3VyY2UgPSBwb29sLnBvcCgpO1xuICAgICAgdGhpcy5fZGVzdHJveShyZXNvdXJjZSlcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMuX3Bvb2xzW2tleV1cbiAgfVxuXG4gIHB1cmdlQWxsKCkge1xuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl9wb29scy5rZXlzKSB7XG4gICAgICBpZiAodGhpcy5fcG9vbHMuaGFzT3duUHJvcGVydHlrZXkpIHtcbiAgICAgICAgdGhpcy5wdXJnZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhrZXkpIHtcbiAgICByZXR1cm4gKGtleSBpbiB0aGlzLl9wb29scyk7XG4gIH1cblxuICBfcmVsZWFzZShrZXksIHJlc291cmNlKSB7XG4gICAgbGV0IHBvb2wgPSB0aGlzLl9wb29sc1trZXldO1xuICAgIGlmICghcG9vbCkge1xuICAgICAgLy9rZXkgaGFzIGJlZW4gcHVyZ2VkLCBkb24ndCBwdXQgaXQgYmFja1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiggcG9vbC5sZW5ndGggPj0gdGhpcy5fbWF4SWRsZSB8fCAhdGhpcy5fdmFsaWRhdGUocmVzb3VyY2UpICkge1xuICAgICAgdGhpcy5fZGVzdHJveShyZXNvdXJjZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvb2wucHVzaChyZXNvdXJjZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBvb2xcblxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBHZXRTZXJ2ZXJzVXRpbCBmcm9tIFwiLi9nZXQtc2VydmVycy11dGlsXCI7XG5pbXBvcnQgUm91dGluZ1RhYmxlIGZyb20gXCIuL3JvdXRpbmctdGFibGVcIjtcbmltcG9ydCB7bmV3RXJyb3IsIFBST1RPQ09MX0VSUk9SfSBmcm9tIFwiLi4vZXJyb3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVkaXNjb3Zlcnkge1xuXG4gIGNvbnN0cnVjdG9yKGdldFNlcnZlcnNVdGlsKSB7XG4gICAgdGhpcy5fZ2V0U2VydmVyc1V0aWwgPSBnZXRTZXJ2ZXJzVXRpbCB8fCBuZXcgR2V0U2VydmVyc1V0aWwoKTtcbiAgfVxuXG4gIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHNlc3Npb24sIHJvdXRlckFkZHJlc3MpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0U2VydmVyc1V0aWwuY2FsbEdldFNlcnZlcnMoc2Vzc2lvbiwgcm91dGVyQWRkcmVzcykudGhlbihyZWNvcmRzID0+IHtcbiAgICAgIGlmIChyZWNvcmRzID09PSBudWxsKSB7XG4gICAgICAgIC8vIGNvbm5lY3Rpb24gZXJyb3IgaGFwcGVuZWQsIHVuYWJsZSB0byByZXRyaWV2ZSByb3V0aW5nIHRhYmxlIGZyb20gdGhpcyByb3V0ZXIsIG5leHQgb25lIHNob3VsZCBiZSBxdWVyaWVkXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3Jkcy5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ0lsbGVnYWwgcmVzcG9uc2UgZnJvbSByb3V0ZXIgXCInICsgcm91dGVyQWRkcmVzcyArICdcIi4gJyArXG4gICAgICAgICAgJ1JlY2VpdmVkICcgKyByZWNvcmRzLmxlbmd0aCArICcgcmVjb3JkcyBidXQgZXhwZWN0ZWQgb25seSBvbmUuXFxuJyArIEpTT04uc3RyaW5naWZ5KHJlY29yZHMpLFxuICAgICAgICAgIFBST1RPQ09MX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjb3JkID0gcmVjb3Jkc1swXTtcblxuICAgICAgY29uc3QgZXhwaXJhdGlvblRpbWUgPSB0aGlzLl9nZXRTZXJ2ZXJzVXRpbC5wYXJzZVR0bChyZWNvcmQsIHJvdXRlckFkZHJlc3MpO1xuICAgICAgY29uc3Qge3JvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnN9ID0gdGhpcy5fZ2V0U2VydmVyc1V0aWwucGFyc2VTZXJ2ZXJzKHJlY29yZCwgcm91dGVyQWRkcmVzcyk7XG5cbiAgICAgIFJlZGlzY292ZXJ5Ll9hc3NlcnROb25FbXB0eShyb3V0ZXJzLCAncm91dGVycycsIHJvdXRlckFkZHJlc3MpO1xuICAgICAgUmVkaXNjb3ZlcnkuX2Fzc2VydE5vbkVtcHR5KHJlYWRlcnMsICdyZWFkZXJzJywgcm91dGVyQWRkcmVzcyk7XG4gICAgICAvLyBjYXNlIHdpdGggbm8gd3JpdGVycyBpcyBwcm9jZXNzZWQgaGlnaGVyIGluIHRoZSBwcm9taXNlIGNoYWluIGJlY2F1c2Ugb25seSBSb3V0aW5nRHJpdmVyIGtub3dzXG4gICAgICAvLyBob3cgdG8gZGVhbCB3aXRoIHN1Y2ggdGFibGUgYW5kIGhvdyB0byB0cmVhdCByb3V0ZXIgdGhhdCByZXR1cm5lZCBzdWNoIHRhYmxlXG5cbiAgICAgIHJldHVybiBuZXcgUm91dGluZ1RhYmxlKHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMsIGV4cGlyYXRpb25UaW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBfYXNzZXJ0Tm9uRW1wdHkoc2VydmVyc1JvdW5kUm9iaW5BcnJheSwgc2VydmVyc05hbWUsIHJvdXRlckFkZHJlc3MpIHtcbiAgICBpZiAoc2VydmVyc1JvdW5kUm9iaW5BcnJheS5pc0VtcHR5KCkpIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdSZWNlaXZlZCBubyAnICsgc2VydmVyc05hbWUgKyAnIGZyb20gcm91dGVyICcgKyByb3V0ZXJBZGRyZXNzLCBQUk9UT0NPTF9FUlJPUik7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBBbiBhcnJheSB0aGF0IGxldHMgeW91IGhvcCB0aHJvdWdoIHRoZSBlbGVtZW50cyBlbmRsZXNzbHkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdW5kUm9iaW5BcnJheSB7XG5cbiAgY29uc3RydWN0b3IoaXRlbXMpIHtcbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgIHRoaXMuX29mZnNldCA9IDA7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fb2Zmc2V0ICUgdGhpcy5zaXplKCk7XG4gICAgdGhpcy5fb2Zmc2V0Kys7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2luZGV4XTtcbiAgfVxuXG4gIHB1c2hBbGwoZWxlbXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbXMpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheSBleHBlY3RlZCBidXQgZ290OiAnICsgZWxlbXMpO1xuICAgIH1cblxuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMuX2l0ZW1zLCBlbGVtcyk7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGg7XG4gIH1cblxuICB0b0FycmF5KCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIHJlbW92ZShpdGVtKSB7XG4gICAgdGhpcy5faXRlbXMgPSB0aGlzLl9pdGVtcy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICE9PSBpdGVtKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge2ludH0gZnJvbSBcIi4uL2ludGVnZXJcIjtcbmltcG9ydCBSb3VuZFJvYmluQXJyYXkgZnJvbSBcIi4vcm91bmQtcm9iaW4tYXJyYXlcIjtcblxuY29uc3QgTUlOX1JPVVRFUlMgPSAxO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSb3V0aW5nVGFibGUge1xuXG4gIGNvbnN0cnVjdG9yKHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMsIGV4cGlyYXRpb25UaW1lKSB7XG4gICAgdGhpcy5yb3V0ZXJzID0gcm91dGVycyB8fCBuZXcgUm91bmRSb2JpbkFycmF5KCk7XG4gICAgdGhpcy5yZWFkZXJzID0gcmVhZGVycyB8fCBuZXcgUm91bmRSb2JpbkFycmF5KCk7XG4gICAgdGhpcy53cml0ZXJzID0gd3JpdGVycyB8fCBuZXcgUm91bmRSb2JpbkFycmF5KCk7XG4gICAgdGhpcy5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lIHx8IGludCgwKTtcbiAgfVxuXG4gIGZvcmdldChhZGRyZXNzKSB7XG4gICAgLy8gRG9uJ3QgcmVtb3ZlIGl0IGZyb20gdGhlIHNldCBvZiByb3V0ZXJzLCBzaW5jZSB0aGF0IG1pZ2h0IG1lYW4gd2UgbG9zZSBvdXIgYWJpbGl0eSB0byByZS1kaXNjb3ZlcixcbiAgICAvLyBqdXN0IHJlbW92ZSBpdCBmcm9tIHRoZSBzZXQgb2YgcmVhZGVycyBhbmQgd3JpdGVycywgc28gdGhhdCB3ZSBkb24ndCB1c2UgaXQgZm9yIGFjdHVhbCB3b3JrIHdpdGhvdXRcbiAgICAvLyBwZXJmb3JtaW5nIGRpc2NvdmVyeSBmaXJzdC5cbiAgICB0aGlzLnJlYWRlcnMucmVtb3ZlKGFkZHJlc3MpO1xuICAgIHRoaXMud3JpdGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gIH1cblxuICBmb3JnZXRSb3V0ZXIoYWRkcmVzcykge1xuICAgIHRoaXMucm91dGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gIH1cblxuICBmb3JnZXRXcml0ZXIoYWRkcmVzcykge1xuICAgIHRoaXMud3JpdGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gIH1cblxuICBzZXJ2ZXJzRGlmZihvdGhlclJvdXRpbmdUYWJsZSkge1xuICAgIGNvbnN0IG9sZFNlcnZlcnMgPSBuZXcgU2V0KHRoaXMuX2FsbFNlcnZlcnMoKSk7XG4gICAgY29uc3QgbmV3U2VydmVycyA9IG90aGVyUm91dGluZ1RhYmxlLl9hbGxTZXJ2ZXJzKCk7XG4gICAgbmV3U2VydmVycy5mb3JFYWNoKG5ld1NlcnZlciA9PiBvbGRTZXJ2ZXJzLmRlbGV0ZShuZXdTZXJ2ZXIpKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShvbGRTZXJ2ZXJzKTtcbiAgfVxuXG4gIGlzU3RhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwaXJhdGlvblRpbWUubGVzc1RoYW4oRGF0ZS5ub3coKSkgfHxcbiAgICAgIHRoaXMucm91dGVycy5zaXplKCkgPD0gTUlOX1JPVVRFUlMgfHxcbiAgICAgIHRoaXMucmVhZGVycy5pc0VtcHR5KCkgfHxcbiAgICAgIHRoaXMud3JpdGVycy5pc0VtcHR5KCk7XG4gIH1cblxuICBfYWxsU2VydmVycygpIHtcbiAgICByZXR1cm4gWy4uLnRoaXMucm91dGVycy50b0FycmF5KCksIC4uLnRoaXMucmVhZGVycy50b0FycmF5KCksIC4uLnRoaXMud3JpdGVycy50b0FycmF5KCldO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IFJlY29yZCBmcm9tIFwiLi4vcmVjb3JkXCI7XG5cbi8qKlxuICogSGFuZGxlcyBhIFJVTi9QVUxMX0FMTCwgb3IgUlVOL0RJU0NBUkRfQUxMIHJlcXVlc3RzLCBtYXBzIHRoZSByZXNwb25zZXNcbiAqIGluIGEgd2F5IHRoYXQgYSB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGNhbiBzZWUgdGhlc2UgYXMgYSBjbGVhbiBTdHJlYW1cbiAqIG9mIHJlY29yZHMuXG4gKiBUaGlzIGNsYXNzIHdpbGwgcXVldWUgdXAgaW5jb21pbmcgbWVzc2FnZXMgdW50aWwgYSB1c2VyLXByb3ZpZGVkIG9ic2VydmVyXG4gKiBmb3IgdGhlIGluY29taW5nIHN0cmVhbSBpcyByZWdpc3RlcmVkLiBUaHVzLCB3ZSBrZWVwIGZpZWxkcyBhcm91bmRcbiAqIGZvciB0cmFja2luZyBoZWFkL3JlY29yZHMvdGFpbC4gVGhlc2UgYXJlIG9ubHkgdXNlZCBpZiB0aGVyZSBpcyBub1xuICogb2JzZXJ2ZXIgcmVnaXN0ZXJlZC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5jbGFzcyBTdHJlYW1PYnNlcnZlciB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGVycm9yVHJhbnNmb3JtZXIgb3B0aW9uYWwgY2FsbGJhY2sgdG8gYmUgdXNlZCBmb3IgYWRkaW5nIGFkZGl0aW9uYWwgbG9naWMgb24gZXJyb3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKGVycm9yVHJhbnNmb3JtZXIgPSAoZXJyKSA9PiB7cmV0dXJuIGVycn0pIHtcbiAgICB0aGlzLl9maWVsZEtleXMgPSBudWxsO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gbnVsbDtcbiAgICB0aGlzLl9xdWV1ZWRSZWNvcmRzID0gW107XG4gICAgdGhpcy5fdGFpbCA9IG51bGw7XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Vycm9yVHJhbnNmb3JtZXIgPSBlcnJvclRyYW5zZm9ybWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgYmUgY2FsbGVkIG9uIGV2ZXJ5IHJlY29yZCB0aGF0IGNvbWVzIGluIGFuZCB0cmFuc2Zvcm0gYSByYXcgcmVjb3JkXG4gICAqIHRvIGEgT2JqZWN0LiBJZiB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGlzIHByZXNlbnQsIHBhc3MgdHJhbnNmb3JtZWQgcmVjb3JkXG4gICAqIHRvIGl0J3Mgb25OZXh0IG1ldGhvZCwgb3RoZXJ3aXNlLCBwdXNoIHRvIHJlY29yZCBxdWUuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHJhd1JlY29yZCAtIEFuIGFycmF5IHdpdGggdGhlIHJhdyByZWNvcmRcbiAgICovXG4gIG9uTmV4dChyYXdSZWNvcmQpIHtcbiAgICBsZXQgcmVjb3JkID0gbmV3IFJlY29yZCh0aGlzLl9maWVsZEtleXMsIHJhd1JlY29yZCwgdGhpcy5fZmllbGRMb29rdXApO1xuICAgIGlmKCB0aGlzLl9vYnNlcnZlciApIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9uTmV4dCggcmVjb3JkICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3F1ZXVlZFJlY29yZHMucHVzaCggcmVjb3JkICk7XG4gICAgfVxuICB9XG5cbiAgb25Db21wbGV0ZWQobWV0YSkge1xuICAgIGlmKCB0aGlzLl9maWVsZEtleXMgPT09IG51bGwgKSB7XG4gICAgICAvLyBTdHJlYW0gaGVhZGVyLCBidWlsZCBhIG5hbWUtPmluZGV4IGZpZWxkIGxvb2t1cCB0YWJsZVxuICAgICAgLy8gdG8gYmUgdXNlZCBieSByZWNvcmRzLiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiB0byBtYWtlIGl0XG4gICAgICAvLyBmYXN0ZXIgdG8gbG9vayB1cCBmaWVsZHMgaW4gYSByZWNvcmQgYnkgbmFtZSwgcmF0aGVyIHRoYW4gYnkgaW5kZXguXG4gICAgICAvLyBTaW5jZSB0aGUgcmVjb3JkcyB3ZSBnZXQgYmFjayB2aWEgQm9sdCBhcmUganVzdCBhcnJheXMgb2YgdmFsdWVzLlxuICAgICAgdGhpcy5fZmllbGRLZXlzID0gW107XG4gICAgICB0aGlzLl9maWVsZExvb2t1cCA9IHt9O1xuICAgICAgaWYoIG1ldGEuZmllbGRzICYmIG1ldGEuZmllbGRzLmxlbmd0aCA+IDAgKSB7XG4gICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IG1ldGEuZmllbGRzO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGEuZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5fZmllbGRMb29rdXBbbWV0YS5maWVsZHNbaV1dID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFbmQgb2Ygc3RyZWFtXG4gICAgICBpZiggdGhpcy5fb2JzZXJ2ZXIgKSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLm9uQ29tcGxldGVkKCBtZXRhICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl90YWlsID0gbWV0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNvbHZlQ29ubmVjdGlvbihjb25uKSB7XG4gICAgdGhpcy5fY29ubiA9IGNvbm47XG4gIH1cblxuICAvKipcbiAgICogV2lsbCBiZSBjYWxsZWQgb24gZXJyb3JzLlxuICAgKiBJZiB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGlzIHByZXNlbnQsIHBhc3MgdGhlIGVycm9yXG4gICAqIHRvIGl0J3Mgb25FcnJvciBtZXRob2QsIG90aGVyd2lzZSBzZXQgaW5zdGFuY2UgdmFyaWFibGUgX2Vycm9yLlxuICAgKiBAcGFyYW0ge09iamVjdH0gZXJyb3IgLSBBbiBlcnJvciBvYmplY3RcbiAgICovXG4gIG9uRXJyb3IoZXJyb3IpIHtcbiAgICBsZXQgdHJhbnNmb3JtZWRFcnJvciA9IHRoaXMuX2Vycm9yVHJhbnNmb3JtZXIoZXJyb3IsIHRoaXMuX2Nvbm4pO1xuICAgIGlmKHRoaXMuX2hhc0ZhaWxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgIGlmKCB0aGlzLl9vYnNlcnZlciApIHtcbiAgICAgIGlmKCB0aGlzLl9vYnNlcnZlci5vbkVycm9yICkge1xuICAgICAgICB0aGlzLl9vYnNlcnZlci5vbkVycm9yKCB0cmFuc2Zvcm1lZEVycm9yICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyggdHJhbnNmb3JtZWRFcnJvciApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lcnJvciA9IHRyYW5zZm9ybWVkRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBldmVudHMgd2l0aCBwcm92aWRlZCBvYnNlcnZlci5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVjb3JkOiBPYmplY3QpfSBvYnNlcnZlci5vbk5leHQgLSBIYW5kbGUgcmVjb3Jkcywgb25lIGJ5IG9uZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXRhZGF0YTogT2JqZWN0KX0gb2JzZXJ2ZXIub25Db21wbGV0ZSAtIEhhbmRsZSBzdHJlYW0gdGFpbCwgdGhlIG1ldGFkYXRhLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiBPYmplY3QpfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICovXG4gIHN1YnNjcmliZSggb2JzZXJ2ZXIgKSB7XG4gICAgaWYoIHRoaXMuX2Vycm9yICkge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmKCB0aGlzLl9xdWV1ZWRSZWNvcmRzLmxlbmd0aCA+IDAgKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9xdWV1ZWRSZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG9ic2VydmVyLm9uTmV4dCggX3F1ZXVlZFJlY29yZHNbaV0gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoIHRoaXMuX3RhaWwgKSB7XG4gICAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCggdGhpcy5fdGFpbCApO1xuICAgIH1cbiAgICB0aGlzLl9vYnNlcnZlciA9IG9ic2VydmVyO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmVhbU9ic2VydmVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7bmV3RXJyb3IsIFNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNFU1NJT05fRVhQSVJFRH0gZnJvbSAnLi4vZXJyb3InO1xuXG5jb25zdCBERUZBVUxUX01BWF9SRVRSWV9USU1FX01TID0gMzAgKiAxMDAwOyAvLyAzMCBzZWNvbmRzXG5jb25zdCBERUZBVUxUX0lOSVRJQUxfUkVUUllfREVMQVlfTVMgPSAxMDAwOyAvLyAxIHNlY29uZHNcbmNvbnN0IERFRkFVTFRfUkVUUllfREVMQVlfTVVMVElQTElFUiA9IDIuMDtcbmNvbnN0IERFRkFVTFRfUkVUUllfREVMQVlfSklUVEVSX0ZBQ1RPUiA9IDAuMjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJhbnNhY3Rpb25FeGVjdXRvciB7XG5cbiAgY29uc3RydWN0b3IobWF4UmV0cnlUaW1lTXMsIGluaXRpYWxSZXRyeURlbGF5TXMsIG11bHRpcGxpZXIsIGppdHRlckZhY3Rvcikge1xuICAgIHRoaXMuX21heFJldHJ5VGltZU1zID0gX3ZhbHVlT3JEZWZhdWx0KG1heFJldHJ5VGltZU1zLCBERUZBVUxUX01BWF9SRVRSWV9USU1FX01TKTtcbiAgICB0aGlzLl9pbml0aWFsUmV0cnlEZWxheU1zID0gX3ZhbHVlT3JEZWZhdWx0KGluaXRpYWxSZXRyeURlbGF5TXMsIERFRkFVTFRfSU5JVElBTF9SRVRSWV9ERUxBWV9NUyk7XG4gICAgdGhpcy5fbXVsdGlwbGllciA9IF92YWx1ZU9yRGVmYXVsdChtdWx0aXBsaWVyLCBERUZBVUxUX1JFVFJZX0RFTEFZX01VTFRJUExJRVIpO1xuICAgIHRoaXMuX2ppdHRlckZhY3RvciA9IF92YWx1ZU9yRGVmYXVsdChqaXR0ZXJGYWN0b3IsIERFRkFVTFRfUkVUUllfREVMQVlfSklUVEVSX0ZBQ1RPUik7XG5cbiAgICB0aGlzLl9pbkZsaWdodFRpbWVvdXRJZHMgPSBbXTtcblxuICAgIHRoaXMuX3ZlcmlmeUFmdGVyQ29uc3RydWN0aW9uKCk7XG4gIH1cblxuICBleGVjdXRlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX2V4ZWN1dGVUcmFuc2FjdGlvbkluc2lkZVByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgY29uc3QgcmV0cnlTdGFydFRpbWVNcyA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCByZXRyeURlbGF5TXMgPSB0aGlzLl9pbml0aWFsUmV0cnlEZWxheU1zO1xuICAgICAgcmV0dXJuIHRoaXMuX3JldHJ5VHJhbnNhY3Rpb25Qcm9taXNlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrLCBlcnJvciwgcmV0cnlTdGFydFRpbWVNcywgcmV0cnlEZWxheU1zKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIC8vIGNhbmNlbCBhbGwgZXhpc3RpbmcgdGltZW91dHMgdG8gcHJldmVudCBmdXJ0aGVyIHJldHJpZXNcbiAgICB0aGlzLl9pbkZsaWdodFRpbWVvdXRJZHMuZm9yRWFjaCh0aW1lb3V0SWQgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpO1xuICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcyA9IFtdO1xuICB9XG5cbiAgX3JldHJ5VHJhbnNhY3Rpb25Qcm9taXNlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrLCBlcnJvciwgcmV0cnlTdGFydFRpbWUsIHJldHJ5RGVsYXlNcykge1xuICAgIGNvbnN0IGVsYXBzZWRUaW1lTXMgPSBEYXRlLm5vdygpIC0gcmV0cnlTdGFydFRpbWU7XG5cbiAgICBpZiAoZWxhcHNlZFRpbWVNcyA+IHRoaXMuX21heFJldHJ5VGltZU1zIHx8ICFUcmFuc2FjdGlvbkV4ZWN1dG9yLl9jYW5SZXRyeU9uKGVycm9yKSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgbmV4dFJldHJ5VGltZSA9IHRoaXMuX2NvbXB1dGVEZWxheVdpdGhKaXR0ZXIocmV0cnlEZWxheU1zKTtcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBmaWx0ZXIgb3V0IHRoaXMgdGltZW91dElkIHdoZW4gdGltZSBoYXMgY29tZSBhbmQgZnVuY3Rpb24gaXMgYmVpbmcgZXhlY3V0ZWRcbiAgICAgICAgdGhpcy5faW5GbGlnaHRUaW1lb3V0SWRzID0gdGhpcy5faW5GbGlnaHRUaW1lb3V0SWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gdGltZW91dElkKTtcbiAgICAgICAgdGhpcy5fZXhlY3V0ZVRyYW5zYWN0aW9uSW5zaWRlUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0sIG5leHRSZXRyeVRpbWUpO1xuICAgICAgLy8gYWRkIG5ld2x5IGNyZWF0ZWQgdGltZW91dElkIHRvIHRoZSBsaXN0IG9mIGFsbCBpbi1mbGlnaHQgdGltZW91dHNcbiAgICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcy5wdXNoKHRpbWVvdXRJZCk7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgY29uc3QgbmV4dFJldHJ5RGVsYXlNcyA9IHJldHJ5RGVsYXlNcyAqIHRoaXMuX211bHRpcGxpZXI7XG4gICAgICByZXR1cm4gdGhpcy5fcmV0cnlUcmFuc2FjdGlvblByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIGVycm9yLCByZXRyeVN0YXJ0VGltZSwgbmV4dFJldHJ5RGVsYXlNcyk7XG4gICAgfSk7XG4gIH1cblxuICBfZXhlY3V0ZVRyYW5zYWN0aW9uSW5zaWRlUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4ID0gdHJhbnNhY3Rpb25DcmVhdG9yKCk7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbldvcmtSZXN1bHQgPSB0cmFuc2FjdGlvbldvcmsodHgpO1xuXG4gICAgICAvLyB1c2VyIGRlZmluZWQgY2FsbGJhY2sgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGEgcHJvbWlzZSwgYnV0IGl0IG1pZ2h0IG5vdDsgc28gdG8gcHJvdGVjdCBhZ2FpbnN0IGFuXG4gICAgICAvLyBpbmNvcnJlY3QgQVBJIHVzYWdlIHdlIHdyYXAgdGhlIHJldHVybmVkIHZhbHVlIHdpdGggYSByZXNvbHZlZCBwcm9taXNlOyB0aGlzIGlzIGVmZmVjdGl2ZWx5IGFcbiAgICAgIC8vIHZhbGlkYXRpb24gc3RlcCB3aXRob3V0IHR5cGUgY2hlY2tzXG4gICAgICBjb25zdCByZXN1bHRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHRyYW5zYWN0aW9uV29ya1Jlc3VsdCk7XG5cbiAgICAgIHJlc3VsdFByb21pc2UudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBpZiAodHguaXNPcGVuKCkpIHtcbiAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3b3JrIHJldHVybmVkIHJlc29sdmVkIHByb21pc2UgYW5kIHRyYW5zYWN0aW9uIGhhcyBub3QgYmVlbiBjb21taXR0ZWQvcm9sbGVkIGJhY2tcbiAgICAgICAgICAvLyB0cnkgdG8gY29tbWl0IHRoZSB0cmFuc2FjdGlvblxuICAgICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCwgcmV0dXJuIHJlc3VsdCB0byB0aGUgdXNlclxuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIC8vIHRyYW5zYWN0aW9uIGZhaWxlZCB0byBjb21taXQsIHByb3BhZ2F0ZSB0aGUgZmFpbHVyZVxuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3b3JrIHJldHVybmVkIHJlc29sdmVkIHByb21pc2UgYW5kIHRyYW5zYWN0aW9uIGlzIGFscmVhZHkgY29tbWl0dGVkL3JvbGxlZCBiYWNrXG4gICAgICAgICAgLy8gcmV0dXJuIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgZ2l2ZW4gdHJhbnNhY3Rpb24gd29ya1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAvLyB0cmFuc2FjdGlvbiB3b3JrIHJldHVybmVkIHJlamVjdGVkIHByb21pc2UsIHByb3BhZ2F0ZSB0aGUgZmFpbHVyZVxuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBfY29tcHV0ZURlbGF5V2l0aEppdHRlcihkZWxheU1zKSB7XG4gICAgY29uc3Qgaml0dGVyID0gKGRlbGF5TXMgKiB0aGlzLl9qaXR0ZXJGYWN0b3IpO1xuICAgIGNvbnN0IG1pbiA9IGRlbGF5TXMgLSBqaXR0ZXI7XG4gICAgY29uc3QgbWF4ID0gZGVsYXlNcyArIGppdHRlcjtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xuICB9XG5cbiAgc3RhdGljIF9jYW5SZXRyeU9uKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yICYmIGVycm9yLmNvZGUgJiZcbiAgICAgIChlcnJvci5jb2RlID09PSBTRVJWSUNFX1VOQVZBSUxBQkxFIHx8XG4gICAgICBlcnJvci5jb2RlID09PSBTRVNTSU9OX0VYUElSRUQgfHxcbiAgICAgIGVycm9yLmNvZGUuaW5kZXhPZignVHJhbnNpZW50RXJyb3InKSA+PSAwKTtcbiAgfVxuXG4gIF92ZXJpZnlBZnRlckNvbnN0cnVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbWF4UmV0cnlUaW1lTXMgPCAwKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcignTWF4IHJldHJ5IHRpbWUgc2hvdWxkIGJlID49IDA6ICcgKyB0aGlzLl9tYXhSZXRyeVRpbWVNcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9pbml0aWFsUmV0cnlEZWxheU1zIDwgMCkge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoJ0luaXRpYWwgcmV0cnkgZGVsYXkgc2hvdWxkID49IDA6ICcgKyB0aGlzLl9pbml0aWFsUmV0cnlEZWxheU1zKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX211bHRpcGxpZXIgPCAxLjApIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdNdWx0aXBsaWVyIHNob3VsZCBiZSA+PSAxLjA6ICcgKyB0aGlzLl9tdWx0aXBsaWVyKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2ppdHRlckZhY3RvciA8IDAgfHwgdGhpcy5faml0dGVyRmFjdG9yID4gMSkge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoJ0ppdHRlciBmYWN0b3Igc2hvdWxkIGJlIGluIFswLjAsIDEuMF06ICcgKyB0aGlzLl9qaXR0ZXJGYWN0b3IpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX3ZhbHVlT3JEZWZhdWx0KHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNyb3NzLXBsYXRmb3JtIFVURi04IGVuY29kZXIgYW5kIGRlY29kZXIgdGhhdCB3b3Jrc1xuLy8gd2l0aCB0aGUgQnVmZmVyIEFQSSBkZWZpbmVkIGluIGJ1Zi5qc1xuXG5pbXBvcnQge2FsbG9jLCBOb2RlQnVmZmVyLCBIZWFwQnVmZmVyLCBDb21iaW5lZEJ1ZmZlcn0gZnJvbSBcIi4vYnVmXCI7XG5pbXBvcnQge1N0cmluZ0RlY29kZXJ9IGZyb20gJ3N0cmluZ19kZWNvZGVyJztcbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gJy4vLi4vZXJyb3InO1xubGV0IHBsYXRmb3JtT2JqID0ge307XG5cblxudHJ5IHtcbiAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpcyAnYnVmZmVyJyBpcyBub3QgYXZhaWxhYmxlXG4gIHJlcXVpcmUucmVzb2x2ZShcImJ1ZmZlclwiKTtcbiAgbGV0IGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcigndXRmOCcpO1xuICBsZXQgbm9kZSA9IHJlcXVpcmUoXCJidWZmZXJcIik7XG5cbiAgcGxhdGZvcm1PYmogPSB7XG4gICAgXCJlbmNvZGVcIjogZnVuY3Rpb24gKHN0cikge1xuICAgICAgcmV0dXJuIG5ldyBOb2RlQnVmZmVyKG5ldyBub2RlLkJ1ZmZlcihzdHIsIFwiVVRGLThcIikpO1xuICAgIH0sXG4gICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgTm9kZUJ1ZmZlcikge1xuICAgICAgICBsZXQgc3RhcnQgPSBidWZmZXIucG9zaXRpb24sXG4gICAgICAgICAgZW5kID0gc3RhcnQgKyBsZW5ndGg7XG4gICAgICAgIGJ1ZmZlci5wb3NpdGlvbiA9IE1hdGgubWluKGVuZCwgYnVmZmVyLmxlbmd0aCk7XG4gICAgICAgIHJldHVybiBidWZmZXIuX2J1ZmZlci50b1N0cmluZygndXRmOCcsIHN0YXJ0LCBlbmQpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgQ29tYmluZWRCdWZmZXIpIHtcbiAgICAgICAgbGV0IG91dCA9IHN0cmVhbURlY29kZUNvbWJpbmVkQnVmZmVyKGJ1ZmZlciwgbGVuZ3RoLFxuICAgICAgICAgIChwYXJ0QnVmZmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2Rlci53cml0ZShwYXJ0QnVmZmVyLl9idWZmZXIpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRlY29kZXIuZW5kKCk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ld0Vycm9yKFwiRG9uJ3Qga25vdyBob3cgdG8gZGVjb2RlIHN0cmluZ3MgZnJvbSBgXCIgKyBidWZmZXIgKyBcImAuXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59IGNhdGNoIChlKSB7XG5cbiAgLy8gTm90IG9uIE5vZGVKUywgYWRkIHNoaW0gZm9yIFdlYkFQSSBUZXh0RW5jb2Rlci9UZXh0RGVjb2RlclxuICB2YXIgdGV4dEVuY29kaW5nID0gcmVxdWlyZSgnLi4vLi4vZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleCcpO1xuICBsZXQgZW5jb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dEVuY29kZXIoXCJ1dGYtOFwiKTtcbiAgbGV0IGRlY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHREZWNvZGVyKFwidXRmLThcIik7XG5cbiAgcGxhdGZvcm1PYmogPSB7XG4gICAgXCJlbmNvZGVcIjogZnVuY3Rpb24gKHN0cikge1xuICAgICAgcmV0dXJuIG5ldyBIZWFwQnVmZmVyKGVuY29kZXIuZW5jb2RlKHN0cikuYnVmZmVyKTtcbiAgICB9LFxuICAgIFwiZGVjb2RlXCI6IGZ1bmN0aW9uIChidWZmZXIsIGxlbmd0aCkge1xuICAgICAgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIEhlYXBCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGJ1ZmZlci5yZWFkVmlldyhNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5sZW5ndGggLSBidWZmZXIucG9zaXRpb24pKSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gRGVjb2RpbmcgY29tYmluZWQgYnVmZmVyIGlzIGNvbXBsaWNhdGVkLiBGb3Igc2ltcGxpY2l0eSwgZm9yIG5vdywgXG4gICAgICAgIC8vIHdlIHNpbXBseSBjb3B5IHRoZSBjb21iaW5lZCBidWZmZXIgaW50byBhIHJlZ3VsYXIgYnVmZmVyIGFuZCBkZWNvZGUgdGhhdC5cbiAgICAgICAgdmFyIHRtcEJ1ZiA9IGFsbG9jKGxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0bXBCdWYud3JpdGVVSW50OChidWZmZXIucmVhZFVJbnQ4KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRtcEJ1Zi5yZXNldCgpO1xuICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodG1wQnVmLnJlYWRWaWV3KGxlbmd0aCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5sZXQgc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIgPSAoY29tYmluZWRCdWZmZXJzLCBsZW5ndGgsIGRlY29kZUZuLCBlbmRGbikgPT4ge1xuICBsZXQgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBsZW5ndGg7XG4gIGxldCBwb3NpdGlvbiA9IGNvbWJpbmVkQnVmZmVycy5wb3NpdGlvbjtcbiAgY29tYmluZWRCdWZmZXJzLl91cGRhdGVQb3MoTWF0aC5taW4obGVuZ3RoLCBjb21iaW5lZEJ1ZmZlcnMubGVuZ3RoIC0gcG9zaXRpb24pKTtcbiAgLy8gUmVkdWNlIENvbWJpbmVkQnVmZmVycyB0byBhIGRlY29kZWQgc3RyaW5nXG4gIGxldCBvdXQgPSBjb21iaW5lZEJ1ZmZlcnMuX2J1ZmZlcnMucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBwYXJ0QnVmZmVyKSB7XG4gICAgaWYgKHJlbWFpbmluZ0J5dGVzVG9SZWFkIDw9IDApIHtcbiAgICAgIHJldHVybiBsYXN0O1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPj0gcGFydEJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHBvc2l0aW9uIC09IHBhcnRCdWZmZXIubGVuZ3RoO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MocG9zaXRpb24gLSBwYXJ0QnVmZmVyLnBvc2l0aW9uKTtcbiAgICAgIGxldCBieXRlc1RvUmVhZCA9IE1hdGgubWluKHBhcnRCdWZmZXIubGVuZ3RoIC0gcG9zaXRpb24sIHJlbWFpbmluZ0J5dGVzVG9SZWFkKTtcbiAgICAgIGxldCBsYXN0U2xpY2UgPSBwYXJ0QnVmZmVyLnJlYWRTbGljZShieXRlc1RvUmVhZCk7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MoYnl0ZXNUb1JlYWQpO1xuICAgICAgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBNYXRoLm1heChyZW1haW5pbmdCeXRlc1RvUmVhZCAtIGxhc3RTbGljZS5sZW5ndGgsIDApO1xuICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgcmV0dXJuIGxhc3QgKyBkZWNvZGVGbihsYXN0U2xpY2UpO1xuICAgIH1cbiAgfSwgJycpO1xuICByZXR1cm4gb3V0ICsgZW5kRm4oKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtT2JqO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmNvbnN0IEVOQ1JZUFRJT05fT04gPSBcIkVOQ1JZUFRJT05fT05cIjtcbmNvbnN0IEVOQ1JZUFRJT05fT0ZGID0gXCJFTkNSWVBUSU9OX09GRlwiO1xuXG5mdW5jdGlvbiBpc0VtcHR5T2JqZWN0T3JOdWxsKG9iaikge1xuICBpZiAoaXNOdWxsKG9iaikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghaXNPYmplY3Qob2JqKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IHByb3AgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc051bGwob2JqKSB7XG4gIHJldHVybiBvYmogPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIG9iajtcbiAgcmV0dXJuIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZSA9PT0gJ29iamVjdCcgJiYgQm9vbGVhbihvYmopO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRTdHJpbmcob2JqLCBvYmpOYW1lKSB7XG4gIGlmICghaXNTdHJpbmcob2JqKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3Iob2JqTmFtZSArICcgZXhwZWN0ZWQgdG8gYmUgc3RyaW5nIGJ1dCB3YXM6ICcgKyBKU09OLnN0cmluZ2lmeShvYmopKTtcbiAgfVxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZyhzdHIpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdHIpID09PSAnW29iamVjdCBTdHJpbmddJztcbn1cblxuZXhwb3J0IHtcbiAgaXNFbXB0eU9iamVjdE9yTnVsbCxcbiAgYXNzZXJ0U3RyaW5nLFxuICBFTkNSWVBUSU9OX09OLFxuICBFTkNSWVBUSU9OX09GRlxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gXCIuL2Vycm9yXCI7XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRmllbGRMb29rdXAoIGtleXMgKSB7XG4gIGxldCBsb29rdXAgPSB7fTtcbiAga2V5cy5mb3JFYWNoKCAobmFtZSwgaWR4KSA9PiB7IGxvb2t1cFtuYW1lXSA9IGlkeDsgfSk7XG4gIHJldHVybiBsb29rdXA7XG59XG5cbi8qKlxuICogUmVjb3JkcyBtYWtlIHVwIHRoZSBjb250ZW50cyBvZiB0aGUge0BsaW5rIFJlc3VsdH0sIGFuZCBpcyBob3cgeW91IGFjY2Vzc1xuICogdGhlIG91dHB1dCBvZiBhIHN0YXRlbWVudC4gQSBzaW1wbGUgc3RhdGVtZW50IG1pZ2h0IHlpZWxkIGEgcmVzdWx0IHN0cmVhbVxuICogd2l0aCBhIHNpbmdsZSByZWNvcmQsIGZvciBpbnN0YW5jZTpcbiAqXG4gKiAgICAgTUFUQ0ggKHU6VXNlcikgUkVUVVJOIHUubmFtZSwgdS5hZ2VcbiAqXG4gKiBUaGlzIHJldHVybnMgYSBzdHJlYW0gb2YgcmVjb3JkcyB3aXRoIHR3byBmaWVsZHMsIG5hbWVkIGB1Lm5hbWVgIGFuZCBgdS5hZ2VgLFxuICogZWFjaCByZWNvcmQgcmVwcmVzZW50cyBvbmUgdXNlciBmb3VuZCBieSB0aGUgc3RhdGVtZW50IGFib3ZlLiBZb3UgY2FuIGFjY2Vzc1xuICogdGhlIHZhbHVlcyBvZiBlYWNoIGZpZWxkIGVpdGhlciBieSBuYW1lOlxuICpcbiAqICAgICByZWNvcmQuZ2V0KFwidS5uYW1lXCIpXG4gKlxuICogT3IgYnkgaXQncyBwb3NpdGlvbjpcbiAqXG4gKiAgICAgcmVjb3JkLmdldCgwKVxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cbmNsYXNzIFJlY29yZCB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcmVjb3JkIG9iamVjdC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0ga2V5cyBBbiBhcnJheSBvZiBmaWVsZCBrZXlzLCBpbiB0aGUgb3JkZXIgdGhlIGZpZWxkcyBhcHBlYXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHJlY29yZFxuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRzIEFuIGFycmF5IG9mIGZpZWxkIHZhbHVlc1xuICAgKiBAcGFyYW0ge09iamVjdH0gZmllbGRMb29rdXAgQW4gb2JqZWN0IG9mIGZpZWxkTmFtZSAtPiB2YWx1ZSBpbmRleCwgdXNlZCB0byBtYXBcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgbmFtZXMgdG8gdmFsdWVzLiBJZiB0aGlzIGlzIG51bGwsIG9uZSB3aWxsIGJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGtleXMsIGZpZWxkcywgZmllbGRMb29rdXA9bnVsbCApIHtcbiAgICB0aGlzLmtleXMgPSBrZXlzO1xuICAgIHRoaXMubGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdGhpcy5fZmllbGRzID0gZmllbGRzO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gZmllbGRMb29rdXAgfHwgZ2VuZXJhdGVGaWVsZExvb2t1cCgga2V5cyApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gZm9yIGVhY2ggZmllbGQgaW4gdGhpcyByZWNvcmQuIFRoZSBmdW5jdGlvblxuICAgKiB3aWxsIGdldCB0aHJlZSBhcmd1bWVudHMgLSB0aGUgdmFsdWUsIHRoZSBrZXkgYW5kIHRoaXMgcmVjb3JkLCBpbiB0aGF0XG4gICAqIG9yZGVyLlxuICAgKlxuICAgKiBAcGFyYW0gdmlzaXRvclxuICAgKi9cbiAgZm9yRWFjaCggdmlzaXRvciApIHtcbiAgICBmb3IobGV0IGk9MDtpPHRoaXMua2V5cy5sZW5ndGg7aSsrKSB7XG4gICAgICB2aXNpdG9yKCB0aGlzLl9maWVsZHNbaV0sIHRoaXMua2V5c1tpXSwgdGhpcyApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gb2JqZWN0IG91dCBvZiB0aGUgY3VycmVudCBSZWNvcmRcbiAgICpcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIHRvT2JqZWN0KCkge1xuICAgIGNvbnN0IG9iamVjdCA9IHt9O1xuICAgIHRoaXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSB2YWx1ZSBmcm9tIHRoaXMgcmVjb3JkLCBlaXRoZXIgYnkgaW5kZXggb3IgYnkgZmllbGQga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xOdW1iZXJ9IGtleSBGaWVsZCBrZXksIG9yIHRoZSBpbmRleCBvZiB0aGUgZmllbGQuXG4gICAqIEByZXR1cm5zIHsqfVxuICAgKi9cbiAgZ2V0KCBrZXkgKSB7XG4gICAgbGV0IGluZGV4O1xuICAgIGlmKCAhKHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIpICkge1xuICAgICAgaW5kZXggPSB0aGlzLl9maWVsZExvb2t1cFtrZXldO1xuICAgICAgaWYoIGluZGV4ID09PSB1bmRlZmluZWQgKSB7XG4gICAgICAgIHRocm93IG5ld0Vycm9yKFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGgga2V5ICdcIitrZXkrXCInLCBhdmFpbGFibGUga2V5IGFyZTogW1wiICsgdGhpcy5rZXlzICsgXCJdLlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXggPSBrZXk7XG4gICAgfVxuXG4gICAgaWYoIGluZGV4ID4gdGhpcy5fZmllbGRzLmxlbmd0aCAtIDEgfHwgaW5kZXggPCAwICkge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBpbmRleCAnXCIraW5kZXgrXCInLiBSZW1lbWJlciB0aGF0IGluZGV4ZXMgc3RhcnQgYXQgYDBgLCBcIiArXG4gICAgICAgIFwiYW5kIG1ha2Ugc3VyZSB5b3VyIHN0YXRlbWVudCByZXR1cm5zIHJlY29yZHMgaW4gdGhlIHNoYXBlIHlvdSBtZWFudCBpdCB0by5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1tpbmRleF07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB2YWx1ZSBmcm9tIHRoaXMgcmVjb3JkLCBlaXRoZXIgYnkgaW5kZXggb3IgYnkgZmllbGQga2V5LCBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfE51bWJlcn0ga2V5IEZpZWxkIGtleSwgb3IgdGhlIGluZGV4IG9mIHRoZSBmaWVsZC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBoYXMoIGtleSApIHtcbiAgICAvLyBpZiBrZXkgaXMgYSBudW1iZXIsIHdlIGNoZWNrIGlmIGl0IGlzIGluIHRoZSBfZmllbGRzIGFycmF5XG4gICAgaWYoIHR5cGVvZiBrZXkgPT09IFwibnVtYmVyXCIgKSB7XG4gICAgICByZXR1cm4gKCBrZXkgPj0gMCAmJiBrZXkgPCB0aGlzLl9maWVsZHMubGVuZ3RoICk7XG4gICAgfVxuXG4gICAgLy8gaWYgaXQncyBub3QgYSBudW1iZXIsIHdlIGNoZWNrIF9maWVsZExvb2t1cCBkaWN0aW9uYXJ5IGRpcmVjdGx5XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTG9va3VwW2tleV0gIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWNvcmRcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge2ludCwgaXNJbnR9IGZyb20gJy4vaW50ZWdlcic7XG5cbi8qKlxuICAqIEEgUmVzdWx0U3VtbWFyeSBpbnN0YW5jZSBjb250YWlucyBzdHJ1Y3R1cmVkIG1ldGFkYXRhIGZvciBhIHtSZXN1bHR9LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBSZXN1bHRTdW1tYXJ5IHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gVGhlIHN0YXRlbWVudCB0aGlzIHN1bW1hcnkgaXMgZm9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gUGFyYW1ldGVycyBmb3IgdGhlIHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gbWV0YWRhdGEgLSBTdGF0ZW1lbnQgbWV0YWRhdGFcbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YWRhdGEpIHtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHt0ZXh0OiBzdGF0ZW1lbnQsIHBhcmFtZXRlcnN9O1xuICAgIHRoaXMuc3RhdGVtZW50VHlwZSA9IG1ldGFkYXRhLnR5cGU7XG4gICAgbGV0IGNvdW50ZXJzID0gbmV3IFN0YXRlbWVudFN0YXRpc3RpY3MobWV0YWRhdGEuc3RhdHMgfHwge30pO1xuICAgIHRoaXMuY291bnRlcnMgPSBjb3VudGVycztcbiAgICAvL2ZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgcmVtb3ZlIGluIGZ1dHVyZSB2ZXJzaW9uXG4gICAgdGhpcy51cGRhdGVTdGF0aXN0aWNzID0gY291bnRlcnM7XG4gICAgdGhpcy5wbGFuID0gbWV0YWRhdGEucGxhbiB8fCBtZXRhZGF0YS5wcm9maWxlID8gbmV3IFBsYW4obWV0YWRhdGEucGxhbiB8fCBtZXRhZGF0YS5wcm9maWxlKSA6IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZSA9IG1ldGFkYXRhLnByb2ZpbGUgPyBuZXcgUHJvZmlsZWRQbGFuKG1ldGFkYXRhLnByb2ZpbGUpIDogZmFsc2U7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5fYnVpbGROb3RpZmljYXRpb25zKG1ldGFkYXRhLm5vdGlmaWNhdGlvbnMpO1xuICAgIHRoaXMuc2VydmVyID0gbmV3IFNlcnZlckluZm8obWV0YWRhdGEuc2VydmVyKTtcbiAgICB0aGlzLnJlc3VsdENvbnN1bWVkQWZ0ZXIgPSBtZXRhZGF0YS5yZXN1bHRfY29uc3VtZWRfYWZ0ZXI7XG4gICAgdGhpcy5yZXN1bHRBdmFpbGFibGVBZnRlciA9IG1ldGFkYXRhLnJlc3VsdF9hdmFpbGFibGVfYWZ0ZXI7XG4gIH1cbiAgX2J1aWxkTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSB7XG4gICAgaWYoIW5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG5ldyBOb3RpZmljYXRpb24obikgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCBzdW1tYXJ5IGhhcyBhIHBsYW5cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGhhc1BsYW4oKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhbiBpbnN0YW5jZW9mIFBsYW5cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcHJvZmlsZVxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzUHJvZmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlIGluc3RhbmNlb2YgUHJvZmlsZWRQbGFuXG4gIH1cbn1cblxuLyoqXG4gICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggRVhQTEFJTi5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuY2xhc3MgUGxhbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBQbGFuIGluc3RhbmNlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gcGxhbiAtIE9iamVjdCB3aXRoIHBsYW4gZGF0YVxuICAgKi9cbiAgY29uc3RydWN0b3IocGxhbikge1xuICAgIHRoaXMub3BlcmF0b3JUeXBlID0gcGxhbi5vcGVyYXRvclR5cGU7XG4gICAgdGhpcy5pZGVudGlmaWVycyA9IHBsYW4uaWRlbnRpZmllcnM7XG4gICAgdGhpcy5hcmd1bWVudHMgPSBwbGFuLmFyZ3M7XG4gICAgdGhpcy5jaGlsZHJlbiA9IHBsYW4uY2hpbGRyZW4gPyBwbGFuLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IG5ldyBQbGFuKGNoaWxkKSkgOiBbXTtcbiAgfVxufVxuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBQUk9GSUxFLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBQcm9maWxlZFBsYW4ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgUHJvZmlsZWRQbGFuIGluc3RhbmNlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvZmlsZSAtIE9iamVjdCB3aXRoIHByb2ZpbGUgZGF0YVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvZmlsZSkge1xuICAgIHRoaXMub3BlcmF0b3JUeXBlID0gcHJvZmlsZS5vcGVyYXRvclR5cGU7XG4gICAgdGhpcy5pZGVudGlmaWVycyA9IHByb2ZpbGUuaWRlbnRpZmllcnM7XG4gICAgdGhpcy5hcmd1bWVudHMgPSBwcm9maWxlLmFyZ3M7XG4gICAgdGhpcy5kYkhpdHMgPSBwcm9maWxlLmFyZ3MuRGJIaXRzLnRvSW50KCk7XG4gICAgdGhpcy5yb3dzID0gcHJvZmlsZS5hcmdzLlJvd3MudG9JbnQoKTtcbiAgICB0aGlzLmNoaWxkcmVuID0gcHJvZmlsZS5jaGlsZHJlbiA/IHByb2ZpbGUuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4gbmV3IFByb2ZpbGVkUGxhbihjaGlsZCkpIDogW107XG4gIH1cbn1cblxuLyoqXG4gICogR2V0IHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIGZvciBhIHtSZXN1bHR9LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBTdGF0ZW1lbnRTdGF0aXN0aWNzIHtcbiAgLyoqXG4gICAqIFN0cnVjdHVyaXplIHRoZSBzdGF0aXN0aWNzXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGlzdGljcyAtIFJlc3VsdCBzdGF0aXN0aWNzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzdGF0aXN0aWNzKSB7XG4gICAgdGhpcy5fc3RhdHMgPSB7XG4gICAgICBub2Rlc0NyZWF0ZWQ6IDAsXG4gICAgICBub2Rlc0RlbGV0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzQ3JlYXRlZDogMCxcbiAgICAgIHJlbGF0aW9uc2hpcHNEZWxldGVkOiAwLFxuICAgICAgcHJvcGVydGllc1NldDogMCxcbiAgICAgIGxhYmVsc0FkZGVkOiAwLFxuICAgICAgbGFiZWxzUmVtb3ZlZDogMCxcbiAgICAgIGluZGV4ZXNBZGRlZDogMCxcbiAgICAgIGluZGV4ZXNSZW1vdmVkOiAwLFxuICAgICAgY29uc3RyYWludHNBZGRlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzUmVtb3ZlZDogMFxuICAgIH07XG4gICAgT2JqZWN0LmtleXMoc3RhdGlzdGljcykuZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgIC8vVG8gY2FtZWxDYXNlXG4gICAgICB0aGlzLl9zdGF0c1tpbmRleC5yZXBsYWNlKC8oXFwtXFx3KS9nLCAobSkgPT4gbVsxXS50b1VwcGVyQ2FzZSgpKV0gPVxuICAgICAgICBpc0ludChzdGF0aXN0aWNzW2luZGV4XSkgPyBzdGF0aXN0aWNzW2luZGV4XS50b0ludCgpIDogc3RhdGlzdGljc1tpbmRleF07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlkIHRoZSBkYXRhYmFzZSBnZXQgdXBkYXRlZD9cbiAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICovXG4gIGNvbnRhaW5zVXBkYXRlcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fc3RhdHMpLnJlZHVjZSgobGFzdCwgY3VycmVudCkgPT4ge1xuICAgICAgcmV0dXJuIGxhc3QgKyB0aGlzLl9zdGF0c1tjdXJyZW50XTtcbiAgICB9LCAwKSA+IDA7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBjcmVhdGVkLlxuICAgKi9cbiAgbm9kZXNDcmVhdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0cy5ub2Rlc0NyZWF0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBkZWxldGVkLlxuICAgKi9cbiAgbm9kZXNEZWxldGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0cy5ub2Rlc0RlbGV0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiByZWxhdGlvbnNoaXBzIGNyZWF0ZWQuXG4gICAqL1xuICByZWxhdGlvbnNoaXBzQ3JlYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMucmVsYXRpb25zaGlwc0NyZWF0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBkZWxldGVkLlxuICAgKi9cbiAgcmVsYXRpb25zaGlwc0RlbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLnJlbGF0aW9uc2hpcHNEZWxldGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgcHJvcGVydGllcyBzZXQuXG4gICAqL1xuICBwcm9wZXJ0aWVzU2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0cy5wcm9wZXJ0aWVzU2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIGFkZGVkLlxuICAgKi9cbiAgbGFiZWxzQWRkZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLmxhYmVsc0FkZGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgbGFiZWxzIHJlbW92ZWQuXG4gICAqL1xuICBsYWJlbHNSZW1vdmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNSZW1vdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyBhZGRlZC5cbiAgICovXG4gIGluZGV4ZXNBZGRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMuaW5kZXhlc0FkZGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyByZW1vdmVkLlxuICAgKi9cbiAgaW5kZXhlc1JlbW92ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLmluZGV4ZXNSZW1vdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgY29udHJhaW50cyBhZGRlZC5cbiAgICovXG4gIGNvbnN0cmFpbnRzQWRkZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBjb250cmFpbnRzIHJlbW92ZWQuXG4gICAqL1xuICBjb25zdHJhaW50c1JlbW92ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzUmVtb3ZlZDtcbiAgfVxufVxuXG4vKipcbiAgKiBDbGFzcyBmb3IgQ3lwaGVyIG5vdGlmaWNhdGlvbnNcbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuY2xhc3MgTm90aWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIE5vdGlmaWNhdGlvbiBpbnN0YW5jZVxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IG5vdGlmaWNhdGlvbiAtIE9iamVjdCB3aXRoIG5vdGlmaWNhdGlvbiBkYXRhXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihub3RpZmljYXRpb24pIHtcbiAgICB0aGlzLmNvZGUgPSBub3RpZmljYXRpb24uY29kZTtcbiAgICB0aGlzLnRpdGxlID0gbm90aWZpY2F0aW9uLnRpdGxlO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBub3RpZmljYXRpb24uZGVzY3JpcHRpb247XG4gICAgdGhpcy5zZXZlcml0eSA9IG5vdGlmaWNhdGlvbi5zZXZlcml0eTtcbiAgICB0aGlzLnBvc2l0aW9uID0gTm90aWZpY2F0aW9uLl9jb25zdHJ1Y3RQb3NpdGlvbihub3RpZmljYXRpb24ucG9zaXRpb24pO1xuICB9XG5cbiAgc3RhdGljIF9jb25zdHJ1Y3RQb3NpdGlvbihwb3MpIHtcbiAgICBpZighcG9zKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvZmZzZXQ6IHBvcy5vZmZzZXQudG9JbnQoKSxcbiAgICAgIGxpbmU6IHBvcy5saW5lLnRvSW50KCksXG4gICAgICBjb2x1bW46IHBvcy5jb2x1bW4udG9JbnQoKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhwb3Npbmcgc2VydmVyIGluZm8gZnJvbSBhIHJlc3VsdC5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuY2xhc3MgU2VydmVySW5mbyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBTZXJ2ZXJJbmZvIGluc3RhbmNlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gc2VydmVyTWV0YSAtIE9iamVjdCB3aXRoIHNlcnZlck1ldGEgZGF0YVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2VydmVyTWV0YSkge1xuICAgIGlmIChzZXJ2ZXJNZXRhKSB7XG4gICAgICB0aGlzLmFkZHJlc3MgPSBzZXJ2ZXJNZXRhLmFkZHJlc3M7XG4gICAgICB0aGlzLnZlcnNpb24gPSBzZXJ2ZXJNZXRhLnZlcnNpb247XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHN0YXRlbWVudFR5cGUgPSB7XG4gIFJFQURfT05MWTogJ3InLFxuICBSRUFEX1dSSVRFOiAncncnLFxuICBXUklURV9PTkxZOiAndycsXG4gIFNDSEVNQV9XUklURTogJ3MnXG59O1xuXG5leHBvcnQge1xuICBzdGF0ZW1lbnRUeXBlXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlc3VsdFN1bW1hcnlcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgUmVzdWx0U3VtbWFyeSBmcm9tICcuL3Jlc3VsdC1zdW1tYXJ5JztcbmltcG9ydCB7RU1QVFlfQ09OTkVDVElPTl9IT0xERVJ9IGZyb20gJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXInO1xuXG4vKipcbiAgKiBBIHN0cmVhbSBvZiB7QGxpbmsgUmVjb3JkfSByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBhIHN0YXRlbWVudC5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuY2xhc3MgUmVzdWx0IHtcbiAgLyoqXG4gICAqIEluamVjdCB0aGUgb2JzZXJ2ZXIgdG8gYmUgdXNlZC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBzdHJlYW1PYnNlcnZlclxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIG1ldGFTdXBwbGllciBmdW5jdGlvbiwgd2hlbiBjYWxsZWQgcHJvdmlkZXMgbWV0YWRhdGFcbiAgICogQHBhcmFtIHtDb25uZWN0aW9uSG9sZGVyfSBjb25uZWN0aW9uSG9sZGVyIC0gdG8gYmUgbm90aWZpZWQgd2hlbiByZXN1bHQgaXMgZWl0aGVyIGZ1bGx5IGNvbnN1bWVkIG9yIGVycm9yIGhhcHBlbmVkLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc3RyZWFtT2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YVN1cHBsaWVyLCBjb25uZWN0aW9uSG9sZGVyKSB7XG4gICAgdGhpcy5fc3RyZWFtT2JzZXJ2ZXIgPSBzdHJlYW1PYnNlcnZlcjtcbiAgICB0aGlzLl9wID0gbnVsbDtcbiAgICB0aGlzLl9zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMgfHwge307XG4gICAgdGhpcy5fbWV0YVN1cHBsaWVyID0gbWV0YVN1cHBsaWVyIHx8IGZ1bmN0aW9uKCl7cmV0dXJuIHt9O307XG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlciA9IGNvbm5lY3Rpb25Ib2xkZXIgfHwgRU1QVFlfQ09OTkVDVElPTl9IT0xERVI7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuZCByZXR1cm4gbmV3IFByb21pc2VcbiAgICogQHJldHVybiB7UHJvbWlzZX0gbmV3IFByb21pc2UuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cbiAgX2NyZWF0ZVByb21pc2UoKSB7XG4gICAgaWYodGhpcy5fcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5fcCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCByZWNvcmRzID0gW107XG4gICAgICBsZXQgb2JzZXJ2ZXIgPSB7XG4gICAgICAgIG9uTmV4dDogKHJlY29yZCkgPT4geyByZWNvcmRzLnB1c2gocmVjb3JkKTsgfSxcbiAgICAgICAgb25Db21wbGV0ZWQ6IChzdW1tYXJ5KSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh7cmVjb3JkczogcmVjb3Jkcywgc3VtbWFyeTogc3VtbWFyeX0pO1xuICAgICAgICB9LFxuICAgICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHsgcmVqZWN0KGVycm9yKTsgfVxuICAgICAgfTtcbiAgICAgIHNlbGYuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyBmb3IgYWxsIHJlc3VsdHMgYW5kIGNhbGxzIHRoZSBwYXNzZWQgaW4gZnVuY3Rpb24gd2l0aCB0aGUgcmVzdWx0cy5cbiAgICogQ2Fubm90IGJlIGNvbWJpbmVkIHdpdGggdGhlIHtAbGluayAjc3Vic2NyaWJlfSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihyZXN1bHQ6IHtyZWNvcmRzOkFycmF5PFJlY29yZD59KX0gb25GdWxmaWxsZWQgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBmaW5pc2hlZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvblJlamVjdGVkIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHVwb24gZXJyb3JzLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgKi9cbiAgdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIHRoaXMuX2NyZWF0ZVByb21pc2UoKTtcbiAgICByZXR1cm4gdGhpcy5fcC50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXRjaCBlcnJvcnMgd2hlbiB1c2luZyBwcm9taXNlcy5cbiAgICogQ2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgc3Vic2NyaWJlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiB7bWVzc2FnZTpzdHJpbmcsIGNvZGU6c3RyaW5nfSl9IG9uUmVqZWN0ZWQgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgdXBvbiBlcnJvcnMuXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UuXG4gICAqL1xuICBjYXRjaChvblJlamVjdGVkKSB7XG4gICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgIHJldHVybiB0aGlzLl9wLmNhdGNoKG9uUmVqZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSByZWNvcmRzIHRvIG9ic2VydmVyIGFzIHRoZXkgY29tZSBpbiwgdGhpcyBpcyBhIG1vcmUgZWZmaWNpZW50IG1ldGhvZFxuICAgKiBvZiBoYW5kbGluZyB0aGUgcmVzdWx0cywgYW5kIGFsbG93cyB5b3UgdG8gaGFuZGxlIGFyYml0cmFyaWx5IGxhcmdlIHJlc3VsdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciAtIE9ic2VydmVyIG9iamVjdFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlY29yZDogUmVjb3JkKX0gb2JzZXJ2ZXIub25OZXh0IC0gSGFuZGxlIHJlY29yZHMsIG9uZSBieSBvbmUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWV0YWRhdGE6IE9iamVjdCl9IG9ic2VydmVyLm9uQ29tcGxldGVkIC0gSGFuZGxlIHN0cmVhbSB0YWlsLCB0aGUgbWV0YWRhdGEuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb2JzZXJ2ZXIub25FcnJvciAtIEhhbmRsZSBlcnJvcnMuXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgIGNvbnN0IG9uQ29tcGxldGVkT3JpZ2luYWwgPSBvYnNlcnZlci5vbkNvbXBsZXRlZDtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBvbkNvbXBsZXRlZFdyYXBwZXIgPSAobWV0YWRhdGEpID0+IHtcblxuICAgICAgY29uc3QgYWRkaXRpb25hbE1ldGEgPSBzZWxmLl9tZXRhU3VwcGxpZXIoKTtcbiAgICAgIGZvcihsZXQga2V5IGluIGFkZGl0aW9uYWxNZXRhKSB7XG4gICAgICAgIGlmIChhZGRpdGlvbmFsTWV0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgbWV0YWRhdGFba2V5XSA9IGFkZGl0aW9uYWxNZXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHN1bSA9IG5ldyBSZXN1bHRTdW1tYXJ5KHRoaXMuX3N0YXRlbWVudCwgdGhpcy5fcGFyYW1ldGVycywgbWV0YWRhdGEpO1xuXG4gICAgICAvLyBub3RpZnkgY29ubmVjdGlvbiBob2xkZXIgdGhhdCB0aGUgdXNlZCBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgYmVjYXVzZSByZXN1bHQgaGFzXG4gICAgICAvLyBiZWVuIGZ1bGx5IGNvbnN1bWVkOyBjYWxsIHRoZSBvcmlnaW5hbCBvbkNvbXBsZXRlZCBjYWxsYmFjayBhZnRlciB0aGF0XG4gICAgICBzZWxmLl9jb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ29tcGxldGVkT3JpZ2luYWwuY2FsbChvYnNlcnZlciwgc3VtKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQgPSBvbkNvbXBsZXRlZFdyYXBwZXI7XG5cbiAgICBjb25zdCBvbkVycm9yT3JpZ2luYWwgPSBvYnNlcnZlci5vbkVycm9yIHx8IChlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIlVuY2F1Z2h0IGVycm9yIHdoZW4gcHJvY2Vzc2luZyByZXN1bHQ6IFwiICsgZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb25FcnJvcldyYXBwZXIgPSBlcnJvciA9PiB7XG4gICAgICAvLyBub3RpZnkgY29ubmVjdGlvbiBob2xkZXIgdGhhdCB0aGUgdXNlZCBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgYmVjYXVzZSBlcnJvciBoYXBwZW5lZFxuICAgICAgLy8gYW5kIHJlc3VsdCBjYW4ndCBiZWUgY29uc3VtZWQgYW55IGZ1cnRoZXI7IGNhbGwgdGhlIG9yaWdpbmFsIG9uRXJyb3IgY2FsbGJhY2sgYWZ0ZXIgdGhhdFxuICAgICAgc2VsZi5fY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkVycm9yT3JpZ2luYWwuY2FsbChvYnNlcnZlciwgZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBvYnNlcnZlci5vbkVycm9yID0gb25FcnJvcldyYXBwZXI7XG5cbiAgICB0aGlzLl9zdHJlYW1PYnNlcnZlci5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlc3VsdFxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBTZXNzaW9uIGZyb20gJy4vc2Vzc2lvbic7XG5pbXBvcnQge0RyaXZlcn0gZnJvbSAnLi9kcml2ZXInO1xuaW1wb3J0IHtuZXdFcnJvciwgU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VTU0lPTl9FWFBJUkVEfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7TG9hZEJhbGFuY2VyfSBmcm9tICcuL2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzJztcblxuLyoqXG4gKiBBIGRyaXZlciB0aGF0IHN1cHBvcnRzIHJvdXRpbmcgaW4gYSBjb3JlLWVkZ2UgY2x1c3Rlci5cbiAqL1xuY2xhc3MgUm91dGluZ0RyaXZlciBleHRlbmRzIERyaXZlciB7XG5cbiAgY29uc3RydWN0b3IodXJsLCB1c2VyQWdlbnQsIHRva2VuID0ge30sIGNvbmZpZyA9IHt9KSB7XG4gICAgc3VwZXIodXJsLCB1c2VyQWdlbnQsIHRva2VuLCBSb3V0aW5nRHJpdmVyLl92YWxpZGF0ZUNvbmZpZyhjb25maWcpKTtcbiAgfVxuXG4gIF9jcmVhdGVDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgIHJldHVybiBuZXcgTG9hZEJhbGFuY2VyKGFkZHJlc3MsIGNvbm5lY3Rpb25Qb29sLCBkcml2ZXJPbkVycm9yQ2FsbGJhY2spO1xuICB9XG5cbiAgX2NyZWF0ZVNlc3Npb24obW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBSb3V0aW5nU2Vzc2lvbihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcsIChlcnJvciwgY29ubikgPT4ge1xuICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFNFUlZJQ0VfVU5BVkFJTEFCTEUgfHwgZXJyb3IuY29kZSA9PT0gU0VTU0lPTl9FWFBJUkVEKSB7XG4gICAgICAgIC8vIGNvbm5lY3Rpb24gaXMgdW5kZWZpbmVkIGlmIGVycm9yIGhhcHBlbmVkIGJlZm9yZSBjb25uZWN0aW9uIHdhcyBhY3F1aXJlZFxuICAgICAgICBpZiAoY29ubikge1xuICAgICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlci5mb3JnZXQoY29ubi51cmwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgIH0gZWxzZSBpZiAoZXJyb3IuY29kZSA9PT0gJ05lby5DbGllbnRFcnJvci5DbHVzdGVyLk5vdEFMZWFkZXInKSB7XG4gICAgICAgIGxldCB1cmwgPSAnVU5LTk9XTic7XG4gICAgICAgIC8vIGNvbm5lY3Rpb24gaXMgdW5kZWZpbmVkIGlmIGVycm9yIGhhcHBlbmVkIGJlZm9yZSBjb25uZWN0aW9uIHdhcyBhY3F1aXJlZFxuICAgICAgICBpZiAoY29ubikge1xuICAgICAgICAgIHVybCA9IGNvbm4udXJsO1xuICAgICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlci5mb3JnZXRXcml0ZXIoY29ubi51cmwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdFcnJvcignTm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHdyaXRlIHRvIHNlcnZlciBhdCAnICsgdXJsLCBTRVNTSU9OX0VYUElSRUQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF92YWxpZGF0ZUNvbmZpZyhjb25maWcpIHtcbiAgICBpZihjb25maWcudHJ1c3QgPT09ICdUUlVTVF9PTl9GSVJTVF9VU0UnKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcignVGhlIGNob3NlbiB0cnVzdCBtb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYSByb3V0aW5nIGRyaXZlcicpO1xuICAgIH1cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG59XG5cbmNsYXNzIFJvdXRpbmdTZXNzaW9uIGV4dGVuZHMgU2Vzc2lvbiB7XG4gIGNvbnN0cnVjdG9yKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZywgb25GYWlsZWRDb25uZWN0aW9uKSB7XG4gICAgc3VwZXIobW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKTtcbiAgICB0aGlzLl9vbkZhaWxlZENvbm5lY3Rpb24gPSBvbkZhaWxlZENvbm5lY3Rpb247XG4gIH1cblxuICBfb25SdW5GYWlsdXJlKCkge1xuICAgIHJldHVybiB0aGlzLl9vbkZhaWxlZENvbm5lY3Rpb247XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm91dGluZ0RyaXZlclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgU3RyZWFtT2JzZXJ2ZXIgZnJvbSAnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInO1xuaW1wb3J0IFJlc3VsdCBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgVHJhbnNhY3Rpb24gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQge25ld0Vycm9yfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7YXNzZXJ0U3RyaW5nfSBmcm9tICcuL2ludGVybmFsL3V0aWwnO1xuaW1wb3J0IENvbm5lY3Rpb25Ib2xkZXIgZnJvbSAnLi9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlcic7XG5pbXBvcnQgRHJpdmVyLCB7UkVBRCwgV1JJVEV9IGZyb20gJy4vZHJpdmVyJztcbmltcG9ydCBUcmFuc2FjdGlvbkV4ZWN1dG9yIGZyb20gJy4vaW50ZXJuYWwvdHJhbnNhY3Rpb24tZXhlY3V0b3InO1xuXG4vKipcbiAgKiBBIFNlc3Npb24gaW5zdGFuY2UgaXMgdXNlZCBmb3IgaGFuZGxpbmcgdGhlIGNvbm5lY3Rpb24gYW5kXG4gICogc2VuZGluZyBzdGF0ZW1lbnRzIHRocm91Z2ggdGhlIGNvbm5lY3Rpb24uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxuY2xhc3MgU2Vzc2lvbiB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSB0aGUgZGVmYXVsdCBhY2Nlc3MgbW9kZSBmb3IgdGhpcyBzZXNzaW9uLlxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb25Qcm92aWRlcn0gY29ubmVjdGlvblByb3ZpZGVyIC0gdGhlIGNvbm5lY3Rpb24gcHJvdmlkZXIgdG8gYWNxdWlyZSBjb25uZWN0aW9ucyBmcm9tLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jvb2ttYXJrPXVuZGVmaW5lZF0gLSB0aGUgaW5pdGlhbCBib29rbWFyayBmb3IgdGhpcyBzZXNzaW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbmZpZz17fV0gLSB0aGlzIGRyaXZlciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IobW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKSB7XG4gICAgdGhpcy5fbW9kZSA9IG1vZGU7XG4gICAgdGhpcy5fcmVhZENvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuICAgIHRoaXMuX3dyaXRlQ29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFdSSVRFLCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2hhc1R4ID0gZmFsc2U7XG4gICAgdGhpcy5fbGFzdEJvb2ttYXJrID0gYm9va21hcms7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25FeGVjdXRvciA9IF9jcmVhdGVUcmFuc2FjdGlvbkV4ZWN1dG9yKGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbWVudCBhbmQgcGFyYW1ldGVycyBhcyBzZXBhcmF0ZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgKi9cbiAgcnVuKHN0YXRlbWVudCwgcGFyYW1ldGVycyA9IHt9KSB7XG4gICAgaWYodHlwZW9mIHN0YXRlbWVudCA9PT0gJ29iamVjdCcgJiYgc3RhdGVtZW50LnRleHQpIHtcbiAgICAgIHBhcmFtZXRlcnMgPSBzdGF0ZW1lbnQucGFyYW1ldGVycyB8fCB7fTtcbiAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC50ZXh0O1xuICAgIH1cbiAgICBhc3NlcnRTdHJpbmcoc3RhdGVtZW50LCBcIkN5cGhlciBzdGF0ZW1lbnRcIik7XG5cbiAgICBjb25zdCBzdHJlYW1PYnNlcnZlciA9IG5ldyBfUnVuT2JzZXJ2ZXIodGhpcy5fb25SdW5GYWlsdXJlKCkpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSB0aGlzLl9jb25uZWN0aW9uSG9sZGVyV2l0aE1vZGUodGhpcy5fbW9kZSk7XG4gICAgaWYgKCF0aGlzLl9oYXNUeCkge1xuICAgICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgICAgY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgc3RyZWFtT2JzZXJ2ZXIucmVzb2x2ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7XG4gICAgICAgIGNvbm5lY3Rpb24ucnVuKHN0YXRlbWVudCwgcGFyYW1ldGVycywgc3RyZWFtT2JzZXJ2ZXIpO1xuICAgICAgICBjb25uZWN0aW9uLnB1bGxBbGwoc3RyZWFtT2JzZXJ2ZXIpO1xuICAgICAgICBjb25uZWN0aW9uLnN5bmMoKTtcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IHN0cmVhbU9ic2VydmVyLm9uRXJyb3IoZXJyb3IpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyZWFtT2JzZXJ2ZXIub25FcnJvcihuZXdFcnJvcihcIlN0YXRlbWVudHMgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBvbiBhIFwiXG4gICAgICAgKyBcInNlc3Npb24gd2l0aCBhbiBvcGVuIHRyYW5zYWN0aW9uOyBlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSBcIlxuICAgICAgICsgXCJ0cmFuc2FjdGlvbiBvciB1c2UgYSBkaWZmZXJlbnQgc2Vzc2lvbi5cIikpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJlc3VsdCggc3RyZWFtT2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgKCkgPT4gc3RyZWFtT2JzZXJ2ZXIubWV0YSgpLCBjb25uZWN0aW9uSG9sZGVyICk7XG4gIH1cblxuICAvKipcbiAgICogQmVnaW4gYSBuZXcgdHJhbnNhY3Rpb24gaW4gdGhpcyBzZXNzaW9uLiBBIHNlc3Npb24gY2FuIGhhdmUgYXQgbW9zdCBvbmUgdHJhbnNhY3Rpb24gcnVubmluZyBhdCBhIHRpbWUsIGlmIHlvdVxuICAgKiB3YW50IHRvIHJ1biBtdWx0aXBsZSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucywgeW91IHNob3VsZCB1c2UgbXVsdGlwbGUgY29uY3VycmVudCBzZXNzaW9ucy5cbiAgICpcbiAgICogV2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBvcGVuIHRoZSBzZXNzaW9uIGNhbm5vdCBiZSB1c2VkIHRvIHJ1biBzdGF0ZW1lbnRzIG91dHNpZGUgdGhlIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9va21hcmsgLSBhIHJlZmVyZW5jZSB0byBhIHByZXZpb3VzIHRyYW5zYWN0aW9uLiBERVBSRUNBVEVEOiBUaGlzIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGluXG4gICAqIGZhdm91ciBvZiB7QGxpbmsgRHJpdmVyI3Nlc3Npb24oc3RyaW5nKX0gdGhhdCBhY2NlcHRzIGFuIGluaXRpYWwgYm9va21hcmsuIFNlc3Npb24gd2lsbCBlbnN1cmUgdGhhdCBhbGwgbmVzdGVkXG4gICAqIHRyYW5zYWN0aW9ucyBhcmUgY2hhaW5lZCB3aXRoIGJvb2ttYXJrcyB0byBndWFyYW50ZWUgY2F1c2FsIGNvbnNpc3RlbmN5LlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IC0gTmV3IFRyYW5zYWN0aW9uXG4gICAqL1xuICBiZWdpblRyYW5zYWN0aW9uKGJvb2ttYXJrKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JlZ2luVHJhbnNhY3Rpb24odGhpcy5fbW9kZSwgYm9va21hcmspO1xuICB9XG5cbiAgX2JlZ2luVHJhbnNhY3Rpb24oYWNjZXNzTW9kZSwgYm9va21hcmspIHtcbiAgICBpZiAoYm9va21hcmspIHtcbiAgICAgIGFzc2VydFN0cmluZyhib29rbWFyaywgJ0Jvb2ttYXJrJyk7XG4gICAgICB0aGlzLl91cGRhdGVCb29rbWFyayhib29rbWFyayk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hhc1R4KSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcignWW91IGNhbm5vdCBiZWdpbiBhIHRyYW5zYWN0aW9uIG9uIGEgc2Vzc2lvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb247ICcgK1xuICAgICAgICAnZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZSA9IERyaXZlci5fdmFsaWRhdGVTZXNzaW9uTW9kZShhY2Nlc3NNb2RlKTtcbiAgICBjb25zdCBjb25uZWN0aW9uSG9sZGVyID0gdGhpcy5fY29ubmVjdGlvbkhvbGRlcldpdGhNb2RlKG1vZGUpO1xuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcbiAgICB0aGlzLl9oYXNUeCA9IHRydWU7XG5cbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKGNvbm5lY3Rpb25Ib2xkZXIsICgpID0+IHtcbiAgICAgICAgdGhpcy5faGFzVHggPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICB0aGlzLl9vblJ1bkZhaWx1cmUoKSwgdGhpcy5fbGFzdEJvb2ttYXJrLCB0aGlzLl91cGRhdGVCb29rbWFyay5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGJvb2ttYXJrIHJlY2VpdmVkIGZvbGxvd2luZyB0aGUgbGFzdCBjb21wbGV0ZWQge0BsaW5rIFRyYW5zYWN0aW9ufS5cbiAgICpcbiAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byBhIHByZXZpb3VzIHRyYW5zYWMndGlvblxuICAgKi9cbiAgbGFzdEJvb2ttYXJrKCkge1xuICAgIHJldHVybiB0aGlzLl9sYXN0Qm9va21hcms7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBnaXZlbiB1bml0IG9mIHdvcmsgaW4gYSB7QGxpbmsgRHJpdmVyI1JFQUR9IHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUcmFuc2FjdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY29tbWl0dGVkIHVubGVzcyB0aGUgZ2l2ZW4gZnVuY3Rpb24gdGhyb3dzIG9yIHJldHVybnMgYSByZWplY3RlZCBwcm9taXNlLlxuICAgKiBTb21lIGZhaWx1cmVzIG9mIHRoZSBnaXZlbiBmdW5jdGlvbiBvciB0aGUgY29tbWl0IGl0c2VsZiB3aWxsIGJlIHJldHJpZWQgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIHdpdGggaW5pdGlhbFxuICAgKiBkZWxheSBvZiAxIHNlY29uZCBhbmQgbWF4aW11bSByZXRyeSB0aW1lIG9mIDMwIHNlY29uZHMuIE1heGltdW0gcmV0cnkgdGltZSBpcyBjb25maWd1cmFibGUgdmlhIGRyaXZlciBjb25maWcnc1xuICAgKiA8Y29kZT5tYXhUcmFuc2FjdGlvblJldHJ5VGltZTwvY29kZT4gcHJvcGVydHkgaW4gbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFRyYW5zYWN0aW9uKX0gdHJhbnNhY3Rpb25Xb3JrIC0gY2FsbGJhY2sgdGhhdCBleGVjdXRlcyBvcGVyYXRpb25zIGFnYWluc3RcbiAgICogYSBnaXZlbiB7QGxpbmsgVHJhbnNhY3Rpb259LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSByZXNvbHZlZCBwcm9taXNlIGFzIHJldHVybmVkIGJ5IHRoZSBnaXZlbiBmdW5jdGlvbiBvciByZWplY3RlZCBwcm9taXNlIHdoZW4gZ2l2ZW5cbiAgICogZnVuY3Rpb24gb3IgY29tbWl0IGZhaWxzLlxuICAgKi9cbiAgcmVhZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uV29yaykge1xuICAgIHJldHVybiB0aGlzLl9ydW5UcmFuc2FjdGlvbihSRUFELCB0cmFuc2FjdGlvbldvcmspO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgZ2l2ZW4gdW5pdCBvZiB3b3JrIGluIGEge0BsaW5rIERyaXZlciNXUklURX0gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRyYW5zYWN0aW9uIHdpbGwgYXV0b21hdGljYWxseSBiZSBjb21taXR0ZWQgdW5sZXNzIHRoZSBnaXZlbiBmdW5jdGlvbiB0aHJvd3Mgb3IgcmV0dXJucyBhIHJlamVjdGVkIHByb21pc2UuXG4gICAqIFNvbWUgZmFpbHVyZXMgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHRoZSBjb21taXQgaXRzZWxmIHdpbGwgYmUgcmV0cmllZCB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBpbml0aWFsXG4gICAqIGRlbGF5IG9mIDEgc2Vjb25kIGFuZCBtYXhpbXVtIHJldHJ5IHRpbWUgb2YgMzAgc2Vjb25kcy4gTWF4aW11bSByZXRyeSB0aW1lIGlzIGNvbmZpZ3VyYWJsZSB2aWEgZHJpdmVyIGNvbmZpZydzXG4gICAqIDxjb2RlPm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lPC9jb2RlPiBwcm9wZXJ0eSBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oVHJhbnNhY3Rpb24pfSB0cmFuc2FjdGlvbldvcmsgLSBjYWxsYmFjayB0aGF0IGV4ZWN1dGVzIG9wZXJhdGlvbnMgYWdhaW5zdFxuICAgKiBhIGdpdmVuIHtAbGluayBUcmFuc2FjdGlvbn0uXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IHJlc29sdmVkIHByb21pc2UgYXMgcmV0dXJuZWQgYnkgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHJlamVjdGVkIHByb21pc2Ugd2hlbiBnaXZlblxuICAgKiBmdW5jdGlvbiBvciBjb21taXQgZmFpbHMuXG4gICAqL1xuICB3cml0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uV29yaykge1xuICAgIHJldHVybiB0aGlzLl9ydW5UcmFuc2FjdGlvbihXUklURSwgdHJhbnNhY3Rpb25Xb3JrKTtcbiAgfVxuXG4gIF9ydW5UcmFuc2FjdGlvbihhY2Nlc3NNb2RlLCB0cmFuc2FjdGlvbldvcmspIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25FeGVjdXRvci5leGVjdXRlKFxuICAgICAgKCkgPT4gdGhpcy5fYmVnaW5UcmFuc2FjdGlvbihhY2Nlc3NNb2RlLCB0aGlzLmxhc3RCb29rbWFyaygpKSxcbiAgICAgIHRyYW5zYWN0aW9uV29ya1xuICAgICk7XG4gIH1cblxuICBfdXBkYXRlQm9va21hcmsobmV3Qm9va21hcmspIHtcbiAgICBpZiAobmV3Qm9va21hcmspIHtcbiAgICAgIHRoaXMuX2xhc3RCb29rbWFyayA9IG5ld0Jvb2ttYXJrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGlzIHNlc3Npb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHNlc3Npb24gaGFzIGJlZW4gY2xvc2VkXG4gICAqIEByZXR1cm5cbiAgICovXG4gIGNsb3NlKGNhbGxiYWNrID0gKCgpID0+IG51bGwpKSB7XG4gICAgaWYgKHRoaXMuX29wZW4pIHtcbiAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXhlY3V0b3IuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3JlYWRDb25uZWN0aW9uSG9sZGVyLmNsb3NlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3dyaXRlQ29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLy9DYW4gYmUgb3ZlcnJpZGRlbiB0byBhZGQgZXJyb3IgY2FsbGJhY2sgb24gUlVOXG4gIF9vblJ1bkZhaWx1cmUoKSB7XG4gICAgcmV0dXJuIChlcnIpID0+IHtyZXR1cm4gZXJyfTtcbiAgfVxuXG4gIF9jb25uZWN0aW9uSG9sZGVyV2l0aE1vZGUobW9kZSkge1xuICAgIGlmIChtb2RlID09PSBSRUFEKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcmVhZENvbm5lY3Rpb25Ib2xkZXI7XG4gICAgfSBlbHNlIGlmIChtb2RlID09PSBXUklURSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3dyaXRlQ29ubmVjdGlvbkhvbGRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoJ1Vua25vd24gYWNjZXNzIG1vZGU6ICcgKyBtb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEludGVybmFsIHN0cmVhbSBvYnNlcnZlciB1c2VkIGZvciB0cmFuc2FjdGlvbmFsIHJlc3VsdHMqL1xuY2xhc3MgX1J1bk9ic2VydmVyIGV4dGVuZHMgU3RyZWFtT2JzZXJ2ZXIge1xuICBjb25zdHJ1Y3RvcihvbkVycm9yKSB7XG4gICAgc3VwZXIob25FcnJvcik7XG4gICAgdGhpcy5fbWV0YSA9IHt9O1xuICB9XG5cbiAgb25Db21wbGV0ZWQobWV0YSkge1xuICAgIHN1cGVyLm9uQ29tcGxldGVkKG1ldGEpO1xuICAgIGZvcih2YXIga2V5IGluIG1ldGEpe1xuICAgICAgaWYobWV0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKXtcbiAgICAgICAgdGhpcy5fbWV0YVtrZXldPW1ldGFba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtZXRhKCkge1xuICAgIGNvbnN0IHNlcnZlck1ldGEgPSB7c2VydmVyOiB0aGlzLl9jb25uLnNlcnZlcn07XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX21ldGEsIHNlcnZlck1ldGEpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVUcmFuc2FjdGlvbkV4ZWN1dG9yKGNvbmZpZykge1xuICBjb25zdCBtYXhSZXRyeVRpbWVNcyA9IChjb25maWcgJiYgY29uZmlnLm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lKSA/IGNvbmZpZy5tYXhUcmFuc2FjdGlvblJldHJ5VGltZSA6IG51bGw7XG4gIHJldHVybiBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcihtYXhSZXRyeVRpbWVNcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlc3Npb247XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBTdHJlYW1PYnNlcnZlciBmcm9tICcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcic7XG5pbXBvcnQgUmVzdWx0IGZyb20gJy4vcmVzdWx0JztcbmltcG9ydCB7YXNzZXJ0U3RyaW5nfSBmcm9tICcuL2ludGVybmFsL3V0aWwnO1xuaW1wb3J0IHtFTVBUWV9DT05ORUNUSU9OX0hPTERFUn0gZnJvbSAnLi9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlcic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHRyYW5zYWN0aW9uIGluIHRoZSBOZW80aiBkYXRhYmFzZS5cbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5jbGFzcyBUcmFuc2FjdGlvbiB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtDb25uZWN0aW9uSG9sZGVyfSBjb25uZWN0aW9uSG9sZGVyIC0gdGhlIGNvbm5lY3Rpb24gaG9sZGVyIHRvIGdldCBjb25uZWN0aW9uIGZyb20uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gb25DbG9zZSAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvciByb2xsZWQgYmFjay5cbiAgICogQHBhcmFtIGVycm9yVHJhbnNmb3JtZXIgY2FsbGJhY2sgdXNlIHRvIHRyYW5zZm9ybSBlcnJvclxuICAgKiBAcGFyYW0gYm9va21hcmsgb3B0aW9uYWwgYm9va21hcmtcbiAgICogQHBhcmFtIG9uQm9va21hcmsgY2FsbGJhY2sgaW52b2tlZCB3aGVuIG5ldyBib29rbWFyayBpcyBwcm9kdWNlZFxuICAgKi9cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbkhvbGRlciwgb25DbG9zZSwgZXJyb3JUcmFuc2Zvcm1lciwgYm9va21hcmssIG9uQm9va21hcmspIHtcbiAgICB0aGlzLl9jb25uZWN0aW9uSG9sZGVyID0gY29ubmVjdGlvbkhvbGRlcjtcbiAgICBsZXQgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcyk7XG4gICAgbGV0IHBhcmFtcyA9IHt9O1xuICAgIGlmIChib29rbWFyaykge1xuICAgICAgcGFyYW1zID0ge2Jvb2ttYXJrOiBib29rbWFya307XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihjb25uID0+IHtcbiAgICAgIHN0cmVhbU9ic2VydmVyLnJlc29sdmVDb25uZWN0aW9uKGNvbm4pO1xuICAgICAgY29ubi5ydW4oJ0JFR0lOJywgcGFyYW1zLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgICBjb25uLnB1bGxBbGwoc3RyZWFtT2JzZXJ2ZXIpO1xuICAgIH0pLmNhdGNoKGVycm9yID0+IHN0cmVhbU9ic2VydmVyLm9uRXJyb3IoZXJyb3IpKTtcblxuICAgIHRoaXMuX3N0YXRlID0gX3N0YXRlcy5BQ1RJVkU7XG4gICAgdGhpcy5fb25DbG9zZSA9IG9uQ2xvc2U7XG4gICAgdGhpcy5fZXJyb3JUcmFuc2Zvcm1lciA9IGVycm9yVHJhbnNmb3JtZXI7XG4gICAgdGhpcy5fb25Cb29rbWFyayA9IG9uQm9va21hcmsgfHwgKCgpID0+IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gQ3lwaGVyIHN0YXRlbWVudFxuICAgKiBDb3VsZCBiZSBjYWxsZWQgd2l0aCBhIHN0YXRlbWVudCBvYmplY3QgaS5lLjoge3N0YXRlbWVudDogXCJNQVRDSCAuLi5cIiwgcGFyYW1ldGVyczoge3BhcmFtOiAxfX1cbiAgICogb3Igd2l0aCB0aGUgc3RhdGVtZW50IGFuZCBwYXJhbWV0ZXJzIGFzIHNlcGFyYXRlIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqIEByZXR1cm4ge1Jlc3VsdH0gTmV3IFJlc3VsdFxuICAgKi9cbiAgcnVuKHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgIGlmKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdvYmplY3QnICYmIHN0YXRlbWVudC50ZXh0KSB7XG4gICAgICBwYXJhbWV0ZXJzID0gc3RhdGVtZW50LnBhcmFtZXRlcnMgfHwge307XG4gICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudGV4dDtcbiAgICB9XG4gICAgYXNzZXJ0U3RyaW5nKHN0YXRlbWVudCwgXCJDeXBoZXIgc3RhdGVtZW50XCIpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLnJ1bih0aGlzLl9jb25uZWN0aW9uSG9sZGVyLCAgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbW1pdHMgdGhlIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAqXG4gICAqIEFmdGVyIGNvbW1pdHRpbmcgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICpcbiAgICogQHJldHVybnMge1Jlc3VsdH0gTmV3IFJlc3VsdFxuICAgKi9cbiAgY29tbWl0KCkge1xuICAgIGxldCBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5jb21taXQodGhpcy5fY29ubmVjdGlvbkhvbGRlciwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpKTtcbiAgICB0aGlzLl9zdGF0ZSA9IGNvbW1pdHRlZC5zdGF0ZTtcbiAgICAvL2NsZWFuIHVwXG4gICAgdGhpcy5fb25DbG9zZSgpO1xuICAgIHJldHVybiBjb21taXR0ZWQucmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJvbGxiYWNrcyB0aGUgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEFmdGVyIHJvbGxpbmcgYmFjaywgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICpcbiAgICogQHJldHVybnMge1Jlc3VsdH0gTmV3IFJlc3VsdFxuICAgKi9cbiAgcm9sbGJhY2soKSB7XG4gICAgbGV0IGNvbW1pdHRlZCA9IHRoaXMuX3N0YXRlLnJvbGxiYWNrKHRoaXMuX2Nvbm5lY3Rpb25Ib2xkZXIsIG5ldyBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKSk7XG4gICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgLy9jbGVhbiB1cFxuICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZSwgd2hpY2ggbWVhbnMgY29tbWl0IGFuZCByb2xsYmFjayBkaWQgbm90IGhhcHBlbi5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gPGNvZGU+dHJ1ZTwvY29kZT4gd2hlbiBub3QgY29tbWl0dGVkIGFuZCBub3Qgcm9sbGVkIGJhY2ssIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuXG4gICAqL1xuICBpc09wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlID09IF9zdGF0ZXMuQUNUSVZFO1xuICB9XG5cbiAgX29uRXJyb3IoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIC8vIGF0dGVtcHQgdG8gcm9sbGJhY2ssIHVzZWZ1bCB3aGVuIFRyYW5zYWN0aW9uI3J1bigpIGZhaWxlZFxuICAgICAgcmV0dXJuIHRoaXMucm9sbGJhY2soKS5jYXRjaChpZ25vcmVkRXJyb3IgPT4ge1xuICAgICAgICAvLyBpZ25vcmUgYWxsIGVycm9ycyBiZWNhdXNlIGl0IGlzIGJlc3QgZWZmb3J0IGFuZCB0cmFuc2FjdGlvbiBtaWdodCBhbHJlYWR5IGJlIHJvbGxlZCBiYWNrXG4gICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gYWZ0ZXIgcm9sbGJhY2sgYXR0ZW1wdCBjaGFuZ2UgdGhpcyB0cmFuc2FjdGlvbidzIHN0YXRlIHRvIEZBSUxFRFxuICAgICAgICB0aGlzLl9zdGF0ZSA9IF9zdGF0ZXMuRkFJTEVEO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVycm9yIGhhcHBlbmVkIGluIGluLWFjdGl2ZSB0cmFuc2FjdGlvbiwganVzdCB0byB0aGUgY2xlYW51cCBhbmQgY2hhbmdlIHN0YXRlIHRvIEZBSUxFRFxuICAgICAgdGhpcy5fc3RhdGUgPSBfc3RhdGVzLkZBSUxFRDtcbiAgICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICAgIC8vIG5vIGFzeW5jIGFjdGlvbnMgbmVlZGVkIC0gcmV0dXJuIHJlc29sdmVkIHByb21pc2VcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEludGVybmFsIHN0cmVhbSBvYnNlcnZlciB1c2VkIGZvciB0cmFuc2FjdGlvbmFsIHJlc3VsdHMqL1xuY2xhc3MgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIgZXh0ZW5kcyBTdHJlYW1PYnNlcnZlciB7XG4gIGNvbnN0cnVjdG9yKHR4KSB7XG4gICAgc3VwZXIodHguX2Vycm9yVHJhbnNmb3JtZXIgfHwgKChlcnIpID0+IHtyZXR1cm4gZXJyfSkpO1xuICAgIHRoaXMuX3R4ID0gdHg7XG4gICAgLy90aGlzIGlzIHRvIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIG9uRXJyb3IgY2F1c2VkIGJ5IElHTk9SRURcbiAgICB0aGlzLl9oYXNGYWlsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRXJyb3IoZXJyb3IpIHtcbiAgICBpZiAoIXRoaXMuX2hhc0ZhaWxlZCkge1xuICAgICAgdGhpcy5fdHguX29uRXJyb3IoKS50aGVuKCgpID0+IHtcbiAgICAgICAgc3VwZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIHRoaXMuX2hhc0ZhaWxlZCA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgc3VwZXIub25Db21wbGV0ZWQobWV0YSk7XG4gICAgY29uc3QgYm9va21hcmsgPSBtZXRhLmJvb2ttYXJrO1xuICAgIHRoaXMuX3R4Ll9vbkJvb2ttYXJrKGJvb2ttYXJrKTtcbiAgfVxuXG4gIHNlcnZlck1ldGEoKSB7XG4gICAgY29uc3Qgc2VydmVyTWV0YSA9IHtzZXJ2ZXI6IHRoaXMuX2Nvbm4uc2VydmVyfTtcbiAgICByZXR1cm4gc2VydmVyTWV0YTtcbiAgfVxufVxuXG4vKiogaW50ZXJuYWwgc3RhdGUgbWFjaGluZSBvZiB0aGUgdHJhbnNhY3Rpb24qL1xubGV0IF9zdGF0ZXMgPSB7XG4gIC8vVGhlIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgd2l0aCBubyBleHBsaWNpdCBzdWNjZXNzIG9yIGZhaWx1cmUgbWFya2VkXG4gIEFDVElWRToge1xuICAgIGNvbW1pdDogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICByZXR1cm4ge3Jlc3VsdDogX3J1blB1bGxBbGwoXCJDT01NSVRcIiwgY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpLFxuICAgICAgICBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUR9XG4gICAgfSxcbiAgICByb2xsYmFjazogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICByZXR1cm4ge3Jlc3VsdDogX3J1blB1bGxBbGwoXCJST0xMQkFDS1wiLCBjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLfTtcbiAgICB9LFxuICAgIHJ1bjogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpID0+IHtcbiAgICAgIGNvbm5lY3Rpb25Ib2xkZXIuZ2V0Q29ubmVjdGlvbigpLnRoZW4oY29ubiA9PiB7XG4gICAgICAgIG9ic2VydmVyLnJlc29sdmVDb25uZWN0aW9uKGNvbm4pO1xuICAgICAgICBjb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMgfHwge30sIG9ic2VydmVyKTtcbiAgICAgICAgY29ubi5wdWxsQWxsKG9ic2VydmVyKTtcbiAgICAgICAgY29ubi5zeW5jKCk7XG4gICAgICB9KS5jYXRjaChlcnJvciA9PiBvYnNlcnZlci5vbkVycm9yKGVycm9yKSk7XG5cbiAgICAgIHJldHVybiBuZXdSdW5SZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgKCkgPT4gb2JzZXJ2ZXIuc2VydmVyTWV0YSgpKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9BbiBlcnJvciBoYXMgb2NjdXJyZWQsIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZCBhbmQgbm8gbW9yZSBtZXNzYWdlcyB3aWxsXG4gIC8vIGJlIHNlbnQgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gIEZBSUxFRDoge1xuICAgIGNvbW1pdDogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgK1xuICAgICAgICBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiByb2xsZWQgYmFjay4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgK1xuICAgICAgICBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtyZXN1bHQ6IG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBcIkNPTU1JVFwiLCB7fSksIHN0YXRlOiBfc3RhdGVzLkZBSUxFRH07XG4gICAgfSxcbiAgICByb2xsYmFjazogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtlcnJvcjpcbiAgICAgIFwiQ2Fubm90IHJvbGxiYWNrIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICtcbiAgICAgIFwidHJhbnNhY3Rpb24gaGFzIGZhaWxlZCBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCJ9KTtcbiAgICAgIHJldHVybiB7cmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLkZBSUxFRH07XG4gICAgfSxcbiAgICBydW46IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtlcnJvcjpcbiAgICAgIFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgK1xuICAgICAgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIn0pO1xuICAgICAgcmV0dXJuIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIHN1Y2Nlc3NmdWxseSBjb21taXR0ZWRcbiAgU1VDQ0VFREVEOiB7XG4gICAgY29tbWl0OiAoY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3Ioe1xuICAgICAgICBlcnJvcjogXCJDYW5ub3QgY29tbWl0IHN0YXRlbWVudHMgaW4gdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBjb21taXQgaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2FsbGVkIG9uIHRoZSB0cmFuc2FjdGlvbiBhbmQgdHJhbnNhY3Rpb24gaGFzIGJlZW4gY2xvc2VkLiBQbGVhc2Ugc3RhcnQgYSBuZXdcIiArXG4gICAgICAgIFwiIHRyYW5zYWN0aW9uIHRvIHJ1biBhbm90aGVyIHN0YXRlbWVudC5cIlxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge3Jlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiAoY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3Ioe2Vycm9yOlxuICAgICAgICBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCJ9KTtcbiAgICAgIHJldHVybiB7cmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlNVQ0NFRURFRH07XG4gICAgfSxcbiAgICBydW46IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtlcnJvcjpcbiAgICAgIFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2xvc2VkLlwifSk7XG4gICAgICByZXR1cm4gbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuICB9LFxuXG4gIC8vVGhpcyB0cmFuc2FjdGlvbiBoYXMgYmVlbiByb2xsZWQgYmFja1xuICBST0xMRURfQkFDSzoge1xuICAgIGNvbW1pdDogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtyZXN1bHQ6IG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBcIkNPTU1JVFwiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiAoY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3Ioe2Vycm9yOlxuICAgICAgICBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwifSk7XG4gICAgICByZXR1cm4ge3Jlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiUk9MTEJBQ0tcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDS307XG4gICAgfSxcbiAgICBydW46IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtlcnJvcjpcbiAgICAgICAgXCJDYW5ub3QgcnVuIHN0YXRlbWVudCwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwifSk7XG4gICAgICByZXR1cm4gbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycyk7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfcnVuUHVsbEFsbChtc2csIGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSB7XG4gIGNvbm5lY3Rpb25Ib2xkZXIuZ2V0Q29ubmVjdGlvbigpLnRoZW4oXG4gICAgY29ubiA9PiB7XG4gICAgICBvYnNlcnZlci5yZXNvbHZlQ29ubmVjdGlvbihjb25uKTtcbiAgICAgIGNvbm4ucnVuKG1zZywge30sIG9ic2VydmVyKTtcbiAgICAgIGNvbm4ucHVsbEFsbChvYnNlcnZlcik7XG4gICAgICBjb25uLnN5bmMoKTtcbiAgICB9KS5jYXRjaChlcnJvciA9PiBvYnNlcnZlci5vbkVycm9yKGVycm9yKSk7XG5cbiAgLy8gZm9yIGNvbW1pdCAmIHJvbGxiYWNrIHdlIG5lZWQgcmVzdWx0IHRoYXQgdXNlcyByZWFsIGNvbm5lY3Rpb24gaG9sZGVyIGFuZCBub3RpZmllcyBpdCB3aGVuXG4gIC8vIGNvbm5lY3Rpb24gaXMgbm90IG5lZWRlZCBhbmQgY2FuIGJlIHNhZmVseSByZWxlYXNlZCB0byB0aGUgcG9vbFxuICByZXR1cm4gbmV3IFJlc3VsdChvYnNlcnZlciwgbXNnLCB7fSwgZW1wdHlNZXRhZGF0YVN1cHBsaWVyLCBjb25uZWN0aW9uSG9sZGVyKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEge0BsaW5rIFJlc3VsdH0gd2l0aCBlbXB0eSBjb25uZWN0aW9uIGhvbGRlci5cbiAqIFNob3VsZCBiZSB1c2VkIGFzIGEgcmVzdWx0IGZvciBydW5uaW5nIGN5cGhlciBzdGF0ZW1lbnRzLiBUaGV5IGNhbiByZXN1bHQgaW4gbWV0YWRhdGEgYnV0IHNob3VsZCBub3RcbiAqIGluZmx1ZW5jZSByZWFsIGNvbm5lY3Rpb24gaG9sZGVyIHRvIHJlbGVhc2UgY29ubmVjdGlvbnMgYmVjYXVzZSBzaW5nbGUgdHJhbnNhY3Rpb24gY2FuIGhhdmVcbiAqIHtAbGluayBUcmFuc2FjdGlvbiNydW59IGNhbGxlZCBtdWx0aXBsZSB0aW1lcy5cbiAqIEBwYXJhbSB7U3RyZWFtT2JzZXJ2ZXJ9IG9ic2VydmVyIC0gYW4gb2JzZXJ2ZXIgZm9yIHRoZSBjcmVhdGVkIHJlc3VsdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZW1lbnQgLSB0aGUgY3lwaGVyIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VkIHRoZSByZXN1bHQuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycyAtIHRoZSBwYXJhbWV0ZXJzIGZvciBjeXBoZXIgc3RhdGVtZW50IHRoYXQgcHJvZHVjZWQgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGFkYXRhU3VwcGxpZXIgLSB0aGUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbWV0YWRhdGEgb2JqZWN0LlxuICogQHJldHVybiB7UmVzdWx0fSBuZXcgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBuZXdSdW5SZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YWRhdGFTdXBwbGllcikge1xuICByZXR1cm4gbmV3IFJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhZGF0YVN1cHBsaWVyLCBFTVBUWV9DT05ORUNUSU9OX0hPTERFUik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBSZXN1bHR9IHdpdGhvdXQgbWV0YWRhdGEgc3VwcGxpZXIgYW5kIHdpdGggZW1wdHkgY29ubmVjdGlvbiBob2xkZXIuXG4gKiBGb3IgY2FzZXMgd2hlbiByZXN1bHQgcmVwcmVzZW50cyBhbiBpbnRlcm1lZGlhdGUgb3IgZmFpbGVkIGFjdGlvbiwgZG9lcyBub3QgcmVxdWlyZSBhbnkgbWV0YWRhdGEgYW5kIGRvZXMgbm90XG4gKiBuZWVkIHRvIGluZmx1ZW5jZSByZWFsIGNvbm5lY3Rpb24gaG9sZGVyIHRvIHJlbGVhc2UgY29ubmVjdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBvYnNlcnZlciAtIGFuIG9ic2VydmVyIGZvciB0aGUgY3JlYXRlZCByZXN1bHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gdGhlIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSB0aGUgcGFyYW1ldGVycyBmb3IgY3lwaGVyIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VkIHRoZSByZXN1bHQuXG4gKiBAcmV0dXJuIHtSZXN1bHR9IG5ldyByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgcmV0dXJuIG5ldyBSZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgZW1wdHlNZXRhZGF0YVN1cHBsaWVyLCBFTVBUWV9DT05ORUNUSU9OX0hPTERFUik7XG59XG5cbmZ1bmN0aW9uIGVtcHR5TWV0YWRhdGFTdXBwbGllcigpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBUcmFuc2FjdGlvbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBETyBOT1QgQ0hBTkdFIFRIRSBWRVJTSU9OIEJFTE9XIEhFUkVcbi8vIFRoaXMgaXMgc2V0IGJ5IHRoZSBidWlsZCBzeXN0ZW0gYXQgcmVsZWFzZSB0aW1lLCB1c2luZ1xuLy8gICBndWxwIHNldCAtLXZlcnNpb24gPHJlbGVhc2V2ZXJzaW9uPlxuLy9cbi8vIFRoaXMgaXMgc2V0IHVwIHRoaXMgd2F5IHRvIGtlZXAgdGhlIHZlcnNpb24gaW4gdGhlIGNvZGUgaW5cbi8vIHN5bmMgd2l0aCB0aGUgbnBtIHBhY2thZ2UgdmVyc2lvbiwgYW5kIHRvIGFsbG93IHRoZSBidWlsZFxuLy8gc3lzdGVtIHRvIGNvbnRyb2wgdmVyc2lvbiBuYW1lcyBhdCBwYWNrYWdpbmcgdGltZS5cbmV4cG9ydCBkZWZhdWx0IFwiMC4wLjAtZGV2XCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIGFsbG9jID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLmFsbG9jO1xudmFyIENvbWJpbmVkQnVmZmVyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLkNvbWJpbmVkQnVmZmVyO1xudmFyIHV0ZjggPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvdXRmOCcpLmRlZmF1bHQ7XG52YXIgVW5wYWNrZXIgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL3BhY2tzdHJlYW0uanNcIikuVW5wYWNrZXI7XG5cbmRlc2NyaWJlKCdidWZmZXJzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgaGF2ZSBoZWxwZnVsIHRvU3RyaW5nJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDQpO1xuICAgIGIud3JpdGVJbnQ4KDEpO1xuICAgIGIud3JpdGVJbnQ4KDgpO1xuICAgIGIud3JpdGVJbnQ4KDE1KTtcbiAgICBiLndyaXRlSW50OCgxMjcpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBzdHIgPSBiLnRvU3RyaW5nKCk7XG4gICAgdmFyIGhleCA9IGIudG9IZXgoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHN0ciApLnRvQ29udGFpbihcIiggcG9zaXRpb249NCApXFxuICAwMSAwOCAwZiA3ZlwiKTtcbiAgICBleHBlY3QoaGV4KS50b0JlKFwiMDEgMDggMGYgN2YgXCIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDgtYml0IHVuc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDEpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0VUludDgoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldFVJbnQ4KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE1OyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0VUludDE2KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50MTYoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzA7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRVSW50MzIoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldFVJbnQzMigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgOC1iaXQgc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDEpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0SW50OCggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0SW50OCgwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMTYtYml0IHNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygyKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTQ7IGkrKykge1xuICAgICAgdmFyIG4gPSBNYXRoLnBvdygyLCBpKTtcblxuICAgICAgLy8gV2hlblxuICAgICAgYi5wdXRJbnQxNiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0SW50MTYoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0SW50MzIoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDMyKDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBlbmNvZGUgbGlzdCBjb3JyZWN0bHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4OTAgfCAweDIpO1xuICAgIGIgPSB3cml0ZVN0cmluZyhiLCAnYScpO1xuICAgIGIgPSB3cml0ZVN0cmluZyhiLCAnYicpO1xuICAgIC8vIFdoZW5cbiAgICB2YXIgaGV4ID0gYi50b0hleCgpO1xuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoaGV4KS50b0JlKFwiOTIgODEgNjEgODEgNjIgXCIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRlY29kZSBsaXN0IGNvcnJlY3RseScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg1KTtcbiAgICBiLndyaXRlVUludDgoMHg5Mik7XG4gICAgYi53cml0ZVVJbnQ4KDB4ODEpO1xuICAgIGIud3JpdGVVSW50OCgweDYxKTtcbiAgICBiLndyaXRlVUludDgoMHg4MSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4NjIpO1xuICAgIGIucmVzZXQoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGF0YSA9IG5ldyBVbnBhY2tlcigpLnVucGFjayggYiApO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChkYXRhWzBdKS50b0JlKCdhJyk7XG4gICAgZXhwZWN0KGRhdGFbMV0pLnRvQmUoJ2InKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0NvbWJpbmVkQnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgcmVhZCBpbnQ4JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYjEgPSBhbGxvYygxKTtcbiAgICB2YXIgYjIgPSBhbGxvYygxKTtcbiAgICBiMS5wdXRJbnQ4KDAsIDEpO1xuICAgIGIyLnB1dEludDgoMCwgMik7XG5cbiAgICB2YXIgYiA9IG5ldyBDb21iaW5lZEJ1ZmZlcihbYjEsYjJdKTtcbiAgICBcbiAgICAvLyBXaGVuXG4gICAgdmFyIGZpcnN0ID0gYi5yZWFkSW50OCgpO1xuICAgIHZhciBzZWNvbmQgPSBiLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGZpcnN0KS50b0JlKDEpO1xuICAgIGV4cGVjdChzZWNvbmQpLnRvQmUoMik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBkaXZpZGVkIGZsb2F0NjQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBpbm5lciA9IGFsbG9jKDgpO1xuICAgIGlubmVyLnB1dEZsb2F0NjQoMCwgMC4xKTtcblxuICAgIHZhciBiID0gbmV3IENvbWJpbmVkQnVmZmVyKFtpbm5lci5yZWFkU2xpY2UoNCksaW5uZXIucmVhZFNsaWNlKDQpXSk7XG4gICAgXG4gICAgLy8gV2hlblxuICAgIHZhciByZWFkID0gYi5yZWFkRmxvYXQ2NCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChyZWFkKS50b0JlKDAuMSk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHdyaXRlU3RyaW5nKGIsIHN0cikge1xuICB2YXIgYnl0ZXMgPSB1dGY4LmVuY29kZShzdHIpO1xuICB2YXIgc2l6ZSA9IGJ5dGVzLmxlbmd0aDtcbiAgYi53cml0ZVVJbnQ4KDB4ODAgfCBzaXplKTtcbiAgYi53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgcmV0dXJuIGI7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIENodW5rZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2h1bmtpbmcnKS5DaHVua2VyO1xudmFyIERlY2h1bmtlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaHVua2luZycpLkRlY2h1bmtlcjtcbnZhciBhbGxvYyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5hbGxvYztcbnZhciBDb21iaW5lZEJ1ZmZlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5Db21iaW5lZEJ1ZmZlcjtcbnZhciBEdW1teUNoYW5uZWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2gtZHVtbXkuanMnKS5jaGFubmVsO1xuXG5kZXNjcmliZSgnQ2h1bmtlcicsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIGNodW5rIHNpbXBsZSBkYXRhJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCk7XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUludDMyKDEpO1xuICAgIGNodW5rZXIud3JpdGVJbnQzMigyKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBjaC50b0hleCgpICkudG9CZShcIjAwIDA4IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAyIFwiKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgY2h1bmsgYmxvYnMgbGFyZ2VyIHRoYW4gdGhlIG91dHB1dCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoLCA0KTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlQnl0ZXMoYnl0ZXMoIDEsMiwzLDQsNSw2ICkpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGNoLnRvSGV4KCkgKS50b0JlKFwiMDAgMDIgMDEgMDIgMDAgMDIgMDMgMDQgMDAgMDIgMDUgMDYgXCIpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBpbmNsdWRlIG1lc3NhZ2UgYm91bmRhcmllcycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gpO1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQzMigxKTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIud3JpdGVJbnQzMigyKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBjaC50b0hleCgpICkudG9CZShcIjAwIDA0IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDA0IDAwIDAwIDAwIDAyIFwiKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0RlY2h1bmtlcicsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHVuY2h1bmsgYSBzaW1wbGUgbWVzc2FnZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1lc3NhZ2VzID0gW107XG4gICAgdmFyIGRlY2h1bmtlciA9IG5ldyBEZWNodW5rZXIoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGRlY2h1bmtlcik7XG4gICAgZGVjaHVua2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGJ1ZmZlcikgeyBtZXNzYWdlcy5wdXNoKGJ1ZmZlcik7IH07XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUludDE2KDEpO1xuICAgIGNodW5rZXIud3JpdGVJbnQxNigyKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG4gICAgY2h1bmtlci53cml0ZUludDE2KDMpO1xuICAgIGNodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggbWVzc2FnZXMubGVuZ3RoICkudG9CZSggMSApO1xuICAgIGV4cGVjdCggbWVzc2FnZXNbMF0udG9IZXgoKSApLnRvQmUoIFwiMDAgMDEgMDAgMDIgMDAgMDMgXCIgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgbWVzc2FnZSBzcGxpdCBhdCBhbnkgcG9pbnQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoKTtcblxuICAgIC8vIEFuZCBnaXZlbiB0aGUgZm9sbG93aW5nIG1lc3NhZ2VcbiAgICBjaHVua2VyLndyaXRlSW50OCgxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MTYoMik7XG4gICAgY2h1bmtlci53cml0ZUludDMyKDMpO1xuICAgIGNodW5rZXIud3JpdGVVSW50OCg0KTtcbiAgICBjaHVua2VyLndyaXRlVUludDMyKDUpO1xuICAgIGNodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgdmFyIGNodW5rZWQgPSBjaC50b0J1ZmZlcigpO1xuXG4gICAgLy8gV2hlbiBJIHRyeSBzcGxpdHRpbmcgdGhpcyBjaHVua2VkIGRhdGEgYXQgZXZlcnkgcG9zc2libGUgcG9zaXRpb25cbiAgICAvLyBpbnRvIHR3byBzZXBhcmF0ZSBidWZmZXJzLCBhbmQgc2VuZCB0aG9zZSB0byB0aGUgZGVjaHVua2VyXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBjaHVua2VkLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2xpY2UxID0gY2h1bmtlZC5nZXRTbGljZSggMCwgaSApO1xuICAgICAgdmFyIHNsaWNlMiA9IGNodW5rZWQuZ2V0U2xpY2UoIGksIGNodW5rZWQubGVuZ3RoIC0gaSApO1xuXG4gICAgICAvLyBEZWNodW5rIHRoZSBzbGljZXNcbiAgICAgIHZhciBtZXNzYWdlcyA9IFtdO1xuICAgICAgdmFyIGRlY2h1bmtlciA9IG5ldyBEZWNodW5rZXIoKTtcbiAgICAgIGRlY2h1bmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihidWZmZXIpIHsgbWVzc2FnZXMucHVzaChidWZmZXIpOyB9O1xuICAgICAgZGVjaHVua2VyLndyaXRlKCBzbGljZTEgKTtcbiAgICAgIGRlY2h1bmtlci53cml0ZSggc2xpY2UyICk7XG5cbiAgICAgIC8vIFRoZW4sIHRoZSBvdXRwdXQgc2hvdWxkIGJlIGNvcnJlY3RcbiAgICAgIGV4cGVjdCggbWVzc2FnZXMubGVuZ3RoICkudG9CZSggMSApO1xuICAgICAgZXhwZWN0KCBtZXNzYWdlc1swXS50b0hleCgpICkudG9CZSggXCIwMSAwMCAwMiAwMCAwMCAwMCAwMyAwNCAwMCAwMCAwMCAwNSBcIiApO1xuICAgIH07XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIGJ5dGVzKCkge1xuICB2YXIgYiA9IGFsbG9jKCBhcmd1bWVudHMubGVuZ3RoICk7XG4gIGZvciggdmFyIGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKysgKSB7XG4gICAgYi53cml0ZVVJbnQ4KCBhcmd1bWVudHNbaV0gKTtcbiAgfVxuICBiLnBvc2l0aW9uID0gMDtcbiAgcmV0dXJuIGI7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IENvbm5lY3Rpb25Ib2xkZXIsIHtFTVBUWV9DT05ORUNUSU9OX0hPTERFUn0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2Nvbm5lY3Rpb24taG9sZGVyJztcbmltcG9ydCB7U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyfSBmcm9tICcuLi8uLi9zcmMvdjEvaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMnO1xuaW1wb3J0IHtSRUFEfSBmcm9tICcuLi8uLi9zcmMvdjEvZHJpdmVyJztcbmltcG9ydCBGYWtlQ29ubmVjdGlvbiBmcm9tICcuL2Zha2UtY29ubmVjdGlvbic7XG5cbmRlc2NyaWJlKCdFbXB0eUNvbm5lY3Rpb25Ib2xkZXInLCAoKSA9PiB7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcmVqZWN0ZWQgcHJvbWlzZSBpbnN0ZWFkIG9mIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBFTVBUWV9DT05ORUNUSU9OX0hPTERFUi5nZXRDb25uZWN0aW9uKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiByZXNvbHZlZCBwcm9taXNlIG9uIHJlbGVhc2UnLCBkb25lID0+IHtcbiAgICBFTVBUWV9DT05ORUNUSU9OX0hPTERFUi5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiByZXNvbHZlZCBwcm9taXNlIG9uIGNsb3NlJywgZG9uZSA9PiB7XG4gICAgRU1QVFlfQ09OTkVDVElPTl9IT0xERVIuY2xvc2UoKS50aGVuKCgpID0+IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuXG5kZXNjcmliZSgnQ29ubmVjdGlvbkhvbGRlcicsICgpID0+IHtcblxuICBpdCgnc2hvdWxkIGFjcXVpcmUgbmV3IGNvbm5lY3Rpb24gZHVyaW5nIGluaXRpYWxpemF0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ldyBSZWNvcmRpbmdDb25uZWN0aW9uUHJvdmlkZXIoW25ldyBGYWtlQ29ubmVjdGlvbigpXSk7XG4gICAgY29uc3QgY29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG5cbiAgICBleHBlY3QoY29ubmVjdGlvblByb3ZpZGVyLmFjcXVpcmVDb25uZWN0aW9uSW52b2tlZCkudG9CZSgxKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYWNxdWlyZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb24pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uKS50b0JlKGNvbm5lY3Rpb24pO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlbGVhc2UgY29ubmVjdGlvbiB3aXRoIHNpbmdsZSB1c2VyJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ld1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uKTtcbiAgICBjb25zdCBjb25uZWN0aW9uSG9sZGVyID0gbmV3IENvbm5lY3Rpb25Ib2xkZXIoUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIucmVsZWFzZUNvbm5lY3Rpb24oKS50aGVuKCgpID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmlzUmVsZWFzZWRPbmNlKCkpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgcmVsZWFzZSBjb25uZWN0aW9uIHdpdGggbXVsdGlwbGUgdXNlcnMnLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb24pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5pc05ldmVyUmVsZWFzZWQoKSkudG9CZVRydXRoeSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlbGVhc2UgY29ubmVjdGlvbiB3aXRoIG11bHRpcGxlIHVzZXJzIHdoZW4gYWxsIHVzZXJzIHJlbGVhc2UnLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb24pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbm5lY3Rpb25Ib2xkZXIucmVsZWFzZUNvbm5lY3Rpb24oKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5pc1JlbGVhc2VkT25jZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgd2hlbiBjbG9zZWQgYW5kIG5vdCBpbml0aWFsaXplZCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXdTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIoY29ubmVjdGlvbik7XG4gICAgY29uc3QgY29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLmNsb3NlKCkudGhlbigoKSA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5pc05ldmVyUmVsZWFzZWQoKSkudG9CZVRydXRoeSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNsb3NlIGV2ZW4gd2hlbiB1c2VycyBleGlzdCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXdTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIoY29ubmVjdGlvbik7XG4gICAgY29uc3QgY29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNSZWxlYXNlZE9uY2VPblNlc3Npb25DbG9zZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSBuZXcgY29ubmVjdGlvbiBhZnRlciByZWxlYXNpbmcgY3VycmVudCBvbmUnLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uMSA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24yID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3IFJlY29yZGluZ0Nvbm5lY3Rpb25Qcm92aWRlcihbY29ubmVjdGlvbjEsIGNvbm5lY3Rpb24yXSk7XG4gICAgY29uc3QgY29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbjEuaXNSZWxlYXNlZE9uY2UoKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGV4cGVjdChjb25uZWN0aW9uMi5pc1JlbGVhc2VkT25jZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluaXRpYWxpemUgbmV3IGNvbm5lY3Rpb24gYWZ0ZXIgYmVpbmcgY2xvc2VkJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbjEgPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBjb25uZWN0aW9uMiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ldyBSZWNvcmRpbmdDb25uZWN0aW9uUHJvdmlkZXIoW2Nvbm5lY3Rpb24xLCBjb25uZWN0aW9uMl0pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24xLmlzUmVsZWFzZWRPbmNlT25TZXNzaW9uQ2xvc2UoKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmNsb3NlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGV4cGVjdChjb25uZWN0aW9uMi5pc1JlbGVhc2VkT25jZU9uU2Vzc2lvbkNsb3NlKCkpLnRvQmVUcnV0aHkoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmNsYXNzIFJlY29yZGluZ0Nvbm5lY3Rpb25Qcm92aWRlciBleHRlbmRzIFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbnMpIHtcbiAgICBzdXBlcihQcm9taXNlLnJlc29sdmUoKSk7XG4gICAgdGhpcy5jb25uZWN0aW9uUHJvbWlzZXMgPSBjb25uZWN0aW9ucy5tYXAoY29ubiA9PiBQcm9taXNlLnJlc29sdmUoY29ubikpO1xuICAgIHRoaXMuYWNxdWlyZUNvbm5lY3Rpb25JbnZva2VkID0gMDtcbiAgfVxuXG4gIGFjcXVpcmVDb25uZWN0aW9uKG1vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uUHJvbWlzZXNbdGhpcy5hY3F1aXJlQ29ubmVjdGlvbkludm9rZWQrK107XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV3U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb24pIHtcbiAgcmV0dXJuIG5ldyBTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIoUHJvbWlzZS5yZXNvbHZlKGNvbm5lY3Rpb24pKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1JFQUQsIFdSSVRFfSBmcm9tICcuLi8uLi9zcmMvdjEvZHJpdmVyJztcbmltcG9ydCBJbnRlZ2VyLCB7aW50fSBmcm9tICcuLi8uLi9zcmMvdjEvaW50ZWdlcic7XG5pbXBvcnQge1NFUlZJQ0VfVU5BVkFJTEFCTEV9IGZyb20gJy4uLy4uL3NyYy92MS9lcnJvcic7XG5pbXBvcnQgUm91dGluZ1RhYmxlIGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9yb3V0aW5nLXRhYmxlJztcbmltcG9ydCBSb3VuZFJvYmluQXJyYXkgZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL3JvdW5kLXJvYmluLWFycmF5JztcbmltcG9ydCB7RGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyLCBMb2FkQmFsYW5jZXJ9IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9jb25uZWN0aW9uLXByb3ZpZGVycyc7XG5pbXBvcnQgUG9vbCBmcm9tICcuLi8uLi9zcmMvdjEvaW50ZXJuYWwvcG9vbCc7XG5cbmNvbnN0IE5PX09QX0RSSVZFUl9DQUxMQkFDSyA9ICgpID0+IHtcbn07XG5cbmRlc2NyaWJlKCdEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXInLCAoKSA9PiB7XG5cbiAgaXQoJ2FjcXVpcmVzIGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3RGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyKCdsb2NhbGhvc3Q6MTIzJywgcG9vbCk7XG5cbiAgICBjb25uZWN0aW9uUHJvdmlkZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnbG9jYWxob3N0OjEyMycpO1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24ucmVsZWFzZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChwb29sLmhhcygnbG9jYWxob3N0OjEyMycpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuXG5kZXNjcmliZSgnTG9hZEJhbGFuY2VyJywgKCkgPT4ge1xuXG4gIGl0KCdjYW4gZm9yZ2V0IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMicsICdzZXJ2ZXItNCddXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5mb3JnZXQoJ3NlcnZlci0yJyk7XG5cbiAgICBleHBlY3RSb3V0aW5nVGFibGUobG9hZEJhbGFuY2VyLFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMyddLFxuICAgICAgWydzZXJ2ZXItNCddXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2NhbiBub3QgZm9yZ2V0IHVua25vd24gYWRkcmVzcycsICgpID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J11cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmZvcmdldCgnc2VydmVyLTQyJyk7XG5cbiAgICBleHBlY3RSb3V0aW5nVGFibGUobG9hZEJhbGFuY2VyLFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3B1cmdlcyBjb25uZWN0aW9ucyB3aGVuIGFkZHJlc3MgaXMgZm9yZ290dGVuJywgKCkgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG5cbiAgICBwb29sLmFjcXVpcmUoJ3NlcnZlci0xJyk7XG4gICAgcG9vbC5hY3F1aXJlKCdzZXJ2ZXItMycpO1xuICAgIHBvb2wuYWNxdWlyZSgnc2VydmVyLTUnKTtcbiAgICBleHBlY3RQb29sVG9Db250YWluKHBvb2wsIFsnc2VydmVyLTEnLCAnc2VydmVyLTMnLCAnc2VydmVyLTUnXSk7XG5cbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0yJywgJ3NlcnZlci00J10sXG4gICAgICBwb29sXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5mb3JnZXQoJ3NlcnZlci0xJyk7XG4gICAgbG9hZEJhbGFuY2VyLmZvcmdldCgnc2VydmVyLTUnKTtcblxuICAgIGV4cGVjdFBvb2xUb0NvbnRhaW4ocG9vbCwgWydzZXJ2ZXItMyddKTtcbiAgICBleHBlY3RQb29sVG9Ob3RDb250YWluKHBvb2wsIFsnc2VydmVyLTEnLCAnc2VydmVyLTUnXSk7XG4gIH0pO1xuXG4gIGl0KCdjYW4gZm9yZ2V0IHdyaXRlciBhZGRyZXNzJywgKCkgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTInLCAnc2VydmVyLTQnXVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuZm9yZ2V0V3JpdGVyKCdzZXJ2ZXItMicpO1xuXG4gICAgZXhwZWN0Um91dGluZ1RhYmxlKGxvYWRCYWxhbmNlcixcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTQnXVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdjYW4gbm90IGZvcmdldCB1bmtub3duIHdyaXRlciBhZGRyZXNzJywgKCkgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuZm9yZ2V0V3JpdGVyKCdzZXJ2ZXItNDInKTtcblxuICAgIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J11cbiAgICApO1xuICB9KTtcblxuICBpdCgnaW5pdGlhbGl6ZXMgcm91dGluZyB0YWJsZSB3aXRoIHRoZSBnaXZlbiByb3V0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3IExvYWRCYWxhbmNlcignc2VydmVyLUFCQycsIG5ld1Bvb2woKSwgTk9fT1BfRFJJVkVSX0NBTExCQUNLKTtcblxuICAgIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsXG4gICAgICBbJ3NlcnZlci1BQkMnXSxcbiAgICAgIFtdLFxuICAgICAgW11cbiAgICApO1xuICB9KTtcblxuICBpdCgnYWNxdWlyZXMgcmVhZCBjb25uZWN0aW9uIHdpdGggdXAtdG8tZGF0ZSByb3V0aW5nIHRhYmxlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcG9vbCA9IG5ld1Bvb2woKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBwb29sXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLTMnKTtcbiAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLTMnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLTQnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItNCcpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdhY3F1aXJlcyB3cml0ZSBjb25uZWN0aW9uIHdpdGggdXAtdG8tZGF0ZSByb3V0aW5nIHRhYmxlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcG9vbCA9IG5ld1Bvb2woKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBwb29sXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci01Jyk7XG4gICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci01JykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFdSSVRFKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItNicpO1xuICAgICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci02JykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyBmb3IgaWxsZWdhbCBhY2Nlc3MgbW9kZScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oJ1dST05HJykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvRXF1YWwoJ0lsbGVnYWwgbW9kZSBXUk9ORycpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgncmVmcmVzaGVzIHN0YWxlIHJvdXRpbmcgdGFibGUgdG8gZ2V0IHJlYWQgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgdXBkYXRlZFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbCxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7J3NlcnZlci0xJzogdXBkYXRlZFJvdXRpbmdUYWJsZX1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItQycpO1xuICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItQycpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRCcpO1xuICAgICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1EJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JlZnJlc2hlcyBzdGFsZSByb3V0aW5nIHRhYmxlIHRvIGdldCB3cml0ZSBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcG9vbCA9IG5ld1Bvb2woKTtcbiAgICBjb25zdCB1cGRhdGVkUm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlKFxuICAgICAgWydzZXJ2ZXItQScsICdzZXJ2ZXItQiddLFxuICAgICAgWydzZXJ2ZXItQycsICdzZXJ2ZXItRCddLFxuICAgICAgWydzZXJ2ZXItRScsICdzZXJ2ZXItRiddXG4gICAgKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBwb29sLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHsnc2VydmVyLTEnOiB1cGRhdGVkUm91dGluZ1RhYmxlfVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRScpO1xuICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRScpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUYnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRicpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWZyZXNoZXMgc3RhbGUgcm91dGluZyB0YWJsZSB0byBnZXQgcmVhZCBjb25uZWN0aW9uIHdoZW4gb25lIHJvdXRlciBmYWlscycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgdXBkYXRlZFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbCxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IG51bGwsIC8vIGRpZCBub3QgcmV0dXJuIGFueSByb3V0aW5nIHRhYmxlXG4gICAgICAgICdzZXJ2ZXItMic6IHVwZGF0ZWRSb3V0aW5nVGFibGUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUMnKTtcbiAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLUMnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUQnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRCcpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWZyZXNoZXMgc3RhbGUgcm91dGluZyB0YWJsZSB0byBnZXQgd3JpdGUgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgdXBkYXRlZFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbCxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IG51bGwsIC8vIGRpZCBub3QgcmV0dXJuIGFueSByb3V0aW5nIHRhYmxlXG4gICAgICAgICdzZXJ2ZXItMic6IHVwZGF0ZWRSb3V0aW5nVGFibGUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci1FJyk7XG4gICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1FJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFdSSVRFKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRicpO1xuICAgICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1GJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JlZnJlc2hlcyBzdGFsZSByb3V0aW5nIHRhYmxlIHRvIGdldCByZWFkIGNvbm5lY3Rpb24gd2hlbiBvbmUgcm91dGVyIHJldHVybnMgaWxsZWdhbCByZXNwb25zZScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFtdIC8vIG5vIHdyaXRlcnMgLSB0YWJsZSBpcyBpbGxlZ2FsIGFuZCBzaG91bGQgYmUgc2tpcHBlZFxuICAgICk7XG4gICAgY29uc3QgbmV3TGVnYWxSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbJ3NlcnZlci1FJywgJ3NlcnZlci1GJ11cbiAgICApO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIHBvb2wsXG4gICAgICBpbnQoMCksIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICAge1xuICAgICAgICAnc2VydmVyLTEnOiBuZXdJbGxlZ2FsUm91dGluZ1RhYmxlLFxuICAgICAgICAnc2VydmVyLTInOiBuZXdMZWdhbFJvdXRpbmdUYWJsZSxcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItQycpO1xuICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItQycpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRCcpO1xuICAgICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1EJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JlZnJlc2hlcyBzdGFsZSByb3V0aW5nIHRhYmxlIHRvIGdldCB3cml0ZSBjb25uZWN0aW9uIHdoZW4gb25lIHJvdXRlciByZXR1cm5zIGlsbGVnYWwgcmVzcG9uc2UnLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IG5ld0lsbGVnYWxSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbXSAvLyBubyB3cml0ZXJzIC0gdGFibGUgaXMgaWxsZWdhbCBhbmQgc2hvdWxkIGJlIHNraXBwZWRcbiAgICApO1xuICAgIGNvbnN0IG5ld0xlZ2FsUm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlKFxuICAgICAgWydzZXJ2ZXItQScsICdzZXJ2ZXItQiddLFxuICAgICAgWydzZXJ2ZXItQycsICdzZXJ2ZXItRCddLFxuICAgICAgWydzZXJ2ZXItRScsICdzZXJ2ZXItRiddXG4gICAgKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBwb29sLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHtcbiAgICAgICAgJ3NlcnZlci0xJzogbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSxcbiAgICAgICAgJ3NlcnZlci0yJzogbmV3TGVnYWxSb3V0aW5nVGFibGUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci1FJyk7XG4gICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1FJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFdSSVRFKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRicpO1xuICAgICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1GJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyB3aGVuIGFsbCByb3V0ZXJzIHJldHVybiBub3RoaW5nIHdoaWxlIGdldHRpbmcgcmVhZCBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgbmV3UG9vbCgpLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHtcbiAgICAgICAgJ3NlcnZlci0xJzogbnVsbCwgLy8gZGlkIG5vdCByZXR1cm4gYW55IHJvdXRpbmcgdGFibGVcbiAgICAgICAgJ3NlcnZlci0yJzogbnVsbCAgLy8gZGlkIG5vdCByZXR1cm4gYW55IHJvdXRpbmcgdGFibGVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgndGhyb3dzIHdoZW4gYWxsIHJvdXRlcnMgcmV0dXJuIG5vdGhpbmcgd2hpbGUgZ2V0dGluZyB3cml0ZSBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgbmV3UG9vbCgpLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHtcbiAgICAgICAgJ3NlcnZlci0xJzogbnVsbCwgLy8gZGlkIG5vdCByZXR1cm4gYW55IHJvdXRpbmcgdGFibGVcbiAgICAgICAgJ3NlcnZlci0yJzogbnVsbCAgLy8gZGlkIG5vdCByZXR1cm4gYW55IHJvdXRpbmcgdGFibGVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFdSSVRFKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyB3aGVuIGFsbCByb3V0ZXJzIHJldHVybiBpbGxlZ2FsIHJvdXRpbmcgdGFibGVzIHdoaWxlIGdldHRpbmcgcmVhZCBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFtdIC8vIG5vIHdyaXRlcnMgLSB0YWJsZSBpcyBpbGxlZ2FsIGFuZCBzaG91bGQgYmUgc2tpcHBlZFxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgbmV3UG9vbCgpLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHtcbiAgICAgICAgJ3NlcnZlci0xJzogbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSxcbiAgICAgICAgJ3NlcnZlci0yJzogbmV3SWxsZWdhbFJvdXRpbmdUYWJsZVxuICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3Mgd2hlbiBhbGwgcm91dGVycyByZXR1cm4gaWxsZWdhbCByb3V0aW5nIHRhYmxlcyB3aGlsZSBnZXR0aW5nIHdyaXRlIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBuZXdJbGxlZ2FsUm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlKFxuICAgICAgWydzZXJ2ZXItQScsICdzZXJ2ZXItQiddLFxuICAgICAgWydzZXJ2ZXItQycsICdzZXJ2ZXItRCddLFxuICAgICAgW10gLy8gbm8gd3JpdGVycyAtIHRhYmxlIGlzIGlsbGVnYWwgYW5kIHNob3VsZCBiZSBza2lwcGVkXG4gICAgKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBuZXdQb29sKCksXG4gICAgICBpbnQoMCksIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICAge1xuICAgICAgICAnc2VydmVyLTEnOiBuZXdJbGxlZ2FsUm91dGluZ1RhYmxlLFxuICAgICAgICAnc2VydmVyLTInOiBuZXdJbGxlZ2FsUm91dGluZ1RhYmxlXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3Mgd2hlbiBzdGFsZSByb3V0aW5nIHRhYmxlIHdpdGhvdXQgcm91dGVycyB3aGlsZSBnZXR0aW5nIHJlYWQgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFtdLCAvLyBubyByb3V0ZXJzXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBuZXdQb29sKCksXG4gICAgICBpbnQoMCkgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyB3aGVuIHN0YWxlIHJvdXRpbmcgdGFibGUgd2l0aG91dCByb3V0ZXJzIHdoaWxlIGdldHRpbmcgd3JpdGUgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFtdLCAvLyBubyByb3V0ZXJzXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBuZXdQb29sKCksXG4gICAgICBpbnQoMCkgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd1cGRhdGVzIHJvdXRpbmcgdGFibGUgYWZ0ZXIgcmVmcmVzaCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgdXBkYXRlZFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbCxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IHVwZGF0ZWRSb3V0aW5nVGFibGVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0Um91dGluZ1RhYmxlKGxvYWRCYWxhbmNlcixcbiAgICAgICAgWydzZXJ2ZXItQScsICdzZXJ2ZXItQiddLFxuICAgICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICAgKTtcbiAgICAgIGV4cGVjdFBvb2xUb05vdENvbnRhaW4ocG9vbCwgWydzZXJ2ZXItMScsICdzZXJ2ZXItMicsICdzZXJ2ZXItMycsICdzZXJ2ZXItNCcsICdzZXJ2ZXItNScsICdzZXJ2ZXItNiddKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcmdldHMgYWxsIHJvdXRlcnMgd2hlbiB0aGV5IGZhaWwgd2hpbGUgYWNxdWlyaW5nIHJlYWQgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInLCAnc2VydmVyLTMnXSxcbiAgICAgIFsnc2VydmVyLTQnLCAnc2VydmVyLTUnXSxcbiAgICAgIFsnc2VydmVyLTYnLCAnc2VydmVyLTcnXSxcbiAgICAgIG5ld1Bvb2woKSxcbiAgICAgIGludCgwKSAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgZXhwZWN0Um91dGluZ1RhYmxlKGxvYWRCYWxhbmNlcixcbiAgICAgICAgW10sXG4gICAgICAgIFsnc2VydmVyLTQnLCAnc2VydmVyLTUnXSxcbiAgICAgICAgWydzZXJ2ZXItNicsICdzZXJ2ZXItNyddXG4gICAgICApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnZm9yZ2V0cyBhbGwgcm91dGVycyB3aGVuIHRoZXkgZmFpbCB3aGlsZSBhY3F1aXJpbmcgd3JpdGUgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInLCAnc2VydmVyLTMnXSxcbiAgICAgIFsnc2VydmVyLTQnLCAnc2VydmVyLTUnXSxcbiAgICAgIFsnc2VydmVyLTYnLCAnc2VydmVyLTcnXSxcbiAgICAgIG5ld1Bvb2woKSxcbiAgICAgIGludCgwKSAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFdSSVRFKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsXG4gICAgICAgIFtdLFxuICAgICAgICBbJ3NlcnZlci00JywgJ3NlcnZlci01J10sXG4gICAgICAgIFsnc2VydmVyLTYnLCAnc2VydmVyLTcnXVxuICAgICAgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuXG5mdW5jdGlvbiBuZXdEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgcG9vbCkge1xuICByZXR1cm4gbmV3IERpcmVjdENvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBwb29sLCBOT19PUF9EUklWRVJfQ0FMTEJBQ0spO1xufVxuXG5mdW5jdGlvbiBuZXdMb2FkQmFsYW5jZXIocm91dGVycywgcmVhZGVycywgd3JpdGVycywgcG9vbCA9IG51bGwsIGV4cGlyYXRpb25UaW1lID0gSW50ZWdlci5NQVhfVkFMVUUsIHJvdXRlclRvUm91dGluZ1RhYmxlID0ge30pIHtcbiAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3IExvYWRCYWxhbmNlcihudWxsLCBwb29sIHx8IG5ld1Bvb2woKSwgTk9fT1BfRFJJVkVSX0NBTExCQUNLKTtcbiAgbG9hZEJhbGFuY2VyLl9yb3V0aW5nVGFibGUgPSBuZXcgUm91dGluZ1RhYmxlKFxuICAgIG5ldyBSb3VuZFJvYmluQXJyYXkocm91dGVycyksXG4gICAgbmV3IFJvdW5kUm9iaW5BcnJheShyZWFkZXJzKSxcbiAgICBuZXcgUm91bmRSb2JpbkFycmF5KHdyaXRlcnMpLFxuICAgIGV4cGlyYXRpb25UaW1lXG4gICk7XG4gIGxvYWRCYWxhbmNlci5fcmVkaXNjb3ZlcnkgPSBuZXcgRmFrZVJlZGlzY292ZXJ5KHJvdXRlclRvUm91dGluZ1RhYmxlKTtcbiAgcmV0dXJuIGxvYWRCYWxhbmNlcjtcbn1cblxuZnVuY3Rpb24gbmV3Um91dGluZ1RhYmxlKHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMsIGV4cGlyYXRpb25UaW1lID0gSW50ZWdlci5NQVhfVkFMVUUpIHtcbiAgcmV0dXJuIG5ldyBSb3V0aW5nVGFibGUoXG4gICAgbmV3IFJvdW5kUm9iaW5BcnJheShyb3V0ZXJzKSxcbiAgICBuZXcgUm91bmRSb2JpbkFycmF5KHJlYWRlcnMpLFxuICAgIG5ldyBSb3VuZFJvYmluQXJyYXkod3JpdGVycyksXG4gICAgZXhwaXJhdGlvblRpbWVcbiAgKTtcbn1cblxuZnVuY3Rpb24gbmV3UG9vbCgpIHtcbiAgcmV0dXJuIG5ldyBQb29sKEZha2VDb25uZWN0aW9uLmNyZWF0ZSk7XG59XG5cbmZ1bmN0aW9uIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsIHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMpIHtcbiAgZXhwZWN0KGxvYWRCYWxhbmNlci5fcm91dGluZ1RhYmxlLnJvdXRlcnMudG9BcnJheSgpKS50b0VxdWFsKHJvdXRlcnMpO1xuICBleHBlY3QobG9hZEJhbGFuY2VyLl9yb3V0aW5nVGFibGUucmVhZGVycy50b0FycmF5KCkpLnRvRXF1YWwocmVhZGVycyk7XG4gIGV4cGVjdChsb2FkQmFsYW5jZXIuX3JvdXRpbmdUYWJsZS53cml0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbCh3cml0ZXJzKTtcbn1cblxuZnVuY3Rpb24gZXhwZWN0UG9vbFRvQ29udGFpbihwb29sLCBhZGRyZXNzZXMpIHtcbiAgYWRkcmVzc2VzLmZvckVhY2goYWRkcmVzcyA9PiB7XG4gICAgZXhwZWN0KHBvb2wuaGFzKGFkZHJlc3MpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBleHBlY3RQb29sVG9Ob3RDb250YWluKHBvb2wsIGFkZHJlc3Nlcykge1xuICBhZGRyZXNzZXMuZm9yRWFjaChhZGRyZXNzID0+IHtcbiAgICBleHBlY3QocG9vbC5oYXMoYWRkcmVzcykpLnRvQmVGYWxzeSgpO1xuICB9KTtcbn1cblxuY2xhc3MgRmFrZUNvbm5lY3Rpb24ge1xuXG4gIGNvbnN0cnVjdG9yKGFkZHJlc3MsIHJlbGVhc2UpIHtcbiAgICB0aGlzLmFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHRoaXMucmVsZWFzZSA9IHJlbGVhc2U7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGFkZHJlc3MsIHJlbGVhc2UpIHtcbiAgICByZXR1cm4gbmV3IEZha2VDb25uZWN0aW9uKGFkZHJlc3MsIHJlbGVhc2UpO1xuICB9XG59XG5cbmNsYXNzIEZha2VSZWRpc2NvdmVyeSB7XG5cbiAgY29uc3RydWN0b3Iocm91dGVyVG9Sb3V0aW5nVGFibGUpIHtcbiAgICB0aGlzLl9yb3V0ZXJUb1JvdXRpbmdUYWJsZSA9IHJvdXRlclRvUm91dGluZ1RhYmxlO1xuICB9XG5cbiAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIoaWdub3JlZCwgcm91dGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlclRvUm91dGluZ1RhYmxlW3JvdXRlcl07XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBEdW1teUNoYW5uZWwgZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2NoLWR1bW15JztcbmltcG9ydCB7Y29ubmVjdCwgQ29ubmVjdGlvbn0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2Nvbm5lY3Rvcic7XG5pbXBvcnQge1BhY2tlcn0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL3BhY2tzdHJlYW0nO1xuaW1wb3J0IHtDaHVua2VyfSBmcm9tICcuLi8uLi9zcmMvdjEvaW50ZXJuYWwvY2h1bmtpbmcnO1xuaW1wb3J0IHthbGxvY30gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2J1Zic7XG5pbXBvcnQge05lbzRqRXJyb3J9IGZyb20gJy4uLy4uL3NyYy92MS9lcnJvcic7XG5cbmRlc2NyaWJlKCdjb25uZWN0b3InLCAoKSA9PiB7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIGJhc2ljIG1lc3NhZ2VzJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3RcIik7XG5cbiAgICAvLyBXaGVuXG4gICAgY29ubi5pbml0aWFsaXplKFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0sIHtcbiAgICAgIG9uQ29tcGxldGVkOiBtc2cgPT4ge1xuICAgICAgICBleHBlY3QobXNnKS5ub3QudG9CZU51bGwoKTtcbiAgICAgICAgY29ubi5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogY29uc29sZS5sb2dcbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJpZXZlIHN0cmVhbScsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3QgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIpO1xuXG4gICAgLy8gV2hlblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXTtcbiAgICBjb25uLmluaXRpYWxpemUoXCJteWRyaXZlci8wLjAuMFwiLCB7c2NoZW1lOiBcImJhc2ljXCIsIHByaW5jaXBhbDogXCJuZW80alwiLCBjcmVkZW50aWFsczogXCJuZW80alwifSk7XG4gICAgY29ubi5ydW4oXCJSRVRVUk4gMS4wXCIsIHt9KTtcbiAgICBjb25uLnB1bGxBbGwoe1xuICAgICAgb25OZXh0OiByZWNvcmQgPT4ge1xuICAgICAgICByZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbXBsZXRlZDogKCkgPT4ge1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXVswXSkudG9CZSgxKTtcbiAgICAgICAgY29ubi5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXNlIER1bW15Q2hhbm5lbCB0byByZWFkIHdoYXQgZ2V0cyB3cml0dGVuJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBvYnNlcnZlciA9IER1bW15Q2hhbm5lbC5vYnNlcnZlcjtcbiAgICBjb25zdCBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3RcIiwge2NoYW5uZWw6IER1bW15Q2hhbm5lbC5jaGFubmVsfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgY29ubi5pbml0aWFsaXplKFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0pO1xuICAgIGNvbm4ucnVuKFwiUkVUVVJOIDFcIiwge30pO1xuICAgIGNvbm4uc3luYygpO1xuICAgIGV4cGVjdChvYnNlcnZlci5pbnN0YW5jZS50b0hleCgpKS50b0JlKCc2MCA2MCBiMCAxNyAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA0MSBiMiAwMSA4ZSA2ZCA3OSA2NCA3MiA2OSA3NiA2NSA3MiAyZiAzMCAyZSAzMCAyZSAzMCBhMyA4NiA3MyA2MyA2OCA2NSA2ZCA2NSA4NSA2MiA2MSA3MyA2OSA2MyA4OSA3MCA3MiA2OSA2ZSA2MyA2OSA3MCA2MSA2YyA4NSA2ZSA2NSA2ZiAzNCA2YSA4YiA2MyA3MiA2NSA2NCA2NSA2ZSA3NCA2OSA2MSA2YyA3MyA4NSA2ZSA2NSA2ZiAzNCA2YSAwMCAwMCAwMCAwYyBiMiAxMCA4OCA1MiA0NSA1NCA1NSA1MiA0ZSAyMCAzMSBhMCAwMCAwMCAnKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvdmlkZSBlcnJvciBtZXNzYWdlIHdoZW4gY29ubmVjdGluZyB0byBodHRwLXBvcnQnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdDo3NDc0XCIsIHtlbmNyeXB0ZWQ6IGZhbHNlfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgY29ubi5pbml0aWFsaXplKFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0sIHtcbiAgICAgIG9uQ29tcGxldGVkOiBtc2cgPT4ge1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3I6IGVyciA9PiB7XG4gICAgICAgIC8vb25seSBub2RlIGdldHMgdGhlIHByZXR0eSBlcnJvciBtZXNzYWdlXG4gICAgICAgIGlmIChyZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2gtbm9kZS5qcycpLmF2YWlsYWJsZSkge1xuICAgICAgICAgIGV4cGVjdChlcnIubWVzc2FnZSkudG9CZShcIlNlcnZlciByZXNwb25kZWQgSFRUUC4gTWFrZSBzdXJlIHlvdSBhcmUgbm90IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBodHRwIGVuZHBvaW50IFwiICtcbiAgICAgICAgICAgIFwiKEhUVFAgZGVmYXVsdHMgdG8gcG9ydCA3NDc0IHdoZXJlYXMgQk9MVCBkZWZhdWx0cyB0byBwb3J0IDc2ODcpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25uLnN5bmMoKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbnZlcnQgZmFpbHVyZSBtZXNzYWdlcyB0byBlcnJvcnMnLCBkb25lID0+IHtcbiAgICBjb25zdCBjaGFubmVsID0gbmV3IER1bW15Q2hhbm5lbC5jaGFubmVsO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgQ29ubmVjdGlvbihjaGFubmVsLCAnYm9sdDovL2xvY2FsaG9zdCcpO1xuXG4gICAgY29uc3QgZXJyb3JDb2RlID0gJ05lby5DbGllbnRFcnJvci5TY2hlbWEuQ29uc3RyYWludFZhbGlkYXRpb25GYWlsZWQnO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9ICdOb2RlIDAgYWxyZWFkeSBleGlzdHMgd2l0aCBsYWJlbCBVc2VyIGFuZCBwcm9wZXJ0eSBcImVtYWlsXCI9W2pvaG5AZG9lLmNvbV0nO1xuXG4gICAgY29ubmVjdGlvbi5fcXVldWVPYnNlcnZlcih7XG4gICAgICBvbkVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdE5lbzRqRXJyb3IoZXJyb3IsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY2hhbm5lbC5vbm1lc3NhZ2UocGFja2VkSGFuZHNoYWtlTWVzc2FnZSgpKTtcbiAgICBjaGFubmVsLm9ubWVzc2FnZShwYWNrZWRGYWlsdXJlTWVzc2FnZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpO1xuICB9KTtcblxuICBmdW5jdGlvbiBwYWNrZWRIYW5kc2hha2VNZXNzYWdlKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGFsbG9jKDQpO1xuICAgIHJlc3VsdC5wdXRJbnQzMigwLCAxKTtcbiAgICByZXN1bHQucmVzZXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gcGFja2VkRmFpbHVyZU1lc3NhZ2UoY29kZSwgbWVzc2FnZSkge1xuICAgIGNvbnN0IGNoYW5uZWwgPSBuZXcgRHVtbXlDaGFubmVsLmNoYW5uZWw7XG4gICAgY29uc3QgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoYW5uZWwpO1xuICAgIGNvbnN0IHBhY2tlciA9IG5ldyBQYWNrZXIoY2h1bmtlcik7XG4gICAgcGFja2VyLnBhY2tTdHJ1Y3QoMHg3RiwgW3BhY2tlci5wYWNrYWJsZSh7Y29kZTogY29kZSwgbWVzc2FnZTogbWVzc2FnZX0pXSk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG4gICAgY29uc3QgZGF0YSA9IGNoYW5uZWwudG9CdWZmZXIoKTtcbiAgICBjb25zdCByZXN1bHQgPSBhbGxvYyhkYXRhLmxlbmd0aCk7XG4gICAgcmVzdWx0LnB1dEJ5dGVzKDAsIGRhdGEpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBleHBlY3ROZW80akVycm9yKGVycm9yLCBleHBlY3RlZENvZGUsIGV4cGVjdGVkTWVzc2FnZSkge1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KS50b1Rocm93KG5ldyBOZW80akVycm9yKGV4cGVjdGVkTWVzc2FnZSwgZXhwZWN0ZWRDb2RlKSk7XG4gIH1cblxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIGxpa2UgYSBtb2NrIG9mIHtAbGluayBDb25uZWN0aW9ufSB0aGF0IHRyYWNrcyBpbnZvY2F0aW9ucyBjb3VudC5cbiAqIEl0IHRyaWVzIHRvIG1haW50YWluIHNhbWUgXCJpbnRlcmZhY2VcIiBhcyB7QGxpbmsgQ29ubmVjdGlvbn0uXG4gKiBJdCBjb3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgcHJvcGVyIG1vY2sgYnkgYSBsaWJyYXJ5IGxpa2UgdGVzdGRvdWJsZS5cbiAqIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgc3VjaCBsaWJyYXJpZXMgcmVxdWlyZSB7QGxpbmsgUHJveHl9IHN1cHBvcnQgYnV0IGJyb3dzZXIgdGVzdHMgZXhlY3V0ZSBpblxuICogUGhhbnRvbUpTIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgcHJveGllcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmFrZUNvbm5lY3Rpb24ge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVzZXRJbnZva2VkID0gMDtcbiAgICB0aGlzLnJlc2V0QXN5bmNJbnZva2VkID0gMDtcbiAgICB0aGlzLnN5bmNJbnZva2VkID0gMDtcbiAgICB0aGlzLnJlbGVhc2VJbnZva2VkID0gMDtcbiAgfVxuXG4gIHJ1bigpIHtcbiAgfVxuXG4gIGRpc2NhcmRBbGwoKSB7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnJlc2V0SW52b2tlZCsrO1xuICB9XG5cbiAgcmVzZXRBc3luYygpIHtcbiAgICB0aGlzLnJlc2V0QXN5bmNJbnZva2VkKys7XG4gIH1cblxuICBzeW5jKCkge1xuICAgIHRoaXMuc3luY0ludm9rZWQrKztcbiAgfVxuXG4gIF9yZWxlYXNlKCkge1xuICAgIHRoaXMucmVsZWFzZUludm9rZWQrKztcbiAgfVxuXG4gIGlzUmVsZWFzZWRPbmNlT25TZXNzaW9uQ2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZWxlYXNlZE9uU2Vzc2lvbkNsb3NlVGltZXMoMSk7XG4gIH1cblxuICBpc1JlbGVhc2VkT25TZXNzaW9uQ2xvc2VUaW1lcyh0aW1lcykge1xuICAgIHJldHVybiB0aGlzLnJlc2V0QXN5bmNJbnZva2VkID09PSB0aW1lcyAmJlxuICAgICAgdGhpcy5yZXNldEludm9rZWQgPT09IDAgJiZcbiAgICAgIHRoaXMuc3luY0ludm9rZWQgPT09IHRpbWVzICYmXG4gICAgICB0aGlzLnJlbGVhc2VJbnZva2VkID09PSB0aW1lcztcbiAgfVxuXG4gIGlzTmV2ZXJSZWxlYXNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlbGVhc2VkVGltZXMoMCk7XG4gIH1cblxuICBpc1JlbGVhc2VkT25jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlbGVhc2VkVGltZXMoMSk7XG4gIH1cblxuICBpc1JlbGVhc2VkVGltZXModGltZXMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNldEFzeW5jSW52b2tlZCA9PT0gMCAmJlxuICAgICAgdGhpcy5yZXNldEludm9rZWQgPT09IHRpbWVzICYmXG4gICAgICB0aGlzLnN5bmNJbnZva2VkID09PSB0aW1lcyAmJlxuICAgICAgdGhpcy5yZWxlYXNlSW52b2tlZCA9PT0gdGltZXM7XG4gIH1cbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IEdldFNlcnZlcnNVdGlsIGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZXJuYWwvZ2V0LXNlcnZlcnMtdXRpbFwiO1xuaW1wb3J0IFJlY29yZCBmcm9tIFwiLi4vLi4vc3JjL3YxL3JlY29yZFwiO1xuaW1wb3J0IEludGVnZXIsIHtpbnR9IGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZWdlclwiO1xuaW1wb3J0IHtuZXdFcnJvciwgUFJPVE9DT0xfRVJST1IsIFNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNFU1NJT05fRVhQSVJFRH0gZnJvbSBcIi4uLy4uL3NyYy92MS9lcnJvclwiO1xuaW1wb3J0IGxvbGV4IGZyb20gXCJsb2xleFwiO1xuXG5jb25zdCBST1VURVJfQUREUkVTUyA9ICdib2x0K3JvdXRpbmc6Ly90ZXN0LnJvdXRlci5jb20nO1xuXG5kZXNjcmliZSgnZ2V0LXNlcnZlcnMtdXRpbCcsICgpID0+IHtcblxuICBsZXQgY2xvY2s7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBjbG9jayA9IGxvbGV4Lmluc3RhbGwoKTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGNsb2NrLnVuaW5zdGFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiByZXRyaWV2ZWQgcmVjb3JkcyB3aGVuIHF1ZXJ5IHN1Y2NlZWRzJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IEZha2VTZXNzaW9uLnN1Y2Nlc3NmdWwoe3JlY29yZHM6IFsnZm9vJywgJ2JhcicsICdiYXonXX0pO1xuXG4gICAgY2FsbEdldFNlcnZlcnMoc2Vzc2lvbikudGhlbihyZWNvcmRzID0+IHtcbiAgICAgIGV4cGVjdChyZWNvcmRzKS50b0VxdWFsKFsnZm9vJywgJ2JhcicsICdiYXonXSk7XG4gICAgICBkb25lKCk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNsb3NlIHNlc3Npb24gd2hlbiBxdWVyeSBzdWNjZWVkcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHNlc3Npb24gPSBGYWtlU2Vzc2lvbi5zdWNjZXNzZnVsKHtyZWNvcmRzOiBbJ2ZvbycsICdiYXInLCAnYmF6J119KTtcblxuICAgIGNhbGxHZXRTZXJ2ZXJzKHNlc3Npb24pLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0KHNlc3Npb24uaXNDbG9zZWQoKSkudG9CZVRydXRoeSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY2xvc2Ugc2Vzc2lvbiB3aGVuIHF1ZXJ5IGZhaWxzJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IEZha2VTZXNzaW9uLmZhaWxlZChuZXdFcnJvcignT2ggbm8hJywgU0VTU0lPTl9FWFBJUkVEKSk7XG5cbiAgICBjYWxsR2V0U2VydmVycyhzZXNzaW9uKS50aGVuKCgpID0+IHtcbiAgICAgIGV4cGVjdChzZXNzaW9uLmlzQ2xvc2VkKCkpLnRvQmVGYWxzeSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCBvbiBjb25uZWN0aW9uIGVycm9yJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IEZha2VTZXNzaW9uLmZhaWxlZChuZXdFcnJvcignT2ggbm8hJywgU0VTU0lPTl9FWFBJUkVEKSk7XG5cbiAgICBjYWxsR2V0U2VydmVycyhzZXNzaW9uKS50aGVuKHJlY29yZHMgPT4ge1xuICAgICAgZXhwZWN0KHJlY29yZHMpLnRvQmVOdWxsKCk7XG4gICAgICBkb25lKCk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBwcm9jZWR1cmUgbm90IGZvdW5kJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IEZha2VTZXNzaW9uLmZhaWxlZChuZXdFcnJvcignT2ggbm8hJywgJ05lby5DbGllbnRFcnJvci5Qcm9jZWR1cmUuUHJvY2VkdXJlTm90Rm91bmQnKSk7XG5cbiAgICBjYWxsR2V0U2VydmVycyhzZXNzaW9uKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9CZShTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0JlKCdTZXJ2ZXIgJyArIFJPVVRFUl9BRERSRVNTICsgJyBjb3VsZCBub3QgcGVyZm9ybSByb3V0aW5nLiAnICtcbiAgICAgICAgJ01ha2Ugc3VyZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gYSBjYXVzYWwgY2x1c3RlcicpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhcnNlIHZhbGlkIHR0bCcsICgpID0+IHtcbiAgICB0ZXN0VmFsaWRUdGxQYXJzaW5nKDEwMCwgNSk7XG4gICAgdGVzdFZhbGlkVHRsUGFyc2luZyhEYXRlLm5vdygpLCAzNjAwKTsgLy8gMSBob3VyXG4gICAgdGVzdFZhbGlkVHRsUGFyc2luZyhEYXRlLm5vdygpLCA4NjQwMCk7IC8vIDI0IGhvdXJzXG4gICAgdGVzdFZhbGlkVHRsUGFyc2luZyhEYXRlLm5vdygpLCAzNjI4ODAwKTsgLy8gNDIgZGF5c1xuICAgIHRlc3RWYWxpZFR0bFBhcnNpbmcoMCwgMSk7XG4gICAgdGVzdFZhbGlkVHRsUGFyc2luZyg1MCwgMCk7XG4gICAgdGVzdFZhbGlkVHRsUGFyc2luZyhEYXRlLm5vdygpLCAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3Qgb3ZlcmZsb3cgcGFyc2luZyBodWdlIHR0bCcsICgpID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXdSZWNvcmQoe3R0bDogSW50ZWdlci5NQVhfVkFMVUV9KTtcbiAgICBjbG9jay5zZXRTeXN0ZW1UaW1lKDQyKTtcblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID0gcGFyc2VUdGwocmVjb3JkKTtcblxuICAgIGV4cGVjdChleHBpcmF0aW9uVGltZSkudG9CZShJbnRlZ2VyLk1BWF9WQUxVRSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHZhbGlkIHZhbHVlIHBhcnNpbmcgbmVnYXRpdmUgdHRsJywgKCkgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ld1JlY29yZCh7dHRsOiBpbnQoLTQyKX0pO1xuICAgIGNsb2NrLnNldFN5c3RlbVRpbWUoNDIpO1xuXG4gICAgY29uc3QgZXhwaXJhdGlvblRpbWUgPSBwYXJzZVR0bChyZWNvcmQpO1xuXG4gICAgZXhwZWN0KGV4cGlyYXRpb25UaW1lKS50b0JlKEludGVnZXIuTUFYX1ZBTFVFKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHJlY29yZCBkb2VzIG5vdCBoYXZlIGEgdHRsIGVudHJ5JywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbXCJub3RUdGxcIiwgXCJzZXJ2ZXJzXCJdLCBbXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVR0bChyZWNvcmQpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSBzZXJ2ZXJzJywgKCkgPT4ge1xuICAgIHRlc3RWYWxpZFNlcnZlcnNQYXJzaW5nKFtdLCBbXSwgW10pO1xuXG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoWydyb3V0ZXIxJ10sIFtdLCBbXSk7XG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoW10sIFsncmVhZGVyMSddLCBbXSk7XG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoW10sIFtdLCBbJ3dyaXRlcjEnXSk7XG5cbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbJ3JvdXRlcjEnXSwgWydyZWFkZXIxJ10sIFtdKTtcbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbJ3JvdXRlcjEnXSwgWydyZWFkZXIxJ10sIFsnd3JpdGVyMSddKTtcbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbXSwgWydyZWFkZXIxJ10sIFsnd3JpdGVyMSddKTtcblxuICAgIHRlc3RWYWxpZFNlcnZlcnNQYXJzaW5nKFsncm91dGVyMSddLCBbJ3JlYWRlcjEnXSwgWyd3cml0ZXIxJ10pO1xuICAgIHRlc3RWYWxpZFNlcnZlcnNQYXJzaW5nKFsncm91dGVyMScsICdyb3V0ZXIyJ10sIFsncmVhZGVyMScsICdyZWFkZXIyJ10sIFsnd3JpdGVyMSddKTtcbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbJ3JvdXRlcjEnLCAncm91dGVyMiddLCBbJ3JlYWRlcjEnLCAncmVhZGVyMiddLCBbJ3dyaXRlcjEnLCAnd3JpdGVyMiddKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgd2hlbiByZWNvcmQgZG9lcyBub3QgaGF2ZSBzZXJ2ZXJzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdub3RTZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIlJFQURcIiwgXCJhZGRyZXNzZXNcIjogWycxJywgJzInLCAnMyddfV1dKTtcbiAgICBleHBlY3RQcm90b2NvbEVycm9yKCgpID0+IHBhcnNlU2VydmVycyhyZWNvcmQpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgd2l0aG91dCByb2xlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wibm90Um9sZVwiOiBcIlJFQURcIiwgXCJhZGRyZXNzZXNcIjogWycxJywgJzInLCAnMyddfV1dKTtcbiAgICBleHBlY3RQcm90b2NvbEVycm9yKCgpID0+IHBhcnNlU2VydmVycyhyZWNvcmQpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgd2l0aCBpbGxlZ2FsIHJvbGUnLCBkb25lID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXcgUmVjb3JkKFsndHRsJywgJ3NlcnZlcnMnXSwgW2ludCg0MiksIFt7XCJyb2xlXCI6IFwiQVJCSVRFUlwiLCBcImFkZHJlc3Nlc1wiOiBbJzEnLCAnMicsICczJ119XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2Ugc2VydmVycyBlbnRyeSB3aXRoIGp1c3QgdHRsJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIlJFQURcIn1dXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVNlcnZlcnMocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdpdGhvdXQgYWRkcmVzc2VzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIldSSVRFXCIsIFwibm90QWRkcmVzc2VzXCI6IFsnMScsICcyJywgJzMnXX1dXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVNlcnZlcnMocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdpdGggc3RyaW5nIGFkZHJlc3NlcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ldyBSZWNvcmQoWyd0dGwnLCAnc2VydmVycyddLCBbaW50KDQyKSwgW3tcInJvbGVcIjogXCJXUklURVwiLCBcImFkZHJlc3Nlc1wiOiAnJ31dXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVNlcnZlcnMocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdpdGggbnVsbCBhZGRyZXNzZXMnLCBkb25lID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXcgUmVjb3JkKFsndHRsJywgJ3NlcnZlcnMnXSwgW2ludCg0MiksIFt7XCJyb2xlXCI6IFwiV1JJVEVcIiwgXCJhZGRyZXNzZXNcIjogbnVsbH1dXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVNlcnZlcnMocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdpdGggaW50ZWdlciBhZGRyZXNzZXMnLCBkb25lID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXcgUmVjb3JkKFsndHRsJywgJ3NlcnZlcnMnXSwgW2ludCg0MiksIFt7XCJyb2xlXCI6IFwiV1JJVEVcIiwgXCJhZGRyZXNzZXNcIjogMTIzNDV9XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2Ugc2VydmVycyBlbnRyeSB3aXRoIG9iamVjdCBhZGRyZXNzZXMnLCBkb25lID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXcgUmVjb3JkKFsndHRsJywgJ3NlcnZlcnMnXSwgW2ludCg0MiksIFt7XCJyb2xlXCI6IFwiV1JJVEVcIiwgXCJhZGRyZXNzZXNcIjoge2tleTogWydsb2NhbGhvc3QnXX19XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBmdW5jdGlvbiB0ZXN0VmFsaWRUdGxQYXJzaW5nKGN1cnJlbnRUaW1lLCB0dGxTZWNvbmRzKSB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3UmVjb3JkKHt0dGw6IGludCh0dGxTZWNvbmRzKX0pO1xuICAgIGNsb2NrLnNldFN5c3RlbVRpbWUoY3VycmVudFRpbWUpO1xuXG4gICAgY29uc3QgZXhwaXJhdGlvblRpbWUgPSBwYXJzZVR0bChyZWNvcmQpLnRvTnVtYmVyKCk7XG5cbiAgICBleHBlY3QoZXhwaXJhdGlvblRpbWUpLnRvRXF1YWwoY3VycmVudFRpbWUgKyB0dGxTZWNvbmRzICogMTAwMCk7XG4gIH1cblxuICBmdW5jdGlvbiB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhyb3V0ZXJBZGRyZXNzZXMsIHJlYWRlckFkZHJlc3Nlcywgd3JpdGVyQWRkcmVzc2VzKSB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3UmVjb3JkKHtyb3V0ZXJzOiByb3V0ZXJBZGRyZXNzZXMsIHJlYWRlcnM6IHJlYWRlckFkZHJlc3Nlcywgd3JpdGVyczogd3JpdGVyQWRkcmVzc2VzfSk7XG5cbiAgICBjb25zdCB7cm91dGVycywgcmVhZGVycywgd3JpdGVyc30gPSBwYXJzZVNlcnZlcnMocmVjb3JkKTtcblxuICAgIGV4cGVjdChyb3V0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbChyb3V0ZXJBZGRyZXNzZXMpO1xuICAgIGV4cGVjdChyZWFkZXJzLnRvQXJyYXkoKSkudG9FcXVhbChyZWFkZXJBZGRyZXNzZXMpO1xuICAgIGV4cGVjdCh3cml0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbCh3cml0ZXJBZGRyZXNzZXMpO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsbEdldFNlcnZlcnMoc2Vzc2lvbikge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgR2V0U2VydmVyc1V0aWwoKTtcbiAgICByZXR1cm4gdXRpbC5jYWxsR2V0U2VydmVycyhzZXNzaW9uLCBST1VURVJfQUREUkVTUyk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVR0bChyZWNvcmQpIHtcbiAgICBjb25zdCB1dGlsID0gbmV3IEdldFNlcnZlcnNVdGlsKCk7XG4gICAgcmV0dXJuIHV0aWwucGFyc2VUdGwocmVjb3JkLCBST1VURVJfQUREUkVTUyk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVNlcnZlcnMocmVjb3JkKSB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBHZXRTZXJ2ZXJzVXRpbCgpO1xuICAgIHJldHVybiB1dGlsLnBhcnNlU2VydmVycyhyZWNvcmQsIFJPVVRFUl9BRERSRVNTKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld1JlY29yZCh7dHRsID0gaW50KDQyKSwgcm91dGVycyA9IFtdLCByZWFkZXJzID0gW10sIHdyaXRlcnMgPSBbXX0pIHtcbiAgICBjb25zdCByb3V0ZXJzRmllbGQgPSB7XG4gICAgICBcInJvbGVcIjogXCJST1VURVwiLFxuICAgICAgXCJhZGRyZXNzZXNcIjogcm91dGVyc1xuICAgIH07XG4gICAgY29uc3QgcmVhZGVyc0ZpZWxkID0ge1xuICAgICAgXCJyb2xlXCI6IFwiUkVBRFwiLFxuICAgICAgXCJhZGRyZXNzZXNcIjogcmVhZGVyc1xuICAgIH07XG4gICAgY29uc3Qgd3JpdGVyc0ZpZWxkID0ge1xuICAgICAgXCJyb2xlXCI6IFwiV1JJVEVcIixcbiAgICAgIFwiYWRkcmVzc2VzXCI6IHdyaXRlcnNcbiAgICB9O1xuICAgIHJldHVybiBuZXcgUmVjb3JkKFtcInR0bFwiLCBcInNlcnZlcnNcIl0sIFt0dGwsIFtyb3V0ZXJzRmllbGQsIHJlYWRlcnNGaWVsZCwgd3JpdGVyc0ZpZWxkXV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0UHJvdG9jb2xFcnJvcihhY3Rpb24sIGRvbmUpIHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzb2x2ZShhY3Rpb24oKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHByb21pc2UuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvQmUoUFJPVE9DT0xfRVJST1IpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xhc3MgRmFrZVNlc3Npb24ge1xuXG4gICAgY29uc3RydWN0b3IocnVuUmVzcG9uc2UpIHtcbiAgICAgIHRoaXMuX3J1blJlc3BvbnNlID0gcnVuUmVzcG9uc2U7XG4gICAgICB0aGlzLl9jbG9zZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc3VjY2Vzc2Z1bChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBuZXcgRmFrZVNlc3Npb24oUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCkpO1xuICAgIH1cblxuICAgIHN0YXRpYyBmYWlsZWQoZXJyb3IpIHtcbiAgICAgIHJldHVybiBuZXcgRmFrZVNlc3Npb24oUHJvbWlzZS5yZWplY3QoZXJyb3IpKTtcbiAgICB9XG5cbiAgICBydW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcnVuUmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICB0aGlzLl9jbG9zZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlzQ2xvc2VkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlZDtcbiAgICB9XG4gIH1cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4gXG52YXIgYWxsb2MgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuYWxsb2MsXG4gICAgcGFja3N0cmVhbSA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvcGFja3N0cmVhbVwiKSxcbiAgICBJbnRlZ2VyID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlZ2VyXCIpLmRlZmF1bHQsXG4gICAgUGFja2VyID0gcGFja3N0cmVhbS5QYWNrZXIsXG4gICAgVW5wYWNrZXIgPSBwYWNrc3RyZWFtLlVucGFja2VyLFxuICAgIFN0cnVjdHVyZSA9IHBhY2tzdHJlYW0uU3RydWN0dXJlO1xuXG5kZXNjcmliZSgncGFja3N0cmVhbScsIGZ1bmN0aW9uKCkge1xuXG5cbiAgaXQoJ3Nob3VsZCBwYWNrIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIG4sIGk7XG4gICAgLy8gdGVzdCBzbWFsbCBudW1iZXJzXG4gICAgZm9yKG4gPSAtOTk5OyBuIDw9IDk5OTsgbiArPSAxKSB7XG4gICAgICBpID0gSW50ZWdlci5mcm9tTnVtYmVyKG4pO1xuICAgICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBpICkudG9TdHJpbmcoKSApLnRvQmUoIGkudG9TdHJpbmcoKSApO1xuICAgIH1cbiAgICAvLyBwb3NpdGl2ZSBudW1iZXJzXG4gICAgZm9yKG4gPSAxNjsgbiA8PSAxNiA7IG4gKz0gMSkge1xuICAgICAgaSA9IEludGVnZXIuZnJvbU51bWJlcihNYXRoLnBvdygyLCBuKSk7XG4gICAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIGkgKS50b1N0cmluZygpICkudG9CZSggaS50b1N0cmluZygpICk7XG4gICAgfVxuICAgIC8vIG5lZ2F0aXZlIG51bWJlcnNcbiAgICBmb3IobiA9IDA7IG4gPD0gNjMgOyBuICs9IDEpIHtcbiAgICAgIGkgPSBJbnRlZ2VyLmZyb21OdW1iZXIoLU1hdGgucG93KDIsIG4pKTtcbiAgICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggaSApLnRvU3RyaW5nKCkgKS50b0JlKCBpLnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhY2sgc3RyaW5ncycsIGZ1bmN0aW9uKCkge1xuICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggXCJcIiApICkudG9CZSggXCJcIiApO1xuICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggXCJhYmNkZWZnMTIzNTY3XCIgKSApLnRvQmUoIFwiYWJjZGVmZzEyMzU2N1wiICk7XG4gICAgdmFyIHN0ciA9IEFycmF5KDY1NTM2ICsgMSkuam9pbignYScpOyAvLyAyIF4gMTYgKyAxXG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKHN0ciwgc3RyLmxlbmd0aCArIDgpKS50b0JlKHN0cik7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhY2sgc3RydWN0dXJlcycsIGZ1bmN0aW9uKCkge1xuICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggbmV3IFN0cnVjdHVyZSgxLCBbXCJIZWxsbywgd29ybGQhISFcIl0gKSApLmZpZWxkc1swXSApICBcbiAgICAgLnRvQmUoIFwiSGVsbG8sIHdvcmxkISEhXCIgKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcGFjayBsaXN0cycsIGZ1bmN0aW9uKCkge1xuICAgdmFyIGxpc3QgPSBbJ2EnLCAnYiddO1xuICAgdmFyIHJvdW5kdHJpcHBlZCA9IHBhY2tBbmRVbnBhY2soIGxpc3QgKTtcbiAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzBdICkudG9CZSggbGlzdFswXSApO1xuICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMV0gKS50b0JlKCBsaXN0WzFdICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFjayBsb25nIGxpc3RzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxpc3RMZW5ndGggPSAyNTY7XG4gICAgdmFyIGxpc3QgPSBbXTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICBsaXN0LnB1c2gobnVsbClcbiAgICB9XG4gICAgdmFyIHJvdW5kdHJpcHBlZCA9IHBhY2tBbmRVbnBhY2soIGxpc3QsIDE0MDAgKTtcbiAgICBleHBlY3QoIHJvdW5kdHJpcHBlZFswXSApLnRvQmUoIGxpc3RbMF0gKTtcbiAgICBleHBlY3QoIHJvdW5kdHJpcHBlZFsxXSApLnRvQmUoIGxpc3RbMV0gKTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcGFja0FuZFVucGFjayggdmFsLCBidWZmZXJTaXplICkge1xuICBidWZmZXJTaXplID0gYnVmZmVyU2l6ZSB8fCAxMjg7XG4gIHZhciBidWZmZXIgPSBhbGxvYyhidWZmZXJTaXplKTtcbiAgbmV3IFBhY2tlciggYnVmZmVyICkucGFja2FibGUoIHZhbCApKCk7XG4gIGJ1ZmZlci5yZXNldCgpO1xuICByZXR1cm4gbmV3IFVucGFja2VyKCkudW5wYWNrKCBidWZmZXIgKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUG9vbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9wb29sJykuZGVmYXVsdDtcblxuZGVzY3JpYmUoJ1Bvb2wnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ2FsbG9jYXRlcyBpZiBwb29sIGlzIGVtcHR5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIGtleSA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg3XCI7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHVybCwgcmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKHVybCwgY291bnRlcisrLCByZWxlYXNlKSB9ICk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHIwID0gcG9vbC5hY3F1aXJlKGtleSk7XG4gICAgdmFyIHIxID0gcG9vbC5hY3F1aXJlKGtleSk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCByMC5pZCApLnRvQmUoIDAgKTtcbiAgICBleHBlY3QoIHIxLmlkICkudG9CZSggMSApO1xuICB9KTtcblxuICBpdCgncG9vbHMgaWYgcmVzb3VyY2VzIGFyZSByZXR1cm5lZCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIga2V5ID0gXCJib2x0Oi8vbG9jYWxob3N0Ojc2ODdcIjtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKCBmdW5jdGlvbiAodXJsLCByZWxlYXNlKSB7IHJldHVybiBuZXcgUmVzb3VyY2UodXJsLCBjb3VudGVyKyssIHJlbGVhc2UpIH0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoa2V5KTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZShrZXkpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUga2V5cycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIga2V5MSA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg3XCI7XG4gICAgdmFyIGtleTIgPSBcImJvbHQ6Ly9sb2NhbGhvc3Q6NzY4OFwiO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woIGZ1bmN0aW9uICh1cmwsIHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZSh1cmwsIGNvdW50ZXIrKywgcmVsZWFzZSkgfSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZShrZXkxKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoa2V5Mik7XG4gICAgcjAuY2xvc2UoKTtcbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoa2V5MSk7XG4gICAgdmFyIHIzID0gcG9vbC5hY3F1aXJlKGtleTIpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgICBleHBlY3QoIHIyLmlkICkudG9CZSggMCApO1xuICAgIGV4cGVjdCggcjMuaWQgKS50b0JlKCAyICk7XG4gIH0pO1xuXG4gIGl0KCdmcmVlcyBpZiBwb29sIHJlYWNoZXMgbWF4IHNpemUnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCB0cmFja3MgZGVzdHJveWVkIHJlc291cmNlc1xuICAgIHZhciBjb3VudGVyID0gMCxcbiAgICAgICAgZGVzdHJveWVkID0gW107XG4gICAgdmFyIGtleSA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg3XCI7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbChcbiAgICAgIGZ1bmN0aW9uICh1cmwsIHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZSh1cmwsIGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXNvdXJjZSkgeyBkZXN0cm95ZWQucHVzaChyZXNvdXJjZSk7IH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgcmV0dXJuIHRydWU7IH0sXG4gICAgICAyIC8vIG1heElkbGVcbiAgICApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZShrZXkpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZShrZXkpO1xuICAgIHZhciByMiA9IHBvb2wuYWNxdWlyZShrZXkpO1xuICAgIHIwLmNsb3NlKCk7XG4gICAgcjEuY2xvc2UoKTtcbiAgICByMi5jbG9zZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggZGVzdHJveWVkLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFswXS5pZCApLnRvQmUoIHIyLmlkICk7XG4gIH0pO1xuXG4gIGl0KCdmcmVlcyBpZiB2YWxpZGF0ZSByZXR1cm5zIGZhbHNlJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW4gYSBwb29sIHRoYXQgYWxsb2NhdGVzXG4gICAgdmFyIGNvdW50ZXIgPSAwLFxuICAgICAgZGVzdHJveWVkID0gW107XG4gICAgdmFyIGtleSA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg3XCI7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbChcbiAgICAgIGZ1bmN0aW9uICh1cmwsIHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZSh1cmwsIGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXNvdXJjZSkgeyBkZXN0cm95ZWQucHVzaChyZXNvdXJjZSk7IH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgcmV0dXJuIGZhbHNlOyB9LFxuICAgICAgMTAwMCAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoa2V5KTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoa2V5KTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZXN0cm95ZWQubGVuZ3RoICkudG9CZSggMiApO1xuICAgIGV4cGVjdCggZGVzdHJveWVkWzBdLmlkICkudG9CZSggcjAuaWQgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFsxXS5pZCApLnRvQmUoIHIxLmlkICk7XG4gIH0pO1xuXG5cbiAgaXQoJ3B1cmdlcyBrZXlzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW4gYSBwb29sIHRoYXQgYWxsb2NhdGVzXG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBrZXkxID0gXCJib2x0Oi8vbG9jYWxob3N0Ojc2ODdcIjtcbiAgICB2YXIga2V5MiA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg4XCI7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHVybCwgcmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKHVybCwgY291bnRlcisrLCByZWxlYXNlKSB9LFxuICAgICAgZnVuY3Rpb24gKHJlcykge3Jlcy5kZXN0cm95ZWQgPSB0cnVlOyByZXR1cm4gdHJ1ZX1cbiAgICApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZShrZXkxKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoa2V5Mik7XG4gICAgcjAuY2xvc2UoKTtcbiAgICByMS5jbG9zZSgpO1xuICAgIGV4cGVjdChwb29sLmhhcyhrZXkxKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QocG9vbC5oYXMoa2V5MikpLnRvQmUodHJ1ZSk7XG4gICAgcG9vbC5wdXJnZShrZXkxKTtcbiAgICBleHBlY3QocG9vbC5oYXMoa2V5MSkpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChwb29sLmhhcyhrZXkyKSkudG9CZSh0cnVlKTtcblxuICAgIHZhciByMiA9IHBvb2wuYWNxdWlyZShrZXkxKTtcbiAgICB2YXIgcjMgPSBwb29sLmFjcXVpcmUoa2V5Mik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCByMC5pZCApLnRvQmUoIDAgKTtcbiAgICBleHBlY3QoIHIwLmRlc3Ryb3llZCApLnRvQmUoIHRydWUgKTtcbiAgICBleHBlY3QoIHIxLmlkICkudG9CZSggMSApO1xuICAgIGV4cGVjdCggcjIuaWQgKS50b0JlKCAyICk7XG4gICAgZXhwZWN0KCByMy5pZCApLnRvQmUoIDEgKTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gUmVzb3VyY2UoIGtleSwgaWQsIHJlbGVhc2UpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLmlkID0gaWQ7XG4gIHRoaXMuY2xvc2UgPSBmdW5jdGlvbigpIHsgcmVsZWFzZShrZXksIHNlbGYpOyB9O1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBSZWRpc2NvdmVyeSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVybmFsL3JlZGlzY292ZXJ5XCI7XG5pbXBvcnQgR2V0U2VydmVyc1V0aWwgZnJvbSBcIi4uLy4uL3NyYy92MS9pbnRlcm5hbC9nZXQtc2VydmVycy11dGlsXCI7XG5pbXBvcnQge25ld0Vycm9yLCBQUk9UT0NPTF9FUlJPUn0gZnJvbSBcIi4uLy4uL3NyYy92MS9lcnJvclwiO1xuaW1wb3J0IFJlY29yZCBmcm9tIFwiLi4vLi4vc3JjL3YxL3JlY29yZFwiO1xuaW1wb3J0IHtpbnR9IGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZWdlclwiO1xuaW1wb3J0IFJvdW5kUm9iaW5BcnJheSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVybmFsL3JvdW5kLXJvYmluLWFycmF5XCI7XG5pbXBvcnQgUm91dGluZ1RhYmxlIGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZXJuYWwvcm91dGluZy10YWJsZVwiO1xuXG5jb25zdCBST1VURVJfQUREUkVTUyA9ICdib2x0K3JvdXRpbmc6Ly90ZXN0LnJvdXRlci5jb20nO1xuXG5kZXNjcmliZSgncmVkaXNjb3ZlcnknLCAoKSA9PiB7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIGNvbm5lY3Rpb24gZXJyb3IgaGFwcGVucycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBudWxsLFxuICAgIH0pO1xuXG4gICAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIodXRpbCkudGhlbihyb3V0aW5nVGFibGUgPT4ge1xuICAgICAgZXhwZWN0KHJvdXRpbmdUYWJsZSkudG9CZU51bGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5vIHJlY29yZHMgYXJlIHJldHVybmVkJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtdLFxuICAgIH0pO1xuXG4gICAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIodXRpbCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0UHJvdG9jb2xFcnJvcihlcnJvciwgJ0lsbGVnYWwgcmVzcG9uc2UgZnJvbSByb3V0ZXInKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG11bHRpcGxlIHJlY29yZHMgYXJlIHJldHVybmVkJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtuZXcgUmVjb3JkKFsnYSddLCBbJ2FhYSddKSwgbmV3IFJlY29yZChbJ2InXSwgWydiYmInXSldXG4gICAgfSk7XG5cbiAgICBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcih1dGlsKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3RQcm90b2NvbEVycm9yKGVycm9yLCAnSWxsZWdhbCByZXNwb25zZSBmcm9tIHJvdXRlcicpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IHdoZW4gdHRsIHBhcnNpbmcgdGhyb3dzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtuZXcgUmVjb3JkKFsnYSddLCBbJ2FhYSddKV0sXG4gICAgICBwYXJzZVR0bDogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXdFcnJvcignVW5hYmxlIHRvIHBhcnNlIFRUTCcsIFBST1RPQ09MX0VSUk9SKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHV0aWwpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdFByb3RvY29sRXJyb3IoZXJyb3IsICdVbmFibGUgdG8gcGFyc2UgVFRMJyk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBzZXJ2ZXJzIHBhcnNpbmcgdGhyb3dzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtuZXcgUmVjb3JkKFsnYSddLCBbJ2FhYSddKV0sXG4gICAgICBwYXJzZVR0bDogKCkgPT4gaW50KDQyKSxcbiAgICAgIHBhcnNlU2VydmVyczogKCkgPT4ge1xuICAgICAgICB0aHJvdyBuZXdFcnJvcignVW5hYmxlIHRvIHBhcnNlIHNlcnZlcnMnLCBQUk9UT0NPTF9FUlJPUik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcih1dGlsKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3RQcm90b2NvbEVycm9yKGVycm9yLCAnVW5hYmxlIHRvIHBhcnNlIHNlcnZlcnMnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5vIHJvdXRlcnMnLCBkb25lID0+IHtcbiAgICBjb25zdCB1dGlsID0gbmV3IEZha2VHZXRTZXJ2ZXJzVXRpbCh7XG4gICAgICBjYWxsR2V0U2VydmVyczogKCkgPT4gW25ldyBSZWNvcmQoWydhJ10sIFsnYWFhJ10pXSxcbiAgICAgIHBhcnNlVHRsOiAoKSA9PiBpbnQoNDIpLFxuICAgICAgcGFyc2VTZXJ2ZXJzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGVyczogbmV3IFJvdW5kUm9iaW5BcnJheSgpLFxuICAgICAgICAgIHJlYWRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoWydyZWFkZXIxJ10pLFxuICAgICAgICAgIHdyaXRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoWyd3cml0ZXIxJ10pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcih1dGlsKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3RQcm90b2NvbEVycm9yKGVycm9yLCAnUmVjZWl2ZWQgbm8gcm91dGVycycpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IHdoZW4gbm8gcmVhZGVycycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBbbmV3IFJlY29yZChbJ2EnXSwgWydhYWEnXSldLFxuICAgICAgcGFyc2VUdGw6ICgpID0+IGludCg0MiksXG4gICAgICBwYXJzZVNlcnZlcnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KFsncm91dGVyMSddKSxcbiAgICAgICAgICByZWFkZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KCksXG4gICAgICAgICAgd3JpdGVyczogbmV3IFJvdW5kUm9iaW5BcnJheShbJ3dyaXRlcjEnXSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHV0aWwpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdFByb3RvY29sRXJyb3IoZXJyb3IsICdSZWNlaXZlZCBubyByZWFkZXJzJyk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHJvdXRpbmcgdGFibGUgd2hlbiBubyB3cml0ZXJzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtuZXcgUmVjb3JkKFsnYSddLCBbJ2FhYSddKV0sXG4gICAgICBwYXJzZVR0bDogKCkgPT4gaW50KDQyKSxcbiAgICAgIHBhcnNlU2VydmVyczogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoWydyb3V0ZXIxJ10pLFxuICAgICAgICAgIHJlYWRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoWydyZWFkZXIxJ10pLFxuICAgICAgICAgIHdyaXRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIodXRpbCkudGhlbihyb3V0aW5nVGFibGUgPT4ge1xuICAgICAgZXhwZWN0KHJvdXRpbmdUYWJsZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb3V0aW5nVGFibGUpLm5vdC50b0JlTnVsbCgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB2YWxpZCByb3V0aW5nIHRhYmxlIHdpdGggMSByb3V0ZXIsIDEgcmVhZGVyIGFuZCAxIHdyaXRlcicsIGRvbmUgPT4ge1xuICAgIHRlc3RWYWxpZFJvdXRpbmdUYWJsZShbJ3JvdXRlcjEnXSwgWydyZWFkZXIxJ10sIFsnd3JpdGVyMSddLCBpbnQoNDIpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgcm91dGluZyB0YWJsZSB3aXRoIDIgcm91dGVycywgMiByZWFkZXJzIGFuZCAyIHdyaXRlcnMnLCBkb25lID0+IHtcbiAgICB0ZXN0VmFsaWRSb3V0aW5nVGFibGUoWydyb3V0ZXIxJywgJ3JvdXRlcjInXSwgWydyZWFkZXIxJywgJ3JlYWRlcjInXSwgWyd3cml0ZXIxJywgJ3dyaXRlcjInXSwgaW50KERhdGUubm93KCkpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgcm91dGluZyB0YWJsZSB3aXRoIDEgcm91dGVyLCAzIHJlYWRlcnMgYW5kIDEgd3JpdGVyJywgZG9uZSA9PiB7XG4gICAgdGVzdFZhbGlkUm91dGluZ1RhYmxlKFsncm91dGVyMSddLCBbJ3JlYWRlcjEnLCAncmVhZGVyMicsICdyZWFkZXIzJ10sIFsnd3JpdGVyMSddLCBpbnQoMTIzNDUpLCBkb25lKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gdGVzdFZhbGlkUm91dGluZ1RhYmxlKHJvdXRlckFkZHJlc3NlcywgcmVhZGVyQWRkcmVzc2VzLCB3cml0ZXJBZGRyZXNzZXMsIGV4cGlyZXMsIGRvbmUpIHtcbiAgICBjb25zdCB1dGlsID0gbmV3IEZha2VHZXRTZXJ2ZXJzVXRpbCh7XG4gICAgICBjYWxsR2V0U2VydmVyczogKCkgPT4gW25ldyBSZWNvcmQoWydhJ10sIFsnYWFhJ10pXSxcbiAgICAgIHBhcnNlVHRsOiAoKSA9PiBleHBpcmVzLFxuICAgICAgcGFyc2VTZXJ2ZXJzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGVyczogbmV3IFJvdW5kUm9iaW5BcnJheShyb3V0ZXJBZGRyZXNzZXMpLFxuICAgICAgICAgIHJlYWRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkocmVhZGVyQWRkcmVzc2VzKSxcbiAgICAgICAgICB3cml0ZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KHdyaXRlckFkZHJlc3NlcylcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHV0aWwpLnRoZW4ocm91dGluZ1RhYmxlID0+IHtcbiAgICAgIGV4cGVjdChyb3V0aW5nVGFibGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm91dGluZ1RhYmxlKS5ub3QudG9CZU51bGwoKTtcblxuICAgICAgZXhwZWN0KHJvdXRpbmdUYWJsZS5leHBpcmF0aW9uVGltZSkudG9FcXVhbChleHBpcmVzKTtcblxuICAgICAgY29uc3QgYWxsU2VydmVycyA9IHJvdXRpbmdUYWJsZS5zZXJ2ZXJzRGlmZihuZXcgUm91dGluZ1RhYmxlKCkpLnNvcnQoKTtcbiAgICAgIGNvbnN0IGFsbEV4cGVjdGVkU2VydmVycyA9IFsuLi5yb3V0ZXJBZGRyZXNzZXMsIC4uLnJlYWRlckFkZHJlc3NlcywgLi4ud3JpdGVyQWRkcmVzc2VzXS5zb3J0KCk7XG4gICAgICBleHBlY3QoYWxsU2VydmVycykudG9FcXVhbChhbGxFeHBlY3RlZFNlcnZlcnMpO1xuXG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcihnZXRTZXJ2ZXJzVXRpbCkge1xuICAgIGNvbnN0IHJlZGlzY292ZXJ5ID0gbmV3IFJlZGlzY292ZXJ5KGdldFNlcnZlcnNVdGlsKTtcbiAgICByZXR1cm4gcmVkaXNjb3ZlcnkubG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIobnVsbCwgUk9VVEVSX0FERFJFU1MpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0UHJvdG9jb2xFcnJvcihlcnJvciwgbWVzc2FnZVByZWZpeCkge1xuICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFBST1RPQ09MX0VSUk9SKTtcbiAgICBleHBlY3QoZXJyb3IubWVzc2FnZS5pbmRleE9mKG1lc3NhZ2VQcmVmaXgpKS50b0VxdWFsKDApO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkTm90QmVDYWxsZWQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgbm90IGJlIGNhbGxlZCcpO1xuICB9XG5cbiAgY2xhc3MgRmFrZUdldFNlcnZlcnNVdGlsIGV4dGVuZHMgR2V0U2VydmVyc1V0aWwge1xuXG4gICAgY29uc3RydWN0b3Ioe2NhbGxHZXRTZXJ2ZXJzID0gc2hvdWxkTm90QmVDYWxsZWQsIHBhcnNlVHRsID0gc2hvdWxkTm90QmVDYWxsZWQsIHBhcnNlU2VydmVycyA9IHNob3VsZE5vdEJlQ2FsbGVkfSkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIHRoaXMuX2NhbGxHZXRTZXJ2ZXJzID0gY2FsbEdldFNlcnZlcnM7XG4gICAgICB0aGlzLl9wYXJzZVR0bCA9IHBhcnNlVHRsO1xuICAgICAgdGhpcy5fcGFyc2VTZXJ2ZXJzID0gcGFyc2VTZXJ2ZXJzO1xuICAgIH1cblxuICAgIGNhbGxHZXRTZXJ2ZXJzKHNlc3Npb24sIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLl9jYWxsR2V0U2VydmVycygpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBwYXJzZVR0bChyZWNvcmQsIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJzZVR0bCgpO1xuICAgIH1cblxuICAgIHBhcnNlU2VydmVycyhyZWNvcmQsIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYXJzZVNlcnZlcnMoKTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUm91bmRSb2JpbkFycmF5IGZyb20gXCIuLi8uLi9saWIvdjEvaW50ZXJuYWwvcm91bmQtcm9iaW4tYXJyYXlcIjtcblxuZGVzY3JpYmUoJ3JvdW5kLXJvYmluLWFycmF5JywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgYmVoYXZlIGNvcnJlY3RseSB3aGVuIGVtcHR5JywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheSgpO1xuXG4gICAgZXhwZWN0KGFycmF5LmlzRW1wdHkoKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhcnJheS5zaXplKCkpLnRvRXF1YWwoMCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9CZU51bGwoKTtcbiAgICBleHBlY3QoYXJyYXkudG9BcnJheSgpKS50b0VxdWFsKFtdKTtcblxuICAgIGFycmF5LnJlbW92ZSgxKTtcblxuICAgIGV4cGVjdChhcnJheS5pc0VtcHR5KCkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoYXJyYXkuc2l6ZSgpKS50b0VxdWFsKDApO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KGFycmF5LnRvQXJyYXkoKSkudG9FcXVhbChbXSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmVoYXZlIGNvcnJlY3RseSB3aGVuIGNvbnRhaW5zIHNpbmdsZSBlbGVtZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbNV0pO1xuXG4gICAgZXhwZWN0KGFycmF5LmlzRW1wdHkoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KGFycmF5LnNpemUoKSkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICAgIGV4cGVjdChhcnJheS50b0FycmF5KCkpLnRvRXF1YWwoWzVdKTtcblxuICAgIGFycmF5LnJlbW92ZSgxKTtcblxuICAgIGV4cGVjdChhcnJheS5pc0VtcHR5KCkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChhcnJheS5zaXplKCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkudG9BcnJheSgpKS50b0VxdWFsKFs1XSk7XG5cbiAgICBhcnJheS5yZW1vdmUoNSk7XG5cbiAgICBleHBlY3QoYXJyYXkuaXNFbXB0eSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGFycmF5LnNpemUoKSkudG9FcXVhbCgwKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChhcnJheS50b0FycmF5KCkpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHB1c2ggaXRlbXMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXJyYXkxID0gbmV3IFJvdW5kUm9iaW5BcnJheSgpO1xuICAgIGFycmF5MS5wdXNoQWxsKFsxXSk7XG4gICAgZXhwZWN0KGFycmF5MS50b0FycmF5KCkpLnRvRXF1YWwoWzFdKTtcblxuICAgIGNvbnN0IGFycmF5MiA9IG5ldyBSb3VuZFJvYmluQXJyYXkoW10pO1xuICAgIGFycmF5Mi5wdXNoQWxsKFsxLCAyLCAzXSk7XG4gICAgZXhwZWN0KGFycmF5Mi50b0FycmF5KCkpLnRvRXF1YWwoWzEsIDIsIDNdKTtcblxuICAgIGNvbnN0IGFycmF5MyA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDNdKTtcbiAgICBhcnJheTMucHVzaEFsbChbNCwgNV0pO1xuICAgIGV4cGVjdChhcnJheTMudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyLCAzLCA0LCA1XSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHVzaCBlbXB0eSBhcnJheScsICgpID0+IHtcbiAgICBjb25zdCBlbXB0eUFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheSgpO1xuICAgIGVtcHR5QXJyYXkucHVzaEFsbChbXSk7XG4gICAgZXhwZWN0KGVtcHR5QXJyYXkuaXNFbXB0eSgpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBub25FbXB0eUFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbMSwgMiwgM10pO1xuICAgIG5vbkVtcHR5QXJyYXkucHVzaEFsbChbXSk7XG4gICAgZXhwZWN0KG5vbkVtcHR5QXJyYXkudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyLCAzXSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiB0cnlpbmcgdG8gcHVzaCBpbGxlZ2FsIGl0ZW1zJywgKCkgPT4ge1xuICAgIGNvbnN0IGVtcHR5QXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KCk7XG4gICAgY29uc3Qgbm9uRW1wdHlBcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDNdKTtcblxuICAgIGV4cGVjdCgoKSA9PiBlbXB0eUFycmF5LnB1c2hBbGwodW5kZWZpbmVkKSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiBub25FbXB0eUFycmF5LnB1c2hBbGwodW5kZWZpbmVkKSkudG9UaHJvdygpO1xuXG4gICAgZXhwZWN0KCgpID0+IGVtcHR5QXJyYXkucHVzaEFsbChudWxsKSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiBub25FbXB0eUFycmF5LnB1c2hBbGwobnVsbCkpLnRvVGhyb3coKTtcblxuICAgIGV4cGVjdCgoKSA9PiBlbXB0eUFycmF5LnB1c2hBbGwoe30pKS50b1Rocm93KCk7XG4gICAgZXhwZWN0KCgpID0+IG5vbkVtcHR5QXJyYXkucHVzaEFsbCh7fSkpLnRvVGhyb3coKTtcblxuICAgIGV4cGVjdCgoKSA9PiBlbXB0eUFycmF5LnB1c2hBbGwoe2E6IDEsIGI6IDJ9KSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiBub25FbXB0eUFycmF5LnB1c2hBbGwoe2E6IDEsIGI6IDJ9KSkudG9UaHJvdygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0ZXAgdGhyb3VnaCBhcnJheScsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDMsIDQsIDVdKTtcblxuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RlcCB0aHJvdWdoIHNpbmdsZSBlbGVtZW50IGFycmF5JywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbNV0pO1xuXG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGRlbGV0aW5nIGl0ZW0gYmVmb3JlIGN1cnJlbnQgJywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbMSwgMiwgMywgNCwgNV0pO1xuXG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDIpO1xuICAgIGFycmF5LnJlbW92ZSgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZGVsZXRpbmcgaXRlbSBvbiBjdXJyZW50ICcsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDMsIDQsIDVdKTtcblxuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBhcnJheS5yZW1vdmUoMyk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg0KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGRlbGV0aW5nIGl0ZW0gYWZ0ZXIgY3VycmVudCAnLCAoKSA9PiB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzLCA0LCA1XSk7XG5cbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgYXJyYXkucmVtb3ZlKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMyk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZGVsZXRpbmcgbGFzdCBpdGVtICcsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDMsIDQsIDVdKTtcblxuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNCk7XG4gICAgYXJyYXkucmVtb3ZlKDUpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgxKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZGVsZXRpbmcgZmlyc3QgaXRlbSAnLCAoKSA9PiB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzLCA0LCA1XSk7XG4gICAgYXJyYXkucmVtb3ZlKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZGVsZXRpbmcgbXVsdGlwbGUgaXRlbXMgJywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbMSwgMiwgMywgMSwgMV0pO1xuICAgIGFycmF5LnJlbW92ZSgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDIpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMyk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICB9KTtcblxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSb3V0aW5nVGFibGUgZnJvbSBcIi4uLy4uL3NyYy92MS9pbnRlcm5hbC9yb3V0aW5nLXRhYmxlXCI7XG5pbXBvcnQgUm91bmRSb2JpbkFycmF5IGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZXJuYWwvcm91bmQtcm9iaW4tYXJyYXlcIjtcbmltcG9ydCB7aW50fSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVnZXJcIjtcblxuZGVzY3JpYmUoJ3JvdXRpbmctdGFibGUnLCAoKSA9PiB7XG5cbiAgaXQoJ3Nob3VsZCBub3QgYmUgc3RhbGUgd2hlbiBoYXMgcm91dGVycywgcmVhZGVycywgd3JpdGVycyBhbmQgZnV0dXJlIGV4cGlyYXRpb24gZGF0ZScsICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzMsIDRdLCBbNSwgNl0sIG5vdEV4cGlyZWQoKSk7XG4gICAgZXhwZWN0KHRhYmxlLmlzU3RhbGUoKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc3RhbGUgd2hlbiBleHBpcmF0aW9uIGRhdGUgaW4gdGhlIHBhc3QnLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFsxLCAyXSwgWzEsIDJdLCBleHBpcmVkKCkpO1xuICAgIGV4cGVjdCh0YWJsZS5pc1N0YWxlKCkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBzdGFsZSB3aGVuIGhhcyBzaW5nbGUgcm91dGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzFdLCBbMiwgM10sIFs0LCA1XSwgbm90RXhwaXJlZCgpKTtcbiAgICBleHBlY3QodGFibGUuaXNTdGFsZSgpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc3RhbGUgd2hlbiBubyByZWFkZXJzJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbXSwgWzMsIDRdLCBub3RFeHBpcmVkKCkpO1xuICAgIGV4cGVjdCh0YWJsZS5pc1N0YWxlKCkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBzdGFsZSB3aGVuIG5vIHdyaXRlcnMnLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgW10sIG5vdEV4cGlyZWQoKSk7XG4gICAgZXhwZWN0KHRhYmxlLmlzU3RhbGUoKSkudG9CZVRydXRoeSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBiZSBzdGFsZSB3aXRoIHNpbmdsZSByZWFkZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszXSwgWzQsIDVdLCBub3RFeHBpcmVkKCkpO1xuICAgIGV4cGVjdCh0YWJsZS5pc1N0YWxlKCkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBiZSBzdGFsZSB3aXRoIHNpbmdsZSB3cml0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgWzVdLCBub3RFeHBpcmVkKCkpO1xuICAgIGV4cGVjdCh0YWJsZS5pc1N0YWxlKCkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZvcmdldCByZWFkZXIsIHdyaXRlciBidXQgbm90IHJvdXRlcicsICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzEsIDJdLCBbMSwgMl0sIG5vdEV4cGlyZWQoKSk7XG5cbiAgICB0YWJsZS5mb3JnZXQoMSk7XG5cbiAgICBleHBlY3QodGFibGUucm91dGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzEsIDJdKTtcbiAgICBleHBlY3QodGFibGUucmVhZGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzJdKTtcbiAgICBleHBlY3QodGFibGUud3JpdGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzJdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmb3JnZXQgc2luZ2xlIHJlYWRlcicsICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzQyXSwgWzEsIDIsIDNdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgdGFibGUuZm9yZ2V0KDQyKTtcblxuICAgIGV4cGVjdCh0YWJsZS5yb3V0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbChbMSwgMl0pO1xuICAgIGV4cGVjdCh0YWJsZS5yZWFkZXJzLnRvQXJyYXkoKSkudG9FcXVhbChbXSk7XG4gICAgZXhwZWN0KHRhYmxlLndyaXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyLCAzXSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZm9yZ2V0IHNpbmdsZSB3cml0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0LCA1XSwgWzQyXSwgbm90RXhwaXJlZCgpKTtcblxuICAgIHRhYmxlLmZvcmdldCg0Mik7XG5cbiAgICBleHBlY3QodGFibGUucm91dGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzEsIDJdKTtcbiAgICBleHBlY3QodGFibGUucmVhZGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzMsIDQsIDVdKTtcbiAgICBleHBlY3QodGFibGUud3JpdGVycy50b0FycmF5KCkpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZvcmdldCByb3V0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFsxLCAzXSwgWzQsIDFdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgdGFibGUuZm9yZ2V0Um91dGVyKDEpO1xuXG4gICAgZXhwZWN0KHRhYmxlLnJvdXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsyXSk7XG4gICAgZXhwZWN0KHRhYmxlLnJlYWRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsxLCAzXSk7XG4gICAgZXhwZWN0KHRhYmxlLndyaXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFs0LCAxXSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZm9yZ2V0IHdyaXRlcicsICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyLCAzXSwgWzIsIDEsIDVdLCBbNSwgMV0sIG5vdEV4cGlyZWQoKSk7XG5cbiAgICB0YWJsZS5mb3JnZXRXcml0ZXIoMSk7XG5cbiAgICBleHBlY3QodGFibGUucm91dGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzEsIDIsIDNdKTtcbiAgICBleHBlY3QodGFibGUucmVhZGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzIsIDEsIDVdKTtcbiAgICBleHBlY3QodGFibGUud3JpdGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzVdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gYWxsIHNlcnZlcnMgaW4gZGlmZiB3aGVuIG90aGVyIHRhYmxlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgIGNvbnN0IG9sZFRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFs1LCA2XSwgbm90RXhwaXJlZCgpKTtcbiAgICBjb25zdCBuZXdUYWJsZSA9IGNyZWF0ZVRhYmxlKFtdLCBbXSwgW10sIG5vdEV4cGlyZWQoKSk7XG5cbiAgICBjb25zdCBzZXJ2ZXJzID0gb2xkVGFibGUuc2VydmVyc0RpZmYobmV3VGFibGUpO1xuXG4gICAgZXhwZWN0KHNlcnZlcnMpLnRvRXF1YWwoWzEsIDIsIDMsIDQsIDUsIDZdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBubyBzZXJ2ZXJzIGluIGRpZmYgd2hlbiB0aGlzIHRhYmxlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgIGNvbnN0IG9sZFRhYmxlID0gY3JlYXRlVGFibGUoW10sIFtdLCBbXSwgbm90RXhwaXJlZCgpKTtcbiAgICBjb25zdCBuZXdUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzMsIDRdLCBbNSwgNl0sIG5vdEV4cGlyZWQoKSk7XG5cbiAgICBjb25zdCBzZXJ2ZXJzID0gb2xkVGFibGUuc2VydmVyc0RpZmYobmV3VGFibGUpO1xuXG4gICAgZXhwZWN0KHNlcnZlcnMpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluY2x1ZGUgZGlmZmVyZW50IHJvdXRlcnMgaW4gc2VydmVycyBkaWZmJywgKCkgPT4ge1xuICAgIGNvbnN0IG9sZFRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDcsIDIsIDQyXSwgWzMsIDRdLCBbNSwgNl0sIG5vdEV4cGlyZWQoKSk7XG4gICAgY29uc3QgbmV3VGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgY29uc3Qgc2VydmVycyA9IG9sZFRhYmxlLnNlcnZlcnNEaWZmKG5ld1RhYmxlKTtcblxuICAgIGV4cGVjdChzZXJ2ZXJzKS50b0VxdWFsKFs3LCA0Ml0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluY2x1ZGUgZGlmZmVyZW50IHJlYWRlcnMgaW4gc2VydmVycyBkaWZmJywgKCkgPT4ge1xuICAgIGNvbnN0IG9sZFRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNywgNCwgNDJdLCBbNSwgNl0sIG5vdEV4cGlyZWQoKSk7XG4gICAgY29uc3QgbmV3VGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgY29uc3Qgc2VydmVycyA9IG9sZFRhYmxlLnNlcnZlcnNEaWZmKG5ld1RhYmxlKTtcblxuICAgIGV4cGVjdChzZXJ2ZXJzKS50b0VxdWFsKFs3LCA0Ml0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluY2x1ZGUgZGlmZmVyZW50IHdyaXRlcnMgaW4gc2VydmVycyBkaWZmJywgKCkgPT4ge1xuICAgIGNvbnN0IG9sZFRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFs1LCA3LCA2LCA0Ml0sIG5vdEV4cGlyZWQoKSk7XG4gICAgY29uc3QgbmV3VGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgY29uc3Qgc2VydmVycyA9IG9sZFRhYmxlLnNlcnZlcnNEaWZmKG5ld1RhYmxlKTtcblxuICAgIGV4cGVjdChzZXJ2ZXJzKS50b0VxdWFsKFs3LCA0Ml0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluY2x1ZGUgZGlmZmVyZW50IHNlcnZlcnMgaW4gZGlmZicsICgpID0+IHtcbiAgICBjb25zdCBvbGRUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyLCAxMV0sIFsyMiwgMywgMzMsIDRdLCBbNSwgNDQsIDZdLCBub3RFeHBpcmVkKCkpO1xuICAgIGNvbnN0IG5ld1RhYmxlID0gY3JlYXRlVGFibGUoWzFdLCBbMiwgMywgNCwgNl0sIFs1XSwgbm90RXhwaXJlZCgpKTtcblxuICAgIGNvbnN0IHNlcnZlcnMgPSBvbGRUYWJsZS5zZXJ2ZXJzRGlmZihuZXdUYWJsZSk7XG5cbiAgICBleHBlY3Qoc2VydmVycykudG9FcXVhbChbMTEsIDIyLCAzMywgNDRdKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZXhwaXJlZCgpIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIDM2MDA7IC8vIGV4cGlyZWQgYW4gaG91ciBhZ29cbiAgfVxuXG4gIGZ1bmN0aW9uIG5vdEV4cGlyZWQoKSB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgKyAzNjAwOyAvLyB3aWxsIGV4cGlyZSBpbiBhbiBob3VyXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVUYWJsZShyb3V0ZXJzLCByZWFkZXJzLCB3cml0ZXJzLCBleHBpcmF0aW9uVGltZSkge1xuICAgIGNvbnN0IHJvdXRlcnNBcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkocm91dGVycyk7XG4gICAgY29uc3QgcmVhZGVyc0FycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShyZWFkZXJzKTtcbiAgICBjb25zdCB3cml0ZXJzQXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KHdyaXRlcnMpO1xuICAgIGNvbnN0IGV4cGlyYXRpb24gPSBpbnQoZXhwaXJhdGlvblRpbWUpO1xuICAgIHJldHVybiBuZXcgUm91dGluZ1RhYmxlKHJvdXRlcnNBcnJheSwgcmVhZGVyc0FycmF5LCB3cml0ZXJzQXJyYXksIGV4cGlyYXRpb24pO1xuICB9XG5cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5jbGFzcyBTZXRUaW1lb3V0TW9jayB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fY2xlYXJTdGF0ZSgpO1xuICB9XG5cbiAgaW5zdGFsbCgpIHtcbiAgICB0aGlzLl9vcmlnaW5hbFNldFRpbWVvdXQgPSBnbG9iYWwuc2V0VGltZW91dDtcbiAgICBnbG9iYWwuc2V0VGltZW91dCA9IChjb2RlLCBkZWxheSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9wYXVzZWQpIHtcbiAgICAgICAgY29kZSgpO1xuICAgICAgICB0aGlzLmludm9jYXRpb25EZWxheXMucHVzaChkZWxheSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fdGltZW91dElkQ291bnRlcisrO1xuICAgIH07XG5cbiAgICB0aGlzLl9vcmlnaW5hbENsZWFyVGltZW91dCA9IGdsb2JhbC5jbGVhclRpbWVvdXQ7XG4gICAgZ2xvYmFsLmNsZWFyVGltZW91dCA9IGlkID0+IHtcbiAgICAgIHRoaXMuY2xlYXJlZFRpbWVvdXRzLnB1c2goaWQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBhdXNlKCkge1xuICAgIHRoaXMuX3BhdXNlZCA9IHRydWU7XG4gIH1cblxuICB1bmluc3RhbGwoKSB7XG4gICAgZ2xvYmFsLnNldFRpbWVvdXQgPSB0aGlzLl9vcmlnaW5hbFNldFRpbWVvdXQ7XG4gICAgZ2xvYmFsLmNsZWFyVGltZW91dCA9IHRoaXMuX29yaWdpbmFsQ2xlYXJUaW1lb3V0O1xuICAgIHRoaXMuX2NsZWFyU3RhdGUoKTtcbiAgfVxuXG4gIHNldFRpbWVvdXRPcmlnaW5hbChjb2RlLCBkZWxheSkge1xuICAgIHJldHVybiB0aGlzLl9vcmlnaW5hbFNldFRpbWVvdXQuY2FsbChudWxsLCBjb2RlLCBkZWxheSk7XG4gIH1cblxuICBfY2xlYXJTdGF0ZSgpIHtcbiAgICB0aGlzLl9vcmlnaW5hbFNldFRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX29yaWdpbmFsQ2xlYXJUaW1lb3V0ID0gbnVsbDtcbiAgICB0aGlzLl9wYXVzZWQgPSBmYWxzZTtcbiAgICB0aGlzLl90aW1lb3V0SWRDb3VudGVyID0gMDtcblxuICAgIHRoaXMuaW52b2NhdGlvbkRlbGF5cyA9IFtdO1xuICAgIHRoaXMuY2xlYXJlZFRpbWVvdXRzID0gW107XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHNldFRpbWVvdXRNb2NrID0gbmV3IFNldFRpbWVvdXRNb2NrKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWphY2tOZXh0RGF0ZU5vd0NhbGwobmV3VmFsdWUpIHtcbiAgY29uc3Qgb3JpZ2luYWxEYXRlID0gZ2xvYmFsLkRhdGU7XG4gIGdsb2JhbC5EYXRlID0gbmV3IEZha2VEYXRlKG9yaWdpbmFsRGF0ZSwgbmV3VmFsdWUpO1xufVxuXG5jbGFzcyBGYWtlRGF0ZSB7XG5cbiAgY29uc3RydWN0b3Iob3JpZ2luYWxEYXRlLCBuZXh0Tm93VmFsdWUpIHtcbiAgICB0aGlzLl9vcmlnaW5hbERhdGUgPSBvcmlnaW5hbERhdGU7XG4gICAgdGhpcy5fbmV4dE5vd1ZhbHVlID0gbmV4dE5vd1ZhbHVlO1xuICB9XG5cbiAgbm93KCkge1xuICAgIGdsb2JhbC5EYXRlID0gdGhpcy5fb3JpZ2luYWxEYXRlO1xuICAgIHJldHVybiB0aGlzLl9uZXh0Tm93VmFsdWU7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIE5vZGVDaGFubmVsID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NoLW5vZGUuanMnKS5kZWZhdWx0O1xudmFyIG5lbzRqID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MVwiKTtcbnZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIGhhc0ZlYXR1cmUgPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL2ZlYXR1cmVzXCIpLmRlZmF1bHQ7XG5cbmRlc2NyaWJlKCd0cnVzdC1zaWduZWQtY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oKSB7XG5cbiAgdmFyIGRyaXZlcjtcbiAgdmFyIGxvZztcbiAgYmVmb3JlRWFjaChmdW5jdGlvbigpIHtcbiAgICBsb2cgPSBtdXRlQ29uc29sZUxvZygpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCByZWplY3QgdW5rbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKU1xuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiBcIkVOQ1JZUFRJT05fT05cIixcbiAgICAgIHRydXN0OiBcIlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNcIixcbiAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtcInRlc3QvcmVzb3VyY2VzL3JhbmRvbS5jZXJ0aWZpY2F0ZVwiXVxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLmNhdGNoKCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIGV4cGVjdCggZXJyLm1lc3NhZ2UgKS50b0NvbnRhaW4oIFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB0cnVzdGVkXCIgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQga25vd24gY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogXCJFTkNSWVBUSU9OX09OXCIsXG4gICAgICB0cnVzdDogXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXCJidWlsZC9uZW80ai9jZXJ0aWZpY2F0ZXMvbmVvNGouY2VydFwiXVxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLnRoZW4oIGRvbmUgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgbXVsdGlwbGUgY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNcIixcbiAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtcImJ1aWxkL25lbzRqL2NlcnRpZmljYXRlcy9uZW80ai5jZXJ0XCIsIFwiYnVpbGQvbmVvNGovY2VydGlmaWNhdGVzL25lbzRqLmNlcnRcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBkb25lICk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpe1xuICAgIGlmKCBkcml2ZXIgKSB7XG4gICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICB9XG4gICAgdW5NdXRlQ29uc29sZUxvZyhsb2cpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgndHJ1c3QtYWxsLWNlcnRpZmljYXRlcycsIGZ1bmN0aW9uICgpIHtcblxuICB2YXIgZHJpdmVyO1xuICBpdCgnc2hvdWxkIHdvcmsgd2l0aCBkZWZhdWx0IGNlcnRpZmljYXRlJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVEFDIHN1cHBvcnRcbiAgICBpZiAoIWhhc0ZlYXR1cmUoXCJ0cnVzdF9hbGxfY2VydGlmaWNhdGVzXCIpKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IFwiRU5DUllQVElPTl9PTlwiLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFU1wiXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oXCJSRVRVUk4gMVwiKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoMCkudG9OdW1iZXIoKSkudG9CZSgxKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoZHJpdmVyKSB7XG4gICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd0cnVzdC1jdXN0b20tY2Etc2lnbmVkLWNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG4gIGl0KCdzaG91bGQgcmVqZWN0IHVua25vd24gY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlNcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb20uY2VydGlmaWNhdGVcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyKSB7XG4gICAgICBleHBlY3QoIGVyci5tZXNzYWdlICkudG9Db250YWluKCBcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZFwiICk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IGtub3duIGNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1wiYnVpbGQvbmVvNGovY2VydGlmaWNhdGVzL25lbzRqLmNlcnRcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBkb25lICk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpe1xuICAgIGlmKCBkcml2ZXIgKSB7XG4gICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd0cnVzdC1zeXN0ZW0tY2Etc2lnbmVkLWNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgdW5rbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKU1xuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfU1lTVEVNX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIlxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLmNhdGNoKCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIGV4cGVjdCggZXJyLm1lc3NhZ2UgKS50b0NvbnRhaW4oIFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB0cnVzdGVkXCIgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3RydXN0LW9uLWZpcnN0LXVzZScsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG4gIHZhciBsb2c7XG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oKSB7XG4gICAgbG9nID0gbXV0ZUNvbnNvbGVMb2coKTtcbiAgfSk7XG4gIGFmdGVyRWFjaChmdW5jdGlvbigpe1xuICAgIHVuTXV0ZUNvbnNvbGVMb2cobG9nKTtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbiAgaXQoXCJzaG91bGQgY3JlYXRlIGtub3duX2hvc3RzIGZpbGUgaW5jbHVkaW5nIGZ1bGwgcGF0aCBpZiBpdCBkb2Vzbid0IGV4aXN0XCIsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgLy8gTm9uIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgIHZhciBrbm93bkhvc3RzRGlyID0gcGF0aC5qb2luKFwiYnVpbGRcIiwgXCJob3N0c1wiKTtcbiAgICB2YXIga25vd25Ib3N0c1BhdGggPSBwYXRoLmpvaW4oa25vd25Ib3N0c0RpciwgXCJrbm93bl9ob3N0c1wiKTtcbiAgICB0cnkge1xuICAgICAgZnMudW5saW5rU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gICAgfSBjYXRjaCAoXykgeyB9XG4gICAgdHJ5IHtcbiAgICAgIGZzLnJtZGlyU3luYyhrbm93bkhvc3RzRGlyKTtcbiAgICB9IGNhdGNoIChfKSB7IH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgIC8vIFRoZW4gd2UgZ2V0IHRvIGhlcmUuXG4gICAgICAvLyBBbmQgdGhlbiB0aGUga25vd25faG9zdHMgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICAgIGV4cGVjdCggZnVuY3Rpb24oKSB7IGZzLmFjY2Vzc1N5bmMoa25vd25Ib3N0c1BhdGgpIH0pLm5vdC50b1Rocm93KClcbiAgICAgIGRvbmUoKTtcbiAgICB9KS5jYXRjaCggZnVuY3Rpb24oKXtcbiAgICAgIC8vIEp1c3QgaGVyZSB0byBncmFjZWZ1bGx5IGV4aXQgdGVzdCBvbiBmYWlsdXJlIHNvIHdlIGRvbid0IGdldCB0aW1lb3V0c1xuICAgICAgLy8gd2hlbiBkb25lKCkgaXNuJ3QgY2FsbGVkLlxuICAgICAgZXhwZWN0KCAndGhpcycgKS50b0JlKCAndG8gbmV2ZXIgaGFwcGVuJyApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgaG9zdCBmaWxlIGNvbnRhaW5zIHR3byBob3N0IGR1cGxpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlMgd2l0aCBUT0ZVIHN1cHBvcnRcbiAgICBpZiggIWhhc0ZlYXR1cmUoXCJ0cnVzdF9vbl9maXJzdF91c2VcIikgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICB2YXIga25vd25Ib3N0c1BhdGggPSBcImJ1aWxkL2tub3duX2hvc3RzXCI7XG4gICAgaWYoIGZzLmV4aXN0c1N5bmMoa25vd25Ib3N0c1BhdGgpICkge1xuICAgICAgZnMudW5saW5rU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gICAgfVxuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gY3JlYXRlIHNlc3Npb24gYW5kIHRyYW5zYWN0aW9uIHRvIGZvcmNlIGNyZWF0aW9uIG9mIG5ldyBjb25uZWN0aW9uIGFuZCB3cml0aW5nIGludG8gdGhlIGtub3duSG9zdCBmaWxlXG4gICAgY29uc3Qgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG4gICAgZXhwZWN0KHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgLy8gZHVwbGljYXRlIHRoZSBzYW1lIHNlcnZlcklkIHR3aWNlXG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0ZXh0ID0gZnMucmVhZEZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCAndXRmOCcpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgdGV4dCArIHRleHQpO1xuICAgIH0sIDEwMDApO1xuXG4gICAgLy8gV2hlblxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1bihcIlJFVFVSTiB0cnVlIEFTIGFcIikudGhlbiggZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAvLyBUaGVuIHdlIGdldCB0byBoZXJlLlxuICAgICAgICBleHBlY3QoIGRhdGEucmVjb3Jkc1swXS5nZXQoJ2EnKSApLnRvQmUoIHRydWUgKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSwgMjAwMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IHByZXZpb3VzbHkgdW4tc2VlbiBob3N0cycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogXCJFTkNSWVBUSU9OX09OXCIsXG4gICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIixcbiAgICAgIGtub3duSG9zdHM6IGtub3duSG9zdHNQYXRoXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAvLyBUaGVuIHdlIGdldCB0byBoZXJlLlxuICAgICAgLy8gQW5kIHRoZW4gdGhlIGtub3duX2hvc3RzIGZpbGUgc2hvdWxkIGhhdmUgY29ycmVjdCBjb250ZW50c1xuICAgICAgZXhwZWN0KCBmcy5yZWFkRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsICd1dGY4JykgKS50b0NvbnRhaW4oIFwibG9jYWxob3N0Ojc2ODdcIiApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBkdXBsaWNhdGUgZmluZ2VycHJpbnQgZW50cmllcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cbiAgICBmcy53cml0ZUZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCAnJyk7XG5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIixcbiAgICAgIGtub3duSG9zdHM6IGtub3duSG9zdHNQYXRoXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKTtcbiAgICBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gVGhlblxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZXMgPSB7fTtcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJ3V0ZjgnKVxuICAgICAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAhISAobGluZS50cmltKCkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgaWYgKCFsaW5lc1tsaW5lXSkge1xuICAgICAgICAgICAgICBsaW5lc1tsaW5lXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lc1tsaW5lXSsrO1xuICAgICAgICAgIH0pO1xuXG4gICAgICB2YXIgZHVwbGljYXRlZExpbmVzID0gT2JqZWN0XG4gICAgICAgICAgLmtleXMobGluZXMpXG4gICAgICAgICAgLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gbGluZXNbbGluZV07XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgICAgICAgICByZXR1cm4gY291bnQgPiAxO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmxlbmd0aDtcblxuICAgICAgZXhwZWN0KCBkdXBsaWNhdGVkTGluZXMgKS50b0JlKCAwICk7XG4gICAgICBkb25lKCk7XG4gICAgfSwgMTAwMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBpZiBkYXRhYmFzZSBjZXJ0IGRvZXMgbm90IG1hdGNoIHN0b3JlZCBjZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb21fa25vd25faG9zdHNcIjtcblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogXCJFTkNSWVBUSU9OX09OXCIsXG4gICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIixcbiAgICAgIGtub3duSG9zdHM6IGtub3duSG9zdHNQYXRoXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikuY2F0Y2goIGZ1bmN0aW9uKGVycm9yKSB7XG4gICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9Db250YWluKFwiRGF0YWJhc2UgZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSBoYXMgY2hhbmdlZCwgXCIgK1xuICAgICAgICBcImFuZCBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY2VydGlmaWNhdGUgc3RvcmVkIGZvciBsb2NhbGhvc3Q6NzY4N1wiKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCl7XG4gICAgaWYoIGRyaXZlciApIHtcbiAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgIH1cbiAgfSk7XG59KTtcblxuLy8gVG8gbXV0ZSBkZXByZWNhdGlvbiBtZXNzYWdlIGluIHRlc3Qgb3V0cHV0XG5mdW5jdGlvbiBtdXRlQ29uc29sZUxvZygpIHtcbiAgY29uc3Qgb3JpZ2luYWxMb2cgPSBjb25zb2xlLmxvZztcbiAgY29uc29sZS5sb2cgPSAoKSA9PiB7fTtcbiAgcmV0dXJuIG9yaWdpbmFsTG9nO1xufVxuXG5mdW5jdGlvbiB1bk11dGVDb25zb2xlTG9nKG9yaWdpbmFsTG9nKSB7XG4gIGNvbnNvbGUubG9nID0gb3JpZ2luYWxMb2c7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IFRyYW5zYWN0aW9uRXhlY3V0b3IgZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL3RyYW5zYWN0aW9uLWV4ZWN1dG9yJztcbmltcG9ydCB7bmV3RXJyb3IsIFNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNFU1NJT05fRVhQSVJFRH0gZnJvbSAnLi4vLi4vc3JjL3YxL2Vycm9yJztcbmltcG9ydCB7aGlqYWNrTmV4dERhdGVOb3dDYWxsLCBzZXRUaW1lb3V0TW9ja30gZnJvbSAnLi90aW1lcnMtdXRpbCc7XG5cbmNvbnN0IFRSQU5TSUVOVF9FUlJPUl8xID0gJ05lby5UcmFuc2llbnRFcnJvci5UcmFuc2FjdGlvbi5EZWFkbG9ja0RldGVjdGVkJztcbmNvbnN0IFRSQU5TSUVOVF9FUlJPUl8yID0gJ05lby5UcmFuc2llbnRFcnJvci5OZXR3b3JrLkNvbW11bmljYXRpb25FcnJvcic7XG5jb25zdCBVTktOT1dOX0VSUk9SID0gJ05lby5EYXRhYmFzZUVycm9yLkdlbmVyYWwuVW5rbm93bkVycm9yJztcbmNvbnN0IE9PTV9FUlJPUiA9ICdOZW8uRGF0YWJhc2VFcnJvci5HZW5lcmFsLk91dE9mTWVtb3J5RXJyb3InO1xuXG5kZXNjcmliZSgnVHJhbnNhY3Rpb25FeGVjdXRvcicsICgpID0+IHtcblxuICBsZXQgZmFrZVNldFRpbWVvdXQ7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZmFrZVNldFRpbWVvdXQgPSBzZXRUaW1lb3V0TW9jay5pbnN0YWxsKCk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgZmFrZVNldFRpbWVvdXQudW5pbnN0YWxsKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiB0cmFuc2FjdGlvbiB3b3JrIHJldHVybnMgcHJvbWlzZSByZWplY3RlZCB3aXRoIFNFUlZJQ0VfVU5BVkFJTEFCTEUnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrUmV0dXJuc1JlamVjdGVkUHJvbWlzZShbU0VSVklDRV9VTkFWQUlMQUJMRV0sIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJ5IHdoZW4gdHJhbnNhY3Rpb24gd29yayByZXR1cm5zIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBTRVNTSU9OX0VYUElSRUQnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrUmV0dXJuc1JlamVjdGVkUHJvbWlzZShbU0VTU0lPTl9FWFBJUkVEXSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiB0cmFuc2FjdGlvbiB3b3JrIHJldHVybnMgcHJvbWlzZSByZWplY3RlZCB3aXRoIGRlYWRsb2NrIGVycm9yJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1JldHVybnNSZWplY3RlZFByb21pc2UoW1RSQU5TSUVOVF9FUlJPUl8xXSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiB0cmFuc2FjdGlvbiB3b3JrIHJldHVybnMgcHJvbWlzZSByZWplY3RlZCB3aXRoIGNvbW11bmljYXRpb24gZXJyb3InLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrUmV0dXJuc1JlamVjdGVkUHJvbWlzZShbVFJBTlNJRU5UX0VSUk9SXzJdLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgcmV0cnkgd2hlbiB0cmFuc2FjdGlvbiB3b3JrIHJldHVybnMgcHJvbWlzZSByZWplY3RlZCB3aXRoIE9PTSBlcnJvcicsIGRvbmUgPT4ge1xuICAgIHRlc3ROb1JldHJ5T25Vbmtub3duRXJyb3IoW09PTV9FUlJPUl0sIDEsIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCByZXRyeSB3aGVuIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJucyBwcm9taXNlIHJlamVjdGVkIHdpdGggdW5rbm93biBlcnJvcicsIGRvbmUgPT4ge1xuICAgIHRlc3ROb1JldHJ5T25Vbmtub3duRXJyb3IoW1VOS05PV05fRVJST1JdLCAxLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdG9wIHJldHJ5aW5nIHdoZW4gdGltZSBleHBpcmVzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigpO1xuICAgIGxldCB3b3JrSW52b2NhdGlvbkNvdW50ZXIgPSAwO1xuICAgIGNvbnN0IHJlYWxXb3JrID0gdHJhbnNhY3Rpb25Xb3JrKFtTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVNTSU9OX0VYUElSRUQsIFRSQU5TSUVOVF9FUlJPUl8xLCBUUkFOU0lFTlRfRVJST1JfMl0sIDQyKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKCksIHR4ID0+IHtcbiAgICAgIGV4cGVjdCh0eCkudG9CZURlZmluZWQoKTtcbiAgICAgIHdvcmtJbnZvY2F0aW9uQ291bnRlcisrO1xuICAgICAgaWYgKHdvcmtJbnZvY2F0aW9uQ291bnRlciA9PT0gMykge1xuICAgICAgICBoaWphY2tOZXh0RGF0ZU5vd0NhbGwoRGF0ZS5ub3coKSArIDMwMDAxKTsgLy8gbW92ZSBuZXh0IGBEYXRlLm5vdygpYCBjYWxsIGZvcndhcmQgYnkgMzAgc2Vjb25kc1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlYWxXb3JrKCk7XG4gICAgfSk7XG5cbiAgICByZXN1bHQuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KHdvcmtJbnZvY2F0aW9uQ291bnRlcikudG9FcXVhbCgzKTtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFRSQU5TSUVOVF9FUlJPUl8xKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIGdpdmVuIHRyYW5zYWN0aW9uIGNyZWF0b3IgdGhyb3dzIG9uY2UnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25DcmVhdG9yRmFpbHMoXG4gICAgICBbU0VSVklDRV9VTkFWQUlMQUJMRV0sXG4gICAgICBkb25lXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIGdpdmVuIHRyYW5zYWN0aW9uIGNyZWF0b3IgdGhyb3dzIG1hbnkgdGltZXMnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25DcmVhdG9yRmFpbHMoXG4gICAgICBbU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VTU0lPTl9FWFBJUkVELCBUUkFOU0lFTlRfRVJST1JfMiwgU0VTU0lPTl9FWFBJUkVELCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBUUkFOU0lFTlRfRVJST1JfMV0sXG4gICAgICBkb25lXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIGdpdmVuIHRyYW5zYWN0aW9uIHdvcmsgdGhyb3dzIG9uY2UnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrVGhyb3dzKFtTRVJWSUNFX1VOQVZBSUxBQkxFXSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiBnaXZlbiB0cmFuc2FjdGlvbiB3b3JrIHRocm93cyBtYW55IHRpbWVzJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1Rocm93cyhcbiAgICAgIFtTRVJWSUNFX1VOQVZBSUxBQkxFLCBUUkFOU0lFTlRfRVJST1JfMiwgVFJBTlNJRU5UX0VSUk9SXzIsIFNFU1NJT05fRVhQSVJFRF0sXG4gICAgICBkb25lXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIGdpdmVuIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJucyByZWplY3RlZCBwcm9taXNlIG1hbnkgdGltZXMnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrUmV0dXJuc1JlamVjdGVkUHJvbWlzZShcbiAgICAgIFtTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBUUkFOU0lFTlRfRVJST1JfMiwgU0VTU0lPTl9FWFBJUkVELCBUUkFOU0lFTlRfRVJST1JfMSwgU0VTU0lPTl9FWFBJUkVEXSxcbiAgICAgIGRvbmVcbiAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJ5IHdoZW4gdHJhbnNhY3Rpb24gY29tbWl0IHJldHVybnMgcmVqZWN0ZWQgcHJvbWlzZSBvbmNlJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uQ29tbWl0UmV0dXJuc1JlamVjdGVkUHJvbWlzZShbVFJBTlNJRU5UX0VSUk9SXzFdLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIHRyYW5zYWN0aW9uIGNvbW1pdCByZXR1cm5zIHJlamVjdGVkIHByb21pc2UgbXVsdGlwbGUgdGltZXMnLCBkb25lID0+IHtcbiAgICB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Db21taXRSZXR1cm5zUmVqZWN0ZWRQcm9taXNlKFxuICAgICAgW1RSQU5TSUVOVF9FUlJPUl8xLCBUUkFOU0lFTlRfRVJST1JfMSwgU0VTU0lPTl9FWFBJUkVELCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBUUkFOU0lFTlRfRVJST1JfMl0sXG4gICAgICBkb25lXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB1bnRpbCBkYXRhYmFzZSBlcnJvciBoYXBwZW5zJywgZG9uZSA9PiB7XG4gICAgdGVzdE5vUmV0cnlPblVua25vd25FcnJvcihcbiAgICAgIFtTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBUUkFOU0lFTlRfRVJST1JfMiwgU0VTU0lPTl9FWFBJUkVELCBVTktOT1dOX0VSUk9SLCBTRVNTSU9OX0VYUElSRURdLFxuICAgICAgNSxcbiAgICAgIGRvbmVcbiAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNhbmNlbCBpbi1mbGlnaHQgdGltZW91dHMgd2hlbiBjbG9zZWQnLCBkb25lID0+IHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKCk7XG4gICAgLy8gZG8gbm90IGV4ZWN1dGUgc2V0VGltZW91dCBjYWxsYmFja3NcbiAgICBmYWtlU2V0VGltZW91dC5wYXVzZSgpO1xuXG4gICAgZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IoW1NFUlZJQ0VfVU5BVkFJTEFCTEVdKSwgKCkgPT4gUHJvbWlzZS5yZXNvbHZlKDQyKSk7XG4gICAgZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IoW1RSQU5TSUVOVF9FUlJPUl8xXSksICgpID0+IFByb21pc2UucmVzb2x2ZSg0MjQyKSk7XG4gICAgZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IoW1NFU1NJT05fRVhQSVJFRF0pLCAoKSA9PiBQcm9taXNlLnJlc29sdmUoNDI0MjQyKSk7XG5cbiAgICBmYWtlU2V0VGltZW91dC5zZXRUaW1lb3V0T3JpZ2luYWwoKCkgPT4ge1xuICAgICAgZXhlY3V0b3IuY2xvc2UoKTtcbiAgICAgIGV4cGVjdChmYWtlU2V0VGltZW91dC5jbGVhcmVkVGltZW91dHMubGVuZ3RoKS50b0VxdWFsKDMpO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDEwMDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IHplcm8gbWF4IHJldHJ5IHRpbWUnLCAoKSA9PiB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigwKTtcbiAgICBleHBlY3QoZXhlY3V0b3IuX21heFJldHJ5VGltZU1zKS50b0VxdWFsKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IHplcm8gaW5pdGlhbCBkZWxheScsICgpID0+IHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKDQyLCAwKTtcbiAgICBleHBlY3QoZXhlY3V0b3IuX2luaXRpYWxSZXRyeURlbGF5TXMpLnRvRXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGlzYWxsb3cgemVybyBtdWx0aXBsaWVyJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcig0MiwgNDIsIDApKS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgemVybyBqaXR0ZXIgZmFjdG9yJywgKCkgPT4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IoNDIsIDQyLCA0MiwgMCk7XG4gICAgZXhwZWN0KGV4ZWN1dG9yLl9qaXR0ZXJGYWN0b3IpLnRvRXF1YWwoMCk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHRlc3RSZXRyeVdoZW5UcmFuc2FjdGlvbkNyZWF0b3JGYWlscyhlcnJvckNvZGVzLCBkb25lKSB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uQ3JlYXRvciA9IHRocm93aW5nVHJhbnNhY3Rpb25DcmVhdG9yKGVycm9yQ29kZXMsIG5ldyBGYWtlVHJhbnNhY3Rpb24oKSk7XG4gICAgbGV0IHdvcmtJbnZvY2F0aW9uQ291bnRlciA9IDA7XG5cbiAgICBjb25zdCByZXN1bHQgPSBleGVjdXRvci5leGVjdXRlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHggPT4ge1xuICAgICAgZXhwZWN0KHR4KS50b0JlRGVmaW5lZCgpO1xuICAgICAgd29ya0ludm9jYXRpb25Db3VudGVyKys7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDQyKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC50aGVuKHZhbHVlID0+IHtcbiAgICAgIGV4cGVjdCh3b3JrSW52b2NhdGlvbkNvdW50ZXIpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QodmFsdWUpLnRvRXF1YWwoNDIpO1xuICAgICAgdmVyaWZ5UmV0cnlEZWxheXMoZmFrZVNldFRpbWVvdXQsIGVycm9yQ29kZXMubGVuZ3RoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3RSZXRyeVdoZW5UcmFuc2FjdGlvbldvcmtSZXR1cm5zUmVqZWN0ZWRQcm9taXNlKGVycm9yQ29kZXMsIGRvbmUpIHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKCk7XG4gICAgbGV0IHdvcmtJbnZvY2F0aW9uQ291bnRlciA9IDA7XG4gICAgY29uc3QgcmVhbFdvcmsgPSB0cmFuc2FjdGlvbldvcmsoZXJyb3JDb2RlcywgNDIpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IoKSwgdHggPT4ge1xuICAgICAgZXhwZWN0KHR4KS50b0JlRGVmaW5lZCgpO1xuICAgICAgd29ya0ludm9jYXRpb25Db3VudGVyKys7XG4gICAgICByZXR1cm4gcmVhbFdvcmsoKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC50aGVuKHZhbHVlID0+IHtcbiAgICAgIC8vIHdvcmsgc2hvdWxkIGhhdmUgZmFpbGVkICdmYWlsdXJlcy5sZW5ndGgnIHRpbWVzIGFuZCBzdWNjZWVkZWQgMSB0aW1lXG4gICAgICBleHBlY3Qod29ya0ludm9jYXRpb25Db3VudGVyKS50b0VxdWFsKGVycm9yQ29kZXMubGVuZ3RoICsgMSk7XG4gICAgICBleHBlY3QodmFsdWUpLnRvRXF1YWwoNDIpO1xuICAgICAgdmVyaWZ5UmV0cnlEZWxheXMoZmFrZVNldFRpbWVvdXQsIGVycm9yQ29kZXMubGVuZ3RoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3RSZXRyeVdoZW5UcmFuc2FjdGlvbkNvbW1pdFJldHVybnNSZWplY3RlZFByb21pc2UoZXJyb3JDb2RlcywgZG9uZSkge1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IoKTtcbiAgICBsZXQgd29ya0ludm9jYXRpb25Db3VudGVyID0gMDtcbiAgICBjb25zdCByZWFsV29yayA9ICgpID0+IFByb21pc2UucmVzb2x2ZSg0MjQyKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKGVycm9yQ29kZXMpLCB0eCA9PiB7XG4gICAgICBleHBlY3QodHgpLnRvQmVEZWZpbmVkKCk7XG4gICAgICB3b3JrSW52b2NhdGlvbkNvdW50ZXIrKztcbiAgICAgIHJldHVybiByZWFsV29yaygpO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0LnRoZW4odmFsdWUgPT4ge1xuICAgICAgLy8gd29yayBzaG91bGQgaGF2ZSBmYWlsZWQgJ2ZhaWx1cmVzLmxlbmd0aCcgdGltZXMgYW5kIHN1Y2NlZWRlZCAxIHRpbWVcbiAgICAgIGV4cGVjdCh3b3JrSW52b2NhdGlvbkNvdW50ZXIpLnRvRXF1YWwoZXJyb3JDb2Rlcy5sZW5ndGggKyAxKTtcbiAgICAgIGV4cGVjdCh2YWx1ZSkudG9FcXVhbCg0MjQyKTtcbiAgICAgIHZlcmlmeVJldHJ5RGVsYXlzKGZha2VTZXRUaW1lb3V0LCBlcnJvckNvZGVzLmxlbmd0aCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrVGhyb3dzKGVycm9yQ29kZXMsIGRvbmUpIHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKCk7XG4gICAgbGV0IHdvcmtJbnZvY2F0aW9uQ291bnRlciA9IDA7XG4gICAgY29uc3QgcmVhbFdvcmsgPSB0aHJvd2luZ1RyYW5zYWN0aW9uV29yayhlcnJvckNvZGVzLCA0Mik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBleGVjdXRvci5leGVjdXRlKHRyYW5zYWN0aW9uQ3JlYXRvcigpLCB0eCA9PiB7XG4gICAgICBleHBlY3QodHgpLnRvQmVEZWZpbmVkKCk7XG4gICAgICB3b3JrSW52b2NhdGlvbkNvdW50ZXIrKztcbiAgICAgIHJldHVybiByZWFsV29yaygpO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0LnRoZW4odmFsdWUgPT4ge1xuICAgICAgLy8gd29yayBzaG91bGQgaGF2ZSBmYWlsZWQgJ2ZhaWx1cmVzLmxlbmd0aCcgdGltZXMgYW5kIHN1Y2NlZWRlZCAxIHRpbWVcbiAgICAgIGV4cGVjdCh3b3JrSW52b2NhdGlvbkNvdW50ZXIpLnRvRXF1YWwoZXJyb3JDb2Rlcy5sZW5ndGggKyAxKTtcbiAgICAgIGV4cGVjdCh2YWx1ZSkudG9FcXVhbCg0Mik7XG4gICAgICB2ZXJpZnlSZXRyeURlbGF5cyhmYWtlU2V0VGltZW91dCwgZXJyb3JDb2Rlcy5sZW5ndGgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdGVzdE5vUmV0cnlPblVua25vd25FcnJvcihlcnJvckNvZGVzLCBleHBlY3RlZFdvcmtJbnZvY2F0aW9uQ291bnQsIGRvbmUpIHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKCk7XG4gICAgbGV0IHdvcmtJbnZvY2F0aW9uQ291bnRlciA9IDA7XG4gICAgY29uc3QgcmVhbFdvcmsgPSB0cmFuc2FjdGlvbldvcmsoZXJyb3JDb2RlcywgNDIpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IoKSwgdHggPT4ge1xuICAgICAgZXhwZWN0KHR4KS50b0JlRGVmaW5lZCgpO1xuICAgICAgd29ya0ludm9jYXRpb25Db3VudGVyKys7XG4gICAgICByZXR1cm4gcmVhbFdvcmsoKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3Qod29ya0ludm9jYXRpb25Db3VudGVyKS50b0VxdWFsKGV4cGVjdGVkV29ya0ludm9jYXRpb25Db3VudCk7XG4gICAgICBpZiAoZXJyb3JDb2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoZXJyb3JDb2Rlc1swXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChlcnJvckNvZGVzW2V4cGVjdGVkV29ya0ludm9jYXRpb25Db3VudCAtIDFdKTtcbiAgICAgIH1cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfVxuXG59KTtcblxuZnVuY3Rpb24gdHJhbnNhY3Rpb25DcmVhdG9yKGNvbW1pdEVycm9yQ29kZXMpIHtcbiAgY29uc3QgcmVtYWluaW5nRXJyb3JDb2RlcyA9IChjb21taXRFcnJvckNvZGVzIHx8IFtdKS5zbGljZSgpLnJldmVyc2UoKTtcbiAgcmV0dXJuICgpID0+IG5ldyBGYWtlVHJhbnNhY3Rpb24ocmVtYWluaW5nRXJyb3JDb2Rlcy5wb3AoKSk7XG59XG5cbmZ1bmN0aW9uIHRocm93aW5nVHJhbnNhY3Rpb25DcmVhdG9yKGVycm9yQ29kZXMsIHJlc3VsdCkge1xuICBjb25zdCByZW1haW5pbmdFcnJvckNvZGVzID0gZXJyb3JDb2Rlcy5zbGljZSgpLnJldmVyc2UoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAocmVtYWluaW5nRXJyb3JDb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yQ29kZSA9IHJlbWFpbmluZ0Vycm9yQ29kZXMucG9wKCk7XG4gICAgdGhyb3cgZXJyb3IoZXJyb3JDb2RlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGhyb3dpbmdUcmFuc2FjdGlvbldvcmsoZXJyb3JDb2RlcywgcmVzdWx0KSB7XG4gIGNvbnN0IHJlbWFpbmluZ0Vycm9yQ29kZXMgPSBlcnJvckNvZGVzLnNsaWNlKCkucmV2ZXJzZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmIChyZW1haW5pbmdFcnJvckNvZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgIH1cbiAgICBjb25zdCBlcnJvckNvZGUgPSByZW1haW5pbmdFcnJvckNvZGVzLnBvcCgpO1xuICAgIHRocm93IGVycm9yKGVycm9yQ29kZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRyYW5zYWN0aW9uV29yayhlcnJvckNvZGVzLCByZXN1bHQpIHtcbiAgY29uc3QgcmVtYWluaW5nRXJyb3JDb2RlcyA9IGVycm9yQ29kZXMuc2xpY2UoKS5yZXZlcnNlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKHJlbWFpbmluZ0Vycm9yQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yQ29kZSA9IHJlbWFpbmluZ0Vycm9yQ29kZXMucG9wKCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKGVycm9yQ29kZSkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBlcnJvcihjb2RlKSB7XG4gIHJldHVybiBuZXdFcnJvcignJywgY29kZSk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVJldHJ5RGVsYXlzKGZha2VTZXRUaW1lb3V0LCBleHBlY3RlZEludm9jYXRpb25Db3VudCkge1xuICBjb25zdCBkZWxheXMgPSBmYWtlU2V0VGltZW91dC5pbnZvY2F0aW9uRGVsYXlzO1xuICBleHBlY3QoZGVsYXlzLmxlbmd0aCkudG9FcXVhbChleHBlY3RlZEludm9jYXRpb25Db3VudCk7XG4gIGRlbGF5cy5mb3JFYWNoKChkZWxheSwgaW5kZXgpID0+IHtcbiAgICAvLyBkZWxheXMgbWFrZSBhIGdlb21ldHJpYyBwcm9ncmVzc2lvbiB3aXRoIGZpc3QgZWxlbWVudCAxMDAwIGFuZCBtdWx0aXBsaWVyIDIuMFxuICAgIC8vIHNvIGV4cGVjdGVkIGRlbGF5IGNhbiBiZSBjYWxjdWxhdGVkIGFzIG4tdGggZWxlbWVudDogYGZpcnN0RWxlbWVudCAqIHBvdyhtdWx0aXBsaWVyLCBuIC0gMSlgXG4gICAgY29uc3QgZXhwZWN0ZWREZWxheVdpdGhvdXRKaXR0ZXIgPSAxMDAwICogTWF0aC5wb3coMi4wLCBpbmRleCk7XG4gICAgY29uc3Qgaml0dGVyID0gZXhwZWN0ZWREZWxheVdpdGhvdXRKaXR0ZXIgKiAwLjI7XG4gICAgY29uc3QgbWluID0gZXhwZWN0ZWREZWxheVdpdGhvdXRKaXR0ZXIgLSBqaXR0ZXI7XG4gICAgY29uc3QgbWF4ID0gZXhwZWN0ZWREZWxheVdpdGhvdXRKaXR0ZXIgKyBqaXR0ZXI7XG5cbiAgICBleHBlY3QoZGVsYXkgPj0gbWluKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGRlbGF5IDw9IG1heCkudG9CZVRydXRoeSgpO1xuICB9KTtcbn1cblxuY2xhc3MgRmFrZVRyYW5zYWN0aW9uIHtcblxuICBjb25zdHJ1Y3Rvcihjb21taXRFcnJvckNvZGUpIHtcbiAgICB0aGlzLl9jb21taXRFcnJvckNvZGUgPSBjb21taXRFcnJvckNvZGU7XG4gIH1cblxuICBpc09wZW4oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb21taXQoKSB7XG4gICAgaWYgKHRoaXMuX2NvbW1pdEVycm9yQ29kZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKHRoaXMuX2NvbW1pdEVycm9yQ29kZSkpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuIFxudmFyIHV0ZjggPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvdXRmOCcpLmRlZmF1bHQ7XG52YXIgYnVmZmVycyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKTtcblxuZGVzY3JpYmUoJ3V0ZjgnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBoYXZlIGEgbmljZSBjbGVhbiBidWZmZXIgcG9zaXRpb24gYWZ0ZXIgc2VyaWFsaXppbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGJ1ZmZlci5wb3NpdGlvbiApLnRvQmUoIDAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHBvc2l0aW9uIG9mIHNpbmdsZSBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcbiAgICBidWZmZXIucmVhZEludDgoKTtcbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCAtIDEpO1xuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlY29kZWQgKS50b0JlKCBcImVsbG8sIHdvcmxkIVwiICk7XG4gICAgZXhwZWN0KGJ1ZmZlci5wb3NpdGlvbikudG9FcXVhbCgxMylcbiAgfSk7XG5cblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIHN1YnN0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFdoZW5cbiAgICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoXCJoZWxsbywgd29ybGQhXCIpO1xuICAgIGJ1ZmZlci5yZWFkSW50OCgpO1xuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoYnVmZmVyLCAzKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZWNvZGVkICkudG9CZSggXCJlbGxcIiApO1xuICAgIGV4cGVjdChidWZmZXIucG9zaXRpb24pLnRvRXF1YWwoNClcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkL3dyaXRlIHV0ZjgnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiXCIgKSApLnRvQmUoIFwiXCIgKTtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiw6XDpMO2MTIzXCIgKSApLnRvQmUoIFwiw6XDpMO2MTIzXCIgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIHV0ZjggZnJvbSBhIGNvbXBsZXRlIGNvbWJpbmVkIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYXPDpWZxd2VyXCI7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYyA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCBidWZjXSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUobXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgdXRmOCBmcm9tIHBhcnQgb2YgYSBjb21iaW5lZCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFzw6VmcVwiO1xuICAgIHZhciBleHBlY3RNc2cgPSBtc2cuc3Vic3RyaW5nKDAsIG1zZy5sZW5ndGgtMSk7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgdW5yZWxhdGVkRGF0YSA9IGJ1ZmZlcnMuYWxsb2MoMyk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCB1bnJlbGF0ZWREYXRhXSApO1xuXG4gICAgLy8gV2hlbiBcbiAgICAvLyBXZSByZWFkIGFsbCBidXQgdGhlIHVucmVsYXRlZERhdGEgYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBidWZiXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgY29tYmluZWQubGVuZ3RoIC0gMSAtIHVucmVsYXRlZERhdGEubGVuZ3RoICk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoZXhwZWN0TXNnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXNwZWN0IHRoZSBwb3NpdGlvbiBpbiB0aGUgY29tYmluZWQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiXSApO1xuICAgIC8vbW92ZSBwb3NpdGlvbiBmb3J3YXJkXG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCAtIDIpO1xuXG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvRXF1YWwoXCJjZGVmZ2hcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDgpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCBidWZmZXIgYWNyb3NzIGJ1ZmZlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFiY2RlZmdoaWprbFwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmMgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgYnVmY10gKTtcbiAgICAvL21vdmUgcG9zaXRpb24gZm9yd2FyZFxuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCA0KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGVjb2RlZCkudG9CZShcImZnaGlcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDkpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWNvZGUgYSBzdWJzdHJpbmcgaW4gYSBjb21iaW5lZCB3aXRoaW4gYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaGlqa2xcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZjID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgY29tYmluZWQgPSBuZXcgYnVmZmVycy5Db21iaW5lZEJ1ZmZlciggW2J1ZmEsIGJ1ZmIsIGJ1ZmNdICk7XG4gICAgLy9tb3ZlIHBvc2l0aW9uIGZvcndhcmRcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgMik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoXCJmZ1wiKTtcbiAgICBleHBlY3QoY29tYmluZWQucG9zaXRpb24pLnRvQmUoNylcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcGFja0FuZFVucGFjayggc3RyICkge1xuICB2YXIgYnVmZmVyID0gdXRmOC5lbmNvZGUoIHN0ciApO1xuICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgYnVmZmVyLmxlbmd0aCApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvdXRpbC5qcycpO1xuXG5kZXNjcmliZSgndXRpbCcsICgpID0+IHtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGVtcHR5IG9iamVjdHMnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbChudWxsKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwoe30pKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbChbXSkpLnRvQmVUcnV0aHkoKTtcblxuICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gNDI7XG4gICAgfTtcbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKGZ1bmMpKS50b0JlVHJ1dGh5KCk7XG4gICAgZnVuYy5mb28gPSAnYmFyJztcbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKGZ1bmMpKS50b0JlRmFsc3koKTtcblxuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwoKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbCh1bmRlZmluZWQpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKDApKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKCcnKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbCgnYWJjJykpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwoe2ZvbzogJ2Jhcid9KSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgc3RyaW5ncycsICgpID0+IHtcbiAgICB2ZXJpZnlWYWxpZFN0cmluZygnJyk7XG4gICAgdmVyaWZ5VmFsaWRTdHJpbmcobmV3IFN0cmluZygnZm9vJykpO1xuICAgIHZlcmlmeVZhbGlkU3RyaW5nKFN0cmluZygnZm9vJykpO1xuICAgIHZlcmlmeVZhbGlkU3RyaW5nKFwiaGkhXCIpO1xuXG4gICAgdmVyaWZ5SW52YWxpZFN0cmluZyh7fSk7XG4gICAgdmVyaWZ5SW52YWxpZFN0cmluZyh7Zm9vOiAxfSk7XG4gICAgdmVyaWZ5SW52YWxpZFN0cmluZyhbXSk7XG4gICAgdmVyaWZ5SW52YWxpZFN0cmluZyhbJzEnXSk7XG4gICAgdmVyaWZ5SW52YWxpZFN0cmluZyhbMSwgJzInXSk7XG4gICAgdmVyaWZ5SW52YWxpZFN0cmluZyhjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHZlcmlmeVZhbGlkU3RyaW5nKHN0cikge1xuICAgIGV4cGVjdCh1dGlsLmFzc2VydFN0cmluZyhzdHIsICdUZXN0IHN0cmluZycpKS50b0JlKHN0cik7XG4gIH1cblxuICBmdW5jdGlvbiB2ZXJpZnlJbnZhbGlkU3RyaW5nKHN0cikge1xuICAgIGV4cGVjdCgoKSA9PiB1dGlsLmFzc2VydFN0cmluZyhzdHIsICdUZXN0IHN0cmluZycpKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgfVxuXG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgnZHJpdmVyJywgZnVuY3Rpb24oKSB7XG4gIHZhciBkcml2ZXI7XG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oKSB7XG4gICAgZHJpdmVyID0gbnVsbDtcbiAgfSlcbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCkge1xuICAgIGlmKGRyaXZlcikge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KVxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXNzaW9ucycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggc2Vzc2lvbiApLm5vdC50b0JlTnVsbCgpO1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBjb25uZWN0aW9uIGVycm9ycycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RlXCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcblxuICAgIC8vIEV4cGVjdFxuICAgIGRyaXZlci5vbkVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgLy90aGUgZXJyb3IgbWVzc2FnZSBpcyBkaWZmZXJlbnQgd2hldGhlciBpbiBicm93c2VyIG9yIG5vZGVcbiAgICAgIGV4cGVjdChlcnIubWVzc2FnZSkubm90LnRvQmVOdWxsKCk7XG4gICAgICBkb25lKCk7XG4gICAgfTtcblxuICAgIC8vIFdoZW5cbiAgICBzdGFydE5ld1RyYW5zYWN0aW9uKGRyaXZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIHdyb25nIHNjaGVtZScsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmVvNGouZHJpdmVyKFwidGFuazovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSkpXG4gICAgICAudG9UaHJvdyhuZXcgRXJyb3IoXCJVbmtub3duIHNjaGVtZTogdGFuazovL1wiKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIFVSTCBwYXJhbWV0ZXIgc3RyaW5nJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiBuZW80ai5kcml2ZXIoe3VyaTogJ2JvbHQ6Ly9sb2NhbGhvc3QnfSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuXG4gICAgZXhwZWN0KCgpID0+IG5lbzRqLmRyaXZlcihbJ2JvbHQ6bG9jYWxob3N0J10pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcblxuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkcml2ZXIgPSBuZW80ai5kcml2ZXIoU3RyaW5nKCdib2x0Oi8vbG9jYWxob3N0JywgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpKTtcbiAgICAgIHJldHVybiBkcml2ZXIuc2Vzc2lvbigpO1xuICAgIH0pLnRvQmVEZWZpbmVkKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBlYXJseSBvbiB3cm9uZyBjcmVkZW50aWFscycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwid2hvIHdvdWxkIHVzZSBzdWNoIGEgcGFzc3dvcmRcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAvL3RoZSBlcnJvciBtZXNzYWdlIGlzIGRpZmZlcmVudCB3aGV0aGVyIGluIGJyb3dzZXIgb3Igbm9kZVxuICAgICAgZXhwZWN0KGVyci5jb2RlKS50b0VxdWFsKCdOZW8uQ2xpZW50RXJyb3IuU2VjdXJpdHkuVW5hdXRob3JpemVkJyk7XG4gICAgICBkb25lKCk7XG4gICAgfTtcblxuICAgIC8vIFdoZW5cbiAgICBzdGFydE5ld1RyYW5zYWN0aW9uKGRyaXZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaW5kaWNhdGUgc3VjY2VzcyBlYXJseSBvbiBjb3JyZWN0IGNyZWRlbnRpYWxzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG5cbiAgICAvLyBFeHBlY3RcbiAgICBkcml2ZXIub25Db21wbGV0ZWQgPSBmdW5jdGlvbiAobWV0YSkge1xuICAgICAgZG9uZSgpO1xuICAgIH07XG5cbiAgICAvLyBXaGVuXG4gICAgc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHBhc3MgYSByZWFsbSB3aXRoIGJhc2ljIGF1dGggdG9rZW5zJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiLCBcIm5hdGl2ZVwiKSk7XG5cbiAgICAvLyBFeHBlY3RcbiAgICBkcml2ZXIub25Db21wbGV0ZWQgPSBmdW5jdGlvbiAobWV0YSkge1xuICAgICAgZG9uZSgpO1xuICAgIH07XG5cbiAgICAvLyBXaGVuXG4gICAgc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBjdXN0b20gYXV0aCB0b2tlbnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguY3VzdG9tKFwibmVvNGpcIiwgXCJuZW80alwiLCBcIm5hdGl2ZVwiLCBcImJhc2ljXCIpKTtcblxuICAgIC8vIEV4cGVjdFxuICAgIGRyaXZlci5vbkNvbXBsZXRlZCA9IGZ1bmN0aW9uIChtZXRhKSB7XG4gICAgICBkb25lKCk7XG4gICAgfTtcblxuICAgIC8vIFdoZW5cbiAgICBzdGFydE5ld1RyYW5zYWN0aW9uKGRyaXZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgcG9zc2libGUgdG8gY3JlYXRlIGN1c3RvbSBhdXRoIHRva2VucyB3aXRoIGFkZGl0aW9uYWwgcGFyYW1ldGVycycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5jdXN0b20oXCJuZW80alwiLCBcIm5lbzRqXCIsIFwibmF0aXZlXCIsIFwiYmFzaWNcIiwge3NlY3JldDogNDJ9KSk7XG5cbiAgICAvLyBFeHBlY3RcbiAgICBkcml2ZXIub25Db21wbGV0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBkb25lKCk7XG4gICAgfTtcblxuICAgIC8vIFdoZW5cbiAgICBzdGFydE5ld1RyYW5zYWN0aW9uKGRyaXZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBuaWNlbHkgd2hlbiBjb25uZWN0aW5nIHdpdGggcm91dGluZyB0byBzdGFuZGFsb25lIHNlcnZlcicsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdCtyb3V0aW5nOi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcblxuICAgIC8vIEV4cGVjdFxuICAgIGRyaXZlci5vbkVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvRXF1YWwoJ1NlcnZlciBsb2NhbGhvc3QgY291bGQgbm90IHBlcmZvcm0gcm91dGluZy4gTWFrZSBzdXJlIHlvdSBhcmUgY29ubmVjdGluZyB0byBhIGNhdXNhbCBjbHVzdGVyJyk7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChuZW80ai5lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIHN0YXJ0TmV3VHJhbnNhY3Rpb24oZHJpdmVyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYXZlIGNvcnJlY3QgdXNlciBhZ2VudCcsICgpID0+IHtcbiAgICBjb25zdCBkaXJlY3REcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIpO1xuICAgIGV4cGVjdChkaXJlY3REcml2ZXIuX3VzZXJBZ2VudCkudG9CZShcIm5lbzRqLWphdmFzY3JpcHQvMC4wLjAtZGV2XCIpO1xuICAgIGRpcmVjdERyaXZlci5jbG9zZSgpO1xuXG4gICAgY29uc3Qgcm91dGluZ0RyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQrcm91dGluZzovL2xvY2FsaG9zdFwiKTtcbiAgICBleHBlY3Qocm91dGluZ0RyaXZlci5fdXNlckFnZW50KS50b0JlKFwibmVvNGotamF2YXNjcmlwdC8wLjAuMC1kZXZcIik7XG4gICAgcm91dGluZ0RyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgdXNlZCB3aXRoIHJvdXRpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgY3JlYXRlUm91dGluZ0RyaXZlcldpdGhUT0ZVID0gKCkgPT4ge1xuICAgICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKCdib2x0K3JvdXRpbmc6Ly9sb2NhbGhvc3QnLCBuZW80ai5hdXRoLmJhc2ljKCduZW80aicsICduZW80aicpLCB7XG4gICAgICAgIGVuY3J5cHRlZDogXCJFTkNSWVBUSU9OX09OXCIsXG4gICAgICAgICAgdHJ1c3Q6ICdUUlVTVF9PTl9GSVJTVF9VU0UnXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZXhwZWN0KGNyZWF0ZVJvdXRpbmdEcml2ZXJXaXRoVE9GVSkudG9UaHJvdygpO1xuICB9KTtcblxuICB2YXIgZXhwb3NlZFR5cGVzID0gW1xuICAgICdOb2RlJyxcbiAgICAnUGF0aCcsXG4gICAgJ1BhdGhTZWdtZW50JyxcbiAgICAnUmVjb3JkJyxcbiAgICAnUmVsYXRpb25zaGlwJyxcbiAgICAnUmVzdWx0JyxcbiAgICAnUmVzdWx0U3VtbWFyeScsXG4gICAgJ1VuYm91bmRSZWxhdGlvbnNoaXAnLFxuICBdO1xuXG4gIGV4cG9zZWRUeXBlcy5mb3JFYWNoKHR5cGUgPT4ge1xuICAgIGl0KGBzaG91bGQgZXhwb3NlIHR5cGUgJHt0eXBlfWAsIGZ1bmN0aW9uKCkge1xuICAgICAgZXhwZWN0KHVuZGVmaW5lZCA9PT0gbmVvNGoudHlwZXNbdHlwZV0pLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogU3RhcnRzIG5ldyB0cmFuc2FjdGlvbiB0byBmb3JjZSBuZXcgbmV0d29yayBjb25uZWN0aW9uLlxuICAgKiBAcGFyYW0ge0RyaXZlcn0gZHJpdmVyIC0gdGhlIGRyaXZlciB0byB1c2UuXG4gICAqL1xuICBmdW5jdGlvbiBzdGFydE5ld1RyYW5zYWN0aW9uKGRyaXZlcikge1xuICAgIGNvbnN0IHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuICAgIGV4cGVjdChzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKSkudG9CZURlZmluZWQoKTtcbiAgfVxuXG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgdjEgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEnKTtcbnZhciBpbnQgPSB2MS5pbnQ7XG52YXIgaW50ZWdlciA9IHYxLmludGVnZXI7XG5cbmRlc2NyaWJlKCdQb29sJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdleHBvc2VzIGluU2FmZVJhbmdlIGZ1bmN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGV4cGVjdChpbnRlZ2VyLmluU2FmZVJhbmdlKGludChcIjkwMDcxOTkyNTQ3NDA5OTFcIikpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGludGVnZXIuaW5TYWZlUmFuZ2UoaW50KFwiOTAwNzE5OTI1NDc0MDk5MlwiKSkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChpbnRlZ2VyLmluU2FmZVJhbmdlKGludChcIi05MDA3MTk5MjU0NzQwOTkxXCIpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChpbnRlZ2VyLmluU2FmZVJhbmdlKGludChcIi05MDA3MTk5MjU0NzQwOTkyXCIpKSkudG9CZUZhbHN5KCk7XG4gIH0pO1xuXG4gIGl0KCdleHBvc2VzIHRvTnVtYmVyIGZ1bmN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGV4cGVjdChpbnRlZ2VyLnRvTnVtYmVyKGludChcIjkwMDcxOTkyNTQ3NDA5OTFcIikpKS50b0VxdWFsKDkwMDcxOTkyNTQ3NDA5OTEpO1xuICAgIGV4cGVjdChpbnRlZ2VyLnRvTnVtYmVyKGludChcIi05MDA3MTk5MjU0NzQwOTkxXCIpKSkudG9FcXVhbCgtOTAwNzE5OTI1NDc0MDk5MSk7XG4gIH0pO1xuXG4gIGl0KCdleHBvc2VzIHRvU3RyaW5nIGZ1bmN0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGV4cGVjdChpbnRlZ2VyLnRvU3RyaW5nKGludChcIjkwMDcxOTkyNTQ3NDA5OTFcIikpKS50b0VxdWFsKFwiOTAwNzE5OTI1NDc0MDk5MVwiKTtcbiAgICBleHBlY3QoaW50ZWdlci50b1N0cmluZyhpbnQoXCI5MDA3MTk5MjU0NzQwOTkyXCIpKSkudG9FcXVhbChcIjkwMDcxOTkyNTQ3NDA5OTJcIik7XG4gICAgZXhwZWN0KGludGVnZXIudG9TdHJpbmcoaW50KFwiLTkwMDcxOTkyNTQ3NDA5OTFcIikpKS50b0VxdWFsKFwiLTkwMDcxOTkyNTQ3NDA5OTFcIik7XG4gICAgZXhwZWN0KGludGVnZXIudG9TdHJpbmcoaW50KFwiLTkwMDcxOTkyNTQ3NDA5OTJcIikpKS50b0VxdWFsKFwiLTkwMDcxOTkyNTQ3NDA5OTJcIik7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgb3MgPSByZXF1aXJlKCdvcycpO1xudmFyIE5vZGVDaGFubmVsID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NoLW5vZGUnKS5kZWZhdWx0O1xuXG5kZXNjcmliZSgnUGFja2FnZScsIGZ1bmN0aW9uKCkge1xuICB2YXIgZHJpdmVyR2xvYmFsID0ge2Nsb3NlOiBmdW5jdGlvbigpIHt9fTtcbiAgYWZ0ZXJBbGwoZnVuY3Rpb24oKSB7XG4gICAgZHJpdmVyR2xvYmFsLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgd29yaycsIGZ1bmN0aW9uKGRvbmUpe1xuICAgIHZhciBuZW80alJlcTtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTXG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIG5lbzRqUmVxID0gcmVxdWlyZShwYXRoLmpvaW4ob3MudG1wZGlyKCksICdzYW5kYm94JywgJ25vZGVfbW9kdWxlcycsICduZW80ai1kcml2ZXInLCAnbGliJykpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgZG9uZS5mYWlsKCdDb3VsZCBub3QgbG9hZCBzYW5kYm94IHBhY2thZ2UnKVxuICAgIH1cblxuICAgIGRyaXZlckdsb2JhbCA9IG5lbzRqUmVxLnYxLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGpSZXEudjEuYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyR2xvYmFsLnNlc3Npb24oKTtcbiAgICBzZXNzaW9uLnJ1bignUkVUVVJOIDEgQVMgYW5zd2VyJykudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhbnN3ZXInKS50b051bWJlcigpKS50b0JlKDEpO1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgZG9uZS5mYWlsKFwiRXJyb3IgaW4gdGVzdFwiKVxuICAgIH0pXG4gIH0pXG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUmVjb3JkID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9yZWNvcmRcIikuZGVmYXVsdDtcbnZhciBOZW80akVycm9yID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9lcnJvclwiKS5OZW80akVycm9yO1xuXG5cbmRlc2NyaWJlKCdSZWNvcmQnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBnZXR0aW5nIGZpZWxkcyBieSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuZ2V0KFwibmFtZVwiKSkudG9FcXVhbChcIkJvYlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBjaGVja2luZyBpZiBmaWVsZHMgZXhpc3QnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KHJlY29yZC5oYXMoXCJuYW1lXCIpKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChyZWNvcmQuaGFzKFwiaW52YWxpZCBrZXlcIikpLnRvRXF1YWwoZmFsc2UpO1xuICAgIGV4cGVjdChyZWNvcmQuaGFzKDApKS50b0VxdWFsKHRydWUpO1xuICAgIGV4cGVjdChyZWNvcmQuaGFzKDEpKS50b0VxdWFsKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0cmFuc2Zvcm0gUmVjb3JkIGludG8gT2JqZWN0JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiLCBcImFnZVwiLCBcIm5lc3RlZFwiXSwgW1wiQm9iXCIsIDIwLjUsIHt0ZXN0OiB0cnVlfV0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgb2JqID0gcmVjb3JkLnRvT2JqZWN0KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KG9iai5uYW1lKS50b0VxdWFsKFwiQm9iXCIpO1xuICAgIGV4cGVjdChvYmouYWdlKS50b0VxdWFsKDIwLjUpO1xuICAgIGV4cGVjdChvYmoubmVzdGVkLnRlc3QpLnRvRXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2l2ZSBoZWxwZnVsIGVycm9yIG9uIG5vIHN1Y2gga2V5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdCggZnVuY3Rpb24oKSB7IHJlY29yZC5nZXQoXCJhZ2VcIikgfSkudG9UaHJvdyhuZXcgTmVvNGpFcnJvcihcbiAgICAgIFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGgga2V5ICdhZ2UnLCBhdmFpbGFibGUga2V5IGFyZTogW25hbWVdLlwiKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgZ2V0dGluZyBmaWVsZHMgYnkgaW5kZXgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KHJlY29yZC5nZXQoMCkpLnRvRXF1YWwoXCJCb2JcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2l2ZSBoZWxwZnVsIGVycm9yIG9uIG5vIHN1Y2ggaW5kZXgnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0gKTtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KCBmdW5jdGlvbigpIHsgcmVjb3JkLmdldCgxKSB9KS50b1Rocm93KG5ldyBOZW80akVycm9yKFxuICAgICAgXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBpbmRleCAnMScuIFJlbWVtYmVyIHRoYXQgaW5kZXhlcyBzdGFydCBhdCBgMGAsIFwiICtcbiAgICAgIFwiYW5kIG1ha2Ugc3VyZSB5b3VyIHN0YXRlbWVudCByZXR1cm5zIHJlY29yZHMgaW4gdGhlIHNoYXBlIHlvdSBtZWFudCBpdCB0by5cIikpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhdmUgbGVuZ3RoJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QoIG5ldyBSZWNvcmQoIFtdLCBbXSkubGVuZ3RoICkudG9CZSgwKTtcbiAgICBleHBlY3QoIG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSkubGVuZ3RoICkudG9CZSgxKTtcbiAgICBleHBlY3QoIG5ldyBSZWNvcmQoIFtcIm5hbWVcIiwgXCJhZ2VcIl0sIFtcIkJvYlwiLCA0NV0pLmxlbmd0aCApLnRvQmUoMik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgZm9yRWFjaCB0aHJvdWdoIHRoZSByZWNvcmQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciByZWNvcmQgPSBuZXcgUmVjb3JkKCBbXCJuYW1lXCIsIFwiYWdlXCJdLCBbXCJCb2JcIiwgNDVdICk7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gICAgLy8gV2hlblxuICAgIHJlY29yZC5mb3JFYWNoKCBmdW5jdGlvbiggdmFsdWUsIGtleSwgcmVjb3JkICkge1xuICAgICAgcmVzdWx0LnB1c2goIFt2YWx1ZSwga2V5LCByZWNvcmRdICk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbW1wiQm9iXCIsIFwibmFtZVwiLCByZWNvcmRdLCBbNDUsIFwiYWdlXCIsIHJlY29yZF1dKTtcbiAgfSk7XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgncmVzdWx0IHN0cmVhbScsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXIsIHNlc3Npb247XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBERVRBQ0ggREVMRVRFIG5cIikudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKCkge1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGNoYWluaW5nIGB0aGVuYCwgcmV0dXJuaW5nIGEgbmV3IHRoaW5nIGluIGVhY2gnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1biggXCJSRVRVUk4gMVwiKVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gXCJmaXJzdFwiO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgZXhwZWN0KGFyZykudG9CZSggXCJmaXJzdFwiICk7XG4gICAgICAgIHJldHVybiBcInNlY29uZFwiO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgZXhwZWN0KGFyZykudG9CZSggXCJzZWNvbmRcIiApO1xuICAgICAgfSlcbiAgICAgIC50aGVuKGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGNhdGNoaW5nIGV4Y2VwdGlvbiB0aHJvd24gaW4gYHRoZW5gJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oIFwiUkVUVVJOIDFcIilcbiAgICAgIC50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXdheSB3aXRoIHlvdSFcIik7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgZXhwZWN0KGVyci5tZXNzYWdlKS50b0JlKCBcIkF3YXkgd2l0aCB5b3UhXCIgKTtcbiAgICAgICAgZG9uZSgpXG4gICAgICB9KTtcbiAgfSk7XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgbmVvNGogZnJvbSAnLi4vLi4vc3JjL3YxJztcbmltcG9ydCB7c3RhdGVtZW50VHlwZX0gZnJvbSAnLi4vLi4vc3JjL3YxL3Jlc3VsdC1zdW1tYXJ5JztcbmltcG9ydCBTZXNzaW9uIGZyb20gJy4uLy4uL3NyYy92MS9zZXNzaW9uJztcbmltcG9ydCB7UkVBRH0gZnJvbSAnLi4vLi4vc3JjL3YxL2RyaXZlcic7XG5pbXBvcnQge1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcn0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzJztcbmltcG9ydCBGYWtlQ29ubmVjdGlvbiBmcm9tICcuLi9pbnRlcm5hbC9mYWtlLWNvbm5lY3Rpb24nO1xuXG5kZXNjcmliZSgnc2Vzc2lvbicsICgpID0+IHtcblxuICBsZXQgZHJpdmVyO1xuICBsZXQgc2Vzc2lvbjtcbiAgbGV0IHNlcnZlck1ldGFkYXRhO1xuICBsZXQgb3JpZ2luYWxUaW1lb3V0O1xuXG4gIGJlZm9yZUVhY2goZG9uZSA9PiB7XG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKCdib2x0Oi8vbG9jYWxob3N0JywgbmVvNGouYXV0aC5iYXNpYygnbmVvNGonLCAnbmVvNGonKSk7XG4gICAgZHJpdmVyLm9uQ29tcGxldGVkID0gbWV0YSA9PiB7XG4gICAgICBzZXJ2ZXJNZXRhZGF0YSA9IG1ldGFbJ3NlcnZlciddO1xuICAgIH07XG4gICAgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG4gICAgb3JpZ2luYWxUaW1lb3V0ID0gamFzbWluZS5ERUZBVUxUX1RJTUVPVVRfSU5URVJWQUw7XG4gICAgamFzbWluZS5ERUZBVUxUX1RJTUVPVVRfSU5URVJWQUwgPSAxMDAwMDtcblxuICAgIHNlc3Npb24ucnVuKCdNQVRDSCAobikgREVUQUNIIERFTEVURSBuJykudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqYXNtaW5lLkRFRkFVTFRfVElNRU9VVF9JTlRFUlZBTCA9IG9yaWdpbmFsVGltZW91dDtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ2Nsb3NlIHNob3VsZCBpbnZva2UgY2FsbGJhY2sgJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBuZXdTZXNzaW9uV2l0aENvbm5lY3Rpb24oY29ubmVjdGlvbik7XG5cbiAgICBzZXNzaW9uLmNsb3NlKGRvbmUpO1xuICB9KTtcblxuICBpdCgnY2xvc2Ugc2hvdWxkIGludm9rZSBjYWxsYmFjayBldmVuIHdoZW4gYWxyZWFkeSBjbG9zZWQgJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBuZXdTZXNzaW9uV2l0aENvbm5lY3Rpb24oY29ubmVjdGlvbik7XG5cbiAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgIHNlc3Npb24uY2xvc2UoKCkgPT4ge1xuICAgICAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdjbG9zZSBzaG91bGQgYmUgaWRlbXBvdGVudCAnLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IG5ld1Nlc3Npb25XaXRoQ29ubmVjdGlvbihjb25uZWN0aW9uKTtcblxuICAgIHNlc3Npb24uY2xvc2UoKCkgPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNSZWxlYXNlZE9uY2VPblNlc3Npb25DbG9zZSgpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIHNlc3Npb24uY2xvc2UoKCkgPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5pc1JlbGVhc2VkT25jZU9uU2Vzc2lvbkNsb3NlKCkpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgICAgICBleHBlY3QoY29ubmVjdGlvbi5pc1JlbGVhc2VkT25jZU9uU2Vzc2lvbkNsb3NlKCkpLnRvQmVUcnV0aHkoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2xvc2UgdHJhbnNhY3Rpb24gZXhlY3V0b3InLCBkb25lID0+IHtcbiAgICBjb25zdCBzZXNzaW9uID0gbmV3U2Vzc2lvbldpdGhDb25uZWN0aW9uKG5ldyBGYWtlQ29ubmVjdGlvbigpKTtcblxuICAgIGxldCBjbG9zZUNhbGxlZFRpbWVzID0gMDtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4ZWN1dG9yID0gc2Vzc2lvbi5fdHJhbnNhY3Rpb25FeGVjdXRvcjtcbiAgICBjb25zdCBvcmlnaW5hbENsb3NlID0gdHJhbnNhY3Rpb25FeGVjdXRvci5jbG9zZTtcbiAgICB0cmFuc2FjdGlvbkV4ZWN1dG9yLmNsb3NlID0gKCkgPT4ge1xuICAgICAgY2xvc2VDYWxsZWRUaW1lcysrO1xuICAgICAgb3JpZ2luYWxDbG9zZS5jYWxsKHRyYW5zYWN0aW9uRXhlY3V0b3IpO1xuICAgIH07XG5cbiAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgIGV4cGVjdChjbG9zZUNhbGxlZFRpbWVzKS50b0VxdWFsKDEpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNsb3NlIGRyaXZlciBhZnRlciBjbG9zaW5nIHNlc3Npb24gd2l0aCBmYWlsZWQgdHggJywgZG9uZSA9PiB7XG4gICAgY29uc3QgZHJpdmVyID0gbmVvNGouZHJpdmVyKCdib2x0Oi8vbG9jYWxob3N0JywgbmVvNGouYXV0aC5iYXNpYygnbmVvNGonLCAnbmVvNGonKSk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oJ0lOVkFMSUQgUVVFUlknKS5jYXRjaCgoKSA9PiB7XG4gICAgICB0eC5yb2xsYmFjaygpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgc2Vzc2lvbi5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBiYXNpYyBydW4vc3Vic2NyaWJlICcsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXTtcbiAgICBzZXNzaW9uLnJ1bihcIlJFVFVSTiAxLjAgQVMgYVwiKS5zdWJzY3JpYmUoe1xuICAgICAgb25OZXh0OiByZWNvcmQgPT4ge1xuICAgICAgICByZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbXBsZXRlZDogKCkgPT4ge1xuICAgICAgICBleHBlY3QocmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChyZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQga2VlcCBjb250ZXh0IGluIHN1YnNjcmliZSBtZXRob2RzICcsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgZnVuY3Rpb24gTXlPYnNlcnZlcigpIHtcbiAgICAgIHRoaXMubG9jYWwgPSAnaGVsbG8nO1xuICAgICAgY29uc3QgcHJpdmF0ZUxvY2FsID0gJ2hlbGxvJztcbiAgICAgIHRoaXMub25OZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBleHBlY3QocHJpdmF0ZUxvY2FsKS50b0JlKCdoZWxsbycpO1xuICAgICAgICBleHBlY3QodGhpcy5sb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgIH07XG4gICAgICB0aGlzLm9uQ29tcGxldGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBleHBlY3QocHJpdmF0ZUxvY2FsKS50b0JlKCdoZWxsbycpO1xuICAgICAgICBleHBlY3QodGhpcy5sb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCdSRVRVUk4gMS4wIEFTIGEnKS5zdWJzY3JpYmUobmV3IE15T2JzZXJ2ZXIoKSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2FsbCBvYnNlcnZlcnMgb25FcnJvciBvbiBlcnJvciAnLCBkb25lID0+IHtcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oJ1JFVFVSTiAxIEFTJykuc3Vic2NyaWJlKHtcbiAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoJ05lby5DbGllbnRFcnJvci5TdGF0ZW1lbnQuU3ludGF4RXJyb3InKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBhIHN0YXRlbWVudCBvYmplY3QgJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB7dGV4dDogJ1JFVFVSTiAxID0ge3BhcmFtfSBBUyBhJywgcGFyYW1ldGVyczoge3BhcmFtOiAxfX07XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXTtcbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpLnN1YnNjcmliZSh7XG4gICAgICBvbk5leHQ6IHJlY29yZCA9PiB7XG4gICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgfSxcbiAgICAgIG9uQ29tcGxldGVkOiAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChyZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KHJlY29yZHNbMF0uZ2V0KCdhJykpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcnVuL3RoZW4vdGhlbi90aGVuICcsIGRvbmUgPT4ge1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gMS4wIEFTIGFcIilcbiAgICAgIC50aGVuKFxuICAgICAgICByZXN1bHQgPT4ge1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuICAgICAgKS50aGVuKFxuICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgfVxuICAgICkudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgYmFzaWMgcnVuL2NhdGNoICcsIGRvbmUgPT4ge1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oJ1JFVFVSTiAxIEFTJykuY2F0Y2goXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKCdOZW8uQ2xpZW50RXJyb3IuU3RhdGVtZW50LlN5bnRheEVycm9yJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICApXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHN1bW1hcml6ZSBtZXRob2QgZm9yIGJhc2ljIG1ldGFkYXRhICcsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gJ0NSRUFURSAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gbic7XG4gICAgY29uc3QgcGFyYW1zID0ge3Byb3A6ICdzdHJpbmcnfTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKHN0YXRlbWVudCwgcGFyYW1zKVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uc3RhdGVtZW50LnRleHQpLnRvQmUoc3RhdGVtZW50KTtcbiAgICAgICAgZXhwZWN0KHN1bS5zdGF0ZW1lbnQucGFyYW1ldGVycykudG9CZShwYXJhbXMpO1xuICAgICAgICBleHBlY3Qoc3VtLmNvdW50ZXJzLmNvbnRhaW5zVXBkYXRlcygpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3Qoc3VtLmNvdW50ZXJzLm5vZGVzQ3JlYXRlZCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudFR5cGUpLnRvQmUoc3RhdGVtZW50VHlwZS5SRUFEX1dSSVRFKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHNlcnZlciBpbmZvIG9uIHN1Y2Nlc3NmdWwgcXVlcnknLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSAnUkVUVVJOIDEnO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpXG4gICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBjb25zdCBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5zZXJ2ZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChzdW0uc2VydmVyLmFkZHJlc3MpLnRvRXF1YWwoJ2xvY2FsaG9zdDo3Njg3Jyk7XG4gICAgICAgIGV4cGVjdChzdW0uc2VydmVyLnZlcnNpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBleGVjdXRpb24gdGltZSBpbmZvcm1hdGlvbiB3aGVuIHVzaW5nIDMuMSBhbmQgb253YXJkcycsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdVTldJTkQgcmFuZ2UoMSwxMDAwMCkgQVMgbiBSRVRVUk4gbiBBUyBudW1iZXInO1xuICAgIC8vIFdoZW4gJiBUaGVuXG5cbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQpXG4gICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBjb25zdCBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5yZXN1bHRBdmFpbGFibGVBZnRlci50b0ludCgpKS5ub3QudG9CZUxlc3NUaGFuKDApO1xuICAgICAgICBleHBlY3Qoc3VtLnJlc3VsdENvbnN1bWVkQWZ0ZXIudG9JbnQoKSkubm90LnRvQmVMZXNzVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGVtcHR5IHBhcmFtZXRlciBtYXAgb24gY2FsbCB3aXRoIG5vIHBhcmFtZXRlcnMnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdDUkVBVEUgKG46TGFiZWwge3Byb3A6XFwnc3RyaW5nXFwnfSkgUkVUVVJOIG4nO1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uc3RhdGVtZW50LnBhcmFtZXRlcnMpLnRvRXF1YWwoe30pO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcGxhbiAnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdFWFBMQUlOIENSRUFURSAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gbic7XG4gICAgY29uc3QgcGFyYW1zID0ge3Byb3A6ICdzdHJpbmcnfTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBjb25zdCBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQbGFuKCkpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUHJvZmlsZSgpKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLm9wZXJhdG9yVHlwZSkudG9CZSgnUHJvZHVjZVJlc3VsdHMnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmFyZ3VtZW50cy5ydW50aW1lKS50b0JlKCdJTlRFUlBSRVRFRCcpO1xuICAgICAgICBleHBlY3Qoc3VtLnBsYW4uaWRlbnRpZmllcnNbMF0pLnRvQmUoJ24nKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmNoaWxkcmVuWzBdLm9wZXJhdG9yVHlwZSkudG9CZSgnQ3JlYXRlTm9kZScpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgcHJvZmlsZSAnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdQUk9GSUxFIE1BVENIIChuOkxhYmVsIHtwcm9wOntwcm9wfX0pIFJFVFVSTiBuJztcbiAgICBjb25zdCBwYXJhbXMgPSB7cHJvcDogJ3N0cmluZyd9O1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvblxuICAgICAgLnJ1bihzdGF0ZW1lbnQsIHBhcmFtcylcbiAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGNvbnN0IHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLmhhc1BsYW4oKSkudG9CZSh0cnVlKTsgLy9XaGVuIHRoZXJlJ3MgYSBwcm9maWxlLCB0aGVyZSdzIGEgcGxhblxuICAgICAgICBleHBlY3Qoc3VtLmhhc1Byb2ZpbGUoKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLm9wZXJhdG9yVHlwZSkudG9CZSgnUHJvZHVjZVJlc3VsdHMnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLmFyZ3VtZW50cy5ydW50aW1lKS50b0JlKCdJTlRFUlBSRVRFRCcpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUuaWRlbnRpZmllcnNbMF0pLnRvQmUoJ24nKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLmNoaWxkcmVuWzBdLm9wZXJhdG9yVHlwZSkudG9CZSgnRmlsdGVyJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5yb3dzKS50b0JlKDApO1xuICAgICAgICAvL2V4cGVjdChzdW0ucHJvZmlsZS5kYkhpdHMpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGN5cGhlciBub3RpZmljYXRpb25zICcsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gJ0VYUExBSU4gTUFUQ0ggKG4pLCAobSkgUkVUVVJOIG4sIG0nO1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvblxuICAgICAgLnJ1bihzdGF0ZW1lbnQpXG4gICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBjb25zdCBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgICAgICBleHBlY3Qoc3VtLm5vdGlmaWNhdGlvbnNbMF0uY29kZSkudG9CZShcIk5lby5DbGllbnROb3RpZmljYXRpb24uU3RhdGVtZW50LkNhcnRlc2lhblByb2R1Y3RXYXJuaW5nXCIpO1xuICAgICAgICBleHBlY3Qoc3VtLm5vdGlmaWNhdGlvbnNbMF0udGl0bGUpLnRvQmUoXCJUaGlzIHF1ZXJ5IGJ1aWxkcyBhIGNhcnRlc2lhbiBwcm9kdWN0IGJldHdlZW4gZGlzY29ubmVjdGVkIHBhdHRlcm5zLlwiKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLnBvc2l0aW9uLmNvbHVtbikudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gdXNpbmcgdGhlIHNlc3Npb24gd2hlbiBoYXZpbmcgYW4gb3BlbiB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgLy9UaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0JlKFwiU3RhdGVtZW50cyBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IG9uIGEgXCJcbiAgICAgICAgICArIFwic2Vzc2lvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb247IGVpdGhlciBydW4gZnJvbSB3aXRoaW4gdGhlIFwiXG4gICAgICAgICAgKyBcInRyYW5zYWN0aW9uIG9yIHVzZSBhIGRpZmZlcmVudCBzZXNzaW9uLlwiKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSlcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gb3BlbmluZyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMnLCAoKSA9PiB7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbikudG9UaHJvdygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBsb3RzIG9mIGRhdGEnLCBkb25lID0+IHtcbiAgICBzZXNzaW9uLnJ1bihcIlVOV0lORCByYW5nZSgxLDEwMDAwKSBBUyB4IENSRUFURSAoOkFUVFJBQ1RJT04ge3Byb3A6ICdwcm9wJ30pXCIpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIFJFVFVSTiBuXCIpXG4gICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb25OZXh0OiByZWNvcmQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSByZWNvcmQuZ2V0KCduJyk7XG4gICAgICAgICAgICAgICAgZXhwZWN0KG5vZGUubGFiZWxzWzBdKS50b0VxdWFsKFwiQVRUUkFDVElPTlwiKTtcbiAgICAgICAgICAgICAgICBleHBlY3Qobm9kZS5wcm9wZXJ0aWVzLnByb3ApLnRvRXF1YWwoXCJwcm9wXCIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkNvbXBsZXRlZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlc3Npb24uY2xvc2UoKTtcbiAgICAgICAgICAgICAgICBkb25lKClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25FcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcblxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBhIGxvbmcgcnVubmluZyBxdWVyeSAnLCBkb25lID0+IHtcbiAgICAvL2dpdmVuIGEgbG9uZyBydW5uaW5nIHF1ZXJ5XG4gICAgc2Vzc2lvbi5ydW4oJ3Vud2luZCByYW5nZSgxLDEwMDAwMDApIGFzIHggY3JlYXRlIChuIHtwcm9wOnh9KSBkZWxldGUgbicpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIC8vIGxvbmcgcnVubmluZyBxdWVyeSBzaG91bGQgZmFpbFxuICAgICAgZXhwZWN0KGVycm9yKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBhbmQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHN0YXJ0IGFub3RoZXIgc2Vzc2lvbiBhbmQgcnVuIGEgcXVlcnlcbiAgICAgIGNvbnN0IGFub3RoZXJTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICAgIGFub3RoZXJTZXNzaW9uLnJ1bignUkVUVVJOIDEuMCBhcyBhJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhJykpLnRvQmUoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ1F1ZXJ5IGZhaWxlZCBhZnRlciBhIGxvbmcgcnVubmluZyBxdWVyeSB3YXMgdGVybWluYXRlZCcsIGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gd2FpdCBzb21lIHRpbWUgdGhhbiBjbG9zZSB0aGUgc2Vzc2lvbiB3aXRoIGEgbG9uZyBydW5uaW5nIHF1ZXJ5XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgfSwgMTAwMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBuaWNlbHkgb24gdW5wYWNrYWJsZSB2YWx1ZXMgJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCB1bnBhY2thYmxlID0gKCkgPT4ge1xuICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gJ1JFVFVSTiB7cGFyYW19JztcbiAgICBjb25zdCBwYXJhbXMgPSB7cGFyYW06IHVucGFja2FibGV9O1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvblxuICAgICAgLnJ1bihzdGF0ZW1lbnQsIHBhcmFtcylcbiAgICAgIC5jYXRjaChpZ25vcmUgPT4ge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgbmljZWx5IGZvciBpbGxlZ2FsIHN0YXRlbWVudCcsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5ydW4oKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKG51bGwpKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5ydW4oe30pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5ydW4oNDIpKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5ydW4oW10pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5ydW4oWydDUkVBVEUgKCknXSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuXG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKHtzdGF0ZW1lbnQ6ICdDUkVBVEUgKCknfSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiBzZXNzaW9uLnJ1bih7Y3lwaGVyOiAnQ1JFQVRFICgpJ30pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG5pY2VseSBmb3IgaWxsZWdhbCBib29rbWFyaycsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKHt9KSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbig0MikpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oW10pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKFsnYm9va21hcmsnXSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGNyZWF0aW9uIG9mIGEgJyArIG5lbzRqLnNlc3Npb24uUkVBRCArICcgc2Vzc2lvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlYWRTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24obmVvNGouc2Vzc2lvbi5SRUFEKTtcbiAgICByZWFkU2Vzc2lvbi5ydW4oJ1JFVFVSTiAxJykudGhlbigoKSA9PiB7XG4gICAgICByZWFkU2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGNyZWF0aW9uIG9mIGEgJyArIG5lbzRqLnNlc3Npb24uV1JJVEUgKyAnIHNlc3Npb24nLCBkb25lID0+IHtcbiAgICBjb25zdCB3cml0ZVNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbihuZW80ai5zZXNzaW9uLldSSVRFKTtcbiAgICB3cml0ZVNlc3Npb24ucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgIHdyaXRlU2Vzc2lvbi5jbG9zZSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgZm9yIGlsbGVnYWwgc2Vzc2lvbiBtb2RlJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiBkcml2ZXIuc2Vzc2lvbignSUxMRUdBTF9NT0RFJykpLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gdG8gdGhlIHBvb2wgYWZ0ZXIgcnVuJywgZG9uZSA9PiB7XG4gICAgd2l0aFF1ZXJ5SW5UbXBTZXNzaW9uKGRyaXZlciwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQmVmb3JlID0gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpO1xuXG4gICAgICBzZXNzaW9uLnJ1bignUkVUVVJOIDEnKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQWZ0ZXIgPSBpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcik7XG4gICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbnNCZWZvcmUpLnRvRXF1YWwoaWRsZUNvbm5lY3Rpb25zQWZ0ZXIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gdG8gdGhlIHBvb2wgYWZ0ZXIgcnVuIGZhaWx1cmUnLCBkb25lID0+IHtcbiAgICB3aXRoUXVlcnlJblRtcFNlc3Npb24oZHJpdmVyLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGxlQ29ubmVjdGlvbnNCZWZvcmUgPSBpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcik7XG5cbiAgICAgIHNlc3Npb24ucnVuKCdSRVRVUk4gMTAgLyAwJykuY2F0Y2goKCkgPT4ge1xuICAgICAgICBjb25zdCBpZGxlQ29ubmVjdGlvbnNBZnRlciA9IGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKTtcbiAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uc0JlZm9yZSkudG9FcXVhbChpZGxlQ29ubmVjdGlvbnNBZnRlcik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlbGVhc2UgY29ubmVjdGlvbiB0byB0aGUgcG9vbCB3aGVuIHJlc3VsdCBpcyBjb25zdW1lZCcsIGRvbmUgPT4ge1xuICAgIHdpdGhRdWVyeUluVG1wU2Vzc2lvbihkcml2ZXIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlkbGVDb25uZWN0aW9uc0JlZm9yZSA9IGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKTtcblxuICAgICAgc2Vzc2lvbi5ydW4oJ1VOV0lORCByYW5nZSgwLCAxMCkgQVMgeCBSRVRVUk4geCArIDEnKS5zdWJzY3JpYmUoe1xuICAgICAgICBvbk5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBvbmUgbGVzcyBpZGxlIGNvbm5lY3Rpb24sIG9uZSBjb25uZWN0aW9uIGlzIHVzZWQgZm9yIHRoZSBjdXJyZW50IHF1ZXJ5XG4gICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUgLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgICBleHBlY3QoaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpKS50b0JlKGlkbGVDb25uZWN0aW9uc0JlZm9yZSk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gdG8gdGhlIHBvb2wgd2hlbiByZXN1bHQgZmFpbHMnLCBkb25lID0+IHtcbiAgICB3aXRoUXVlcnlJblRtcFNlc3Npb24oZHJpdmVyLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGxlQ29ubmVjdGlvbnNCZWZvcmUgPSBpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcik7XG5cbiAgICAgIHNlc3Npb24ucnVuKCdVTldJTkQgcmFuZ2UoMTAsIDAsIC0xKSBBUyB4IFJFVFVSTiAxMCAvIHgnKS5zdWJzY3JpYmUoe1xuICAgICAgICBvbk5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBvbmUgbGVzcyBpZGxlIGNvbm5lY3Rpb24sIG9uZSBjb25uZWN0aW9uIGlzIHVzZWQgZm9yIHRoZSBjdXJyZW50IHF1ZXJ5XG4gICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUgLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcjogaWdub3JlZEVycm9yID0+IHtcbiAgICAgICAgICBleHBlY3QoaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpKS50b0JlKGlkbGVDb25uZWN0aW9uc0JlZm9yZSk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlZDogKCkgPT4ge1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gdG8gdGhlIHBvb2wgd2hlbiB0cmFuc2FjdGlvbiBjb21taXRzJywgZG9uZSA9PiB7XG4gICAgd2l0aFF1ZXJ5SW5UbXBTZXNzaW9uKGRyaXZlciwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQmVmb3JlID0gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpO1xuXG4gICAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgdHgucnVuKCdVTldJTkQgcmFuZ2UoMCwgMTApIEFTIHggUkVUVVJOIHggKyAxJykuc3Vic2NyaWJlKHtcbiAgICAgICAgb25OZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gb25lIGxlc3MgaWRsZSBjb25uZWN0aW9uLCBvbmUgY29ubmVjdGlvbiBpcyB1c2VkIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvblxuICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlIC0gMSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGVkOiAoKSA9PiB7XG4gICAgICAgICAgLy8gb25lIGxlc3MgaWRsZSBjb25uZWN0aW9uLCBvbmUgY29ubmVjdGlvbiBpcyB1c2VkIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvblxuICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlIC0gMSk7XG4gICAgICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBleHBlY3QoaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpKS50b0JlKGlkbGVDb25uZWN0aW9uc0JlZm9yZSk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlbGVhc2UgY29ubmVjdGlvbiB0byB0aGUgcG9vbCB3aGVuIHRyYW5zYWN0aW9uIHJvbGxzIGJhY2snLCBkb25lID0+IHtcbiAgICB3aXRoUXVlcnlJblRtcFNlc3Npb24oZHJpdmVyLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGxlQ29ubmVjdGlvbnNCZWZvcmUgPSBpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcik7XG5cbiAgICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eC5ydW4oJ1VOV0lORCByYW5nZSgwLCAxMCkgQVMgeCBSRVRVUk4geCArIDEnKS5zdWJzY3JpYmUoe1xuICAgICAgICBvbk5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBvbmUgbGVzcyBpZGxlIGNvbm5lY3Rpb24sIG9uZSBjb25uZWN0aW9uIGlzIHVzZWQgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uXG4gICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUgLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBvbmUgbGVzcyBpZGxlIGNvbm5lY3Rpb24sIG9uZSBjb25uZWN0aW9uIGlzIHVzZWQgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uXG4gICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUgLSAxKTtcbiAgICAgICAgICB0eC5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB1cGRhdGUgbGFzdCBib29rbWFyayBhZnRlciBldmVyeSByZWFkIHR4IGNvbW1pdCcsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG5cbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bignUkVUVVJOIDQyIGFzIGFuc3dlcicpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGNvbnN0IHJlY29yZHMgPSByZXN1bHQucmVjb3JkcztcbiAgICAgIGV4cGVjdChyZWNvcmRzLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgICAgIGV4cGVjdChyZWNvcmRzWzBdLmdldCgnYW5zd2VyJykudG9OdW1iZXIoKSkudG9FcXVhbCg0Mik7XG5cbiAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBib29rbWFya0FmdGVyID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcbiAgICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS5ub3QudG9CZU51bGwoKTtcbiAgICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLm5vdC50b0VxdWFsKGJvb2ttYXJrQmVmb3JlKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB1cGRhdGUgbGFzdCBib29rbWFyayBhZnRlciBldmVyeSB3cml0ZSB0eCBjb21taXQnLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuXG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oJ0NSRUFURSAoKScpLnRoZW4oKCkgPT4ge1xuICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJvb2ttYXJrQWZ0ZXIgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgICAgICBleHBlY3QoYm9va21hcmtBZnRlcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLm5vdC50b0JlTnVsbCgpO1xuICAgICAgICBleHBlY3QoYm9va21hcmtBZnRlcikubm90LnRvRXF1YWwoYm9va21hcmtCZWZvcmUpO1xuXG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBsb3NlIGxhc3QgYm9va21hcmsgYWZ0ZXIgcnVuJywgZG9uZSA9PiB7XG4gICAgaWYgKCFzZXJ2ZXJJczMxT3JMYXRlcihkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgICAgIGV4cGVjdChib29rbWFya0JlZm9yZSkudG9CZURlZmluZWQoKTtcbiAgICAgICAgZXhwZWN0KGJvb2ttYXJrQmVmb3JlKS5ub3QudG9CZU51bGwoKTtcblxuICAgICAgICBzZXNzaW9uLnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYm9va21hcmtBZnRlciA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLnRvRXF1YWwoYm9va21hcmtCZWZvcmUpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb21taXQgcmVhZCB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IHNlc3Npb24ucmVhZFRyYW5zYWN0aW9uKHR4ID0+IHR4LnJ1bignUkVUVVJOIDQyIEFTIGFuc3dlcicpKTtcblxuICAgIHJlc3VsdFByb21pc2UudGhlbihyZXN1bHQgPT4ge1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2Fuc3dlcicpLnRvTnVtYmVyKCkpLnRvRXF1YWwoNDIpO1xuXG4gICAgICBjb25zdCBib29rbWFya0FmdGVyID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcbiAgICAgIHZlcmlmeUJvb2ttYXJrKGJvb2ttYXJrQWZ0ZXIpO1xuICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLm5vdC50b0VxdWFsKGJvb2ttYXJrQmVmb3JlKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbW1pdCB3cml0ZSB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IHNlc3Npb24ud3JpdGVUcmFuc2FjdGlvbih0eCA9PiB0eC5ydW4oJ0NSRUFURSAobjpOb2RlIHtpZDogNDJ9KSBSRVRVUk4gbi5pZCBBUyBhbnN3ZXInKSk7XG5cbiAgICByZXN1bHRQcm9taXNlLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhbnN3ZXInKS50b051bWJlcigpKS50b0VxdWFsKDQyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuc3VtbWFyeS5jb3VudGVycy5ub2Rlc0NyZWF0ZWQoKSkudG9FcXVhbCgxKTtcblxuICAgICAgY29uc3QgYm9va21hcmtBZnRlciA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgICB2ZXJpZnlCb29rbWFyayhib29rbWFya0FmdGVyKTtcbiAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS5ub3QudG9FcXVhbChib29rbWFya0JlZm9yZSk7XG5cbiAgICAgIGNvdW50Tm9kZXMoJ05vZGUnLCAnaWQnLCA0MikudGhlbihjb3VudCA9PiB7XG4gICAgICAgIGV4cGVjdChjb3VudCkudG9FcXVhbCgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGNvbW1pdCBhbHJlYWR5IGNvbW1pdHRlZCByZWFkIHRyYW5zYWN0aW9uJywgZG9uZSA9PiB7XG4gICAgaWYgKCFzZXJ2ZXJJczMxT3JMYXRlcihkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzZXNzaW9uLnJlYWRUcmFuc2FjdGlvbih0eCA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0eC5ydW4oJ1JFVFVSTiA0MiBBUyBhbnN3ZXInKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHtyZXN1bHQ6IHJlc3VsdCwgYm9va21hcms6IHNlc3Npb24ubGFzdEJvb2ttYXJrKCl9KTtcbiAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJlc3VsdFByb21pc2UudGhlbihvdXRjb21lID0+IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrID0gb3V0Y29tZS5ib29rbWFyaztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG91dGNvbWUucmVzdWx0O1xuXG4gICAgICB2ZXJpZnlCb29rbWFyayhib29rbWFyayk7XG4gICAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkudG9FcXVhbChib29rbWFyayk7IC8vIGV4cGVjdCBib29rbWFyayB0byBub3QgY2hhbmdlXG5cbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhbnN3ZXInKS50b051bWJlcigpKS50b0VxdWFsKDQyKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBjb21taXQgYWxyZWFkeSBjb21taXR0ZWQgd3JpdGUgdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IHNlc3Npb24ucmVhZFRyYW5zYWN0aW9uKHR4ID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHR4LnJ1bignQ1JFQVRFIChuOk5vZGUge2lkOiA0Mn0pIFJFVFVSTiBuLmlkIEFTIGFuc3dlcicpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICB0eC5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoe3Jlc3VsdDogcmVzdWx0LCBib29rbWFyazogc2Vzc2lvbi5sYXN0Qm9va21hcmsoKX0pO1xuICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0UHJvbWlzZS50aGVuKG91dGNvbWUgPT4ge1xuICAgICAgY29uc3QgYm9va21hcmsgPSBvdXRjb21lLmJvb2ttYXJrO1xuICAgICAgY29uc3QgcmVzdWx0ID0gb3V0Y29tZS5yZXN1bHQ7XG5cbiAgICAgIHZlcmlmeUJvb2ttYXJrKGJvb2ttYXJrKTtcbiAgICAgIGV4cGVjdChzZXNzaW9uLmxhc3RCb29rbWFyaygpKS50b0VxdWFsKGJvb2ttYXJrKTsgLy8gZXhwZWN0IGJvb2ttYXJrIHRvIG5vdCBjaGFuZ2VcblxuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2Fuc3dlcicpLnRvTnVtYmVyKCkpLnRvRXF1YWwoNDIpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdW1tYXJ5LmNvdW50ZXJzLm5vZGVzQ3JlYXRlZCgpKS50b0VxdWFsKDEpO1xuXG4gICAgICBjb3VudE5vZGVzKCdOb2RlJywgJ2lkJywgNDIpLnRoZW4oY291bnQgPT4ge1xuICAgICAgICBleHBlY3QoY291bnQpLnRvRXF1YWwoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBjb21taXQgcm9sbGVkIGJhY2sgcmVhZCB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IHNlc3Npb24ucmVhZFRyYW5zYWN0aW9uKHR4ID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHR4LnJ1bignUkVUVVJOIDQyIEFTIGFuc3dlcicpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICB0eC5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0UHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYW5zd2VyJykudG9OdW1iZXIoKSkudG9FcXVhbCg0Mik7XG4gICAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkudG9CZShib29rbWFya0JlZm9yZSk7IC8vIGV4cGVjdCBib29rbWFyayB0byBub3QgY2hhbmdlXG5cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY29tbWl0IHJvbGxlZCBiYWNrIHdyaXRlIHRyYW5zYWN0aW9uJywgZG9uZSA9PiB7XG4gICAgaWYgKCFzZXJ2ZXJJczMxT3JMYXRlcihkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJvb2ttYXJrQmVmb3JlID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcbiAgICBjb25zdCByZXN1bHRQcm9taXNlID0gc2Vzc2lvbi5yZWFkVHJhbnNhY3Rpb24odHggPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdHgucnVuKCdDUkVBVEUgKG46Tm9kZSB7aWQ6IDQyfSkgUkVUVVJOIG4uaWQgQVMgYW5zd2VyJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgIHR4LnJvbGxiYWNrKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXN1bHRQcm9taXNlLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhbnN3ZXInKS50b051bWJlcigpKS50b0VxdWFsKDQyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuc3VtbWFyeS5jb3VudGVycy5ub2Rlc0NyZWF0ZWQoKSkudG9FcXVhbCgxKTtcbiAgICAgIGV4cGVjdChzZXNzaW9uLmxhc3RCb29rbWFyaygpKS50b0JlKGJvb2ttYXJrQmVmb3JlKTsgLy8gZXhwZWN0IGJvb2ttYXJrIHRvIG5vdCBjaGFuZ2VcblxuICAgICAgY291bnROb2RlcygnTm9kZScsICdpZCcsIDQyKS50aGVuKGNvdW50ID0+IHtcbiAgICAgICAgZXhwZWN0KGNvdW50KS50b0VxdWFsKDApO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkge1xuICAgIC8vIGxhenkgd2F5IG9mIGNoZWNraW5nIHRoZSB2ZXJzaW9uIG51bWJlclxuICAgIC8vIGlmIHNlcnZlciBoYXMgYmVlbiBzZXQgd2Uga25vdyBpdCBpcyBhdCBsZWFzdCAzLjFcbiAgICBpZiAoIXNlcnZlck1ldGFkYXRhKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZnVuY3Rpb24gY291bnROb2RlcyhsYWJlbCwgcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc2Vzc2lvbi5ydW4oYE1BVENIIChuOiAke2xhYmVsfSB7JHtwcm9wZXJ0eUtleX06ICR7cHJvcGVydHlWYWx1ZX19KSBSRVRVUk4gY291bnQobikgQVMgY291bnRgKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIHJlc29sdmUocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCcpLnRvTnVtYmVyKCkpO1xuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB3aXRoUXVlcnlJblRtcFNlc3Npb24oZHJpdmVyLCBjYWxsYmFjaykge1xuICAgIGNvbnN0IHRtcFNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuICAgIHJldHVybiB0bXBTZXNzaW9uLnJ1bignUkVUVVJOIDEnKS50aGVuKCgpID0+IHtcbiAgICAgIHRtcFNlc3Npb24uY2xvc2UoY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbmV3U2Vzc2lvbldpdGhDb25uZWN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXcgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKFByb21pc2UucmVzb2x2ZShjb25uZWN0aW9uKSk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG4gICAgc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7IC8vIGZvcmNlIHNlc3Npb24gdG8gYWNxdWlyZSBuZXcgY29ubmVjdGlvblxuICAgIHJldHVybiBzZXNzaW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpIHtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBkcml2ZXIuX2Nvbm5lY3Rpb25Qcm92aWRlcjtcbiAgICBjb25zdCBhZGRyZXNzID0gY29ubmVjdGlvblByb3ZpZGVyLl9hZGRyZXNzO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qb29sID0gY29ubmVjdGlvblByb3ZpZGVyLl9jb25uZWN0aW9uUG9vbDtcbiAgICBjb25zdCBpZGxlQ29ubmVjdGlvbnMgPSBjb25uZWN0aW9uUG9vbC5fcG9vbHNbYWRkcmVzc107XG4gICAgcmV0dXJuIGlkbGVDb25uZWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBmdW5jdGlvbiB2ZXJpZnlCb29rbWFyayhib29rbWFyaykge1xuICAgIGV4cGVjdChib29rbWFyaykudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoYm9va21hcmspLm5vdC50b0JlTnVsbCgpO1xuICB9XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IG5lbzRqIGZyb20gJy4uLy4uL2xpYi92MSc7XG5cbmRlc2NyaWJlKCd0cmFuc2FjdGlvbicsICgpID0+IHtcblxuICBsZXQgZHJpdmVyO1xuICBsZXQgc2Vzc2lvbjtcbiAgbGV0IHNlcnZlcjtcbiAgbGV0IG9yaWdpbmFsVGltZW91dDtcblxuICBiZWZvcmVFYWNoKGRvbmUgPT4ge1xuICAgIC8vIG1ha2UgamFzbWluZSB0aW1lb3V0IGhpZ2ggZW5vdWdoIHRvIHRlc3QgdW5yZWFjaGFibGUgYm9va21hcmtzXG4gICAgb3JpZ2luYWxUaW1lb3V0ID0gamFzbWluZS5ERUZBVUxUX1RJTUVPVVRfSU5URVJWQUw7XG4gICAgamFzbWluZS5ERUZBVUxUX1RJTUVPVVRfSU5URVJWQUwgPSA2MDAwMDtcblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIGRyaXZlci5vbkNvbXBsZXRlZCA9IG1ldGEgPT4ge1xuICAgICAgc2VydmVyID0gbWV0YVsnc2VydmVyJ107XG4gICAgfTtcbiAgICBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgblwiKS50aGVuKGRvbmUpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGphc21pbmUuREVGQVVMVF9USU1FT1VUX0lOVEVSVkFMID0gb3JpZ2luYWxUaW1lb3V0O1xuICAgIGRyaXZlci5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbW1pdCBzaW1wbGUgY2FzZScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIikudGhlbigoKSA9PiB7XG4gICAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKS50aGVuKCgpID0+IHtcbiAgICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAodDE6VFhOb2RlMSksICh0MjpUWE5vZGUyKSBSRVRVUk4gY291bnQodDEpLCBjb3VudCh0MilcIikudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KHQxKScpLnRvSW50KCkpLnRvQmUoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MiknKS50b0ludCgpKS50b0JlKDEpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgaW50ZXJhY3RpdmUgc2Vzc2lvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiUkVUVVJOICdmb28nIEFTIHJlc1wiKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICB0eC5ydW4oXCJDUkVBVEUgKHtuYW1lOiB7cGFyYW19fSlcIiwge3BhcmFtOiByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ3JlcycpfSkudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKGEge25hbWU6J2Zvbyd9KSBSRVRVUk4gY291bnQoYSlcIikudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KGEpJykudG9JbnQoKSkudG9CZSgxKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgd2l0aCBzdWJzY3JpYmUnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bignVEhJUyBJUyBOT1QgQ1lQSEVSJylcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKCdOZW8uQ2xpZW50RXJyb3IuU3RhdGVtZW50LlN5bnRheEVycm9yJyk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgZmFpbHVyZXMgd2l0aCBjYXRjaCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKCdUSElTIElTIE5PVCBDWVBIRVInKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbCgnTmVvLkNsaWVudEVycm9yLlN0YXRlbWVudC5TeW50YXhFcnJvcicpO1xuICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmVzIG9uIGNvbW1pdCcsIGRvbmUgPT4ge1xuICAgIC8vIFdoZW5cbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpLmNhdGNoKHN0YXRlbWVudEVycm9yID0+IHtcbiAgICAgICAgZXhwZWN0U3ludGF4RXJyb3Ioc3RhdGVtZW50RXJyb3IpO1xuXG4gICAgICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICB0eC5jb21taXQoKS5jYXRjaChjb21taXRFcnJvciA9PiB7XG4gICAgICAgICAgICBleHBlY3QoY29tbWl0RXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIGNvbW1pdHRpbmcgb24gYSBmYWlsZWQgcXVlcnknLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdHguY29tbWl0KCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5lcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSB3aGVuIGNvbW1pdHRpbmcgd2hlbiBhbm90aGVyIHN0YXRlbWVudCBmYWlscycsIGRvbmUgPT4ge1xuICAgIC8vIFdoZW5cbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LmNvbW1pdCgpXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChlcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSByb2xsYmFja3MnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMilcIikudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LnJvbGxiYWNrKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAodDE6VFhOb2RlMSksICh0MjpUWE5vZGUyKSBSRVRVUk4gY291bnQodDEpLCBjb3VudCh0MilcIikudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2NvdW50KHQxKScpLnRvSW50KCkpLnRvQmUoMCk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MiknKS50b0ludCgpKS50b0JlKDApO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gY29tbWl0dGluZyBvbiBhIHJvbGxlZCBiYWNrIHF1ZXJ5JywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LnJvbGxiYWNrKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LmNvbW1pdCgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHJ1bm5pbmcgb24gYSByb2xsZWQgYmFjayB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIikudGhlbigoKSA9PiB7XG4gICAgICB0eC5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0eC5ydW4oXCJSRVRVUk4gNDJcIikuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5lcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gcnVubmluZyB3aGVuIGEgcHJldmlvdXMgc3RhdGVtZW50IGZhaWxlZCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiVEhJUyBJUyBOT1QgQ1lQSEVSXCIpXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0eC5ydW4oXCJSRVRVUk4gNDJcIilcbiAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB0eC5yb2xsYmFjaygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiB0cnlpbmcgdG8gcm9sbCBiYWNrIGEgcm9sbGVkIGJhY2sgdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucm9sbGJhY2soKS50aGVuKCgpID0+IHtcbiAgICAgICAgdHgucm9sbGJhY2soKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3ZpZGUgYm9va21hcmsgb24gY29tbWl0JywgZG9uZSA9PiB7XG4gICAgaWYgKG5lbzRqVmVyc2lvbk9sZGVyVGhhbjMxKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkubm90LnRvQmVEZWZpbmVkKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIikudGhlbigoKSA9PiB7XG4gICAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKS50aGVuKCgpID0+IHtcbiAgICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0VmFsaWRMYXN0Qm9va21hcmsoc2Vzc2lvbik7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBib29rbWFyayB3aGVuIHR4IGlzIHJvbGxlZCBiYWNrJywgZG9uZSA9PiB7XG4gICAgaWYgKG5lbzRqVmVyc2lvbk9sZGVyVGhhbjMxKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXhwZWN0KHNlc3Npb24ubGFzdEJvb2ttYXJrKCkpLm5vdC50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IHR4MSA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgdHgxLnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICB0eDEuY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgIGV4cGVjdFZhbGlkTGFzdEJvb2ttYXJrKHNlc3Npb24pO1xuICAgICAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG5cbiAgICAgICAgY29uc3QgdHgyID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHR4Mi5ydW4oJ0NSRUFURSAoKScpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHR4Mi5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZXhwZWN0VmFsaWRMYXN0Qm9va21hcmsoc2Vzc2lvbik7XG4gICAgICAgICAgICBjb25zdCBib29rbWFya0FmdGVyID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcbiAgICAgICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS50b0VxdWFsKGJvb2ttYXJrQmVmb3JlKTtcblxuICAgICAgICAgICAgY29uc3QgdHgzID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICAgICAgICB0eDMucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdHgzLmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV4cGVjdFZhbGlkTGFzdEJvb2ttYXJrKHNlc3Npb24pO1xuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYXZlIG5vIGJvb2ttYXJrIHdoZW4gdHggZmFpbHMnLCBkb25lID0+IHtcbiAgICBpZiAobmVvNGpWZXJzaW9uT2xkZXJUaGFuMzEoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkubm90LnRvQmVEZWZpbmVkKCk7XG4gICAgY29uc3QgdHgxID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG5cbiAgICB0eDEucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4MS5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgZXhwZWN0VmFsaWRMYXN0Qm9va21hcmsoc2Vzc2lvbik7XG4gICAgICAgIGNvbnN0IGJvb2ttYXJrQmVmb3JlID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcblxuICAgICAgICBjb25zdCB0eDIgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgICAgICB0eDIucnVuKCdSRVRVUk4nKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgZXhwZWN0U3ludGF4RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIGNvbnN0IGJvb2ttYXJrQWZ0ZXIgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS50b0VxdWFsKGJvb2ttYXJrQmVmb3JlKTtcblxuICAgICAgICAgIGNvbnN0IHR4MyA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgICAgIHR4My5ydW4oJ0NSRUFURSAoKScpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdHgzLmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBleHBlY3RWYWxpZExhc3RCb29rbWFyayhzZXNzaW9uKTtcbiAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBmb3IgaW52YWxpZCBib29rbWFyaycsIGRvbmUgPT4ge1xuICAgIGlmIChuZW80alZlcnNpb25PbGRlclRoYW4zMShkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGludmFsaWRCb29rbWFyayA9ICdoaSwgdGhpcyBpcyBhbiBpbnZhbGlkIGJvb2ttYXJrJztcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbihpbnZhbGlkQm9va21hcmspO1xuICAgIHR4LnJ1bignUkVUVVJOIDEnKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9CZSgnTmVvLkNsaWVudEVycm9yLlRyYW5zYWN0aW9uLkludmFsaWRCb29rbWFyaycpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcnVuIHF1ZXJ5IGZvciB1bnJlYWNoYWJsZSBib29rbWFyaycsIGRvbmUgPT4ge1xuICAgIGlmIChuZW80alZlcnNpb25PbGRlclRoYW4zMShkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR4MSA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4MS5ydW4oJ0NSRUFURSAoKScpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGV4cGVjdChyZXN1bHQuc3VtbWFyeS5jb3VudGVycy5ub2Rlc0NyZWF0ZWQoKSkudG9CZSgxKTtcblxuICAgICAgdHgxLmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBleHBlY3RWYWxpZExhc3RCb29rbWFyayhzZXNzaW9uKTtcblxuICAgICAgICBjb25zdCB1bnJlYWNoYWJsZUJvb2ttYXJrID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSArIFwiMFwiO1xuICAgICAgICBjb25zdCB0eDIgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24odW5yZWFjaGFibGVCb29rbWFyayk7XG4gICAgICAgIHR4Mi5ydW4oJ0NSRUFURSAoKScpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICBjb25zdCBleHBlY3RlZFByZWZpeCA9IG1lc3NhZ2UuaW5kZXhPZignRGF0YWJhc2Ugbm90IHVwIHRvIHRoZSByZXF1ZXN0ZWQgdmVyc2lvbicpID09PSAwO1xuICAgICAgICAgIGV4cGVjdChleHBlY3RlZFByZWZpeCkudG9CZVRydXRoeSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJvbGxiYWNrIHdoZW4gdmVyeSBmaXJzdCBydW4gZmFpbHMnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eDEgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eDEucnVuKCdSRVRVUk4gZm9vJykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0U3ludGF4RXJyb3IoZXJyb3IpO1xuXG4gICAgICBjb25zdCB0eDIgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4Mi5ydW4oJ1JFVFVSTiAxJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KDApLnRvTnVtYmVyKCkpLnRvRXF1YWwoMSk7XG4gICAgICAgIHR4Mi5jb21taXQoKS50aGVuKGRvbmUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcm9sbGJhY2sgd2hlbiBzb21lIHJ1biBmYWlscycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4MSA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4MS5ydW4oJ0NSRUFURSAoOlBlcnNvbiknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4MS5ydW4oJ1JFVFVSTiBmb28nKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdFN5bnRheEVycm9yKGVycm9yKTtcblxuICAgICAgICBjb25zdCB0eDIgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgdHgyLnJ1bignTUFUQ0ggKG46UGVyc29uKSBSRVRVUk4gY291bnQobiknKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgwKS50b051bWJlcigpKS50b0VxdWFsKDApO1xuICAgICAgICAgIHR4Mi5jb21taXQoKS50aGVuKGRvbmUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gY29tbWl0IHRyYW5zYWN0aW9uIHRoYXQgaGFkIHJ1biBmYWlsdXJlcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4MSA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4MS5ydW4oJ0NSRUFURSAoOlBlcnNvbiknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4MS5ydW4oJ1JFVFVSTiBmb28nKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdFN5bnRheEVycm9yKGVycm9yKTtcbiAgICAgICAgdHgxLmNvbW1pdCgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvci5lcnJvcjtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVycm9yTWVzc2FnZS5pbmRleE9mKCdDYW5ub3QgY29tbWl0IHN0YXRlbWVudHMgaW4gdGhpcyB0cmFuc2FjdGlvbicpO1xuICAgICAgICAgIGV4cGVjdChpbmRleCkubm90LnRvQmVMZXNzVGhhbigwKTtcblxuICAgICAgICAgIGNvbnN0IHR4MiA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgICAgIHR4Mi5ydW4oJ01BVENIIChuOlBlcnNvbikgUkVUVVJOIGNvdW50KG4pJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgwKS50b051bWJlcigpKS50b0VxdWFsKDApO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXJ2ZXIgaW5mbyBvbiBzdWNjZXNzZnVsIHF1ZXJ5JywgZG9uZSA9PiB7XG4gICAgaWYgKG5lbzRqVmVyc2lvbk9sZGVyVGhhbjMxKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gJ1JFVFVSTiAxJztcblxuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKHN0YXRlbWVudCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICBleHBlY3Qoc3VtLnNlcnZlcikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdW0uc2VydmVyLmFkZHJlc3MpLnRvRXF1YWwoJ2xvY2FsaG9zdDo3Njg3Jyk7XG4gICAgICBleHBlY3Qoc3VtLnNlcnZlci52ZXJzaW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgdHguY29tbWl0KCkudGhlbihkb25lKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHNlcnZlciBpbmZvIG9uIHN1Y2Nlc3NmdWwgcXVlcnkgdXNpbmcgb2JzZXJ2ZXInLCBkb25lID0+IHtcbiAgICBpZiAobmVvNGpWZXJzaW9uT2xkZXJUaGFuMzEoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdSRVRVUk4gMSc7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKHN0YXRlbWVudClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBvbk5leHQ6IHJlY29yZCA9PiB7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZWQ6IHN1bW1hcnkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcnZlciA9IHN1bW1hcnkuc2VydmVyO1xuXG4gICAgICAgICAgZXhwZWN0KHNlcnZlcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICBleHBlY3Qoc2VydmVyLmFkZHJlc3MpLnRvRXF1YWwoJ2xvY2FsaG9zdDo3Njg3Jyk7XG4gICAgICAgICAgZXhwZWN0KHNlcnZlci52ZXJzaW9uKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG5pY2VseSBmb3IgaWxsZWdhbCBzdGF0ZW1lbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIGV4cGVjdCgoKSA9PiB0eC5ydW4oKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHR4LnJ1bihudWxsKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHR4LnJ1bih7fSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiB0eC5ydW4oNDIpKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gdHgucnVuKFtdKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHR4LnJ1bihbJ0NSRUFURSAoKSddKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG5cbiAgICBleHBlY3QoKCkgPT4gdHgucnVuKHtzdGF0ZW1lbnQ6ICdDUkVBVEUgKCknfSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiB0eC5ydW4oe2N5cGhlcjogJ0NSRUFURSAoKSd9KSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IGEgc3RhdGVtZW50IG9iamVjdCAnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHN0YXRlbWVudCA9IHt0ZXh0OiBcIlJFVFVSTiAxIEFTIGFcIn07XG5cbiAgICB0eC5ydW4oc3RhdGVtZW50KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpLnRvSW50KCkpLnRvQmUoMSk7XG4gICAgICBkb25lKCk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIG9wZW4gd2hlbiBuZWl0aGVyIGNvbW1pdHRlZCBub3Igcm9sbGVkIGJhY2snLCAoKSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICBleHBlY3QodHguaXNPcGVuKCkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgYmUgb3BlbiBhZnRlciBjb21taXQnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgdHgucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBleHBlY3QodHguaXNPcGVuKCkpLnRvQmVGYWxzeSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgYmUgb3BlbiBhZnRlciByb2xsYmFjaycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG5cbiAgICB0eC5ydW4oJ0NSRUFURSAoKScpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucm9sbGJhY2soKS50aGVuKCgpID0+IHtcbiAgICAgICAgZXhwZWN0KHR4LmlzT3BlbigpKS50b0JlRmFsc3koKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGJlIG9wZW4gYWZ0ZXIgcnVuIGVycm9yJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIHR4LnJ1bignUkVUVVJOJykuY2F0Y2goKCkgPT4ge1xuICAgICAgZXhwZWN0KHR4LmlzT3BlbigpKS50b0JlRmFsc3koKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gZXhwZWN0U3ludGF4RXJyb3IoZXJyb3IpIHtcbiAgICBleHBlY3QoZXJyb3IuY29kZSkudG9CZSgnTmVvLkNsaWVudEVycm9yLlN0YXRlbWVudC5TeW50YXhFcnJvcicpO1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0VmFsaWRMYXN0Qm9va21hcmsoc2Vzc2lvbikge1xuICAgIGV4cGVjdChzZXNzaW9uLmxhc3RCb29rbWFyaygpKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChzZXNzaW9uLmxhc3RCb29rbWFyaygpKS5ub3QudG9CZU51bGwoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5lbzRqVmVyc2lvbk9sZGVyVGhhbjMxKGRvbmUpIHtcbiAgICAvL2xhenkgd2F5IG9mIGNoZWNraW5nIHRoZSB2ZXJzaW9uIG51bWJlclxuICAgIC8vaWYgc2VydmVyIGhhcyBiZWVuIHNldCB3ZSBrbm93IGl0IGlzIGF0IGxlYXN0XG4gICAgLy8zLjEgKHRvZG8gYWN0dWFsbHkgcGFyc2UgdGhlIHZlcnNpb24gc3RyaW5nKVxuICAgIGlmICghc2VydmVyKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgbmVvNGogPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxXCIpO1xuXG5kZXNjcmliZSgnZmxvYXRpbmcgcG9pbnQgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmbG9hdCAxLjAgJywgdGVzdFZhbCggMSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmbG9hdCAwLjAgJywgdGVzdFZhbCggMC4wICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHByZXR0eSBiaWcgZmxvYXQgJywgdGVzdFZhbCggMy40MDI4MjM1ZSszOCApICk7IC8vIE1heCAzMi1iaXRcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJlYWxseSBiaWcgZmxvYXQgJywgdGVzdFZhbCggMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggKSApOyAvLyBNYXggNjQtYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBwcmV0dHkgc21hbGwgZmxvYXQgJywgdGVzdFZhbCggMS40ZS00NSApICk7IC8vIE1pbiAzMi1iaXRcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJlYWxseSBzbWFsbCBmbG9hdCAnLCB0ZXN0VmFsKCA0LjllLTMyNCApICk7IC8vIE1pbiA2NC1iaXRcbn0pO1xuXG5kZXNjcmliZSgnaW50ZWdlciB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgMSAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoMSkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciAwICcsIHRlc3RWYWwoIG5lbzRqLmludCgwKSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIC0xICcsIHRlc3RWYWwoIG5lbzRqLmludCgtMSkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciBsYXJnZXIgdGhhbiBKUyBOdW1iZXJzIGNhbiBtb2RlbCcsIHRlc3RWYWwoIG5lbzRqLmludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBKUyBOdW1iZXJzIGNhbiBtb2RlbCcsIHRlc3RWYWwoIG5lbzRqLmludChcIjB4ODAwMDAwMDAwMDAwMDAwMFwiKSApICk7XG59KTtcblxuZGVzY3JpYmUoJ2Jvb2xlYW4gdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCB0cnVlICcsICB0ZXN0VmFsKCB0cnVlICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGZhbHNlICcsIHRlc3RWYWwoIGZhbHNlICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnc3RyaW5nIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgc3RyaW5nICcsICAgdGVzdFZhbCggXCJcIiApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBzaW1wbGUgc3RyaW5nICcsICB0ZXN0VmFsKCBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XCIgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYXdlc29tZSBzdHJpbmcgJywgdGVzdFZhbCggXCJBbGwgbWFrdCDDpXQgVGVuZ2lsLCB2w6VyIGJlZnJpYXJlLlwiICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbGlzdCB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IGxpc3RzICcsICAgdGVzdFZhbCggW10gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc3BhcnNlIGxpc3RzICcsICAgdGVzdFZhbCggWyB1bmRlZmluZWQsIDQgXSwgWyBudWxsLCA0IF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgbGlzdHMgJywgICB0ZXN0VmFsKCBbIDEsMiwzIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYm9vbGVhbiBsaXN0cyAnLCB0ZXN0VmFsKCBbIHRydWUsIGZhbHNlIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc3RyaW5nIGxpc3RzICcsICB0ZXN0VmFsKCBbIFwiXCIsIFwiaGVsbG8hXCIgXSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBsaXN0IGxpc3RzICcsICAgIHRlc3RWYWwoIFsgW10sIFsxLDIsM10gXSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBtYXAgbGlzdHMgJywgICAgIHRlc3RWYWwoIFsge30sIHthOjEyfSBdICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbWFwIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgbWFwcyAnLCB0ZXN0VmFsKCB7fSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBiYXNpYyBtYXBzICcsIHRlc3RWYWwoIHthOjEsIGI6e30sIGM6W10sIGQ6e2U6MX19ICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHNwYXJzZSBtYXBzICcsIHRlc3RWYWwoIHtmb286IHVuZGVmaW5lZCwgYmFyOiBudWxsfSwge2JhcjogbnVsbH0gKSApO1xufSk7XG5cbmRlc2NyaWJlKCdub2RlIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIG5vZGVzICcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJDUkVBVEUgKG46VXNlciB7bmFtZTonTGlzYSd9KSBSRVRVUk4gbiwgaWQobilcIikudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgdmFyIG5vZGUgPSByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ24nKTtcblxuICAgICAgICBleHBlY3QoIG5vZGUucHJvcGVydGllcyApLnRvRXF1YWwoIHsgbmFtZTpcIkxpc2FcIiB9ICk7XG4gICAgICAgIGV4cGVjdCggbm9kZS5sYWJlbHMgKS50b0VxdWFsKCBbXCJVc2VyXCJdICk7XG4gICAgICAgIC8vIGV4cGVjdCggbm9kZS5pZGVudGl0eSApLnRvRXF1YWwoIHJzWzBdWydpZChuKSddICk7IC8vIFRPRE9cbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdyZWxhdGlvbnNoaXAgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZXR1cm5pbmcgcmVsYXRpb25zaGlwcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICAvLyBXaGVuXG4gICAgc2Vzc2lvbi5ydW4oXCJDUkVBVEUgKCktW3I6VXNlciB7bmFtZTonTGlzYSd9XS0+KCkgUkVUVVJOIHIsIGlkKHIpXCIpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciByZWwgPSByZXN1bHQucmVjb3Jkc1swXS5nZXQoJ3InKTtcblxuICAgICAgICBleHBlY3QoIHJlbC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgZXhwZWN0KCByZWwudHlwZSApLnRvRXF1YWwoIFwiVXNlclwiICk7XG4gICAgICAgIC8vIGV4cGVjdCggcmVsLmlkZW50aXR5ICkudG9FcXVhbCggcnNbMF1bJ2lkKHIpJ10gKTsgLy8gVE9ET1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3BhdGggdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZXR1cm5pbmcgcGF0aHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFIHA9KDpVc2VyIHsgbmFtZTonTGlzYScgfSk8LVtyOktOT1dTIHtzaW5jZToxMjM0LjB9XS0oKSBSRVRVUk4gcFwiKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciBwYXRoID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdwJyk7XG5cbiAgICAgICAgZXhwZWN0KCBwYXRoLnN0YXJ0LnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICBleHBlY3QoIHBhdGguZW5kLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IH0gKTtcblxuICAgICAgICAvLyBBY2Nlc3NpbmcgcGF0aCBzZWdtZW50c1xuICAgICAgICBleHBlY3QoIHBhdGgubGVuZ3RoICkudG9FcXVhbCggMSApO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIgc2VnbWVudCA9IHBhdGguc2VnbWVudHNbaV07XG4gICAgICAgICAgLy8gVGhlIGRpcmVjdGlvbiBvZiB0aGUgcGF0aCBzZWdtZW50IGdvZXMgZnJvbSBsaXNhIHRvIHRoZSBibGFuayBub2RlXG4gICAgICAgICAgZXhwZWN0KCBzZWdtZW50LnN0YXJ0LnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5lbmQucHJvcGVydGllcyApLnRvRXF1YWwoIHsgfSApO1xuICAgICAgICAgIC8vIFdoaWNoIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSByZWxhdGlvbnNoaXAgaXRzZWxmIVxuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5yZWxhdGlvbnNoaXAucHJvcGVydGllcyApLnRvRXF1YWwoIHsgc2luY2U6IDEyMzQgfSApO1xuICAgICAgICB9XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsgY29uc29sZS5sb2coZXJyKTsgfSk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHRlc3RWYWwoIHZhbCwgZXhwZWN0ZWQgKSB7XG4gIHJldHVybiBmdW5jdGlvbiggZG9uZSApIHtcbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4ge3ZhbH0gYXMgdlwiLCB7dmFsOiB2YWx9KVxuICAgICAgLnRoZW4oIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG4gICAgICAgIGV4cGVjdCggcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCd2JykgKS50b0VxdWFsKCBleHBlY3RlZCB8fCB2YWwgKTtcbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikgeyBjb25zb2xlLmxvZyhlcnIpOyB9KTtcbiAgfVxufVxuIl19 +},{"../../lib/v1":7}]},{},[340,341,342,343,344,346,347,348,349,350,351,353,354,355,356,357,358,359,360,361,362,363,364]) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJsaWIvZXh0ZXJuYWwvdGV4dC1lbmNvZGluZy9pbmRleC5qcyIsImxpYi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2xpYi9lbmNvZGluZy1pbmRleGVzLmpzIiwibGliL2V4dGVybmFsL3RleHQtZW5jb2RpbmcvbGliL2VuY29kaW5nLmpzIiwibGliL3YxL2RyaXZlci5qcyIsImxpYi92MS9lcnJvci5qcyIsImxpYi92MS9ncmFwaC10eXBlcy5qcyIsImxpYi92MS9pbmRleC5qcyIsImxpYi92MS9pbnRlZ2VyLmpzIiwibGliL3YxL2ludGVybmFsL2J1Zi5qcyIsImxpYi92MS9pbnRlcm5hbC9jaC1kdW1teS5qcyIsImxpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzIiwibGliL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsImxpYi92MS9pbnRlcm5hbC9jaHVua2luZy5qcyIsImxpYi92MS9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlci5qcyIsImxpYi92MS9pbnRlcm5hbC9jb25uZWN0aW9uLXByb3ZpZGVycy5qcyIsImxpYi92MS9pbnRlcm5hbC9jb25uZWN0b3IuanMiLCJsaWIvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCJsaWIvdjEvaW50ZXJuYWwvZ2V0LXNlcnZlcnMtdXRpbC5qcyIsImxpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzIiwibGliL3YxL2ludGVybmFsL3Bvb2wuanMiLCJsaWIvdjEvaW50ZXJuYWwvcmVkaXNjb3ZlcnkuanMiLCJsaWIvdjEvaW50ZXJuYWwvcm91bmQtcm9iaW4tYXJyYXkuanMiLCJsaWIvdjEvaW50ZXJuYWwvcm91dGluZy10YWJsZS5qcyIsImxpYi92MS9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXIuanMiLCJsaWIvdjEvaW50ZXJuYWwvdHJhbnNhY3Rpb24tZXhlY3V0b3IuanMiLCJsaWIvdjEvaW50ZXJuYWwvdXRmOC5qcyIsImxpYi92MS9pbnRlcm5hbC91dGlsLmpzIiwibGliL3YxL3JlY29yZC5qcyIsImxpYi92MS9yZXN1bHQtc3VtbWFyeS5qcyIsImxpYi92MS9yZXN1bHQuanMiLCJsaWIvdjEvcm91dGluZy1kcml2ZXIuanMiLCJsaWIvdjEvc2Vzc2lvbi5qcyIsImxpYi92MS90cmFuc2FjdGlvbi5qcyIsImxpYi92ZXJzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9hcGkuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2J1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL25vZGUuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL3JlcG9ydGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvcGVtLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9wZW0uanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2FycmF5L2Zyb20uanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2tleXMuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zZXQuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjay5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldC5qcyIsIm5vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMuanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIm5vZGVfbW9kdWxlcy9icm9yYW5kL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXItcmVzb2x2ZS9lbXB0eS5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYXV0aENpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2RlY3J5cHRlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9lbmNyeXB0ZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZ2hhc2guanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jZmIxLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY3RyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2VjYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9vZmIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvc3RyZWFtQ2lwaGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktY2lwaGVyL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1kZXMvbW9kZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1yc2EvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2FsZ29zLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9jdXJ2ZXMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3NpZ24uanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL3ZlcmlmeS5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXItc2hpbXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2lwaGVyLWJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb20uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2tleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zZXQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXN0cm9uZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jcmVhdGUtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0ta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLXN0ZXAuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fa2V5b2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXNhcC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190YXNrLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZGVmaW5lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MtZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc2V0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc2V0LnRvLWpzb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvbWQ1LmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2JjLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2NpcGhlci5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9kZXMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvZWRlLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2RoLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9nZW5lcmF0ZVByaW1lLmpzIiwibm9kZV9tb2R1bGVzL2RpZmZpZS1oZWxsbWFuL2xpYi9wcmltZXMuanNvbiIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9wYWNrYWdlLmpzb24iLCJub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIm5vZGVfbW9kdWxlcy9ldnBfYnl0ZXN0b2tleS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2htYWMtZHJiZy9saWIvaG1hYy1kcmJnLmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaW5kZXhvZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2xvbGV4L3NyYy9sb2xleC1zcmMuanMiLCJub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcyIsIm5vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL29zLWJyb3dzZXJpZnkvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2Flc2lkLmpzb24iLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hc24xLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvY2VydGlmaWNhdGUuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9maXhQcm9jLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGF0aC1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3Bia2RmMi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3Bia2RmMi9wcmVjb25kaXRpb24uanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLmpzIiwibm9kZV9tb2R1bGVzL3JpcGVtZDE2MC9saWIvcmlwZW1kMTYwLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGExLmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyMjQuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMzg0LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanMiLCJub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy92bS1icm93c2VyaWZ5L2luZGV4LmpzIiwic3JjL3YxL2RyaXZlci5qcyIsInNyYy92MS9lcnJvci5qcyIsInNyYy92MS9ncmFwaC10eXBlcy5qcyIsInNyYy92MS9pbmRleC5qcyIsInNyYy92MS9pbnRlZ2VyLmpzIiwic3JjL3YxL2ludGVybmFsL2J1Zi5qcyIsInNyYy92MS9pbnRlcm5hbC9jaC1kdW1teS5qcyIsInNyYy92MS9pbnRlcm5hbC9jaC1ub2RlLmpzIiwic3JjL3YxL2ludGVybmFsL2NoLXdlYnNvY2tldC5qcyIsInNyYy92MS9pbnRlcm5hbC9jaHVua2luZy5qcyIsInNyYy92MS9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlci5qcyIsInNyYy92MS9pbnRlcm5hbC9jb25uZWN0aW9uLXByb3ZpZGVycy5qcyIsInNyYy92MS9pbnRlcm5hbC9jb25uZWN0b3IuanMiLCJzcmMvdjEvaW50ZXJuYWwvZmVhdHVyZXMuanMiLCJzcmMvdjEvaW50ZXJuYWwvZ2V0LXNlcnZlcnMtdXRpbC5qcyIsInNyYy92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzIiwic3JjL3YxL2ludGVybmFsL3Bvb2wuanMiLCJzcmMvdjEvaW50ZXJuYWwvcmVkaXNjb3ZlcnkuanMiLCJzcmMvdjEvaW50ZXJuYWwvcm91bmQtcm9iaW4tYXJyYXkuanMiLCJzcmMvdjEvaW50ZXJuYWwvcm91dGluZy10YWJsZS5qcyIsInNyYy92MS9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXIuanMiLCJzcmMvdjEvaW50ZXJuYWwvdHJhbnNhY3Rpb24tZXhlY3V0b3IuanMiLCJzcmMvdjEvaW50ZXJuYWwvdXRmOC5qcyIsInNyYy92MS9pbnRlcm5hbC91dGlsLmpzIiwic3JjL3YxL3JlY29yZC5qcyIsInNyYy92MS9yZXN1bHQtc3VtbWFyeS5qcyIsInNyYy92MS9yZXN1bHQuanMiLCJzcmMvdjEvcm91dGluZy1kcml2ZXIuanMiLCJzcmMvdjEvc2Vzc2lvbi5qcyIsInNyYy92MS90cmFuc2FjdGlvbi5qcyIsInNyYy92ZXJzaW9uLmpzIiwidGVzdC9pbnRlcm5hbC9idWYudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvY2h1bmtpbmcudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXIudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvY29ubmVjdG9yLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL2Zha2UtY29ubmVjdGlvbi5qcyIsInRlc3QvaW50ZXJuYWwvZ2V0LXNlcnZlcnMtdXRpbC50ZXN0LmpzIiwidGVzdC9pbnRlcm5hbC9wYWNrc3RyZWFtLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3Bvb2wudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvcmVkaXNjb3ZlcnkudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvcm91bmQtcm9iaW4tYXJyYXkudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvcm91dGluZy10YWJsZS50ZXN0LmpzIiwidGVzdC9pbnRlcm5hbC90aW1lcnMtdXRpbC5qcyIsInRlc3QvaW50ZXJuYWwvdGxzLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3RyYW5zYWN0aW9uLWV4ZWN1dG9yLnRlc3QuanMiLCJ0ZXN0L2ludGVybmFsL3V0ZjgudGVzdC5qcyIsInRlc3QvaW50ZXJuYWwvdXRpbC50ZXN0LmpzIiwidGVzdC92MS9kcml2ZXIudGVzdC5qcyIsInRlc3QvdjEvaW50ZWdlci50ZXN0LmpzIiwidGVzdC92MS9wYWNrYWdlLnRlc3QuanMiLCJ0ZXN0L3YxL3JlY29yZC50ZXN0LmpzIiwidGVzdC92MS9yZXN1bHQudGVzdC5qcyIsInRlc3QvdjEvc2Vzc2lvbi50ZXN0LmpzIiwidGVzdC92MS90cmFuc2FjdGlvbi50ZXN0LmpzIiwidGVzdC92MS90eXBlcy50ZXN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdlNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckJBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ24yR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pFQTs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDakxBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM1R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzd2REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMxRkE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBOztBQ0RBO0FBQ0E7O0FDREE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxREE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTs7QUNBQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7O0FDRkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7Ozs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMU9BO0FBQ0E7QUFDQTtBQUNBOztBQ0hBOztBQ0FBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMzSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2hRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2WEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1d0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM5U0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcGpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDalFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDaHBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN4RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNoT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMzR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BDQTtBQUNBOztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDekJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM1NkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdGlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvREE7QUFDQTs7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2hCQTtBQUNBOztBQ0RBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDN0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNuUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUM3TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ25FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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bkJILEVBbUJLLEtBbkJMLENBbUJXLFVBQVMsR0FBVCxFQUFjO0FBQUUsY0FBUSxHQUFSLENBQVksR0FBWjtBQUFtQixLQW5COUM7QUFvQkQsR0ExQkQ7QUEyQkQsQ0E1QkQ7O0FBOEJBLFNBQVMsT0FBVCxDQUFrQixHQUFsQixFQUF1QixRQUF2QixFQUFrQztBQUNoQyxTQUFPLFVBQVUsSUFBVixFQUFpQjtBQUN0QixRQUFJLFNBQVMsTUFBTSxNQUFOLENBQWEsa0JBQWIsRUFBaUMsTUFBTSxJQUFOLENBQVcsS0FBWCxDQUFpQixPQUFqQixFQUEwQixPQUExQixDQUFqQyxDQUFiO0FBQ0EsUUFBSSxVQUFVLE9BQU8sT0FBUCxFQUFkOztBQUVBLFlBQVEsR0FBUixDQUFZLG1CQUFaLEVBQWlDLEVBQUMsS0FBSyxHQUFOLEVBQWpDLEVBQ0csSUFESCxDQUNTLFVBQVUsTUFBVixFQUFtQjtBQUN4QixhQUFRLE9BQU8sT0FBUCxDQUFlLENBQWYsRUFBa0IsR0FBbEIsQ0FBc0IsR0FBdEIsQ0FBUixFQUFxQyxPQUFyQyxDQUE4QyxZQUFZLEdBQTFEO0FBQ0EsYUFBTyxLQUFQO0FBQ0E7QUFDRCxLQUxILEVBS0ssS0FMTCxDQUtXLFVBQVMsR0FBVCxFQUFjO0FBQUUsY0FBUSxHQUFSLENBQVksR0FBWjtBQUFtQixLQUw5QztBQU1ELEdBVkQ7QUFXRCIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvLyBUaGlzIGlzIGZyZWUgYW5kIHVuZW5jdW1iZXJlZCBzb2Z0d2FyZSByZWxlYXNlZCBpbnRvIHRoZSBwdWJsaWMgZG9tYWluLlxuLy8gU2VlIExJQ0VOU0UubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbnZhciBlbmNvZGluZyA9IHJlcXVpcmUoXCIuL2xpYi9lbmNvZGluZy5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFRleHRFbmNvZGVyOiBlbmNvZGluZy5UZXh0RW5jb2RlcixcbiAgVGV4dERlY29kZXI6IGVuY29kaW5nLlRleHREZWNvZGVyLFxufTtcbiIsIihmdW5jdGlvbihnbG9iYWwpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuICBnbG9iYWxbXCJlbmNvZGluZy1pbmRleGVzXCJdID0ge1xuICBcImJpZzVcIjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTczOTIsMTk1MDYsMTc5MjMsMTc4MzAsMTc3ODQsMTYwMzU5LDE5ODMxLDE3ODQzLDE2Mjk5MywxOTY4MiwxNjMwMTMsMTUyNTMsMTgyMzAsMTgyNDQsMTk1MjcsMTk1MjAsMTQ4MTU5LDE0NDkxOSwxNjA1OTQsMTU5MzcxLDE1OTk1NCwxOTU0MywxNzI4ODEsMTgyNTUsMTc4ODIsMTk1ODksMTYyOTI0LDE5NzE5LDE5MTA4LDE4MDgxLDE1ODQ5OSwyOTIyMSwxNTQxOTYsMTM3ODI3LDE0Njk1MCwxNDcyOTcsMjYxODksMjIyNjcsbnVsbCwzMjE0OSwyMjgxMywxNjY4NDEsMTU4NjAsMzg3MDgsMTYyNzk5LDIzNTE1LDEzODU5MCwyMzIwNCwxMzg2MSwxNzE2OTYsMjMyNDksMjM0NzksMjM4MDQsMjY0NzgsMzQxOTUsMTcwMzA5LDI5NzkzLDI5ODUzLDE0NDUzLDEzODU3OSwxNDUwNTQsMTU1NjgxLDE2MTA4LDE1MzgyMiwxNTA5MywzMTQ4NCw0MDg1NSwxNDc4MDksMTY2MTU3LDE0Mzg1MCwxMzM3NzAsMTQzOTY2LDE3MTYyLDMzOTI0LDQwODU0LDM3OTM1LDE4NzM2LDM0MzIzLDIyNjc4LDM4NzMwLDM3NDAwLDMxMTg0LDMxMjgyLDI2MjA4LDI3MTc3LDM0OTczLDI5NzcyLDMxNjg1LDI2NDk4LDMxMjc2LDIxMDcxLDM2OTM0LDEzNTQyLDI5NjM2LDE1NTA2NSwyOTg5NCw0MDkwMywyMjQ1MSwxODczNSwyMTU4MCwxNjY4OSwxNDUwMzgsMjI1NTIsMzEzNDYsMTYyNjYxLDM1NzI3LDE4MDk0LDE1OTM2OCwxNjc2OSwxNTUwMzMsMzE2NjIsMTQwNDc2LDQwOTA0LDE0MDQ4MSwxNDA0ODksMTQwNDkyLDQwOTA1LDM0MDUyLDE0NDgyNywxNjU2NCw0MDkwNiwxNzYzMywxNzU2MTUsMjUyODEsMjg3ODIsNDA5MDcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMjczNiwxMjczNywxMjczOCwxMjczOSwxMjc0MCwxMzEzNDAsMTI3NDEsMTMxMjgxLDEzMTI3NywxMjc0MiwxMjc0MywxMzEyNzUsMTM5MjQwLDEyNzQ0LDEzMTI3NCwxMjc0NSwxMjc0NiwxMjc0NywxMjc0OCwxMzEzNDIsMTI3NDksMTI3NTAsMjU2LDE5Myw0NjEsMTkyLDI3NCwyMDEsMjgyLDIwMCwzMzIsMjExLDQ2NSwyMTAsbnVsbCw3ODcwLG51bGwsNzg3MiwyMDIsMjU3LDIyNSw0NjIsMjI0LDU5MywyNzUsMjMzLDI4MywyMzIsMjk5LDIzNyw0NjQsMjM2LDMzMywyNDMsNDY2LDI0MiwzNjMsMjUwLDQ2OCwyNDksNDcwLDQ3Miw0NzQsNDc2LDI1MixudWxsLDc4NzEsbnVsbCw3ODczLDIzNCw2MDksOTE3OCw5MTc5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE3Mjk2OSwxMzU0OTMsbnVsbCwyNTg2NixudWxsLG51bGwsMjAwMjksMjgzODEsNDAyNzAsMzczNDMsbnVsbCxudWxsLDE2MTU4OSwyNTc0NSwyMDI1MCwyMDI2NCwyMDM5MiwyMDgyMiwyMDg1MiwyMDg5MiwyMDk2NCwyMTE1MywyMTE2MCwyMTMwNywyMTMyNiwyMTQ1NywyMTQ2NCwyMjI0MiwyMjc2OCwyMjc4OCwyMjc5MSwyMjgzNCwyMjgzNiwyMzM5OCwyMzQ1NCwyMzQ1NSwyMzcwNiwyNDE5OCwyNDYzNSwyNTk5MywyNjYyMiwyNjYyOCwyNjcyNSwyNzk4MiwyODg2MCwzMDAwNSwzMjQyMCwzMjQyOCwzMjQ0MiwzMjQ1NSwzMjQ2MywzMjQ3OSwzMjUxOCwzMjU2NywzMzQwMiwzMzQ4NywzMzY0NywzNTI3MCwzNTc3NCwzNTgxMCwzNjcxMCwzNjcxMSwzNjcxOCwyOTcxMywzMTk5NiwzMjIwNSwyNjk1MCwzMTQzMywyMTAzMSxudWxsLG51bGwsbnVsbCxudWxsLDM3MjYwLDMwOTA0LDM3MjE0LDMyOTU2LG51bGwsMzYxMDcsMzMwMTQsMTMzNjA3LG51bGwsbnVsbCwzMjkyNyw0MDY0NywxOTY2MSw0MDM5Myw0MDQ2MCwxOTUxOCwxNzE1MTAsMTU5NzU4LDQwNDU4LDE3MjMzOSwxMzc2MSxudWxsLDI4MzE0LDMzMzQyLDI5OTc3LG51bGwsMTg3MDUsMzk1MzIsMzk1NjcsNDA4NTcsMzExMTEsMTY0OTcyLDEzODY5OCwxMzI1NjAsMTQyMDU0LDIwMDA0LDIwMDk3LDIwMDk2LDIwMTAzLDIwMTU5LDIwMjAzLDIwMjc5LDEzMzg4LDIwNDEzLDE1OTQ0LDIwNDgzLDIwNjE2LDEzNDM3LDEzNDU5LDEzNDc3LDIwODcwLDIyNzg5LDIwOTU1LDIwOTg4LDIwOTk3LDIwMTA1LDIxMTEzLDIxMTM2LDIxMjg3LDEzNzY3LDIxNDE3LDEzNjQ5LDIxNDI0LDEzNjUxLDIxNDQyLDIxNTM5LDEzNjc3LDEzNjgyLDEzOTUzLDIxNjUxLDIxNjY3LDIxNjg0LDIxNjg5LDIxNzEyLDIxNzQzLDIxNzg0LDIxNzk1LDIxODAwLDEzNzIwLDIxODIzLDEzNzMzLDEzNzU5LDIxOTc1LDEzNzY1LDE2MzIwNCwyMTc5NyxudWxsLDEzNDIxMCwxMzQ0MjEsMTUxODUxLDIxOTA0LDE0MjUzNCwxNDgyOCwxMzE5MDUsMzY0MjIsMTUwOTY4LDE2OTE4OSwxNjQ2NywxNjQwMzAsMzA1ODYsMTQyMzkyLDE0OTAwLDE4Mzg5LDE2NDE4OSwxNTgxOTQsMTUxMDE4LDI1ODIxLDEzNDUyNCwxMzUwOTIsMTM0MzU3LDEzNTQxMiwyNTc0MSwzNjQ3OCwxMzQ4MDYsMTM0MTU1LDEzNTAxMiwxNDI1MDUsMTY0NDM4LDE0ODY5MSxudWxsLDEzNDQ3MCwxNzA1NzMsMTY0MDczLDE4NDIwLDE1MTIwNywxNDI1MzAsMzk2MDIsMTQ5NTEsMTY5NDYwLDE2MzY1LDEzNTc0LDE1MjI2MywxNjk5NDAsMTYxOTkyLDE0MjY2MCw0MDMwMiwzODkzMyxudWxsLDE3MzY5LDE1NTgxMywyNTc4MCwyMTczMSwxNDI2NjgsMTQyMjgyLDEzNTI4NywxNDg0MywxMzUyNzksMTU3NDAyLDE1NzQ2MiwxNjIyMDgsMjU4MzQsMTUxNjM0LDEzNDIxMSwzNjQ1NiwxMzk2ODEsMTY2NzMyLDEzMjkxMyxudWxsLDE4NDQzLDEzMTQ5NywxNjM3OCwyMjY0MywxNDI3MzMsbnVsbCwxNDg5MzYsMTMyMzQ4LDE1NTc5OSwxMzQ5ODgsMTM0NTUwLDIxODgxLDE2NTcxLDE3MzM4LG51bGwsMTkxMjQsMTQxOTI2LDEzNTMyNSwzMzE5NCwzOTE1NywxMzQ1NTYsMjU0NjUsMTQ4NDYsMTQxMTczLDM2Mjg4LDIyMTc3LDI1NzI0LDE1OTM5LG51bGwsMTczNTY5LDEzNDY2NSwxNDIwMzEsMTQyNTM3LG51bGwsMTM1MzY4LDE0NTg1OCwxNDczOCwxNDg1NCwxNjQ1MDcsMTM2ODgsMTU1MjA5LDEzOTQ2MywyMjA5OCwxMzQ5NjEsMTQyNTE0LDE2OTc2MCwxMzUwMCwyNzcwOSwxNTEwOTksbnVsbCxudWxsLDE2MTE0MCwxNDI5ODcsMTM5Nzg0LDE3MzY1OSwxNjcxMTcsMTM0Nzc4LDEzNDE5NiwxNTc3MjQsMzI2NTksMTM1Mzc1LDE0MTMxNSwxNDE2MjUsMTM4MTksMTUyMDM1LDEzNDc5NiwxMzUwNTMsMTM0ODI2LDE2Mjc1LDEzNDk2MCwxMzQ0NzEsMTM1NTAzLDEzNDczMixudWxsLDEzNDgyNywxMzQwNTcsMTM0NDcyLDEzNTM2MCwxMzU0ODUsMTYzNzcsMTQwOTUwLDI1NjUwLDEzNTA4NSwxNDQzNzIsMTYxMzM3LDE0MjI4NiwxMzQ1MjYsMTM0NTI3LDE0MjQxNywxNDI0MjEsMTQ4NzIsMTM0ODA4LDEzNTM2NywxMzQ5NTgsMTczNjE4LDE1ODU0NCwxNjcxMjIsMTY3MzIxLDE2NzExNCwzODMxNCwyMTcwOCwzMzQ3NiwyMTk0NSxudWxsLDE3MTcxNSwzOTk3NCwzOTYwNiwxNjE2MzAsMTQyODMwLDI4OTkyLDMzMTMzLDMzMDA0LDIzNTgwLDE1NzA0MiwzMzA3NiwxNDIzMSwyMTM0MywxNjQwMjksMzczMDIsMTM0OTA2LDEzNDY3MSwxMzQ3NzUsMTM0OTA3LDEzNzg5LDE1MTAxOSwxMzgzMywxMzQzNTgsMjIxOTEsMTQxMjM3LDEzNTM2OSwxMzQ2NzIsMTM0Nzc2LDEzNTI4OCwxMzU0OTYsMTY0MzU5LDEzNjI3NywxMzQ3NzcsMTUxMTIwLDE0Mjc1NiwyMzEyNCwxMzUxOTcsMTM1MTk4LDEzNTQxMywxMzU0MTQsMjI0MjgsMTM0NjczLDE2MTQyOCwxNjQ1NTcsMTM1MDkzLDEzNDc3OSwxNTE5MzQsMTQwODMsMTM1MDk0LDEzNTU1MiwxNTIyODAsMTcyNzMzLDE0OTk3OCwxMzcyNzQsMTQ3ODMxLDE2NDQ3NiwyMjY4MSwyMTA5NiwxMzg1MCwxNTM0MDUsMzE2NjYsMjM0MDAsMTg0MzIsMTkyNDQsNDA3NDMsMTg5MTksMzk5NjcsMzk4MjEsMTU0NDg0LDE0MzY3NywyMjAxMSwxMzgxMCwyMjE1MywyMDAwOCwyMjc4NiwxMzgxNzcsMTk0NjgwLDM4NzM3LDEzMTIwNiwyMDA1OSwyMDE1NSwxMzYzMCwyMzU4NywyNDQwMSwyNDUxNiwxNDU4NiwyNTE2NCwyNTkwOSwyNzUxNCwyNzcwMSwyNzcwNiwyODc4MCwyOTIyNywyMDAxMiwyOTM1NywxNDk3MzcsMzI1OTQsMzEwMzUsMzE5OTMsMzI1OTUsMTU2MjY2LDEzNTA1LG51bGwsMTU2NDkxLDMyNzcwLDMyODk2LDE1NzIwMiwxNTgwMzMsMjEzNDEsMzQ5MTYsMzUyNjUsMTYxOTcwLDM1NzQ0LDM2MTI1LDM4MDIxLDM4MjY0LDM4MjcxLDM4Mzc2LDE2NzQzOSwzODg4NiwzOTAyOSwzOTExOCwzOTEzNCwzOTI2NywxNzAwMDAsNDAwNjAsNDA0NzksNDA2NDQsMjc1MDMsNjM3NTEsMjAwMjMsMTMxMjA3LDM4NDI5LDI1MTQzLDM4MDUwLG51bGwsMjA1MzksMjgxNTgsMTcxMTIzLDQwODcwLDE1ODE3LDM0OTU5LDE0Nzc5MCwyODc5MSwyMzc5NywxOTIzMiwxNTIwMTMsMTM2NTcsMTU0OTI4LDI0ODY2LDE2NjQ1MCwzNjc3NSwzNzM2NiwyOTA3MywyNjM5MywyOTYyNiwxNDQwMDEsMTcyMjk1LDE1NDk5LDEzNzYwMCwxOTIxNiwzMDk0OCwyOTY5OCwyMDkxMCwxNjU2NDcsMTYzOTMsMjcyMzUsMTcyNzMwLDE2OTMxLDM0MzE5LDEzMzc0MywzMTI3NCwxNzAzMTEsMTY2NjM0LDM4NzQxLDI4NzQ5LDIxMjg0LDEzOTM5MCwzNzg3NiwzMDQyNSwxNjYzNzEsNDA4NzEsMzA2ODUsMjAxMzEsMjA0NjQsMjA2NjgsMjAwMTUsMjAyNDcsNDA4NzIsMjE1NTYsMzIxMzksMjI2NzQsMjI3MzYsMTM4Njc4LDI0MjEwLDI0MjE3LDI0NTE0LDE0MTA3NCwyNTk5NSwxNDQzNzcsMjY5MDUsMjcyMDMsMTQ2NTMxLDI3OTAzLG51bGwsMjkxODQsMTQ4NzQxLDI5NTgwLDE2MDkxLDE1MDAzNSwyMzMxNywyOTg4MSwzNTcxNSwxNTQ3ODgsMTUzMjM3LDMxMzc5LDMxNzI0LDMxOTM5LDMyMzY0LDMzNTI4LDM0MTk5LDQwODczLDM0OTYwLDQwODc0LDM2NTM3LDQwODc1LDM2ODE1LDM0MTQzLDM5MzkyLDM3NDA5LDQwODc2LDE2NzM1MywxMzYyNTUsMTY0OTcsMTcwNTgsMjMwNjYsbnVsbCxudWxsLG51bGwsMzkwMTYsMjY0NzUsMTcwMTQsMjIzMzMsbnVsbCwzNDI2MiwxNDk4ODMsMzM0NzEsMTYwMDEzLDE5NTg1LDE1OTA5MiwyMzkzMSwxNTg0ODUsMTU5Njc4LDQwODc3LDQwODc4LDIzNDQ2LDQwODc5LDI2MzQzLDMyMzQ3LDI4MjQ3LDMxMTc4LDE1NzUyLDE3NjAzLDE0Mzk1OCwxNDEyMDYsMTczMDYsMTc3MTgsbnVsbCwyMzc2NSwxNDYyMDIsMzU1NzcsMjM2NzIsMTU2MzQsMTQ0NzIxLDIzOTI4LDQwODgyLDI5MDE1LDE3NzUyLDE0NzY5MiwxMzg3ODcsMTk1NzUsMTQ3MTIsMTMzODYsMTMxNDkyLDE1ODc4NSwzNTUzMiwyMDQwNCwxMzE2NDEsMjI5NzUsMzMxMzIsMzg5OTgsMTcwMjM0LDI0Mzc5LDEzNDA0NyxudWxsLDEzOTcxMywxNjYyNTMsMTY2NDIsMTgxMDcsMTY4MDU3LDE2MTM1LDQwODgzLDE3MjQ2OSwxNjYzMiwxNDI5NCwxODE2NywxNTg3OTAsMTY3NjQsMTY1NTU0LDE2MDc2NywxNzc3MywxNDU0OCwxNTI3MzAsMTc3NjEsMTc2OTEsMTk4NDksMTk1NzksMTk4MzAsMTc4OTgsMTYzMjgsMTUwMjg3LDEzOTIxLDE3NjMwLDE3NTk3LDE2ODc3LDIzODcwLDIzODgwLDIzODk0LDE1ODY4LDE0MzUxLDIzOTcyLDIzOTkzLDE0MzY4LDE0MzkyLDI0MTMwLDI0MjUzLDI0MzU3LDI0NDUxLDE0NjAwLDE0NjEyLDE0NjU1LDE0NjY5LDI0NzkxLDI0ODkzLDIzNzgxLDE0NzI5LDI1MDE1LDI1MDE3LDI1MDM5LDE0Nzc2LDI1MTMyLDI1MjMyLDI1MzE3LDI1MzY4LDE0ODQwLDIyMTkzLDE0ODUxLDI1NTcwLDI1NTk1LDI1NjA3LDI1NjkwLDE0OTIzLDI1NzkyLDIzODI5LDIyMDQ5LDQwODYzLDE0OTk5LDI1OTkwLDE1MDM3LDI2MTExLDI2MTk1LDE1MDkwLDI2MjU4LDE1MTM4LDI2MzkwLDE1MTcwLDI2NTMyLDI2NjI0LDE1MTkyLDI2Njk4LDI2NzU2LDE1MjE4LDE1MjE3LDE1MjI3LDI2ODg5LDI2OTQ3LDI5Mjc2LDI2OTgwLDI3MDM5LDI3MDEzLDE1MjkyLDI3MDk0LDE1MzI1LDI3MjM3LDI3MjUyLDI3MjQ5LDI3MjY2LDE1MzQwLDI3Mjg5LDE1MzQ2LDI3MzA3LDI3MzE3LDI3MzQ4LDI3MzgyLDI3NTIxLDI3NTg1LDI3NjI2LDI3NzY1LDI3ODE4LDE1NTYzLDI3OTA2LDI3OTEwLDI3OTQyLDI4MDMzLDE1NTk5LDI4MDY4LDI4MDgxLDI4MTgxLDI4MTg0LDI4MjAxLDI4Mjk0LDE2NjMzNiwyODM0NywyODM4NiwyODM3OCw0MDgzMSwyODM5MiwyODM5MywyODQ1MiwyODQ2OCwxNTY4NiwxNDcyNjUsMjg1NDUsMjg2MDYsMTU3MjIsMTU3MzMsMjkxMTEsMjM3MDUsMTU3NTQsMjg3MTYsMTU3NjEsMjg3NTIsMjg3NTYsMjg3ODMsMjg3OTksMjg4MDksMTMxODc3LDE3MzQ1LDEzODA5LDEzNDg3MiwxNDcxNTksMjI0NjIsMTU5NDQzLDI4OTkwLDE1MzU2OCwxMzkwMiwyNzA0MiwxNjY4ODksMjM0MTIsMzEzMDUsMTUzODI1LDE2OTE3NywzMTMzMywzMTM1NywxNTQwMjgsMzE0MTksMzE0MDgsMzE0MjYsMzE0MjcsMjkxMzcsMTU2ODEzLDE2ODQyLDMxNDUwLDMxNDUzLDMxNDY2LDE2ODc5LDIxNjgyLDE1NDYyNSwzMTQ5OSwzMTU3MywzMTUyOSwxNTIzMzQsMTU0ODc4LDMxNjUwLDMxNTk5LDMzNjkyLDE1NDU0OCwxNTg4NDcsMzE2OTYsMzM4MjUsMzE2MzQsMzE2NzIsMTU0OTEyLDE1Nzg5LDE1NDcyNSwzMzkzOCwzMTczOCwzMTc1MCwzMTc5NywxNTQ4MTcsMzE4MTIsMzE4NzUsMTQ5NjM0LDMxOTEwLDI2MjM3LDE0ODg1NiwzMTk0NSwzMTk0MywzMTk3NCwzMTg2MCwzMTk4NywzMTk4OSwzMTk1MCwzMjM1OSwxNzY5MywxNTkzMDAsMzIwOTMsMTU5NDQ2LDI5ODM3LDMyMTM3LDMyMTcxLDI4OTgxLDMyMTc5LDMyMjEwLDE0NzU0MywxNTU2ODksMzIyMjgsMTU2MzUsMzIyNDUsMTM3MjA5LDMyMjI5LDE2NDcxNywzMjI4NSwxNTU5MzcsMTU1OTk0LDMyMzY2LDMyNDAyLDE3MTk1LDM3OTk2LDMyMjk1LDMyNTc2LDMyNTc3LDMyNTgzLDMxMDMwLDE1NjM2OCwzOTM5MywzMjY2MywxNTY0OTcsMzI2NzUsMTM2ODAxLDEzMTE3NiwxNzc1NiwxNDUyNTQsMTc2NjcsMTY0NjY2LDMyNzYyLDE1NjgwOSwzMjc3MywzMjc3NiwzMjc5NywzMjgwOCwzMjgxNSwxNzIxNjcsMTU4OTE1LDMyODI3LDMyODI4LDMyODY1LDE0MTA3NiwxODgyNSwxNTcyMjIsMTQ2OTE1LDE1NzQxNiwyNjQwNSwzMjkzNSwxNjY0NzIsMzMwMzEsMzMwNTAsMjI3MDQsMTQxMDQ2LDI3Nzc1LDE1NjgyNCwxNTE0ODAsMjU4MzEsMTM2MzMwLDMzMzA0LDEzNzMxMCwyNzIxOSwxNTAxMTcsMTUwMTY1LDE3NTMwLDMzMzIxLDEzMzkwMSwxNTgyOTAsMTQ2ODE0LDIwNDczLDEzNjQ0NSwzNDAxOCwzMzYzNCwxNTg0NzQsMTQ5OTI3LDE0NDY4OCwxMzcwNzUsMTQ2OTM2LDMzNDUwLDI2OTA3LDE5NDk2NCwxNjg1OSwzNDEyMywzMzQ4OCwzMzU2MiwxMzQ2NzgsMTM3MTQwLDE0MDE3LDE0Mzc0MSwxNDQ3MzAsMzM0MDMsMzM1MDYsMzM1NjAsMTQ3MDgzLDE1OTEzOSwxNTg0NjksMTU4NjE1LDE0NDg0NiwxNTgwNywzMzU2NSwyMTk5NiwzMzY2OSwxNzY3NSwxNTkxNDEsMzM3MDgsMzM3MjksMzM3NDcsMTM0MzgsMTU5NDQ0LDI3MjIzLDM0MTM4LDEzNDYyLDE1OTI5OCwxNDMwODcsMzM4ODAsMTU0NTk2LDMzOTA1LDE1ODI3LDE3NjM2LDI3MzAzLDMzODY2LDE0NjYxMywzMTA2NCwzMzk2MCwxNTg2MTQsMTU5MzUxLDE1OTI5OSwzNDAxNCwzMzgwNywzMzY4MSwxNzU2OCwzMzkzOSwzNDAyMCwxNTQ3NjksMTY5NjAsMTU0ODE2LDE3NzMxLDM0MTAwLDIzMjgyLDE1OTM4NSwxNzcwMywzNDE2MywxNzY4NiwyNjU1OSwzNDMyNiwxNjU0MTMsMTY1NDM1LDM0MjQxLDE1OTg4MCwzNDMwNiwxMzY1NzgsMTU5OTQ5LDE5NDk5NCwxNzc3MCwzNDM0NCwxMzg5NiwxMzczNzgsMjE0OTUsMTYwNjY2LDM0NDMwLDM0NjczLDE3MjI4MCwzNDc5OCwxNDIzNzUsMzQ3MzcsMzQ3NzgsMzQ4MzEsMjIxMTMsMzQ0MTIsMjY3MTAsMTc5MzUsMzQ4ODUsMzQ4ODYsMTYxMjQ4LDE0Njg3MywxNjEyNTIsMzQ5MTAsMzQ5NzIsMTgwMTEsMzQ5OTYsMzQ5OTcsMjU1MzcsMzUwMTMsMzA1ODMsMTYxNTUxLDM1MjA3LDM1MjEwLDM1MjM4LDM1MjQxLDM1MjM5LDM1MjYwLDE2NjQzNywzNTMwMywxNjIwODQsMTYyNDkzLDM1NDg0LDMwNjExLDM3Mzc0LDM1NDcyLDE2MjM5MywzMTQ2NSwxNjI2MTgsMTQ3MzQzLDE4MTk1LDE2MjYxNiwyOTA1MiwzNTU5NiwzNTYxNSwxNTI2MjQsMTUyOTMzLDM1NjQ3LDM1NjYwLDM1NjYxLDM1NDk3LDE1MDEzOCwzNTcyOCwzNTczOSwzNTUwMywxMzY5MjcsMTc5NDEsMzQ4OTUsMzU5OTUsMTYzMTU2LDE2MzIxNSwxOTUwMjgsMTQxMTcsMTYzMTU1LDM2MDU0LDE2MzIyNCwxNjMyNjEsMzYxMTQsMzYwOTksMTM3NDg4LDM2MDU5LDI4NzY0LDM2MTEzLDE1MDcyOSwxNjA4MCwzNjIxNSwzNjI2NSwxNjM4NDIsMTM1MTg4LDE0OTg5OCwxNTIyOCwxNjQyODQsMTYwMDEyLDMxNDYzLDM2NTI1LDM2NTM0LDM2NTQ3LDM3NTg4LDM2NjMzLDM2NjUzLDE2NDcwOSwxNjQ4ODIsMzY3NzMsMzc2MzUsMTcyNzAzLDEzMzcxMiwzNjc4NywxODczMCwxNjYzNjYsMTY1MTgxLDE0Njg3NSwyNDMxMiwxNDM5NzAsMzY4NTcsMTcyMDUyLDE2NTU2NCwxNjUxMjEsMTQwMDY5LDE0NzIwLDE1OTQ0NywzNjkxOSwxNjUxODAsMTYyNDk0LDM2OTYxLDE2NTIyOCwxNjUzODcsMzcwMzIsMTY1NjUxLDM3MDYwLDE2NTYwNiwzNzAzOCwzNzExNywzNzIyMywxNTA4OCwzNzI4OSwzNzMxNiwzMTkxNiwxNjYxOTUsMTM4ODg5LDM3MzkwLDI3ODA3LDM3NDQxLDM3NDc0LDE1MzAxNywzNzU2MSwxNjY1OTgsMTQ2NTg3LDE2NjY2OCwxNTMwNTEsMTM0NDQ5LDM3Njc2LDM3NzM5LDE2NjYyNSwxNjY4OTEsMjg4MTUsMjMyMzUsMTY2NjI2LDE2NjYyOSwxODc4OSwzNzQ0NCwxNjY4OTIsMTY2OTY5LDE2NjkxMSwzNzc0NywzNzk3OSwzNjU0MCwzODI3NywzODMxMCwzNzkyNiwzODMwNCwyODY2MiwxNzA4MSwxNDA5MjIsMTY1NTkyLDEzNTgwNCwxNDY5OTAsMTg5MTEsMjc2NzYsMzg1MjMsMzg1NTAsMTY3NDgsMzg1NjMsMTU5NDQ1LDI1MDUwLDM4NTgyLDMwOTY1LDE2NjYyNCwzODU4OSwyMTQ1MiwxODg0OSwxNTg5MDQsMTMxNzAwLDE1NjY4OCwxNjgxMTEsMTY4MTY1LDE1MDIyNSwxMzc0OTMsMTQ0MTM4LDM4NzA1LDM0MzcwLDM4NzEwLDE4OTU5LDE3NzI1LDE3Nzk3LDE1MDI0OSwyODc4OSwyMzM2MSwzODY4MywzODc0OCwxNjg0MDUsMzg3NDMsMjMzNzAsMTY4NDI3LDM4NzUxLDM3OTI1LDIwNjg4LDE0MzU0MywxNDM1NDgsMzg3OTMsMzg4MTUsMzg4MzMsMzg4NDYsMzg4NDgsMzg4NjYsMzg4ODAsMTUyNjg0LDM4ODk0LDI5NzI0LDE2OTAxMSwzODkxMSwzODkwMSwxNjg5ODksMTYyMTcwLDE5MTUzLDM4OTY0LDM4OTYzLDM4OTg3LDM5MDE0LDE1MTE4LDE2MDExNywxNTY5NywxMzI2NTYsMTQ3ODA0LDE1MzM1MCwzOTExNCwzOTA5NSwzOTExMiwzOTExMSwxOTE5OSwxNTkwMTUsMTM2OTE1LDIxOTM2LDM5MTM3LDM5MTQyLDM5MTQ4LDM3NzUyLDM5MjI1LDE1MDA1NywxOTMxNCwxNzAwNzEsMTcwMjQ1LDM5NDEzLDM5NDM2LDM5NDgzLDM5NDQwLDM5NTEyLDE1MzM4MSwxNDAyMCwxNjgxMTMsMTcwOTY1LDM5NjQ4LDM5NjUwLDE3MDc1NywzOTY2OCwxOTQ3MCwzOTcwMCwzOTcyNSwxNjUzNzYsMjA1MzIsMzk3MzIsMTU4MTIwLDE0NTMxLDE0MzQ4NSwzOTc2MCwzOTc0NCwxNzEzMjYsMjMxMDksMTM3MzE1LDM5ODIyLDE0ODA0MywzOTkzOCwzOTkzNSwzOTk0OCwxNzE2MjQsNDA0MDQsMTcxOTU5LDE3MjQzNCwxNzI0NTksMTcyMjU3LDE3MjMyMywxNzI1MTEsNDAzMTgsNDAzMjMsMTcyMzQwLDQwNDYyLDI2NzYwLDQwMzg4LDEzOTYxMSwxNzI0MzUsMTcyNTc2LDEzNzUzMSwxNzI1OTUsNDAyNDksMTcyMjE3LDE3MjcyNCw0MDU5Miw0MDU5Nyw0MDYwNiw0MDYxMCwxOTc2NCw0MDYxOCw0MDYyMywxNDgzMjQsNDA2NDEsMTUyMDAsMTQ4MjEsMTU2NDUsMjAyNzQsMTQyNzAsMTY2OTU1LDQwNzA2LDQwNzEyLDE5MzUwLDM3OTI0LDE1OTEzOCw0MDcyNyw0MDcyNiw0MDc2MSwyMjE3NSwyMjE1NCw0MDc3MywzOTM1MiwxNjgwNzUsMzg4OTgsMzM5MTksNDA4MDIsNDA4MDksMzE0NTIsNDA4NDYsMjkyMDYsMTkzOTAsMTQ5ODc3LDE0OTk0NywyOTA0NywxNTAwMDgsMTQ4Mjk2LDE1MDA5NywyOTU5OCwxNjY4NzQsMTM3NDY2LDMxMTM1LDE2NjI3MCwxNjc0NzgsMzc3MzcsMzc4NzUsMTY2NDY4LDM3NjEyLDM3NzYxLDM3ODM1LDE2NjI1MiwxNDg2NjUsMjkyMDcsMTYxMDcsMzA1NzgsMzEyOTksMjg4ODAsMTQ4NTk1LDE0ODQ3MiwyOTA1NCwxMzcxOTksMjg4MzUsMTM3NDA2LDE0NDc5MywxNjA3MSwxMzczNDksMTUyNjIzLDEzNzIwOCwxNDExNCwxMzY5NTUsMTM3MjczLDE0MDQ5LDEzNzA3NiwxMzc0MjUsMTU1NDY3LDE0MTE1LDEzNjg5NiwyMjM2MywxNTAwNTMsMTM2MTkwLDEzNTg0OCwxMzYxMzQsMTM2Mzc0LDM0MDUxLDE0NTA2MiwzNDA1MSwzMzg3NywxNDk5MDgsMTYwMTAxLDE0Njk5MywxNTI5MjQsMTQ3MTk1LDE1OTgyNiwxNzY1MiwxNDUxMzQsMTcwMzk3LDE1OTUyNiwyNjYxNywxNDEzMSwxNTM4MSwxNTg0NywyMjYzNiwxMzc1MDYsMjY2NDAsMTY0NzEsMTQ1MjE1LDE0NzY4MSwxNDc1OTUsMTQ3NzI3LDE1ODc1MywyMTcwNywyMjE3NCwxNTczNjEsMjIxNjIsMTM1MTM1LDEzNDA1NiwxMzQ2NjksMzc4MzAsMTY2Njc1LDM3Nzg4LDIwMjE2LDIwNzc5LDE0MzYxLDE0ODUzNCwyMDE1NiwxMzIxOTcsMTMxOTY3LDIwMjk5LDIwMzYyLDE1MzE2OSwyMzE0NCwxMzE0OTksMTMyMDQzLDE0NzQ1LDEzMTg1MCwxMzIxMTYsMTMzNjUsMjAyNjUsMTMxNzc2LDE2NzYwMywxMzE3MDEsMzU1NDYsMTMxNTk2LDIwMTIwLDIwNjg1LDIwNzQ5LDIwMzg2LDIwMjI3LDE1MDAzMCwxNDcwODIsMjAyOTAsMjA1MjYsMjA1ODgsMjA2MDksMjA0MjgsMjA0NTMsMjA1NjgsMjA3MzIsMjA4MjUsMjA4MjcsMjA4MjksMjA4MzAsMjgyNzgsMTQ0Nzg5LDE0NzAwMSwxNDcxMzUsMjgwMTgsMTM3MzQ4LDE0NzA4MSwyMDkwNCwyMDkzMSwxMzI1NzYsMTc2MjksMTMyMjU5LDEzMjI0MiwxMzIyNDEsMzYyMTgsMTY2NTU2LDEzMjg3OCwyMTA4MSwyMTE1NiwxMzMyMzUsMjEyMTcsMzc3NDIsMTgwNDIsMjkwNjgsMTQ4MzY0LDEzNDE3NiwxNDk5MzIsMTM1Mzk2LDI3MDg5LDEzNDY4NSwyOTgxNywxNjA5NCwyOTg0OSwyOTcxNiwyOTc4MiwyOTU5MiwxOTM0MiwxNTAyMDQsMTQ3NTk3LDIxNDU2LDEzNzAwLDI5MTk5LDE0NzY1NywyMTk0MCwxMzE5MDksMjE3MDksMTM0MDg2LDIyMzAxLDM3NDY5LDM4NjQ0LDM3NzM0LDIyNDkzLDIyNDEzLDIyMzk5LDEzODg2LDIyNzMxLDIzMTkzLDE2NjQ3MCwxMzY5NTQsMTM3MDcxLDEzNjk3NiwyMzA4NCwyMjk2OCwzNzUxOSwyMzE2NiwyMzI0NywyMzA1OCwxNTM5MjYsMTM3NzE1LDEzNzMxMywxNDgxMTcsMTQwNjksMjc5MDksMjk3NjMsMjMwNzMsMTU1MjY3LDIzMTY5LDE2Njg3MSwxMzIxMTUsMzc4NTYsMjk4MzYsMTM1OTM5LDI4OTMzLDE4ODAyLDM3ODk2LDE2NjM5NSwzNzgyMSwxNDI0MCwyMzU4MiwyMzcxMCwyNDE1OCwyNDEzNiwxMzc2MjIsMTM3NTk2LDE0NjE1OCwyNDI2OSwyMzM3NSwxMzc0NzUsMTM3NDc2LDE0MDgxLDEzNzM3NiwxNDA0NSwxMzY5NTgsMTQwMzUsMzMwNjYsMTY2NDcxLDEzODY4MiwxNDQ0OTgsMTY2MzEyLDI0MzMyLDI0MzM0LDEzNzUxMSwxMzcxMzEsMjMxNDcsMTM3MDE5LDIzMzY0LDM0MzI0LDE2MTI3NywzNDkxMiwyNDcwMiwxNDE0MDgsMTQwODQzLDI0NTM5LDE2MDU2LDE0MDcxOSwxNDA3MzQsMTY4MDcyLDE1OTYwMywyNTAyNCwxMzExMzQsMTMxMTQyLDE0MDgyNywyNDk4NSwyNDk4NCwyNDY5MywxNDI0OTEsMTQyNTk5LDE0OTIwNCwxNjgyNjksMjU3MTMsMTQ5MDkzLDE0MjE4NiwxNDg4OSwxNDIxMTQsMTQ0NDY0LDE3MDIxOCwxNDI5NjgsMjUzOTksMTczMTQ3LDI1NzgyLDI1MzkzLDI1NTUzLDE0OTk4NywxNDI2OTUsMjUyNTIsMTQyNDk3LDI1NjU5LDI1OTYzLDI2OTk0LDE1MzQ4LDE0MzUwMiwxNDQwNDUsMTQ5ODk3LDE0NDA0MywyMTc3MywxNDQwOTYsMTM3NDMzLDE2OTAyMywyNjMxOCwxNDQwMDksMTQzNzk1LDE1MDcyLDE2Nzg0LDE1Mjk2NCwxNjY2OTAsMTUyOTc1LDEzNjk1NiwxNTI5MjMsMTUyNjEzLDMwOTU4LDE0MzYxOSwxMzcyNTgsMTQzOTI0LDEzNDEyLDE0Mzg4NywxNDM3NDYsMTQ4MTY5LDI2MjU0LDE1OTAxMiwyNjIxOSwxOTM0NywyNjE2MCwxNjE5MDQsMTM4NzMxLDI2MjExLDE0NDA4MiwxNDQwOTcsMjYxNDIsMTUzNzE0LDE0NTQ1LDE0NTQ2NiwxNDUzNDAsMTUyNTcsMTQ1MzE0LDE0NDM4MiwyOTkwNCwxNTI1NCwyNjUxMSwxNDkwMzQsMjY4MDYsMjY2NTQsMTUzMDAsMjczMjYsMTQ0MzUsMTQ1MzY1LDE0ODYxNSwyNzE4NywyNzIxOCwyNzMzNywyNzM5NywxMzc0OTAsMjU4NzMsMjY3NzYsMjcyMTIsMTUzMTksMjcyNTgsMjc0NzksMTQ3MzkyLDE0NjU4NiwzNzc5MiwzNzYxOCwxNjY4OTAsMTY2NjAzLDM3NTEzLDE2Mzg3MCwxNjYzNjQsMzc5OTEsMjgwNjksMjg0MjcsMTQ5OTk2LDI4MDA3LDE0NzMyNywxNTc1OSwyODE2NCwxNDc1MTYsMjMxMDEsMjgxNzAsMjI1OTksMjc5NDAsMzA3ODYsMjg5ODcsMTQ4MjUwLDE0ODA4NiwyODkxMywyOTI2NCwyOTMxOSwyOTMzMiwxNDkzOTEsMTQ5Mjg1LDIwODU3LDE1MDE4MCwxMzI1ODcsMjk4MTgsMTQ3MTkyLDE0NDk5MSwxNTAwOTAsMTQ5NzgzLDE1NTYxNywxNjEzNCwxNjA0OSwxNTAyMzksMTY2OTQ3LDE0NzI1MywyNDc0MywxNjExNSwyOTkwMCwyOTc1NiwzNzc2NywyOTc1MSwxNzU2NywxNTkyMTAsMTc3NDUsMzAwODMsMTYyMjcsMTUwNzQ1LDE1MDc5MCwxNjIxNiwzMDAzNywzMDMyMywxNzM1MTAsMTUxMjksMjk4MDAsMTY2NjA0LDE0OTkzMSwxNDk5MDIsMTUwOTksMTU4MjEsMTUwMDk0LDE2MTI3LDE0OTk1NywxNDk3NDcsMzczNzAsMjIzMjIsMzc2OTgsMTY2NjI3LDEzNzMxNiwyMDcwMywxNTIwOTcsMTUyMDM5LDMwNTg0LDE0MzkyMiwzMDQ3OCwzMDQ3OSwzMDU4NywxNDkxNDMsMTQ1MjgxLDE0OTQyLDE0OTc0NCwyOTc1MiwyOTg1MSwxNjA2MywxNTAyMDIsMTUwMjE1LDE2NTg0LDE1MDE2NiwxNTYwNzgsMzc2MzksMTUyOTYxLDMwNzUwLDMwODYxLDMwODU2LDMwOTMwLDI5NjQ4LDMxMDY1LDE2MTYwMSwxNTMzMTUsMTY2NTQsMzExMzEsMzM5NDIsMzExNDEsMjcxODEsMTQ3MTk0LDMxMjkwLDMxMjIwLDE2NzUwLDEzNjkzNCwxNjY5MCwzNzQyOSwzMTIxNywxMzQ0NzYsMTQ5OTAwLDEzMTczNywxNDY4NzQsMTM3MDcwLDEzNzE5LDIxODY3LDEzNjgwLDEzOTk0LDEzMTU0MCwxMzQxNTcsMzE0NTgsMjMxMjksMTQxMDQ1LDE1NDI4NywxNTQyNjgsMjMwNTMsMTMxNjc1LDMwOTYwLDIzMDgyLDE1NDU2NiwzMTQ4NiwxNjg4OSwzMTgzNywzMTg1MywxNjkxMywxNTQ1NDcsMTU1MzI0LDE1NTMwMiwzMTk0OSwxNTAwMDksMTM3MTM2LDMxODg2LDMxODY4LDMxOTE4LDI3MzE0LDMyMjIwLDMyMjYzLDMyMjExLDMyNTkwLDE1NjI1NywxNTU5OTYsMTYyNjMyLDMyMTUxLDE1NTI2NiwxNzAwMiwxNTg1ODEsMTMzMzk4LDI2NTgyLDEzMTE1MCwxNDQ4NDcsMjI0NjgsMTU2NjkwLDE1NjY2NCwxNDk4NTgsMzI3MzMsMzE1MjcsMTMzMTY0LDE1NDM0NSwxNTQ5NDcsMzE1MDAsMTU1MTUwLDM5Mzk4LDM0MzczLDM5NTIzLDI3MTY0LDE0NDQ0NywxNDgxOCwxNTAwMDcsMTU3MTAxLDM5NDU1LDE1NzA4OCwzMzkyMCwxNjAwMzksMTU4OTI5LDE3NjQyLDMzMDc5LDE3NDEwLDMyOTY2LDMzMDMzLDMzMDkwLDE1NzYyMCwzOTEwNywxNTgyNzQsMzMzNzgsMzMzODEsMTU4Mjg5LDMzODc1LDE1OTE0MywzNDMyMCwxNjAyODMsMjMxNzQsMTY3NjcsMTM3MjgwLDIzMzM5LDEzNzM3NywyMzI2OCwxMzc0MzIsMzQ0NjQsMTk1MDA0LDE0NjgzMSwzNDg2MSwxNjA4MDIsMjMwNDIsMzQ5MjYsMjAyOTMsMzQ5NTEsMzUwMDcsMzUwNDYsMzUxNzMsMzUxNDksMTUzMjE5LDM1MTU2LDE2MTY2OSwxNjE2NjgsMTY2OTAxLDE2Njg3MywxNjY4MTIsMTY2MzkzLDE2MDQ1LDMzOTU1LDE4MTY1LDE4MTI3LDE0MzIyLDM1Mzg5LDM1MzU2LDE2OTAzMiwyNDM5NywzNzQxOSwxNDgxMDAsMjYwNjgsMjg5NjksMjg4NjgsMTM3Mjg1LDQwMzAxLDM1OTk5LDM2MDczLDE2MzI5MiwyMjkzOCwzMDY1OSwyMzAyNCwxNzI2MiwxNDAzNiwzNjM5NCwzNjUxOSwxNTA1MzcsMzY2NTYsMzY2ODIsMTcxNDAsMjc3MzYsMjg2MDMsMTQwMDY1LDE4NTg3LDI4NTM3LDI4Mjk5LDEzNzE3OCwzOTkxMywxNDAwNSwxNDk4MDcsMzcwNTEsMzcwMTUsMjE4NzMsMTg2OTQsMzczMDcsMzc4OTIsMTY2NDc1LDE2NDgyLDE2NjY1MiwzNzkyNywxNjY5NDEsMTY2OTcxLDM0MDIxLDM1MzcxLDM4Mjk3LDM4MzExLDM4Mjk1LDM4Mjk0LDE2NzIyMCwyOTc2NSwxNjA2NiwxNDk3NTksMTUwMDgyLDE0ODQ1OCwxNjEwMywxNDM5MDksMzg1NDMsMTY3NjU1LDE2NzUyNiwxNjc1MjUsMTYwNzYsMTQ5OTk3LDE1MDEzNiwxNDc0MzgsMjk3MTQsMjk4MDMsMTYxMjQsMzg3MjEsMTY4MTEyLDI2Njk1LDE4OTczLDE2ODA4MywxNTM1NjcsMzg3NDksMzc3MzYsMTY2MjgxLDE2Njk1MCwxNjY3MDMsMTU2NjA2LDM3NTYyLDIzMzEzLDM1Njg5LDE4NzQ4LDI5Njg5LDE0Nzk5NSwzODgxMSwzODc2OSwzOTIyNCwxMzQ5NTAsMjQwMDEsMTY2ODUzLDE1MDE5NCwzODk0MywxNjkxNzgsMzc2MjIsMTY5NDMxLDM3MzQ5LDE3NjAwLDE2NjczNiwxNTAxMTksMTY2NzU2LDM5MTMyLDE2NjQ2OSwxNjEyOCwzNzQxOCwxODcyNSwzMzgxMiwzOTIyNywzOTI0NSwxNjI1NjYsMTU4NjksMzkzMjMsMTkzMTEsMzkzMzgsMzk1MTYsMTY2NzU3LDE1MzgwMCwyNzI3OSwzOTQ1NywyMzI5NCwzOTQ3MSwxNzAyMjUsMTkzNDQsMTcwMzEyLDM5MzU2LDE5Mzg5LDE5MzUxLDM3NzU3LDIyNjQyLDEzNTkzOCwyMjU2MiwxNDk5NDQsMTM2NDI0LDMwNzg4LDE0MTA4NywxNDY4NzIsMjY4MjEsMTU3NDEsMzc5NzYsMTQ2MzEsMjQ5MTIsMTQxMTg1LDE0MTY3NSwyNDgzOSw0MDAxNSw0MDAxOSw0MDA1OSwzOTk4OSwzOTk1MiwzOTgwNywzOTg4NywxNzE1NjUsMzk4MzksMTcyNTMzLDE3MjI4Niw0MDIyNSwxOTYzMCwxNDc3MTYsNDA0NzIsMTk2MzIsNDAyMDQsMTcyNDY4LDE3MjI2OSwxNzIyNzUsMTcwMjg3LDQwMzU3LDMzOTgxLDE1OTI1MCwxNTk3MTEsMTU4NTk0LDM0MzAwLDE3NzE1LDE1OTE0MCwxNTkzNjQsMTU5MjE2LDMzODI0LDM0Mjg2LDE1OTIzMiwxNDUzNjcsMTU1NzQ4LDMxMjAyLDE0NDc5NiwxNDQ5NjAsMTg3MzMsMTQ5OTgyLDE1NzE0LDM3ODUxLDM3NTY2LDM3NzA0LDEzMTc3NSwzMDkwNSwzNzQ5NSwzNzk2NSwyMDQ1MiwxMzM3NiwzNjk2NCwxNTI5MjUsMzA3ODEsMzA4MDQsMzA5MDIsMzA3OTUsMTM3MDQ3LDE0MzgxNywxNDk4MjUsMTM5NzgsMjAzMzgsMjg2MzQsMjg2MzMsMjg3MDIsMjg3MDIsMjE1MjQsMTQ3ODkzLDIyNDU5LDIyNzcxLDIyNDEwLDQwMjE0LDIyNDg3LDI4OTgwLDEzNDg3LDE0Nzg4NCwyOTE2MywxNTg3ODQsMTUxNDQ3LDIzMzM2LDEzNzE0MSwxNjY0NzMsMjQ4NDQsMjMyNDYsMjMwNTEsMTcwODQsMTQ4NjE2LDE0MTI0LDE5MzIzLDE2NjM5NiwzNzgxOSwzNzgxNiwxMzc0MzAsMTM0OTQxLDMzOTA2LDE1ODkxMiwxMzYyMTEsMTQ4MjE4LDE0MjM3NCwxNDg0MTcsMjI5MzIsMTQ2ODcxLDE1NzUwNSwzMjE2OCwxNTU5OTUsMTU1ODEyLDE0OTk0NSwxNDk4OTksMTY2Mzk0LDM3NjA1LDI5NjY2LDE2MTA1LDI5ODc2LDE2Njc1NSwxMzczNzUsMTYwOTcsMTUwMTk1LDI3MzUyLDI5NjgzLDI5NjkxLDE2MDg2LDE1MDA3OCwxNTAxNjQsMTM3MTc3LDE1MDExOCwxMzIwMDcsMTM2MjI4LDE0OTk4OSwyOTc2OCwxNDk3ODIsMjg4MzcsMTQ5ODc4LDM3NTA4LDI5NjcwLDM3NzI3LDEzMjM1MCwzNzY4MSwxNjY2MDYsMTY2NDIyLDM3NzY2LDE2Njg4NywxNTMwNDUsMTg3NDEsMTY2NTMwLDI5MDM1LDE0OTgyNywxMzQzOTksMjIxODAsMTMyNjM0LDEzNDEyMywxMzQzMjgsMjE3NjIsMzExNzIsMTM3MjEwLDMyMjU0LDEzNjg5OCwxNTAwOTYsMTM3Mjk4LDE3NzEwLDM3ODg5LDE0MDkwLDE2NjU5MiwxNDk5MzMsMjI5NjAsMTM3NDA3LDEzNzM0NywxNjA5MDAsMjMyMDEsMTQwNTAsMTQ2Nzc5LDE0MDAwLDM3NDcxLDIzMTYxLDE2NjUyOSwxMzczMTQsMzc3NDgsMTU1NjUsMTMzODEyLDE5MDk0LDE0NzMwLDIwNzI0LDE1NzIxLDE1NjkyLDEzNjA5MiwyOTA0NSwxNzE0NywxNjQzNzYsMjgxNzUsMTY4MTY0LDE3NjQzLDI3OTkxLDE2MzQwNywyODc3NSwyNzgyMywxNTU3NCwxNDc0MzcsMTQ2OTg5LDI4MTYyLDI4NDI4LDE1NzI3LDEzMjA4NSwzMDAzMywxNDAxMiwxMzUxMiwxODA0OCwxNjA5MCwxODU0NSwyMjk4MCwzNzQ4NiwxODc1MCwzNjY3MywxNjY5NDAsMTU4NjU2LDIyNTQ2LDIyNDcyLDE0MDM4LDEzNjI3NCwyODkyNiwxNDgzMjIsMTUwMTI5LDE0MzMzMSwxMzU4NTYsMTQwMjIxLDI2ODA5LDI2OTgzLDEzNjA4OCwxNDQ2MTMsMTYyODA0LDE0NTExOSwxNjY1MzEsMTQ1MzY2LDE0NDM3OCwxNTA2ODcsMjcxNjIsMTQ1MDY5LDE1ODkwMywzMzg1NCwxNzYzMSwxNzYxNCwxNTkwMTQsMTU5MDU3LDE1ODg1MCwxNTk3MTAsMjg0MzksMTYwMDA5LDMzNTk3LDEzNzAxOCwzMzc3MywxNTg4NDgsMTU5ODI3LDEzNzE3OSwyMjkyMSwyMzE3MCwxMzcxMzksMjMxMzcsMjMxNTMsMTM3NDc3LDE0Nzk2NCwxNDEyNSwyMzAyMywxMzcwMjAsMTQwMjMsMjkwNzAsMzc3NzYsMjYyNjYsMTQ4MTMzLDIzMTUwLDIzMDgzLDE0ODExNSwyNzE3OSwxNDcxOTMsMTYxNTkwLDE0ODU3MSwxNDgxNzAsMjg5NTcsMTQ4MDU3LDE2NjM2OSwyMDQwMCwxNTkwMTYsMjM3NDYsMTQ4Njg2LDE2MzQwNSwxNDg0MTMsMjcxNDgsMTQ4MDU0LDEzNTk0MCwyODgzOCwyODk3OSwxNDg0NTcsMTU3ODEsMjc4NzEsMTk0NTk3LDE1MDA5NSwzMjM1NywyMzAxOSwyMzg1NSwxNTg1OSwyNDQxMiwxNTAxMDksMTM3MTgzLDMyMTY0LDMzODMwLDIxNjM3LDE0NjE3MCwxNDQxMjgsMTMxNjA0LDIyMzk4LDEzMzMzMywxMzI2MzMsMTYzNTcsMTM5MTY2LDE3MjcyNiwyODY3NSwxNjgyODMsMjM5MjAsMjk1ODMsMzE5NTUsMTY2NDg5LDE2ODk5MiwyMDQyNCwzMjc0MywyOTM4OSwyOTQ1NiwxNjI1NDgsMjk0OTYsMjk0OTcsMTUzMzM0LDI5NTA1LDI5NTEyLDE2MDQxLDE2MjU4NCwzNjk3MiwyOTE3MywxNDk3NDYsMjk2NjUsMzMyNzAsMTYwNzQsMzA0NzYsMTYwODEsMjc4MTAsMjIyNjksMjk3MjEsMjk3MjYsMjk3MjcsMTYwOTgsMTYxMTIsMTYxMTYsMTYxMjIsMjk5MDcsMTYxNDIsMTYyMTEsMzAwMTgsMzAwNjEsMzAwNjYsMzAwOTMsMTYyNTIsMzAxNTIsMzAxNzIsMTYzMjAsMzAyODUsMTYzNDMsMzAzMjQsMTYzNDgsMzAzMzAsMTUxMzg4LDI5MDY0LDIyMDUxLDM1MjAwLDIyNjMzLDE2NDEzLDMwNTMxLDE2NDQxLDI2NDY1LDE2NDUzLDEzNzg3LDMwNjE2LDE2NDkwLDE2NDk1LDIzNjQ2LDMwNjU0LDMwNjY3LDIyNzcwLDMwNzQ0LDI4ODU3LDMwNzQ4LDE2NTUyLDMwNzc3LDMwNzkxLDMwODAxLDMwODIyLDMzODY0LDE1Mjg4NSwzMTAyNywyNjYyNywzMTAyNiwxNjY0MywxNjY0OSwzMTEyMSwzMTEyOSwzNjc5NSwzMTIzOCwzNjc5NiwxNjc0MywzMTM3NywxNjgxOCwzMTQyMCwzMzQwMSwxNjgzNiwzMTQzOSwzMTQ1MSwxNjg0NywyMDAwMSwzMTU4NiwzMTU5NiwzMTYxMSwzMTc2MiwzMTc3MSwxNjk5MiwxNzAxOCwzMTg2NywzMTkwMCwxNzAzNiwzMTkyOCwxNzA0NCwzMTk4MSwzNjc1NSwyODg2NCwxMzQzNTEsMzIyMDcsMzIyMTIsMzIyMDgsMzIyNTMsMzI2ODYsMzI2OTIsMjkzNDMsMTczMDMsMzI4MDAsMzI4MDUsMzE1NDUsMzI4MTQsMzI4MTcsMzI4NTIsMTU4MjAsMjI0NTIsMjg4MzIsMzI5NTEsMzMwMDEsMTczODksMzMwMzYsMjk0ODIsMzMwMzgsMzMwNDIsMzAwNDgsMzMwNDQsMTc0MDksMTUxNjEsMzMxMTAsMzMxMTMsMzMxMTQsMTc0MjcsMjI1ODYsMzMxNDgsMzMxNTYsMTc0NDUsMzMxNzEsMTc0NTMsMzMxODksMjI1MTEsMzMyMTcsMzMyNTIsMzMzNjQsMTc1NTEsMzM0NDYsMzMzOTgsMzM0ODIsMzM0OTYsMzM1MzUsMTc1ODQsMzM2MjMsMzg1MDUsMjcwMTgsMzM3OTcsMjg5MTcsMzM4OTIsMjQ4MDMsMzM5MjgsMTc2NjgsMzM5ODIsMzQwMTcsMzQwNDAsMzQwNjQsMzQxMDQsMzQxMzAsMTc3MjMsMzQxNTksMzQxNjAsMzQyNzIsMTc3ODMsMzQ0MTgsMzQ0NTAsMzQ0ODIsMzQ1NDMsMzg0NjksMzQ2OTksMTc5MjYsMTc5NDMsMzQ5OTAsMzUwNzEsMzUxMDgsMzUxNDMsMzUyMTcsMTYyMTUxLDM1MzY5LDM1Mzg0LDM1NDc2LDM1NTA4LDM1OTIxLDM2MDUyLDM2MDgyLDM2MTI0LDE4MzI4LDIyNjIzLDM2MjkxLDE4NDEzLDIwMjA2LDM2NDEwLDIxOTc2LDIyMzU2LDM2NDY1LDIyMDA1LDM2NTI4LDE4NDg3LDM2NTU4LDM2NTc4LDM2NTgwLDM2NTg5LDM2NTk0LDM2NzkxLDM2ODAxLDM2ODEwLDM2ODEyLDM2OTE1LDM5MzY0LDE4NjA1LDM5MTM2LDM3Mzk1LDE4NzE4LDM3NDE2LDM3NDY0LDM3NDgzLDM3NTUzLDM3NTUwLDM3NTY3LDM3NjAzLDM3NjExLDM3NjE5LDM3NjIwLDM3NjI5LDM3Njk5LDM3NzY0LDM3ODA1LDE4NzU3LDE4NzY5LDQwNjM5LDM3OTExLDIxMjQ5LDM3OTE3LDM3OTMzLDM3OTUwLDE4Nzk0LDM3OTcyLDM4MDA5LDM4MTg5LDM4MzA2LDE4ODU1LDM4Mzg4LDM4NDUxLDE4OTE3LDI2NTI4LDE4OTgwLDM4NzIwLDE4OTk3LDM4ODM0LDM4ODUwLDIyMTAwLDE5MTcyLDI0ODA4LDM5MDk3LDE5MjI1LDM5MTUzLDIyNTk2LDM5MTgyLDM5MTkzLDIwOTE2LDM5MTk2LDM5MjIzLDM5MjM0LDM5MjYxLDM5MjY2LDE5MzEyLDM5MzY1LDE5MzU3LDM5NDg0LDM5Njk1LDMxMzYzLDM5Nzg1LDM5ODA5LDM5OTAxLDM5OTIxLDM5OTI0LDE5NTY1LDM5OTY4LDE0MTkxLDEzODE3OCw0MDI2NSwzOTk5NCw0MDcwMiwyMjA5Niw0MDMzOSw0MDM4MSw0MDM4NCw0MDQ0NCwzODEzNCwzNjc5MCw0MDU3MSw0MDYyMCw0MDYyNSw0MDYzNyw0MDY0NiwzODEwOCw0MDY3NCw0MDY4OSw0MDY5NiwzMTQzMiw0MDc3MiwxMzEyMjAsMTMxNzY3LDEzMjAwMCwyNjkwNiwzODA4MywyMjk1NiwxMzIzMTEsMjI1OTIsMzgwODEsMTQyNjUsMTMyNTY1LDEzMjYyOSwxMzI3MjYsMTM2ODkwLDIyMzU5LDI5MDQzLDEzMzgyNiwxMzM4MzcsMTM0MDc5LDIxNjEwLDE5NDYxOSwxMzQwOTEsMjE2NjIsMTM0MTM5LDEzNDIwMywxMzQyMjcsMTM0MjQ1LDEzNDI2OCwyNDgwNywxMzQyODUsMjIxMzgsMTM0MzI1LDEzNDM2NSwxMzQzODEsMTM0NTExLDEzNDU3OCwxMzQ2MDAsMjY5NjUsMzk5ODMsMzQ3MjUsMTM0NjYwLDEzNDY3MCwxMzQ4NzEsMTM1MDU2LDEzNDk1NywxMzQ3NzEsMjM1ODQsMTM1MTAwLDI0MDc1LDEzNTI2MCwxMzUyNDcsMTM1Mjg2LDI2Mzk4LDEzNTI5MSwxMzUzMDQsMTM1MzE4LDEzODk1LDEzNTM1OSwxMzUzNzksMTM1NDcxLDEzNTQ4MywyMTM0OCwzMzk2NSwxMzU5MDcsMTM2MDUzLDEzNTk5MCwzNTcxMywxMzY1NjcsMTM2NzI5LDEzNzE1NSwxMzcxNTksMjAwODgsMjg4NTksMTM3MjYxLDEzNzU3OCwxMzc3NzMsMTM3Nzk3LDEzODI4MiwxMzgzNTIsMTM4NDEyLDEzODk1MiwyNTI4MywxMzg5NjUsMTM5MDI5LDI5MDgwLDI2NzA5LDEzOTMzMywyNzExMywxNDAyNCwxMzk5MDAsMTQwMjQ3LDE0MDI4MiwxNDEwOTgsMTQxNDI1LDE0MTY0NywzMzUzMywxNDE2NzEsMTQxNzE1LDE0MjAzNywzNTIzNywxNDIwNTYsMzY3NjgsMTQyMDk0LDM4ODQwLDE0MjE0MywzODk4MywzOTYxMywxNDI0MTIsbnVsbCwxNDI0NzIsMTQyNTE5LDE1NDYwMCwxNDI2MDAsMTQyNjEwLDE0Mjc3NSwxNDI3NDEsMTQyOTE0LDE0MzIyMCwxNDMzMDgsMTQzNDExLDE0MzQ2MiwxNDQxNTksMTQ0MzUwLDI0NDk3LDI2MTg0LDI2MzAzLDE2MjQyNSwxNDQ3NDMsMTQ0ODgzLDI5MTg1LDE0OTk0NiwzMDY3OSwxNDQ5MjIsMTQ1MTc0LDMyMzkxLDEzMTkxMCwyMjcwOSwyNjM4MiwyNjkwNCwxNDYwODcsMTYxMzY3LDE1NTYxOCwxNDY5NjEsMTQ3MTI5LDE2MTI3OCwxMzk0MTgsMTg2NDAsMTkxMjgsMTQ3NzM3LDE2NjU1NCwxNDgyMDYsMTQ4MjM3LDE0NzUxNSwxNDgyNzYsMTQ4Mzc0LDE1MDA4NSwxMzI1NTQsMjA5NDYsMTMyNjI1LDIyOTQzLDEzODkyMCwxNTI5NCwxNDY2ODcsMTQ4NDg0LDE0ODY5NCwyMjQwOCwxNDkxMDgsMTQ3NDcsMTQ5Mjk1LDE2NTM1MiwxNzA0NDEsMTQxNzgsMTM5NzE1LDM1Njc4LDE2NjczNCwzOTM4MiwxNDk1MjIsMTQ5NzU1LDE1MDAzNywyOTE5MywxNTAyMDgsMTM0MjY0LDIyODg1LDE1MTIwNSwxNTE0MzAsMTMyOTg1LDM2NTcwLDE1MTU5NiwyMTEzNSwyMjMzNSwyOTA0MSwxNTIyMTcsMTUyNjAxLDE0NzI3NCwxNTAxODMsMjE5NDgsMTUyNjQ2LDE1MjY4NiwxNTg1NDYsMzczMzIsMTM0MjcsMTUyODk1LDE2MTMzMCwxNTI5MjYsMTgyMDAsMTUyOTMwLDE1MjkzNCwxNTM1NDMsMTQ5ODIzLDE1MzY5MywyMDU4MiwxMzU2MywxNDQzMzIsMjQ3OTgsMTUzODU5LDE4MzAwLDE2NjIxNiwxNTQyODYsMTU0NTA1LDE1NDYzMCwxMzg2NDAsMjI0MzMsMjkwMDksMjg1OTgsMTU1OTA2LDE2MjgzNCwzNjk1MCwxNTYwODIsMTUxNDUwLDM1NjgyLDE1NjY3NCwxNTY3NDYsMjM4OTksMTU4NzExLDM2NjYyLDE1NjgwNCwxMzc1MDAsMzU1NjIsMTUwMDA2LDE1NjgwOCwxNDc0MzksMTU2OTQ2LDE5MzkyLDE1NzExOSwxNTczNjUsMTQxMDgzLDM3OTg5LDE1MzU2OSwyNDk4MSwyMzA3OSwxOTQ3NjUsMjA0MTEsMjIyMDEsMTQ4NzY5LDE1NzQzNiwyMDA3NCwxNDk4MTIsMzg0ODYsMjgwNDcsMTU4OTA5LDEzODQ4LDM1MTkxLDE1NzU5MywxNTc4MDYsMTU2Njg5LDE1Nzc5MCwyOTE1MSwxNTc4OTUsMzE1NTQsMTY4MTI4LDEzMzY0OSwxNTc5OTAsMzcxMjQsMTU4MDA5LDMxMzAxLDQwNDMyLDE1ODIwMiwzOTQ2MiwxNTgyNTMsMTM5MTksMTU2Nzc3LDEzMTEwNSwzMTEwNywxNTgyNjAsMTU4NTU1LDIzODUyLDE0NDY2NSwzMzc0MywxNTg2MjEsMTgxMjgsMTU4ODg0LDMwMDExLDM0OTE3LDE1OTE1MCwyMjcxMCwxNDEwOCwxNDA2ODUsMTU5ODE5LDE2MDIwNSwxNTQ0NCwxNjAzODQsMTYwMzg5LDM3NTA1LDEzOTY0MiwxNjAzOTUsMzc2ODAsMTYwNDg2LDE0OTk2OCwyNzcwNSwzODA0NywxNjA4NDgsMTM0OTA0LDM0ODU1LDM1MDYxLDE0MTYwNiwxNjQ5NzksMTM3MTM3LDI4MzQ0LDE1MDA1OCwxMzcyNDgsMTQ3NTYsMTQwMDksMjM1NjgsMzEyMDMsMTc3MjcsMjYyOTQsMTcxMTgxLDE3MDE0OCwzNTEzOSwxNjE3NDAsMTYxODgwLDIyMjMwLDE2NjA3LDEzNjcxNCwxNDc1MywxNDUxOTksMTY0MDcyLDEzNjEzMywyOTEwMSwzMzYzOCwxNjIyNjksMTY4MzYwLDIzMTQzLDE5NjM5LDE1OTkxOSwxNjYzMTUsMTYyMzAxLDE2MjMxNCwxNjI1NzEsMTYzMTc0LDE0NzgzNCwzMTU1NSwzMTEwMiwxNjM4NDksMjg1OTcsMTcyNzY3LDI3MTM5LDE2NDYzMiwyMTQxMCwxNTkyMzksMzc4MjMsMjY2NzgsMzg3NDksMTY0MjA3LDE2Mzg3NSwxNTgxMzMsMTM2MTczLDE0MzkxOSwxNjM5MTIsMjM5NDEsMTY2OTYwLDE2Mzk3MSwyMjI5MywzODk0NywxNjYyMTcsMjM5NzksMTQ5ODk2LDI2MDQ2LDI3MDkzLDIxNDU4LDE1MDE4MSwxNDczMjksMTUzNzcsMjY0MjIsMTYzOTg0LDE2NDA4NCwxNjQxNDIsMTM5MTY5LDE2NDE3NSwxNjQyMzMsMTY0MjcxLDE2NDM3OCwxNjQ2MTQsMTY0NjU1LDE2NDc0NiwxMzc3MCwxNjQ5NjgsMTY1NTQ2LDE4NjgyLDI1NTc0LDE2NjIzMCwzMDcyOCwzNzQ2MSwxNjYzMjgsMTczOTQsMTY2Mzc1LDE3Mzc1LDE2NjM3NiwxNjY3MjYsMTY2ODY4LDIzMDMyLDE2NjkyMSwzNjYxOSwxNjc4NzcsMTY4MTcyLDMxNTY5LDE2ODIwOCwxNjgyNTIsMTU4NjMsMTY4Mjg2LDE1MDIxOCwzNjgxNiwyOTMyNywyMjE1NSwxNjkxOTEsMTY5NDQ5LDE2OTM5MiwxNjk0MDAsMTY5Nzc4LDE3MDE5MywxNzAzMTMsMTcwMzQ2LDE3MDQzNSwxNzA1MzYsMTcwNzY2LDE3MTM1NCwxNzE0MTksMzI0MTUsMTcxNzY4LDE3MTgxMSwxOTYyMCwzODIxNSwxNzI2OTEsMjkwOTAsMTcyNzk5LDE5ODU3LDM2ODgyLDE3MzUxNSwxOTg2OCwxMzQzMDAsMzY3OTgsMjE5NTMsMzY3OTQsMTQwNDY0LDM2NzkzLDE1MDE2MywxNzY3MywzMjM4MywyODUwMiwyNzMxMywyMDIwMiwxMzU0MCwxNjY3MDAsMTYxOTQ5LDE0MTM4LDM2NDgwLDEzNzIwNSwxNjM4NzYsMTY2NzY0LDE2NjgwOSwxNjIzNjYsMTU3MzU5LDE1ODUxLDE2MTM2NSwxNDY2MTUsMTUzMTQxLDE1Mzk0MiwyMDEyMiwxNTUyNjUsMTU2MjQ4LDIyMjA3LDEzNDc2NSwzNjM2NiwyMzQwNSwxNDcwODAsMTUwNjg2LDI1NTY2LDI1Mjk2LDEzNzIwNiwxMzczMzksMjU5MDQsMjIwNjEsMTU0Njk4LDIxNTMwLDE1MjMzNywxNTgxNCwxNzE0MTYsMTk1ODEsMjIwNTAsMjIwNDYsMzI1ODUsMTU1MzUyLDIyOTAxLDE0Njc1MiwzNDY3MiwxOTk5NiwxMzUxNDYsMTM0NDczLDE0NTA4MiwzMzA0Nyw0MDI4NiwzNjEyMCwzMDI2Nyw0MDAwNSwzMDI4NiwzMDY0OSwzNzcwMSwyMTU1NCwzMzA5NiwzMzUyNywyMjA1MywzMzA3NCwzMzgxNiwzMjk1NywyMTk5NCwzMTA3NCwyMjA4MywyMTUyNiwxMzQ4MTMsMTM3NzQsMjIwMjEsMjIwMDEsMjYzNTMsMTY0NTc4LDEzODY5LDMwMDA0LDIyMDAwLDIxOTQ2LDIxNjU1LDIxODc0LDEzNDIwOSwxMzQyOTQsMjQyNzIsMTUxODgwLDEzNDc3NCwxNDI0MzQsMTM0ODE4LDQwNjE5LDMyMDkwLDIxOTgyLDEzNTI4NSwyNTI0NSwzODc2NSwyMTY1MiwzNjA0NSwyOTE3NCwzNzIzOCwyNTU5NiwyNTUyOSwyNTU5OCwyMTg2NSwxNDIxNDcsNDAwNTAsMTQzMDI3LDIwODkwLDEzNTM1LDEzNDU2NywyMDkwMywyMTU4MSwyMTc5MCwyMTc3OSwzMDMxMCwzNjM5NywxNTc4MzQsMzAxMjksMzI5NTAsMzQ4MjAsMzQ2OTQsMzUwMTUsMzMyMDYsMzM4MjAsMTM1MzYxLDE3NjQ0LDI5NDQ0LDE0OTI1NCwyMzQ0MCwzMzU0NywxNTc4NDMsMjIxMzksMTQxMDQ0LDE2MzExOSwxNDc4NzUsMTYzMTg3LDE1OTQ0MCwxNjA0MzgsMzcyMzIsMTM1NjQxLDM3Mzg0LDE0NjY4NCwxNzM3MzcsMTM0ODI4LDEzNDkwNSwyOTI4NiwxMzg0MDIsMTgyNTQsMTUxNDkwLDE2MzgzMywxMzUxNDcsMTY2MzQsNDAwMjksMjU4ODcsMTQyNzUyLDE4Njc1LDE0OTQ3MiwxNzEzODgsMTM1MTQ4LDEzNDY2NiwyNDY3NCwxNjExODcsMTM1MTQ5LG51bGwsMTU1NzIwLDEzNTU1OSwyOTA5MSwzMjM5OCw0MDI3MiwxOTk5NCwxOTk3MiwxMzY4NywyMzMwOSwyNzgyNiwyMTM1MSwxMzk5NiwxNDgxMiwyMTM3MywxMzk4OSwxNDkwMTYsMjI2ODIsMTUwMzgyLDMzMzI1LDIxNTc5LDIyNDQyLDE1NDI2MSwxMzM0OTcsbnVsbCwxNDkzMCwxNDAzODksMjk1NTYsMTcxNjkyLDE5NzIxLDM5OTE3LDE0NjY4NiwxNzE4MjQsMTk1NDcsMTUxNDY1LDE2OTM3NCwxNzE5OTgsMzM4ODQsMTQ2ODcwLDE2MDQzNCwxNTc2MTksMTQ1MTg0LDI1MzkwLDMyMDM3LDE0NzE5MSwxNDY5ODgsMTQ4OTAsMzY4NzIsMjExOTYsMTU5ODgsMTM5NDYsMTc4OTcsMTMyMjM4LDMwMjcyLDIzMjgwLDEzNDgzOCwzMDg0MiwxNjM2MzAsMjI2OTUsMTY1NzUsMjIxNDAsMzk4MTksMjM5MjQsMzAyOTIsMTczMTA4LDQwNTgxLDE5NjgxLDMwMjAxLDE0MzMxLDI0ODU3LDE0MzU3OCwxNDg0NjYsbnVsbCwyMjEwOSwxMzU4NDksMjI0MzksMTQ5ODU5LDE3MTUyNiwyMTA0NCwxNTk5MTgsMTM3NDEsMjc3MjIsNDAzMTYsMzE4MzAsMzk3MzcsMjI0OTQsMTM3MDY4LDIzNjM1LDI1ODExLDE2OTE2OCwxNTY0NjksMTYwMTAwLDM0NDc3LDEzNDQ0MCwxNTkwMTAsMTUwMjQyLDEzNDUxMyxudWxsLDIwOTkwLDEzOTAyMywyMzk1MCwzODY1OSwxMzg3MDUsNDA1NzcsMzY5NDAsMzE1MTksMzk2ODIsMjM3NjEsMzE2NTEsMjUxOTIsMjUzOTcsMzk2NzksMzE2OTUsMzk3MjIsMzE4NzAsMzk3MjYsMzE4MTAsMzE4NzgsMzk5NTcsMzE3NDAsMzk2ODksNDA3MjcsMzk5NjMsMTQ5ODIyLDQwNzk0LDIxODc1LDIzNDkxLDIwNDc3LDQwNjAwLDIwNDY2LDIxMDg4LDE1ODc4LDIxMjAxLDIyMzc1LDIwNTY2LDIyOTY3LDI0MDgyLDM4ODU2LDQwMzYzLDM2NzAwLDIxNjA5LDM4ODM2LDM5MjMyLDM4ODQyLDIxMjkyLDI0ODgwLDI2OTI0LDIxNDY2LDM5OTQ2LDQwMTk0LDE5NTE1LDM4NDY1LDI3MDA4LDIwNjQ2LDMwMDIyLDEzNzA2OSwzOTM4NiwyMTEwNyxudWxsLDM3MjA5LDM4NTI5LDM3MjEyLG51bGwsMzcyMDEsMTY3NTc1LDI1NDcxLDE1OTAxMSwyNzMzOCwyMjAzMywzNzI2MiwzMDA3NCwyNTIyMSwxMzIwOTIsMjk1MTksMzE4NTYsMTU0NjU3LDE0NjY4NSxudWxsLDE0OTc4NSwzMDQyMiwzOTgzNywyMDAxMCwxMzQzNTYsMzM3MjYsMzQ4ODIsbnVsbCwyMzYyNiwyNzA3MiwyMDcxNywyMjM5NCwyMTAyMywyNDA1MywyMDE3NCwyNzY5NywxMzE1NzAsMjAyODEsMjE2NjAsMjE3MjIsMjExNDYsMzYyMjYsMTM4MjIsMjQzMzIsMTM4MTEsbnVsbCwyNzQ3NCwzNzI0NCw0MDg2OSwzOTgzMSwzODk1OCwzOTA5MiwzOTYxMCw0MDYxNiw0MDU4MCwyOTA1MCwzMTUwOCxudWxsLDI3NjQyLDM0ODQwLDMyNjMyLG51bGwsMjIwNDgsMTczNjQyLDM2NDcxLDQwNzg3LG51bGwsMzYzMDgsMzY0MzEsNDA0NzYsMzYzNTMsMjUyMTgsMTY0NzMzLDM2MzkyLDM2NDY5LDMxNDQzLDE1MDEzNSwzMTI5NCwzMDkzNiwyNzg4MiwzNTQzMSwzMDIxNSwxNjY0OTAsNDA3NDIsMjc4NTQsMzQ3NzQsMzAxNDcsMTcyNzIyLDMwODAzLDE5NDYyNCwzNjEwOCwyOTQxMCwyOTU1MywzNTYyOSwyOTQ0MiwyOTkzNywzNjA3NSwxNTAyMDMsMzQzNTEsMjQ1MDYsMzQ5NzYsMTc1OTEsbnVsbCwxMzcyNzUsMTU5MjM3LG51bGwsMzU0NTQsMTQwNTcxLG51bGwsMjQ4MjksMzAzMTEsMzk2MzksNDAyNjAsMzc3NDIsMzk4MjMsMzQ4MDUsbnVsbCwzNDgzMSwzNjA4NywyOTQ4NCwzODY4OSwzOTg1NiwxMzc4MiwyOTM2MiwxOTQ2MywzMTgyNSwzOTI0MiwxNTU5OTMsMjQ5MjEsMTk0NjAsNDA1OTgsMjQ5NTcsbnVsbCwyMjM2NywyNDk0MywyNTI1NCwyNTE0NSwyNTI5NCwxNDk0MCwyNTA1OCwyMTQxOCwxNDQzNzMsMjU0NDQsMjY2MjYsMTM3NzgsMjM4OTUsMTY2ODUwLDM2ODI2LDE2NzQ4MSxudWxsLDIwNjk3LDEzODU2NiwzMDk4MiwyMTI5OCwzODQ1NiwxMzQ5NzEsMTY0ODUsbnVsbCwzMDcxOCxudWxsLDMxOTM4LDE1NTQxOCwzMTk2MiwzMTI3NywzMjg3MCwzMjg2NywzMjA3NywyOTk1NywyOTkzOCwzNTIyMCwzMzMwNiwyNjM4MCwzMjg2NiwxNjA5MDIsMzI4NTksMjk5MzYsMzMwMjcsMzA1MDAsMzUyMDksMTU3NjQ0LDMwMDM1LDE1OTQ0MSwzNDcyOSwzNDc2NiwzMzIyNCwzNDcwMCwzNTQwMSwzNjAxMywzNTY1MSwzMDUwNywyOTk0NCwzNDAxMCwxMzg3NywyNzA1OCwzNjI2MixudWxsLDM1MjQxLDI5ODAwLDI4MDg5LDM0NzUzLDE0NzQ3MywyOTkyNywxNTgzNSwyOTA0NiwyNDc0MCwyNDk4OCwxNTU2OSwyOTAyNiwyNDY5NSxudWxsLDMyNjI1LDE2NjcwMSwyOTI2NCwyNDgwOSwxOTMyNiwyMTAyNCwxNTM4NCwxNDY2MzEsMTU1MzUxLDE2MTM2NiwxNTI4ODEsMTM3NTQwLDEzNTkzNCwxNzAyNDMsMTU5MTk2LDE1OTkxNywyMzc0NSwxNTYwNzcsMTY2NDE1LDE0NTAxNSwxMzEzMTAsMTU3NzY2LDE1MTMxMCwxNzc2MiwyMzMyNywxNTY0OTIsNDA3ODQsNDA2MTQsMTU2MjY3LDEyMjg4LDY1MjkyLDEyMjg5LDEyMjkwLDY1Mjk0LDgyMzEsNjUzMDcsNjUzMDYsNjUzMTEsNjUyODEsNjUwNzIsODIzMCw4MjI5LDY1MTA0LDY1MTA1LDY1MTA2LDE4Myw2NTEwOCw2NTEwOSw2NTExMCw2NTExMSw2NTM3Miw4MjExLDY1MDczLDgyMTIsNjUwNzUsOTU4OCw2NTA3Niw2NTEwMyw2NTI4OCw2NTI4OSw2NTA3Nyw2NTA3OCw2NTM3MSw2NTM3Myw2NTA3OSw2NTA4MCwxMjMwOCwxMjMwOSw2NTA4MSw2NTA4MiwxMjMwNCwxMjMwNSw2NTA4Myw2NTA4NCwxMjI5OCwxMjI5OSw2NTA4NSw2NTA4NiwxMjI5NiwxMjI5Nyw2NTA4Nyw2NTA4OCwxMjMwMCwxMjMwMSw2NTA4OSw2NTA5MCwxMjMwMiwxMjMwMyw2NTA5MSw2NTA5Miw2NTExMyw2NTExNCw2NTExNSw2NTExNiw2NTExNyw2NTExOCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzE3LDEyMzE4LDgyNDUsODI0Miw2NTI4Myw2NTI4Niw2NTI5MCw4MjUxLDE2NywxMjI5MSw5Njc1LDk2NzksOTY1MSw5NjUwLDk2NzgsOTczNCw5NzMzLDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY2MSw5NjYwLDEyOTYzLDg0NTMsMTc1LDY1NTA3LDY1MzQzLDcxNyw2NTA5Nyw2NTA5OCw2NTEwMSw2NTEwMiw2NTA5OSw2NTEwMCw2NTExOSw2NTEyMCw2NTEyMSw2NTI5MSw2NTI5MywyMTUsMjQ3LDE3Nyw4NzMwLDY1MzA4LDY1MzEwLDY1MzA5LDg4MDYsODgwNyw4ODAwLDg3MzQsODc4Niw4ODAxLDY1MTIyLDY1MTIzLDY1MTI0LDY1MTI1LDY1MTI2LDY1Mzc0LDg3NDUsODc0Niw4ODY5LDg3MzYsODczNSw4ODk1LDEzMjY2LDEzMjY1LDg3NDcsODc1MCw4NzU3LDg3NTYsOTc5Miw5Nzk0LDg4NTMsODg1Nyw4NTkzLDg1OTUsODU5Miw4NTk0LDg1OTgsODU5OSw4NjAxLDg2MDAsODc0MSw4NzM5LDY1Mjk1LDY1MzQwLDg3MjUsNjUxMjgsNjUyODQsNjU1MDksMTIzMDYsNjU1MDQsNjU1MDUsNjUyODUsNjUzMTIsODQ1MSw4NDU3LDY1MTI5LDY1MTMwLDY1MTMxLDEzMjY5LDEzMjEyLDEzMjEzLDEzMjE0LDEzMjYyLDEzMjE3LDEzMTk4LDEzMTk5LDEzMjUyLDE3NiwyMDgyNSwyMDgyNywyMDgzMCwyMDgyOSwyMDgzMywyMDgzNSwyMTk5MSwyOTkyOSwzMTk1MCw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYxNSw5NjE0LDk2MTMsOTYxMiw5NjExLDk2MTAsOTYwOSw5NTMyLDk1MjQsOTUxNiw5NTA4LDk1MDAsOTYyMCw5NDcyLDk0NzQsOTYyMSw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1ODEsOTU4Miw5NTg0LDk1ODMsOTU1Miw5NTY2LDk1NzgsOTU2OSw5Njk4LDk2OTksOTcwMSw5NzAwLDk1ODUsOTU4Niw5NTg3LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsMTIzMjEsMTIzMjIsMTIzMjMsMTIzMjQsMTIzMjUsMTIzMjYsMTIzMjcsMTIzMjgsMTIzMjksMjEzMTMsMjEzMTYsMjEzMTcsNjUzMTMsNjUzMTQsNjUzMTUsNjUzMTYsNjUzMTcsNjUzMTgsNjUzMTksNjUzMjAsNjUzMjEsNjUzMjIsNjUzMjMsNjUzMjQsNjUzMjUsNjUzMjYsNjUzMjcsNjUzMjgsNjUzMjksNjUzMzAsNjUzMzEsNjUzMzIsNjUzMzMsNjUzMzQsNjUzMzUsNjUzMzYsNjUzMzcsNjUzMzgsNjUzNDUsNjUzNDYsNjUzNDcsNjUzNDgsNjUzNDksNjUzNTAsNjUzNTEsNjUzNTIsNjUzNTMsNjUzNTQsNjUzNTUsNjUzNTYsNjUzNTcsNjUzNTgsNjUzNTksNjUzNjAsNjUzNjEsNjUzNjIsNjUzNjMsNjUzNjQsNjUzNjUsNjUzNjYsNjUzNjcsNjUzNjgsNjUzNjksNjUzNzAsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksMTI1NDksMTI1NTAsMTI1NTEsMTI1NTIsMTI1NTMsMTI1NTQsMTI1NTUsMTI1NTYsMTI1NTcsMTI1NTgsMTI1NTksMTI1NjAsMTI1NjEsMTI1NjIsMTI1NjMsMTI1NjQsMTI1NjUsMTI1NjYsMTI1NjcsMTI1NjgsMTI1NjksMTI1NzAsMTI1NzEsMTI1NzIsMTI1NzMsMTI1NzQsMTI1NzUsMTI1NzYsMTI1NzcsMTI1NzgsMTI1NzksMTI1ODAsMTI1ODEsMTI1ODIsMTI1ODMsMTI1ODQsMTI1ODUsNzI5LDcxMyw3MTQsNzExLDcxNSw5MjE2LDkyMTcsOTIxOCw5MjE5LDkyMjAsOTIyMSw5MjIyLDkyMjMsOTIyNCw5MjI1LDkyMjYsOTIyNyw5MjI4LDkyMjksOTIzMCw5MjMxLDkyMzIsOTIzMyw5MjM0LDkyMzUsOTIzNiw5MjM3LDkyMzgsOTIzOSw5MjQwLDkyNDEsOTI0Miw5MjQzLDkyNDQsOTI0NSw5MjQ2LDkyNDcsOTI0OSw4MzY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTk2OCwyMDA1NywxOTk2OSwxOTk3MSwyMDAzNSwyMDA2MSwyMDEwMiwyMDEwOCwyMDE1NCwyMDc5OSwyMDgzNywyMDg0MywyMDk2MCwyMDk5MiwyMDk5MywyMTE0NywyMTI2OSwyMTMxMywyMTM0MCwyMTQ0OCwxOTk3NywxOTk3OSwxOTk3NiwxOTk3OCwyMDAxMSwyMDAyNCwyMDk2MSwyMDAzNywyMDA0MCwyMDA2MywyMDA2MiwyMDExMCwyMDEyOSwyMDgwMCwyMDk5NSwyMTI0MiwyMTMxNSwyMTQ0OSwyMTQ3NSwyMjMwMywyMjc2MywyMjgwNSwyMjgyMywyMjg5OSwyMzM3NiwyMzM3NywyMzM3OSwyMzU0NCwyMzU2NywyMzU4NiwyMzYwOCwyMzY2NSwyNDAyOSwyNDAzNywyNDA0OSwyNDA1MCwyNDA1MSwyNDA2MiwyNDE3OCwyNDMxOCwyNDMzMSwyNDMzOSwyNTE2NSwxOTk4NSwxOTk4NCwxOTk4MSwyMDAxMywyMDAxNiwyMDAyNSwyMDA0MywyMzYwOSwyMDEwNCwyMDExMywyMDExNywyMDExNCwyMDExNiwyMDEzMCwyMDE2MSwyMDE2MCwyMDE2MywyMDE2NiwyMDE2NywyMDE3MywyMDE3MCwyMDE3MSwyMDE2NCwyMDgwMywyMDgwMSwyMDgzOSwyMDg0NSwyMDg0NiwyMDg0NCwyMDg4NywyMDk4MiwyMDk5OCwyMDk5OSwyMTAwMCwyMTI0MywyMTI0NiwyMTI0NywyMTI3MCwyMTMwNSwyMTMyMCwyMTMxOSwyMTMxNywyMTM0MiwyMTM4MCwyMTQ1MSwyMTQ1MCwyMTQ1MywyMjc2NCwyMjgyNSwyMjgyNywyMjgyNiwyMjgyOSwyMzM4MCwyMzU2OSwyMzU4OCwyMzYxMCwyMzY2MywyNDA1MiwyNDE4NywyNDMxOSwyNDM0MCwyNDM0MSwyNDUxNSwyNTA5NiwyNTE0MiwyNTE2MywyNTE2NiwyNTkwMywyNTk5MSwyNjAwNywyNjAyMCwyNjA0MSwyNjA4NSwyNjM1MiwyNjM3NiwyNjQwOCwyNzQyNCwyNzQ5MCwyNzUxMywyNzU5NSwyNzYwNCwyNzYxMSwyNzY2MywyNzcwMCwyODc3OSwyOTIyNiwyOTIzOCwyOTI0MywyOTI1NSwyOTI3MywyOTI3NSwyOTM1NiwyOTU3OSwxOTk5MywxOTk5MCwxOTk4OSwxOTk4OCwxOTk5MiwyMDAyNywyMDA0NSwyMDA0NywyMDA0NiwyMDE5NywyMDE4NCwyMDE4MCwyMDE4MSwyMDE4MiwyMDE4MywyMDE5NSwyMDE5NiwyMDE4NSwyMDE5MCwyMDgwNSwyMDgwNCwyMDg3MywyMDg3NCwyMDkwOCwyMDk4NSwyMDk4NiwyMDk4NCwyMTAwMiwyMTE1MiwyMTE1MSwyMTI1MywyMTI1NCwyMTI3MSwyMTI3NywyMDE5MSwyMTMyMiwyMTMyMSwyMTM0NSwyMTM0NCwyMTM1OSwyMTM1OCwyMTQzNSwyMTQ4NywyMTQ3NiwyMTQ5MSwyMTQ4NCwyMTQ4NiwyMTQ4MSwyMTQ4MCwyMTUwMCwyMTQ5NiwyMTQ5MywyMTQ4MywyMTQ3OCwyMTQ4MiwyMTQ5MCwyMTQ4OSwyMTQ4OCwyMTQ3NywyMTQ4NSwyMTQ5OSwyMjIzNSwyMjIzNCwyMjgwNiwyMjgzMCwyMjgzMywyMjkwMCwyMjkwMiwyMzM4MSwyMzQyNywyMzYxMiwyNDA0MCwyNDAzOSwyNDAzOCwyNDA2NiwyNDA2NywyNDE3OSwyNDE4OCwyNDMyMSwyNDM0NCwyNDM0MywyNDUxNywyNTA5OCwyNTE3MSwyNTE3MiwyNTE3MCwyNTE2OSwyNjAyMSwyNjA4NiwyNjQxNCwyNjQxMiwyNjQxMCwyNjQxMSwyNjQxMywyNzQ5MSwyNzU5NywyNzY2NSwyNzY2NCwyNzcwNCwyNzcxMywyNzcxMiwyNzcxMCwyOTM1OSwyOTU3MiwyOTU3NywyOTkxNiwyOTkyNiwyOTk3NiwyOTk4MywyOTk5MiwyOTk5MywzMDAwMCwzMDAwMSwzMDAwMiwzMDAwMywzMDA5MSwzMDMzMywzMDM4MiwzMDM5OSwzMDQ0NiwzMDY4MywzMDY5MCwzMDcwNywzMTAzNCwzMTE2NiwzMTM0OCwzMTQzNSwxOTk5OCwxOTk5OSwyMDA1MCwyMDA1MSwyMDA3MywyMDEyMSwyMDEzMiwyMDEzNCwyMDEzMywyMDIyMywyMDIzMywyMDI0OSwyMDIzNCwyMDI0NSwyMDIzNywyMDI0MCwyMDI0MSwyMDIzOSwyMDIxMCwyMDIxNCwyMDIxOSwyMDIwOCwyMDIxMSwyMDIyMSwyMDIyNSwyMDIzNSwyMDgwOSwyMDgwNywyMDgwNiwyMDgwOCwyMDg0MCwyMDg0OSwyMDg3NywyMDkxMiwyMTAxNSwyMTAwOSwyMTAxMCwyMTAwNiwyMTAxNCwyMTE1NSwyMTI1NiwyMTI4MSwyMTI4MCwyMTM2MCwyMTM2MSwyMTUxMywyMTUxOSwyMTUxNiwyMTUxNCwyMTUyMCwyMTUwNSwyMTUxNSwyMTUwOCwyMTUyMSwyMTUxNywyMTUxMiwyMTUwNywyMTUxOCwyMTUxMCwyMTUyMiwyMjI0MCwyMjIzOCwyMjIzNywyMjMyMywyMjMyMCwyMjMxMiwyMjMxNywyMjMxNiwyMjMxOSwyMjMxMywyMjgwOSwyMjgxMCwyMjgzOSwyMjg0MCwyMjkxNiwyMjkwNCwyMjkxNSwyMjkwOSwyMjkwNSwyMjkxNCwyMjkxMywyMzM4MywyMzM4NCwyMzQzMSwyMzQzMiwyMzQyOSwyMzQzMywyMzU0NiwyMzU3NCwyMzY3MywyNDAzMCwyNDA3MCwyNDE4MiwyNDE4MCwyNDMzNSwyNDM0NywyNDUzNywyNDUzNCwyNTEwMiwyNTEwMCwyNTEwMSwyNTEwNCwyNTE4NywyNTE3OSwyNTE3NiwyNTkxMCwyNjA4OSwyNjA4OCwyNjA5MiwyNjA5MywyNjM1NCwyNjM1NSwyNjM3NywyNjQyOSwyNjQyMCwyNjQxNywyNjQyMSwyNzQyNSwyNzQ5MiwyNzUxNSwyNzY3MCwyNzc0MSwyNzczNSwyNzczNywyNzc0MywyNzc0NCwyNzcyOCwyNzczMywyNzc0NSwyNzczOSwyNzcyNSwyNzcyNiwyODc4NCwyOTI3OSwyOTI3NywzMDMzNCwzMTQ4MSwzMTg1OSwzMTk5MiwzMjU2NiwzMjY1MCwzMjcwMSwzMjc2OSwzMjc3MSwzMjc4MCwzMjc4NiwzMjgxOSwzMjg5NSwzMjkwNSwzMjkwNywzMjkwOCwzMzI1MSwzMzI1OCwzMzI2NywzMzI3NiwzMzI5MiwzMzMwNywzMzMxMSwzMzM5MCwzMzM5NCwzMzQwNiwzNDQxMSwzNDg4MCwzNDg5MiwzNDkxNSwzNTE5OSwzODQzMywyMDAxOCwyMDEzNiwyMDMwMSwyMDMwMywyMDI5NSwyMDMxMSwyMDMxOCwyMDI3NiwyMDMxNSwyMDMwOSwyMDI3MiwyMDMwNCwyMDMwNSwyMDI4NSwyMDI4MiwyMDI4MCwyMDI5MSwyMDMwOCwyMDI4NCwyMDI5NCwyMDMyMywyMDMxNiwyMDMyMCwyMDI3MSwyMDMwMiwyMDI3OCwyMDMxMywyMDMxNywyMDI5NiwyMDMxNCwyMDgxMiwyMDgxMSwyMDgxMywyMDg1MywyMDkxOCwyMDkxOSwyMTAyOSwyMTAyOCwyMTAzMywyMTAzNCwyMTAzMiwyMTE2MywyMTE2MSwyMTE2MiwyMTE2NCwyMTI4MywyMTM2MywyMTM2NSwyMTUzMywyMTU0OSwyMTUzNCwyMTU2NiwyMTU0MiwyMTU4MiwyMTU0MywyMTU3NCwyMTU3MSwyMTU1NSwyMTU3NiwyMTU3MCwyMTUzMSwyMTU0NSwyMTU3OCwyMTU2MSwyMTU2MywyMTU2MCwyMTU1MCwyMTU1NywyMTU1OCwyMTUzNiwyMTU2NCwyMTU2OCwyMTU1MywyMTU0NywyMTUzNSwyMTU0OCwyMjI1MCwyMjI1NiwyMjI0NCwyMjI1MSwyMjM0NiwyMjM1MywyMjMzNiwyMjM0OSwyMjM0MywyMjM1MCwyMjMzNCwyMjM1MiwyMjM1MSwyMjMzMSwyMjc2NywyMjg0NiwyMjk0MSwyMjkzMCwyMjk1MiwyMjk0MiwyMjk0NywyMjkzNywyMjkzNCwyMjkyNSwyMjk0OCwyMjkzMSwyMjkyMiwyMjk0OSwyMzM4OSwyMzM4OCwyMzM4NiwyMzM4NywyMzQzNiwyMzQzNSwyMzQzOSwyMzU5NiwyMzYxNiwyMzYxNywyMzYxNSwyMzYxNCwyMzY5NiwyMzY5NywyMzcwMCwyMzY5MiwyNDA0MywyNDA3NiwyNDIwNywyNDE5OSwyNDIwMiwyNDMxMSwyNDMyNCwyNDM1MSwyNDQyMCwyNDQxOCwyNDQzOSwyNDQ0MSwyNDUzNiwyNDUyNCwyNDUzNSwyNDUyNSwyNDU2MSwyNDU1NSwyNDU2OCwyNDU1NCwyNTEwNiwyNTEwNSwyNTIyMCwyNTIzOSwyNTIzOCwyNTIxNiwyNTIwNiwyNTIyNSwyNTE5NywyNTIyNiwyNTIxMiwyNTIxNCwyNTIwOSwyNTIwMywyNTIzNCwyNTE5OSwyNTI0MCwyNTE5OCwyNTIzNywyNTIzNSwyNTIzMywyNTIyMiwyNTkxMywyNTkxNSwyNTkxMiwyNjA5NywyNjM1NiwyNjQ2MywyNjQ0NiwyNjQ0NywyNjQ0OCwyNjQ0OSwyNjQ2MCwyNjQ1NCwyNjQ2MiwyNjQ0MSwyNjQzOCwyNjQ2NCwyNjQ1MSwyNjQ1NSwyNzQ5MywyNzU5OSwyNzcxNCwyNzc0MiwyNzgwMSwyNzc3NywyNzc4NCwyNzc4NSwyNzc4MSwyNzgwMywyNzc1NCwyNzc3MCwyNzc5MiwyNzc2MCwyNzc4OCwyNzc1MiwyNzc5OCwyNzc5NCwyNzc3MywyNzc3OSwyNzc2MiwyNzc3NCwyNzc2NCwyNzc4MiwyNzc2NiwyNzc4OSwyNzc5NiwyNzgwMCwyNzc3OCwyODc5MCwyODc5NiwyODc5NywyODc5MiwyOTI4MiwyOTI4MSwyOTI4MCwyOTM4MCwyOTM3OCwyOTU5MCwyOTk5NiwyOTk5NSwzMDAwNywzMDAwOCwzMDMzOCwzMDQ0NywzMDY5MSwzMTE2OSwzMTE2OCwzMTE2NywzMTM1MCwzMTk5NSwzMjU5NywzMjkxOCwzMjkxNSwzMjkyNSwzMjkyMCwzMjkyMywzMjkyMiwzMjk0NiwzMzM5MSwzMzQyNiwzMzQxOSwzMzQyMSwzNTIxMSwzNTI4MiwzNTMyOCwzNTg5NSwzNTkxMCwzNTkyNSwzNTk5NywzNjE5NiwzNjIwOCwzNjI3NSwzNjUyMywzNjU1NCwzNjc2MywzNjc4NCwzNjgwMiwzNjgwNiwzNjgwNSwzNjgwNCwyNDAzMywzNzAwOSwzNzAyNiwzNzAzNCwzNzAzMCwzNzAyNywzNzE5MywzNzMxOCwzNzMyNCwzODQ1MCwzODQ0NiwzODQ0OSwzODQ0MiwzODQ0NCwyMDAwNiwyMDA1NCwyMDA4MywyMDEwNywyMDEyMywyMDEyNiwyMDEzOSwyMDE0MCwyMDMzNSwyMDM4MSwyMDM2NSwyMDMzOSwyMDM1MSwyMDMzMiwyMDM3OSwyMDM2MywyMDM1OCwyMDM1NSwyMDMzNiwyMDM0MSwyMDM2MCwyMDMyOSwyMDM0NywyMDM3NCwyMDM1MCwyMDM2NywyMDM2OSwyMDM0NiwyMDgyMCwyMDgxOCwyMDgyMSwyMDg0MSwyMDg1NSwyMDg1NCwyMDg1NiwyMDkyNSwyMDk4OSwyMTA1MSwyMTA0OCwyMTA0NywyMTA1MCwyMTA0MCwyMTAzOCwyMTA0NiwyMTA1NywyMTE4MiwyMTE3OSwyMTMzMCwyMTMzMiwyMTMzMSwyMTMyOSwyMTM1MCwyMTM2NywyMTM2OCwyMTM2OSwyMTQ2MiwyMTQ2MCwyMTQ2MywyMTYxOSwyMTYyMSwyMTY1NCwyMTYyNCwyMTY1MywyMTYzMiwyMTYyNywyMTYyMywyMTYzNiwyMTY1MCwyMTYzOCwyMTYyOCwyMTY0OCwyMTYxNywyMTYyMiwyMTY0NCwyMTY1OCwyMTYwMiwyMTYwOCwyMTY0MywyMTYyOSwyMTY0NiwyMjI2NiwyMjQwMywyMjM5MSwyMjM3OCwyMjM3NywyMjM2OSwyMjM3NCwyMjM3MiwyMjM5NiwyMjgxMiwyMjg1NywyMjg1NSwyMjg1NiwyMjg1MiwyMjg2OCwyMjk3NCwyMjk3MSwyMjk5NiwyMjk2OSwyMjk1OCwyMjk5MywyMjk4MiwyMjk5MiwyMjk4OSwyMjk4NywyMjk5NSwyMjk4NiwyMjk1OSwyMjk2MywyMjk5NCwyMjk4MSwyMzM5MSwyMzM5NiwyMzM5NSwyMzQ0NywyMzQ1MCwyMzQ0OCwyMzQ1MiwyMzQ0OSwyMzQ1MSwyMzU3OCwyMzYyNCwyMzYyMSwyMzYyMiwyMzczNSwyMzcxMywyMzczNiwyMzcyMSwyMzcyMywyMzcyOSwyMzczMSwyNDA4OCwyNDA5MCwyNDA4NiwyNDA4NSwyNDA5MSwyNDA4MSwyNDE4NCwyNDIxOCwyNDIxNSwyNDIyMCwyNDIxMywyNDIxNCwyNDMxMCwyNDM1OCwyNDM1OSwyNDM2MSwyNDQ0OCwyNDQ0OSwyNDQ0NywyNDQ0NCwyNDU0MSwyNDU0NCwyNDU3MywyNDU2NSwyNDU3NSwyNDU5MSwyNDU5NiwyNDYyMywyNDYyOSwyNDU5OCwyNDYxOCwyNDU5NywyNDYwOSwyNDYxNSwyNDYxNywyNDYxOSwyNDYwMywyNTExMCwyNTEwOSwyNTE1MSwyNTE1MCwyNTE1MiwyNTIxNSwyNTI4OSwyNTI5MiwyNTI4NCwyNTI3OSwyNTI4MiwyNTI3MywyNTI5OCwyNTMwNywyNTI1OSwyNTI5OSwyNTMwMCwyNTI5MSwyNTI4OCwyNTI1NiwyNTI3NywyNTI3NiwyNTI5NiwyNTMwNSwyNTI4NywyNTI5MywyNTI2OSwyNTMwNiwyNTI2NSwyNTMwNCwyNTMwMiwyNTMwMywyNTI4NiwyNTI2MCwyNTI5NCwyNTkxOCwyNjAyMywyNjA0NCwyNjEwNiwyNjEzMiwyNjEzMSwyNjEyNCwyNjExOCwyNjExNCwyNjEyNiwyNjExMiwyNjEyNywyNjEzMywyNjEyMiwyNjExOSwyNjM4MSwyNjM3OSwyNjQ3NywyNjUwNywyNjUxNywyNjQ4MSwyNjUyNCwyNjQ4MywyNjQ4NywyNjUwMywyNjUyNSwyNjUxOSwyNjQ3OSwyNjQ4MCwyNjQ5NSwyNjUwNSwyNjQ5NCwyNjUxMiwyNjQ4NSwyNjUyMiwyNjUxNSwyNjQ5MiwyNjQ3NCwyNjQ4MiwyNzQyNywyNzQ5NCwyNzQ5NSwyNzUxOSwyNzY2NywyNzY3NSwyNzg3NSwyNzg4MCwyNzg5MSwyNzgyNSwyNzg1MiwyNzg3NywyNzgyNywyNzgzNywyNzgzOCwyNzgzNiwyNzg3NCwyNzgxOSwyNzg2MSwyNzg1OSwyNzgzMiwyNzg0NCwyNzgzMywyNzg0MSwyNzgyMiwyNzg2MywyNzg0NSwyNzg4OSwyNzgzOSwyNzgzNSwyNzg3MywyNzg2NywyNzg1MCwyNzgyMCwyNzg4NywyNzg2OCwyNzg2MiwyNzg3MiwyODgyMSwyODgxNCwyODgxOCwyODgxMCwyODgyNSwyOTIyOCwyOTIyOSwyOTI0MCwyOTI1NiwyOTI4NywyOTI4OSwyOTM3NiwyOTM5MCwyOTQwMSwyOTM5OSwyOTM5MiwyOTYwOSwyOTYwOCwyOTU5OSwyOTYxMSwyOTYwNSwzMDAxMywzMDEwOSwzMDEwNSwzMDEwNiwzMDM0MCwzMDQwMiwzMDQ1MCwzMDQ1MiwzMDY5MywzMDcxNywzMTAzOCwzMTA0MCwzMTA0MSwzMTE3NywzMTE3NiwzMTM1NCwzMTM1MywzMTQ4MiwzMTk5OCwzMjU5NiwzMjY1MiwzMjY1MSwzMjc3MywzMjk1NCwzMjkzMywzMjkzMCwzMjk0NSwzMjkyOSwzMjkzOSwzMjkzNywzMjk0OCwzMjkzOCwzMjk0MywzMzI1MywzMzI3OCwzMzI5MywzMzQ1OSwzMzQzNywzMzQzMywzMzQ1MywzMzQ2OSwzMzQzOSwzMzQ2NSwzMzQ1NywzMzQ1MiwzMzQ0NSwzMzQ1NSwzMzQ2NCwzMzQ0MywzMzQ1NiwzMzQ3MCwzMzQ2MywzNDM4MiwzNDQxNywyMTAyMSwzNDkyMCwzNjU1NSwzNjgxNCwzNjgyMCwzNjgxNywzNzA0NSwzNzA0OCwzNzA0MSwzNzA0NiwzNzMxOSwzNzMyOSwzODI2MywzODI3MiwzODQyOCwzODQ2NCwzODQ2MywzODQ1OSwzODQ2OCwzODQ2NiwzODU4NSwzODYzMiwzODczOCwzODc1MCwyMDEyNywyMDE0MSwyMDE0MiwyMDQ0OSwyMDQwNSwyMDM5OSwyMDQxNSwyMDQ0OCwyMDQzMywyMDQzMSwyMDQ0NSwyMDQxOSwyMDQwNiwyMDQ0MCwyMDQ0NywyMDQyNiwyMDQzOSwyMDM5OCwyMDQzMiwyMDQyMCwyMDQxOCwyMDQ0MiwyMDQzMCwyMDQ0NiwyMDQwNywyMDgyMywyMDg4MiwyMDg4MSwyMDg5NiwyMTA3MCwyMTA1OSwyMTA2NiwyMTA2OSwyMTA2OCwyMTA2NywyMTA2MywyMTE5MSwyMTE5MywyMTE4NywyMTE4NSwyMTI2MSwyMTMzNSwyMTM3MSwyMTQwMiwyMTQ2NywyMTY3NiwyMTY5NiwyMTY3MiwyMTcxMCwyMTcwNSwyMTY4OCwyMTY3MCwyMTY4MywyMTcwMywyMTY5OCwyMTY5MywyMTY3NCwyMTY5NywyMTcwMCwyMTcwNCwyMTY3OSwyMTY3NSwyMTY4MSwyMTY5MSwyMTY3MywyMTY3MSwyMTY5NSwyMjI3MSwyMjQwMiwyMjQxMSwyMjQzMiwyMjQzNSwyMjQzNCwyMjQ3OCwyMjQ0NiwyMjQxOSwyMjg2OSwyMjg2NSwyMjg2MywyMjg2MiwyMjg2NCwyMzAwNCwyMzAwMCwyMzAzOSwyMzAxMSwyMzAxNiwyMzA0MywyMzAxMywyMzAxOCwyMzAwMiwyMzAxNCwyMzA0MSwyMzAzNSwyMzQwMSwyMzQ1OSwyMzQ2MiwyMzQ2MCwyMzQ1OCwyMzQ2MSwyMzU1MywyMzYzMCwyMzYzMSwyMzYyOSwyMzYyNywyMzc2OSwyMzc2MiwyNDA1NSwyNDA5MywyNDEwMSwyNDA5NSwyNDE4OSwyNDIyNCwyNDIzMCwyNDMxNCwyNDMyOCwyNDM2NSwyNDQyMSwyNDQ1NiwyNDQ1MywyNDQ1OCwyNDQ1OSwyNDQ1NSwyNDQ2MCwyNDQ1NywyNDU5NCwyNDYwNSwyNDYwOCwyNDYxMywyNDU5MCwyNDYxNiwyNDY1MywyNDY4OCwyNDY4MCwyNDY3NCwyNDY0NiwyNDY0MywyNDY4NCwyNDY4MywyNDY4MiwyNDY3NiwyNTE1MywyNTMwOCwyNTM2NiwyNTM1MywyNTM0MCwyNTMyNSwyNTM0NSwyNTMyNiwyNTM0MSwyNTM1MSwyNTMyOSwyNTMzNSwyNTMyNywyNTMyNCwyNTM0MiwyNTMzMiwyNTM2MSwyNTM0NiwyNTkxOSwyNTkyNSwyNjAyNywyNjA0NSwyNjA4MiwyNjE0OSwyNjE1NywyNjE0NCwyNjE1MSwyNjE1OSwyNjE0MywyNjE1MiwyNjE2MSwyNjE0OCwyNjM1OSwyNjYyMywyNjU3OSwyNjYwOSwyNjU4MCwyNjU3NiwyNjYwNCwyNjU1MCwyNjU0MywyNjYxMywyNjYwMSwyNjYwNywyNjU2NCwyNjU3NywyNjU0OCwyNjU4NiwyNjU5NywyNjU1MiwyNjU3NSwyNjU5MCwyNjYxMSwyNjU0NCwyNjU4NSwyNjU5NCwyNjU4OSwyNjU3OCwyNzQ5OCwyNzUyMywyNzUyNiwyNzU3MywyNzYwMiwyNzYwNywyNzY3OSwyNzg0OSwyNzkxNSwyNzk1NCwyNzk0NiwyNzk2OSwyNzk0MSwyNzkxNiwyNzk1MywyNzkzNCwyNzkyNywyNzk2MywyNzk2NSwyNzk2NiwyNzk1OCwyNzkzMSwyNzg5MywyNzk2MSwyNzk0MywyNzk2MCwyNzk0NSwyNzk1MCwyNzk1NywyNzkxOCwyNzk0NywyODg0MywyODg1OCwyODg1MSwyODg0NCwyODg0NywyODg0NSwyODg1NiwyODg0NiwyODgzNiwyOTIzMiwyOTI5OCwyOTI5NSwyOTMwMCwyOTQxNywyOTQwOCwyOTQwOSwyOTYyMywyOTY0MiwyOTYyNywyOTYxOCwyOTY0NSwyOTYzMiwyOTYxOSwyOTk3OCwyOTk5NywzMDAzMSwzMDAyOCwzMDAzMCwzMDAyNywzMDEyMywzMDExNiwzMDExNywzMDExNCwzMDExNSwzMDMyOCwzMDM0MiwzMDM0MywzMDM0NCwzMDQwOCwzMDQwNiwzMDQwMywzMDQwNSwzMDQ2NSwzMDQ1NywzMDQ1NiwzMDQ3MywzMDQ3NSwzMDQ2MiwzMDQ2MCwzMDQ3MSwzMDY4NCwzMDcyMiwzMDc0MCwzMDczMiwzMDczMywzMTA0NiwzMTA0OSwzMTA0OCwzMTA0NywzMTE2MSwzMTE2MiwzMTE4NSwzMTE4NiwzMTE3OSwzMTM1OSwzMTM2MSwzMTQ4NywzMTQ4NSwzMTg2OSwzMjAwMiwzMjAwNSwzMjAwMCwzMjAwOSwzMjAwNywzMjAwNCwzMjAwNiwzMjU2OCwzMjY1NCwzMjcwMywzMjc3MiwzMjc4NCwzMjc4MSwzMjc4NSwzMjgyMiwzMjk4MiwzMjk5NywzMjk4NiwzMjk2MywzMjk2NCwzMjk3MiwzMjk5MywzMjk4NywzMjk3NCwzMjk5MCwzMjk5NiwzMjk4OSwzMzI2OCwzMzMxNCwzMzUxMSwzMzUzOSwzMzU0MSwzMzUwNywzMzQ5OSwzMzUxMCwzMzU0MCwzMzUwOSwzMzUzOCwzMzU0NSwzMzQ5MCwzMzQ5NSwzMzUyMSwzMzUzNywzMzUwMCwzMzQ5MiwzMzQ4OSwzMzUwMiwzMzQ5MSwzMzUwMywzMzUxOSwzMzU0MiwzNDM4NCwzNDQyNSwzNDQyNywzNDQyNiwzNDg5MywzNDkyMywzNTIwMSwzNTI4NCwzNTMzNiwzNTMzMCwzNTMzMSwzNTk5OCwzNjAwMCwzNjIxMiwzNjIxMSwzNjI3NiwzNjU1NywzNjU1NiwzNjg0OCwzNjgzOCwzNjgzNCwzNjg0MiwzNjgzNywzNjg0NSwzNjg0MywzNjgzNiwzNjg0MCwzNzA2NiwzNzA3MCwzNzA1NywzNzA1OSwzNzE5NSwzNzE5NCwzNzMyNSwzODI3NCwzODQ4MCwzODQ3NSwzODQ3NiwzODQ3NywzODc1NCwzODc2MSwzODg1OSwzODg5MywzODg5OSwzODkxMywzOTA4MCwzOTEzMSwzOTEzNSwzOTMxOCwzOTMyMSwyMDA1NiwyMDE0NywyMDQ5MiwyMDQ5MywyMDUxNSwyMDQ2MywyMDUxOCwyMDUxNywyMDQ3MiwyMDUyMSwyMDUwMiwyMDQ4NiwyMDU0MCwyMDUxMSwyMDUwNiwyMDQ5OCwyMDQ5NywyMDQ3NCwyMDQ4MCwyMDUwMCwyMDUyMCwyMDQ2NSwyMDUxMywyMDQ5MSwyMDUwNSwyMDUwNCwyMDQ2NywyMDQ2MiwyMDUyNSwyMDUyMiwyMDQ3OCwyMDUyMywyMDQ4OSwyMDg2MCwyMDkwMCwyMDkwMSwyMDg5OCwyMDk0MSwyMDk0MCwyMDkzNCwyMDkzOSwyMTA3OCwyMTA4NCwyMTA3NiwyMTA4MywyMTA4NSwyMTI5MCwyMTM3NSwyMTQwNywyMTQwNSwyMTQ3MSwyMTczNiwyMTc3NiwyMTc2MSwyMTgxNSwyMTc1NiwyMTczMywyMTc0NiwyMTc2NiwyMTc1NCwyMTc4MCwyMTczNywyMTc0MSwyMTcyOSwyMTc2OSwyMTc0MiwyMTczOCwyMTczNCwyMTc5OSwyMTc2NywyMTc1NywyMTc3NSwyMjI3NSwyMjI3NiwyMjQ2NiwyMjQ4NCwyMjQ3NSwyMjQ2NywyMjUzNywyMjc5OSwyMjg3MSwyMjg3MiwyMjg3NCwyMzA1NywyMzA2NCwyMzA2OCwyMzA3MSwyMzA2NywyMzA1OSwyMzAyMCwyMzA3MiwyMzA3NSwyMzA4MSwyMzA3NywyMzA1MiwyMzA0OSwyMzQwMywyMzY0MCwyMzQ3MiwyMzQ3NSwyMzQ3OCwyMzQ3NiwyMzQ3MCwyMzQ3NywyMzQ4MSwyMzQ4MCwyMzU1NiwyMzYzMywyMzYzNywyMzYzMiwyMzc4OSwyMzgwNSwyMzgwMywyMzc4NiwyMzc4NCwyMzc5MiwyMzc5OCwyMzgwOSwyMzc5NiwyNDA0NiwyNDEwOSwyNDEwNywyNDIzNSwyNDIzNywyNDIzMSwyNDM2OSwyNDQ2NiwyNDQ2NSwyNDQ2NCwyNDY2NSwyNDY3NSwyNDY3NywyNDY1NiwyNDY2MSwyNDY4NSwyNDY4MSwyNDY4NywyNDcwOCwyNDczNSwyNDczMCwyNDcxNywyNDcyNCwyNDcxNiwyNDcwOSwyNDcyNiwyNTE1OSwyNTMzMSwyNTM1MiwyNTM0MywyNTQyMiwyNTQwNiwyNTM5MSwyNTQyOSwyNTQxMCwyNTQxNCwyNTQyMywyNTQxNywyNTQwMiwyNTQyNCwyNTQwNSwyNTM4NiwyNTM4NywyNTM4NCwyNTQyMSwyNTQyMCwyNTkyOCwyNTkyOSwyNjAwOSwyNjA0OSwyNjA1MywyNjE3OCwyNjE4NSwyNjE5MSwyNjE3OSwyNjE5NCwyNjE4OCwyNjE4MSwyNjE3NywyNjM2MCwyNjM4OCwyNjM4OSwyNjM5MSwyNjY1NywyNjY4MCwyNjY5NiwyNjY5NCwyNjcwNywyNjY4MSwyNjY5MCwyNjcwOCwyNjY2NSwyNjgwMywyNjY0NywyNjcwMCwyNjcwNSwyNjY4NSwyNjYxMiwyNjcwNCwyNjY4OCwyNjY4NCwyNjY5MSwyNjY2NiwyNjY5MywyNjY0MywyNjY0OCwyNjY4OSwyNzUzMCwyNzUyOSwyNzU3NSwyNzY4MywyNzY4NywyNzY4OCwyNzY4NiwyNzY4NCwyNzg4OCwyODAxMCwyODA1MywyODA0MCwyODAzOSwyODAwNiwyODAyNCwyODAyMywyNzk5MywyODA1MSwyODAxMiwyODA0MSwyODAxNCwyNzk5NCwyODAyMCwyODAwOSwyODA0NCwyODA0MiwyODAyNSwyODAzNywyODAwNSwyODA1MiwyODg3NCwyODg4OCwyODkwMCwyODg4OSwyODg3MiwyODg3OSwyOTI0MSwyOTMwNSwyOTQzNiwyOTQzMywyOTQzNywyOTQzMiwyOTQzMSwyOTU3NCwyOTY3NywyOTcwNSwyOTY3OCwyOTY2NCwyOTY3NCwyOTY2MiwzMDAzNiwzMDA0NSwzMDA0NCwzMDA0MiwzMDA0MSwzMDE0MiwzMDE0OSwzMDE1MSwzMDEzMCwzMDEzMSwzMDE0MSwzMDE0MCwzMDEzNywzMDE0NiwzMDEzNiwzMDM0NywzMDM4NCwzMDQxMCwzMDQxMywzMDQxNCwzMDUwNSwzMDQ5NSwzMDQ5NiwzMDUwNCwzMDY5NywzMDc2OCwzMDc1OSwzMDc3NiwzMDc0OSwzMDc3MiwzMDc3NSwzMDc1NywzMDc2NSwzMDc1MiwzMDc1MSwzMDc3MCwzMTA2MSwzMTA1NiwzMTA3MiwzMTA3MSwzMTA2MiwzMTA3MCwzMTA2OSwzMTA2MywzMTA2NiwzMTIwNCwzMTIwMywzMTIwNywzMTE5OSwzMTIwNiwzMTIwOSwzMTE5MiwzMTM2NCwzMTM2OCwzMTQ0OSwzMTQ5NCwzMTUwNSwzMTg4MSwzMjAzMywzMjAyMywzMjAxMSwzMjAxMCwzMjAzMiwzMjAzNCwzMjAyMCwzMjAxNiwzMjAyMSwzMjAyNiwzMjAyOCwzMjAxMywzMjAyNSwzMjAyNywzMjU3MCwzMjYwNywzMjY2MCwzMjcwOSwzMjcwNSwzMjc3NCwzMjc5MiwzMjc4OSwzMjc5MywzMjc5MSwzMjgyOSwzMjgzMSwzMzAwOSwzMzAyNiwzMzAwOCwzMzAyOSwzMzAwNSwzMzAxMiwzMzAzMCwzMzAxNiwzMzAxMSwzMzAzMiwzMzAyMSwzMzAzNCwzMzAyMCwzMzAwNywzMzI2MSwzMzI2MCwzMzI4MCwzMzI5NiwzMzMyMiwzMzMyMywzMzMyMCwzMzMyNCwzMzQ2NywzMzU3OSwzMzYxOCwzMzYyMCwzMzYxMCwzMzU5MiwzMzYxNiwzMzYwOSwzMzU4OSwzMzU4OCwzMzYxNSwzMzU4NiwzMzU5MywzMzU5MCwzMzU1OSwzMzYwMCwzMzU4NSwzMzU3NiwzMzYwMywzNDM4OCwzNDQ0MiwzNDQ3NCwzNDQ1MSwzNDQ2OCwzNDQ3MywzNDQ0NCwzNDQ2NywzNDQ2MCwzNDkyOCwzNDkzNSwzNDk0NSwzNDk0NiwzNDk0MSwzNDkzNywzNTM1MiwzNTM0NCwzNTM0MiwzNTM0MCwzNTM0OSwzNTMzOCwzNTM1MSwzNTM0NywzNTM1MCwzNTM0MywzNTM0NSwzNTkxMiwzNTk2MiwzNTk2MSwzNjAwMSwzNjAwMiwzNjIxNSwzNjUyNCwzNjU2MiwzNjU2NCwzNjU1OSwzNjc4NSwzNjg2NSwzNjg3MCwzNjg1NSwzNjg2NCwzNjg1OCwzNjg1MiwzNjg2NywzNjg2MSwzNjg2OSwzNjg1NiwzNzAxMywzNzA4OSwzNzA4NSwzNzA5MCwzNzIwMiwzNzE5NywzNzE5NiwzNzMzNiwzNzM0MSwzNzMzNSwzNzM0MCwzNzMzNywzODI3NSwzODQ5OCwzODQ5OSwzODQ5NywzODQ5MSwzODQ5MywzODUwMCwzODQ4OCwzODQ5NCwzODU4NywzOTEzOCwzOTM0MCwzOTU5MiwzOTY0MCwzOTcxNywzOTczMCwzOTc0MCwyMDA5NCwyMDYwMiwyMDYwNSwyMDU3MiwyMDU1MSwyMDU0NywyMDU1NiwyMDU3MCwyMDU1MywyMDU4MSwyMDU5OCwyMDU1OCwyMDU2NSwyMDU5NywyMDU5NiwyMDU5OSwyMDU1OSwyMDQ5NSwyMDU5MSwyMDU4OSwyMDgyOCwyMDg4NSwyMDk3NiwyMTA5OCwyMTEwMywyMTIwMiwyMTIwOSwyMTIwOCwyMTIwNSwyMTI2NCwyMTI2MywyMTI3MywyMTMxMSwyMTMxMiwyMTMxMCwyMTQ0MywyNjM2NCwyMTgzMCwyMTg2NiwyMTg2MiwyMTgyOCwyMTg1NCwyMTg1NywyMTgyNywyMTgzNCwyMTgwOSwyMTg0NiwyMTgzOSwyMTg0NSwyMTgwNywyMTg2MCwyMTgxNiwyMTgwNiwyMTg1MiwyMTgwNCwyMTg1OSwyMTgxMSwyMTgyNSwyMTg0NywyMjI4MCwyMjI4MywyMjI4MSwyMjQ5NSwyMjUzMywyMjUzOCwyMjUzNCwyMjQ5NiwyMjUwMCwyMjUyMiwyMjUzMCwyMjU4MSwyMjUxOSwyMjUyMSwyMjgxNiwyMjg4MiwyMzA5NCwyMzEwNSwyMzExMywyMzE0MiwyMzE0NiwyMzEwNCwyMzEwMCwyMzEzOCwyMzEzMCwyMzExMCwyMzExNCwyMzQwOCwyMzQ5NSwyMzQ5MywyMzQ5MiwyMzQ5MCwyMzQ4NywyMzQ5NCwyMzU2MSwyMzU2MCwyMzU1OSwyMzY0OCwyMzY0NCwyMzY0NSwyMzgxNSwyMzgxNCwyMzgyMiwyMzgzNSwyMzgzMCwyMzg0MiwyMzgyNSwyMzg0OSwyMzgyOCwyMzgzMywyMzg0NCwyMzg0NywyMzgzMSwyNDAzNCwyNDEyMCwyNDExOCwyNDExNSwyNDExOSwyNDI0NywyNDI0OCwyNDI0NiwyNDI0NSwyNDI1NCwyNDM3MywyNDM3NSwyNDQwNywyNDQyOCwyNDQyNSwyNDQyNywyNDQ3MSwyNDQ3MywyNDQ3OCwyNDQ3MiwyNDQ4MSwyNDQ4MCwyNDQ3NiwyNDcwMywyNDczOSwyNDcxMywyNDczNiwyNDc0NCwyNDc3OSwyNDc1NiwyNDgwNiwyNDc2NSwyNDc3MywyNDc2MywyNDc1NywyNDc5NiwyNDc2NCwyNDc5MiwyNDc4OSwyNDc3NCwyNDc5OSwyNDc2MCwyNDc5NCwyNDc3NSwyNTExNCwyNTExNSwyNTE2MCwyNTUwNCwyNTUxMSwyNTQ1OCwyNTQ5NCwyNTUwNiwyNTUwOSwyNTQ2MywyNTQ0NywyNTQ5NiwyNTUxNCwyNTQ1NywyNTUxMywyNTQ4MSwyNTQ3NSwyNTQ5OSwyNTQ1MSwyNTUxMiwyNTQ3NiwyNTQ4MCwyNTQ5NywyNTUwNSwyNTUxNiwyNTQ5MCwyNTQ4NywyNTQ3MiwyNTQ2NywyNTQ0OSwyNTQ0OCwyNTQ2NiwyNTk0OSwyNTk0MiwyNTkzNywyNTk0NSwyNTk0MywyMTg1NSwyNTkzNSwyNTk0NCwyNTk0MSwyNTk0MCwyNjAxMiwyNjAxMSwyNjAyOCwyNjA2MywyNjA1OSwyNjA2MCwyNjA2MiwyNjIwNSwyNjIwMiwyNjIxMiwyNjIxNiwyNjIxNCwyNjIwNiwyNjM2MSwyMTIwNywyNjM5NSwyNjc1MywyNjc5OSwyNjc4NiwyNjc3MSwyNjgwNSwyNjc1MSwyNjc0MiwyNjgwMSwyNjc5MSwyNjc3NSwyNjgwMCwyNjc1NSwyNjgyMCwyNjc5NywyNjc1OCwyNjc1NywyNjc3MiwyNjc4MSwyNjc5MiwyNjc4MywyNjc4NSwyNjc1NCwyNzQ0MiwyNzU3OCwyNzYyNywyNzYyOCwyNzY5MSwyODA0NiwyODA5MiwyODE0NywyODEyMSwyODA4MiwyODEyOSwyODEwOCwyODEzMiwyODE1NSwyODE1NCwyODE2NSwyODEwMywyODEwNywyODA3OSwyODExMywyODA3OCwyODEyNiwyODE1MywyODA4OCwyODE1MSwyODE0OSwyODEwMSwyODExNCwyODE4NiwyODA4NSwyODEyMiwyODEzOSwyODEyMCwyODEzOCwyODE0NSwyODE0MiwyODEzNiwyODEwMiwyODEwMCwyODA3NCwyODE0MCwyODA5NSwyODEzNCwyODkyMSwyODkzNywyODkzOCwyODkyNSwyODkxMSwyOTI0NSwyOTMwOSwyOTMxMywyOTQ2OCwyOTQ2NywyOTQ2MiwyOTQ1OSwyOTQ2NSwyOTU3NSwyOTcwMSwyOTcwNiwyOTY5OSwyOTcwMiwyOTY5NCwyOTcwOSwyOTkyMCwyOTk0MiwyOTk0MywyOTk4MCwyOTk4NiwzMDA1MywzMDA1NCwzMDA1MCwzMDA2NCwzMDA5NSwzMDE2NCwzMDE2NSwzMDEzMywzMDE1NCwzMDE1NywzMDM1MCwzMDQyMCwzMDQxOCwzMDQyNywzMDUxOSwzMDUyNiwzMDUyNCwzMDUxOCwzMDUyMCwzMDUyMiwzMDgyNywzMDc4NywzMDc5OCwzMTA3NywzMTA4MCwzMTA4NSwzMTIyNywzMTM3OCwzMTM4MSwzMTUyMCwzMTUyOCwzMTUxNSwzMTUzMiwzMTUyNiwzMTUxMywzMTUxOCwzMTUzNCwzMTg5MCwzMTg5NSwzMTg5MywzMjA3MCwzMjA2NywzMjExMywzMjA0NiwzMjA1NywzMjA2MCwzMjA2NCwzMjA0OCwzMjA1MSwzMjA2OCwzMjA0NywzMjA2NiwzMjA1MCwzMjA0OSwzMjU3MywzMjY3MCwzMjY2NiwzMjcxNiwzMjcxOCwzMjcyMiwzMjc5NiwzMjg0MiwzMjgzOCwzMzA3MSwzMzA0NiwzMzA1OSwzMzA2NywzMzA2NSwzMzA3MiwzMzA2MCwzMzI4MiwzMzMzMywzMzMzNSwzMzMzNCwzMzMzNywzMzY3OCwzMzY5NCwzMzY4OCwzMzY1NiwzMzY5OCwzMzY4NiwzMzcyNSwzMzcwNywzMzY4MiwzMzY3NCwzMzY4MywzMzY3MywzMzY5NiwzMzY1NSwzMzY1OSwzMzY2MCwzMzY3MCwzMzcwMywzNDM4OSwyNDQyNiwzNDUwMywzNDQ5NiwzNDQ4NiwzNDUwMCwzNDQ4NSwzNDUwMiwzNDUwNywzNDQ4MSwzNDQ3OSwzNDUwNSwzNDg5OSwzNDk3NCwzNDk1MiwzNDk4NywzNDk2MiwzNDk2NiwzNDk1NywzNDk1NSwzNTIxOSwzNTIxNSwzNTM3MCwzNTM1NywzNTM2MywzNTM2NSwzNTM3NywzNTM3MywzNTM1OSwzNTM1NSwzNTM2MiwzNTkxMywzNTkzMCwzNjAwOSwzNjAxMiwzNjAxMSwzNjAwOCwzNjAxMCwzNjAwNywzNjE5OSwzNjE5OCwzNjI4NiwzNjI4MiwzNjU3MSwzNjU3NSwzNjg4OSwzNjg3NywzNjg5MCwzNjg4NywzNjg5OSwzNjg5NSwzNjg5MywzNjg4MCwzNjg4NSwzNjg5NCwzNjg5NiwzNjg3OSwzNjg5OCwzNjg4NiwzNjg5MSwzNjg4NCwzNzA5NiwzNzEwMSwzNzExNywzNzIwNywzNzMyNiwzNzM2NSwzNzM1MCwzNzM0NywzNzM1MSwzNzM1NywzNzM1MywzODI4MSwzODUwNiwzODUxNywzODUxNSwzODUyMCwzODUxMiwzODUxNiwzODUxOCwzODUxOSwzODUwOCwzODU5MiwzODYzNCwzODYzMywzMTQ1NiwzMTQ1NSwzODkxNCwzODkxNSwzOTc3MCw0MDE2NSw0MDU2NSw0MDU3NSw0MDYxMyw0MDYzNSwyMDY0MiwyMDYyMSwyMDYxMywyMDYzMywyMDYyNSwyMDYwOCwyMDYzMCwyMDYzMiwyMDYzNCwyNjM2OCwyMDk3NywyMTEwNiwyMTEwOCwyMTEwOSwyMTA5NywyMTIxNCwyMTIxMywyMTIxMSwyMTMzOCwyMTQxMywyMTg4MywyMTg4OCwyMTkyNywyMTg4NCwyMTg5OCwyMTkxNywyMTkxMiwyMTg5MCwyMTkxNiwyMTkzMCwyMTkwOCwyMTg5NSwyMTg5OSwyMTg5MSwyMTkzOSwyMTkzNCwyMTkxOSwyMTgyMiwyMTkzOCwyMTkxNCwyMTk0NywyMTkzMiwyMTkzNywyMTg4NiwyMTg5NywyMTkzMSwyMTkxMywyMjI4NSwyMjU3NSwyMjU3MCwyMjU4MCwyMjU2NCwyMjU3NiwyMjU3NywyMjU2MSwyMjU1NywyMjU2MCwyMjc3NywyMjc3OCwyMjg4MCwyMzE1OSwyMzE5NCwyMzE2NywyMzE4NiwyMzE5NSwyMzIwNywyMzQxMSwyMzQwOSwyMzUwNiwyMzUwMCwyMzUwNywyMzUwNCwyMzU2MiwyMzU2MywyMzYwMSwyMzg4NCwyMzg4OCwyMzg2MCwyMzg3OSwyNDA2MSwyNDEzMywyNDEyNSwyNDEyOCwyNDEzMSwyNDE5MCwyNDI2NiwyNDI1NywyNDI1OCwyNDI2MCwyNDM4MCwyNDQyOSwyNDQ4OSwyNDQ5MCwyNDQ4OCwyNDc4NSwyNDgwMSwyNDc1NCwyNDc1OCwyNDgwMCwyNDg2MCwyNDg2NywyNDgyNiwyNDg1MywyNDgxNiwyNDgyNywyNDgyMCwyNDkzNiwyNDgxNywyNDg0NiwyNDgyMiwyNDg0MSwyNDgzMiwyNDg1MCwyNTExOSwyNTE2MSwyNTUwNywyNTQ4NCwyNTU1MSwyNTUzNiwyNTU3NywyNTU0NSwyNTU0MiwyNTU0OSwyNTU1NCwyNTU3MSwyNTU1MiwyNTU2OSwyNTU1OCwyNTU4MSwyNTU4MiwyNTQ2MiwyNTU4OCwyNTU3OCwyNTU2MywyNTY4MiwyNTU2MiwyNTU5MywyNTk1MCwyNTk1OCwyNTk1NCwyNTk1NSwyNjAwMSwyNjAwMCwyNjAzMSwyNjIyMiwyNjIyNCwyNjIyOCwyNjIzMCwyNjIyMywyNjI1NywyNjIzNCwyNjIzOCwyNjIzMSwyNjM2NiwyNjM2NywyNjM5OSwyNjM5NywyNjg3NCwyNjgzNywyNjg0OCwyNjg0MCwyNjgzOSwyNjg4NSwyNjg0NywyNjg2OSwyNjg2MiwyNjg1NSwyNjg3MywyNjgzNCwyNjg2NiwyNjg1MSwyNjgyNywyNjgyOSwyNjg5MywyNjg5OCwyNjg5NCwyNjgyNSwyNjg0MiwyNjk5MCwyNjg3NSwyNzQ1NCwyNzQ1MCwyNzQ1MywyNzU0NCwyNzU0MiwyNzU4MCwyNzYzMSwyNzY5NCwyNzY5NSwyNzY5MiwyODIwNywyODIxNiwyODI0NCwyODE5MywyODIxMCwyODI2MywyODIzNCwyODE5MiwyODE5NywyODE5NSwyODE4NywyODI1MSwyODI0OCwyODE5NiwyODI0NiwyODI3MCwyODIwNSwyODE5OCwyODI3MSwyODIxMiwyODIzNywyODIxOCwyODIwNCwyODIyNywyODE4OSwyODIyMiwyODM2MywyODI5NywyODE4NSwyODIzOCwyODI1OSwyODIyOCwyODI3NCwyODI2NSwyODI1NSwyODk1MywyODk1NCwyODk2NiwyODk3NiwyODk2MSwyODk4MiwyOTAzOCwyODk1NiwyOTI2MCwyOTMxNiwyOTMxMiwyOTQ5NCwyOTQ3NywyOTQ5MiwyOTQ4MSwyOTc1NCwyOTczOCwyOTc0NywyOTczMCwyOTczMywyOTc0OSwyOTc1MCwyOTc0OCwyOTc0MywyOTcyMywyOTczNCwyOTczNiwyOTk4OSwyOTk5MCwzMDA1OSwzMDA1OCwzMDE3OCwzMDE3MSwzMDE3OSwzMDE2OSwzMDE2OCwzMDE3NCwzMDE3NiwzMDMzMSwzMDMzMiwzMDM1OCwzMDM1NSwzMDM4OCwzMDQyOCwzMDU0MywzMDcwMSwzMDgxMywzMDgyOCwzMDgzMSwzMTI0NSwzMTI0MCwzMTI0MywzMTIzNywzMTIzMiwzMTM4NCwzMTM4MywzMTM4MiwzMTQ2MSwzMTQ1OSwzMTU2MSwzMTU3NCwzMTU1OCwzMTU2OCwzMTU3MCwzMTU3MiwzMTU2NSwzMTU2MywzMTU2NywzMTU2OSwzMTkwMywzMTkwOSwzMjA5NCwzMjA4MCwzMjEwNCwzMjA4NSwzMjA0MywzMjExMCwzMjExNCwzMjA5NywzMjEwMiwzMjA5OCwzMjExMiwzMjExNSwyMTg5MiwzMjcyNCwzMjcyNSwzMjc3OSwzMjg1MCwzMjkwMSwzMzEwOSwzMzEwOCwzMzA5OSwzMzEwNSwzMzEwMiwzMzA4MSwzMzA5NCwzMzA4NiwzMzEwMCwzMzEwNywzMzE0MCwzMzI5OCwzMzMwOCwzMzc2OSwzMzc5NSwzMzc4NCwzMzgwNSwzMzc2MCwzMzczMywzMzgwMywzMzcyOSwzMzc3NSwzMzc3NywzMzc4MCwzMzg3OSwzMzgwMiwzMzc3NiwzMzgwNCwzMzc0MCwzMzc4OSwzMzc3OCwzMzczOCwzMzg0OCwzMzgwNiwzMzc5NiwzMzc1NiwzMzc5OSwzMzc0OCwzMzc1OSwzNDM5NSwzNDUyNywzNDUyMSwzNDU0MSwzNDUxNiwzNDUyMywzNDUzMiwzNDUxMiwzNDUyNiwzNDkwMywzNTAwOSwzNTAxMCwzNDk5MywzNTIwMywzNTIyMiwzNTM4NywzNTQyNCwzNTQxMywzNTQyMiwzNTM4OCwzNTM5MywzNTQxMiwzNTQxOSwzNTQwOCwzNTM5OCwzNTM4MCwzNTM4NiwzNTM4MiwzNTQxNCwzNTkzNywzNTk3MCwzNjAxNSwzNjAyOCwzNjAxOSwzNjAyOSwzNjAzMywzNjAyNywzNjAzMiwzNjAyMCwzNjAyMywzNjAyMiwzNjAzMSwzNjAyNCwzNjIzNCwzNjIyOSwzNjIyNSwzNjMwMiwzNjMxNywzNjI5OSwzNjMxNCwzNjMwNSwzNjMwMCwzNjMxNSwzNjI5NCwzNjYwMywzNjYwMCwzNjYwNCwzNjc2NCwzNjkxMCwzNjkxNywzNjkxMywzNjkyMCwzNjkxNCwzNjkxOCwzNzEyMiwzNzEwOSwzNzEyOSwzNzExOCwzNzIxOSwzNzIyMSwzNzMyNywzNzM5NiwzNzM5NywzNzQxMSwzNzM4NSwzNzQwNiwzNzM4OSwzNzM5MiwzNzM4MywzNzM5MywzODI5MiwzODI4NywzODI4MywzODI4OSwzODI5MSwzODI5MCwzODI4NiwzODUzOCwzODU0MiwzODUzOSwzODUyNSwzODUzMywzODUzNCwzODU0MSwzODUxNCwzODUzMiwzODU5MywzODU5NywzODU5NiwzODU5OCwzODU5OSwzODYzOSwzODY0MiwzODg2MCwzODkxNywzODkxOCwzODkyMCwzOTE0MywzOTE0NiwzOTE1MSwzOTE0NSwzOTE1NCwzOTE0OSwzOTM0MiwzOTM0MSw0MDY0Myw0MDY1Myw0MDY1NywyMDA5OCwyMDY1MywyMDY2MSwyMDY1OCwyMDY1OSwyMDY3NywyMDY3MCwyMDY1MiwyMDY2MywyMDY2NywyMDY1NSwyMDY3OSwyMTExOSwyMTExMSwyMTExNywyMTIxNSwyMTIyMiwyMTIyMCwyMTIxOCwyMTIxOSwyMTI5NSwyMTk4MywyMTk5MiwyMTk3MSwyMTk5MCwyMTk2NiwyMTk4MCwyMTk1OSwyMTk2OSwyMTk4NywyMTk4OCwyMTk5OSwyMTk3OCwyMTk4NSwyMTk1NywyMTk1OCwyMTk4OSwyMTk2MSwyMjI5MCwyMjI5MSwyMjYyMiwyMjYwOSwyMjYxNiwyMjYxNSwyMjYxOCwyMjYxMiwyMjYzNSwyMjYwNCwyMjYzNywyMjYwMiwyMjYyNiwyMjYxMCwyMjYwMywyMjg4NywyMzIzMywyMzI0MSwyMzI0NCwyMzIzMCwyMzIyOSwyMzIyOCwyMzIxOSwyMzIzNCwyMzIxOCwyMzkxMywyMzkxOSwyNDE0MCwyNDE4NSwyNDI2NSwyNDI2NCwyNDMzOCwyNDQwOSwyNDQ5MiwyNDQ5NCwyNDg1OCwyNDg0NywyNDkwNCwyNDg2MywyNDgxOSwyNDg1OSwyNDgyNSwyNDgzMywyNDg0MCwyNDkxMCwyNDkwOCwyNDkwMCwyNDkwOSwyNDg5NCwyNDg4NCwyNDg3MSwyNDg0NSwyNDgzOCwyNDg4NywyNTEyMSwyNTEyMiwyNTYxOSwyNTY2MiwyNTYzMCwyNTY0MiwyNTY0NSwyNTY2MSwyNTY0NCwyNTYxNSwyNTYyOCwyNTYyMCwyNTYxMywyNTY1NCwyNTYyMiwyNTYyMywyNTYwNiwyNTk2NCwyNjAxNSwyNjAzMiwyNjI2MywyNjI0OSwyNjI0NywyNjI0OCwyNjI2MiwyNjI0NCwyNjI2NCwyNjI1MywyNjM3MSwyNzAyOCwyNjk4OSwyNjk3MCwyNjk5OSwyNjk3NiwyNjk2NCwyNjk5NywyNjkyOCwyNzAxMCwyNjk1NCwyNjk4NCwyNjk4NywyNjk3NCwyNjk2MywyNzAwMSwyNzAxNCwyNjk3MywyNjk3OSwyNjk3MSwyNzQ2MywyNzUwNiwyNzU4NCwyNzU4MywyNzYwMywyNzY0NSwyODMyMiwyODMzNSwyODM3MSwyODM0MiwyODM1NCwyODMwNCwyODMxNywyODM1OSwyODM1NywyODMyNSwyODMxMiwyODM0OCwyODM0NiwyODMzMSwyODM2OSwyODMxMCwyODMxNiwyODM1NiwyODM3MiwyODMzMCwyODMyNywyODM0MCwyOTAwNiwyOTAxNywyOTAzMywyOTAyOCwyOTAwMSwyOTAzMSwyOTAyMCwyOTAzNiwyOTAzMCwyOTAwNCwyOTAyOSwyOTAyMiwyODk5OCwyOTAzMiwyOTAxNCwyOTI0MiwyOTI2NiwyOTQ5NSwyOTUwOSwyOTUwMywyOTUwMiwyOTgwNywyOTc4NiwyOTc4MSwyOTc5MSwyOTc5MCwyOTc2MSwyOTc1OSwyOTc4NSwyOTc4NywyOTc4OCwzMDA3MCwzMDA3MiwzMDIwOCwzMDE5MiwzMDIwOSwzMDE5NCwzMDE5MywzMDIwMiwzMDIwNywzMDE5NiwzMDE5NSwzMDQzMCwzMDQzMSwzMDU1NSwzMDU3MSwzMDU2NiwzMDU1OCwzMDU2MywzMDU4NSwzMDU3MCwzMDU3MiwzMDU1NiwzMDU2NSwzMDU2OCwzMDU2MiwzMDcwMiwzMDg2MiwzMDg5NiwzMDg3MSwzMDg3MiwzMDg2MCwzMDg1NywzMDg0NCwzMDg2NSwzMDg2NywzMDg0NywzMTA5OCwzMTEwMywzMTEwNSwzMzgzNiwzMTE2NSwzMTI2MCwzMTI1OCwzMTI2NCwzMTI1MiwzMTI2MywzMTI2MiwzMTM5MSwzMTM5MiwzMTYwNywzMTY4MCwzMTU4NCwzMTU5OCwzMTU5MSwzMTkyMSwzMTkyMywzMTkyNSwzMjE0NywzMjEyMSwzMjE0NSwzMjEyOSwzMjE0MywzMjA5MSwzMjYyMiwzMjYxNywzMjYxOCwzMjYyNiwzMjY4MSwzMjY4MCwzMjY3NiwzMjg1NCwzMjg1NiwzMjkwMiwzMjkwMCwzMzEzNywzMzEzNiwzMzE0NCwzMzEyNSwzMzEzNCwzMzEzOSwzMzEzMSwzMzE0NSwzMzE0NiwzMzEyNiwzMzI4NSwzMzM1MSwzMzkyMiwzMzkxMSwzMzg1MywzMzg0MSwzMzkwOSwzMzg5NCwzMzg5OSwzMzg2NSwzMzkwMCwzMzg4MywzMzg1MiwzMzg0NSwzMzg4OSwzMzg5MSwzMzg5NywzMzkwMSwzMzg2MiwzNDM5OCwzNDM5NiwzNDM5OSwzNDU1MywzNDU3OSwzNDU2OCwzNDU2NywzNDU2MCwzNDU1OCwzNDU1NSwzNDU2MiwzNDU2MywzNDU2NiwzNDU3MCwzNDkwNSwzNTAzOSwzNTAyOCwzNTAzMywzNTAzNiwzNTAzMiwzNTAzNywzNTA0MSwzNTAxOCwzNTAyOSwzNTAyNiwzNTIyOCwzNTI5OSwzNTQzNSwzNTQ0MiwzNTQ0MywzNTQzMCwzNTQzMywzNTQ0MCwzNTQ2MywzNTQ1MiwzNTQyNywzNTQ4OCwzNTQ0MSwzNTQ2MSwzNTQzNywzNTQyNiwzNTQzOCwzNTQzNiwzNTQ0OSwzNTQ1MSwzNTM5MCwzNTQzMiwzNTkzOCwzNTk3OCwzNTk3NywzNjA0MiwzNjAzOSwzNjA0MCwzNjAzNiwzNjAxOCwzNjAzNSwzNjAzNCwzNjAzNywzNjMyMSwzNjMxOSwzNjMyOCwzNjMzNSwzNjMzOSwzNjM0NiwzNjMzMCwzNjMyNCwzNjMyNiwzNjUzMCwzNjYxMSwzNjYxNywzNjYwNiwzNjYxOCwzNjc2NywzNjc4NiwzNjkzOSwzNjkzOCwzNjk0NywzNjkzMCwzNjk0OCwzNjkyNCwzNjk0OSwzNjk0NCwzNjkzNSwzNjk0MywzNjk0MiwzNjk0MSwzNjk0NSwzNjkyNiwzNjkyOSwzNzEzOCwzNzE0MywzNzIyOCwzNzIyNiwzNzIyNSwzNzMyMSwzNzQzMSwzNzQ2MywzNzQzMiwzNzQzNywzNzQ0MCwzNzQzOCwzNzQ2NywzNzQ1MSwzNzQ3NiwzNzQ1NywzNzQyOCwzNzQ0OSwzNzQ1MywzNzQ0NSwzNzQzMywzNzQzOSwzNzQ2NiwzODI5NiwzODU1MiwzODU0OCwzODU0OSwzODYwNSwzODYwMywzODYwMSwzODYwMiwzODY0NywzODY1MSwzODY0OSwzODY0NiwzODc0MiwzODc3MiwzODc3NCwzODkyOCwzODkyOSwzODkzMSwzODkyMiwzODkzMCwzODkyNCwzOTE2NCwzOTE1NiwzOTE2NSwzOTE2NiwzOTM0NywzOTM0NSwzOTM0OCwzOTY0OSw0MDE2OSw0MDU3OCw0MDcxOCw0MDcyMyw0MDczNiwyMDcxMSwyMDcxOCwyMDcwOSwyMDY5NCwyMDcxNywyMDY5OCwyMDY5MywyMDY4NywyMDY4OSwyMDcyMSwyMDY4NiwyMDcxMywyMDgzNCwyMDk3OSwyMTEyMywyMTEyMiwyMTI5NywyMTQyMSwyMjAxNCwyMjAxNiwyMjA0MywyMjAzOSwyMjAxMywyMjAzNiwyMjAyMiwyMjAyNSwyMjAyOSwyMjAzMCwyMjAwNywyMjAzOCwyMjA0NywyMjAyNCwyMjAzMiwyMjAwNiwyMjI5NiwyMjI5NCwyMjY0NSwyMjY1NCwyMjY1OSwyMjY3NSwyMjY2NiwyMjY0OSwyMjY2MSwyMjY1MywyMjc4MSwyMjgyMSwyMjgxOCwyMjgyMCwyMjg5MCwyMjg4OSwyMzI2NSwyMzI3MCwyMzI3MywyMzI1NSwyMzI1NCwyMzI1NiwyMzI2NywyMzQxMywyMzUxOCwyMzUyNywyMzUyMSwyMzUyNSwyMzUyNiwyMzUyOCwyMzUyMiwyMzUyNCwyMzUxOSwyMzU2NSwyMzY1MCwyMzk0MCwyMzk0MywyNDE1NSwyNDE2MywyNDE0OSwyNDE1MSwyNDE0OCwyNDI3NSwyNDI3OCwyNDMzMCwyNDM5MCwyNDQzMiwyNDUwNSwyNDkwMywyNDg5NSwyNDkwNywyNDk1MSwyNDkzMCwyNDkzMSwyNDkyNywyNDkyMiwyNDkyMCwyNDk0OSwyNTEzMCwyNTczNSwyNTY4OCwyNTY4NCwyNTc2NCwyNTcyMCwyNTY5NSwyNTcyMiwyNTY4MSwyNTcwMywyNTY1MiwyNTcwOSwyNTcyMywyNTk3MCwyNjAxNywyNjA3MSwyNjA3MCwyNjI3NCwyNjI4MCwyNjI2OSwyNzAzNiwyNzA0OCwyNzAyOSwyNzA3MywyNzA1NCwyNzA5MSwyNzA4MywyNzAzNSwyNzA2MywyNzA2NywyNzA1MSwyNzA2MCwyNzA4OCwyNzA4NSwyNzA1MywyNzA4NCwyNzA0NiwyNzA3NSwyNzA0MywyNzQ2NSwyNzQ2OCwyNzY5OSwyODQ2NywyODQzNiwyODQxNCwyODQzNSwyODQwNCwyODQ1NywyODQ3OCwyODQ0OCwyODQ2MCwyODQzMSwyODQxOCwyODQ1MCwyODQxNSwyODM5OSwyODQyMiwyODQ2NSwyODQ3MiwyODQ2NiwyODQ1MSwyODQzNywyODQ1OSwyODQ2MywyODU1MiwyODQ1OCwyODM5NiwyODQxNywyODQwMiwyODM2NCwyODQwNywyOTA3NiwyOTA4MSwyOTA1MywyOTA2NiwyOTA2MCwyOTA3NCwyOTI0NiwyOTMzMCwyOTMzNCwyOTUwOCwyOTUyMCwyOTc5NiwyOTc5NSwyOTgwMiwyOTgwOCwyOTgwNSwyOTk1NiwzMDA5NywzMDI0NywzMDIyMSwzMDIxOSwzMDIxNywzMDIyNywzMDQzMywzMDQzNSwzMDU5NiwzMDU4OSwzMDU5MSwzMDU2MSwzMDkxMywzMDg3OSwzMDg4NywzMDg5OSwzMDg4OSwzMDg4MywzMTExOCwzMTExOSwzMTExNywzMTI3OCwzMTI4MSwzMTQwMiwzMTQwMSwzMTQ2OSwzMTQ3MSwzMTY0OSwzMTYzNywzMTYyNywzMTYwNSwzMTYzOSwzMTY0NSwzMTYzNiwzMTYzMSwzMTY3MiwzMTYyMywzMTYyMCwzMTkyOSwzMTkzMywzMTkzNCwzMjE4NywzMjE3NiwzMjE1NiwzMjE4OSwzMjE5MCwzMjE2MCwzMjIwMiwzMjE4MCwzMjE3OCwzMjE3NywzMjE4NiwzMjE2MiwzMjE5MSwzMjE4MSwzMjE4NCwzMjE3MywzMjIxMCwzMjE5OSwzMjE3MiwzMjYyNCwzMjczNiwzMjczNywzMjczNSwzMjg2MiwzMjg1OCwzMjkwMywzMzEwNCwzMzE1MiwzMzE2NywzMzE2MCwzMzE2MiwzMzE1MSwzMzE1NCwzMzI1NSwzMzI3NCwzMzI4NywzMzMwMCwzMzMxMCwzMzM1NSwzMzk5MywzMzk4MywzMzk5MCwzMzk4OCwzMzk0NSwzMzk1MCwzMzk3MCwzMzk0OCwzMzk5NSwzMzk3NiwzMzk4NCwzNDAwMywzMzkzNiwzMzk4MCwzNDAwMSwzMzk5NCwzNDYyMywzNDU4OCwzNDYxOSwzNDU5NCwzNDU5NywzNDYxMiwzNDU4NCwzNDY0NSwzNDYxNSwzNDYwMSwzNTA1OSwzNTA3NCwzNTA2MCwzNTA2NSwzNTA2NCwzNTA2OSwzNTA0OCwzNTA5OCwzNTA1NSwzNTQ5NCwzNTQ2OCwzNTQ4NiwzNTQ5MSwzNTQ2OSwzNTQ4OSwzNTQ3NSwzNTQ5MiwzNTQ5OCwzNTQ5MywzNTQ5NiwzNTQ4MCwzNTQ3MywzNTQ4MiwzNTQ5NSwzNTk0NiwzNTk4MSwzNTk4MCwzNjA1MSwzNjA0OSwzNjA1MCwzNjIwMywzNjI0OSwzNjI0NSwzNjM0OCwzNjYyOCwzNjYyNiwzNjYyOSwzNjYyNywzNjc3MSwzNjk2MCwzNjk1MiwzNjk1NiwzNjk2MywzNjk1MywzNjk1OCwzNjk2MiwzNjk1NywzNjk1NSwzNzE0NSwzNzE0NCwzNzE1MCwzNzIzNywzNzI0MCwzNzIzOSwzNzIzNiwzNzQ5NiwzNzUwNCwzNzUwOSwzNzUyOCwzNzUyNiwzNzQ5OSwzNzUyMywzNzUzMiwzNzU0NCwzNzUwMCwzNzUyMSwzODMwNSwzODMxMiwzODMxMywzODMwNywzODMwOSwzODMwOCwzODU1MywzODU1NiwzODU1NSwzODYwNCwzODYxMCwzODY1NiwzODc4MCwzODc4OSwzODkwMiwzODkzNSwzODkzNiwzOTA4NywzOTA4OSwzOTE3MSwzOTE3MywzOTE4MCwzOTE3NywzOTM2MSwzOTU5OSwzOTYwMCwzOTY1NCwzOTc0NSwzOTc0Niw0MDE4MCw0MDE4Miw0MDE3OSw0MDYzNiw0MDc2Myw0MDc3OCwyMDc0MCwyMDczNiwyMDczMSwyMDcyNSwyMDcyOSwyMDczOCwyMDc0NCwyMDc0NSwyMDc0MSwyMDk1NiwyMTEyNywyMTEyOCwyMTEyOSwyMTEzMywyMTEzMCwyMTIzMiwyMTQyNiwyMjA2MiwyMjA3NSwyMjA3MywyMjA2NiwyMjA3OSwyMjA2OCwyMjA1NywyMjA5OSwyMjA5NCwyMjEwMywyMjEzMiwyMjA3MCwyMjA2MywyMjA2NCwyMjY1NiwyMjY4NywyMjY4NiwyMjcwNywyMjY4NCwyMjcwMiwyMjY5NywyMjY5NCwyMjg5MywyMzMwNSwyMzI5MSwyMzMwNywyMzI4NSwyMzMwOCwyMzMwNCwyMzUzNCwyMzUzMiwyMzUyOSwyMzUzMSwyMzY1MiwyMzY1MywyMzk2NSwyMzk1NiwyNDE2MiwyNDE1OSwyNDE2MSwyNDI5MCwyNDI4MiwyNDI4NywyNDI4NSwyNDI5MSwyNDI4OCwyNDM5MiwyNDQzMywyNDUwMywyNDUwMSwyNDk1MCwyNDkzNSwyNDk0MiwyNDkyNSwyNDkxNywyNDk2MiwyNDk1NiwyNDk0NCwyNDkzOSwyNDk1OCwyNDk5OSwyNDk3NiwyNTAwMywyNDk3NCwyNTAwNCwyNDk4NiwyNDk5NiwyNDk4MCwyNTAwNiwyNTEzNCwyNTcwNSwyNTcxMSwyNTcyMSwyNTc1OCwyNTc3OCwyNTczNiwyNTc0NCwyNTc3NiwyNTc2NSwyNTc0NywyNTc0OSwyNTc2OSwyNTc0NiwyNTc3NCwyNTc3MywyNTc3MSwyNTc1NCwyNTc3MiwyNTc1MywyNTc2MiwyNTc3OSwyNTk3MywyNTk3NSwyNTk3NiwyNjI4NiwyNjI4MywyNjI5MiwyNjI4OSwyNzE3MSwyNzE2NywyNzExMiwyNzEzNywyNzE2NiwyNzE2MSwyNzEzMywyNzE2OSwyNzE1NSwyNzE0NiwyNzEyMywyNzEzOCwyNzE0MSwyNzExNywyNzE1MywyNzQ3MiwyNzQ3MCwyNzU1NiwyNzU4OSwyNzU5MCwyODQ3OSwyODU0MCwyODU0OCwyODQ5NywyODUxOCwyODUwMCwyODU1MCwyODUyNSwyODUwNywyODUzNiwyODUyNiwyODU1OCwyODUzOCwyODUyOCwyODUxNiwyODU2NywyODUwNCwyODM3MywyODUyNywyODUxMiwyODUxMSwyOTA4NywyOTEwMCwyOTEwNSwyOTA5NiwyOTI3MCwyOTMzOSwyOTUxOCwyOTUyNywyOTgwMSwyOTgzNSwyOTgyNywyOTgyMiwyOTgyNCwzMDA3OSwzMDI0MCwzMDI0OSwzMDIzOSwzMDI0NCwzMDI0NiwzMDI0MSwzMDI0MiwzMDM2MiwzMDM5NCwzMDQzNiwzMDYwNiwzMDU5OSwzMDYwNCwzMDYwOSwzMDYwMywzMDkyMywzMDkxNywzMDkwNiwzMDkyMiwzMDkxMCwzMDkzMywzMDkwOCwzMDkyOCwzMTI5NSwzMTI5MiwzMTI5NiwzMTI5MywzMTI4NywzMTI5MSwzMTQwNywzMTQwNiwzMTY2MSwzMTY2NSwzMTY4NCwzMTY2OCwzMTY4NiwzMTY4NywzMTY4MSwzMTY0OCwzMTY5MiwzMTk0NiwzMjIyNCwzMjI0NCwzMjIzOSwzMjI1MSwzMjIxNiwzMjIzNiwzMjIyMSwzMjIzMiwzMjIyNywzMjIxOCwzMjIyMiwzMjIzMywzMjE1OCwzMjIxNywzMjI0MiwzMjI0OSwzMjYyOSwzMjYzMSwzMjY4NywzMjc0NSwzMjgwNiwzMzE3OSwzMzE4MCwzMzE4MSwzMzE4NCwzMzE3OCwzMzE3NiwzNDA3MSwzNDEwOSwzNDA3NCwzNDAzMCwzNDA5MiwzNDA5MywzNDA2NywzNDA2NSwzNDA4MywzNDA4MSwzNDA2OCwzNDAyOCwzNDA4NSwzNDA0NywzNDA1NCwzNDY5MCwzNDY3NiwzNDY3OCwzNDY1NiwzNDY2MiwzNDY4MCwzNDY2NCwzNDY0OSwzNDY0NywzNDYzNiwzNDY0MywzNDkwNywzNDkwOSwzNTA4OCwzNTA3OSwzNTA5MCwzNTA5MSwzNTA5MywzNTA4MiwzNTUxNiwzNTUzOCwzNTUyNywzNTUyNCwzNTQ3NywzNTUzMSwzNTU3NiwzNTUwNiwzNTUyOSwzNTUyMiwzNTUxOSwzNTUwNCwzNTU0MiwzNTUzMywzNTUxMCwzNTUxMywzNTU0NywzNTkxNiwzNTkxOCwzNTk0OCwzNjA2NCwzNjA2MiwzNjA3MCwzNjA2OCwzNjA3NiwzNjA3NywzNjA2NiwzNjA2NywzNjA2MCwzNjA3NCwzNjA2NSwzNjIwNSwzNjI1NSwzNjI1OSwzNjM5NSwzNjM2OCwzNjM4MSwzNjM4NiwzNjM2NywzNjM5MywzNjM4MywzNjM4NSwzNjM4MiwzNjUzOCwzNjYzNywzNjYzNSwzNjYzOSwzNjY0OSwzNjY0NiwzNjY1MCwzNjYzNiwzNjYzOCwzNjY0NSwzNjk2OSwzNjk3NCwzNjk2OCwzNjk3MywzNjk4MywzNzE2OCwzNzE2NSwzNzE1OSwzNzE2OSwzNzI1NSwzNzI1NywzNzI1OSwzNzI1MSwzNzU3MywzNzU2MywzNzU1OSwzNzYxMCwzNzU0OCwzNzYwNCwzNzU2OSwzNzU1NSwzNzU2NCwzNzU4NiwzNzU3NSwzNzYxNiwzNzU1NCwzODMxNywzODMyMSwzODY2MCwzODY2MiwzODY2MywzODY2NSwzODc1MiwzODc5NywzODc5NSwzODc5OSwzODk0NSwzODk1NSwzODk0MCwzOTA5MSwzOTE3OCwzOTE4NywzOTE4NiwzOTE5MiwzOTM4OSwzOTM3NiwzOTM5MSwzOTM4NywzOTM3NywzOTM4MSwzOTM3OCwzOTM4NSwzOTYwNywzOTY2MiwzOTY2MywzOTcxOSwzOTc0OSwzOTc0OCwzOTc5OSwzOTc5MSw0MDE5OCw0MDIwMSw0MDE5NSw0MDYxNyw0MDYzOCw0MDY1NCwyMjY5Niw0MDc4NiwyMDc1NCwyMDc2MCwyMDc1NiwyMDc1MiwyMDc1NywyMDg2NCwyMDkwNiwyMDk1NywyMTEzNywyMTEzOSwyMTIzNSwyMjEwNSwyMjEyMywyMjEzNywyMjEyMSwyMjExNiwyMjEzNiwyMjEyMiwyMjEyMCwyMjExNywyMjEyOSwyMjEyNywyMjEyNCwyMjExNCwyMjEzNCwyMjcyMSwyMjcxOCwyMjcyNywyMjcyNSwyMjg5NCwyMzMyNSwyMzM0OCwyMzQxNiwyMzUzNiwyMzU2NiwyNDM5NCwyNTAxMCwyNDk3NywyNTAwMSwyNDk3MCwyNTAzNywyNTAxNCwyNTAyMiwyNTAzNCwyNTAzMiwyNTEzNiwyNTc5NywyNTc5MywyNTgwMywyNTc4NywyNTc4OCwyNTgxOCwyNTc5NiwyNTc5OSwyNTc5NCwyNTgwNSwyNTc5MSwyNTgxMCwyNTgxMiwyNTc5MCwyNTk3MiwyNjMxMCwyNjMxMywyNjI5NywyNjMwOCwyNjMxMSwyNjI5NiwyNzE5NywyNzE5MiwyNzE5NCwyNzIyNSwyNzI0MywyNzIyNCwyNzE5MywyNzIwNCwyNzIzNCwyNzIzMywyNzIxMSwyNzIwNywyNzE4OSwyNzIzMSwyNzIwOCwyNzQ4MSwyNzUxMSwyNzY1MywyODYxMCwyODU5MywyODU3NywyODYxMSwyODU4MCwyODYwOSwyODU4MywyODU5NSwyODYwOCwyODYwMSwyODU5OCwyODU4MiwyODU3NiwyODU5NiwyOTExOCwyOTEyOSwyOTEzNiwyOTEzOCwyOTEyOCwyOTE0MSwyOTExMywyOTEzNCwyOTE0NSwyOTE0OCwyOTEyMywyOTEyNCwyOTU0NCwyOTg1MiwyOTg1OSwyOTg0OCwyOTg1NSwyOTg1NCwyOTkyMiwyOTk2NCwyOTk2NSwzMDI2MCwzMDI2NCwzMDI2NiwzMDQzOSwzMDQzNywzMDYyNCwzMDYyMiwzMDYyMywzMDYyOSwzMDk1MiwzMDkzOCwzMDk1NiwzMDk1MSwzMTE0MiwzMTMwOSwzMTMxMCwzMTMwMiwzMTMwOCwzMTMwNywzMTQxOCwzMTcwNSwzMTc2MSwzMTY4OSwzMTcxNiwzMTcwNywzMTcxMywzMTcyMSwzMTcxOCwzMTk1NywzMTk1OCwzMjI2NiwzMjI3MywzMjI2NCwzMjI4MywzMjI5MSwzMjI4NiwzMjI4NSwzMjI2NSwzMjI3MiwzMjYzMywzMjY5MCwzMjc1MiwzMjc1MywzMjc1MCwzMjgwOCwzMzIwMywzMzE5MywzMzE5MiwzMzI3NSwzMzI4OCwzMzM2OCwzMzM2OSwzNDEyMiwzNDEzNywzNDEyMCwzNDE1MiwzNDE1MywzNDExNSwzNDEyMSwzNDE1NywzNDE1NCwzNDE0MiwzNDY5MSwzNDcxOSwzNDcxOCwzNDcyMiwzNDcwMSwzNDkxMywzNTExNCwzNTEyMiwzNTEwOSwzNTExNSwzNTEwNSwzNTI0MiwzNTIzOCwzNTU1OCwzNTU3OCwzNTU2MywzNTU2OSwzNTU4NCwzNTU0OCwzNTU1OSwzNTU2NiwzNTU4MiwzNTU4NSwzNTU4NiwzNTU3NSwzNTU2NSwzNTU3MSwzNTU3NCwzNTU4MCwzNTk0NywzNTk0OSwzNTk4NywzNjA4NCwzNjQyMCwzNjQwMSwzNjQwNCwzNjQxOCwzNjQwOSwzNjQwNSwzNjY2NywzNjY1NSwzNjY2NCwzNjY1OSwzNjc3NiwzNjc3NCwzNjk4MSwzNjk4MCwzNjk4NCwzNjk3OCwzNjk4OCwzNjk4NiwzNzE3MiwzNzI2NiwzNzY2NCwzNzY4NiwzNzYyNCwzNzY4MywzNzY3OSwzNzY2NiwzNzYyOCwzNzY3NSwzNzYzNiwzNzY1OCwzNzY0OCwzNzY3MCwzNzY2NSwzNzY1MywzNzY3OCwzNzY1NywzODMzMSwzODU2NywzODU2OCwzODU3MCwzODYxMywzODY3MCwzODY3MywzODY3OCwzODY2OSwzODY3NSwzODY3MSwzODc0NywzODc0OCwzODc1OCwzODgwOCwzODk2MCwzODk2OCwzODk3MSwzODk2NywzODk1NywzODk2OSwzODk0OCwzOTE4NCwzOTIwOCwzOTE5OCwzOTE5NSwzOTIwMSwzOTE5NCwzOTQwNSwzOTM5NCwzOTQwOSwzOTYwOCwzOTYxMiwzOTY3NSwzOTY2MSwzOTcyMCwzOTgyNSw0MDIxMyw0MDIyNyw0MDIzMCw0MDIzMiw0MDIxMCw0MDIxOSw0MDY2NCw0MDY2MCw0MDg0NSw0MDg2MCwyMDc3OCwyMDc2NywyMDc2OSwyMDc4NiwyMTIzNywyMjE1OCwyMjE0NCwyMjE2MCwyMjE0OSwyMjE1MSwyMjE1OSwyMjc0MSwyMjczOSwyMjczNywyMjczNCwyMzM0NCwyMzMzOCwyMzMzMiwyMzQxOCwyMzYwNywyMzY1NiwyMzk5NiwyMzk5NCwyMzk5NywyMzk5MiwyNDE3MSwyNDM5NiwyNDUwOSwyNTAzMywyNTAyNiwyNTAzMSwyNTA2MiwyNTAzNSwyNTEzOCwyNTE0MCwyNTgwNiwyNTgwMiwyNTgxNiwyNTgyNCwyNTg0MCwyNTgzMCwyNTgzNiwyNTg0MSwyNTgyNiwyNTgzNywyNTk4NiwyNTk4NywyNjMyOSwyNjMyNiwyNzI2NCwyNzI4NCwyNzI2OCwyNzI5OCwyNzI5MiwyNzM1NSwyNzI5OSwyNzI2MiwyNzI4NywyNzI4MCwyNzI5NiwyNzQ4NCwyNzU2NiwyNzYxMCwyNzY1NiwyODYzMiwyODY1NywyODYzOSwyODY0MCwyODYzNSwyODY0NCwyODY1MSwyODY1NSwyODU0NCwyODY1MiwyODY0MSwyODY0OSwyODYyOSwyODY1NCwyODY1NiwyOTE1OSwyOTE1MSwyOTE2NiwyOTE1OCwyOTE1NywyOTE2NSwyOTE2NCwyOTE3MiwyOTE1MiwyOTIzNywyOTI1NCwyOTU1MiwyOTU1NCwyOTg2NSwyOTg3MiwyOTg2MiwyOTg2NCwzMDI3OCwzMDI3NCwzMDI4NCwzMDQ0MiwzMDY0MywzMDYzNCwzMDY0MCwzMDYzNiwzMDYzMSwzMDYzNywzMDcwMywzMDk2NywzMDk3MCwzMDk2NCwzMDk1OSwzMDk3NywzMTE0MywzMTE0NiwzMTMxOSwzMTQyMywzMTc1MSwzMTc1NywzMTc0MiwzMTczNSwzMTc1NiwzMTcxMiwzMTk2OCwzMTk2NCwzMTk2NiwzMTk3MCwzMTk2NywzMTk2MSwzMTk2NSwzMjMwMiwzMjMxOCwzMjMyNiwzMjMxMSwzMjMwNiwzMjMyMywzMjI5OSwzMjMxNywzMjMwNSwzMjMyNSwzMjMyMSwzMjMwOCwzMjMxMywzMjMyOCwzMjMwOSwzMjMxOSwzMjMwMywzMjU4MCwzMjc1NSwzMjc2NCwzMjg4MSwzMjg4MiwzMjg4MCwzMjg3OSwzMjg4MywzMzIyMiwzMzIxOSwzMzIxMCwzMzIxOCwzMzIxNiwzMzIxNSwzMzIxMywzMzIyNSwzMzIxNCwzMzI1NiwzMzI4OSwzMzM5MywzNDIxOCwzNDE4MCwzNDE3NCwzNDIwNCwzNDE5MywzNDE5NiwzNDIyMywzNDIwMywzNDE4MywzNDIxNiwzNDE4NiwzNDQwNywzNDc1MiwzNDc2OSwzNDczOSwzNDc3MCwzNDc1OCwzNDczMSwzNDc0NywzNDc0NiwzNDc2MCwzNDc2MywzNTEzMSwzNTEyNiwzNTE0MCwzNTEyOCwzNTEzMywzNTI0NCwzNTU5OCwzNTYwNywzNTYwOSwzNTYxMSwzNTU5NCwzNTYxNiwzNTYxMywzNTU4OCwzNTYwMCwzNTkwNSwzNTkwMywzNTk1NSwzNjA5MCwzNjA5MywzNjA5MiwzNjA4OCwzNjA5MSwzNjI2NCwzNjQyNSwzNjQyNywzNjQyNCwzNjQyNiwzNjY3NiwzNjY3MCwzNjY3NCwzNjY3NywzNjY3MSwzNjk5MSwzNjk4OSwzNjk5NiwzNjk5MywzNjk5NCwzNjk5MiwzNzE3NywzNzI4MywzNzI3OCwzNzI3NiwzNzcwOSwzNzc2MiwzNzY3MiwzNzc0OSwzNzcwNiwzNzczMywzNzcwNywzNzY1NiwzNzc1OCwzNzc0MCwzNzcyMywzNzc0NCwzNzcyMiwzNzcxNiwzODM0NiwzODM0NywzODM0OCwzODM0NCwzODM0MiwzODU3NywzODU4NCwzODYxNCwzODY4NCwzODY4NiwzODgxNiwzODg2NywzODk4MiwzOTA5NCwzOTIyMSwzOTQyNSwzOTQyMywzOTg1NCwzOTg1MSwzOTg1MCwzOTg1Myw0MDI1MSw0MDI1NSw0MDU4Nyw0MDY1NSw0MDY3MCw0MDY2OCw0MDY2OSw0MDY2Nyw0MDc2Niw0MDc3OSwyMTQ3NCwyMjE2NSwyMjE5MCwyMjc0NSwyMjc0NCwyMzM1MiwyNDQxMywyNTA1OSwyNTEzOSwyNTg0NCwyNTg0MiwyNTg1NCwyNTg2MiwyNTg1MCwyNTg1MSwyNTg0NywyNjAzOSwyNjMzMiwyNjQwNiwyNzMxNSwyNzMwOCwyNzMzMSwyNzMyMywyNzMyMCwyNzMzMCwyNzMxMCwyNzMxMSwyNzQ4NywyNzUxMiwyNzU2NywyODY4MSwyODY4MywyODY3MCwyODY3OCwyODY2NiwyODY4OSwyODY4NywyOTE3OSwyOTE4MCwyOTE4MiwyOTE3NiwyOTU1OSwyOTU1NywyOTg2MywyOTg4NywyOTk3MywzMDI5NCwzMDI5NiwzMDI5MCwzMDY1MywzMDY1NSwzMDY1MSwzMDY1MiwzMDk5MCwzMTE1MCwzMTMyOSwzMTMzMCwzMTMyOCwzMTQyOCwzMTQyOSwzMTc4NywzMTc4MywzMTc4NiwzMTc3NCwzMTc3OSwzMTc3NywzMTk3NSwzMjM0MCwzMjM0MSwzMjM1MCwzMjM0NiwzMjM1MywzMjMzOCwzMjM0NSwzMjU4NCwzMjc2MSwzMjc2MywzMjg4NywzMjg4NiwzMzIyOSwzMzIzMSwzMzI5MCwzNDI1NSwzNDIxNywzNDI1MywzNDI1NiwzNDI0OSwzNDIyNCwzNDIzNCwzNDIzMywzNDIxNCwzNDc5OSwzNDc5NiwzNDgwMiwzNDc4NCwzNTIwNiwzNTI1MCwzNTMxNiwzNTYyNCwzNTY0MSwzNTYyOCwzNTYyNywzNTkyMCwzNjEwMSwzNjQ0MSwzNjQ1MSwzNjQ1NCwzNjQ1MiwzNjQ0NywzNjQzNywzNjU0NCwzNjY4MSwzNjY4NSwzNjk5OSwzNjk5NSwzNzAwMCwzNzI5MSwzNzI5MiwzNzMyOCwzNzc4MCwzNzc3MCwzNzc4MiwzNzc5NCwzNzgxMSwzNzgwNiwzNzgwNCwzNzgwOCwzNzc4NCwzNzc4NiwzNzc4MywzODM1NiwzODM1OCwzODM1MiwzODM1NywzODYyNiwzODYyMCwzODYxNywzODYxOSwzODYyMiwzODY5MiwzODgxOSwzODgyMiwzODgyOSwzODkwNSwzODk4OSwzODk5MSwzODk4OCwzODk5MCwzODk5NSwzOTA5OCwzOTIzMCwzOTIzMSwzOTIyOSwzOTIxNCwzOTMzMywzOTQzOCwzOTYxNywzOTY4MywzOTY4NiwzOTc1OSwzOTc1OCwzOTc1NywzOTg4MiwzOTg4MSwzOTkzMywzOTg4MCwzOTg3Miw0MDI3Myw0MDI4NSw0MDI4OCw0MDY3Miw0MDcyNSw0MDc0OCwyMDc4NywyMjE4MSwyMjc1MCwyMjc1MSwyMjc1NCwyMzU0MSw0MDg0OCwyNDMwMCwyNTA3NCwyNTA3OSwyNTA3OCwyNTA3NywyNTg1NiwyNTg3MSwyNjMzNiwyNjMzMywyNzM2NSwyNzM1NywyNzM1NCwyNzM0NywyODY5OSwyODcwMywyODcxMiwyODY5OCwyODcwMSwyODY5MywyODY5NiwyOTE5MCwyOTE5NywyOTI3MiwyOTM0NiwyOTU2MCwyOTU2MiwyOTg4NSwyOTg5OCwyOTkyMywzMDA4NywzMDA4NiwzMDMwMywzMDMwNSwzMDY2MywzMTAwMSwzMTE1MywzMTMzOSwzMTMzNywzMTgwNiwzMTgwNywzMTgwMCwzMTgwNSwzMTc5OSwzMTgwOCwzMjM2MywzMjM2NSwzMjM3NywzMjM2MSwzMjM2MiwzMjY0NSwzMjM3MSwzMjY5NCwzMjY5NywzMjY5NiwzMzI0MCwzNDI4MSwzNDI2OSwzNDI4MiwzNDI2MSwzNDI3NiwzNDI3NywzNDI5NSwzNDgxMSwzNDgyMSwzNDgyOSwzNDgwOSwzNDgxNCwzNTE2OCwzNTE2NywzNTE1OCwzNTE2NiwzNTY0OSwzNTY3NiwzNTY3MiwzNTY1NywzNTY3NCwzNTY2MiwzNTY2MywzNTY1NCwzNTY3MywzNjEwNCwzNjEwNiwzNjQ3NiwzNjQ2NiwzNjQ4NywzNjQ3MCwzNjQ2MCwzNjQ3NCwzNjQ2OCwzNjY5MiwzNjY4NiwzNjc4MSwzNzAwMiwzNzAwMywzNzI5NywzNzI5NCwzNzg1NywzNzg0MSwzNzg1NSwzNzgyNywzNzgzMiwzNzg1MiwzNzg1MywzNzg0NiwzNzg1OCwzNzgzNywzNzg0OCwzNzg2MCwzNzg0NywzNzg2NCwzODM2NCwzODU4MCwzODYyNywzODY5OCwzODY5NSwzODc1MywzODg3NiwzODkwNywzOTAwNiwzOTAwMCwzOTAwMywzOTEwMCwzOTIzNywzOTI0MSwzOTQ0NiwzOTQ0OSwzOTY5MywzOTkxMiwzOTkxMSwzOTg5NCwzOTg5OSw0MDMyOSw0MDI4OSw0MDMwNiw0MDI5OCw0MDMwMCw0MDU5NCw0MDU5OSw0MDU5NSw0MDYyOCwyMTI0MCwyMjE4NCwyMjE5OSwyMjE5OCwyMjE5NiwyMjIwNCwyMjc1NiwyMzM2MCwyMzM2MywyMzQyMSwyMzU0MiwyNDAwOSwyNTA4MCwyNTA4MiwyNTg4MCwyNTg3NiwyNTg4MSwyNjM0MiwyNjQwNywyNzM3MiwyODczNCwyODcyMCwyODcyMiwyOTIwMCwyOTU2MywyOTkwMywzMDMwNiwzMDMwOSwzMTAxNCwzMTAxOCwzMTAyMCwzMTAxOSwzMTQzMSwzMTQ3OCwzMTgyMCwzMTgxMSwzMTgyMSwzMTk4MywzMTk4NCwzNjc4MiwzMjM4MSwzMjM4MCwzMjM4NiwzMjU4OCwzMjc2OCwzMzI0MiwzMzM4MiwzNDI5OSwzNDI5NywzNDMyMSwzNDI5OCwzNDMxMCwzNDMxNSwzNDMxMSwzNDMxNCwzNDgzNiwzNDgzNywzNTE3MiwzNTI1OCwzNTMyMCwzNTY5NiwzNTY5MiwzNTY4NiwzNTY5NSwzNTY3OSwzNTY5MSwzNjExMSwzNjEwOSwzNjQ4OSwzNjQ4MSwzNjQ4NSwzNjQ4MiwzNzMwMCwzNzMyMywzNzkxMiwzNzg5MSwzNzg4NSwzODM2OSwzODcwNCwzOTEwOCwzOTI1MCwzOTI0OSwzOTMzNiwzOTQ2NywzOTQ3MiwzOTQ3OSwzOTQ3NywzOTk1NSwzOTk0OSw0MDU2OSw0MDYyOSw0MDY4MCw0MDc1MSw0MDc5OSw0MDgwMyw0MDgwMSwyMDc5MSwyMDc5MiwyMjIwOSwyMjIwOCwyMjIxMCwyMjgwNCwyMzY2MCwyNDAxMywyNTA4NCwyNTA4NiwyNTg4NSwyNTg4NCwyNjAwNSwyNjM0NSwyNzM4NywyNzM5NiwyNzM4NiwyNzU3MCwyODc0OCwyOTIxMSwyOTM1MSwyOTkxMCwyOTkwOCwzMDMxMywzMDY3NSwzMTgyNCwzMjM5OSwzMjM5NiwzMjcwMCwzNDMyNywzNDM0OSwzNDMzMCwzNDg1MSwzNDg1MCwzNDg0OSwzNDg0NywzNTE3OCwzNTE4MCwzNTI2MSwzNTcwMCwzNTcwMywzNTcwOSwzNjExNSwzNjQ5MCwzNjQ5MywzNjQ5MSwzNjcwMywzNjc4MywzNzMwNiwzNzkzNCwzNzkzOSwzNzk0MSwzNzk0NiwzNzk0NCwzNzkzOCwzNzkzMSwzODM3MCwzODcxMiwzODcxMywzODcwNiwzODkxMSwzOTAxNSwzOTAxMywzOTI1NSwzOTQ5MywzOTQ5MSwzOTQ4OCwzOTQ4NiwzOTYzMSwzOTc2NCwzOTc2MSwzOTk4MSwzOTk3Myw0MDM2Nyw0MDM3Miw0MDM4Niw0MDM3Niw0MDYwNSw0MDY4Nyw0MDcyOSw0MDc5Niw0MDgwNiw0MDgwNywyMDc5NiwyMDc5NSwyMjIxNiwyMjIxOCwyMjIxNywyMzQyMywyNDAyMCwyNDAxOCwyNDM5OCwyNTA4NywyNTg5MiwyNzQwMiwyNzQ4OSwyODc1MywyODc2MCwyOTU2OCwyOTkyNCwzMDA5MCwzMDMxOCwzMDMxNiwzMTE1NSwzMTg0MCwzMTgzOSwzMjg5NCwzMjg5MywzMzI0NywzNTE4NiwzNTE4MywzNTMyNCwzNTcxMiwzNjExOCwzNjExOSwzNjQ5NywzNjQ5OSwzNjcwNSwzNzE5MiwzNzk1NiwzNzk2OSwzNzk3MCwzODcxNywzODcxOCwzODg1MSwzODg0OSwzOTAxOSwzOTI1MywzOTUwOSwzOTUwMSwzOTYzNCwzOTcwNiw0MDAwOSwzOTk4NSwzOTk5OCwzOTk5NSw0MDQwMyw0MDQwNyw0MDc1Niw0MDgxMiw0MDgxMCw0MDg1MiwyMjIyMCwyNDAyMiwyNTA4OCwyNTg5MSwyNTg5OSwyNTg5OCwyNjM0OCwyNzQwOCwyOTkxNCwzMTQzNCwzMTg0NCwzMTg0MywzMTg0NSwzMjQwMywzMjQwNiwzMjQwNCwzMzI1MCwzNDM2MCwzNDM2NywzNDg2NSwzNTcyMiwzNzAwOCwzNzAwNywzNzk4NywzNzk4NCwzNzk4OCwzODc2MCwzOTAyMywzOTI2MCwzOTUxNCwzOTUxNSwzOTUxMSwzOTYzNSwzOTYzNiwzOTYzMyw0MDAyMCw0MDAyMyw0MDAyMiw0MDQyMSw0MDYwNyw0MDY5MiwyMjIyNSwyMjc2MSwyNTkwMCwyODc2NiwzMDMyMSwzMDMyMiwzMDY3OSwzMjU5MiwzMjY0OCwzNDg3MCwzNDg3MywzNDkxNCwzNTczMSwzNTczMCwzNTczNCwzMzM5OSwzNjEyMywzNzMxMiwzNzk5NCwzODcyMiwzODcyOCwzODcyNCwzODg1NCwzOTAyNCwzOTUxOSwzOTcxNCwzOTc2OCw0MDAzMSw0MDQ0MSw0MDQ0Miw0MDU3Miw0MDU3Myw0MDcxMSw0MDgyMyw0MDgxOCwyNDMwNywyNzQxNCwyODc3MSwzMTg1MiwzMTg1NCwzNDg3NSwzNTI2NCwzNjUxMywzNzMxMywzODAwMiwzODAwMCwzOTAyNSwzOTI2MiwzOTYzOCwzOTcxNSw0MDY1MiwyODc3MiwzMDY4MiwzNTczOCwzODAwNywzODg1NywzOTUyMiwzOTUyNSwzMjQxMiwzNTc0MCwzNjUyMiwzNzMxNywzODAxMywzODAxNCwzODAxMiw0MDA1NSw0MDA1Niw0MDY5NSwzNTkyNCwzODAxNSw0MDQ3NCwyOTIyNCwzOTUzMCwzOTcyOSw0MDQ3NSw0MDQ3OCwzMTg1OCw5MzEyLDkzMTMsOTMxNCw5MzE1LDkzMTYsOTMxNyw5MzE4LDkzMTksOTMyMCw5MzIxLDkzMzIsOTMzMyw5MzM0LDkzMzUsOTMzNiw5MzM3LDkzMzgsOTMzOSw5MzQwLDkzNDEsODU2MCw4NTYxLDg1NjIsODU2Myw4NTY0LDg1NjUsODU2Niw4NTY3LDg1NjgsODU2OSwyMDAyMiwyMDAzMSwyMDEwMSwyMDEyOCwyMDg2NiwyMDg4NiwyMDkwNywyMTI0MSwyMTMwNCwyMTM1MywyMTQzMCwyMjc5NCwyMzQyNCwyNDAyNywxMjA4MywyNDE5MSwyNDMwOCwyNDQwMCwyNDQxNywyNTkwOCwyNjA4MCwzMDA5OCwzMDMyNiwzNjc4OSwzODU4MiwxNjgsNzEwLDEyNTQxLDEyNTQyLDEyNDQ1LDEyNDQ2LDEyMjkxLDIwMTg5LDEyMjkzLDEyMjk0LDEyMjk1LDEyNTQwLDY1MzM5LDY1MzQxLDEwMDQ1LDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDg2NzksODYzMiw4NjMzLDEyNzUxLDEzMTI3NiwyMDA1OCwxMzEyMTAsMjA5OTQsMTc1NTMsNDA4ODAsMjA4NzIsNDA4ODEsMTYxMjg3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNjU1MDYsNjU1MDgsNjUyODcsNjUyODIsMTI4NDksODQ3MCw4NDgxLDEyNDQzLDEyNDQ0LDExOTA0LDExOTA4LDExOTEwLDExOTExLDExOTEyLDExOTE0LDExOTE2LDExOTE3LDExOTI1LDExOTMyLDExOTMzLDExOTQxLDExOTQzLDExOTQ2LDExOTQ4LDExOTUwLDExOTU4LDExOTY0LDExOTY2LDExOTc0LDExOTc4LDExOTgwLDExOTgxLDExOTgzLDExOTkwLDExOTkxLDExOTk4LDEyMDAzLG51bGwsbnVsbCxudWxsLDY0Myw1OTIsNjAzLDU5Niw2MjksMzM5LDI0OCwzMzEsNjUwLDYxOCwyMDAzNCwyMDA2MCwyMDk4MSwyMTI3NCwyMTM3OCwxOTk3NSwxOTk4MCwyMDAzOSwyMDEwOSwyMjIzMSw2NDAxMiwyMzY2MiwyNDQzNSwxOTk4MywyMDg3MSwxOTk4MiwyMDAxNCwyMDExNSwyMDE2MiwyMDE2OSwyMDE2OCwyMDg4OCwyMTI0NCwyMTM1NiwyMTQzMywyMjMwNCwyMjc4NywyMjgyOCwyMzU2OCwyNDA2MywyNjA4MSwyNzU3MSwyNzU5NiwyNzY2OCwyOTI0NywyMDAxNywyMDAyOCwyMDIwMCwyMDE4OCwyMDIwMSwyMDE5MywyMDE4OSwyMDE4NiwyMTAwNCwyMTI3NiwyMTMyNCwyMjMwNiwyMjMwNywyMjgwNywyMjgzMSwyMzQyNSwyMzQyOCwyMzU3MCwyMzYxMSwyMzY2OCwyMzY2NywyNDA2OCwyNDE5MiwyNDE5NCwyNDUyMSwyNTA5NywyNTE2OCwyNzY2OSwyNzcwMiwyNzcxNSwyNzcxMSwyNzcwNywyOTM1OCwyOTM2MCwyOTU3OCwzMTE2MCwzMjkwNiwzODQzMCwyMDIzOCwyMDI0OCwyMDI2OCwyMDIxMywyMDI0NCwyMDIwOSwyMDIyNCwyMDIxNSwyMDIzMiwyMDI1MywyMDIyNiwyMDIyOSwyMDI1OCwyMDI0MywyMDIyOCwyMDIxMiwyMDI0MiwyMDkxMywyMTAxMSwyMTAwMSwyMTAwOCwyMTE1OCwyMTI4MiwyMTI3OSwyMTMyNSwyMTM4NiwyMTUxMSwyMjI0MSwyMjIzOSwyMjMxOCwyMjMxNCwyMjMyNCwyMjg0NCwyMjkxMiwyMjkwOCwyMjkxNywyMjkwNywyMjkxMCwyMjkwMywyMjkxMSwyMzM4MiwyMzU3MywyMzU4OSwyMzY3NiwyMzY3NCwyMzY3NSwyMzY3OCwyNDAzMSwyNDE4MSwyNDE5NiwyNDMyMiwyNDM0NiwyNDQzNiwyNDUzMywyNDUzMiwyNDUyNywyNTE4MCwyNTE4MiwyNTE4OCwyNTE4NSwyNTE5MCwyNTE4NiwyNTE3NywyNTE4NCwyNTE3OCwyNTE4OSwyNjA5NSwyNjA5NCwyNjQzMCwyNjQyNSwyNjQyNCwyNjQyNywyNjQyNiwyNjQzMSwyNjQyOCwyNjQxOSwyNzY3MiwyNzcxOCwyNzczMCwyNzc0MCwyNzcyNywyNzcyMiwyNzczMiwyNzcyMywyNzcyNCwyODc4NSwyOTI3OCwyOTM2NCwyOTM2NSwyOTU4MiwyOTk5NCwzMDMzNSwzMTM0OSwzMjU5MywzMzQwMCwzMzQwNCwzMzQwOCwzMzQwNSwzMzQwNywzNDM4MSwzNTE5OCwzNzAxNywzNzAxNSwzNzAxNiwzNzAxOSwzNzAxMiwzODQzNCwzODQzNiwzODQzMiwzODQzNSwyMDMxMCwyMDI4MywyMDMyMiwyMDI5NywyMDMwNywyMDMyNCwyMDI4NiwyMDMyNywyMDMwNiwyMDMxOSwyMDI4OSwyMDMxMiwyMDI2OSwyMDI3NSwyMDI4NywyMDMyMSwyMDg3OSwyMDkyMSwyMTAyMCwyMTAyMiwyMTAyNSwyMTE2NSwyMTE2NiwyMTI1NywyMTM0NywyMTM2MiwyMTM5MCwyMTM5MSwyMTU1MiwyMTU1OSwyMTU0NiwyMTU4OCwyMTU3MywyMTUyOSwyMTUzMiwyMTU0MSwyMTUyOCwyMTU2NSwyMTU4MywyMTU2OSwyMTU0NCwyMTU0MCwyMTU3NSwyMjI1NCwyMjI0NywyMjI0NSwyMjMzNywyMjM0MSwyMjM0OCwyMjM0NSwyMjM0NywyMjM1NCwyMjc5MCwyMjg0OCwyMjk1MCwyMjkzNiwyMjk0NCwyMjkzNSwyMjkyNiwyMjk0NiwyMjkyOCwyMjkyNywyMjk1MSwyMjk0NSwyMzQzOCwyMzQ0MiwyMzU5MiwyMzU5NCwyMzY5MywyMzY5NSwyMzY4OCwyMzY5MSwyMzY4OSwyMzY5OCwyMzY5MCwyMzY4NiwyMzY5OSwyMzcwMSwyNDAzMiwyNDA3NCwyNDA3OCwyNDIwMywyNDIwMSwyNDIwNCwyNDIwMCwyNDIwNSwyNDMyNSwyNDM0OSwyNDQ0MCwyNDQzOCwyNDUzMCwyNDUyOSwyNDUyOCwyNDU1NywyNDU1MiwyNDU1OCwyNDU2MywyNDU0NSwyNDU0OCwyNDU0NywyNDU3MCwyNDU1OSwyNDU2NywyNDU3MSwyNDU3NiwyNDU2NCwyNTE0NiwyNTIxOSwyNTIyOCwyNTIzMCwyNTIzMSwyNTIzNiwyNTIyMywyNTIwMSwyNTIxMSwyNTIxMCwyNTIwMCwyNTIxNywyNTIyNCwyNTIwNywyNTIxMywyNTIwMiwyNTIwNCwyNTkxMSwyNjA5NiwyNjEwMCwyNjA5OSwyNjA5OCwyNjEwMSwyNjQzNywyNjQzOSwyNjQ1NywyNjQ1MywyNjQ0NCwyNjQ0MCwyNjQ2MSwyNjQ0NSwyNjQ1OCwyNjQ0MywyNzYwMCwyNzY3MywyNzY3NCwyNzc2OCwyNzc1MSwyNzc1NSwyNzc4MCwyNzc4NywyNzc5MSwyNzc2MSwyNzc1OSwyNzc1MywyNzgwMiwyNzc1NywyNzc4MywyNzc5NywyNzgwNCwyNzc1MCwyNzc2MywyNzc0OSwyNzc3MSwyNzc5MCwyODc4OCwyODc5NCwyOTI4MywyOTM3NSwyOTM3MywyOTM3OSwyOTM4MiwyOTM3NywyOTM3MCwyOTM4MSwyOTU4OSwyOTU5MSwyOTU4NywyOTU4OCwyOTU4NiwzMDAxMCwzMDAwOSwzMDEwMCwzMDEwMSwzMDMzNywzMTAzNywzMjgyMCwzMjkxNywzMjkyMSwzMjkxMiwzMjkxNCwzMjkyNCwzMzQyNCwzMzQyMywzMzQxMywzMzQyMiwzMzQyNSwzMzQyNywzMzQxOCwzMzQxMSwzMzQxMiwzNTk2MCwzNjgwOSwzNjc5OSwzNzAyMywzNzAyNSwzNzAyOSwzNzAyMiwzNzAzMSwzNzAyNCwzODQ0OCwzODQ0MCwzODQ0NywzODQ0NSwyMDAxOSwyMDM3NiwyMDM0OCwyMDM1NywyMDM0OSwyMDM1MiwyMDM1OSwyMDM0MiwyMDM0MCwyMDM2MSwyMDM1NiwyMDM0MywyMDMwMCwyMDM3NSwyMDMzMCwyMDM3OCwyMDM0NSwyMDM1MywyMDM0NCwyMDM2OCwyMDM4MCwyMDM3MiwyMDM4MiwyMDM3MCwyMDM1NCwyMDM3MywyMDMzMSwyMDMzNCwyMDg5NCwyMDkyNCwyMDkyNiwyMTA0NSwyMTA0MiwyMTA0MywyMTA2MiwyMTA0MSwyMTE4MCwyMTI1OCwyMTI1OSwyMTMwOCwyMTM5NCwyMTM5NiwyMTYzOSwyMTYzMSwyMTYzMywyMTY0OSwyMTYzNCwyMTY0MCwyMTYxMSwyMTYyNiwyMTYzMCwyMTYwNSwyMTYxMiwyMTYyMCwyMTYwNiwyMTY0NSwyMTYxNSwyMTYwMSwyMTYwMCwyMTY1NiwyMTYwMywyMTYwNywyMTYwNCwyMjI2MywyMjI2NSwyMjM4MywyMjM4NiwyMjM4MSwyMjM3OSwyMjM4NSwyMjM4NCwyMjM5MCwyMjQwMCwyMjM4OSwyMjM5NSwyMjM4NywyMjM4OCwyMjM3MCwyMjM3NiwyMjM5NywyMjc5NiwyMjg1MywyMjk2NSwyMjk3MCwyMjk5MSwyMjk5MCwyMjk2MiwyMjk4OCwyMjk3NywyMjk2NiwyMjk3MiwyMjk3OSwyMjk5OCwyMjk2MSwyMjk3MywyMjk3NiwyMjk4NCwyMjk2NCwyMjk4MywyMzM5NCwyMzM5NywyMzQ0MywyMzQ0NSwyMzYyMCwyMzYyMywyMzcyNiwyMzcxNiwyMzcxMiwyMzczMywyMzcyNywyMzcyMCwyMzcyNCwyMzcxMSwyMzcxNSwyMzcyNSwyMzcxNCwyMzcyMiwyMzcxOSwyMzcwOSwyMzcxNywyMzczNCwyMzcyOCwyMzcxOCwyNDA4NywyNDA4NCwyNDA4OSwyNDM2MCwyNDM1NCwyNDM1NSwyNDM1NiwyNDQwNCwyNDQ1MCwyNDQ0NiwyNDQ0NSwyNDU0MiwyNDU0OSwyNDYyMSwyNDYxNCwyNDYwMSwyNDYyNiwyNDU4NywyNDYyOCwyNDU4NiwyNDU5OSwyNDYyNywyNDYwMiwyNDYwNiwyNDYyMCwyNDYxMCwyNDU4OSwyNDU5MiwyNDYyMiwyNDU5NSwyNDU5MywyNDU4OCwyNDU4NSwyNDYwNCwyNTEwOCwyNTE0OSwyNTI2MSwyNTI2OCwyNTI5NywyNTI3OCwyNTI1OCwyNTI3MCwyNTI5MCwyNTI2MiwyNTI2NywyNTI2MywyNTI3NSwyNTI1NywyNTI2NCwyNTI3MiwyNTkxNywyNjAyNCwyNjA0MywyNjEyMSwyNjEwOCwyNjExNiwyNjEzMCwyNjEyMCwyNjEwNywyNjExNSwyNjEyMywyNjEyNSwyNjExNywyNjEwOSwyNjEyOSwyNjEyOCwyNjM1OCwyNjM3OCwyNjUwMSwyNjQ3NiwyNjUxMCwyNjUxNCwyNjQ4NiwyNjQ5MSwyNjUyMCwyNjUwMiwyNjUwMCwyNjQ4NCwyNjUwOSwyNjUwOCwyNjQ5MCwyNjUyNywyNjUxMywyNjUyMSwyNjQ5OSwyNjQ5MywyNjQ5NywyNjQ4OCwyNjQ4OSwyNjUxNiwyNzQyOSwyNzUyMCwyNzUxOCwyNzYxNCwyNzY3NywyNzc5NSwyNzg4NCwyNzg4MywyNzg4NiwyNzg2NSwyNzgzMCwyNzg2MCwyNzgyMSwyNzg3OSwyNzgzMSwyNzg1NiwyNzg0MiwyNzgzNCwyNzg0MywyNzg0NiwyNzg4NSwyNzg5MCwyNzg1OCwyNzg2OSwyNzgyOCwyNzc4NiwyNzgwNSwyNzc3NiwyNzg3MCwyNzg0MCwyNzk1MiwyNzg1MywyNzg0NywyNzgyNCwyNzg5NywyNzg1NSwyNzg4MSwyNzg1NywyODgyMCwyODgyNCwyODgwNSwyODgxOSwyODgwNiwyODgwNCwyODgxNywyODgyMiwyODgwMiwyODgyNiwyODgwMywyOTI5MCwyOTM5OCwyOTM4NywyOTQwMCwyOTM4NSwyOTQwNCwyOTM5NCwyOTM5NiwyOTQwMiwyOTM4OCwyOTM5MywyOTYwNCwyOTYwMSwyOTYxMywyOTYwNiwyOTYwMiwyOTYwMCwyOTYxMiwyOTU5NywyOTkxNywyOTkyOCwzMDAxNSwzMDAxNiwzMDAxNCwzMDA5MiwzMDEwNCwzMDM4MywzMDQ1MSwzMDQ0OSwzMDQ0OCwzMDQ1MywzMDcxMiwzMDcxNiwzMDcxMywzMDcxNSwzMDcxNCwzMDcxMSwzMTA0MiwzMTAzOSwzMTE3MywzMTM1MiwzMTM1NSwzMTQ4MywzMTg2MSwzMTk5NywzMjgyMSwzMjkxMSwzMjk0MiwzMjkzMSwzMjk1MiwzMjk0OSwzMjk0MSwzMzMxMiwzMzQ0MCwzMzQ3MiwzMzQ1MSwzMzQzNCwzMzQzMiwzMzQzNSwzMzQ2MSwzMzQ0NywzMzQ1NCwzMzQ2OCwzMzQzOCwzMzQ2NiwzMzQ2MCwzMzQ0OCwzMzQ0MSwzMzQ0OSwzMzQ3NCwzMzQ0NCwzMzQ3NSwzMzQ2MiwzMzQ0MiwzNDQxNiwzNDQxNSwzNDQxMywzNDQxNCwzNTkyNiwzNjgxOCwzNjgxMSwzNjgxOSwzNjgxMywzNjgyMiwzNjgyMSwzNjgyMywzNzA0MiwzNzA0NCwzNzAzOSwzNzA0MywzNzA0MCwzODQ1NywzODQ2MSwzODQ2MCwzODQ1OCwzODQ2NywyMDQyOSwyMDQyMSwyMDQzNSwyMDQwMiwyMDQyNSwyMDQyNywyMDQxNywyMDQzNiwyMDQ0NCwyMDQ0MSwyMDQxMSwyMDQwMywyMDQ0MywyMDQyMywyMDQzOCwyMDQxMCwyMDQxNiwyMDQwOSwyMDQ2MCwyMTA2MCwyMTA2NSwyMTE4NCwyMTE4NiwyMTMwOSwyMTM3MiwyMTM5OSwyMTM5OCwyMTQwMSwyMTQwMCwyMTY5MCwyMTY2NSwyMTY3NywyMTY2OSwyMTcxMSwyMTY5OSwzMzU0OSwyMTY4NywyMTY3OCwyMTcxOCwyMTY4NiwyMTcwMSwyMTcwMiwyMTY2NCwyMTYxNiwyMTY5MiwyMTY2NiwyMTY5NCwyMTYxOCwyMTcyNiwyMTY4MCwyMjQ1MywyMjQzMCwyMjQzMSwyMjQzNiwyMjQxMiwyMjQyMywyMjQyOSwyMjQyNywyMjQyMCwyMjQyNCwyMjQxNSwyMjQyNSwyMjQzNywyMjQyNiwyMjQyMSwyMjc3MiwyMjc5NywyMjg2NywyMzAwOSwyMzAwNiwyMzAyMiwyMzA0MCwyMzAyNSwyMzAwNSwyMzAzNCwyMzAzNywyMzAzNiwyMzAzMCwyMzAxMiwyMzAyNiwyMzAzMSwyMzAwMywyMzAxNywyMzAyNywyMzAyOSwyMzAwOCwyMzAzOCwyMzAyOCwyMzAyMSwyMzQ2NCwyMzYyOCwyMzc2MCwyMzc2OCwyMzc1NiwyMzc2NywyMzc1NSwyMzc3MSwyMzc3NCwyMzc3MCwyMzc1MywyMzc1MSwyMzc1NCwyMzc2NiwyMzc2MywyMzc2NCwyMzc1OSwyMzc1MiwyMzc1MCwyMzc1OCwyMzc3NSwyMzgwMCwyNDA1NywyNDA5NywyNDA5OCwyNDA5OSwyNDA5NiwyNDEwMCwyNDI0MCwyNDIyOCwyNDIyNiwyNDIxOSwyNDIyNywyNDIyOSwyNDMyNywyNDM2NiwyNDQwNiwyNDQ1NCwyNDYzMSwyNDYzMywyNDY2MCwyNDY5MCwyNDY3MCwyNDY0NSwyNDY1OSwyNDY0NywyNDY0OSwyNDY2NywyNDY1MiwyNDY0MCwyNDY0MiwyNDY3MSwyNDYxMiwyNDY0NCwyNDY2NCwyNDY3OCwyNDY4NiwyNTE1NCwyNTE1NSwyNTI5NSwyNTM1NywyNTM1NSwyNTMzMywyNTM1OCwyNTM0NywyNTMyMywyNTMzNywyNTM1OSwyNTM1NiwyNTMzNiwyNTMzNCwyNTM0NCwyNTM2MywyNTM2NCwyNTMzOCwyNTM2NSwyNTMzOSwyNTMyOCwyNTkyMSwyNTkyMywyNjAyNiwyNjA0NywyNjE2NiwyNjE0NSwyNjE2MiwyNjE2NSwyNjE0MCwyNjE1MCwyNjE0NiwyNjE2MywyNjE1NSwyNjE3MCwyNjE0MSwyNjE2NCwyNjE2OSwyNjE1OCwyNjM4MywyNjM4NCwyNjU2MSwyNjYxMCwyNjU2OCwyNjU1NCwyNjU4OCwyNjU1NSwyNjYxNiwyNjU4NCwyNjU2MCwyNjU1MSwyNjU2NSwyNjYwMywyNjU5NiwyNjU5MSwyNjU0OSwyNjU3MywyNjU0NywyNjYxNSwyNjYxNCwyNjYwNiwyNjU5NSwyNjU2MiwyNjU1MywyNjU3NCwyNjU5OSwyNjYwOCwyNjU0NiwyNjYyMCwyNjU2NiwyNjYwNSwyNjU3MiwyNjU0MiwyNjU5OCwyNjU4NywyNjYxOCwyNjU2OSwyNjU3MCwyNjU2MywyNjYwMiwyNjU3MSwyNzQzMiwyNzUyMiwyNzUyNCwyNzU3NCwyNzYwNiwyNzYwOCwyNzYxNiwyNzY4MCwyNzY4MSwyNzk0NCwyNzk1NiwyNzk0OSwyNzkzNSwyNzk2NCwyNzk2NywyNzkyMiwyNzkxNCwyNzg2NiwyNzk1NSwyNzkwOCwyNzkyOSwyNzk2MiwyNzkzMCwyNzkyMSwyNzkwNCwyNzkzMywyNzk3MCwyNzkwNSwyNzkyOCwyNzk1OSwyNzkwNywyNzkxOSwyNzk2OCwyNzkxMSwyNzkzNiwyNzk0OCwyNzkxMiwyNzkzOCwyNzkxMywyNzkyMCwyODg1NSwyODgzMSwyODg2MiwyODg0OSwyODg0OCwyODgzMywyODg1MiwyODg1MywyODg0MSwyOTI0OSwyOTI1NywyOTI1OCwyOTI5MiwyOTI5NiwyOTI5OSwyOTI5NCwyOTM4NiwyOTQxMiwyOTQxNiwyOTQxOSwyOTQwNywyOTQxOCwyOTQxNCwyOTQxMSwyOTU3MywyOTY0NCwyOTYzNCwyOTY0MCwyOTYzNywyOTYyNSwyOTYyMiwyOTYyMSwyOTYyMCwyOTY3NSwyOTYzMSwyOTYzOSwyOTYzMCwyOTYzNSwyOTYzOCwyOTYyNCwyOTY0MywyOTkzMiwyOTkzNCwyOTk5OCwzMDAyMywzMDAyNCwzMDExOSwzMDEyMiwzMDMyOSwzMDQwNCwzMDQ3MiwzMDQ2NywzMDQ2OCwzMDQ2OSwzMDQ3NCwzMDQ1NSwzMDQ1OSwzMDQ1OCwzMDY5NSwzMDY5NiwzMDcyNiwzMDczNywzMDczOCwzMDcyNSwzMDczNiwzMDczNSwzMDczNCwzMDcyOSwzMDcyMywzMDczOSwzMTA1MCwzMTA1MiwzMTA1MSwzMTA0NSwzMTA0NCwzMTE4OSwzMTE4MSwzMTE4MywzMTE5MCwzMTE4MiwzMTM2MCwzMTM1OCwzMTQ0MSwzMTQ4OCwzMTQ4OSwzMTg2NiwzMTg2NCwzMTg2NSwzMTg3MSwzMTg3MiwzMTg3MywzMjAwMywzMjAwOCwzMjAwMSwzMjYwMCwzMjY1NywzMjY1MywzMjcwMiwzMjc3NSwzMjc4MiwzMjc4MywzMjc4OCwzMjgyMywzMjk4NCwzMjk2NywzMjk5MiwzMjk3NywzMjk2OCwzMjk2MiwzMjk3NiwzMjk2NSwzMjk5NSwzMjk4NSwzMjk4OCwzMjk3MCwzMjk4MSwzMjk2OSwzMjk3NSwzMjk4MywzMjk5OCwzMjk3MywzMzI3OSwzMzMxMywzMzQyOCwzMzQ5NywzMzUzNCwzMzUyOSwzMzU0MywzMzUxMiwzMzUzNiwzMzQ5MywzMzU5NCwzMzUxNSwzMzQ5NCwzMzUyNCwzMzUxNiwzMzUwNSwzMzUyMiwzMzUyNSwzMzU0OCwzMzUzMSwzMzUyNiwzMzUyMCwzMzUxNCwzMzUwOCwzMzUwNCwzMzUzMCwzMzUyMywzMzUxNywzNDQyMywzNDQyMCwzNDQyOCwzNDQxOSwzNDg4MSwzNDg5NCwzNDkxOSwzNDkyMiwzNDkyMSwzNTI4MywzNTMzMiwzNTMzNSwzNjIxMCwzNjgzNSwzNjgzMywzNjg0NiwzNjgzMiwzNzEwNSwzNzA1MywzNzA1NSwzNzA3NywzNzA2MSwzNzA1NCwzNzA2MywzNzA2NywzNzA2NCwzNzMzMiwzNzMzMSwzODQ4NCwzODQ3OSwzODQ4MSwzODQ4MywzODQ3NCwzODQ3OCwyMDUxMCwyMDQ4NSwyMDQ4NywyMDQ5OSwyMDUxNCwyMDUyOCwyMDUwNywyMDQ2OSwyMDQ2OCwyMDUzMSwyMDUzNSwyMDUyNCwyMDQ3MCwyMDQ3MSwyMDUwMywyMDUwOCwyMDUxMiwyMDUxOSwyMDUzMywyMDUyNywyMDUyOSwyMDQ5NCwyMDgyNiwyMDg4NCwyMDg4MywyMDkzOCwyMDkzMiwyMDkzMywyMDkzNiwyMDk0MiwyMTA4OSwyMTA4MiwyMTA3NCwyMTA4NiwyMTA4NywyMTA3NywyMTA5MCwyMTE5NywyMTI2MiwyMTQwNiwyMTc5OCwyMTczMCwyMTc4MywyMTc3OCwyMTczNSwyMTc0NywyMTczMiwyMTc4NiwyMTc1OSwyMTc2NCwyMTc2OCwyMTczOSwyMTc3NywyMTc2NSwyMTc0NSwyMTc3MCwyMTc1NSwyMTc1MSwyMTc1MiwyMTcyOCwyMTc3NCwyMTc2MywyMTc3MSwyMjI3MywyMjI3NCwyMjQ3NiwyMjU3OCwyMjQ4NSwyMjQ4MiwyMjQ1OCwyMjQ3MCwyMjQ2MSwyMjQ2MCwyMjQ1NiwyMjQ1NCwyMjQ2MywyMjQ3MSwyMjQ4MCwyMjQ1NywyMjQ2NSwyMjc5OCwyMjg1OCwyMzA2NSwyMzA2MiwyMzA4NSwyMzA4NiwyMzA2MSwyMzA1NSwyMzA2MywyMzA1MCwyMzA3MCwyMzA5MSwyMzQwNCwyMzQ2MywyMzQ2OSwyMzQ2OCwyMzU1NSwyMzYzOCwyMzYzNiwyMzc4OCwyMzgwNywyMzc5MCwyMzc5MywyMzc5OSwyMzgwOCwyMzgwMSwyNDEwNSwyNDEwNCwyNDIzMiwyNDIzOCwyNDIzNCwyNDIzNiwyNDM3MSwyNDM2OCwyNDQyMywyNDY2OSwyNDY2NiwyNDY3OSwyNDY0MSwyNDczOCwyNDcxMiwyNDcwNCwyNDcyMiwyNDcwNSwyNDczMywyNDcwNywyNDcyNSwyNDczMSwyNDcyNywyNDcxMSwyNDczMiwyNDcxOCwyNTExMywyNTE1OCwyNTMzMCwyNTM2MCwyNTQzMCwyNTM4OCwyNTQxMiwyNTQxMywyNTM5OCwyNTQxMSwyNTU3MiwyNTQwMSwyNTQxOSwyNTQxOCwyNTQwNCwyNTM4NSwyNTQwOSwyNTM5NiwyNTQzMiwyNTQyOCwyNTQzMywyNTM4OSwyNTQxNSwyNTM5NSwyNTQzNCwyNTQyNSwyNTQwMCwyNTQzMSwyNTQwOCwyNTQxNiwyNTkzMCwyNTkyNiwyNjA1NCwyNjA1MSwyNjA1MiwyNjA1MCwyNjE4NiwyNjIwNywyNjE4MywyNjE5MywyNjM4NiwyNjM4NywyNjY1NSwyNjY1MCwyNjY5NywyNjY3NCwyNjY3NSwyNjY4MywyNjY5OSwyNjcwMywyNjY0NiwyNjY3MywyNjY1MiwyNjY3NywyNjY2NywyNjY2OSwyNjY3MSwyNjcwMiwyNjY5MiwyNjY3NiwyNjY1MywyNjY0MiwyNjY0NCwyNjY2MiwyNjY2NCwyNjY3MCwyNjcwMSwyNjY4MiwyNjY2MSwyNjY1NiwyNzQzNiwyNzQzOSwyNzQzNywyNzQ0MSwyNzQ0NCwyNzUwMSwzMjg5OCwyNzUyOCwyNzYyMiwyNzYyMCwyNzYyNCwyNzYxOSwyNzYxOCwyNzYyMywyNzY4NSwyODAyNiwyODAwMywyODAwNCwyODAyMiwyNzkxNywyODAwMSwyODA1MCwyNzk5MiwyODAwMiwyODAxMywyODAxNSwyODA0OSwyODA0NSwyODE0MywyODAzMSwyODAzOCwyNzk5OCwyODAwNywyODAwMCwyODA1NSwyODAxNiwyODAyOCwyNzk5OSwyODAzNCwyODA1NiwyNzk1MSwyODAwOCwyODA0MywyODAzMCwyODAzMiwyODAzNiwyNzkyNiwyODAzNSwyODAyNywyODAyOSwyODAyMSwyODA0OCwyODg5MiwyODg4MywyODg4MSwyODg5MywyODg3NSwzMjU2OSwyODg5OCwyODg4NywyODg4MiwyODg5NCwyODg5NiwyODg4NCwyODg3NywyODg2OSwyODg3MCwyODg3MSwyODg5MCwyODg3OCwyODg5NywyOTI1MCwyOTMwNCwyOTMwMywyOTMwMiwyOTQ0MCwyOTQzNCwyOTQyOCwyOTQzOCwyOTQzMCwyOTQyNywyOTQzNSwyOTQ0MSwyOTY1MSwyOTY1NywyOTY2OSwyOTY1NCwyOTYyOCwyOTY3MSwyOTY2NywyOTY3MywyOTY2MCwyOTY1MCwyOTY1OSwyOTY1MiwyOTY2MSwyOTY1OCwyOTY1NSwyOTY1NiwyOTY3MiwyOTkxOCwyOTkxOSwyOTk0MCwyOTk0MSwyOTk4NSwzMDA0MywzMDA0NywzMDEyOCwzMDE0NSwzMDEzOSwzMDE0OCwzMDE0NCwzMDE0MywzMDEzNCwzMDEzOCwzMDM0NiwzMDQwOSwzMDQ5MywzMDQ5MSwzMDQ4MCwzMDQ4MywzMDQ4MiwzMDQ5OSwzMDQ4MSwzMDQ4NSwzMDQ4OSwzMDQ5MCwzMDQ5OCwzMDUwMywzMDc1NSwzMDc2NCwzMDc1NCwzMDc3MywzMDc2NywzMDc2MCwzMDc2NiwzMDc2MywzMDc1MywzMDc2MSwzMDc3MSwzMDc2MiwzMDc2OSwzMTA2MCwzMTA2NywzMTA1NSwzMTA2OCwzMTA1OSwzMTA1OCwzMTA1NywzMTIxMSwzMTIxMiwzMTIwMCwzMTIxNCwzMTIxMywzMTIxMCwzMTE5NiwzMTE5OCwzMTE5NywzMTM2NiwzMTM2OSwzMTM2NSwzMTM3MSwzMTM3MiwzMTM3MCwzMTM2NywzMTQ0OCwzMTUwNCwzMTQ5MiwzMTUwNywzMTQ5MywzMTUwMywzMTQ5NiwzMTQ5OCwzMTUwMiwzMTQ5NywzMTUwNiwzMTg3NiwzMTg4OSwzMTg4MiwzMTg4NCwzMTg4MCwzMTg4NSwzMTg3NywzMjAzMCwzMjAyOSwzMjAxNywzMjAxNCwzMjAyNCwzMjAyMiwzMjAxOSwzMjAzMSwzMjAxOCwzMjAxNSwzMjAxMiwzMjYwNCwzMjYwOSwzMjYwNiwzMjYwOCwzMjYwNSwzMjYwMywzMjY2MiwzMjY1OCwzMjcwNywzMjcwNiwzMjcwNCwzMjc5MCwzMjgzMCwzMjgyNSwzMzAxOCwzMzAxMCwzMzAxNywzMzAxMywzMzAyNSwzMzAxOSwzMzAyNCwzMzI4MSwzMzMyNywzMzMxNywzMzU4NywzMzU4MSwzMzYwNCwzMzU2MSwzMzYxNywzMzU3MywzMzYyMiwzMzU5OSwzMzYwMSwzMzU3NCwzMzU2NCwzMzU3MCwzMzYwMiwzMzYxNCwzMzU2MywzMzU3OCwzMzU0NCwzMzU5NiwzMzYxMywzMzU1OCwzMzU3MiwzMzU2OCwzMzU5MSwzMzU4MywzMzU3NywzMzYwNywzMzYwNSwzMzYxMiwzMzYxOSwzMzU2NiwzMzU4MCwzMzYxMSwzMzU3NSwzMzYwOCwzNDM4NywzNDM4NiwzNDQ2NiwzNDQ3MiwzNDQ1NCwzNDQ0NSwzNDQ0OSwzNDQ2MiwzNDQzOSwzNDQ1NSwzNDQzOCwzNDQ0MywzNDQ1OCwzNDQzNywzNDQ2OSwzNDQ1NywzNDQ2NSwzNDQ3MSwzNDQ1MywzNDQ1NiwzNDQ0NiwzNDQ2MSwzNDQ0OCwzNDQ1MiwzNDg4MywzNDg4NCwzNDkyNSwzNDkzMywzNDkzNCwzNDkzMCwzNDk0NCwzNDkyOSwzNDk0MywzNDkyNywzNDk0NywzNDk0MiwzNDkzMiwzNDk0MCwzNTM0NiwzNTkxMSwzNTkyNywzNTk2MywzNjAwNCwzNjAwMywzNjIxNCwzNjIxNiwzNjI3NywzNjI3OSwzNjI3OCwzNjU2MSwzNjU2MywzNjg2MiwzNjg1MywzNjg2NiwzNjg2MywzNjg1OSwzNjg2OCwzNjg2MCwzNjg1NCwzNzA3OCwzNzA4OCwzNzA4MSwzNzA4MiwzNzA5MSwzNzA4NywzNzA5MywzNzA4MCwzNzA4MywzNzA3OSwzNzA4NCwzNzA5MiwzNzIwMCwzNzE5OCwzNzE5OSwzNzMzMywzNzM0NiwzNzMzOCwzODQ5MiwzODQ5NSwzODU4OCwzOTEzOSwzOTY0NywzOTcyNywyMDA5NSwyMDU5MiwyMDU4NiwyMDU3NywyMDU3NCwyMDU3NiwyMDU2MywyMDU1NSwyMDU3MywyMDU5NCwyMDU1MiwyMDU1NywyMDU0NSwyMDU3MSwyMDU1NCwyMDU3OCwyMDUwMSwyMDU0OSwyMDU3NSwyMDU4NSwyMDU4NywyMDU3OSwyMDU4MCwyMDU1MCwyMDU0NCwyMDU5MCwyMDU5NSwyMDU2NywyMDU2MSwyMDk0NCwyMTA5OSwyMTEwMSwyMTEwMCwyMTEwMiwyMTIwNiwyMTIwMywyMTI5MywyMTQwNCwyMTg3NywyMTg3OCwyMTgyMCwyMTgzNywyMTg0MCwyMTgxMiwyMTgwMiwyMTg0MSwyMTg1OCwyMTgxNCwyMTgxMywyMTgwOCwyMTg0MiwyMTgyOSwyMTc3MiwyMTgxMCwyMTg2MSwyMTgzOCwyMTgxNywyMTgzMiwyMTgwNSwyMTgxOSwyMTgyNCwyMTgzNSwyMjI4MiwyMjI3OSwyMjUyMywyMjU0OCwyMjQ5OCwyMjUxOCwyMjQ5MiwyMjUxNiwyMjUyOCwyMjUwOSwyMjUyNSwyMjUzNiwyMjUyMCwyMjUzOSwyMjUxNSwyMjQ3OSwyMjUzNSwyMjUxMCwyMjQ5OSwyMjUxNCwyMjUwMSwyMjUwOCwyMjQ5NywyMjU0MiwyMjUyNCwyMjU0NCwyMjUwMywyMjUyOSwyMjU0MCwyMjUxMywyMjUwNSwyMjUxMiwyMjU0MSwyMjUzMiwyMjg3NiwyMzEzNiwyMzEyOCwyMzEyNSwyMzE0MywyMzEzNCwyMzA5NiwyMzA5MywyMzE0OSwyMzEyMCwyMzEzNSwyMzE0MSwyMzE0OCwyMzEyMywyMzE0MCwyMzEyNywyMzEwNywyMzEzMywyMzEyMiwyMzEwOCwyMzEzMSwyMzExMiwyMzE4MiwyMzEwMiwyMzExNywyMzA5NywyMzExNiwyMzE1MiwyMzE0NSwyMzExMSwyMzEyMSwyMzEyNiwyMzEwNiwyMzEzMiwyMzQxMCwyMzQwNiwyMzQ4OSwyMzQ4OCwyMzY0MSwyMzgzOCwyMzgxOSwyMzgzNywyMzgzNCwyMzg0MCwyMzgyMCwyMzg0OCwyMzgyMSwyMzg0NiwyMzg0NSwyMzgyMywyMzg1NiwyMzgyNiwyMzg0MywyMzgzOSwyMzg1NCwyNDEyNiwyNDExNiwyNDI0MSwyNDI0NCwyNDI0OSwyNDI0MiwyNDI0MywyNDM3NCwyNDM3NiwyNDQ3NSwyNDQ3MCwyNDQ3OSwyNDcxNCwyNDcyMCwyNDcxMCwyNDc2NiwyNDc1MiwyNDc2MiwyNDc4NywyNDc4OCwyNDc4MywyNDgwNCwyNDc5MywyNDc5NywyNDc3NiwyNDc1MywyNDc5NSwyNDc1OSwyNDc3OCwyNDc2NywyNDc3MSwyNDc4MSwyNDc2OCwyNTM5NCwyNTQ0NSwyNTQ4MiwyNTQ3NCwyNTQ2OSwyNTUzMywyNTUwMiwyNTUxNywyNTUwMSwyNTQ5NSwyNTUxNSwyNTQ4NiwyNTQ1NSwyNTQ3OSwyNTQ4OCwyNTQ1NCwyNTUxOSwyNTQ2MSwyNTUwMCwyNTQ1MywyNTUxOCwyNTQ2OCwyNTUwOCwyNTQwMywyNTUwMywyNTQ2NCwyNTQ3NywyNTQ3MywyNTQ4OSwyNTQ4NSwyNTQ1NiwyNTkzOSwyNjA2MSwyNjIxMywyNjIwOSwyNjIwMywyNjIwMSwyNjIwNCwyNjIxMCwyNjM5MiwyNjc0NSwyNjc1OSwyNjc2OCwyNjc4MCwyNjczMywyNjczNCwyNjc5OCwyNjc5NSwyNjk2NiwyNjczNSwyNjc4NywyNjc5NiwyNjc5MywyNjc0MSwyNjc0MCwyNjgwMiwyNjc2NywyNjc0MywyNjc3MCwyNjc0OCwyNjczMSwyNjczOCwyNjc5NCwyNjc1MiwyNjczNywyNjc1MCwyNjc3OSwyNjc3NCwyNjc2MywyNjc4NCwyNjc2MSwyNjc4OCwyNjc0NCwyNjc0NywyNjc2OSwyNjc2NCwyNjc2MiwyNjc0OSwyNzQ0NiwyNzQ0MywyNzQ0NywyNzQ0OCwyNzUzNywyNzUzNSwyNzUzMywyNzUzNCwyNzUzMiwyNzY5MCwyODA5NiwyODA3NSwyODA4NCwyODA4MywyODI3NiwyODA3NiwyODEzNywyODEzMCwyODA4NywyODE1MCwyODExNiwyODE2MCwyODEwNCwyODEyOCwyODEyNywyODExOCwyODA5NCwyODEzMywyODEyNCwyODEyNSwyODEyMywyODE0OCwyODEwNiwyODA5MywyODE0MSwyODE0NCwyODA5MCwyODExNywyODA5OCwyODExMSwyODEwNSwyODExMiwyODE0NiwyODExNSwyODE1NywyODExOSwyODEwOSwyODEzMSwyODA5MSwyODkyMiwyODk0MSwyODkxOSwyODk1MSwyODkxNiwyODk0MCwyODkxMiwyODkzMiwyODkxNSwyODk0NCwyODkyNCwyODkyNywyODkzNCwyODk0NywyODkyOCwyODkyMCwyODkxOCwyODkzOSwyODkzMCwyODk0MiwyOTMxMCwyOTMwNywyOTMwOCwyOTMxMSwyOTQ2OSwyOTQ2MywyOTQ0NywyOTQ1NywyOTQ2NCwyOTQ1MCwyOTQ0OCwyOTQzOSwyOTQ1NSwyOTQ3MCwyOTU3NiwyOTY4NiwyOTY4OCwyOTY4NSwyOTcwMCwyOTY5NywyOTY5MywyOTcwMywyOTY5NiwyOTY5MCwyOTY5MiwyOTY5NSwyOTcwOCwyOTcwNywyOTY4NCwyOTcwNCwzMDA1MiwzMDA1MSwzMDE1OCwzMDE2MiwzMDE1OSwzMDE1NSwzMDE1NiwzMDE2MSwzMDE2MCwzMDM1MSwzMDM0NSwzMDQxOSwzMDUyMSwzMDUxMSwzMDUwOSwzMDUxMywzMDUxNCwzMDUxNiwzMDUxNSwzMDUyNSwzMDUwMSwzMDUyMywzMDUxNywzMDc5MiwzMDgwMiwzMDc5MywzMDc5NywzMDc5NCwzMDc5NiwzMDc1OCwzMDc4OSwzMDgwMCwzMTA3NiwzMTA3OSwzMTA4MSwzMTA4MiwzMTA3NSwzMTA4MywzMTA3MywzMTE2MywzMTIyNiwzMTIyNCwzMTIyMiwzMTIyMywzMTM3NSwzMTM4MCwzMTM3NiwzMTU0MSwzMTU1OSwzMTU0MCwzMTUyNSwzMTUzNiwzMTUyMiwzMTUyNCwzMTUzOSwzMTUxMiwzMTUzMCwzMTUxNywzMTUzNywzMTUzMSwzMTUzMywzMTUzNSwzMTUzOCwzMTU0NCwzMTUxNCwzMTUyMywzMTg5MiwzMTg5NiwzMTg5NCwzMTkwNywzMjA1MywzMjA2MSwzMjA1NiwzMjA1NCwzMjA1OCwzMjA2OSwzMjA0NCwzMjA0MSwzMjA2NSwzMjA3MSwzMjA2MiwzMjA2MywzMjA3NCwzMjA1OSwzMjA0MCwzMjYxMSwzMjY2MSwzMjY2OCwzMjY2OSwzMjY2NywzMjcxNCwzMjcxNSwzMjcxNywzMjcyMCwzMjcyMSwzMjcxMSwzMjcxOSwzMjcxMywzMjc5OSwzMjc5OCwzMjc5NSwzMjgzOSwzMjgzNSwzMjg0MCwzMzA0OCwzMzA2MSwzMzA0OSwzMzA1MSwzMzA2OSwzMzA1NSwzMzA2OCwzMzA1NCwzMzA1NywzMzA0NSwzMzA2MywzMzA1MywzMzA1OCwzMzI5NywzMzMzNiwzMzMzMSwzMzMzOCwzMzMzMiwzMzMzMCwzMzM5NiwzMzY4MCwzMzY5OSwzMzcwNCwzMzY3NywzMzY1OCwzMzY1MSwzMzcwMCwzMzY1MiwzMzY3OSwzMzY2NSwzMzY4NSwzMzY4OSwzMzY1MywzMzY4NCwzMzcwNSwzMzY2MSwzMzY2NywzMzY3NiwzMzY5MywzMzY5MSwzMzcwNiwzMzY3NSwzMzY2MiwzMzcwMSwzMzcxMSwzMzY3MiwzMzY4NywzMzcxMiwzMzY2MywzMzcwMiwzMzY3MSwzMzcxMCwzMzY1NCwzMzY5MCwzNDM5MywzNDM5MCwzNDQ5NSwzNDQ4NywzNDQ5OCwzNDQ5NywzNDUwMSwzNDQ5MCwzNDQ4MCwzNDUwNCwzNDQ4OSwzNDQ4MywzNDQ4OCwzNDUwOCwzNDQ4NCwzNDQ5MSwzNDQ5MiwzNDQ5OSwzNDQ5MywzNDQ5NCwzNDg5OCwzNDk1MywzNDk2NSwzNDk4NCwzNDk3OCwzNDk4NiwzNDk3MCwzNDk2MSwzNDk3NywzNDk3NSwzNDk2OCwzNDk4MywzNDk2OSwzNDk3MSwzNDk2NywzNDk4MCwzNDk4OCwzNDk1NiwzNDk2MywzNDk1OCwzNTIwMiwzNTI4NiwzNTI4OSwzNTI4NSwzNTM3NiwzNTM2NywzNTM3MiwzNTM1OCwzNTg5NywzNTg5OSwzNTkzMiwzNTkzMywzNTk2NSwzNjAwNSwzNjIyMSwzNjIxOSwzNjIxNywzNjI4NCwzNjI5MCwzNjI4MSwzNjI4NywzNjI4OSwzNjU2OCwzNjU3NCwzNjU3MywzNjU3MiwzNjU2NywzNjU3NiwzNjU3NywzNjkwMCwzNjg3NSwzNjg4MSwzNjg5MiwzNjg3NiwzNjg5NywzNzEwMywzNzA5OCwzNzEwNCwzNzEwOCwzNzEwNiwzNzEwNywzNzA3NiwzNzA5OSwzNzEwMCwzNzA5NywzNzIwNiwzNzIwOCwzNzIxMCwzNzIwMywzNzIwNSwzNzM1NiwzNzM2NCwzNzM2MSwzNzM2MywzNzM2OCwzNzM0OCwzNzM2OSwzNzM1NCwzNzM1NSwzNzM2NywzNzM1MiwzNzM1OCwzODI2NiwzODI3OCwzODI4MCwzODUyNCwzODUwOSwzODUwNywzODUxMywzODUxMSwzODU5MSwzODc2MiwzODkxNiwzOTE0MSwzOTMxOSwyMDYzNSwyMDYyOSwyMDYyOCwyMDYzOCwyMDYxOSwyMDY0MywyMDYxMSwyMDYyMCwyMDYyMiwyMDYzNywyMDU4NCwyMDYzNiwyMDYyNiwyMDYxMCwyMDYxNSwyMDgzMSwyMDk0OCwyMTI2NiwyMTI2NSwyMTQxMiwyMTQxNSwyMTkwNSwyMTkyOCwyMTkyNSwyMTkzMywyMTg3OSwyMjA4NSwyMTkyMiwyMTkwNywyMTg5NiwyMTkwMywyMTk0MSwyMTg4OSwyMTkyMywyMTkwNiwyMTkyNCwyMTg4NSwyMTkwMCwyMTkyNiwyMTg4NywyMTkwOSwyMTkyMSwyMTkwMiwyMjI4NCwyMjU2OSwyMjU4MywyMjU1MywyMjU1OCwyMjU2NywyMjU2MywyMjU2OCwyMjUxNywyMjYwMCwyMjU2NSwyMjU1NiwyMjU1NSwyMjU3OSwyMjU5MSwyMjU4MiwyMjU3NCwyMjU4NSwyMjU4NCwyMjU3MywyMjU3MiwyMjU4NywyMjg4MSwyMzIxNSwyMzE4OCwyMzE5OSwyMzE2MiwyMzIwMiwyMzE5OCwyMzE2MCwyMzIwNiwyMzE2NCwyMzIwNSwyMzIxMiwyMzE4OSwyMzIxNCwyMzA5NSwyMzE3MiwyMzE3OCwyMzE5MSwyMzE3MSwyMzE3OSwyMzIwOSwyMzE2MywyMzE2NSwyMzE4MCwyMzE5NiwyMzE4MywyMzE4NywyMzE5NywyMzUzMCwyMzUwMSwyMzQ5OSwyMzUwOCwyMzUwNSwyMzQ5OCwyMzUwMiwyMzU2NCwyMzYwMCwyMzg2MywyMzg3NSwyMzkxNSwyMzg3MywyMzg4MywyMzg3MSwyMzg2MSwyMzg4OSwyMzg4NiwyMzg5MywyMzg1OSwyMzg2NiwyMzg5MCwyMzg2OSwyMzg1NywyMzg5NywyMzg3NCwyMzg2NSwyMzg4MSwyMzg2NCwyMzg2OCwyMzg1OCwyMzg2MiwyMzg3MiwyMzg3NywyNDEzMiwyNDEyOSwyNDQwOCwyNDQ4NiwyNDQ4NSwyNDQ5MSwyNDc3NywyNDc2MSwyNDc4MCwyNDgwMiwyNDc4MiwyNDc3MiwyNDg1MiwyNDgxOCwyNDg0MiwyNDg1NCwyNDgzNywyNDgyMSwyNDg1MSwyNDgyNCwyNDgyOCwyNDgzMCwyNDc2OSwyNDgzNSwyNDg1NiwyNDg2MSwyNDg0OCwyNDgzMSwyNDgzNiwyNDg0MywyNTE2MiwyNTQ5MiwyNTUyMSwyNTUyMCwyNTU1MCwyNTU3MywyNTU3NiwyNTU4MywyNTUzOSwyNTc1NywyNTU4NywyNTU0NiwyNTU2OCwyNTU5MCwyNTU1NywyNTU4NiwyNTU4OSwyNTY5NywyNTU2NywyNTUzNCwyNTU2NSwyNTU2NCwyNTU0MCwyNTU2MCwyNTU1NSwyNTUzOCwyNTU0MywyNTU0OCwyNTU0NywyNTU0NCwyNTU4NCwyNTU1OSwyNTU2MSwyNTkwNiwyNTk1OSwyNTk2MiwyNTk1NiwyNTk0OCwyNTk2MCwyNTk1NywyNTk5NiwyNjAxMywyNjAxNCwyNjAzMCwyNjA2NCwyNjA2NiwyNjIzNiwyNjIyMCwyNjIzNSwyNjI0MCwyNjIyNSwyNjIzMywyNjIxOCwyNjIyNiwyNjM2OSwyNjg5MiwyNjgzNSwyNjg4NCwyNjg0NCwyNjkyMiwyNjg2MCwyNjg1OCwyNjg2NSwyNjg5NSwyNjgzOCwyNjg3MSwyNjg1OSwyNjg1MiwyNjg3MCwyNjg5OSwyNjg5NiwyNjg2NywyNjg0OSwyNjg4NywyNjgyOCwyNjg4OCwyNjk5MiwyNjgwNCwyNjg5NywyNjg2MywyNjgyMiwyNjkwMCwyNjg3MiwyNjgzMiwyNjg3NywyNjg3NiwyNjg1NiwyNjg5MSwyNjg5MCwyNjkwMywyNjgzMCwyNjgyNCwyNjg0NSwyNjg0NiwyNjg1NCwyNjg2OCwyNjgzMywyNjg4NiwyNjgzNiwyNjg1NywyNjkwMSwyNjkxNywyNjgyMywyNzQ0OSwyNzQ1MSwyNzQ1NSwyNzQ1MiwyNzU0MCwyNzU0MywyNzU0NSwyNzU0MSwyNzU4MSwyNzYzMiwyNzYzNCwyNzYzNSwyNzY5NiwyODE1NiwyODIzMCwyODIzMSwyODE5MSwyODIzMywyODI5NiwyODIyMCwyODIyMSwyODIyOSwyODI1OCwyODIwMywyODIyMywyODIyNSwyODI1MywyODI3NSwyODE4OCwyODIxMSwyODIzNSwyODIyNCwyODI0MSwyODIxOSwyODE2MywyODIwNiwyODI1NCwyODI2NCwyODI1MiwyODI1NywyODIwOSwyODIwMCwyODI1NiwyODI3MywyODI2NywyODIxNywyODE5NCwyODIwOCwyODI0MywyODI2MSwyODE5OSwyODI4MCwyODI2MCwyODI3OSwyODI0NSwyODI4MSwyODI0MiwyODI2MiwyODIxMywyODIxNCwyODI1MCwyODk2MCwyODk1OCwyODk3NSwyODkyMywyODk3NCwyODk3NywyODk2MywyODk2NSwyODk2MiwyODk3OCwyODk1OSwyODk2OCwyODk4NiwyODk1NSwyOTI1OSwyOTI3NCwyOTMyMCwyOTMyMSwyOTMxOCwyOTMxNywyOTMyMywyOTQ1OCwyOTQ1MSwyOTQ4OCwyOTQ3NCwyOTQ4OSwyOTQ5MSwyOTQ3OSwyOTQ5MCwyOTQ4NSwyOTQ3OCwyOTQ3NSwyOTQ5MywyOTQ1MiwyOTc0MiwyOTc0MCwyOTc0NCwyOTczOSwyOTcxOCwyOTcyMiwyOTcyOSwyOTc0MSwyOTc0NSwyOTczMiwyOTczMSwyOTcyNSwyOTczNywyOTcyOCwyOTc0NiwyOTk0NywyOTk5OSwzMDA2MywzMDA2MCwzMDE4MywzMDE3MCwzMDE3NywzMDE4MiwzMDE3MywzMDE3NSwzMDE4MCwzMDE2NywzMDM1NywzMDM1NCwzMDQyNiwzMDUzNCwzMDUzNSwzMDUzMiwzMDU0MSwzMDUzMywzMDUzOCwzMDU0MiwzMDUzOSwzMDU0MCwzMDY4NiwzMDcwMCwzMDgxNiwzMDgyMCwzMDgyMSwzMDgxMiwzMDgyOSwzMDgzMywzMDgyNiwzMDgzMCwzMDgzMiwzMDgyNSwzMDgyNCwzMDgxNCwzMDgxOCwzMTA5MiwzMTA5MSwzMTA5MCwzMTA4OCwzMTIzNCwzMTI0MiwzMTIzNSwzMTI0NCwzMTIzNiwzMTM4NSwzMTQ2MiwzMTQ2MCwzMTU2MiwzMTU0NywzMTU1NiwzMTU2MCwzMTU2NCwzMTU2NiwzMTU1MiwzMTU3NiwzMTU1NywzMTkwNiwzMTkwMiwzMTkxMiwzMTkwNSwzMjA4OCwzMjExMSwzMjA5OSwzMjA4MywzMjA4NiwzMjEwMywzMjEwNiwzMjA3OSwzMjEwOSwzMjA5MiwzMjEwNywzMjA4MiwzMjA4NCwzMjEwNSwzMjA4MSwzMjA5NSwzMjA3OCwzMjU3NCwzMjU3NSwzMjYxMywzMjYxNCwzMjY3NCwzMjY3MiwzMjY3MywzMjcyNywzMjg0OSwzMjg0NywzMjg0OCwzMzAyMiwzMjk4MCwzMzA5MSwzMzA5OCwzMzEwNiwzMzEwMywzMzA5NSwzMzA4NSwzMzEwMSwzMzA4MiwzMzI1NCwzMzI2MiwzMzI3MSwzMzI3MiwzMzI3MywzMzI4NCwzMzM0MCwzMzM0MSwzMzM0MywzMzM5NywzMzU5NSwzMzc0MywzMzc4NSwzMzgyNywzMzcyOCwzMzc2OCwzMzgxMCwzMzc2NywzMzc2NCwzMzc4OCwzMzc4MiwzMzgwOCwzMzczNCwzMzczNiwzMzc3MSwzMzc2MywzMzcyNywzMzc5MywzMzc1NywzMzc2NSwzMzc1MiwzMzc5MSwzMzc2MSwzMzczOSwzMzc0MiwzMzc1MCwzMzc4MSwzMzczNywzMzgwMSwzMzgwNywzMzc1OCwzMzgwOSwzMzc5OCwzMzczMCwzMzc3OSwzMzc0OSwzMzc4NiwzMzczNSwzMzc0NSwzMzc3MCwzMzgxMSwzMzczMSwzMzc3MiwzMzc3NCwzMzczMiwzMzc4NywzMzc1MSwzMzc2MiwzMzgxOSwzMzc1NSwzMzc5MCwzNDUyMCwzNDUzMCwzNDUzNCwzNDUxNSwzNDUzMSwzNDUyMiwzNDUzOCwzNDUyNSwzNDUzOSwzNDUyNCwzNDU0MCwzNDUzNywzNDUxOSwzNDUzNiwzNDUxMywzNDg4OCwzNDkwMiwzNDkwMSwzNTAwMiwzNTAzMSwzNTAwMSwzNTAwMCwzNTAwOCwzNTAwNiwzNDk5OCwzNTAwNCwzNDk5OSwzNTAwNSwzNDk5NCwzNTA3MywzNTAxNywzNTIyMSwzNTIyNCwzNTIyMywzNTI5MywzNTI5MCwzNTI5MSwzNTQwNiwzNTQwNSwzNTM4NSwzNTQxNywzNTM5MiwzNTQxNSwzNTQxNiwzNTM5NiwzNTM5NywzNTQxMCwzNTQwMCwzNTQwOSwzNTQwMiwzNTQwNCwzNTQwNywzNTkzNSwzNTk2OSwzNTk2OCwzNjAyNiwzNjAzMCwzNjAxNiwzNjAyNSwzNjAyMSwzNjIyOCwzNjIyNCwzNjIzMywzNjMxMiwzNjMwNywzNjMwMSwzNjI5NSwzNjMxMCwzNjMxNiwzNjMwMywzNjMwOSwzNjMxMywzNjI5NiwzNjMxMSwzNjI5MywzNjU5MSwzNjU5OSwzNjYwMiwzNjYwMSwzNjU4MiwzNjU5MCwzNjU4MSwzNjU5NywzNjU4MywzNjU4NCwzNjU5OCwzNjU4NywzNjU5MywzNjU4OCwzNjU5NiwzNjU4NSwzNjkwOSwzNjkxNiwzNjkxMSwzNzEyNiwzNzE2NCwzNzEyNCwzNzExOSwzNzExNiwzNzEyOCwzNzExMywzNzExNSwzNzEyMSwzNzEyMCwzNzEyNywzNzEyNSwzNzEyMywzNzIxNywzNzIyMCwzNzIxNSwzNzIxOCwzNzIxNiwzNzM3NywzNzM4NiwzNzQxMywzNzM3OSwzNzQwMiwzNzQxNCwzNzM5MSwzNzM4OCwzNzM3NiwzNzM5NCwzNzM3NSwzNzM3MywzNzM4MiwzNzM4MCwzNzQxNSwzNzM3OCwzNzQwNCwzNzQxMiwzNzQwMSwzNzM5OSwzNzM4MSwzNzM5OCwzODI2NywzODI4NSwzODI4NCwzODI4OCwzODUzNSwzODUyNiwzODUzNiwzODUzNywzODUzMSwzODUyOCwzODU5NCwzODYwMCwzODU5NSwzODY0MSwzODY0MCwzODc2NCwzODc2OCwzODc2NiwzODkxOSwzOTA4MSwzOTE0Nyw0MDE2Niw0MDY5NywyMDA5OSwyMDEwMCwyMDE1MCwyMDY2OSwyMDY3MSwyMDY3OCwyMDY1NCwyMDY3NiwyMDY4MiwyMDY2MCwyMDY4MCwyMDY3NCwyMDY1NiwyMDY3MywyMDY2NiwyMDY1NywyMDY4MywyMDY4MSwyMDY2MiwyMDY2NCwyMDk1MSwyMTExNCwyMTExMiwyMTExNSwyMTExNiwyMTk1NSwyMTk3OSwyMTk2NCwyMTk2OCwyMTk2MywyMTk2MiwyMTk4MSwyMTk1MiwyMTk3MiwyMTk1NiwyMTk5MywyMTk1MSwyMTk3MCwyMTkwMSwyMTk2NywyMTk3MywyMTk4NiwyMTk3NCwyMTk2MCwyMjAwMiwyMTk2NSwyMTk3NywyMTk1NCwyMjI5MiwyMjYxMSwyMjYzMiwyMjYyOCwyMjYwNywyMjYwNSwyMjYwMSwyMjYzOSwyMjYxMywyMjYwNiwyMjYyMSwyMjYxNywyMjYyOSwyMjYxOSwyMjU4OSwyMjYyNywyMjY0MSwyMjc4MCwyMzIzOSwyMzIzNiwyMzI0MywyMzIyNiwyMzIyNCwyMzIxNywyMzIyMSwyMzIxNiwyMzIzMSwyMzI0MCwyMzIyNywyMzIzOCwyMzIyMywyMzIzMiwyMzI0MiwyMzIyMCwyMzIyMiwyMzI0NSwyMzIyNSwyMzE4NCwyMzUxMCwyMzUxMiwyMzUxMywyMzU4MywyMzYwMywyMzkyMSwyMzkwNywyMzg4MiwyMzkwOSwyMzkyMiwyMzkxNiwyMzkwMiwyMzkxMiwyMzkxMSwyMzkwNiwyNDA0OCwyNDE0MywyNDE0MiwyNDEzOCwyNDE0MSwyNDEzOSwyNDI2MSwyNDI2OCwyNDI2MiwyNDI2NywyNDI2MywyNDM4NCwyNDQ5NSwyNDQ5MywyNDgyMywyNDkwNSwyNDkwNiwyNDg3NSwyNDkwMSwyNDg4NiwyNDg4MiwyNDg3OCwyNDkwMiwyNDg3OSwyNDkxMSwyNDg3MywyNDg5NiwyNTEyMCwzNzIyNCwyNTEyMywyNTEyNSwyNTEyNCwyNTU0MSwyNTU4NSwyNTU3OSwyNTYxNiwyNTYxOCwyNTYwOSwyNTYzMiwyNTYzNiwyNTY1MSwyNTY2NywyNTYzMSwyNTYyMSwyNTYyNCwyNTY1NywyNTY1NSwyNTYzNCwyNTYzNSwyNTYxMiwyNTYzOCwyNTY0OCwyNTY0MCwyNTY2NSwyNTY1MywyNTY0NywyNTYxMCwyNTYyNiwyNTY2NCwyNTYzNywyNTYzOSwyNTYxMSwyNTU3NSwyNTYyNywyNTY0NiwyNTYzMywyNTYxNCwyNTk2NywyNjAwMiwyNjA2NywyNjI0NiwyNjI1MiwyNjI2MSwyNjI1NiwyNjI1MSwyNjI1MCwyNjI2NSwyNjI2MCwyNjIzMiwyNjQwMCwyNjk4MiwyNjk3NSwyNjkzNiwyNjk1OCwyNjk3OCwyNjk5MywyNjk0MywyNjk0OSwyNjk4NiwyNjkzNywyNjk0NiwyNjk2NywyNjk2OSwyNzAwMiwyNjk1MiwyNjk1MywyNjkzMywyNjk4OCwyNjkzMSwyNjk0MSwyNjk4MSwyNjg2NCwyNzAwMCwyNjkzMiwyNjk4NSwyNjk0NCwyNjk5MSwyNjk0OCwyNjk5OCwyNjk2OCwyNjk0NSwyNjk5NiwyNjk1NiwyNjkzOSwyNjk1NSwyNjkzNSwyNjk3MiwyNjk1OSwyNjk2MSwyNjkzMCwyNjk2MiwyNjkyNywyNzAwMywyNjk0MCwyNzQ2MiwyNzQ2MSwyNzQ1OSwyNzQ1OCwyNzQ2NCwyNzQ1NywyNzU0Nyw2NDAxMywyNzY0MywyNzY0NCwyNzY0MSwyNzYzOSwyNzY0MCwyODMxNSwyODM3NCwyODM2MCwyODMwMywyODM1MiwyODMxOSwyODMwNywyODMwOCwyODMyMCwyODMzNywyODM0NSwyODM1OCwyODM3MCwyODM0OSwyODM1MywyODMxOCwyODM2MSwyODM0MywyODMzNiwyODM2NSwyODMyNiwyODM2NywyODMzOCwyODM1MCwyODM1NSwyODM4MCwyODM3NiwyODMxMywyODMwNiwyODMwMiwyODMwMSwyODMyNCwyODMyMSwyODM1MSwyODMzOSwyODM2OCwyODM2MiwyODMxMSwyODMzNCwyODMyMywyODk5OSwyOTAxMiwyOTAxMCwyOTAyNywyOTAyNCwyODk5MywyOTAyMSwyOTAyNiwyOTA0MiwyOTA0OCwyOTAzNCwyOTAyNSwyODk5NCwyOTAxNiwyODk5NSwyOTAwMywyOTA0MCwyOTAyMywyOTAwOCwyOTAxMSwyODk5NiwyOTAwNSwyOTAxOCwyOTI2MywyOTMyNSwyOTMyNCwyOTMyOSwyOTMyOCwyOTMyNiwyOTUwMCwyOTUwNiwyOTQ5OSwyOTQ5OCwyOTUwNCwyOTUxNCwyOTUxMywyOTc2NCwyOTc3MCwyOTc3MSwyOTc3OCwyOTc3NywyOTc4MywyOTc2MCwyOTc3NSwyOTc3NiwyOTc3NCwyOTc2MiwyOTc2NiwyOTc3MywyOTc4MCwyOTkyMSwyOTk1MSwyOTk1MCwyOTk0OSwyOTk4MSwzMDA3MywzMDA3MSwyNzAxMSwzMDE5MSwzMDIyMywzMDIxMSwzMDE5OSwzMDIwNiwzMDIwNCwzMDIwMSwzMDIwMCwzMDIyNCwzMDIwMywzMDE5OCwzMDE4OSwzMDE5NywzMDIwNSwzMDM2MSwzMDM4OSwzMDQyOSwzMDU0OSwzMDU1OSwzMDU2MCwzMDU0NiwzMDU1MCwzMDU1NCwzMDU2OSwzMDU2NywzMDU0OCwzMDU1MywzMDU3MywzMDY4OCwzMDg1NSwzMDg3NCwzMDg2OCwzMDg2MywzMDg1MiwzMDg2OSwzMDg1MywzMDg1NCwzMDg4MSwzMDg1MSwzMDg0MSwzMDg3MywzMDg0OCwzMDg3MCwzMDg0MywzMTEwMCwzMTEwNiwzMTEwMSwzMTA5NywzMTI0OSwzMTI1NiwzMTI1NywzMTI1MCwzMTI1NSwzMTI1MywzMTI2NiwzMTI1MSwzMTI1OSwzMTI0OCwzMTM5NSwzMTM5NCwzMTM5MCwzMTQ2NywzMTU5MCwzMTU4OCwzMTU5NywzMTYwNCwzMTU5MywzMTYwMiwzMTU4OSwzMTYwMywzMTYwMSwzMTYwMCwzMTU4NSwzMTYwOCwzMTYwNiwzMTU4NywzMTkyMiwzMTkyNCwzMTkxOSwzMjEzNiwzMjEzNCwzMjEyOCwzMjE0MSwzMjEyNywzMjEzMywzMjEyMiwzMjE0MiwzMjEyMywzMjEzMSwzMjEyNCwzMjE0MCwzMjE0OCwzMjEzMiwzMjEyNSwzMjE0NiwzMjYyMSwzMjYxOSwzMjYxNSwzMjYxNiwzMjYyMCwzMjY3OCwzMjY3NywzMjY3OSwzMjczMSwzMjczMiwzMjgwMSwzMzEyNCwzMzEyMCwzMzE0MywzMzExNiwzMzEyOSwzMzExNSwzMzEyMiwzMzEzOCwyNjQwMSwzMzExOCwzMzE0MiwzMzEyNywzMzEzNSwzMzA5MiwzMzEyMSwzMzMwOSwzMzM1MywzMzM0OCwzMzM0NCwzMzM0NiwzMzM0OSwzNDAzMywzMzg1NSwzMzg3OCwzMzkxMCwzMzkxMywzMzkzNSwzMzkzMywzMzg5MywzMzg3MywzMzg1NiwzMzkyNiwzMzg5NSwzMzg0MCwzMzg2OSwzMzkxNywzMzg4MiwzMzg4MSwzMzkwOCwzMzkwNywzMzg4NSwzNDA1NSwzMzg4NiwzMzg0NywzMzg1MCwzMzg0NCwzMzkxNCwzMzg1OSwzMzkxMiwzMzg0MiwzMzg2MSwzMzgzMywzMzc1MywzMzg2NywzMzgzOSwzMzg1OCwzMzgzNywzMzg4NywzMzkwNCwzMzg0OSwzMzg3MCwzMzg2OCwzMzg3NCwzMzkwMywzMzk4OSwzMzkzNCwzMzg1MSwzMzg2MywzMzg0NiwzMzg0MywzMzg5NiwzMzkxOCwzMzg2MCwzMzgzNSwzMzg4OCwzMzg3NiwzMzkwMiwzMzg3MiwzNDU3MSwzNDU2NCwzNDU1MSwzNDU3MiwzNDU1NCwzNDUxOCwzNDU0OSwzNDYzNywzNDU1MiwzNDU3NCwzNDU2OSwzNDU2MSwzNDU1MCwzNDU3MywzNDU2NSwzNTAzMCwzNTAxOSwzNTAyMSwzNTAyMiwzNTAzOCwzNTAzNSwzNTAzNCwzNTAyMCwzNTAyNCwzNTIwNSwzNTIyNywzNTI5NSwzNTMwMSwzNTMwMCwzNTI5NywzNTI5NiwzNTI5OCwzNTI5MiwzNTMwMiwzNTQ0NiwzNTQ2MiwzNTQ1NSwzNTQyNSwzNTM5MSwzNTQ0NywzNTQ1OCwzNTQ2MCwzNTQ0NSwzNTQ1OSwzNTQ1NywzNTQ0NCwzNTQ1MCwzNTkwMCwzNTkxNSwzNTkxNCwzNTk0MSwzNTk0MCwzNTk0MiwzNTk3NCwzNTk3MiwzNTk3MywzNjA0NCwzNjIwMCwzNjIwMSwzNjI0MSwzNjIzNiwzNjIzOCwzNjIzOSwzNjIzNywzNjI0MywzNjI0NCwzNjI0MCwzNjI0MiwzNjMzNiwzNjMyMCwzNjMzMiwzNjMzNywzNjMzNCwzNjMwNCwzNjMyOSwzNjMyMywzNjMyMiwzNjMyNywzNjMzOCwzNjMzMSwzNjM0MCwzNjYxNCwzNjYwNywzNjYwOSwzNjYwOCwzNjYxMywzNjYxNSwzNjYxNiwzNjYxMCwzNjYxOSwzNjk0NiwzNjkyNywzNjkzMiwzNjkzNywzNjkyNSwzNzEzNiwzNzEzMywzNzEzNSwzNzEzNywzNzE0MiwzNzE0MCwzNzEzMSwzNzEzNCwzNzIzMCwzNzIzMSwzNzQ0OCwzNzQ1OCwzNzQyNCwzNzQzNCwzNzQ3OCwzNzQyNywzNzQ3NywzNzQ3MCwzNzUwNywzNzQyMiwzNzQ1MCwzNzQ0NiwzNzQ4NSwzNzQ4NCwzNzQ1NSwzNzQ3MiwzNzQ3OSwzNzQ4NywzNzQzMCwzNzQ3MywzNzQ4OCwzNzQyNSwzNzQ2MCwzNzQ3NSwzNzQ1NiwzNzQ5MCwzNzQ1NCwzNzQ1OSwzNzQ1MiwzNzQ2MiwzNzQyNiwzODMwMywzODMwMCwzODMwMiwzODI5OSwzODU0NiwzODU0NywzODU0NSwzODU1MSwzODYwNiwzODY1MCwzODY1MywzODY0OCwzODY0NSwzODc3MSwzODc3NSwzODc3NiwzODc3MCwzODkyNywzODkyNSwzODkyNiwzOTA4NCwzOTE1OCwzOTE2MSwzOTM0MywzOTM0NiwzOTM0NCwzOTM0OSwzOTU5NywzOTU5NSwzOTc3MSw0MDE3MCw0MDE3Myw0MDE2Nyw0MDU3Niw0MDcwMSwyMDcxMCwyMDY5MiwyMDY5NSwyMDcxMiwyMDcyMywyMDY5OSwyMDcxNCwyMDcwMSwyMDcwOCwyMDY5MSwyMDcxNiwyMDcyMCwyMDcxOSwyMDcwNywyMDcwNCwyMDk1MiwyMTEyMCwyMTEyMSwyMTIyNSwyMTIyNywyMTI5NiwyMTQyMCwyMjA1NSwyMjAzNywyMjAyOCwyMjAzNCwyMjAxMiwyMjAzMSwyMjA0NCwyMjAxNywyMjAzNSwyMjAxOCwyMjAxMCwyMjA0NSwyMjAyMCwyMjAxNSwyMjAwOSwyMjY2NSwyMjY1MiwyMjY3MiwyMjY4MCwyMjY2MiwyMjY1NywyMjY1NSwyMjY0NCwyMjY2NywyMjY1MCwyMjY2MywyMjY3MywyMjY3MCwyMjY0NiwyMjY1OCwyMjY2NCwyMjY1MSwyMjY3NiwyMjY3MSwyMjc4MiwyMjg5MSwyMzI2MCwyMzI3OCwyMzI2OSwyMzI1MywyMzI3NCwyMzI1OCwyMzI3NywyMzI3NSwyMzI4MywyMzI2NiwyMzI2NCwyMzI1OSwyMzI3NiwyMzI2MiwyMzI2MSwyMzI1NywyMzI3MiwyMzI2MywyMzQxNSwyMzUyMCwyMzUyMywyMzY1MSwyMzkzOCwyMzkzNiwyMzkzMywyMzk0MiwyMzkzMCwyMzkzNywyMzkyNywyMzk0NiwyMzk0NSwyMzk0NCwyMzkzNCwyMzkzMiwyMzk0OSwyMzkyOSwyMzkzNSwyNDE1MiwyNDE1MywyNDE0NywyNDI4MCwyNDI3MywyNDI3OSwyNDI3MCwyNDI4NCwyNDI3NywyNDI4MSwyNDI3NCwyNDI3NiwyNDM4OCwyNDM4NywyNDQzMSwyNDUwMiwyNDg3NiwyNDg3MiwyNDg5NywyNDkyNiwyNDk0NSwyNDk0NywyNDkxNCwyNDkxNSwyNDk0NiwyNDk0MCwyNDk2MCwyNDk0OCwyNDkxNiwyNDk1NCwyNDkyMywyNDkzMywyNDg5MSwyNDkzOCwyNDkyOSwyNDkxOCwyNTEyOSwyNTEyNywyNTEzMSwyNTY0MywyNTY3NywyNTY5MSwyNTY5MywyNTcxNiwyNTcxOCwyNTcxNCwyNTcxNSwyNTcyNSwyNTcxNywyNTcwMiwyNTc2NiwyNTY3OCwyNTczMCwyNTY5NCwyNTY5MiwyNTY3NSwyNTY4MywyNTY5NiwyNTY4MCwyNTcyNywyNTY2MywyNTcwOCwyNTcwNywyNTY4OSwyNTcwMSwyNTcxOSwyNTk3MSwyNjAxNiwyNjI3MywyNjI3MiwyNjI3MSwyNjM3MywyNjM3MiwyNjQwMiwyNzA1NywyNzA2MiwyNzA4MSwyNzA0MCwyNzA4NiwyNzAzMCwyNzA1NiwyNzA1MiwyNzA2OCwyNzAyNSwyNzAzMywyNzAyMiwyNzA0NywyNzAyMSwyNzA0OSwyNzA3MCwyNzA1NSwyNzA3MSwyNzA3NiwyNzA2OSwyNzA0NCwyNzA5MiwyNzA2NSwyNzA4MiwyNzAzNCwyNzA4NywyNzA1OSwyNzAyNywyNzA1MCwyNzA0MSwyNzAzOCwyNzA5NywyNzAzMSwyNzAyNCwyNzA3NCwyNzA2MSwyNzA0NSwyNzA3OCwyNzQ2NiwyNzQ2OSwyNzQ2NywyNzU1MCwyNzU1MSwyNzU1MiwyNzU4NywyNzU4OCwyNzY0NiwyODM2NiwyODQwNSwyODQwMSwyODQxOSwyODQ1MywyODQwOCwyODQ3MSwyODQxMSwyODQ2MiwyODQyNSwyODQ5NCwyODQ0MSwyODQ0MiwyODQ1NSwyODQ0MCwyODQ3NSwyODQzNCwyODM5NywyODQyNiwyODQ3MCwyODUzMSwyODQwOSwyODM5OCwyODQ2MSwyODQ4MCwyODQ2NCwyODQ3NiwyODQ2OSwyODM5NSwyODQyMywyODQzMCwyODQ4MywyODQyMSwyODQxMywyODQwNiwyODQ3MywyODQ0NCwyODQxMiwyODQ3NCwyODQ0NywyODQyOSwyODQ0NiwyODQyNCwyODQ0OSwyOTA2MywyOTA3MiwyOTA2NSwyOTA1NiwyOTA2MSwyOTA1OCwyOTA3MSwyOTA1MSwyOTA2MiwyOTA1NywyOTA3OSwyOTI1MiwyOTI2NywyOTMzNSwyOTMzMywyOTMzMSwyOTUwNywyOTUxNywyOTUyMSwyOTUxNiwyOTc5NCwyOTgxMSwyOTgwOSwyOTgxMywyOTgxMCwyOTc5OSwyOTgwNiwyOTk1MiwyOTk1NCwyOTk1NSwzMDA3NywzMDA5NiwzMDIzMCwzMDIxNiwzMDIyMCwzMDIyOSwzMDIyNSwzMDIxOCwzMDIyOCwzMDM5MiwzMDU5MywzMDU4OCwzMDU5NywzMDU5NCwzMDU3NCwzMDU5MiwzMDU3NSwzMDU5MCwzMDU5NSwzMDg5OCwzMDg5MCwzMDkwMCwzMDg5MywzMDg4OCwzMDg0NiwzMDg5MSwzMDg3OCwzMDg4NSwzMDg4MCwzMDg5MiwzMDg4MiwzMDg4NCwzMTEyOCwzMTExNCwzMTExNSwzMTEyNiwzMTEyNSwzMTEyNCwzMTEyMywzMTEyNywzMTExMiwzMTEyMiwzMTEyMCwzMTI3NSwzMTMwNiwzMTI4MCwzMTI3OSwzMTI3MiwzMTI3MCwzMTQwMCwzMTQwMywzMTQwNCwzMTQ3MCwzMTYyNCwzMTY0NCwzMTYyNiwzMTYzMywzMTYzMiwzMTYzOCwzMTYyOSwzMTYyOCwzMTY0MywzMTYzMCwzMTYyMSwzMTY0MCwyMTEyNCwzMTY0MSwzMTY1MiwzMTYxOCwzMTkzMSwzMTkzNSwzMTkzMiwzMTkzMCwzMjE2NywzMjE4MywzMjE5NCwzMjE2MywzMjE3MCwzMjE5MywzMjE5MiwzMjE5NywzMjE1NywzMjIwNiwzMjE5NiwzMjE5OCwzMjIwMywzMjIwNCwzMjE3NSwzMjE4NSwzMjE1MCwzMjE4OCwzMjE1OSwzMjE2NiwzMjE3NCwzMjE2OSwzMjE2MSwzMjIwMSwzMjYyNywzMjczOCwzMjczOSwzMjc0MSwzMjczNCwzMjgwNCwzMjg2MSwzMjg2MCwzMzE2MSwzMzE1OCwzMzE1NSwzMzE1OSwzMzE2NSwzMzE2NCwzMzE2MywzMzMwMSwzMzk0MywzMzk1NiwzMzk1MywzMzk1MSwzMzk3OCwzMzk5OCwzMzk4NiwzMzk2NCwzMzk2NiwzMzk2MywzMzk3NywzMzk3MiwzMzk4NSwzMzk5NywzMzk2MiwzMzk0NiwzMzk2OSwzNDAwMCwzMzk0OSwzMzk1OSwzMzk3OSwzMzk1NCwzMzk0MCwzMzk5MSwzMzk5NiwzMzk0NywzMzk2MSwzMzk2NywzMzk2MCwzNDAwNiwzMzk0NCwzMzk3NCwzMzk5OSwzMzk1MiwzNDAwNywzNDAwNCwzNDAwMiwzNDAxMSwzMzk2OCwzMzkzNywzNDQwMSwzNDYxMSwzNDU5NSwzNDYwMCwzNDY2NywzNDYyNCwzNDYwNiwzNDU5MCwzNDU5MywzNDU4NSwzNDU4NywzNDYyNywzNDYwNCwzNDYyNSwzNDYyMiwzNDYzMCwzNDU5MiwzNDYxMCwzNDYwMiwzNDYwNSwzNDYyMCwzNDU3OCwzNDYxOCwzNDYwOSwzNDYxMywzNDYyNiwzNDU5OCwzNDU5OSwzNDYxNiwzNDU5NiwzNDU4NiwzNDYwOCwzNDU3NywzNTA2MywzNTA0NywzNTA1NywzNTA1OCwzNTA2NiwzNTA3MCwzNTA1NCwzNTA2OCwzNTA2MiwzNTA2NywzNTA1NiwzNTA1MiwzNTA1MSwzNTIyOSwzNTIzMywzNTIzMSwzNTIzMCwzNTMwNSwzNTMwNywzNTMwNCwzNTQ5OSwzNTQ4MSwzNTQ2NywzNTQ3NCwzNTQ3MSwzNTQ3OCwzNTkwMSwzNTk0NCwzNTk0NSwzNjA1MywzNjA0NywzNjA1NSwzNjI0NiwzNjM2MSwzNjM1NCwzNjM1MSwzNjM2NSwzNjM0OSwzNjM2MiwzNjM1NSwzNjM1OSwzNjM1OCwzNjM1NywzNjM1MCwzNjM1MiwzNjM1NiwzNjYyNCwzNjYyNSwzNjYyMiwzNjYyMSwzNzE1NSwzNzE0OCwzNzE1MiwzNzE1NCwzNzE1MSwzNzE0OSwzNzE0NiwzNzE1NiwzNzE1MywzNzE0NywzNzI0MiwzNzIzNCwzNzI0MSwzNzIzNSwzNzU0MSwzNzU0MCwzNzQ5NCwzNzUzMSwzNzQ5OCwzNzUzNiwzNzUyNCwzNzU0NiwzNzUxNywzNzU0MiwzNzUzMCwzNzU0NywzNzQ5NywzNzUyNywzNzUwMywzNzUzOSwzNzYxNCwzNzUxOCwzNzUwNiwzNzUyNSwzNzUzOCwzNzUwMSwzNzUxMiwzNzUzNywzNzUxNCwzNzUxMCwzNzUxNiwzNzUyOSwzNzU0MywzNzUwMiwzNzUxMSwzNzU0NSwzNzUzMywzNzUxNSwzNzQyMSwzODU1OCwzODU2MSwzODY1NSwzODc0NCwzODc4MSwzODc3OCwzODc4MiwzODc4NywzODc4NCwzODc4NiwzODc3OSwzODc4OCwzODc4NSwzODc4MywzODg2MiwzODg2MSwzODkzNCwzOTA4NSwzOTA4NiwzOTE3MCwzOTE2OCwzOTE3NSwzOTMyNSwzOTMyNCwzOTM2MywzOTM1MywzOTM1NSwzOTM1NCwzOTM2MiwzOTM1NywzOTM2NywzOTYwMSwzOTY1MSwzOTY1NSwzOTc0MiwzOTc0MywzOTc3NiwzOTc3NywzOTc3NSw0MDE3Nyw0MDE3OCw0MDE4MSw0MDYxNSwyMDczNSwyMDczOSwyMDc4NCwyMDcyOCwyMDc0MiwyMDc0MywyMDcyNiwyMDczNCwyMDc0NywyMDc0OCwyMDczMywyMDc0NiwyMTEzMSwyMTEzMiwyMTIzMywyMTIzMSwyMjA4OCwyMjA4MiwyMjA5MiwyMjA2OSwyMjA4MSwyMjA5MCwyMjA4OSwyMjA4NiwyMjEwNCwyMjEwNiwyMjA4MCwyMjA2NywyMjA3NywyMjA2MCwyMjA3OCwyMjA3MiwyMjA1OCwyMjA3NCwyMjI5OCwyMjY5OSwyMjY4NSwyMjcwNSwyMjY4OCwyMjY5MSwyMjcwMywyMjcwMCwyMjY5MywyMjY4OSwyMjc4MywyMzI5NSwyMzI4NCwyMzI5MywyMzI4NywyMzI4NiwyMzI5OSwyMzI4OCwyMzI5OCwyMzI4OSwyMzI5NywyMzMwMywyMzMwMSwyMzMxMSwyMzY1NSwyMzk2MSwyMzk1OSwyMzk2NywyMzk1NCwyMzk3MCwyMzk1NSwyMzk1NywyMzk2OCwyMzk2NCwyMzk2OSwyMzk2MiwyMzk2NiwyNDE2OSwyNDE1NywyNDE2MCwyNDE1NiwzMjI0MywyNDI4MywyNDI4NiwyNDI4OSwyNDM5MywyNDQ5OCwyNDk3MSwyNDk2MywyNDk1MywyNTAwOSwyNTAwOCwyNDk5NCwyNDk2OSwyNDk4NywyNDk3OSwyNTAwNywyNTAwNSwyNDk5MSwyNDk3OCwyNTAwMiwyNDk5MywyNDk3MywyNDkzNCwyNTAxMSwyNTEzMywyNTcxMCwyNTcxMiwyNTc1MCwyNTc2MCwyNTczMywyNTc1MSwyNTc1NiwyNTc0MywyNTczOSwyNTczOCwyNTc0MCwyNTc2MywyNTc1OSwyNTcwNCwyNTc3NywyNTc1MiwyNTk3NCwyNTk3OCwyNTk3NywyNTk3OSwyNjAzNCwyNjAzNSwyNjI5MywyNjI4OCwyNjI4MSwyNjI5MCwyNjI5NSwyNjI4MiwyNjI4NywyNzEzNiwyNzE0MiwyNzE1OSwyNzEwOSwyNzEyOCwyNzE1NywyNzEyMSwyNzEwOCwyNzE2OCwyNzEzNSwyNzExNiwyNzEwNiwyNzE2MywyNzE2NSwyNzEzNCwyNzE3NSwyNzEyMiwyNzExOCwyNzE1NiwyNzEyNywyNzExMSwyNzIwMCwyNzE0NCwyNzExMCwyNzEzMSwyNzE0OSwyNzEzMiwyNzExNSwyNzE0NSwyNzE0MCwyNzE2MCwyNzE3MywyNzE1MSwyNzEyNiwyNzE3NCwyNzE0MywyNzEyNCwyNzE1OCwyNzQ3MywyNzU1NywyNzU1NSwyNzU1NCwyNzU1OCwyNzY0OSwyNzY0OCwyNzY0NywyNzY1MCwyODQ4MSwyODQ1NCwyODU0MiwyODU1MSwyODYxNCwyODU2MiwyODU1NywyODU1MywyODU1NiwyODUxNCwyODQ5NSwyODU0OSwyODUwNiwyODU2NiwyODUzNCwyODUyNCwyODU0NiwyODUwMSwyODUzMCwyODQ5OCwyODQ5NiwyODUwMywyODU2NCwyODU2MywyODUwOSwyODQxNiwyODUxMywyODUyMywyODU0MSwyODUxOSwyODU2MCwyODQ5OSwyODU1NSwyODUyMSwyODU0MywyODU2NSwyODUxNSwyODUzNSwyODUyMiwyODUzOSwyOTEwNiwyOTEwMywyOTA4MywyOTEwNCwyOTA4OCwyOTA4MiwyOTA5NywyOTEwOSwyOTA4NSwyOTA5MywyOTA4NiwyOTA5MiwyOTA4OSwyOTA5OCwyOTA4NCwyOTA5NSwyOTEwNywyOTMzNiwyOTMzOCwyOTUyOCwyOTUyMiwyOTUzNCwyOTUzNSwyOTUzNiwyOTUzMywyOTUzMSwyOTUzNywyOTUzMCwyOTUyOSwyOTUzOCwyOTgzMSwyOTgzMywyOTgzNCwyOTgzMCwyOTgyNSwyOTgyMSwyOTgyOSwyOTgzMiwyOTgyMCwyOTgxNywyOTk2MCwyOTk1OSwzMDA3OCwzMDI0NSwzMDIzOCwzMDIzMywzMDIzNywzMDIzNiwzMDI0MywzMDIzNCwzMDI0OCwzMDIzNSwzMDM2NCwzMDM2NSwzMDM2NiwzMDM2MywzMDYwNSwzMDYwNywzMDYwMSwzMDYwMCwzMDkyNSwzMDkwNywzMDkyNywzMDkyNCwzMDkyOSwzMDkyNiwzMDkzMiwzMDkyMCwzMDkxNSwzMDkxNiwzMDkyMSwzMTEzMCwzMTEzNywzMTEzNiwzMTEzMiwzMTEzOCwzMTEzMSwyNzUxMCwzMTI4OSwzMTQxMCwzMTQxMiwzMTQxMSwzMTY3MSwzMTY5MSwzMTY3OCwzMTY2MCwzMTY5NCwzMTY2MywzMTY3MywzMTY5MCwzMTY2OSwzMTk0MSwzMTk0NCwzMTk0OCwzMTk0NywzMjI0NywzMjIxOSwzMjIzNCwzMjIzMSwzMjIxNSwzMjIyNSwzMjI1OSwzMjI1MCwzMjIzMCwzMjI0NiwzMjI0MSwzMjI0MCwzMjIzOCwzMjIyMywzMjYzMCwzMjY4NCwzMjY4OCwzMjY4NSwzMjc0OSwzMjc0NywzMjc0NiwzMjc0OCwzMjc0MiwzMjc0NCwzMjg2OCwzMjg3MSwzMzE4NywzMzE4MywzMzE4MiwzMzE3MywzMzE4NiwzMzE3NywzMzE3NSwzMzMwMiwzMzM1OSwzMzM2MywzMzM2MiwzMzM2MCwzMzM1OCwzMzM2MSwzNDA4NCwzNDEwNywzNDA2MywzNDA0OCwzNDA4OSwzNDA2MiwzNDA1NywzNDA2MSwzNDA3OSwzNDA1OCwzNDA4NywzNDA3NiwzNDA0MywzNDA5MSwzNDA0MiwzNDA1NiwzNDA2MCwzNDAzNiwzNDA5MCwzNDAzNCwzNDA2OSwzNDAzOSwzNDAyNywzNDAzNSwzNDA0NCwzNDA2NiwzNDAyNiwzNDAyNSwzNDA3MCwzNDA0NiwzNDA4OCwzNDA3NywzNDA5NCwzNDA1MCwzNDA0NSwzNDA3OCwzNDAzOCwzNDA5NywzNDA4NiwzNDAyMywzNDAyNCwzNDAzMiwzNDAzMSwzNDA0MSwzNDA3MiwzNDA4MCwzNDA5NiwzNDA1OSwzNDA3MywzNDA5NSwzNDQwMiwzNDY0NiwzNDY1OSwzNDY2MCwzNDY3OSwzNDc4NSwzNDY3NSwzNDY0OCwzNDY0NCwzNDY1MSwzNDY0MiwzNDY1NywzNDY1MCwzNDY0MSwzNDY1NCwzNDY2OSwzNDY2NiwzNDY0MCwzNDYzOCwzNDY1NSwzNDY1MywzNDY3MSwzNDY2OCwzNDY4MiwzNDY3MCwzNDY1MiwzNDY2MSwzNDYzOSwzNDY4MywzNDY3NywzNDY1OCwzNDY2MywzNDY2NSwzNDkwNiwzNTA3NywzNTA4NCwzNTA5MiwzNTA4MywzNTA5NSwzNTA5NiwzNTA5NywzNTA3OCwzNTA5NCwzNTA4OSwzNTA4NiwzNTA4MSwzNTIzNCwzNTIzNiwzNTIzNSwzNTMwOSwzNTMxMiwzNTMwOCwzNTUzNSwzNTUyNiwzNTUxMiwzNTUzOSwzNTUzNywzNTU0MCwzNTU0MSwzNTUxNSwzNTU0MywzNTUxOCwzNTUyMCwzNTUyNSwzNTU0NCwzNTUyMywzNTUxNCwzNTUxNywzNTU0NSwzNTkwMiwzNTkxNywzNTk4MywzNjA2OSwzNjA2MywzNjA1NywzNjA3MiwzNjA1OCwzNjA2MSwzNjA3MSwzNjI1NiwzNjI1MiwzNjI1NywzNjI1MSwzNjM4NCwzNjM4NywzNjM4OSwzNjM4OCwzNjM5OCwzNjM3MywzNjM3OSwzNjM3NCwzNjM2OSwzNjM3NywzNjM5MCwzNjM5MSwzNjM3MiwzNjM3MCwzNjM3NiwzNjM3MSwzNjM4MCwzNjM3NSwzNjM3OCwzNjY1MiwzNjY0NCwzNjYzMiwzNjYzNCwzNjY0MCwzNjY0MywzNjYzMCwzNjYzMSwzNjk3OSwzNjk3NiwzNjk3NSwzNjk2NywzNjk3MSwzNzE2NywzNzE2MywzNzE2MSwzNzE2MiwzNzE3MCwzNzE1OCwzNzE2NiwzNzI1MywzNzI1NCwzNzI1OCwzNzI0OSwzNzI1MCwzNzI1MiwzNzI0OCwzNzU4NCwzNzU3MSwzNzU3MiwzNzU2OCwzNzU5MywzNzU1OCwzNzU4MywzNzYxNywzNzU5OSwzNzU5MiwzNzYwOSwzNzU5MSwzNzU5NywzNzU4MCwzNzYxNSwzNzU3MCwzNzYwOCwzNzU3OCwzNzU3NiwzNzU4MiwzNzYwNiwzNzU4MSwzNzU4OSwzNzU3NywzNzYwMCwzNzU5OCwzNzYwNywzNzU4NSwzNzU4NywzNzU1NywzNzYwMSwzNzU3NCwzNzU1NiwzODI2OCwzODMxNiwzODMxNSwzODMxOCwzODMyMCwzODU2NCwzODU2MiwzODYxMSwzODY2MSwzODY2NCwzODY1OCwzODc0NiwzODc5NCwzODc5OCwzODc5MiwzODg2NCwzODg2MywzODk0MiwzODk0MSwzODk1MCwzODk1MywzODk1MiwzODk0NCwzODkzOSwzODk1MSwzOTA5MCwzOTE3NiwzOTE2MiwzOTE4NSwzOTE4OCwzOTE5MCwzOTE5MSwzOTE4OSwzOTM4OCwzOTM3MywzOTM3NSwzOTM3OSwzOTM4MCwzOTM3NCwzOTM2OSwzOTM4MiwzOTM4NCwzOTM3MSwzOTM4MywzOTM3MiwzOTYwMywzOTY2MCwzOTY1OSwzOTY2NywzOTY2NiwzOTY2NSwzOTc1MCwzOTc0NywzOTc4MywzOTc5NiwzOTc5MywzOTc4MiwzOTc5OCwzOTc5NywzOTc5MiwzOTc4NCwzOTc4MCwzOTc4OCw0MDE4OCw0MDE4Niw0MDE4OSw0MDE5MSw0MDE4Myw0MDE5OSw0MDE5Miw0MDE4NSw0MDE4Nyw0MDIwMCw0MDE5Nyw0MDE5Niw0MDU3OSw0MDY1OSw0MDcxOSw0MDcyMCwyMDc2NCwyMDc1NSwyMDc1OSwyMDc2MiwyMDc1MywyMDk1OCwyMTMwMCwyMTQ3MywyMjEyOCwyMjExMiwyMjEyNiwyMjEzMSwyMjExOCwyMjExNSwyMjEyNSwyMjEzMCwyMjExMCwyMjEzNSwyMjMwMCwyMjI5OSwyMjcyOCwyMjcxNywyMjcyOSwyMjcxOSwyMjcxNCwyMjcyMiwyMjcxNiwyMjcyNiwyMzMxOSwyMzMyMSwyMzMyMywyMzMyOSwyMzMxNiwyMzMxNSwyMzMxMiwyMzMxOCwyMzMzNiwyMzMyMiwyMzMyOCwyMzMyNiwyMzUzNSwyMzk4MCwyMzk4NSwyMzk3NywyMzk3NSwyMzk4OSwyMzk4NCwyMzk4MiwyMzk3OCwyMzk3NiwyMzk4NiwyMzk4MSwyMzk4MywyMzk4OCwyNDE2NywyNDE2OCwyNDE2NiwyNDE3NSwyNDI5NywyNDI5NSwyNDI5NCwyNDI5NiwyNDI5MywyNDM5NSwyNDUwOCwyNDk4OSwyNTAwMCwyNDk4MiwyNTAyOSwyNTAxMiwyNTAzMCwyNTAyNSwyNTAzNiwyNTAxOCwyNTAyMywyNTAxNiwyNDk3MiwyNTgxNSwyNTgxNCwyNTgwOCwyNTgwNywyNTgwMSwyNTc4OSwyNTczNywyNTc5NSwyNTgxOSwyNTg0MywyNTgxNywyNTkwNywyNTk4MywyNTk4MCwyNjAxOCwyNjMxMiwyNjMwMiwyNjMwNCwyNjMxNCwyNjMxNSwyNjMxOSwyNjMwMSwyNjI5OSwyNjI5OCwyNjMxNiwyNjQwMywyNzE4OCwyNzIzOCwyNzIwOSwyNzIzOSwyNzE4NiwyNzI0MCwyNzE5OCwyNzIyOSwyNzI0NSwyNzI1NCwyNzIyNywyNzIxNywyNzE3NiwyNzIyNiwyNzE5NSwyNzE5OSwyNzIwMSwyNzI0MiwyNzIzNiwyNzIxNiwyNzIxNSwyNzIyMCwyNzI0NywyNzI0MSwyNzIzMiwyNzE5NiwyNzIzMCwyNzIyMiwyNzIyMSwyNzIxMywyNzIxNCwyNzIwNiwyNzQ3NywyNzQ3NiwyNzQ3OCwyNzU1OSwyNzU2MiwyNzU2MywyNzU5MiwyNzU5MSwyNzY1MiwyNzY1MSwyNzY1NCwyODU4OSwyODYxOSwyODU3OSwyODYxNSwyODYwNCwyODYyMiwyODYxNiwyODUxMCwyODYxMiwyODYwNSwyODU3NCwyODYxOCwyODU4NCwyODY3NiwyODU4MSwyODU5MCwyODYwMiwyODU4OCwyODU4NiwyODYyMywyODYwNywyODYwMCwyODU3OCwyODYxNywyODU4NywyODYyMSwyODU5MSwyODU5NCwyODU5MiwyOTEyNSwyOTEyMiwyOTExOSwyOTExMiwyOTE0MiwyOTEyMCwyOTEyMSwyOTEzMSwyOTE0MCwyOTEzMCwyOTEyNywyOTEzNSwyOTExNywyOTE0NCwyOTExNiwyOTEyNiwyOTE0NiwyOTE0NywyOTM0MSwyOTM0MiwyOTU0NSwyOTU0MiwyOTU0MywyOTU0OCwyOTU0MSwyOTU0NywyOTU0NiwyOTgyMywyOTg1MCwyOTg1NiwyOTg0NCwyOTg0MiwyOTg0NSwyOTg1NywyOTk2MywzMDA4MCwzMDI1NSwzMDI1MywzMDI1NywzMDI2OSwzMDI1OSwzMDI2OCwzMDI2MSwzMDI1OCwzMDI1NiwzMDM5NSwzMDQzOCwzMDYxOCwzMDYyMSwzMDYyNSwzMDYyMCwzMDYxOSwzMDYyNiwzMDYyNywzMDYxMywzMDYxNywzMDYxNSwzMDk0MSwzMDk1MywzMDk0OSwzMDk1NCwzMDk0MiwzMDk0NywzMDkzOSwzMDk0NSwzMDk0NiwzMDk1NywzMDk0MywzMDk0NCwzMTE0MCwzMTMwMCwzMTMwNCwzMTMwMywzMTQxNCwzMTQxNiwzMTQxMywzMTQwOSwzMTQxNSwzMTcxMCwzMTcxNSwzMTcxOSwzMTcwOSwzMTcwMSwzMTcxNywzMTcwNiwzMTcyMCwzMTczNywzMTcwMCwzMTcyMiwzMTcxNCwzMTcwOCwzMTcyMywzMTcwNCwzMTcxMSwzMTk1NCwzMTk1NiwzMTk1OSwzMTk1MiwzMTk1MywzMjI3NCwzMjI4OSwzMjI3OSwzMjI2OCwzMjI4NywzMjI4OCwzMjI3NSwzMjI3MCwzMjI4NCwzMjI3NywzMjI4MiwzMjI5MCwzMjI2NywzMjI3MSwzMjI3OCwzMjI2OSwzMjI3NiwzMjI5MywzMjI5MiwzMjU3OSwzMjYzNSwzMjYzNiwzMjYzNCwzMjY4OSwzMjc1MSwzMjgxMCwzMjgwOSwzMjg3NiwzMzIwMSwzMzE5MCwzMzE5OCwzMzIwOSwzMzIwNSwzMzE5NSwzMzIwMCwzMzE5NiwzMzIwNCwzMzIwMiwzMzIwNywzMzE5MSwzMzI2NiwzMzM2NSwzMzM2NiwzMzM2NywzNDEzNCwzNDExNywzNDE1NSwzNDEyNSwzNDEzMSwzNDE0NSwzNDEzNiwzNDExMiwzNDExOCwzNDE0OCwzNDExMywzNDE0NiwzNDExNiwzNDEyOSwzNDExOSwzNDE0NywzNDExMCwzNDEzOSwzNDE2MSwzNDEyNiwzNDE1OCwzNDE2NSwzNDEzMywzNDE1MSwzNDE0NCwzNDE4OCwzNDE1MCwzNDE0MSwzNDEzMiwzNDE0OSwzNDE1NiwzNDQwMywzNDQwNSwzNDQwNCwzNDcxNSwzNDcwMywzNDcxMSwzNDcwNywzNDcwNiwzNDY5NiwzNDY4OSwzNDcxMCwzNDcxMiwzNDY4MSwzNDY5NSwzNDcyMywzNDY5MywzNDcwNCwzNDcwNSwzNDcxNywzNDY5MiwzNDcwOCwzNDcxNiwzNDcxNCwzNDY5NywzNTEwMiwzNTExMCwzNTEyMCwzNTExNywzNTExOCwzNTExMSwzNTEyMSwzNTEwNiwzNTExMywzNTEwNywzNTExOSwzNTExNiwzNTEwMywzNTMxMywzNTU1MiwzNTU1NCwzNTU3MCwzNTU3MiwzNTU3MywzNTU0OSwzNTYwNCwzNTU1NiwzNTU1MSwzNTU2OCwzNTUyOCwzNTU1MCwzNTU1MywzNTU2MCwzNTU4MywzNTU2NywzNTU3OSwzNTk4NSwzNTk4NiwzNTk4NCwzNjA4NSwzNjA3OCwzNjA4MSwzNjA4MCwzNjA4MywzNjIwNCwzNjIwNiwzNjI2MSwzNjI2MywzNjQwMywzNjQxNCwzNjQwOCwzNjQxNiwzNjQyMSwzNjQwNiwzNjQxMiwzNjQxMywzNjQxNywzNjQwMCwzNjQxNSwzNjU0MSwzNjY2MiwzNjY1NCwzNjY2MSwzNjY1OCwzNjY2NSwzNjY2MywzNjY2MCwzNjk4MiwzNjk4NSwzNjk4NywzNjk5OCwzNzExNCwzNzE3MSwzNzE3MywzNzE3NCwzNzI2NywzNzI2NCwzNzI2NSwzNzI2MSwzNzI2MywzNzY3MSwzNzY2MiwzNzY0MCwzNzY2MywzNzYzOCwzNzY0NywzNzc1NCwzNzY4OCwzNzY5MiwzNzY1OSwzNzY2NywzNzY1MCwzNzYzMywzNzcwMiwzNzY3NywzNzY0NiwzNzY0NSwzNzU3OSwzNzY2MSwzNzYyNiwzNzY2OSwzNzY1MSwzNzYyNSwzNzYyMywzNzY4NCwzNzYzNCwzNzY2OCwzNzYzMSwzNzY3MywzNzY4OSwzNzY4NSwzNzY3NCwzNzY1MiwzNzY0NCwzNzY0MywzNzYzMCwzNzY0MSwzNzYzMiwzNzYyNywzNzY1NCwzODMzMiwzODM0OSwzODMzNCwzODMyOSwzODMzMCwzODMyNiwzODMzNSwzODMyNSwzODMzMywzODU2OSwzODYxMiwzODY2NywzODY3NCwzODY3MiwzODgwOSwzODgwNywzODgwNCwzODg5NiwzODkwNCwzODk2NSwzODk1OSwzODk2MiwzOTIwNCwzOTE5OSwzOTIwNywzOTIwOSwzOTMyNiwzOTQwNiwzOTQwNCwzOTM5NywzOTM5NiwzOTQwOCwzOTM5NSwzOTQwMiwzOTQwMSwzOTM5OSwzOTYwOSwzOTYxNSwzOTYwNCwzOTYxMSwzOTY3MCwzOTY3NCwzOTY3MywzOTY3MSwzOTczMSwzOTgwOCwzOTgxMywzOTgxNSwzOTgwNCwzOTgwNiwzOTgwMywzOTgxMCwzOTgyNywzOTgyNiwzOTgyNCwzOTgwMiwzOTgyOSwzOTgwNSwzOTgxNiw0MDIyOSw0MDIxNSw0MDIyNCw0MDIyMiw0MDIxMiw0MDIzMyw0MDIyMSw0MDIxNiw0MDIyNiw0MDIwOCw0MDIxNyw0MDIyMyw0MDU4NCw0MDU4Miw0MDU4Myw0MDYyMiw0MDYyMSw0MDY2MSw0MDY2Miw0MDY5OCw0MDcyMiw0MDc2NSwyMDc3NCwyMDc3MywyMDc3MCwyMDc3MiwyMDc2OCwyMDc3NywyMTIzNiwyMjE2MywyMjE1NiwyMjE1NywyMjE1MCwyMjE0OCwyMjE0NywyMjE0MiwyMjE0NiwyMjE0MywyMjE0NSwyMjc0MiwyMjc0MCwyMjczNSwyMjczOCwyMzM0MSwyMzMzMywyMzM0NiwyMzMzMSwyMzM0MCwyMzMzNSwyMzMzNCwyMzM0MywyMzM0MiwyMzQxOSwyMzUzNywyMzUzOCwyMzk5MSwyNDE3MiwyNDE3MCwyNDUxMCwyNDUwNywyNTAyNywyNTAxMywyNTAyMCwyNTA2MywyNTA1NiwyNTA2MSwyNTA2MCwyNTA2NCwyNTA1NCwyNTgzOSwyNTgzMywyNTgyNywyNTgzNSwyNTgyOCwyNTgzMiwyNTk4NSwyNTk4NCwyNjAzOCwyNjA3NCwyNjMyMiwyNzI3NywyNzI4NiwyNzI2NSwyNzMwMSwyNzI3MywyNzI5NSwyNzI5MSwyNzI5NywyNzI5NCwyNzI3MSwyNzI4MywyNzI3OCwyNzI4NSwyNzI2NywyNzMwNCwyNzMwMCwyNzI4MSwyNzI2MywyNzMwMiwyNzI5MCwyNzI2OSwyNzI3NiwyNzI4MiwyNzQ4MywyNzU2NSwyNzY1NywyODYyMCwyODU4NSwyODY2MCwyODYyOCwyODY0MywyODYzNiwyODY1MywyODY0NywyODY0NiwyODYzOCwyODY1OCwyODYzNywyODY0MiwyODY0OCwyOTE1MywyOTE2OSwyOTE2MCwyOTE3MCwyOTE1NiwyOTE2OCwyOTE1NCwyOTU1NSwyOTU1MCwyOTU1MSwyOTg0NywyOTg3NCwyOTg2NywyOTg0MCwyOTg2NiwyOTg2OSwyOTg3MywyOTg2MSwyOTg3MSwyOTk2OCwyOTk2OSwyOTk3MCwyOTk2NywzMDA4NCwzMDI3NSwzMDI4MCwzMDI4MSwzMDI3OSwzMDM3MiwzMDQ0MSwzMDY0NSwzMDYzNSwzMDY0MiwzMDY0NywzMDY0NiwzMDY0NCwzMDY0MSwzMDYzMiwzMDcwNCwzMDk2MywzMDk3MywzMDk3OCwzMDk3MSwzMDk3MiwzMDk2MiwzMDk4MSwzMDk2OSwzMDk3NCwzMDk4MCwzMTE0NywzMTE0NCwzMTMyNCwzMTMyMywzMTMxOCwzMTMyMCwzMTMxNiwzMTMyMiwzMTQyMiwzMTQyNCwzMTQyNSwzMTc0OSwzMTc1OSwzMTczMCwzMTc0NCwzMTc0MywzMTczOSwzMTc1OCwzMTczMiwzMTc1NSwzMTczMSwzMTc0NiwzMTc1MywzMTc0NywzMTc0NSwzMTczNiwzMTc0MSwzMTc1MCwzMTcyOCwzMTcyOSwzMTc2MCwzMTc1NCwzMTk3NiwzMjMwMSwzMjMxNiwzMjMyMiwzMjMwNywzODk4NCwzMjMxMiwzMjI5OCwzMjMyOSwzMjMyMCwzMjMyNywzMjI5NywzMjMzMiwzMjMwNCwzMjMxNSwzMjMxMCwzMjMyNCwzMjMxNCwzMjU4MSwzMjYzOSwzMjYzOCwzMjYzNywzMjc1NiwzMjc1NCwzMjgxMiwzMzIxMSwzMzIyMCwzMzIyOCwzMzIyNiwzMzIyMSwzMzIyMywzMzIxMiwzMzI1NywzMzM3MSwzMzM3MCwzMzM3MiwzNDE3OSwzNDE3NiwzNDE5MSwzNDIxNSwzNDE5NywzNDIwOCwzNDE4NywzNDIxMSwzNDE3MSwzNDIxMiwzNDIwMiwzNDIwNiwzNDE2NywzNDE3MiwzNDE4NSwzNDIwOSwzNDE3MCwzNDE2OCwzNDEzNSwzNDE5MCwzNDE5OCwzNDE4MiwzNDE4OSwzNDIwMSwzNDIwNSwzNDE3NywzNDIxMCwzNDE3OCwzNDE4NCwzNDE4MSwzNDE2OSwzNDE2NiwzNDIwMCwzNDE5MiwzNDIwNywzNDQwOCwzNDc1MCwzNDczMCwzNDczMywzNDc1NywzNDczNiwzNDczMiwzNDc0NSwzNDc0MSwzNDc0OCwzNDczNCwzNDc2MSwzNDc1NSwzNDc1NCwzNDc2NCwzNDc0MywzNDczNSwzNDc1NiwzNDc2MiwzNDc0MCwzNDc0MiwzNDc1MSwzNDc0NCwzNDc0OSwzNDc4MiwzNDczOCwzNTEyNSwzNTEyMywzNTEzMiwzNTEzNCwzNTEzNywzNTE1NCwzNTEyNywzNTEzOCwzNTI0NSwzNTI0NywzNTI0NiwzNTMxNCwzNTMxNSwzNTYxNCwzNTYwOCwzNTYwNiwzNTYwMSwzNTU4OSwzNTU5NSwzNTYxOCwzNTU5OSwzNTYwMiwzNTYwNSwzNTU5MSwzNTU5NywzNTU5MiwzNTU5MCwzNTYxMiwzNTYwMywzNTYxMCwzNTkxOSwzNTk1MiwzNTk1NCwzNTk1MywzNTk1MSwzNTk4OSwzNTk4OCwzNjA4OSwzNjIwNywzNjQzMCwzNjQyOSwzNjQzNSwzNjQzMiwzNjQyOCwzNjQyMywzNjY3NSwzNjY3MiwzNjk5NywzNjk5MCwzNzE3NiwzNzI3NCwzNzI4MiwzNzI3NSwzNzI3MywzNzI3OSwzNzI4MSwzNzI3NywzNzI4MCwzNzc5MywzNzc2MywzNzgwNywzNzczMiwzNzcxOCwzNzcwMywzNzc1NiwzNzcyMCwzNzcyNCwzNzc1MCwzNzcwNSwzNzcxMiwzNzcxMywzNzcyOCwzNzc0MSwzNzc3NSwzNzcwOCwzNzczOCwzNzc1MywzNzcxOSwzNzcxNywzNzcxNCwzNzcxMSwzNzc0NSwzNzc1MSwzNzc1NSwzNzcyOSwzNzcyNiwzNzczMSwzNzczNSwzNzc2MCwzNzcxMCwzNzcyMSwzODM0MywzODMzNiwzODM0NSwzODMzOSwzODM0MSwzODMyNywzODU3NCwzODU3NiwzODU3MiwzODY4OCwzODY4NywzODY4MCwzODY4NSwzODY4MSwzODgxMCwzODgxNywzODgxMiwzODgxNCwzODgxMywzODg2OSwzODg2OCwzODg5NywzODk3NywzODk4MCwzODk4NiwzODk4NSwzODk4MSwzODk3OSwzOTIwNSwzOTIxMSwzOTIxMiwzOTIxMCwzOTIxOSwzOTIxOCwzOTIxNSwzOTIxMywzOTIxNywzOTIxNiwzOTMyMCwzOTMzMSwzOTMyOSwzOTQyNiwzOTQxOCwzOTQxMiwzOTQxNSwzOTQxNywzOTQxNiwzOTQxNCwzOTQxOSwzOTQyMSwzOTQyMiwzOTQyMCwzOTQyNywzOTYxNCwzOTY3OCwzOTY3NywzOTY4MSwzOTY3NiwzOTc1MiwzOTgzNCwzOTg0OCwzOTgzOCwzOTgzNSwzOTg0NiwzOTg0MSwzOTg0NSwzOTg0NCwzOTgxNCwzOTg0MiwzOTg0MCwzOTg1NSw0MDI0Myw0MDI1Nyw0MDI5NSw0MDI0Niw0MDIzOCw0MDIzOSw0MDI0MSw0MDI0OCw0MDI0MCw0MDI2MSw0MDI1OCw0MDI1OSw0MDI1NCw0MDI0Nyw0MDI1Niw0MDI1MywzMjc1Nyw0MDIzNyw0MDU4Niw0MDU4NSw0MDU4OSw0MDYyNCw0MDY0OCw0MDY2Niw0MDY5OSw0MDcwMyw0MDc0MCw0MDczOSw0MDczOCw0MDc4OCw0MDg2NCwyMDc4NSwyMDc4MSwyMDc4MiwyMjE2OCwyMjE3MiwyMjE2NywyMjE3MCwyMjE3MywyMjE2OSwyMjg5NiwyMzM1NiwyMzY1NywyMzY1OCwyNDAwMCwyNDE3MywyNDE3NCwyNTA0OCwyNTA1NSwyNTA2OSwyNTA3MCwyNTA3MywyNTA2NiwyNTA3MiwyNTA2NywyNTA0NiwyNTA2NSwyNTg1NSwyNTg2MCwyNTg1MywyNTg0OCwyNTg1NywyNTg1OSwyNTg1MiwyNjAwNCwyNjA3NSwyNjMzMCwyNjMzMSwyNjMyOCwyNzMzMywyNzMyMSwyNzMyNSwyNzM2MSwyNzMzNCwyNzMyMiwyNzMxOCwyNzMxOSwyNzMzNSwyNzMxNiwyNzMwOSwyNzQ4NiwyNzU5MywyNzY1OSwyODY3OSwyODY4NCwyODY4NSwyODY3MywyODY3NywyODY5MiwyODY4NiwyODY3MSwyODY3MiwyODY2NywyODcxMCwyODY2OCwyODY2MywyODY4MiwyOTE4NSwyOTE4MywyOTE3NywyOTE4NywyOTE4MSwyOTU1OCwyOTg4MCwyOTg4OCwyOTg3NywyOTg4OSwyOTg4NiwyOTg3OCwyOTg4MywyOTg5MCwyOTk3MiwyOTk3MSwzMDMwMCwzMDMwOCwzMDI5NywzMDI4OCwzMDI5MSwzMDI5NSwzMDI5OCwzMDM3NCwzMDM5NywzMDQ0NCwzMDY1OCwzMDY1MCwzMDk3NSwzMDk4OCwzMDk5NSwzMDk5NiwzMDk4NSwzMDk5MiwzMDk5NCwzMDk5MywzMTE0OSwzMTE0OCwzMTMyNywzMTc3MiwzMTc4NSwzMTc2OSwzMTc3NiwzMTc3NSwzMTc4OSwzMTc3MywzMTc4MiwzMTc4NCwzMTc3OCwzMTc4MSwzMTc5MiwzMjM0OCwzMjMzNiwzMjM0MiwzMjM1NSwzMjM0NCwzMjM1NCwzMjM1MSwzMjMzNywzMjM1MiwzMjM0MywzMjMzOSwzMjY5MywzMjY5MSwzMjc1OSwzMjc2MCwzMjg4NSwzMzIzMywzMzIzNCwzMzIzMiwzMzM3NSwzMzM3NCwzNDIyOCwzNDI0NiwzNDI0MCwzNDI0MywzNDI0MiwzNDIyNywzNDIyOSwzNDIzNywzNDI0NywzNDI0NCwzNDIzOSwzNDI1MSwzNDI1NCwzNDI0OCwzNDI0NSwzNDIyNSwzNDIzMCwzNDI1OCwzNDM0MCwzNDIzMiwzNDIzMSwzNDIzOCwzNDQwOSwzNDc5MSwzNDc5MCwzNDc4NiwzNDc3OSwzNDc5NSwzNDc5NCwzNDc4OSwzNDc4MywzNDgwMywzNDc4OCwzNDc3MiwzNDc4MCwzNDc3MSwzNDc5NywzNDc3NiwzNDc4NywzNDcyNCwzNDc3NSwzNDc3NywzNDgxNywzNDgwNCwzNDc5MiwzNDc4MSwzNTE1NSwzNTE0NywzNTE1MSwzNTE0OCwzNTE0MiwzNTE1MiwzNTE1MywzNTE0NSwzNTYyNiwzNTYyMywzNTYxOSwzNTYzNSwzNTYzMiwzNTYzNywzNTY1NSwzNTYzMSwzNTY0NCwzNTY0NiwzNTYzMywzNTYyMSwzNTYzOSwzNTYyMiwzNTYzOCwzNTYzMCwzNTYyMCwzNTY0MywzNTY0NSwzNTY0MiwzNTkwNiwzNTk1NywzNTk5MywzNTk5MiwzNTk5MSwzNjA5NCwzNjEwMCwzNjA5OCwzNjA5NiwzNjQ0NCwzNjQ1MCwzNjQ0OCwzNjQzOSwzNjQzOCwzNjQ0NiwzNjQ1MywzNjQ1NSwzNjQ0MywzNjQ0MiwzNjQ0OSwzNjQ0NSwzNjQ1NywzNjQzNiwzNjY3OCwzNjY3OSwzNjY4MCwzNjY4MywzNzE2MCwzNzE3OCwzNzE3OSwzNzE4MiwzNzI4OCwzNzI4NSwzNzI4NywzNzI5NSwzNzI5MCwzNzgxMywzNzc3MiwzNzc3OCwzNzgxNSwzNzc4NywzNzc4OSwzNzc2OSwzNzc5OSwzNzc3NCwzNzgwMiwzNzc5MCwzNzc5OCwzNzc4MSwzNzc2OCwzNzc4NSwzNzc5MSwzNzc3MywzNzgwOSwzNzc3NywzNzgxMCwzNzc5NiwzNzgwMCwzNzgxMiwzNzc5NSwzNzc5NywzODM1NCwzODM1NSwzODM1MywzODU3OSwzODYxNSwzODYxOCwyNDAwMiwzODYyMywzODYxNiwzODYyMSwzODY5MSwzODY5MCwzODY5MywzODgyOCwzODgzMCwzODgyNCwzODgyNywzODgyMCwzODgyNiwzODgxOCwzODgyMSwzODg3MSwzODg3MywzODg3MCwzODg3MiwzODkwNiwzODk5MiwzODk5MywzODk5NCwzOTA5NiwzOTIzMywzOTIyOCwzOTIyNiwzOTQzOSwzOTQzNSwzOTQzMywzOTQzNywzOTQyOCwzOTQ0MSwzOTQzNCwzOTQyOSwzOTQzMSwzOTQzMCwzOTYxNiwzOTY0NCwzOTY4OCwzOTY4NCwzOTY4NSwzOTcyMSwzOTczMywzOTc1NCwzOTc1NiwzOTc1NSwzOTg3OSwzOTg3OCwzOTg3NSwzOTg3MSwzOTg3MywzOTg2MSwzOTg2NCwzOTg5MSwzOTg2MiwzOTg3NiwzOTg2NSwzOTg2OSw0MDI4NCw0MDI3NSw0MDI3MSw0MDI2Niw0MDI4Myw0MDI2Nyw0MDI4MSw0MDI3OCw0MDI2OCw0MDI3OSw0MDI3NCw0MDI3Niw0MDI4Nyw0MDI4MCw0MDI4Miw0MDU5MCw0MDU4OCw0MDY3MSw0MDcwNSw0MDcwNCw0MDcyNiw0MDc0MSw0MDc0Nyw0MDc0Niw0MDc0NSw0MDc0NCw0MDc4MCw0MDc4OSwyMDc4OCwyMDc4OSwyMTE0MiwyMTIzOSwyMTQyOCwyMjE4NywyMjE4OSwyMjE4MiwyMjE4MywyMjE4NiwyMjE4OCwyMjc0NiwyMjc0OSwyMjc0NywyMjgwMiwyMzM1NywyMzM1OCwyMzM1OSwyNDAwMywyNDE3NiwyNDUxMSwyNTA4MywyNTg2MywyNTg3MiwyNTg2OSwyNTg2NSwyNTg2OCwyNTg3MCwyNTk4OCwyNjA3OCwyNjA3NywyNjMzNCwyNzM2NywyNzM2MCwyNzM0MCwyNzM0NSwyNzM1MywyNzMzOSwyNzM1OSwyNzM1NiwyNzM0NCwyNzM3MSwyNzM0MywyNzM0MSwyNzM1OCwyNzQ4OCwyNzU2OCwyNzY2MCwyODY5NywyODcxMSwyODcwNCwyODY5NCwyODcxNSwyODcwNSwyODcwNiwyODcwNywyODcxMywyODY5NSwyODcwOCwyODcwMCwyODcxNCwyOTE5NiwyOTE5NCwyOTE5MSwyOTE4NiwyOTE4OSwyOTM0OSwyOTM1MCwyOTM0OCwyOTM0NywyOTM0NSwyOTg5OSwyOTg5MywyOTg3OSwyOTg5MSwyOTk3NCwzMDMwNCwzMDY2NSwzMDY2NiwzMDY2MCwzMDcwNSwzMTAwNSwzMTAwMywzMTAwOSwzMTAwNCwzMDk5OSwzMTAwNiwzMTE1MiwzMTMzNSwzMTMzNiwzMTc5NSwzMTgwNCwzMTgwMSwzMTc4OCwzMTgwMywzMTk4MCwzMTk3OCwzMjM3NCwzMjM3MywzMjM3NiwzMjM2OCwzMjM3NSwzMjM2NywzMjM3OCwzMjM3MCwzMjM3MiwzMjM2MCwzMjU4NywzMjU4NiwzMjY0MywzMjY0NiwzMjY5NSwzMjc2NSwzMjc2NiwzMjg4OCwzMzIzOSwzMzIzNywzMzM4MCwzMzM3NywzMzM3OSwzNDI4MywzNDI4OSwzNDI4NSwzNDI2NSwzNDI3MywzNDI4MCwzNDI2NiwzNDI2MywzNDI4NCwzNDI5MCwzNDI5NiwzNDI2NCwzNDI3MSwzNDI3NSwzNDI2OCwzNDI1NywzNDI4OCwzNDI3OCwzNDI4NywzNDI3MCwzNDI3NCwzNDgxNiwzNDgxMCwzNDgxOSwzNDgwNiwzNDgwNywzNDgyNSwzNDgyOCwzNDgyNywzNDgyMiwzNDgxMiwzNDgyNCwzNDgxNSwzNDgyNiwzNDgxOCwzNTE3MCwzNTE2MiwzNTE2MywzNTE1OSwzNTE2OSwzNTE2NCwzNTE2MCwzNTE2NSwzNTE2MSwzNTIwOCwzNTI1NSwzNTI1NCwzNTMxOCwzNTY2NCwzNTY1NiwzNTY1OCwzNTY0OCwzNTY2NywzNTY3MCwzNTY2OCwzNTY1OSwzNTY2OSwzNTY2NSwzNTY1MCwzNTY2NiwzNTY3MSwzNTkwNywzNTk1OSwzNTk1OCwzNTk5NCwzNjEwMiwzNjEwMywzNjEwNSwzNjI2OCwzNjI2NiwzNjI2OSwzNjI2NywzNjQ2MSwzNjQ3MiwzNjQ2NywzNjQ1OCwzNjQ2MywzNjQ3NSwzNjU0NiwzNjY5MCwzNjY4OSwzNjY4NywzNjY4OCwzNjY5MSwzNjc4OCwzNzE4NCwzNzE4MywzNzI5NiwzNzI5MywzNzg1NCwzNzgzMSwzNzgzOSwzNzgyNiwzNzg1MCwzNzg0MCwzNzg4MSwzNzg2OCwzNzgzNiwzNzg0OSwzNzgwMSwzNzg2MiwzNzgzNCwzNzg0NCwzNzg3MCwzNzg1OSwzNzg0NSwzNzgyOCwzNzgzOCwzNzgyNCwzNzg0MiwzNzg2MywzODI2OSwzODM2MiwzODM2MywzODYyNSwzODY5NywzODY5OSwzODcwMCwzODY5NiwzODY5NCwzODgzNSwzODgzOSwzODgzOCwzODg3NywzODg3OCwzODg3OSwzOTAwNCwzOTAwMSwzOTAwNSwzODk5OSwzOTEwMywzOTEwMSwzOTA5OSwzOTEwMiwzOTI0MCwzOTIzOSwzOTIzNSwzOTMzNCwzOTMzNSwzOTQ1MCwzOTQ0NSwzOTQ2MSwzOTQ1MywzOTQ2MCwzOTQ1MSwzOTQ1OCwzOTQ1NiwzOTQ2MywzOTQ1OSwzOTQ1NCwzOTQ1MiwzOTQ0NCwzOTYxOCwzOTY5MSwzOTY5MCwzOTY5NCwzOTY5MiwzOTczNSwzOTkxNCwzOTkxNSwzOTkwNCwzOTkwMiwzOTkwOCwzOTkxMCwzOTkwNiwzOTkyMCwzOTg5MiwzOTg5NSwzOTkxNiwzOTkwMCwzOTg5NywzOTkwOSwzOTg5MywzOTkwNSwzOTg5OCw0MDMxMSw0MDMyMSw0MDMzMCw0MDMyNCw0MDMyOCw0MDMwNSw0MDMyMCw0MDMxMiw0MDMyNiw0MDMzMSw0MDMzMiw0MDMxNyw0MDI5OSw0MDMwOCw0MDMwOSw0MDMwNCw0MDI5Nyw0MDMyNSw0MDMwNyw0MDMxNSw0MDMyMiw0MDMwMyw0MDMxMyw0MDMxOSw0MDMyNyw0MDI5Niw0MDU5Niw0MDU5Myw0MDY0MCw0MDcwMCw0MDc0OSw0MDc2OCw0MDc2OSw0MDc4MSw0MDc5MCw0MDc5MSw0MDc5MiwyMTMwMywyMjE5NCwyMjE5NywyMjE5NSwyMjc1NSwyMzM2NSwyNDAwNiwyNDAwNywyNDMwMiwyNDMwMywyNDUxMiwyNDUxMywyNTA4MSwyNTg3OSwyNTg3OCwyNTg3NywyNTg3NSwyNjA3OSwyNjM0NCwyNjMzOSwyNjM0MCwyNzM3OSwyNzM3NiwyNzM3MCwyNzM2OCwyNzM4NSwyNzM3NywyNzM3NCwyNzM3NSwyODczMiwyODcyNSwyODcxOSwyODcyNywyODcyNCwyODcyMSwyODczOCwyODcyOCwyODczNSwyODczMCwyODcyOSwyODczNiwyODczMSwyODcyMywyODczNywyOTIwMywyOTIwNCwyOTM1MiwyOTU2NSwyOTU2NCwyOTg4MiwzMDM3OSwzMDM3OCwzMDM5OCwzMDQ0NSwzMDY2OCwzMDY3MCwzMDY3MSwzMDY2OSwzMDcwNiwzMTAxMywzMTAxMSwzMTAxNSwzMTAxNiwzMTAxMiwzMTAxNywzMTE1NCwzMTM0MiwzMTM0MCwzMTM0MSwzMTQ3OSwzMTgxNywzMTgxNiwzMTgxOCwzMTgxNSwzMTgxMywzMTk4MiwzMjM3OSwzMjM4MiwzMjM4NSwzMjM4NCwzMjY5OCwzMjc2NywzMjg4OSwzMzI0MywzMzI0MSwzMzI5MSwzMzM4NCwzMzM4NSwzNDMzOCwzNDMwMywzNDMwNSwzNDMwMiwzNDMzMSwzNDMwNCwzNDI5NCwzNDMwOCwzNDMxMywzNDMwOSwzNDMxNiwzNDMwMSwzNDg0MSwzNDgzMiwzNDgzMywzNDgzOSwzNDgzNSwzNDgzOCwzNTE3MSwzNTE3NCwzNTI1NywzNTMxOSwzNTY4MCwzNTY5MCwzNTY3NywzNTY4OCwzNTY4MywzNTY4NSwzNTY4NywzNTY5MywzNjI3MCwzNjQ4NiwzNjQ4OCwzNjQ4NCwzNjY5NywzNjY5NCwzNjY5NSwzNjY5MywzNjY5NiwzNjY5OCwzNzAwNSwzNzE4NywzNzE4NSwzNzMwMywzNzMwMSwzNzI5OCwzNzI5OSwzNzg5OSwzNzkwNywzNzg4MywzNzkyMCwzNzkwMywzNzkwOCwzNzg4NiwzNzkwOSwzNzkwNCwzNzkyOCwzNzkxMywzNzkwMSwzNzg3NywzNzg4OCwzNzg3OSwzNzg5NSwzNzkwMiwzNzkxMCwzNzkwNiwzNzg4MiwzNzg5NywzNzg4MCwzNzg5OCwzNzg4NywzNzg4NCwzNzkwMCwzNzg3OCwzNzkwNSwzNzg5NCwzODM2NiwzODM2OCwzODM2NywzODcwMiwzODcwMywzODg0MSwzODg0MywzODkwOSwzODkxMCwzOTAwOCwzOTAxMCwzOTAxMSwzOTAwNywzOTEwNSwzOTEwNiwzOTI0OCwzOTI0NiwzOTI1NywzOTI0NCwzOTI0MywzOTI1MSwzOTQ3NCwzOTQ3NiwzOTQ3MywzOTQ2OCwzOTQ2NiwzOTQ3OCwzOTQ2NSwzOTQ3MCwzOTQ4MCwzOTQ2OSwzOTYyMywzOTYyNiwzOTYyMiwzOTY5NiwzOTY5OCwzOTY5NywzOTk0NywzOTk0NCwzOTkyNywzOTk0MSwzOTk1NCwzOTkyOCw0MDAwMCwzOTk0MywzOTk1MCwzOTk0MiwzOTk1OSwzOTk1NiwzOTk0NSw0MDM1MSw0MDM0NSw0MDM1Niw0MDM0OSw0MDMzOCw0MDM0NCw0MDMzNiw0MDM0Nyw0MDM1Miw0MDM0MCw0MDM0OCw0MDM2Miw0MDM0Myw0MDM1Myw0MDM0Niw0MDM1NCw0MDM2MCw0MDM1MCw0MDM1NSw0MDM4Myw0MDM2MSw0MDM0Miw0MDM1OCw0MDM1OSw0MDYwMSw0MDYwMyw0MDYwMiw0MDY3Nyw0MDY3Niw0MDY3OSw0MDY3OCw0MDc1Miw0MDc1MCw0MDc5NSw0MDgwMCw0MDc5OCw0MDc5Nyw0MDc5Myw0MDg0OSwyMDc5NCwyMDc5MywyMTE0NCwyMTE0MywyMjIxMSwyMjIwNSwyMjIwNiwyMzM2OCwyMzM2NywyNDAxMSwyNDAxNSwyNDMwNSwyNTA4NSwyNTg4MywyNzM5NCwyNzM4OCwyNzM5NSwyNzM4NCwyNzM5MiwyODczOSwyODc0MCwyODc0NiwyODc0NCwyODc0NSwyODc0MSwyODc0MiwyOTIxMywyOTIxMCwyOTIwOSwyOTU2NiwyOTk3NSwzMDMxNCwzMDY3MiwzMTAyMSwzMTAyNSwzMTAyMywzMTgyOCwzMTgyNywzMTk4NiwzMjM5NCwzMjM5MSwzMjM5MiwzMjM5NSwzMjM5MCwzMjM5NywzMjU4OSwzMjY5OSwzMjgxNiwzMzI0NSwzNDMyOCwzNDM0NiwzNDM0MiwzNDMzNSwzNDMzOSwzNDMzMiwzNDMyOSwzNDM0MywzNDM1MCwzNDMzNywzNDMzNiwzNDM0NSwzNDMzNCwzNDM0MSwzNDg1NywzNDg0NSwzNDg0MywzNDg0OCwzNDg1MiwzNDg0NCwzNDg1OSwzNDg5MCwzNTE4MSwzNTE3NywzNTE4MiwzNTE3OSwzNTMyMiwzNTcwNSwzNTcwNCwzNTY1MywzNTcwNiwzNTcwNywzNjExMiwzNjExNiwzNjI3MSwzNjQ5NCwzNjQ5MiwzNjcwMiwzNjY5OSwzNjcwMSwzNzE5MCwzNzE4OCwzNzE4OSwzNzMwNSwzNzk1MSwzNzk0NywzNzk0MiwzNzkyOSwzNzk0OSwzNzk0OCwzNzkzNiwzNzk0NSwzNzkzMCwzNzk0MywzNzkzMiwzNzk1MiwzNzkzNywzODM3MywzODM3MiwzODM3MSwzODcwOSwzODcxNCwzODg0NywzODg4MSwzOTAxMiwzOTExMywzOTExMCwzOTEwNCwzOTI1NiwzOTI1NCwzOTQ4MSwzOTQ4NSwzOTQ5NCwzOTQ5MiwzOTQ5MCwzOTQ4OSwzOTQ4MiwzOTQ4NywzOTYyOSwzOTcwMSwzOTcwMywzOTcwNCwzOTcwMiwzOTczOCwzOTc2MiwzOTk3OSwzOTk2NSwzOTk2NCwzOTk4MCwzOTk3MSwzOTk3NiwzOTk3NywzOTk3MiwzOTk2OSw0MDM3NSw0MDM3NCw0MDM4MCw0MDM4NSw0MDM5MSw0MDM5NCw0MDM5OSw0MDM4Miw0MDM4OSw0MDM4Nyw0MDM3OSw0MDM3Myw0MDM5OCw0MDM3Nyw0MDM3OCw0MDM2NCw0MDM5Miw0MDM2OSw0MDM2NSw0MDM5Niw0MDM3MSw0MDM5Nyw0MDM3MCw0MDU3MCw0MDYwNCw0MDY4Myw0MDY4Niw0MDY4NSw0MDczMSw0MDcyOCw0MDczMCw0MDc1Myw0MDc4Miw0MDgwNSw0MDgwNCw0MDg1MCwyMDE1MywyMjIxNCwyMjIxMywyMjIxOSwyMjg5NywyMzM3MSwyMzM3MiwyNDAyMSwyNDAxNywyNDMwNiwyNTg4OSwyNTg4OCwyNTg5NCwyNTg5MCwyNzQwMywyNzQwMCwyNzQwMSwyNzY2MSwyODc1NywyODc1OCwyODc1OSwyODc1NCwyOTIxNCwyOTIxNSwyOTM1MywyOTU2NywyOTkxMiwyOTkwOSwyOTkxMywyOTkxMSwzMDMxNywzMDM4MSwzMTAyOSwzMTE1NiwzMTM0NCwzMTM0NSwzMTgzMSwzMTgzNiwzMTgzMywzMTgzNSwzMTgzNCwzMTk4OCwzMTk4NSwzMjQwMSwzMjU5MSwzMjY0NywzMzI0NiwzMzM4NywzNDM1NiwzNDM1NywzNDM1NSwzNDM0OCwzNDM1NCwzNDM1OCwzNDg2MCwzNDg1NiwzNDg1NCwzNDg1OCwzNDg1MywzNTE4NSwzNTI2MywzNTI2MiwzNTMyMywzNTcxMCwzNTcxNiwzNTcxNCwzNTcxOCwzNTcxNywzNTcxMSwzNjExNywzNjUwMSwzNjUwMCwzNjUwNiwzNjQ5OCwzNjQ5NiwzNjUwMiwzNjUwMywzNjcwNCwzNjcwNiwzNzE5MSwzNzk2NCwzNzk2OCwzNzk2MiwzNzk2MywzNzk2NywzNzk1OSwzNzk1NywzNzk2MCwzNzk2MSwzNzk1OCwzODcxOSwzODg4MywzOTAxOCwzOTAxNywzOTExNSwzOTI1MiwzOTI1OSwzOTUwMiwzOTUwNywzOTUwOCwzOTUwMCwzOTUwMywzOTQ5NiwzOTQ5OCwzOTQ5NywzOTUwNiwzOTUwNCwzOTYzMiwzOTcwNSwzOTcyMywzOTczOSwzOTc2NiwzOTc2NSw0MDAwNiw0MDAwOCwzOTk5OSw0MDAwNCwzOTk5MywzOTk4Nyw0MDAwMSwzOTk5NiwzOTk5MSwzOTk4OCwzOTk4NiwzOTk5NywzOTk5MCw0MDQxMSw0MDQwMiw0MDQxNCw0MDQxMCw0MDM5NSw0MDQwMCw0MDQxMiw0MDQwMSw0MDQxNSw0MDQyNSw0MDQwOSw0MDQwOCw0MDQwNiw0MDQzNyw0MDQwNSw0MDQxMyw0MDYzMCw0MDY4OCw0MDc1Nyw0MDc1NSw0MDc1NCw0MDc3MCw0MDgxMSw0MDg1Myw0MDg2NiwyMDc5NywyMTE0NSwyMjc2MCwyMjc1OSwyMjg5OCwyMzM3MywyNDAyNCwzNDg2MywyNDM5OSwyNTA4OSwyNTA5MSwyNTA5MiwyNTg5NywyNTg5MywyNjAwNiwyNjM0NywyNzQwOSwyNzQxMCwyNzQwNywyNzU5NCwyODc2MywyODc2MiwyOTIxOCwyOTU3MCwyOTU2OSwyOTU3MSwzMDMyMCwzMDY3NiwzMTg0NywzMTg0NiwzMjQwNSwzMzM4OCwzNDM2MiwzNDM2OCwzNDM2MSwzNDM2NCwzNDM1MywzNDM2MywzNDM2NiwzNDg2NCwzNDg2NiwzNDg2MiwzNDg2NywzNTE5MCwzNTE4OCwzNTE4NywzNTMyNiwzNTcyNCwzNTcyNiwzNTcyMywzNTcyMCwzNTkwOSwzNjEyMSwzNjUwNCwzNjcwOCwzNjcwNywzNzMwOCwzNzk4NiwzNzk3MywzNzk4MSwzNzk3NSwzNzk4MiwzODg1MiwzODg1MywzODkxMiwzOTUxMCwzOTUxMywzOTcxMCwzOTcxMSwzOTcxMiw0MDAxOCw0MDAyNCw0MDAxNiw0MDAxMCw0MDAxMyw0MDAxMSw0MDAyMSw0MDAyNSw0MDAxMiw0MDAxNCw0MDQ0Myw0MDQzOSw0MDQzMSw0MDQxOSw0MDQyNyw0MDQ0MCw0MDQyMCw0MDQzOCw0MDQxNyw0MDQzMCw0MDQyMiw0MDQzNCw0MDQzMiw0MDQxOCw0MDQyOCw0MDQzNiw0MDQzNSw0MDQyNCw0MDQyOSw0MDY0Miw0MDY1Niw0MDY5MCw0MDY5MSw0MDcxMCw0MDczMiw0MDc2MCw0MDc1OSw0MDc1OCw0MDc3MSw0MDc4Myw0MDgxNyw0MDgxNiw0MDgxNCw0MDgxNSwyMjIyNywyMjIyMSwyMzM3NCwyMzY2MSwyNTkwMSwyNjM0OSwyNjM1MCwyNzQxMSwyODc2NywyODc2OSwyODc2NSwyODc2OCwyOTIxOSwyOTkxNSwyOTkyNSwzMDY3NywzMTAzMiwzMTE1OSwzMTE1OCwzMTg1MCwzMjQwNywzMjY0OSwzMzM4OSwzNDM3MSwzNDg3MiwzNDg3MSwzNDg2OSwzNDg5MSwzNTczMiwzNTczMywzNjUxMCwzNjUxMSwzNjUxMiwzNjUwOSwzNzMxMCwzNzMwOSwzNzMxNCwzNzk5NSwzNzk5MiwzNzk5MywzODYyOSwzODcyNiwzODcyMywzODcyNywzODg1NSwzODg4NSwzOTUxOCwzOTYzNywzOTc2OSw0MDAzNSw0MDAzOSw0MDAzOCw0MDAzNCw0MDAzMCw0MDAzMiw0MDQ1MCw0MDQ0Niw0MDQ1NSw0MDQ1MSw0MDQ1NCw0MDQ1Myw0MDQ0OCw0MDQ0OSw0MDQ1Nyw0MDQ0Nyw0MDQ0NSw0MDQ1Miw0MDYwOCw0MDczNCw0MDc3NCw0MDgyMCw0MDgyMSw0MDgyMiwyMjIyOCwyNTkwMiwyNjA0MCwyNzQxNiwyNzQxNywyNzQxNSwyNzQxOCwyODc3MCwyOTIyMiwyOTM1NCwzMDY4MCwzMDY4MSwzMTAzMywzMTg0OSwzMTg1MSwzMTk5MCwzMjQxMCwzMjQwOCwzMjQxMSwzMjQwOSwzMzI0OCwzMzI0OSwzNDM3NCwzNDM3NSwzNDM3NiwzNTE5MywzNTE5NCwzNTE5NiwzNTE5NSwzNTMyNywzNTczNiwzNTczNywzNjUxNywzNjUxNiwzNjUxNSwzNzk5OCwzNzk5NywzNzk5OSwzODAwMSwzODAwMywzODcyOSwzOTAyNiwzOTI2Myw0MDA0MCw0MDA0Niw0MDA0NSw0MDQ1OSw0MDQ2MSw0MDQ2NCw0MDQ2Myw0MDQ2Niw0MDQ2NSw0MDYwOSw0MDY5Myw0MDcxMyw0MDc3NSw0MDgyNCw0MDgyNyw0MDgyNiw0MDgyNSwyMjMwMiwyODc3NCwzMTg1NSwzNDg3NiwzNjI3NCwzNjUxOCwzNzMxNSwzODAwNCwzODAwOCwzODAwNiwzODAwNSwzOTUyMCw0MDA1Miw0MDA1MSw0MDA0OSw0MDA1Myw0MDQ2OCw0MDQ2Nyw0MDY5NCw0MDcxNCw0MDg2OCwyODc3NiwyODc3MywzMTk5MSwzNDQxMCwzNDg3OCwzNDg3NywzNDg3OSwzNTc0MiwzNTk5NiwzNjUyMSwzNjU1MywzODczMSwzOTAyNywzOTAyOCwzOTExNiwzOTI2NSwzOTMzOSwzOTUyNCwzOTUyNiwzOTUyNywzOTcxNiw0MDQ2OSw0MDQ3MSw0MDc3NiwyNTA5NSwyNzQyMiwyOTIyMywzNDM4MCwzNjUyMCwzODAxOCwzODAxNiwzODAxNywzOTUyOSwzOTUyOCwzOTcyNiw0MDQ3MywyOTIyNSwzNDM3OSwzNTc0MywzODAxOSw0MDA1Nyw0MDYzMSwzMDMyNSwzOTUzMSw0MDA1OCw0MDQ3NywyODc3NywyODc3OCw0MDYxMiw0MDgzMCw0MDc3Nyw0MDg1NiwzMDg0OSwzNzU2MSwzNTAyMywyMjcxNSwyNDY1OCwzMTkxMSwyMzI5MCw5NTU2LDk1NzQsOTU1OSw5NTY4LDk1ODAsOTU3MSw5NTYyLDk1NzcsOTU2NSw5NTU0LDk1NzIsOTU1Nyw5NTY2LDk1NzgsOTU2OSw5NTYwLDk1NzUsOTU2Myw5NTU1LDk1NzMsOTU1OCw5NTY3LDk1NzksOTU3MCw5NTYxLDk1NzYsOTU2NCw5NTUzLDk1NTIsOTU4MSw5NTgyLDk1ODQsOTU4Myw2NTUxNywxMzI0MjMsMzc1OTUsMTMyNTc1LDE0NzM5NywzNDEyNCwxNzA3NywyOTY3OSwyMDkxNywxMzg5NywxNDk4MjYsMTY2MzcyLDM3NzAwLDEzNzY5MSwzMzUxOCwxNDY2MzIsMzA3ODAsMjY0MzYsMjUzMTEsMTQ5ODExLDE2NjMxNCwxMzE3NDQsMTU4NjQzLDEzNTk0MSwyMDM5NSwxNDA1MjUsMjA0ODgsMTU5MDE3LDE2MjQzNiwxNDQ4OTYsMTUwMTkzLDE0MDU2MywyMDUyMSwxMzE5NjYsMjQ0ODQsMTMxOTY4LDEzMTkxMSwyODM3OSwxMzIxMjcsMjA2MDUsMjA3MzcsMTM0MzQsMjA3NTAsMzkwMjAsMTQxNDcsMzM4MTQsMTQ5OTI0LDEzMjIzMSwyMDgzMiwxNDQzMDgsMjA4NDIsMTM0MTQzLDEzOTUxNiwxMzE4MTMsMTQwNTkyLDEzMjQ5NCwxNDM5MjMsMTM3NjAzLDIzNDI2LDM0Njg1LDEzMjUzMSwxNDY1ODUsMjA5MTQsMjA5MjAsNDAyNDQsMjA5MzcsMjA5NDMsMjA5NDUsMTU1ODAsMjA5NDcsMTUwMTgyLDIwOTE1LDIwOTYyLDIxMzE0LDIwOTczLDMzNzQxLDI2OTQyLDE0NTE5NywyNDQ0MywyMTAwMywyMTAzMCwyMTA1MiwyMTE3MywyMTA3OSwyMTE0MCwyMTE3NywyMTE4OSwzMTc2NSwzNDExNCwyMTIxNiwzNDMxNywxNTg0ODMsMjEyNTMsMTY2NjIyLDIxODMzLDI4Mzc3LDE0NzMyOCwxMzM0NjAsMTQ3NDM2LDIxMjk5LDIxMzE2LDEzNDExNCwyNzg1MSwxMzY5OTgsMjY2NTEsMjk2NTMsMjQ2NTAsMTYwNDIsMTQ1NDAsMTM2OTM2LDI5MTQ5LDE3NTcwLDIxMzU3LDIxMzY0LDE2NTU0NywyMTM3NCwyMTM3NSwxMzY1OTgsMTM2NzIzLDMwNjk0LDIxMzk1LDE2NjU1NSwyMTQwOCwyMTQxOSwyMTQyMiwyOTYwNywxNTM0NTgsMTYyMTcsMjk1OTYsMjE0NDEsMjE0NDUsMjc3MjEsMjAwNDEsMjI1MjYsMjE0NjUsMTUwMTksMTM0MDMxLDIxNDcyLDE0NzQzNSwxNDI3NTUsMjE0OTQsMTM0MjYzLDIxNTIzLDI4NzkzLDIxODAzLDI2MTk5LDI3OTk1LDIxNjEzLDE1ODU0NywxMzQ1MTYsMjE4NTMsMjE2NDcsMjE2NjgsMTgzNDIsMTM2OTczLDEzNDg3NywxNTc5NiwxMzQ0NzcsMTY2MzMyLDE0MDk1MiwyMTgzMSwxOTY5MywyMTU1MSwyOTcxOSwyMTg5NCwyMTkyOSwyMjAyMSwxMzc0MzEsMTQ3NTE0LDE3NzQ2LDE0ODUzMywyNjI5MSwxMzUzNDgsMjIwNzEsMjYzMTcsMTQ0MDEwLDI2Mjc2LDI2Mjg1LDIyMDkzLDIyMDk1LDMwOTYxLDIyMjU3LDM4NzkxLDIxNTAyLDIyMjcyLDIyMjU1LDIyMjUzLDE2Njc1OCwxMzg1OSwxMzU3NTksMjIzNDIsMTQ3ODc3LDI3NzU4LDI4ODExLDIyMzM4LDE0MDAxLDE1ODg0NiwyMjUwMiwxMzYyMTQsMjI1MzEsMTM2Mjc2LDE0ODMyMywyMjU2NiwxNTA1MTcsMjI2MjAsMjI2OTgsMTM2NjUsMjI3NTIsMjI3NDgsMTM1NzQwLDIyNzc5LDIzNTUxLDIyMzM5LDE3MjM2OCwxNDgwODgsMzc4NDMsMTM3MjksMjI4MTUsMjY3OTAsMTQwMTksMjgyNDksMTM2NzY2LDIzMDc2LDIxODQzLDEzNjg1MCwzNDA1MywyMjk4NSwxMzQ0NzgsMTU4ODQ5LDE1OTAxOCwxMzcxODAsMjMwMDEsMTM3MjExLDEzNzEzOCwxNTkxNDIsMjgwMTcsMTM3MjU2LDEzNjkxNywyMzAzMywxNTkzMDEsMjMyMTEsMjMxMzksMTQwNTQsMTQ5OTI5LDIzMTU5LDE0MDg4LDIzMTkwLDI5Nzk3LDIzMjUxLDE1OTY0OSwxNDA2MjgsMTU3NDksMTM3NDg5LDE0MTMwLDEzNjg4OCwyNDE5NSwyMTIwMCwyMzQxNCwyNTk5MiwyMzQyMCwxNjIzMTgsMTYzODgsMTg1MjUsMTMxNTg4LDIzNTA5LDI0OTI4LDEzNzc4MCwxNTQwNjAsMTMyNTE3LDIzNTM5LDIzNDUzLDE5NzI4LDIzNTU3LDEzODA1MiwyMzU3MSwyOTY0NiwyMzU3MiwxMzg0MDUsMTU4NTA0LDIzNjI1LDE4NjUzLDIzNjg1LDIzNzg1LDIzNzkxLDIzOTQ3LDEzODc0NSwxMzg4MDcsMjM4MjQsMjM4MzIsMjM4NzgsMTM4OTE2LDIzNzM4LDI0MDIzLDMzNTMyLDE0MzgxLDE0OTc2MSwxMzkzMzcsMTM5NjM1LDMzNDE1LDE0MzkwLDE1Mjk4LDI0MTEwLDI3Mjc0LDI0MTgxLDI0MTg2LDE0ODY2OCwxMzQzNTUsMjE0MTQsMjAxNTEsMjQyNzIsMjE0MTYsMTM3MDczLDI0MDczLDI0MzA4LDE2NDk5NCwyNDMxMywyNDMxNSwxNDQ5NiwyNDMxNiwyNjY4NiwzNzkxNSwyNDMzMywxMzE1MjEsMTk0NzA4LDE1MDcwLDE4NjA2LDEzNTk5NCwyNDM3OCwxNTc4MzIsMTQwMjQwLDI0NDA4LDE0MDQwMSwyNDQxOSwzODg0NSwxNTkzNDIsMjQ0MzQsMzc2OTYsMTY2NDU0LDI0NDg3LDIzOTkwLDE1NzExLDE1MjE0NCwxMzkxMTQsMTU5OTkyLDE0MDkwNCwzNzMzNCwxMzE3NDIsMTY2NDQxLDI0NjI1LDI2MjQ1LDEzNzMzNSwxNDY5MSwxNTgxNSwxMzg4MSwyMjQxNiwxNDEyMzYsMzEwODksMTU5MzYsMjQ3MzQsMjQ3NDAsMjQ3NTUsMTQ5ODkwLDE0OTkwMywxNjIzODcsMjk4NjAsMjA3MDUsMjMyMDAsMjQ5MzIsMzM4MjgsMjQ4OTgsMTk0NzI2LDE1OTQ0MiwyNDk2MSwyMDk4MCwxMzI2OTQsMjQ5NjcsMjM0NjYsMTQ3MzgzLDE0MTQwNywyNTA0MywxNjY4MTMsMTcwMzMzLDI1MDQwLDE0NjQyLDE0MTY5NiwxNDE1MDUsMjQ2MTEsMjQ5MjQsMjU4ODYsMjU0ODMsMTMxMzUyLDI1Mjg1LDEzNzA3MiwyNTMwMSwxNDI4NjEsMjU0NTIsMTQ5OTgzLDE0ODcxLDI1NjU2LDI1NTkyLDEzNjA3OCwxMzcyMTIsMjU3NDQsMjg1NTQsMTQyOTAyLDM4OTMyLDE0NzU5NiwxNTMzNzMsMjU4MjUsMjU4MjksMzgwMTEsMTQ5NTAsMjU2NTgsMTQ5MzUsMjU5MzMsMjg0MzgsMTUwMDU2LDE1MDA1MSwyNTk4OSwyNTk2NSwyNTk1MSwxNDM0ODYsMjYwMzcsMTQ5ODI0LDE5MjU1LDI2MDY1LDE2NjAwLDEzNzI1NywyNjA4MCwyNjA4MywyNDU0MywxNDQzODQsMjYxMzYsMTQzODYzLDE0Mzg2NCwyNjE4MCwxNDM3ODAsMTQzNzgxLDI2MTg3LDEzNDc3MywyNjIxNSwxNTIwMzgsMjYyMjcsMjYyMjgsMTM4ODEzLDE0MzkyMSwxNjUzNjQsMTQzODE2LDE1MjMzOSwzMDY2MSwxNDE1NTksMzkzMzIsMjYzNzAsMTQ4MzgwLDE1MDA0OSwxNTE0NywyNzEzMCwxNDUzNDYsMjY0NjIsMjY0NzEsMjY0NjYsMTQ3OTE3LDE2ODE3MywyNjU4MywxNzY0MSwyNjY1OCwyODI0MCwzNzQzNiwyNjYyNSwxNDQzNTgsMTU5MTM2LDI2NzE3LDE0NDQ5NSwyNzEwNSwyNzE0NywxNjY2MjMsMjY5OTUsMjY4MTksMTQ0ODQ1LDI2ODgxLDI2ODgwLDE1NjY2LDE0ODQ5LDE0NDk1NiwxNTIzMiwyNjU0MCwyNjk3NywxNjY0NzQsMTcxNDgsMjY5MzQsMjcwMzIsMTUyNjUsMTMyMDQxLDMzNjM1LDIwNjI0LDI3MTI5LDE0NDk4NSwxMzk1NjIsMjcyMDUsMTQ1MTU1LDI3MjkzLDE1MzQ3LDI2NTQ1LDI3MzM2LDE2ODM0OCwxNTM3MywyNzQyMSwxMzM0MTEsMjQ3OTgsMjc0NDUsMjc1MDgsMTQxMjYxLDI4MzQxLDE0NjEzOSwxMzIwMjEsMTM3NTYwLDE0MTQ0LDIxNTM3LDE0NjI2NiwyNzYxNywxNDcxOTYsMjc2MTIsMjc3MDMsMTQwNDI3LDE0OTc0NSwxNTg1NDUsMjc3MzgsMzMzMTgsMjc3NjksMTQ2ODc2LDE3NjA1LDE0Njg3NywxNDc4NzYsMTQ5NzcyLDE0OTc2MCwxNDY2MzMsMTQwNTMsMTU1OTUsMTM0NDUwLDM5ODExLDE0Mzg2NSwxNDA0MzMsMzI2NTUsMjY2NzksMTU5MDEzLDE1OTEzNywxNTkyMTEsMjgwNTQsMjc5OTYsMjgyODQsMjg0MjAsMTQ5ODg3LDE0NzU4OSwxNTkzNDYsMzQwOTksMTU5NjA0LDIwOTM1LDI3ODA0LDI4MTg5LDMzODM4LDE2NjY4OSwyODIwNywxNDY5OTEsMjk3NzksMTQ3MzMwLDMxMTgwLDI4MjM5LDIzMTg1LDE0MzQzNSwyODY2NCwxNDA5MywyODU3MywxNDY5OTIsMjg0MTAsMTM2MzQzLDE0NzUxNywxNzc0OSwzNzg3MiwyODQ4NCwyODUwOCwxNTY5NCwyODUzMiwxNjgzMDQsMTU2NzUsMjg1NzUsMTQ3NzgwLDI4NjI3LDE0NzYwMSwxNDc3OTcsMTQ3NTEzLDE0NzQ0MCwxNDczODAsMTQ3Nzc1LDIwOTU5LDE0Nzc5OCwxNDc3OTksMTQ3Nzc2LDE1NjEyNSwyODc0NywyODc5OCwyODgzOSwyODgwMSwyODg3NiwyODg4NSwyODg4NiwyODg5NSwxNjY0NCwxNTg0OCwyOTEwOCwyOTA3OCwxNDgwODcsMjg5NzEsMjg5OTcsMjMxNzYsMjkwMDIsMjkwMzgsMjM3MDgsMTQ4MzI1LDI5MDA3LDM3NzMwLDE0ODE2MSwyODk3MiwxNDg1NzAsMTUwMDU1LDE1MDA1MCwyOTExNCwxNjY4ODgsMjg4NjEsMjkxOTgsMzc5NTQsMjkyMDUsMjI4MDEsMzc5NTUsMjkyMjAsMzc2OTcsMTUzMDkzLDI5MjMwLDI5MjQ4LDE0OTg3NiwyNjgxMywyOTI2OSwyOTI3MSwxNTk1NywxNDM0MjgsMjY2MzcsMjg0NzcsMjkzMTQsMjk0ODIsMjk0ODMsMTQ5NTM5LDE2NTkzMSwxODY2OSwxNjU4OTIsMjk0ODAsMjk0ODYsMjk2NDcsMjk2MTAsMTM0MjAyLDE1ODI1NCwyOTY0MSwyOTc2OSwxNDc5MzgsMTM2OTM1LDE1MDA1MiwyNjE0NywxNDAyMSwxNDk5NDMsMTQ5OTAxLDE1MDAxMSwyOTY4NywyOTcxNywyNjg4MywxNTAwNTQsMjk3NTMsMTMyNTQ3LDE2MDg3LDI5Nzg4LDE0MTQ4NSwyOTc5MiwxNjc2MDIsMjk3NjcsMjk2NjgsMjk4MTQsMzM3MjEsMjk4MDQsMTQxMjgsMjk4MTIsMzc4NzMsMjcxODAsMjk4MjYsMTg3NzEsMTUwMTU2LDE0NzgwNywxNTAxMzcsMTY2Nzk5LDIzMzY2LDE2NjkxNSwxMzczNzQsMjk4OTYsMTM3NjA4LDI5OTY2LDI5OTI5LDI5OTgyLDE2NzY0MSwxMzc4MDMsMjM1MTEsMTY3NTk2LDM3NzY1LDMwMDI5LDMwMDI2LDMwMDU1LDMwMDYyLDE1MTQyNiwxNjEzMiwxNTA4MDMsMzAwOTQsMjk3ODksMzAxMTAsMzAxMzIsMzAyMTAsMzAyNTIsMzAyODksMzAyODcsMzAzMTksMzAzMjYsMTU2NjYxLDMwMzUyLDMzMjYzLDE0MzI4LDE1Nzk2OSwxNTc5NjYsMzAzNjksMzAzNzMsMzAzOTEsMzA0MTIsMTU5NjQ3LDMzODkwLDE1MTcwOSwxNTE5MzMsMTM4NzgwLDMwNDk0LDMwNTAyLDMwNTI4LDI1Nzc1LDE1MjA5NiwzMDU1MiwxNDQwNDQsMzA2MzksMTY2MjQ0LDE2NjI0OCwxMzY4OTcsMzA3MDgsMzA3MjksMTM2MDU0LDE1MDAzNCwyNjgyNiwzMDg5NSwzMDkxOSwzMDkzMSwzODU2NSwzMTAyMiwxNTMwNTYsMzA5MzUsMzEwMjgsMzA4OTcsMTYxMjkyLDM2NzkyLDM0OTQ4LDE2NjY5OSwxNTU3NzksMTQwODI4LDMxMTEwLDM1MDcyLDI2ODgyLDMxMTA0LDE1MzY4NywzMTEzMywxNjI2MTcsMzEwMzYsMzExNDUsMjgyMDIsMTYwMDM4LDE2MDQwLDMxMTc0LDE2ODIwNSwzMTE4OF0sXG4gIFwiZXVjLWtyXCI6WzQ0MDM0LDQ0MDM1LDQ0MDM3LDQ0MDM4LDQ0MDQzLDQ0MDQ0LDQ0MDQ1LDQ0MDQ2LDQ0MDQ3LDQ0MDU2LDQ0MDYyLDQ0MDYzLDQ0MDY1LDQ0MDY2LDQ0MDY3LDQ0MDY5LDQ0MDcwLDQ0MDcxLDQ0MDcyLDQ0MDczLDQ0MDc0LDQ0MDc1LDQ0MDc4LDQ0MDgyLDQ0MDgzLDQ0MDg0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MDg1LDQ0MDg2LDQ0MDg3LDQ0MDkwLDQ0MDkxLDQ0MDkzLDQ0MDk0LDQ0MDk1LDQ0MDk3LDQ0MDk4LDQ0MDk5LDQ0MTAwLDQ0MTAxLDQ0MTAyLDQ0MTAzLDQ0MTA0LDQ0MTA1LDQ0MTA2LDQ0MTA4LDQ0MTEwLDQ0MTExLDQ0MTEyLDQ0MTEzLDQ0MTE0LDQ0MTE1LDQ0MTE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MTE4LDQ0MTE5LDQ0MTIxLDQ0MTIyLDQ0MTIzLDQ0MTI1LDQ0MTI2LDQ0MTI3LDQ0MTI4LDQ0MTI5LDQ0MTMwLDQ0MTMxLDQ0MTMyLDQ0MTMzLDQ0MTM0LDQ0MTM1LDQ0MTM2LDQ0MTM3LDQ0MTM4LDQ0MTM5LDQ0MTQwLDQ0MTQxLDQ0MTQyLDQ0MTQzLDQ0MTQ2LDQ0MTQ3LDQ0MTQ5LDQ0MTUwLDQ0MTUzLDQ0MTU1LDQ0MTU2LDQ0MTU3LDQ0MTU4LDQ0MTU5LDQ0MTYyLDQ0MTY3LDQ0MTY4LDQ0MTczLDQ0MTc0LDQ0MTc1LDQ0MTc3LDQ0MTc4LDQ0MTc5LDQ0MTgxLDQ0MTgyLDQ0MTgzLDQ0MTg0LDQ0MTg1LDQ0MTg2LDQ0MTg3LDQ0MTkwLDQ0MTk0LDQ0MTk1LDQ0MTk2LDQ0MTk3LDQ0MTk4LDQ0MTk5LDQ0MjAzLDQ0MjA1LDQ0MjA2LDQ0MjA5LDQ0MjEwLDQ0MjExLDQ0MjEyLDQ0MjEzLDQ0MjE0LDQ0MjE1LDQ0MjE4LDQ0MjIyLDQ0MjIzLDQ0MjI0LDQ0MjI2LDQ0MjI3LDQ0MjI5LDQ0MjMwLDQ0MjMxLDQ0MjMzLDQ0MjM0LDQ0MjM1LDQ0MjM3LDQ0MjM4LDQ0MjM5LDQ0MjQwLDQ0MjQxLDQ0MjQyLDQ0MjQzLDQ0MjQ0LDQ0MjQ2LDQ0MjQ4LDQ0MjQ5LDQ0MjUwLDQ0MjUxLDQ0MjUyLDQ0MjUzLDQ0MjU0LDQ0MjU1LDQ0MjU4LDQ0MjU5LDQ0MjYxLDQ0MjYyLDQ0MjY1LDQ0MjY3LDQ0MjY5LDQ0MjcwLDQ0Mjc0LDQ0Mjc2LDQ0Mjc5LDQ0MjgwLDQ0MjgxLDQ0MjgyLDQ0MjgzLDQ0Mjg2LDQ0Mjg3LDQ0Mjg5LDQ0MjkwLDQ0MjkxLDQ0MjkzLDQ0Mjk1LDQ0Mjk2LDQ0Mjk3LDQ0Mjk4LDQ0Mjk5LDQ0MzAyLDQ0MzA0LDQ0MzA2LDQ0MzA3LDQ0MzA4LDQ0MzA5LDQ0MzEwLDQ0MzExLDQ0MzEzLDQ0MzE0LDQ0MzE1LDQ0MzE3LDQ0MzE4LDQ0MzE5LDQ0MzIxLDQ0MzIyLDQ0MzIzLDQ0MzI0LDQ0MzI1LDQ0MzI2LDQ0MzI3LDQ0MzI4LDQ0MzMwLDQ0MzMxLDQ0MzM0LDQ0MzM1LDQ0MzM2LDQ0MzM3LDQ0MzM4LDQ0MzM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0MzQyLDQ0MzQzLDQ0MzQ1LDQ0MzQ2LDQ0MzQ3LDQ0MzQ5LDQ0MzUwLDQ0MzUxLDQ0MzUyLDQ0MzUzLDQ0MzU0LDQ0MzU1LDQ0MzU4LDQ0MzYwLDQ0MzYyLDQ0MzYzLDQ0MzY0LDQ0MzY1LDQ0MzY2LDQ0MzY3LDQ0MzY5LDQ0MzcwLDQ0MzcxLDQ0MzczLDQ0Mzc0LDQ0Mzc1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0Mzc3LDQ0Mzc4LDQ0Mzc5LDQ0MzgwLDQ0MzgxLDQ0MzgyLDQ0MzgzLDQ0Mzg0LDQ0Mzg2LDQ0Mzg4LDQ0Mzg5LDQ0MzkwLDQ0MzkxLDQ0MzkyLDQ0MzkzLDQ0Mzk0LDQ0Mzk1LDQ0Mzk4LDQ0Mzk5LDQ0NDAxLDQ0NDAyLDQ0NDA3LDQ0NDA4LDQ0NDA5LDQ0NDEwLDQ0NDE0LDQ0NDE2LDQ0NDE5LDQ0NDIwLDQ0NDIxLDQ0NDIyLDQ0NDIzLDQ0NDI2LDQ0NDI3LDQ0NDI5LDQ0NDMwLDQ0NDMxLDQ0NDMzLDQ0NDM0LDQ0NDM1LDQ0NDM2LDQ0NDM3LDQ0NDM4LDQ0NDM5LDQ0NDQwLDQ0NDQxLDQ0NDQyLDQ0NDQzLDQ0NDQ2LDQ0NDQ3LDQ0NDQ4LDQ0NDQ5LDQ0NDUwLDQ0NDUxLDQ0NDUzLDQ0NDU0LDQ0NDU1LDQ0NDU2LDQ0NDU3LDQ0NDU4LDQ0NDU5LDQ0NDYwLDQ0NDYxLDQ0NDYyLDQ0NDYzLDQ0NDY0LDQ0NDY1LDQ0NDY2LDQ0NDY3LDQ0NDY4LDQ0NDY5LDQ0NDcwLDQ0NDcyLDQ0NDczLDQ0NDc0LDQ0NDc1LDQ0NDc2LDQ0NDc3LDQ0NDc4LDQ0NDc5LDQ0NDgyLDQ0NDgzLDQ0NDg1LDQ0NDg2LDQ0NDg3LDQ0NDg5LDQ0NDkwLDQ0NDkxLDQ0NDkyLDQ0NDkzLDQ0NDk0LDQ0NDk1LDQ0NDk4LDQ0NTAwLDQ0NTAxLDQ0NTAyLDQ0NTAzLDQ0NTA0LDQ0NTA1LDQ0NTA2LDQ0NTA3LDQ0NTA5LDQ0NTEwLDQ0NTExLDQ0NTEzLDQ0NTE0LDQ0NTE1LDQ0NTE3LDQ0NTE4LDQ0NTE5LDQ0NTIwLDQ0NTIxLDQ0NTIyLDQ0NTIzLDQ0NTI0LDQ0NTI1LDQ0NTI2LDQ0NTI3LDQ0NTI4LDQ0NTI5LDQ0NTMwLDQ0NTMxLDQ0NTMyLDQ0NTMzLDQ0NTM0LDQ0NTM1LDQ0NTM4LDQ0NTM5LDQ0NTQxLDQ0NTQyLDQ0NTQ2LDQ0NTQ3LDQ0NTQ4LDQ0NTQ5LDQ0NTUwLDQ0NTUxLDQ0NTU0LDQ0NTU2LDQ0NTU4LDQ0NTU5LDQ0NTYwLDQ0NTYxLDQ0NTYyLDQ0NTYzLDQ0NTY1LDQ0NTY2LDQ0NTY3LDQ0NTY4LDQ0NTY5LDQ0NTcwLDQ0NTcxLDQ0NTcyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NTczLDQ0NTc0LDQ0NTc1LDQ0NTc2LDQ0NTc3LDQ0NTc4LDQ0NTc5LDQ0NTgwLDQ0NTgxLDQ0NTgyLDQ0NTgzLDQ0NTg0LDQ0NTg1LDQ0NTg2LDQ0NTg3LDQ0NTg4LDQ0NTg5LDQ0NTkwLDQ0NTkxLDQ0NTk0LDQ0NTk1LDQ0NTk3LDQ0NTk4LDQ0NjAxLDQ0NjAzLDQ0NjA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0NjA1LDQ0NjA2LDQ0NjA3LDQ0NjEwLDQ0NjEyLDQ0NjE1LDQ0NjE2LDQ0NjE3LDQ0NjE5LDQ0NjIzLDQ0NjI1LDQ0NjI2LDQ0NjI3LDQ0NjI5LDQ0NjMxLDQ0NjMyLDQ0NjMzLDQ0NjM0LDQ0NjM1LDQ0NjM4LDQ0NjQyLDQ0NjQzLDQ0NjQ0LDQ0NjQ2LDQ0NjQ3LDQ0NjUwLDQ0NjUxLDQ0NjUzLDQ0NjU0LDQ0NjU1LDQ0NjU3LDQ0NjU4LDQ0NjU5LDQ0NjYwLDQ0NjYxLDQ0NjYyLDQ0NjYzLDQ0NjY2LDQ0NjcwLDQ0NjcxLDQ0NjcyLDQ0NjczLDQ0Njc0LDQ0Njc1LDQ0Njc4LDQ0Njc5LDQ0NjgwLDQ0NjgxLDQ0NjgyLDQ0NjgzLDQ0Njg1LDQ0Njg2LDQ0Njg3LDQ0Njg4LDQ0Njg5LDQ0NjkwLDQ0NjkxLDQ0NjkyLDQ0NjkzLDQ0Njk0LDQ0Njk1LDQ0Njk2LDQ0Njk3LDQ0Njk4LDQ0Njk5LDQ0NzAwLDQ0NzAxLDQ0NzAyLDQ0NzAzLDQ0NzA0LDQ0NzA1LDQ0NzA2LDQ0NzA3LDQ0NzA4LDQ0NzA5LDQ0NzEwLDQ0NzExLDQ0NzEyLDQ0NzEzLDQ0NzE0LDQ0NzE1LDQ0NzE2LDQ0NzE3LDQ0NzE4LDQ0NzE5LDQ0NzIwLDQ0NzIxLDQ0NzIyLDQ0NzIzLDQ0NzI0LDQ0NzI1LDQ0NzI2LDQ0NzI3LDQ0NzI4LDQ0NzI5LDQ0NzMwLDQ0NzMxLDQ0NzM1LDQ0NzM3LDQ0NzM4LDQ0NzM5LDQ0NzQxLDQ0NzQyLDQ0NzQzLDQ0NzQ0LDQ0NzQ1LDQ0NzQ2LDQ0NzQ3LDQ0NzUwLDQ0NzU0LDQ0NzU1LDQ0NzU2LDQ0NzU3LDQ0NzU4LDQ0NzU5LDQ0NzYyLDQ0NzYzLDQ0NzY1LDQ0NzY2LDQ0NzY3LDQ0NzY4LDQ0NzY5LDQ0NzcwLDQ0NzcxLDQ0NzcyLDQ0NzczLDQ0Nzc0LDQ0Nzc1LDQ0Nzc3LDQ0Nzc4LDQ0NzgwLDQ0NzgyLDQ0NzgzLDQ0Nzg0LDQ0Nzg1LDQ0Nzg2LDQ0Nzg3LDQ0Nzg5LDQ0NzkwLDQ0NzkxLDQ0NzkzLDQ0Nzk0LDQ0Nzk1LDQ0Nzk3LDQ0Nzk4LDQ0Nzk5LDQ0ODAwLDQ0ODAxLDQ0ODAyLDQ0ODAzLDQ0ODA0LDQ0ODA1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODA2LDQ0ODA5LDQ0ODEwLDQ0ODExLDQ0ODEyLDQ0ODE0LDQ0ODE1LDQ0ODE3LDQ0ODE4LDQ0ODE5LDQ0ODIwLDQ0ODIxLDQ0ODIyLDQ0ODIzLDQ0ODI0LDQ0ODI1LDQ0ODI2LDQ0ODI3LDQ0ODI4LDQ0ODI5LDQ0ODMwLDQ0ODMxLDQ0ODMyLDQ0ODMzLDQ0ODM0LDQ0ODM1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ0ODM2LDQ0ODM3LDQ0ODM4LDQ0ODM5LDQ0ODQwLDQ0ODQxLDQ0ODQyLDQ0ODQzLDQ0ODQ2LDQ0ODQ3LDQ0ODQ5LDQ0ODUxLDQ0ODUzLDQ0ODU0LDQ0ODU1LDQ0ODU2LDQ0ODU3LDQ0ODU4LDQ0ODU5LDQ0ODYyLDQ0ODY0LDQ0ODY4LDQ0ODY5LDQ0ODcwLDQ0ODcxLDQ0ODc0LDQ0ODc1LDQ0ODc2LDQ0ODc3LDQ0ODc4LDQ0ODc5LDQ0ODgxLDQ0ODgyLDQ0ODgzLDQ0ODg0LDQ0ODg1LDQ0ODg2LDQ0ODg3LDQ0ODg4LDQ0ODg5LDQ0ODkwLDQ0ODkxLDQ0ODk0LDQ0ODk1LDQ0ODk2LDQ0ODk3LDQ0ODk4LDQ0ODk5LDQ0OTAyLDQ0OTAzLDQ0OTA0LDQ0OTA1LDQ0OTA2LDQ0OTA3LDQ0OTA4LDQ0OTA5LDQ0OTEwLDQ0OTExLDQ0OTEyLDQ0OTEzLDQ0OTE0LDQ0OTE1LDQ0OTE2LDQ0OTE3LDQ0OTE4LDQ0OTE5LDQ0OTIwLDQ0OTIyLDQ0OTIzLDQ0OTI0LDQ0OTI1LDQ0OTI2LDQ0OTI3LDQ0OTI5LDQ0OTMwLDQ0OTMxLDQ0OTMzLDQ0OTM0LDQ0OTM1LDQ0OTM3LDQ0OTM4LDQ0OTM5LDQ0OTQwLDQ0OTQxLDQ0OTQyLDQ0OTQzLDQ0OTQ2LDQ0OTQ3LDQ0OTQ4LDQ0OTUwLDQ0OTUxLDQ0OTUyLDQ0OTUzLDQ0OTU0LDQ0OTU1LDQ0OTU3LDQ0OTU4LDQ0OTU5LDQ0OTYwLDQ0OTYxLDQ0OTYyLDQ0OTYzLDQ0OTY0LDQ0OTY1LDQ0OTY2LDQ0OTY3LDQ0OTY4LDQ0OTY5LDQ0OTcwLDQ0OTcxLDQ0OTcyLDQ0OTczLDQ0OTc0LDQ0OTc1LDQ0OTc2LDQ0OTc3LDQ0OTc4LDQ0OTc5LDQ0OTgwLDQ0OTgxLDQ0OTgyLDQ0OTgzLDQ0OTg2LDQ0OTg3LDQ0OTg5LDQ0OTkwLDQ0OTkxLDQ0OTkzLDQ0OTk0LDQ0OTk1LDQ0OTk2LDQ0OTk3LDQ0OTk4LDQ1MDAyLDQ1MDA0LDQ1MDA3LDQ1MDA4LDQ1MDA5LDQ1MDEwLDQ1MDExLDQ1MDEzLDQ1MDE0LDQ1MDE1LDQ1MDE2LDQ1MDE3LDQ1MDE4LDQ1MDE5LDQ1MDIxLDQ1MDIyLDQ1MDIzLDQ1MDI0LDQ1MDI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDI2LDQ1MDI3LDQ1MDI4LDQ1MDI5LDQ1MDMwLDQ1MDMxLDQ1MDM0LDQ1MDM1LDQ1MDM2LDQ1MDM3LDQ1MDM4LDQ1MDM5LDQ1MDQyLDQ1MDQzLDQ1MDQ1LDQ1MDQ2LDQ1MDQ3LDQ1MDQ5LDQ1MDUwLDQ1MDUxLDQ1MDUyLDQ1MDUzLDQ1MDU0LDQ1MDU1LDQ1MDU4LDQ1MDU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MDYxLDQ1MDYyLDQ1MDYzLDQ1MDY0LDQ1MDY1LDQ1MDY2LDQ1MDY3LDQ1MDY5LDQ1MDcwLDQ1MDcxLDQ1MDczLDQ1MDc0LDQ1MDc1LDQ1MDc3LDQ1MDc4LDQ1MDc5LDQ1MDgwLDQ1MDgxLDQ1MDgyLDQ1MDgzLDQ1MDg2LDQ1MDg3LDQ1MDg4LDQ1MDg5LDQ1MDkwLDQ1MDkxLDQ1MDkyLDQ1MDkzLDQ1MDk0LDQ1MDk1LDQ1MDk3LDQ1MDk4LDQ1MDk5LDQ1MTAwLDQ1MTAxLDQ1MTAyLDQ1MTAzLDQ1MTA0LDQ1MTA1LDQ1MTA2LDQ1MTA3LDQ1MTA4LDQ1MTA5LDQ1MTEwLDQ1MTExLDQ1MTEyLDQ1MTEzLDQ1MTE0LDQ1MTE1LDQ1MTE2LDQ1MTE3LDQ1MTE4LDQ1MTE5LDQ1MTIwLDQ1MTIxLDQ1MTIyLDQ1MTIzLDQ1MTI2LDQ1MTI3LDQ1MTI5LDQ1MTMxLDQ1MTMzLDQ1MTM1LDQ1MTM2LDQ1MTM3LDQ1MTM4LDQ1MTQyLDQ1MTQ0LDQ1MTQ2LDQ1MTQ3LDQ1MTQ4LDQ1MTUwLDQ1MTUxLDQ1MTUyLDQ1MTUzLDQ1MTU0LDQ1MTU1LDQ1MTU2LDQ1MTU3LDQ1MTU4LDQ1MTU5LDQ1MTYwLDQ1MTYxLDQ1MTYyLDQ1MTYzLDQ1MTY0LDQ1MTY1LDQ1MTY2LDQ1MTY3LDQ1MTY4LDQ1MTY5LDQ1MTcwLDQ1MTcxLDQ1MTcyLDQ1MTczLDQ1MTc0LDQ1MTc1LDQ1MTc2LDQ1MTc3LDQ1MTc4LDQ1MTc5LDQ1MTgyLDQ1MTgzLDQ1MTg1LDQ1MTg2LDQ1MTg3LDQ1MTg5LDQ1MTkwLDQ1MTkxLDQ1MTkyLDQ1MTkzLDQ1MTk0LDQ1MTk1LDQ1MTk4LDQ1MjAwLDQ1MjAyLDQ1MjAzLDQ1MjA0LDQ1MjA1LDQ1MjA2LDQ1MjA3LDQ1MjExLDQ1MjEzLDQ1MjE0LDQ1MjE5LDQ1MjIwLDQ1MjIxLDQ1MjIyLDQ1MjIzLDQ1MjI2LDQ1MjMyLDQ1MjM0LDQ1MjM4LDQ1MjM5LDQ1MjQxLDQ1MjQyLDQ1MjQzLDQ1MjQ1LDQ1MjQ2LDQ1MjQ3LDQ1MjQ4LDQ1MjQ5LDQ1MjUwLDQ1MjUxLDQ1MjU0LDQ1MjU4LDQ1MjU5LDQ1MjYwLDQ1MjYxLDQ1MjYyLDQ1MjYzLDQ1MjY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1MjY3LDQ1MjY5LDQ1MjcwLDQ1MjcxLDQ1MjczLDQ1Mjc0LDQ1Mjc1LDQ1Mjc2LDQ1Mjc3LDQ1Mjc4LDQ1Mjc5LDQ1MjgxLDQ1MjgyLDQ1MjgzLDQ1Mjg0LDQ1Mjg2LDQ1Mjg3LDQ1Mjg4LDQ1Mjg5LDQ1MjkwLDQ1MjkxLDQ1MjkyLDQ1MjkzLDQ1Mjk0LDQ1Mjk1LDQ1Mjk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1Mjk3LDQ1Mjk4LDQ1Mjk5LDQ1MzAwLDQ1MzAxLDQ1MzAyLDQ1MzAzLDQ1MzA0LDQ1MzA1LDQ1MzA2LDQ1MzA3LDQ1MzA4LDQ1MzA5LDQ1MzEwLDQ1MzExLDQ1MzEyLDQ1MzEzLDQ1MzE0LDQ1MzE1LDQ1MzE2LDQ1MzE3LDQ1MzE4LDQ1MzE5LDQ1MzIyLDQ1MzI1LDQ1MzI2LDQ1MzI3LDQ1MzI5LDQ1MzMyLDQ1MzMzLDQ1MzM0LDQ1MzM1LDQ1MzM4LDQ1MzQyLDQ1MzQzLDQ1MzQ0LDQ1MzQ1LDQ1MzQ2LDQ1MzUwLDQ1MzUxLDQ1MzUzLDQ1MzU0LDQ1MzU1LDQ1MzU3LDQ1MzU4LDQ1MzU5LDQ1MzYwLDQ1MzYxLDQ1MzYyLDQ1MzYzLDQ1MzY2LDQ1MzcwLDQ1MzcxLDQ1MzcyLDQ1MzczLDQ1Mzc0LDQ1Mzc1LDQ1Mzc4LDQ1Mzc5LDQ1MzgxLDQ1MzgyLDQ1MzgzLDQ1Mzg1LDQ1Mzg2LDQ1Mzg3LDQ1Mzg4LDQ1Mzg5LDQ1MzkwLDQ1MzkxLDQ1Mzk0LDQ1Mzk1LDQ1Mzk4LDQ1Mzk5LDQ1NDAxLDQ1NDAyLDQ1NDAzLDQ1NDA1LDQ1NDA2LDQ1NDA3LDQ1NDA5LDQ1NDEwLDQ1NDExLDQ1NDEyLDQ1NDEzLDQ1NDE0LDQ1NDE1LDQ1NDE2LDQ1NDE3LDQ1NDE4LDQ1NDE5LDQ1NDIwLDQ1NDIxLDQ1NDIyLDQ1NDIzLDQ1NDI0LDQ1NDI1LDQ1NDI2LDQ1NDI3LDQ1NDI4LDQ1NDI5LDQ1NDMwLDQ1NDMxLDQ1NDM0LDQ1NDM1LDQ1NDM3LDQ1NDM4LDQ1NDM5LDQ1NDQxLDQ1NDQzLDQ1NDQ0LDQ1NDQ1LDQ1NDQ2LDQ1NDQ3LDQ1NDUwLDQ1NDUyLDQ1NDU0LDQ1NDU1LDQ1NDU2LDQ1NDU3LDQ1NDYxLDQ1NDYyLDQ1NDYzLDQ1NDY1LDQ1NDY2LDQ1NDY3LDQ1NDY5LDQ1NDcwLDQ1NDcxLDQ1NDcyLDQ1NDczLDQ1NDc0LDQ1NDc1LDQ1NDc2LDQ1NDc3LDQ1NDc4LDQ1NDc5LDQ1NDgxLDQ1NDgyLDQ1NDgzLDQ1NDg0LDQ1NDg1LDQ1NDg2LDQ1NDg3LDQ1NDg4LDQ1NDg5LDQ1NDkwLDQ1NDkxLDQ1NDkyLDQ1NDkzLDQ1NDk0LDQ1NDk1LDQ1NDk2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NDk3LDQ1NDk4LDQ1NDk5LDQ1NTAwLDQ1NTAxLDQ1NTAyLDQ1NTAzLDQ1NTA0LDQ1NTA1LDQ1NTA2LDQ1NTA3LDQ1NTA4LDQ1NTA5LDQ1NTEwLDQ1NTExLDQ1NTEyLDQ1NTEzLDQ1NTE0LDQ1NTE1LDQ1NTE3LDQ1NTE4LDQ1NTE5LDQ1NTIxLDQ1NTIyLDQ1NTIzLDQ1NTI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NTI2LDQ1NTI3LDQ1NTI4LDQ1NTI5LDQ1NTMwLDQ1NTMxLDQ1NTM0LDQ1NTM2LDQ1NTM3LDQ1NTM4LDQ1NTM5LDQ1NTQwLDQ1NTQxLDQ1NTQyLDQ1NTQzLDQ1NTQ2LDQ1NTQ3LDQ1NTQ5LDQ1NTUwLDQ1NTUxLDQ1NTUzLDQ1NTU0LDQ1NTU1LDQ1NTU2LDQ1NTU3LDQ1NTU4LDQ1NTU5LDQ1NTYwLDQ1NTYyLDQ1NTY0LDQ1NTY2LDQ1NTY3LDQ1NTY4LDQ1NTY5LDQ1NTcwLDQ1NTcxLDQ1NTc0LDQ1NTc1LDQ1NTc3LDQ1NTc4LDQ1NTgxLDQ1NTgyLDQ1NTgzLDQ1NTg0LDQ1NTg1LDQ1NTg2LDQ1NTg3LDQ1NTkwLDQ1NTkyLDQ1NTk0LDQ1NTk1LDQ1NTk2LDQ1NTk3LDQ1NTk4LDQ1NTk5LDQ1NjAxLDQ1NjAyLDQ1NjAzLDQ1NjA0LDQ1NjA1LDQ1NjA2LDQ1NjA3LDQ1NjA4LDQ1NjA5LDQ1NjEwLDQ1NjExLDQ1NjEyLDQ1NjEzLDQ1NjE0LDQ1NjE1LDQ1NjE2LDQ1NjE3LDQ1NjE4LDQ1NjE5LDQ1NjIxLDQ1NjIyLDQ1NjIzLDQ1NjI0LDQ1NjI1LDQ1NjI2LDQ1NjI3LDQ1NjI5LDQ1NjMwLDQ1NjMxLDQ1NjMyLDQ1NjMzLDQ1NjM0LDQ1NjM1LDQ1NjM2LDQ1NjM3LDQ1NjM4LDQ1NjM5LDQ1NjQwLDQ1NjQxLDQ1NjQyLDQ1NjQzLDQ1NjQ0LDQ1NjQ1LDQ1NjQ2LDQ1NjQ3LDQ1NjQ4LDQ1NjQ5LDQ1NjUwLDQ1NjUxLDQ1NjUyLDQ1NjUzLDQ1NjU0LDQ1NjU1LDQ1NjU3LDQ1NjU4LDQ1NjU5LDQ1NjYxLDQ1NjYyLDQ1NjYzLDQ1NjY1LDQ1NjY2LDQ1NjY3LDQ1NjY4LDQ1NjY5LDQ1NjcwLDQ1NjcxLDQ1Njc0LDQ1Njc1LDQ1Njc2LDQ1Njc3LDQ1Njc4LDQ1Njc5LDQ1NjgwLDQ1NjgxLDQ1NjgyLDQ1NjgzLDQ1Njg2LDQ1Njg3LDQ1Njg4LDQ1Njg5LDQ1NjkwLDQ1NjkxLDQ1NjkzLDQ1Njk0LDQ1Njk1LDQ1Njk2LDQ1Njk3LDQ1Njk4LDQ1Njk5LDQ1NzAyLDQ1NzAzLDQ1NzA0LDQ1NzA2LDQ1NzA3LDQ1NzA4LDQ1NzA5LDQ1NzEwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NzExLDQ1NzE0LDQ1NzE1LDQ1NzE3LDQ1NzE4LDQ1NzE5LDQ1NzIzLDQ1NzI0LDQ1NzI1LDQ1NzI2LDQ1NzI3LDQ1NzMwLDQ1NzMyLDQ1NzM1LDQ1NzM2LDQ1NzM3LDQ1NzM5LDQ1NzQxLDQ1NzQyLDQ1NzQzLDQ1NzQ1LDQ1NzQ2LDQ1NzQ3LDQ1NzQ5LDQ1NzUwLDQ1NzUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1NzUyLDQ1NzUzLDQ1NzU0LDQ1NzU1LDQ1NzU2LDQ1NzU3LDQ1NzU4LDQ1NzU5LDQ1NzYwLDQ1NzYxLDQ1NzYyLDQ1NzYzLDQ1NzY0LDQ1NzY1LDQ1NzY2LDQ1NzY3LDQ1NzcwLDQ1NzcxLDQ1NzczLDQ1Nzc0LDQ1Nzc1LDQ1Nzc3LDQ1Nzc5LDQ1NzgwLDQ1NzgxLDQ1NzgyLDQ1NzgzLDQ1Nzg2LDQ1Nzg4LDQ1NzkwLDQ1NzkxLDQ1NzkyLDQ1NzkzLDQ1Nzk1LDQ1Nzk5LDQ1ODAxLDQ1ODAyLDQ1ODA4LDQ1ODA5LDQ1ODEwLDQ1ODE0LDQ1ODIwLDQ1ODIxLDQ1ODIyLDQ1ODI2LDQ1ODI3LDQ1ODI5LDQ1ODMwLDQ1ODMxLDQ1ODMzLDQ1ODM0LDQ1ODM1LDQ1ODM2LDQ1ODM3LDQ1ODM4LDQ1ODM5LDQ1ODQyLDQ1ODQ2LDQ1ODQ3LDQ1ODQ4LDQ1ODQ5LDQ1ODUwLDQ1ODUxLDQ1ODUzLDQ1ODU0LDQ1ODU1LDQ1ODU2LDQ1ODU3LDQ1ODU4LDQ1ODU5LDQ1ODYwLDQ1ODYxLDQ1ODYyLDQ1ODYzLDQ1ODY0LDQ1ODY1LDQ1ODY2LDQ1ODY3LDQ1ODY4LDQ1ODY5LDQ1ODcwLDQ1ODcxLDQ1ODcyLDQ1ODczLDQ1ODc0LDQ1ODc1LDQ1ODc2LDQ1ODc3LDQ1ODc4LDQ1ODc5LDQ1ODgwLDQ1ODgxLDQ1ODgyLDQ1ODgzLDQ1ODg0LDQ1ODg1LDQ1ODg2LDQ1ODg3LDQ1ODg4LDQ1ODg5LDQ1ODkwLDQ1ODkxLDQ1ODkyLDQ1ODkzLDQ1ODk0LDQ1ODk1LDQ1ODk2LDQ1ODk3LDQ1ODk4LDQ1ODk5LDQ1OTAwLDQ1OTAxLDQ1OTAyLDQ1OTAzLDQ1OTA0LDQ1OTA1LDQ1OTA2LDQ1OTA3LDQ1OTExLDQ1OTEzLDQ1OTE0LDQ1OTE3LDQ1OTIwLDQ1OTIxLDQ1OTIyLDQ1OTIzLDQ1OTI2LDQ1OTI4LDQ1OTMwLDQ1OTMyLDQ1OTMzLDQ1OTM1LDQ1OTM4LDQ1OTM5LDQ1OTQxLDQ1OTQyLDQ1OTQzLDQ1OTQ1LDQ1OTQ2LDQ1OTQ3LDQ1OTQ4LDQ1OTQ5LDQ1OTUwLDQ1OTUxLDQ1OTU0LDQ1OTU4LDQ1OTU5LDQ1OTYwLDQ1OTYxLDQ1OTYyLDQ1OTYzLDQ1OTY1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTY2LDQ1OTY3LDQ1OTY5LDQ1OTcwLDQ1OTcxLDQ1OTczLDQ1OTc0LDQ1OTc1LDQ1OTc2LDQ1OTc3LDQ1OTc4LDQ1OTc5LDQ1OTgwLDQ1OTgxLDQ1OTgyLDQ1OTgzLDQ1OTg2LDQ1OTg3LDQ1OTg4LDQ1OTg5LDQ1OTkwLDQ1OTkxLDQ1OTkzLDQ1OTk0LDQ1OTk1LDQ1OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ1OTk4LDQ1OTk5LDQ2MDAwLDQ2MDAxLDQ2MDAyLDQ2MDAzLDQ2MDA0LDQ2MDA1LDQ2MDA2LDQ2MDA3LDQ2MDA4LDQ2MDA5LDQ2MDEwLDQ2MDExLDQ2MDEyLDQ2MDEzLDQ2MDE0LDQ2MDE1LDQ2MDE2LDQ2MDE3LDQ2MDE4LDQ2MDE5LDQ2MDIyLDQ2MDIzLDQ2MDI1LDQ2MDI2LDQ2MDI5LDQ2MDMxLDQ2MDMzLDQ2MDM0LDQ2MDM1LDQ2MDM4LDQ2MDQwLDQ2MDQyLDQ2MDQ0LDQ2MDQ2LDQ2MDQ3LDQ2MDQ5LDQ2MDUwLDQ2MDUxLDQ2MDUzLDQ2MDU0LDQ2MDU1LDQ2MDU3LDQ2MDU4LDQ2MDU5LDQ2MDYwLDQ2MDYxLDQ2MDYyLDQ2MDYzLDQ2MDY0LDQ2MDY1LDQ2MDY2LDQ2MDY3LDQ2MDY4LDQ2MDY5LDQ2MDcwLDQ2MDcxLDQ2MDcyLDQ2MDczLDQ2MDc0LDQ2MDc1LDQ2MDc3LDQ2MDc4LDQ2MDc5LDQ2MDgwLDQ2MDgxLDQ2MDgyLDQ2MDgzLDQ2MDg0LDQ2MDg1LDQ2MDg2LDQ2MDg3LDQ2MDg4LDQ2MDg5LDQ2MDkwLDQ2MDkxLDQ2MDkyLDQ2MDkzLDQ2MDk0LDQ2MDk1LDQ2MDk3LDQ2MDk4LDQ2MDk5LDQ2MTAwLDQ2MTAxLDQ2MTAyLDQ2MTAzLDQ2MTA1LDQ2MTA2LDQ2MTA3LDQ2MTA5LDQ2MTEwLDQ2MTExLDQ2MTEzLDQ2MTE0LDQ2MTE1LDQ2MTE2LDQ2MTE3LDQ2MTE4LDQ2MTE5LDQ2MTIyLDQ2MTI0LDQ2MTI1LDQ2MTI2LDQ2MTI3LDQ2MTI4LDQ2MTI5LDQ2MTMwLDQ2MTMxLDQ2MTMzLDQ2MTM0LDQ2MTM1LDQ2MTM2LDQ2MTM3LDQ2MTM4LDQ2MTM5LDQ2MTQwLDQ2MTQxLDQ2MTQyLDQ2MTQzLDQ2MTQ0LDQ2MTQ1LDQ2MTQ2LDQ2MTQ3LDQ2MTQ4LDQ2MTQ5LDQ2MTUwLDQ2MTUxLDQ2MTUyLDQ2MTUzLDQ2MTU0LDQ2MTU1LDQ2MTU2LDQ2MTU3LDQ2MTU4LDQ2MTU5LDQ2MTYyLDQ2MTYzLDQ2MTY1LDQ2MTY2LDQ2MTY3LDQ2MTY5LDQ2MTcwLDQ2MTcxLDQ2MTcyLDQ2MTczLDQ2MTc0LDQ2MTc1LDQ2MTc4LDQ2MTgwLDQ2MTgyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2MTgzLDQ2MTg0LDQ2MTg1LDQ2MTg2LDQ2MTg3LDQ2MTg5LDQ2MTkwLDQ2MTkxLDQ2MTkyLDQ2MTkzLDQ2MTk0LDQ2MTk1LDQ2MTk2LDQ2MTk3LDQ2MTk4LDQ2MTk5LDQ2MjAwLDQ2MjAxLDQ2MjAyLDQ2MjAzLDQ2MjA0LDQ2MjA1LDQ2MjA2LDQ2MjA3LDQ2MjA5LDQ2MjEwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2MjExLDQ2MjEyLDQ2MjEzLDQ2MjE0LDQ2MjE1LDQ2MjE3LDQ2MjE4LDQ2MjE5LDQ2MjIwLDQ2MjIxLDQ2MjIyLDQ2MjIzLDQ2MjI0LDQ2MjI1LDQ2MjI2LDQ2MjI3LDQ2MjI4LDQ2MjI5LDQ2MjMwLDQ2MjMxLDQ2MjMyLDQ2MjMzLDQ2MjM0LDQ2MjM1LDQ2MjM2LDQ2MjM4LDQ2MjM5LDQ2MjQwLDQ2MjQxLDQ2MjQyLDQ2MjQzLDQ2MjQ1LDQ2MjQ2LDQ2MjQ3LDQ2MjQ5LDQ2MjUwLDQ2MjUxLDQ2MjUzLDQ2MjU0LDQ2MjU1LDQ2MjU2LDQ2MjU3LDQ2MjU4LDQ2MjU5LDQ2MjYwLDQ2MjYyLDQ2MjY0LDQ2MjY2LDQ2MjY3LDQ2MjY4LDQ2MjY5LDQ2MjcwLDQ2MjcxLDQ2MjczLDQ2Mjc0LDQ2Mjc1LDQ2Mjc3LDQ2Mjc4LDQ2Mjc5LDQ2MjgxLDQ2MjgyLDQ2MjgzLDQ2Mjg0LDQ2Mjg1LDQ2Mjg2LDQ2Mjg3LDQ2Mjg5LDQ2MjkwLDQ2MjkxLDQ2MjkyLDQ2Mjk0LDQ2Mjk1LDQ2Mjk2LDQ2Mjk3LDQ2Mjk4LDQ2Mjk5LDQ2MzAyLDQ2MzAzLDQ2MzA1LDQ2MzA2LDQ2MzA5LDQ2MzExLDQ2MzEyLDQ2MzEzLDQ2MzE0LDQ2MzE1LDQ2MzE4LDQ2MzIwLDQ2MzIyLDQ2MzIzLDQ2MzI0LDQ2MzI1LDQ2MzI2LDQ2MzI3LDQ2MzI5LDQ2MzMwLDQ2MzMxLDQ2MzMyLDQ2MzMzLDQ2MzM0LDQ2MzM1LDQ2MzM2LDQ2MzM3LDQ2MzM4LDQ2MzM5LDQ2MzQwLDQ2MzQxLDQ2MzQyLDQ2MzQzLDQ2MzQ0LDQ2MzQ1LDQ2MzQ2LDQ2MzQ3LDQ2MzQ4LDQ2MzQ5LDQ2MzUwLDQ2MzUxLDQ2MzUyLDQ2MzUzLDQ2MzU0LDQ2MzU1LDQ2MzU4LDQ2MzU5LDQ2MzYxLDQ2MzYyLDQ2MzY1LDQ2MzY2LDQ2MzY3LDQ2MzY4LDQ2MzY5LDQ2MzcwLDQ2MzcxLDQ2Mzc0LDQ2Mzc5LDQ2MzgwLDQ2MzgxLDQ2MzgyLDQ2MzgzLDQ2Mzg2LDQ2Mzg3LDQ2Mzg5LDQ2MzkwLDQ2MzkxLDQ2MzkzLDQ2Mzk0LDQ2Mzk1LDQ2Mzk2LDQ2Mzk3LDQ2Mzk4LDQ2Mzk5LDQ2NDAyLDQ2NDA2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2NDA3LDQ2NDA4LDQ2NDA5LDQ2NDEwLDQ2NDE0LDQ2NDE1LDQ2NDE3LDQ2NDE4LDQ2NDE5LDQ2NDIxLDQ2NDIyLDQ2NDIzLDQ2NDI0LDQ2NDI1LDQ2NDI2LDQ2NDI3LDQ2NDMwLDQ2NDM0LDQ2NDM1LDQ2NDM2LDQ2NDM3LDQ2NDM4LDQ2NDM5LDQ2NDQwLDQ2NDQxLDQ2NDQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2NDQzLDQ2NDQ0LDQ2NDQ1LDQ2NDQ2LDQ2NDQ3LDQ2NDQ4LDQ2NDQ5LDQ2NDUwLDQ2NDUxLDQ2NDUyLDQ2NDUzLDQ2NDU0LDQ2NDU1LDQ2NDU2LDQ2NDU3LDQ2NDU4LDQ2NDU5LDQ2NDYwLDQ2NDYxLDQ2NDYyLDQ2NDYzLDQ2NDY0LDQ2NDY1LDQ2NDY2LDQ2NDY3LDQ2NDY4LDQ2NDY5LDQ2NDcwLDQ2NDcxLDQ2NDcyLDQ2NDczLDQ2NDc0LDQ2NDc1LDQ2NDc2LDQ2NDc3LDQ2NDc4LDQ2NDc5LDQ2NDgwLDQ2NDgxLDQ2NDgyLDQ2NDgzLDQ2NDg0LDQ2NDg1LDQ2NDg2LDQ2NDg3LDQ2NDg4LDQ2NDg5LDQ2NDkwLDQ2NDkxLDQ2NDkyLDQ2NDkzLDQ2NDk0LDQ2NDk1LDQ2NDk4LDQ2NDk5LDQ2NTAxLDQ2NTAyLDQ2NTAzLDQ2NTA1LDQ2NTA4LDQ2NTA5LDQ2NTEwLDQ2NTExLDQ2NTE0LDQ2NTE4LDQ2NTE5LDQ2NTIwLDQ2NTIxLDQ2NTIyLDQ2NTI2LDQ2NTI3LDQ2NTI5LDQ2NTMwLDQ2NTMxLDQ2NTMzLDQ2NTM0LDQ2NTM1LDQ2NTM2LDQ2NTM3LDQ2NTM4LDQ2NTM5LDQ2NTQyLDQ2NTQ2LDQ2NTQ3LDQ2NTQ4LDQ2NTQ5LDQ2NTUwLDQ2NTUxLDQ2NTUzLDQ2NTU0LDQ2NTU1LDQ2NTU2LDQ2NTU3LDQ2NTU4LDQ2NTU5LDQ2NTYwLDQ2NTYxLDQ2NTYyLDQ2NTYzLDQ2NTY0LDQ2NTY1LDQ2NTY2LDQ2NTY3LDQ2NTY4LDQ2NTY5LDQ2NTcwLDQ2NTcxLDQ2NTczLDQ2NTc0LDQ2NTc1LDQ2NTc2LDQ2NTc3LDQ2NTc4LDQ2NTc5LDQ2NTgwLDQ2NTgxLDQ2NTgyLDQ2NTgzLDQ2NTg0LDQ2NTg1LDQ2NTg2LDQ2NTg3LDQ2NTg4LDQ2NTg5LDQ2NTkwLDQ2NTkxLDQ2NTkyLDQ2NTkzLDQ2NTk0LDQ2NTk1LDQ2NTk2LDQ2NTk3LDQ2NTk4LDQ2NTk5LDQ2NjAwLDQ2NjAxLDQ2NjAyLDQ2NjAzLDQ2NjA0LDQ2NjA1LDQ2NjA2LDQ2NjA3LDQ2NjEwLDQ2NjExLDQ2NjEzLDQ2NjE0LDQ2NjE1LDQ2NjE3LDQ2NjE4LDQ2NjE5LDQ2NjIwLDQ2NjIxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2NjIyLDQ2NjIzLDQ2NjI0LDQ2NjI1LDQ2NjI2LDQ2NjI3LDQ2NjI4LDQ2NjMwLDQ2NjMxLDQ2NjMyLDQ2NjMzLDQ2NjM0LDQ2NjM1LDQ2NjM3LDQ2NjM4LDQ2NjM5LDQ2NjQwLDQ2NjQxLDQ2NjQyLDQ2NjQzLDQ2NjQ1LDQ2NjQ2LDQ2NjQ3LDQ2NjQ4LDQ2NjQ5LDQ2NjUwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2NjUxLDQ2NjUyLDQ2NjUzLDQ2NjU0LDQ2NjU1LDQ2NjU2LDQ2NjU3LDQ2NjU4LDQ2NjU5LDQ2NjYwLDQ2NjYxLDQ2NjYyLDQ2NjYzLDQ2NjY1LDQ2NjY2LDQ2NjY3LDQ2NjY4LDQ2NjY5LDQ2NjcwLDQ2NjcxLDQ2NjcyLDQ2NjczLDQ2Njc0LDQ2Njc1LDQ2Njc2LDQ2Njc3LDQ2Njc4LDQ2Njc5LDQ2NjgwLDQ2NjgxLDQ2NjgyLDQ2NjgzLDQ2Njg0LDQ2Njg1LDQ2Njg2LDQ2Njg3LDQ2Njg4LDQ2Njg5LDQ2NjkwLDQ2NjkxLDQ2NjkzLDQ2Njk0LDQ2Njk1LDQ2Njk3LDQ2Njk4LDQ2Njk5LDQ2NzAwLDQ2NzAxLDQ2NzAyLDQ2NzAzLDQ2NzA0LDQ2NzA1LDQ2NzA2LDQ2NzA3LDQ2NzA4LDQ2NzA5LDQ2NzEwLDQ2NzExLDQ2NzEyLDQ2NzEzLDQ2NzE0LDQ2NzE1LDQ2NzE2LDQ2NzE3LDQ2NzE4LDQ2NzE5LDQ2NzIwLDQ2NzIxLDQ2NzIyLDQ2NzIzLDQ2NzI0LDQ2NzI1LDQ2NzI2LDQ2NzI3LDQ2NzI4LDQ2NzI5LDQ2NzMwLDQ2NzMxLDQ2NzMyLDQ2NzMzLDQ2NzM0LDQ2NzM1LDQ2NzM2LDQ2NzM3LDQ2NzM4LDQ2NzM5LDQ2NzQwLDQ2NzQxLDQ2NzQyLDQ2NzQzLDQ2NzQ0LDQ2NzQ1LDQ2NzQ2LDQ2NzQ3LDQ2NzUwLDQ2NzUxLDQ2NzUzLDQ2NzU0LDQ2NzU1LDQ2NzU3LDQ2NzU4LDQ2NzU5LDQ2NzYwLDQ2NzYxLDQ2NzYyLDQ2NzY1LDQ2NzY2LDQ2NzY3LDQ2NzY4LDQ2NzcwLDQ2NzcxLDQ2NzcyLDQ2NzczLDQ2Nzc0LDQ2Nzc1LDQ2Nzc2LDQ2Nzc3LDQ2Nzc4LDQ2Nzc5LDQ2NzgwLDQ2NzgxLDQ2NzgyLDQ2NzgzLDQ2Nzg0LDQ2Nzg1LDQ2Nzg2LDQ2Nzg3LDQ2Nzg4LDQ2Nzg5LDQ2NzkwLDQ2NzkxLDQ2NzkyLDQ2NzkzLDQ2Nzk0LDQ2Nzk1LDQ2Nzk2LDQ2Nzk3LDQ2Nzk4LDQ2Nzk5LDQ2ODAwLDQ2ODAxLDQ2ODAyLDQ2ODAzLDQ2ODA1LDQ2ODA2LDQ2ODA3LDQ2ODA4LDQ2ODA5LDQ2ODEwLDQ2ODExLDQ2ODEyLDQ2ODEzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2ODE0LDQ2ODE1LDQ2ODE2LDQ2ODE3LDQ2ODE4LDQ2ODE5LDQ2ODIwLDQ2ODIxLDQ2ODIyLDQ2ODIzLDQ2ODI0LDQ2ODI1LDQ2ODI2LDQ2ODI3LDQ2ODI4LDQ2ODI5LDQ2ODMwLDQ2ODMxLDQ2ODMzLDQ2ODM0LDQ2ODM1LDQ2ODM3LDQ2ODM4LDQ2ODM5LDQ2ODQxLDQ2ODQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ2ODQzLDQ2ODQ0LDQ2ODQ1LDQ2ODQ2LDQ2ODQ3LDQ2ODUwLDQ2ODUxLDQ2ODUyLDQ2ODU0LDQ2ODU1LDQ2ODU2LDQ2ODU3LDQ2ODU4LDQ2ODU5LDQ2ODYwLDQ2ODYxLDQ2ODYyLDQ2ODYzLDQ2ODY0LDQ2ODY1LDQ2ODY2LDQ2ODY3LDQ2ODY4LDQ2ODY5LDQ2ODcwLDQ2ODcxLDQ2ODcyLDQ2ODczLDQ2ODc0LDQ2ODc1LDQ2ODc2LDQ2ODc3LDQ2ODc4LDQ2ODc5LDQ2ODgwLDQ2ODgxLDQ2ODgyLDQ2ODgzLDQ2ODg0LDQ2ODg1LDQ2ODg2LDQ2ODg3LDQ2ODkwLDQ2ODkxLDQ2ODkzLDQ2ODk0LDQ2ODk3LDQ2ODk4LDQ2ODk5LDQ2OTAwLDQ2OTAxLDQ2OTAyLDQ2OTAzLDQ2OTA2LDQ2OTA4LDQ2OTA5LDQ2OTEwLDQ2OTExLDQ2OTEyLDQ2OTEzLDQ2OTE0LDQ2OTE1LDQ2OTE3LDQ2OTE4LDQ2OTE5LDQ2OTIxLDQ2OTIyLDQ2OTIzLDQ2OTI1LDQ2OTI2LDQ2OTI3LDQ2OTI4LDQ2OTI5LDQ2OTMwLDQ2OTMxLDQ2OTM0LDQ2OTM1LDQ2OTM2LDQ2OTM3LDQ2OTM4LDQ2OTM5LDQ2OTQwLDQ2OTQxLDQ2OTQyLDQ2OTQzLDQ2OTQ1LDQ2OTQ2LDQ2OTQ3LDQ2OTQ5LDQ2OTUwLDQ2OTUxLDQ2OTUzLDQ2OTU0LDQ2OTU1LDQ2OTU2LDQ2OTU3LDQ2OTU4LDQ2OTU5LDQ2OTYyLDQ2OTY0LDQ2OTY2LDQ2OTY3LDQ2OTY4LDQ2OTY5LDQ2OTcwLDQ2OTcxLDQ2OTc0LDQ2OTc1LDQ2OTc3LDQ2OTc4LDQ2OTc5LDQ2OTgxLDQ2OTgyLDQ2OTgzLDQ2OTg0LDQ2OTg1LDQ2OTg2LDQ2OTg3LDQ2OTkwLDQ2OTk1LDQ2OTk2LDQ2OTk3LDQ3MDAyLDQ3MDAzLDQ3MDA1LDQ3MDA2LDQ3MDA3LDQ3MDA5LDQ3MDEwLDQ3MDExLDQ3MDEyLDQ3MDEzLDQ3MDE0LDQ3MDE1LDQ3MDE4LDQ3MDIyLDQ3MDIzLDQ3MDI0LDQ3MDI1LDQ3MDI2LDQ3MDI3LDQ3MDMwLDQ3MDMxLDQ3MDMzLDQ3MDM0LDQ3MDM1LDQ3MDM2LDQ3MDM3LDQ3MDM4LDQ3MDM5LDQ3MDQwLDQ3MDQxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3MDQyLDQ3MDQzLDQ3MDQ0LDQ3MDQ1LDQ3MDQ2LDQ3MDQ4LDQ3MDUwLDQ3MDUxLDQ3MDUyLDQ3MDUzLDQ3MDU0LDQ3MDU1LDQ3MDU2LDQ3MDU3LDQ3MDU4LDQ3MDU5LDQ3MDYwLDQ3MDYxLDQ3MDYyLDQ3MDYzLDQ3MDY0LDQ3MDY1LDQ3MDY2LDQ3MDY3LDQ3MDY4LDQ3MDY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3MDcwLDQ3MDcxLDQ3MDcyLDQ3MDczLDQ3MDc0LDQ3MDc1LDQ3MDc2LDQ3MDc3LDQ3MDc4LDQ3MDc5LDQ3MDgwLDQ3MDgxLDQ3MDgyLDQ3MDgzLDQ3MDg2LDQ3MDg3LDQ3MDg5LDQ3MDkwLDQ3MDkxLDQ3MDkzLDQ3MDk0LDQ3MDk1LDQ3MDk2LDQ3MDk3LDQ3MDk4LDQ3MDk5LDQ3MTAyLDQ3MTA2LDQ3MTA3LDQ3MTA4LDQ3MTA5LDQ3MTEwLDQ3MTE0LDQ3MTE1LDQ3MTE3LDQ3MTE4LDQ3MTE5LDQ3MTIxLDQ3MTIyLDQ3MTIzLDQ3MTI0LDQ3MTI1LDQ3MTI2LDQ3MTI3LDQ3MTMwLDQ3MTMyLDQ3MTM0LDQ3MTM1LDQ3MTM2LDQ3MTM3LDQ3MTM4LDQ3MTM5LDQ3MTQyLDQ3MTQzLDQ3MTQ1LDQ3MTQ2LDQ3MTQ3LDQ3MTQ5LDQ3MTUwLDQ3MTUxLDQ3MTUyLDQ3MTUzLDQ3MTU0LDQ3MTU1LDQ3MTU4LDQ3MTYyLDQ3MTYzLDQ3MTY0LDQ3MTY1LDQ3MTY2LDQ3MTY3LDQ3MTY5LDQ3MTcwLDQ3MTcxLDQ3MTczLDQ3MTc0LDQ3MTc1LDQ3MTc2LDQ3MTc3LDQ3MTc4LDQ3MTc5LDQ3MTgwLDQ3MTgxLDQ3MTgyLDQ3MTgzLDQ3MTg0LDQ3MTg2LDQ3MTg4LDQ3MTg5LDQ3MTkwLDQ3MTkxLDQ3MTkyLDQ3MTkzLDQ3MTk0LDQ3MTk1LDQ3MTk4LDQ3MTk5LDQ3MjAxLDQ3MjAyLDQ3MjAzLDQ3MjA1LDQ3MjA2LDQ3MjA3LDQ3MjA4LDQ3MjA5LDQ3MjEwLDQ3MjExLDQ3MjE0LDQ3MjE2LDQ3MjE4LDQ3MjE5LDQ3MjIwLDQ3MjIxLDQ3MjIyLDQ3MjIzLDQ3MjI1LDQ3MjI2LDQ3MjI3LDQ3MjI5LDQ3MjMwLDQ3MjMxLDQ3MjMyLDQ3MjMzLDQ3MjM0LDQ3MjM1LDQ3MjM2LDQ3MjM3LDQ3MjM4LDQ3MjM5LDQ3MjQwLDQ3MjQxLDQ3MjQyLDQ3MjQzLDQ3MjQ0LDQ3MjQ2LDQ3MjQ3LDQ3MjQ4LDQ3MjQ5LDQ3MjUwLDQ3MjUxLDQ3MjUyLDQ3MjUzLDQ3MjU0LDQ3MjU1LDQ3MjU2LDQ3MjU3LDQ3MjU4LDQ3MjU5LDQ3MjYwLDQ3MjYxLDQ3MjYyLDQ3MjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3MjY0LDQ3MjY1LDQ3MjY2LDQ3MjY3LDQ3MjY4LDQ3MjY5LDQ3MjcwLDQ3MjcxLDQ3MjczLDQ3Mjc0LDQ3Mjc1LDQ3Mjc2LDQ3Mjc3LDQ3Mjc4LDQ3Mjc5LDQ3MjgxLDQ3MjgyLDQ3MjgzLDQ3Mjg1LDQ3Mjg2LDQ3Mjg3LDQ3Mjg5LDQ3MjkwLDQ3MjkxLDQ3MjkyLDQ3MjkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3Mjk0LDQ3Mjk1LDQ3Mjk4LDQ3MzAwLDQ3MzAyLDQ3MzAzLDQ3MzA0LDQ3MzA1LDQ3MzA2LDQ3MzA3LDQ3MzA5LDQ3MzEwLDQ3MzExLDQ3MzEzLDQ3MzE0LDQ3MzE1LDQ3MzE3LDQ3MzE4LDQ3MzE5LDQ3MzIwLDQ3MzIxLDQ3MzIyLDQ3MzIzLDQ3MzI0LDQ3MzI2LDQ3MzI4LDQ3MzMwLDQ3MzMxLDQ3MzMyLDQ3MzMzLDQ3MzM0LDQ3MzM1LDQ3MzM4LDQ3MzM5LDQ3MzQxLDQ3MzQyLDQ3MzQzLDQ3MzQ1LDQ3MzQ2LDQ3MzQ3LDQ3MzQ4LDQ3MzQ5LDQ3MzUwLDQ3MzUxLDQ3MzU0LDQ3MzU2LDQ3MzU4LDQ3MzU5LDQ3MzYwLDQ3MzYxLDQ3MzYyLDQ3MzYzLDQ3MzY1LDQ3MzY2LDQ3MzY3LDQ3MzY4LDQ3MzY5LDQ3MzcwLDQ3MzcxLDQ3MzcyLDQ3MzczLDQ3Mzc0LDQ3Mzc1LDQ3Mzc2LDQ3Mzc3LDQ3Mzc4LDQ3Mzc5LDQ3MzgwLDQ3MzgxLDQ3MzgyLDQ3MzgzLDQ3Mzg1LDQ3Mzg2LDQ3Mzg3LDQ3Mzg4LDQ3Mzg5LDQ3MzkwLDQ3MzkxLDQ3MzkzLDQ3Mzk0LDQ3Mzk1LDQ3Mzk2LDQ3Mzk3LDQ3Mzk4LDQ3Mzk5LDQ3NDAwLDQ3NDAxLDQ3NDAyLDQ3NDAzLDQ3NDA0LDQ3NDA1LDQ3NDA2LDQ3NDA3LDQ3NDA4LDQ3NDA5LDQ3NDEwLDQ3NDExLDQ3NDEyLDQ3NDEzLDQ3NDE0LDQ3NDE1LDQ3NDE2LDQ3NDE3LDQ3NDE4LDQ3NDE5LDQ3NDIyLDQ3NDIzLDQ3NDI1LDQ3NDI2LDQ3NDI3LDQ3NDI5LDQ3NDMwLDQ3NDMxLDQ3NDMyLDQ3NDMzLDQ3NDM0LDQ3NDM1LDQ3NDM3LDQ3NDM4LDQ3NDQwLDQ3NDQyLDQ3NDQzLDQ3NDQ0LDQ3NDQ1LDQ3NDQ2LDQ3NDQ3LDQ3NDUwLDQ3NDUxLDQ3NDUzLDQ3NDU0LDQ3NDU1LDQ3NDU3LDQ3NDU4LDQ3NDU5LDQ3NDYwLDQ3NDYxLDQ3NDYyLDQ3NDYzLDQ3NDY2LDQ3NDY4LDQ3NDcwLDQ3NDcxLDQ3NDcyLDQ3NDczLDQ3NDc0LDQ3NDc1LDQ3NDc4LDQ3NDc5LDQ3NDgxLDQ3NDgyLDQ3NDgzLDQ3NDg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3NDg2LDQ3NDg3LDQ3NDg4LDQ3NDg5LDQ3NDkwLDQ3NDkxLDQ3NDk0LDQ3NDk2LDQ3NDk5LDQ3NTAwLDQ3NTAzLDQ3NTA0LDQ3NTA1LDQ3NTA2LDQ3NTA3LDQ3NTA4LDQ3NTA5LDQ3NTEwLDQ3NTExLDQ3NTEyLDQ3NTEzLDQ3NTE0LDQ3NTE1LDQ3NTE2LDQ3NTE3LDQ3NTE4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3NTE5LDQ3NTIwLDQ3NTIxLDQ3NTIyLDQ3NTIzLDQ3NTI0LDQ3NTI1LDQ3NTI2LDQ3NTI3LDQ3NTI4LDQ3NTI5LDQ3NTMwLDQ3NTMxLDQ3NTM0LDQ3NTM1LDQ3NTM3LDQ3NTM4LDQ3NTM5LDQ3NTQxLDQ3NTQyLDQ3NTQzLDQ3NTQ0LDQ3NTQ1LDQ3NTQ2LDQ3NTQ3LDQ3NTUwLDQ3NTUyLDQ3NTU0LDQ3NTU1LDQ3NTU2LDQ3NTU3LDQ3NTU4LDQ3NTU5LDQ3NTYyLDQ3NTYzLDQ3NTY1LDQ3NTcxLDQ3NTcyLDQ3NTczLDQ3NTc0LDQ3NTc1LDQ3NTc4LDQ3NTgwLDQ3NTgzLDQ3NTg0LDQ3NTg2LDQ3NTkwLDQ3NTkxLDQ3NTkzLDQ3NTk0LDQ3NTk1LDQ3NTk3LDQ3NTk4LDQ3NTk5LDQ3NjAwLDQ3NjAxLDQ3NjAyLDQ3NjAzLDQ3NjA2LDQ3NjExLDQ3NjEyLDQ3NjEzLDQ3NjE0LDQ3NjE1LDQ3NjE4LDQ3NjE5LDQ3NjIwLDQ3NjIxLDQ3NjIyLDQ3NjIzLDQ3NjI1LDQ3NjI2LDQ3NjI3LDQ3NjI4LDQ3NjI5LDQ3NjMwLDQ3NjMxLDQ3NjMyLDQ3NjMzLDQ3NjM0LDQ3NjM1LDQ3NjM2LDQ3NjM4LDQ3NjM5LDQ3NjQwLDQ3NjQxLDQ3NjQyLDQ3NjQzLDQ3NjQ0LDQ3NjQ1LDQ3NjQ2LDQ3NjQ3LDQ3NjQ4LDQ3NjQ5LDQ3NjUwLDQ3NjUxLDQ3NjUyLDQ3NjUzLDQ3NjU0LDQ3NjU1LDQ3NjU2LDQ3NjU3LDQ3NjU4LDQ3NjU5LDQ3NjYwLDQ3NjYxLDQ3NjYyLDQ3NjYzLDQ3NjY0LDQ3NjY1LDQ3NjY2LDQ3NjY3LDQ3NjY4LDQ3NjY5LDQ3NjcwLDQ3NjcxLDQ3Njc0LDQ3Njc1LDQ3Njc3LDQ3Njc4LDQ3Njc5LDQ3NjgxLDQ3NjgzLDQ3Njg0LDQ3Njg1LDQ3Njg2LDQ3Njg3LDQ3NjkwLDQ3NjkyLDQ3Njk1LDQ3Njk2LDQ3Njk3LDQ3Njk4LDQ3NzAyLDQ3NzAzLDQ3NzA1LDQ3NzA2LDQ3NzA3LDQ3NzA5LDQ3NzEwLDQ3NzExLDQ3NzEyLDQ3NzEzLDQ3NzE0LDQ3NzE1LDQ3NzE4LDQ3NzIyLDQ3NzIzLDQ3NzI0LDQ3NzI1LDQ3NzI2LDQ3NzI3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3NzMwLDQ3NzMxLDQ3NzMzLDQ3NzM0LDQ3NzM1LDQ3NzM3LDQ3NzM4LDQ3NzM5LDQ3NzQwLDQ3NzQxLDQ3NzQyLDQ3NzQzLDQ3NzQ0LDQ3NzQ1LDQ3NzQ2LDQ3NzUwLDQ3NzUyLDQ3NzUzLDQ3NzU0LDQ3NzU1LDQ3NzU3LDQ3NzU4LDQ3NzU5LDQ3NzYwLDQ3NzYxLDQ3NzYyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3NzYzLDQ3NzY0LDQ3NzY1LDQ3NzY2LDQ3NzY3LDQ3NzY4LDQ3NzY5LDQ3NzcwLDQ3NzcxLDQ3NzcyLDQ3NzczLDQ3Nzc0LDQ3Nzc1LDQ3Nzc2LDQ3Nzc3LDQ3Nzc4LDQ3Nzc5LDQ3NzgwLDQ3NzgxLDQ3NzgyLDQ3NzgzLDQ3Nzg2LDQ3Nzg5LDQ3NzkwLDQ3NzkxLDQ3NzkzLDQ3Nzk1LDQ3Nzk2LDQ3Nzk3LDQ3Nzk4LDQ3Nzk5LDQ3ODAyLDQ3ODA0LDQ3ODA2LDQ3ODA3LDQ3ODA4LDQ3ODA5LDQ3ODEwLDQ3ODExLDQ3ODEzLDQ3ODE0LDQ3ODE1LDQ3ODE3LDQ3ODE4LDQ3ODE5LDQ3ODIwLDQ3ODIxLDQ3ODIyLDQ3ODIzLDQ3ODI0LDQ3ODI1LDQ3ODI2LDQ3ODI3LDQ3ODI4LDQ3ODI5LDQ3ODMwLDQ3ODMxLDQ3ODM0LDQ3ODM1LDQ3ODM2LDQ3ODM3LDQ3ODM4LDQ3ODM5LDQ3ODQwLDQ3ODQxLDQ3ODQyLDQ3ODQzLDQ3ODQ0LDQ3ODQ1LDQ3ODQ2LDQ3ODQ3LDQ3ODQ4LDQ3ODQ5LDQ3ODUwLDQ3ODUxLDQ3ODUyLDQ3ODUzLDQ3ODU0LDQ3ODU1LDQ3ODU2LDQ3ODU3LDQ3ODU4LDQ3ODU5LDQ3ODYwLDQ3ODYxLDQ3ODYyLDQ3ODYzLDQ3ODY0LDQ3ODY1LDQ3ODY2LDQ3ODY3LDQ3ODY5LDQ3ODcwLDQ3ODcxLDQ3ODczLDQ3ODc0LDQ3ODc1LDQ3ODc3LDQ3ODc4LDQ3ODc5LDQ3ODgwLDQ3ODgxLDQ3ODgyLDQ3ODgzLDQ3ODg0LDQ3ODg2LDQ3ODg4LDQ3ODkwLDQ3ODkxLDQ3ODkyLDQ3ODkzLDQ3ODk0LDQ3ODk1LDQ3ODk3LDQ3ODk4LDQ3ODk5LDQ3OTAxLDQ3OTAyLDQ3OTAzLDQ3OTA1LDQ3OTA2LDQ3OTA3LDQ3OTA4LDQ3OTA5LDQ3OTEwLDQ3OTExLDQ3OTEyLDQ3OTE0LDQ3OTE2LDQ3OTE3LDQ3OTE4LDQ3OTE5LDQ3OTIwLDQ3OTIxLDQ3OTIyLDQ3OTIzLDQ3OTI3LDQ3OTI5LDQ3OTMwLDQ3OTM1LDQ3OTM2LDQ3OTM3LDQ3OTM4LDQ3OTM5LDQ3OTQyLDQ3OTQ0LDQ3OTQ2LDQ3OTQ3LDQ3OTQ4LDQ3OTUwLDQ3OTUzLDQ3OTU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3OTU1LDQ3OTU3LDQ3OTU4LDQ3OTU5LDQ3OTYxLDQ3OTYyLDQ3OTYzLDQ3OTY0LDQ3OTY1LDQ3OTY2LDQ3OTY3LDQ3OTY4LDQ3OTcwLDQ3OTcyLDQ3OTczLDQ3OTc0LDQ3OTc1LDQ3OTc2LDQ3OTc3LDQ3OTc4LDQ3OTc5LDQ3OTgxLDQ3OTgyLDQ3OTgzLDQ3OTg0LDQ3OTg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ3OTg2LDQ3OTg3LDQ3OTg4LDQ3OTg5LDQ3OTkwLDQ3OTkxLDQ3OTkyLDQ3OTkzLDQ3OTk0LDQ3OTk1LDQ3OTk2LDQ3OTk3LDQ3OTk4LDQ3OTk5LDQ4MDAwLDQ4MDAxLDQ4MDAyLDQ4MDAzLDQ4MDA0LDQ4MDA1LDQ4MDA2LDQ4MDA3LDQ4MDA5LDQ4MDEwLDQ4MDExLDQ4MDEzLDQ4MDE0LDQ4MDE1LDQ4MDE3LDQ4MDE4LDQ4MDE5LDQ4MDIwLDQ4MDIxLDQ4MDIyLDQ4MDIzLDQ4MDI0LDQ4MDI1LDQ4MDI2LDQ4MDI3LDQ4MDI4LDQ4MDI5LDQ4MDMwLDQ4MDMxLDQ4MDMyLDQ4MDMzLDQ4MDM0LDQ4MDM1LDQ4MDM3LDQ4MDM4LDQ4MDM5LDQ4MDQxLDQ4MDQyLDQ4MDQzLDQ4MDQ1LDQ4MDQ2LDQ4MDQ3LDQ4MDQ4LDQ4MDQ5LDQ4MDUwLDQ4MDUxLDQ4MDUzLDQ4MDU0LDQ4MDU2LDQ4MDU3LDQ4MDU4LDQ4MDU5LDQ4MDYwLDQ4MDYxLDQ4MDYyLDQ4MDYzLDQ4MDY1LDQ4MDY2LDQ4MDY3LDQ4MDY5LDQ4MDcwLDQ4MDcxLDQ4MDczLDQ4MDc0LDQ4MDc1LDQ4MDc2LDQ4MDc3LDQ4MDc4LDQ4MDc5LDQ4MDgxLDQ4MDgyLDQ4MDg0LDQ4MDg1LDQ4MDg2LDQ4MDg3LDQ4MDg4LDQ4MDg5LDQ4MDkwLDQ4MDkxLDQ4MDkyLDQ4MDkzLDQ4MDk0LDQ4MDk1LDQ4MDk2LDQ4MDk3LDQ4MDk4LDQ4MDk5LDQ4MTAwLDQ4MTAxLDQ4MTAyLDQ4MTAzLDQ4MTA0LDQ4MTA1LDQ4MTA2LDQ4MTA3LDQ4MTA4LDQ4MTA5LDQ4MTEwLDQ4MTExLDQ4MTEyLDQ4MTEzLDQ4MTE0LDQ4MTE1LDQ4MTE2LDQ4MTE3LDQ4MTE4LDQ4MTE5LDQ4MTIyLDQ4MTIzLDQ4MTI1LDQ4MTI2LDQ4MTI5LDQ4MTMxLDQ4MTMyLDQ4MTMzLDQ4MTM0LDQ4MTM1LDQ4MTM4LDQ4MTQyLDQ4MTQ0LDQ4MTQ2LDQ4MTQ3LDQ4MTUzLDQ4MTU0LDQ4MTYwLDQ4MTYxLDQ4MTYyLDQ4MTYzLDQ4MTY2LDQ4MTY4LDQ4MTcwLDQ4MTcxLDQ4MTcyLDQ4MTc0LDQ4MTc1LDQ4MTc4LDQ4MTc5LDQ4MTgxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4MTgyLDQ4MTgzLDQ4MTg1LDQ4MTg2LDQ4MTg3LDQ4MTg4LDQ4MTg5LDQ4MTkwLDQ4MTkxLDQ4MTk0LDQ4MTk4LDQ4MTk5LDQ4MjAwLDQ4MjAyLDQ4MjAzLDQ4MjA2LDQ4MjA3LDQ4MjA5LDQ4MjEwLDQ4MjExLDQ4MjEyLDQ4MjEzLDQ4MjE0LDQ4MjE1LDQ4MjE2LDQ4MjE3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4MjE4LDQ4MjE5LDQ4MjIwLDQ4MjIyLDQ4MjIzLDQ4MjI0LDQ4MjI1LDQ4MjI2LDQ4MjI3LDQ4MjI4LDQ4MjI5LDQ4MjMwLDQ4MjMxLDQ4MjMyLDQ4MjMzLDQ4MjM0LDQ4MjM1LDQ4MjM2LDQ4MjM3LDQ4MjM4LDQ4MjM5LDQ4MjQwLDQ4MjQxLDQ4MjQyLDQ4MjQzLDQ4MjQ0LDQ4MjQ1LDQ4MjQ2LDQ4MjQ3LDQ4MjQ4LDQ4MjQ5LDQ4MjUwLDQ4MjUxLDQ4MjUyLDQ4MjUzLDQ4MjU0LDQ4MjU1LDQ4MjU2LDQ4MjU3LDQ4MjU4LDQ4MjU5LDQ4MjYyLDQ4MjYzLDQ4MjY1LDQ4MjY2LDQ4MjY5LDQ4MjcxLDQ4MjcyLDQ4MjczLDQ4Mjc0LDQ4Mjc1LDQ4Mjc4LDQ4MjgwLDQ4MjgzLDQ4Mjg0LDQ4Mjg1LDQ4Mjg2LDQ4Mjg3LDQ4MjkwLDQ4MjkxLDQ4MjkzLDQ4Mjk0LDQ4Mjk3LDQ4Mjk4LDQ4Mjk5LDQ4MzAwLDQ4MzAxLDQ4MzAyLDQ4MzAzLDQ4MzA2LDQ4MzEwLDQ4MzExLDQ4MzEyLDQ4MzEzLDQ4MzE0LDQ4MzE1LDQ4MzE4LDQ4MzE5LDQ4MzIxLDQ4MzIyLDQ4MzIzLDQ4MzI1LDQ4MzI2LDQ4MzI3LDQ4MzI4LDQ4MzI5LDQ4MzMwLDQ4MzMxLDQ4MzMyLDQ4MzM0LDQ4MzM4LDQ4MzM5LDQ4MzQwLDQ4MzQyLDQ4MzQzLDQ4MzQ1LDQ4MzQ2LDQ4MzQ3LDQ4MzQ5LDQ4MzUwLDQ4MzUxLDQ4MzUyLDQ4MzUzLDQ4MzU0LDQ4MzU1LDQ4MzU2LDQ4MzU3LDQ4MzU4LDQ4MzU5LDQ4MzYwLDQ4MzYxLDQ4MzYyLDQ4MzYzLDQ4MzY0LDQ4MzY1LDQ4MzY2LDQ4MzY3LDQ4MzY4LDQ4MzY5LDQ4MzcwLDQ4MzcxLDQ4Mzc1LDQ4Mzc3LDQ4Mzc4LDQ4Mzc5LDQ4MzgxLDQ4MzgyLDQ4MzgzLDQ4Mzg0LDQ4Mzg1LDQ4Mzg2LDQ4Mzg3LDQ4MzkwLDQ4MzkyLDQ4Mzk0LDQ4Mzk1LDQ4Mzk2LDQ4Mzk3LDQ4Mzk4LDQ4Mzk5LDQ4NDAxLDQ4NDAyLDQ4NDAzLDQ4NDA1LDQ4NDA2LDQ4NDA3LDQ4NDA4LDQ4NDA5LDQ4NDEwLDQ4NDExLDQ4NDEyLDQ4NDEzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NDE0LDQ4NDE1LDQ4NDE2LDQ4NDE3LDQ4NDE4LDQ4NDE5LDQ4NDIxLDQ4NDIyLDQ4NDIzLDQ4NDI0LDQ4NDI1LDQ4NDI2LDQ4NDI3LDQ4NDI5LDQ4NDMwLDQ4NDMxLDQ4NDMyLDQ4NDMzLDQ4NDM0LDQ4NDM1LDQ4NDM2LDQ4NDM3LDQ4NDM4LDQ4NDM5LDQ4NDQwLDQ4NDQxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NDQyLDQ4NDQzLDQ4NDQ0LDQ4NDQ1LDQ4NDQ2LDQ4NDQ3LDQ4NDQ5LDQ4NDUwLDQ4NDUxLDQ4NDUyLDQ4NDUzLDQ4NDU0LDQ4NDU1LDQ4NDU4LDQ4NDU5LDQ4NDYxLDQ4NDYyLDQ4NDYzLDQ4NDY1LDQ4NDY2LDQ4NDY3LDQ4NDY4LDQ4NDY5LDQ4NDcwLDQ4NDcxLDQ4NDc0LDQ4NDc1LDQ4NDc2LDQ4NDc3LDQ4NDc4LDQ4NDc5LDQ4NDgwLDQ4NDgxLDQ4NDgyLDQ4NDgzLDQ4NDg1LDQ4NDg2LDQ4NDg3LDQ4NDg5LDQ4NDkwLDQ4NDkxLDQ4NDkyLDQ4NDkzLDQ4NDk0LDQ4NDk1LDQ4NDk2LDQ4NDk3LDQ4NDk4LDQ4NDk5LDQ4NTAwLDQ4NTAxLDQ4NTAyLDQ4NTAzLDQ4NTA0LDQ4NTA1LDQ4NTA2LDQ4NTA3LDQ4NTA4LDQ4NTA5LDQ4NTEwLDQ4NTExLDQ4NTE0LDQ4NTE1LDQ4NTE3LDQ4NTE4LDQ4NTIzLDQ4NTI0LDQ4NTI1LDQ4NTI2LDQ4NTI3LDQ4NTMwLDQ4NTMyLDQ4NTM0LDQ4NTM1LDQ4NTM2LDQ4NTM5LDQ4NTQxLDQ4NTQyLDQ4NTQzLDQ4NTQ0LDQ4NTQ1LDQ4NTQ2LDQ4NTQ3LDQ4NTQ5LDQ4NTUwLDQ4NTUxLDQ4NTUyLDQ4NTUzLDQ4NTU0LDQ4NTU1LDQ4NTU2LDQ4NTU3LDQ4NTU4LDQ4NTU5LDQ4NTYxLDQ4NTYyLDQ4NTYzLDQ4NTY0LDQ4NTY1LDQ4NTY2LDQ4NTY3LDQ4NTY5LDQ4NTcwLDQ4NTcxLDQ4NTcyLDQ4NTczLDQ4NTc0LDQ4NTc1LDQ4NTc2LDQ4NTc3LDQ4NTc4LDQ4NTc5LDQ4NTgwLDQ4NTgxLDQ4NTgyLDQ4NTgzLDQ4NTg0LDQ4NTg1LDQ4NTg2LDQ4NTg3LDQ4NTg4LDQ4NTg5LDQ4NTkwLDQ4NTkxLDQ4NTkyLDQ4NTkzLDQ4NTk0LDQ4NTk1LDQ4NTk4LDQ4NTk5LDQ4NjAxLDQ4NjAyLDQ4NjAzLDQ4NjA1LDQ4NjA2LDQ4NjA3LDQ4NjA4LDQ4NjA5LDQ4NjEwLDQ4NjExLDQ4NjEyLDQ4NjEzLDQ4NjE0LDQ4NjE1LDQ4NjE2LDQ4NjE4LDQ4NjE5LDQ4NjIwLDQ4NjIxLDQ4NjIyLDQ4NjIzLDQ4NjI1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NjI2LDQ4NjI3LDQ4NjI5LDQ4NjMwLDQ4NjMxLDQ4NjMzLDQ4NjM0LDQ4NjM1LDQ4NjM2LDQ4NjM3LDQ4NjM4LDQ4NjM5LDQ4NjQxLDQ4NjQyLDQ4NjQ0LDQ4NjQ2LDQ4NjQ3LDQ4NjQ4LDQ4NjQ5LDQ4NjUwLDQ4NjUxLDQ4NjU0LDQ4NjU1LDQ4NjU3LDQ4NjU4LDQ4NjU5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4NjYxLDQ4NjYyLDQ4NjYzLDQ4NjY0LDQ4NjY1LDQ4NjY2LDQ4NjY3LDQ4NjcwLDQ4NjcyLDQ4NjczLDQ4Njc0LDQ4Njc1LDQ4Njc2LDQ4Njc3LDQ4Njc4LDQ4Njc5LDQ4NjgwLDQ4NjgxLDQ4NjgyLDQ4NjgzLDQ4Njg0LDQ4Njg1LDQ4Njg2LDQ4Njg3LDQ4Njg4LDQ4Njg5LDQ4NjkwLDQ4NjkxLDQ4NjkyLDQ4NjkzLDQ4Njk0LDQ4Njk1LDQ4Njk2LDQ4Njk3LDQ4Njk4LDQ4Njk5LDQ4NzAwLDQ4NzAxLDQ4NzAyLDQ4NzAzLDQ4NzA0LDQ4NzA1LDQ4NzA2LDQ4NzA3LDQ4NzEwLDQ4NzExLDQ4NzEzLDQ4NzE0LDQ4NzE1LDQ4NzE3LDQ4NzE5LDQ4NzIwLDQ4NzIxLDQ4NzIyLDQ4NzIzLDQ4NzI2LDQ4NzI4LDQ4NzMyLDQ4NzMzLDQ4NzM0LDQ4NzM1LDQ4NzM4LDQ4NzM5LDQ4NzQxLDQ4NzQyLDQ4NzQzLDQ4NzQ1LDQ4NzQ3LDQ4NzQ4LDQ4NzQ5LDQ4NzUwLDQ4NzUxLDQ4NzU0LDQ4NzU4LDQ4NzU5LDQ4NzYwLDQ4NzYxLDQ4NzYyLDQ4NzY2LDQ4NzY3LDQ4NzY5LDQ4NzcwLDQ4NzcxLDQ4NzczLDQ4Nzc0LDQ4Nzc1LDQ4Nzc2LDQ4Nzc3LDQ4Nzc4LDQ4Nzc5LDQ4NzgyLDQ4Nzg2LDQ4Nzg3LDQ4Nzg4LDQ4Nzg5LDQ4NzkwLDQ4NzkxLDQ4Nzk0LDQ4Nzk1LDQ4Nzk2LDQ4Nzk3LDQ4Nzk4LDQ4Nzk5LDQ4ODAwLDQ4ODAxLDQ4ODAyLDQ4ODAzLDQ4ODA0LDQ4ODA1LDQ4ODA2LDQ4ODA3LDQ4ODA5LDQ4ODEwLDQ4ODExLDQ4ODEyLDQ4ODEzLDQ4ODE0LDQ4ODE1LDQ4ODE2LDQ4ODE3LDQ4ODE4LDQ4ODE5LDQ4ODIwLDQ4ODIxLDQ4ODIyLDQ4ODIzLDQ4ODI0LDQ4ODI1LDQ4ODI2LDQ4ODI3LDQ4ODI4LDQ4ODI5LDQ4ODMwLDQ4ODMxLDQ4ODMyLDQ4ODMzLDQ4ODM0LDQ4ODM1LDQ4ODM2LDQ4ODM3LDQ4ODM4LDQ4ODM5LDQ4ODQwLDQ4ODQxLDQ4ODQyLDQ4ODQzLDQ4ODQ0LDQ4ODQ1LDQ4ODQ2LDQ4ODQ3LDQ4ODUwLDQ4ODUxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4ODUzLDQ4ODU0LDQ4ODU3LDQ4ODU4LDQ4ODU5LDQ4ODYwLDQ4ODYxLDQ4ODYyLDQ4ODYzLDQ4ODY1LDQ4ODY2LDQ4ODcwLDQ4ODcxLDQ4ODcyLDQ4ODczLDQ4ODc0LDQ4ODc1LDQ4ODc3LDQ4ODc4LDQ4ODc5LDQ4ODgwLDQ4ODgxLDQ4ODgyLDQ4ODgzLDQ4ODg0LDQ4ODg1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ4ODg2LDQ4ODg3LDQ4ODg4LDQ4ODg5LDQ4ODkwLDQ4ODkxLDQ4ODkyLDQ4ODkzLDQ4ODk0LDQ4ODk1LDQ4ODk2LDQ4ODk4LDQ4ODk5LDQ4OTAwLDQ4OTAxLDQ4OTAyLDQ4OTAzLDQ4OTA2LDQ4OTA3LDQ4OTA4LDQ4OTA5LDQ4OTEwLDQ4OTExLDQ4OTEyLDQ4OTEzLDQ4OTE0LDQ4OTE1LDQ4OTE2LDQ4OTE3LDQ4OTE4LDQ4OTE5LDQ4OTIyLDQ4OTI2LDQ4OTI3LDQ4OTI4LDQ4OTI5LDQ4OTMwLDQ4OTMxLDQ4OTMyLDQ4OTMzLDQ4OTM0LDQ4OTM1LDQ4OTM2LDQ4OTM3LDQ4OTM4LDQ4OTM5LDQ4OTQwLDQ4OTQxLDQ4OTQyLDQ4OTQzLDQ4OTQ0LDQ4OTQ1LDQ4OTQ2LDQ4OTQ3LDQ4OTQ4LDQ4OTQ5LDQ4OTUwLDQ4OTUxLDQ4OTUyLDQ4OTUzLDQ4OTU0LDQ4OTU1LDQ4OTU2LDQ4OTU3LDQ4OTU4LDQ4OTU5LDQ4OTYyLDQ4OTYzLDQ4OTY1LDQ4OTY2LDQ4OTY3LDQ4OTY5LDQ4OTcwLDQ4OTcxLDQ4OTcyLDQ4OTczLDQ4OTc0LDQ4OTc1LDQ4OTc4LDQ4OTc5LDQ4OTgwLDQ4OTgyLDQ4OTgzLDQ4OTg0LDQ4OTg1LDQ4OTg2LDQ4OTg3LDQ4OTg4LDQ4OTg5LDQ4OTkwLDQ4OTkxLDQ4OTkyLDQ4OTkzLDQ4OTk0LDQ4OTk1LDQ4OTk2LDQ4OTk3LDQ4OTk4LDQ4OTk5LDQ5MDAwLDQ5MDAxLDQ5MDAyLDQ5MDAzLDQ5MDA0LDQ5MDA1LDQ5MDA2LDQ5MDA3LDQ5MDA4LDQ5MDA5LDQ5MDEwLDQ5MDExLDQ5MDEyLDQ5MDEzLDQ5MDE0LDQ5MDE1LDQ5MDE2LDQ5MDE3LDQ5MDE4LDQ5MDE5LDQ5MDIwLDQ5MDIxLDQ5MDIyLDQ5MDIzLDQ5MDI0LDQ5MDI1LDQ5MDI2LDQ5MDI3LDQ5MDI4LDQ5MDI5LDQ5MDMwLDQ5MDMxLDQ5MDMyLDQ5MDMzLDQ5MDM0LDQ5MDM1LDQ5MDM2LDQ5MDM3LDQ5MDM4LDQ5MDM5LDQ5MDQwLDQ5MDQxLDQ5MDQyLDQ5MDQzLDQ5MDQ1LDQ5MDQ2LDQ5MDQ3LDQ5MDQ4LDQ5MDQ5LDQ5MDUwLDQ5MDUxLDQ5MDUyLDQ5MDUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDU0LDQ5MDU1LDQ5MDU2LDQ5MDU3LDQ5MDU4LDQ5MDU5LDQ5MDYwLDQ5MDYxLDQ5MDYyLDQ5MDYzLDQ5MDY0LDQ5MDY1LDQ5MDY2LDQ5MDY3LDQ5MDY4LDQ5MDY5LDQ5MDcwLDQ5MDcxLDQ5MDczLDQ5MDc0LDQ5MDc1LDQ5MDc2LDQ5MDc3LDQ5MDc4LDQ5MDc5LDQ5MDgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MDgxLDQ5MDgyLDQ5MDgzLDQ5MDg0LDQ5MDg1LDQ5MDg2LDQ5MDg3LDQ5MDg4LDQ5MDg5LDQ5MDkwLDQ5MDkxLDQ5MDkyLDQ5MDk0LDQ5MDk1LDQ5MDk2LDQ5MDk3LDQ5MDk4LDQ5MDk5LDQ5MTAyLDQ5MTAzLDQ5MTA1LDQ5MTA2LDQ5MTA3LDQ5MTA5LDQ5MTEwLDQ5MTExLDQ5MTEyLDQ5MTEzLDQ5MTE0LDQ5MTE1LDQ5MTE3LDQ5MTE4LDQ5MTIwLDQ5MTIyLDQ5MTIzLDQ5MTI0LDQ5MTI1LDQ5MTI2LDQ5MTI3LDQ5MTI4LDQ5MTI5LDQ5MTMwLDQ5MTMxLDQ5MTMyLDQ5MTMzLDQ5MTM0LDQ5MTM1LDQ5MTM2LDQ5MTM3LDQ5MTM4LDQ5MTM5LDQ5MTQwLDQ5MTQxLDQ5MTQyLDQ5MTQzLDQ5MTQ0LDQ5MTQ1LDQ5MTQ2LDQ5MTQ3LDQ5MTQ4LDQ5MTQ5LDQ5MTUwLDQ5MTUxLDQ5MTUyLDQ5MTUzLDQ5MTU0LDQ5MTU1LDQ5MTU2LDQ5MTU3LDQ5MTU4LDQ5MTU5LDQ5MTYwLDQ5MTYxLDQ5MTYyLDQ5MTYzLDQ5MTY0LDQ5MTY1LDQ5MTY2LDQ5MTY3LDQ5MTY4LDQ5MTY5LDQ5MTcwLDQ5MTcxLDQ5MTcyLDQ5MTczLDQ5MTc0LDQ5MTc1LDQ5MTc2LDQ5MTc3LDQ5MTc4LDQ5MTc5LDQ5MTgwLDQ5MTgxLDQ5MTgyLDQ5MTgzLDQ5MTg0LDQ5MTg1LDQ5MTg2LDQ5MTg3LDQ5MTg4LDQ5MTg5LDQ5MTkwLDQ5MTkxLDQ5MTkyLDQ5MTkzLDQ5MTk0LDQ5MTk1LDQ5MTk2LDQ5MTk3LDQ5MTk4LDQ5MTk5LDQ5MjAwLDQ5MjAxLDQ5MjAyLDQ5MjAzLDQ5MjA0LDQ5MjA1LDQ5MjA2LDQ5MjA3LDQ5MjA4LDQ5MjA5LDQ5MjEwLDQ5MjExLDQ5MjEzLDQ5MjE0LDQ5MjE1LDQ5MjE2LDQ5MjE3LDQ5MjE4LDQ5MjE5LDQ5MjIwLDQ5MjIxLDQ5MjIyLDQ5MjIzLDQ5MjI0LDQ5MjI1LDQ5MjI2LDQ5MjI3LDQ5MjI4LDQ5MjI5LDQ5MjMwLDQ5MjMxLDQ5MjMyLDQ5MjM0LDQ5MjM1LDQ5MjM2LDQ5MjM3LDQ5MjM4LDQ5MjM5LDQ5MjQxLDQ5MjQyLDQ5MjQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5MjQ1LDQ5MjQ2LDQ5MjQ3LDQ5MjQ5LDQ5MjUwLDQ5MjUxLDQ5MjUyLDQ5MjUzLDQ5MjU0LDQ5MjU1LDQ5MjU4LDQ5MjU5LDQ5MjYwLDQ5MjYxLDQ5MjYyLDQ5MjYzLDQ5MjY0LDQ5MjY1LDQ5MjY2LDQ5MjY3LDQ5MjY4LDQ5MjY5LDQ5MjcwLDQ5MjcxLDQ5MjcyLDQ5MjczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5Mjc0LDQ5Mjc1LDQ5Mjc2LDQ5Mjc3LDQ5Mjc4LDQ5Mjc5LDQ5MjgwLDQ5MjgxLDQ5MjgyLDQ5MjgzLDQ5Mjg0LDQ5Mjg1LDQ5Mjg2LDQ5Mjg3LDQ5Mjg4LDQ5Mjg5LDQ5MjkwLDQ5MjkxLDQ5MjkyLDQ5MjkzLDQ5Mjk0LDQ5Mjk1LDQ5Mjk4LDQ5Mjk5LDQ5MzAxLDQ5MzAyLDQ5MzAzLDQ5MzA1LDQ5MzA2LDQ5MzA3LDQ5MzA4LDQ5MzA5LDQ5MzEwLDQ5MzExLDQ5MzE0LDQ5MzE2LDQ5MzE4LDQ5MzE5LDQ5MzIwLDQ5MzIxLDQ5MzIyLDQ5MzIzLDQ5MzI2LDQ5MzI5LDQ5MzMwLDQ5MzM1LDQ5MzM2LDQ5MzM3LDQ5MzM4LDQ5MzM5LDQ5MzQyLDQ5MzQ2LDQ5MzQ3LDQ5MzQ4LDQ5MzUwLDQ5MzUxLDQ5MzU0LDQ5MzU1LDQ5MzU3LDQ5MzU4LDQ5MzU5LDQ5MzYxLDQ5MzYyLDQ5MzYzLDQ5MzY0LDQ5MzY1LDQ5MzY2LDQ5MzY3LDQ5MzcwLDQ5Mzc0LDQ5Mzc1LDQ5Mzc2LDQ5Mzc3LDQ5Mzc4LDQ5Mzc5LDQ5MzgyLDQ5MzgzLDQ5Mzg1LDQ5Mzg2LDQ5Mzg3LDQ5Mzg5LDQ5MzkwLDQ5MzkxLDQ5MzkyLDQ5MzkzLDQ5Mzk0LDQ5Mzk1LDQ5Mzk4LDQ5NDAwLDQ5NDAyLDQ5NDAzLDQ5NDA0LDQ5NDA1LDQ5NDA2LDQ5NDA3LDQ5NDA5LDQ5NDEwLDQ5NDExLDQ5NDEzLDQ5NDE0LDQ5NDE1LDQ5NDE3LDQ5NDE4LDQ5NDE5LDQ5NDIwLDQ5NDIxLDQ5NDIyLDQ5NDIzLDQ5NDI1LDQ5NDI2LDQ5NDI3LDQ5NDI4LDQ5NDMwLDQ5NDMxLDQ5NDMyLDQ5NDMzLDQ5NDM0LDQ5NDM1LDQ5NDQxLDQ5NDQyLDQ5NDQ1LDQ5NDQ4LDQ5NDQ5LDQ5NDUwLDQ5NDUxLDQ5NDU0LDQ5NDU4LDQ5NDU5LDQ5NDYwLDQ5NDYxLDQ5NDYzLDQ5NDY2LDQ5NDY3LDQ5NDY5LDQ5NDcwLDQ5NDcxLDQ5NDczLDQ5NDc0LDQ5NDc1LDQ5NDc2LDQ5NDc3LDQ5NDc4LDQ5NDc5LDQ5NDgyLDQ5NDg2LDQ5NDg3LDQ5NDg4LDQ5NDg5LDQ5NDkwLDQ5NDkxLDQ5NDk0LDQ5NDk1LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NDk3LDQ5NDk4LDQ5NDk5LDQ5NTAxLDQ5NTAyLDQ5NTAzLDQ5NTA0LDQ5NTA1LDQ5NTA2LDQ5NTA3LDQ5NTEwLDQ5NTE0LDQ5NTE1LDQ5NTE2LDQ5NTE3LDQ5NTE4LDQ5NTE5LDQ5NTIxLDQ5NTIyLDQ5NTIzLDQ5NTI1LDQ5NTI2LDQ5NTI3LDQ5NTI5LDQ5NTMwLDQ5NTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NTMyLDQ5NTMzLDQ5NTM0LDQ5NTM1LDQ5NTM2LDQ5NTM3LDQ5NTM4LDQ5NTM5LDQ5NTQwLDQ5NTQyLDQ5NTQzLDQ5NTQ0LDQ5NTQ1LDQ5NTQ2LDQ5NTQ3LDQ5NTUxLDQ5NTUzLDQ5NTU0LDQ5NTU1LDQ5NTU3LDQ5NTU5LDQ5NTYwLDQ5NTYxLDQ5NTYyLDQ5NTYzLDQ5NTY2LDQ5NTY4LDQ5NTcwLDQ5NTcxLDQ5NTcyLDQ5NTc0LDQ5NTc1LDQ5NTc4LDQ5NTc5LDQ5NTgxLDQ5NTgyLDQ5NTgzLDQ5NTg1LDQ5NTg2LDQ5NTg3LDQ5NTg4LDQ5NTg5LDQ5NTkwLDQ5NTkxLDQ5NTkyLDQ5NTkzLDQ5NTk0LDQ5NTk1LDQ5NTk2LDQ5NTk4LDQ5NTk5LDQ5NjAwLDQ5NjAxLDQ5NjAyLDQ5NjAzLDQ5NjA1LDQ5NjA2LDQ5NjA3LDQ5NjA5LDQ5NjEwLDQ5NjExLDQ5NjEzLDQ5NjE0LDQ5NjE1LDQ5NjE2LDQ5NjE3LDQ5NjE4LDQ5NjE5LDQ5NjIxLDQ5NjIyLDQ5NjI1LDQ5NjI2LDQ5NjI3LDQ5NjI4LDQ5NjI5LDQ5NjMwLDQ5NjMxLDQ5NjMzLDQ5NjM0LDQ5NjM1LDQ5NjM3LDQ5NjM4LDQ5NjM5LDQ5NjQxLDQ5NjQyLDQ5NjQzLDQ5NjQ0LDQ5NjQ1LDQ5NjQ2LDQ5NjQ3LDQ5NjUwLDQ5NjUyLDQ5NjUzLDQ5NjU0LDQ5NjU1LDQ5NjU2LDQ5NjU3LDQ5NjU4LDQ5NjU5LDQ5NjYyLDQ5NjYzLDQ5NjY1LDQ5NjY2LDQ5NjY3LDQ5NjY5LDQ5NjcwLDQ5NjcxLDQ5NjcyLDQ5NjczLDQ5Njc0LDQ5Njc1LDQ5Njc4LDQ5NjgwLDQ5NjgyLDQ5NjgzLDQ5Njg0LDQ5Njg1LDQ5Njg2LDQ5Njg3LDQ5NjkwLDQ5NjkxLDQ5NjkzLDQ5Njk0LDQ5Njk3LDQ5Njk4LDQ5Njk5LDQ5NzAwLDQ5NzAxLDQ5NzAyLDQ5NzAzLDQ5NzA2LDQ5NzA4LDQ5NzEwLDQ5NzEyLDQ5NzE1LDQ5NzE3LDQ5NzE4LDQ5NzE5LDQ5NzIwLDQ5NzIxLDQ5NzIyLDQ5NzIzLDQ5NzI0LDQ5NzI1LDQ5NzI2LDQ5NzI3LDQ5NzI4LDQ5NzI5LDQ5NzMwLDQ5NzMxLDQ5NzMyLDQ5NzMzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NzM0LDQ5NzM1LDQ5NzM3LDQ5NzM4LDQ5NzM5LDQ5NzQwLDQ5NzQxLDQ5NzQyLDQ5NzQzLDQ5NzQ2LDQ5NzQ3LDQ5NzQ5LDQ5NzUwLDQ5NzUxLDQ5NzUzLDQ5NzU0LDQ5NzU1LDQ5NzU2LDQ5NzU3LDQ5NzU4LDQ5NzU5LDQ5NzYxLDQ5NzYyLDQ5NzYzLDQ5NzY0LDQ5NzY2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5NzY3LDQ5NzY4LDQ5NzY5LDQ5NzcwLDQ5NzcxLDQ5Nzc0LDQ5Nzc1LDQ5Nzc3LDQ5Nzc4LDQ5Nzc5LDQ5NzgxLDQ5NzgyLDQ5NzgzLDQ5Nzg0LDQ5Nzg1LDQ5Nzg2LDQ5Nzg3LDQ5NzkwLDQ5NzkyLDQ5Nzk0LDQ5Nzk1LDQ5Nzk2LDQ5Nzk3LDQ5Nzk4LDQ5Nzk5LDQ5ODAyLDQ5ODAzLDQ5ODA0LDQ5ODA1LDQ5ODA2LDQ5ODA3LDQ5ODA5LDQ5ODEwLDQ5ODExLDQ5ODEyLDQ5ODEzLDQ5ODE0LDQ5ODE1LDQ5ODE3LDQ5ODE4LDQ5ODIwLDQ5ODIyLDQ5ODIzLDQ5ODI0LDQ5ODI1LDQ5ODI2LDQ5ODI3LDQ5ODMwLDQ5ODMxLDQ5ODMzLDQ5ODM0LDQ5ODM1LDQ5ODM4LDQ5ODM5LDQ5ODQwLDQ5ODQxLDQ5ODQyLDQ5ODQzLDQ5ODQ2LDQ5ODQ4LDQ5ODUwLDQ5ODUxLDQ5ODUyLDQ5ODUzLDQ5ODU0LDQ5ODU1LDQ5ODU2LDQ5ODU3LDQ5ODU4LDQ5ODU5LDQ5ODYwLDQ5ODYxLDQ5ODYyLDQ5ODYzLDQ5ODY0LDQ5ODY1LDQ5ODY2LDQ5ODY3LDQ5ODY4LDQ5ODY5LDQ5ODcwLDQ5ODcxLDQ5ODcyLDQ5ODczLDQ5ODc0LDQ5ODc1LDQ5ODc2LDQ5ODc3LDQ5ODc4LDQ5ODc5LDQ5ODgwLDQ5ODgxLDQ5ODgyLDQ5ODgzLDQ5ODg2LDQ5ODg3LDQ5ODg5LDQ5ODkwLDQ5ODkzLDQ5ODk0LDQ5ODk1LDQ5ODk2LDQ5ODk3LDQ5ODk4LDQ5OTAyLDQ5OTA0LDQ5OTA2LDQ5OTA3LDQ5OTA4LDQ5OTA5LDQ5OTExLDQ5OTE0LDQ5OTE3LDQ5OTE4LDQ5OTE5LDQ5OTIxLDQ5OTIyLDQ5OTIzLDQ5OTI0LDQ5OTI1LDQ5OTI2LDQ5OTI3LDQ5OTMwLDQ5OTMxLDQ5OTM0LDQ5OTM1LDQ5OTM2LDQ5OTM3LDQ5OTM4LDQ5OTQyLDQ5OTQzLDQ5OTQ1LDQ5OTQ2LDQ5OTQ3LDQ5OTQ5LDQ5OTUwLDQ5OTUxLDQ5OTUyLDQ5OTUzLDQ5OTU0LDQ5OTU1LDQ5OTU4LDQ5OTU5LDQ5OTYyLDQ5OTYzLDQ5OTY0LDQ5OTY1LDQ5OTY2LDQ5OTY3LDQ5OTY4LDQ5OTY5LDQ5OTcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTcxLDQ5OTcyLDQ5OTczLDQ5OTc0LDQ5OTc1LDQ5OTc2LDQ5OTc3LDQ5OTc4LDQ5OTc5LDQ5OTgwLDQ5OTgxLDQ5OTgyLDQ5OTgzLDQ5OTg0LDQ5OTg1LDQ5OTg2LDQ5OTg3LDQ5OTg4LDQ5OTkwLDQ5OTkxLDQ5OTkyLDQ5OTkzLDQ5OTk0LDQ5OTk1LDQ5OTk2LDQ5OTk3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDQ5OTk4LDQ5OTk5LDUwMDAwLDUwMDAxLDUwMDAyLDUwMDAzLDUwMDA0LDUwMDA1LDUwMDA2LDUwMDA3LDUwMDA4LDUwMDA5LDUwMDEwLDUwMDExLDUwMDEyLDUwMDEzLDUwMDE0LDUwMDE1LDUwMDE2LDUwMDE3LDUwMDE4LDUwMDE5LDUwMDIwLDUwMDIxLDUwMDIyLDUwMDIzLDUwMDI2LDUwMDI3LDUwMDI5LDUwMDMwLDUwMDMxLDUwMDMzLDUwMDM1LDUwMDM2LDUwMDM3LDUwMDM4LDUwMDM5LDUwMDQyLDUwMDQzLDUwMDQ2LDUwMDQ3LDUwMDQ4LDUwMDQ5LDUwMDUwLDUwMDUxLDUwMDUzLDUwMDU0LDUwMDU1LDUwMDU3LDUwMDU4LDUwMDU5LDUwMDYxLDUwMDYyLDUwMDYzLDUwMDY0LDUwMDY1LDUwMDY2LDUwMDY3LDUwMDY4LDUwMDY5LDUwMDcwLDUwMDcxLDUwMDcyLDUwMDczLDUwMDc0LDUwMDc1LDUwMDc2LDUwMDc3LDUwMDc4LDUwMDc5LDUwMDgwLDUwMDgxLDUwMDgyLDUwMDgzLDUwMDg0LDUwMDg1LDUwMDg2LDUwMDg3LDUwMDg4LDUwMDg5LDUwMDkwLDUwMDkxLDUwMDkyLDUwMDkzLDUwMDk0LDUwMDk1LDUwMDk2LDUwMDk3LDUwMDk4LDUwMDk5LDUwMTAwLDUwMTAxLDUwMTAyLDUwMTAzLDUwMTA0LDUwMTA1LDUwMTA2LDUwMTA3LDUwMTA4LDUwMTA5LDUwMTEwLDUwMTExLDUwMTEzLDUwMTE0LDUwMTE1LDUwMTE2LDUwMTE3LDUwMTE4LDUwMTE5LDUwMTIwLDUwMTIxLDUwMTIyLDUwMTIzLDUwMTI0LDUwMTI1LDUwMTI2LDUwMTI3LDUwMTI4LDUwMTI5LDUwMTMwLDUwMTMxLDUwMTMyLDUwMTMzLDUwMTM0LDUwMTM1LDUwMTM4LDUwMTM5LDUwMTQxLDUwMTQyLDUwMTQ1LDUwMTQ3LDUwMTQ4LDUwMTQ5LDUwMTUwLDUwMTUxLDUwMTU0LDUwMTU1LDUwMTU2LDUwMTU4LDUwMTU5LDUwMTYwLDUwMTYxLDUwMTYyLDUwMTYzLDUwMTY2LDUwMTY3LDUwMTY5LDUwMTcwLDUwMTcxLDUwMTcyLDUwMTczLDUwMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMTc1LDUwMTc2LDUwMTc3LDUwMTc4LDUwMTc5LDUwMTgwLDUwMTgxLDUwMTgyLDUwMTgzLDUwMTg1LDUwMTg2LDUwMTg3LDUwMTg4LDUwMTg5LDUwMTkwLDUwMTkxLDUwMTkzLDUwMTk0LDUwMTk1LDUwMTk2LDUwMTk3LDUwMTk4LDUwMTk5LDUwMjAwLDUwMjAxLDUwMjAyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMjAzLDUwMjA0LDUwMjA1LDUwMjA2LDUwMjA3LDUwMjA4LDUwMjA5LDUwMjEwLDUwMjExLDUwMjEzLDUwMjE0LDUwMjE1LDUwMjE2LDUwMjE3LDUwMjE4LDUwMjE5LDUwMjIxLDUwMjIyLDUwMjIzLDUwMjI1LDUwMjI2LDUwMjI3LDUwMjI5LDUwMjMwLDUwMjMxLDUwMjMyLDUwMjMzLDUwMjM0LDUwMjM1LDUwMjM4LDUwMjM5LDUwMjQwLDUwMjQxLDUwMjQyLDUwMjQzLDUwMjQ0LDUwMjQ1LDUwMjQ2LDUwMjQ3LDUwMjQ5LDUwMjUwLDUwMjUxLDUwMjUyLDUwMjUzLDUwMjU0LDUwMjU1LDUwMjU2LDUwMjU3LDUwMjU4LDUwMjU5LDUwMjYwLDUwMjYxLDUwMjYyLDUwMjYzLDUwMjY0LDUwMjY1LDUwMjY2LDUwMjY3LDUwMjY4LDUwMjY5LDUwMjcwLDUwMjcxLDUwMjcyLDUwMjczLDUwMjc0LDUwMjc1LDUwMjc4LDUwMjc5LDUwMjgxLDUwMjgyLDUwMjgzLDUwMjg1LDUwMjg2LDUwMjg3LDUwMjg4LDUwMjg5LDUwMjkwLDUwMjkxLDUwMjk0LDUwMjk1LDUwMjk2LDUwMjk4LDUwMjk5LDUwMzAwLDUwMzAxLDUwMzAyLDUwMzAzLDUwMzA1LDUwMzA2LDUwMzA3LDUwMzA4LDUwMzA5LDUwMzEwLDUwMzExLDUwMzEyLDUwMzEzLDUwMzE0LDUwMzE1LDUwMzE2LDUwMzE3LDUwMzE4LDUwMzE5LDUwMzIwLDUwMzIxLDUwMzIyLDUwMzIzLDUwMzI1LDUwMzI2LDUwMzI3LDUwMzI4LDUwMzI5LDUwMzMwLDUwMzMxLDUwMzMzLDUwMzM0LDUwMzM1LDUwMzM2LDUwMzM3LDUwMzM4LDUwMzM5LDUwMzQwLDUwMzQxLDUwMzQyLDUwMzQzLDUwMzQ0LDUwMzQ1LDUwMzQ2LDUwMzQ3LDUwMzQ4LDUwMzQ5LDUwMzUwLDUwMzUxLDUwMzUyLDUwMzUzLDUwMzU0LDUwMzU1LDUwMzU2LDUwMzU3LDUwMzU4LDUwMzU5LDUwMzYxLDUwMzYyLDUwMzYzLDUwMzY1LDUwMzY2LDUwMzY3LDUwMzY4LDUwMzY5LDUwMzcwLDUwMzcxLDUwMzcyLDUwMzczLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwMzc0LDUwMzc1LDUwMzc2LDUwMzc3LDUwMzc4LDUwMzc5LDUwMzgwLDUwMzgxLDUwMzgyLDUwMzgzLDUwMzg0LDUwMzg1LDUwMzg2LDUwMzg3LDUwMzg4LDUwMzg5LDUwMzkwLDUwMzkxLDUwMzkyLDUwMzkzLDUwMzk0LDUwMzk1LDUwMzk2LDUwMzk3LDUwMzk4LDUwMzk5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNDAwLDUwNDAxLDUwNDAyLDUwNDAzLDUwNDA0LDUwNDA1LDUwNDA2LDUwNDA3LDUwNDA4LDUwNDEwLDUwNDExLDUwNDEyLDUwNDEzLDUwNDE0LDUwNDE1LDUwNDE4LDUwNDE5LDUwNDIxLDUwNDIyLDUwNDIzLDUwNDI1LDUwNDI3LDUwNDI4LDUwNDI5LDUwNDMwLDUwNDM0LDUwNDM1LDUwNDM2LDUwNDM3LDUwNDM4LDUwNDM5LDUwNDQwLDUwNDQxLDUwNDQyLDUwNDQzLDUwNDQ1LDUwNDQ2LDUwNDQ3LDUwNDQ5LDUwNDUwLDUwNDUxLDUwNDUzLDUwNDU0LDUwNDU1LDUwNDU2LDUwNDU3LDUwNDU4LDUwNDU5LDUwNDYxLDUwNDYyLDUwNDYzLDUwNDY0LDUwNDY1LDUwNDY2LDUwNDY3LDUwNDY4LDUwNDY5LDUwNDcwLDUwNDcxLDUwNDc0LDUwNDc1LDUwNDc3LDUwNDc4LDUwNDc5LDUwNDgxLDUwNDgyLDUwNDgzLDUwNDg0LDUwNDg1LDUwNDg2LDUwNDg3LDUwNDkwLDUwNDkyLDUwNDk0LDUwNDk1LDUwNDk2LDUwNDk3LDUwNDk4LDUwNDk5LDUwNTAyLDUwNTAzLDUwNTA3LDUwNTExLDUwNTEyLDUwNTEzLDUwNTE0LDUwNTE4LDUwNTIyLDUwNTIzLDUwNTI0LDUwNTI3LDUwNTMwLDUwNTMxLDUwNTMzLDUwNTM0LDUwNTM1LDUwNTM3LDUwNTM4LDUwNTM5LDUwNTQwLDUwNTQxLDUwNTQyLDUwNTQzLDUwNTQ2LDUwNTUwLDUwNTUxLDUwNTUyLDUwNTUzLDUwNTU0LDUwNTU1LDUwNTU4LDUwNTU5LDUwNTYxLDUwNTYyLDUwNTYzLDUwNTY1LDUwNTY2LDUwNTY4LDUwNTY5LDUwNTcwLDUwNTcxLDUwNTc0LDUwNTc2LDUwNTc4LDUwNTc5LDUwNTgwLDUwNTgyLDUwNTg1LDUwNTg2LDUwNTg3LDUwNTg5LDUwNTkwLDUwNTkxLDUwNTkzLDUwNTk0LDUwNTk1LDUwNTk2LDUwNTk3LDUwNTk4LDUwNTk5LDUwNjAwLDUwNjAyLDUwNjAzLDUwNjA0LDUwNjA1LDUwNjA2LDUwNjA3LDUwNjA4LDUwNjA5LDUwNjEwLDUwNjExLDUwNjE0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNjE1LDUwNjE4LDUwNjIzLDUwNjI0LDUwNjI1LDUwNjI2LDUwNjI3LDUwNjM1LDUwNjM3LDUwNjM5LDUwNjQyLDUwNjQzLDUwNjQ1LDUwNjQ2LDUwNjQ3LDUwNjQ5LDUwNjUwLDUwNjUxLDUwNjUyLDUwNjUzLDUwNjU0LDUwNjU1LDUwNjU4LDUwNjYwLDUwNjYyLDUwNjYzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwNjY0LDUwNjY1LDUwNjY2LDUwNjY3LDUwNjcxLDUwNjczLDUwNjc0LDUwNjc1LDUwNjc3LDUwNjgwLDUwNjgxLDUwNjgyLDUwNjgzLDUwNjkwLDUwNjkxLDUwNjkyLDUwNjk3LDUwNjk4LDUwNjk5LDUwNzAxLDUwNzAyLDUwNzAzLDUwNzA1LDUwNzA2LDUwNzA3LDUwNzA4LDUwNzA5LDUwNzEwLDUwNzExLDUwNzE0LDUwNzE3LDUwNzE4LDUwNzE5LDUwNzIwLDUwNzIxLDUwNzIyLDUwNzIzLDUwNzI2LDUwNzI3LDUwNzI5LDUwNzMwLDUwNzMxLDUwNzM1LDUwNzM3LDUwNzM4LDUwNzQyLDUwNzQ0LDUwNzQ2LDUwNzQ4LDUwNzQ5LDUwNzUwLDUwNzUxLDUwNzU0LDUwNzU1LDUwNzU3LDUwNzU4LDUwNzU5LDUwNzYxLDUwNzYyLDUwNzYzLDUwNzY0LDUwNzY1LDUwNzY2LDUwNzY3LDUwNzcwLDUwNzc0LDUwNzc1LDUwNzc2LDUwNzc3LDUwNzc4LDUwNzc5LDUwNzgyLDUwNzgzLDUwNzg1LDUwNzg2LDUwNzg3LDUwNzg4LDUwNzg5LDUwNzkwLDUwNzkxLDUwNzkyLDUwNzkzLDUwNzk0LDUwNzk1LDUwNzk3LDUwNzk4LDUwODAwLDUwODAyLDUwODAzLDUwODA0LDUwODA1LDUwODA2LDUwODA3LDUwODEwLDUwODExLDUwODEzLDUwODE0LDUwODE1LDUwODE3LDUwODE4LDUwODE5LDUwODIwLDUwODIxLDUwODIyLDUwODIzLDUwODI2LDUwODI4LDUwODMwLDUwODMxLDUwODMyLDUwODMzLDUwODM0LDUwODM1LDUwODM4LDUwODM5LDUwODQxLDUwODQyLDUwODQzLDUwODQ1LDUwODQ2LDUwODQ3LDUwODQ4LDUwODQ5LDUwODUwLDUwODUxLDUwODU0LDUwODU2LDUwODU4LDUwODU5LDUwODYwLDUwODYxLDUwODYyLDUwODYzLDUwODY2LDUwODY3LDUwODY5LDUwODcwLDUwODcxLDUwODc1LDUwODc2LDUwODc3LDUwODc4LDUwODc5LDUwODgyLDUwODg0LDUwODg2LDUwODg3LDUwODg4LDUwODg5LDUwODkwLDUwODkxLDUwODk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwODk1LDUwODk3LDUwODk4LDUwODk5LDUwOTAxLDUwOTAyLDUwOTAzLDUwOTA0LDUwOTA1LDUwOTA2LDUwOTA3LDUwOTEwLDUwOTExLDUwOTE0LDUwOTE1LDUwOTE2LDUwOTE3LDUwOTE4LDUwOTE5LDUwOTIyLDUwOTIzLDUwOTI1LDUwOTI2LDUwOTI3LDUwOTI5LDUwOTMwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUwOTMxLDUwOTMyLDUwOTMzLDUwOTM0LDUwOTM1LDUwOTM4LDUwOTM5LDUwOTQwLDUwOTQyLDUwOTQzLDUwOTQ0LDUwOTQ1LDUwOTQ2LDUwOTQ3LDUwOTUwLDUwOTUxLDUwOTUzLDUwOTU0LDUwOTU1LDUwOTU3LDUwOTU4LDUwOTU5LDUwOTYwLDUwOTYxLDUwOTYyLDUwOTYzLDUwOTY2LDUwOTY4LDUwOTcwLDUwOTcxLDUwOTcyLDUwOTczLDUwOTc0LDUwOTc1LDUwOTc4LDUwOTc5LDUwOTgxLDUwOTgyLDUwOTgzLDUwOTg1LDUwOTg2LDUwOTg3LDUwOTg4LDUwOTg5LDUwOTkwLDUwOTkxLDUwOTk0LDUwOTk2LDUwOTk4LDUxMDAwLDUxMDAxLDUxMDAyLDUxMDAzLDUxMDA2LDUxMDA3LDUxMDA5LDUxMDEwLDUxMDExLDUxMDEzLDUxMDE0LDUxMDE1LDUxMDE2LDUxMDE3LDUxMDE5LDUxMDIyLDUxMDI0LDUxMDMzLDUxMDM0LDUxMDM1LDUxMDM3LDUxMDM4LDUxMDM5LDUxMDQxLDUxMDQyLDUxMDQzLDUxMDQ0LDUxMDQ1LDUxMDQ2LDUxMDQ3LDUxMDQ5LDUxMDUwLDUxMDUyLDUxMDUzLDUxMDU0LDUxMDU1LDUxMDU2LDUxMDU3LDUxMDU4LDUxMDU5LDUxMDYyLDUxMDYzLDUxMDY1LDUxMDY2LDUxMDY3LDUxMDcxLDUxMDcyLDUxMDczLDUxMDc0LDUxMDc4LDUxMDgzLDUxMDg0LDUxMDg1LDUxMDg3LDUxMDkwLDUxMDkxLDUxMDkzLDUxMDk3LDUxMDk5LDUxMTAwLDUxMTAxLDUxMTAyLDUxMTAzLDUxMTA2LDUxMTExLDUxMTEyLDUxMTEzLDUxMTE0LDUxMTE1LDUxMTE4LDUxMTE5LDUxMTIxLDUxMTIyLDUxMTIzLDUxMTI1LDUxMTI2LDUxMTI3LDUxMTI4LDUxMTI5LDUxMTMwLDUxMTMxLDUxMTM0LDUxMTM4LDUxMTM5LDUxMTQwLDUxMTQxLDUxMTQyLDUxMTQzLDUxMTQ2LDUxMTQ3LDUxMTQ5LDUxMTUxLDUxMTUzLDUxMTU0LDUxMTU1LDUxMTU2LDUxMTU3LDUxMTU4LDUxMTU5LDUxMTYxLDUxMTYyLDUxMTYzLDUxMTY0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMTY2LDUxMTY3LDUxMTY4LDUxMTY5LDUxMTcwLDUxMTcxLDUxMTczLDUxMTc0LDUxMTc1LDUxMTc3LDUxMTc4LDUxMTc5LDUxMTgxLDUxMTgyLDUxMTgzLDUxMTg0LDUxMTg1LDUxMTg2LDUxMTg3LDUxMTg4LDUxMTg5LDUxMTkwLDUxMTkxLDUxMTkyLDUxMTkzLDUxMTk0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMTk1LDUxMTk2LDUxMTk3LDUxMTk4LDUxMTk5LDUxMjAyLDUxMjAzLDUxMjA1LDUxMjA2LDUxMjA3LDUxMjA5LDUxMjExLDUxMjEyLDUxMjEzLDUxMjE0LDUxMjE1LDUxMjE4LDUxMjIwLDUxMjIzLDUxMjI0LDUxMjI1LDUxMjI2LDUxMjI3LDUxMjMwLDUxMjMxLDUxMjMzLDUxMjM0LDUxMjM1LDUxMjM3LDUxMjM4LDUxMjM5LDUxMjQwLDUxMjQxLDUxMjQyLDUxMjQzLDUxMjQ2LDUxMjQ4LDUxMjUwLDUxMjUxLDUxMjUyLDUxMjUzLDUxMjU0LDUxMjU1LDUxMjU3LDUxMjU4LDUxMjU5LDUxMjYxLDUxMjYyLDUxMjYzLDUxMjY1LDUxMjY2LDUxMjY3LDUxMjY4LDUxMjY5LDUxMjcwLDUxMjcxLDUxMjc0LDUxMjc1LDUxMjc4LDUxMjc5LDUxMjgwLDUxMjgxLDUxMjgyLDUxMjgzLDUxMjg1LDUxMjg2LDUxMjg3LDUxMjg4LDUxMjg5LDUxMjkwLDUxMjkxLDUxMjkyLDUxMjkzLDUxMjk0LDUxMjk1LDUxMjk2LDUxMjk3LDUxMjk4LDUxMjk5LDUxMzAwLDUxMzAxLDUxMzAyLDUxMzAzLDUxMzA0LDUxMzA1LDUxMzA2LDUxMzA3LDUxMzA4LDUxMzA5LDUxMzEwLDUxMzExLDUxMzE0LDUxMzE1LDUxMzE3LDUxMzE4LDUxMzE5LDUxMzIxLDUxMzIzLDUxMzI0LDUxMzI1LDUxMzI2LDUxMzI3LDUxMzMwLDUxMzMyLDUxMzM2LDUxMzM3LDUxMzM4LDUxMzQyLDUxMzQzLDUxMzQ0LDUxMzQ1LDUxMzQ2LDUxMzQ3LDUxMzQ5LDUxMzUwLDUxMzUxLDUxMzUyLDUxMzUzLDUxMzU0LDUxMzU1LDUxMzU2LDUxMzU4LDUxMzYwLDUxMzYyLDUxMzYzLDUxMzY0LDUxMzY1LDUxMzY2LDUxMzY3LDUxMzY5LDUxMzcwLDUxMzcxLDUxMzcyLDUxMzczLDUxMzc0LDUxMzc1LDUxMzc2LDUxMzc3LDUxMzc4LDUxMzc5LDUxMzgwLDUxMzgxLDUxMzgyLDUxMzgzLDUxMzg0LDUxMzg1LDUxMzg2LDUxMzg3LDUxMzkwLDUxMzkxLDUxMzkyLDUxMzkzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxMzk0LDUxMzk1LDUxMzk3LDUxMzk4LDUxMzk5LDUxNDAxLDUxNDAyLDUxNDAzLDUxNDA1LDUxNDA2LDUxNDA3LDUxNDA4LDUxNDA5LDUxNDEwLDUxNDExLDUxNDE0LDUxNDE2LDUxNDE4LDUxNDE5LDUxNDIwLDUxNDIxLDUxNDIyLDUxNDIzLDUxNDI2LDUxNDI3LDUxNDI5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxNDMwLDUxNDMxLDUxNDMyLDUxNDMzLDUxNDM0LDUxNDM1LDUxNDM2LDUxNDM3LDUxNDM4LDUxNDM5LDUxNDQwLDUxNDQxLDUxNDQyLDUxNDQzLDUxNDQ0LDUxNDQ2LDUxNDQ3LDUxNDQ4LDUxNDQ5LDUxNDUwLDUxNDUxLDUxNDU0LDUxNDU1LDUxNDU3LDUxNDU4LDUxNDU5LDUxNDYzLDUxNDY0LDUxNDY1LDUxNDY2LDUxNDY3LDUxNDcwLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw4MjI5LDgyMzAsMTY4LDEyMjkxLDE3Myw4MjEzLDg3NDEsNjUzNDAsODc2NCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzA0LDEyMzA1LDE3NywyMTUsMjQ3LDg4MDAsODgwNCw4ODA1LDg3MzQsODc1NiwxNzYsODI0Miw4MjQzLDg0NTEsODQ5MSw2NTUwNCw2NTUwNSw2NTUwOSw5Nzk0LDk3OTIsODczNiw4ODY5LDg5NzgsODcwNiw4NzExLDg4MDEsODc4NiwxNjcsODI1MSw5NzM0LDk3MzMsOTY3NSw5Njc5LDk2NzgsOTY3MSw5NjcwLDk2MzMsOTYzMiw5NjUxLDk2NTAsOTY2MSw5NjYwLDg1OTQsODU5Miw4NTkzLDg1OTUsODU5NiwxMjMwNyw4ODEwLDg4MTEsODczMCw4NzY1LDg3MzMsODc1Nyw4NzQ3LDg3NDgsODcxMiw4NzE1LDg4MzgsODgzOSw4ODM0LDg4MzUsODc0Niw4NzQ1LDg3NDMsODc0NCw2NTUwNiw1MTQ3Miw1MTQ3NCw1MTQ3NSw1MTQ3Niw1MTQ3Nyw1MTQ3OCw1MTQ3OSw1MTQ4MSw1MTQ4Miw1MTQ4Myw1MTQ4NCw1MTQ4NSw1MTQ4Niw1MTQ4Nyw1MTQ4OCw1MTQ4OSw1MTQ5MCw1MTQ5MSw1MTQ5Miw1MTQ5Myw1MTQ5NCw1MTQ5NSw1MTQ5Niw1MTQ5Nyw1MTQ5OCw1MTQ5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTUwMSw1MTUwMiw1MTUwMyw1MTUwNCw1MTUwNSw1MTUwNiw1MTUwNyw1MTUwOSw1MTUxMCw1MTUxMSw1MTUxMiw1MTUxMyw1MTUxNCw1MTUxNSw1MTUxNiw1MTUxNyw1MTUxOCw1MTUxOSw1MTUyMCw1MTUyMSw1MTUyMiw1MTUyMyw1MTUyNCw1MTUyNSw1MTUyNiw1MTUyNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTUyOCw1MTUyOSw1MTUzMCw1MTUzMSw1MTUzMiw1MTUzMyw1MTUzNCw1MTUzNSw1MTUzOCw1MTUzOSw1MTU0MSw1MTU0Miw1MTU0Myw1MTU0NSw1MTU0Niw1MTU0Nyw1MTU0OCw1MTU0OSw1MTU1MCw1MTU1MSw1MTU1NCw1MTU1Niw1MTU1Nyw1MTU1OCw1MTU1OSw1MTU2MCw1MTU2MSw1MTU2Miw1MTU2Myw1MTU2NSw1MTU2Niw1MTU2Nyw4NjU4LDg2NjAsODcwNCw4NzA3LDE4MCw2NTM3NCw3MTEsNzI4LDczMyw3MzAsNzI5LDE4NCw3MzEsMTYxLDE5MSw3MjAsODc1MCw4NzIxLDg3MTksMTY0LDg0NTcsODI0MCw5NjY1LDk2NjQsOTY1NSw5NjU0LDk4MjgsOTgyNCw5ODI1LDk4MjksOTgzMSw5ODI3LDg4NTcsOTY3Miw5NjM1LDk2ODAsOTY4MSw5NjE4LDk2MzYsOTYzNyw5NjQwLDk2MzksOTYzOCw5NjQxLDk4MzIsOTc0Myw5NzQyLDk3NTYsOTc1OCwxODIsODIyNCw4MjI1LDg1OTcsODU5OSw4NjAxLDg1OTgsODYwMCw5ODM3LDk4MzMsOTgzNCw5ODM2LDEyOTI3LDEyODI4LDg0NzAsMTMyNTUsODQ4MiwxMzI1MCwxMzI3Miw4NDgxLDgzNjQsMTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTU2OSw1MTU3MCw1MTU3MSw1MTU3Myw1MTU3NCw1MTU3NSw1MTU3Niw1MTU3Nyw1MTU3OCw1MTU3OSw1MTU4MSw1MTU4Miw1MTU4Myw1MTU4NCw1MTU4NSw1MTU4Niw1MTU4Nyw1MTU4OCw1MTU4OSw1MTU5MCw1MTU5MSw1MTU5NCw1MTU5NSw1MTU5Nyw1MTU5OCw1MTU5OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYwMSw1MTYwMiw1MTYwMyw1MTYwNCw1MTYwNSw1MTYwNiw1MTYwNyw1MTYxMCw1MTYxMiw1MTYxNCw1MTYxNSw1MTYxNiw1MTYxNyw1MTYxOCw1MTYxOSw1MTYyMCw1MTYyMSw1MTYyMiw1MTYyMyw1MTYyNCw1MTYyNSw1MTYyNiw1MTYyNyw1MTYyOCw1MTYyOSw1MTYzMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTYzMSw1MTYzMiw1MTYzMyw1MTYzNCw1MTYzNSw1MTYzNiw1MTYzNyw1MTYzOCw1MTYzOSw1MTY0MCw1MTY0MSw1MTY0Miw1MTY0Myw1MTY0NCw1MTY0NSw1MTY0Niw1MTY0Nyw1MTY1MCw1MTY1MSw1MTY1Myw1MTY1NCw1MTY1Nyw1MTY1OSw1MTY2MCw1MTY2MSw1MTY2Miw1MTY2Myw1MTY2Niw1MTY2OCw1MTY3MSw1MTY3Miw1MTY3NSw2NTI4MSw2NTI4Miw2NTI4Myw2NTI4NCw2NTI4NSw2NTI4Niw2NTI4Nyw2NTI4OCw2NTI4OSw2NTI5MCw2NTI5MSw2NTI5Miw2NTI5Myw2NTI5NCw2NTI5NSw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSw2NTMwNiw2NTMwNyw2NTMwOCw2NTMwOSw2NTMxMCw2NTMxMSw2NTMxMiw2NTMxMyw2NTMxNCw2NTMxNSw2NTMxNiw2NTMxNyw2NTMxOCw2NTMxOSw2NTMyMCw2NTMyMSw2NTMyMiw2NTMyMyw2NTMyNCw2NTMyNSw2NTMyNiw2NTMyNyw2NTMyOCw2NTMyOSw2NTMzMCw2NTMzMSw2NTMzMiw2NTMzMyw2NTMzNCw2NTMzNSw2NTMzNiw2NTMzNyw2NTMzOCw2NTMzOSw2NTUxMCw2NTM0MSw2NTM0Miw2NTM0Myw2NTM0NCw2NTM0NSw2NTM0Niw2NTM0Nyw2NTM0OCw2NTM0OSw2NTM1MCw2NTM1MSw2NTM1Miw2NTM1Myw2NTM1NCw2NTM1NSw2NTM1Niw2NTM1Nyw2NTM1OCw2NTM1OSw2NTM2MCw2NTM2MSw2NTM2Miw2NTM2Myw2NTM2NCw2NTM2NSw2NTM2Niw2NTM2Nyw2NTM2OCw2NTM2OSw2NTM3MCw2NTM3MSw2NTM3Miw2NTM3Myw2NTUwNyw1MTY3OCw1MTY3OSw1MTY4MSw1MTY4Myw1MTY4NSw1MTY4Niw1MTY4OCw1MTY4OSw1MTY5MCw1MTY5MSw1MTY5NCw1MTY5OCw1MTY5OSw1MTcwMCw1MTcwMSw1MTcwMiw1MTcwMyw1MTcwNiw1MTcwNyw1MTcwOSw1MTcxMCw1MTcxMSw1MTcxMyw1MTcxNCw1MTcxNSw1MTcxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTcxNyw1MTcxOCw1MTcxOSw1MTcyMiw1MTcyNiw1MTcyNyw1MTcyOCw1MTcyOSw1MTczMCw1MTczMSw1MTczMyw1MTczNCw1MTczNSw1MTczNyw1MTczOCw1MTczOSw1MTc0MCw1MTc0MSw1MTc0Miw1MTc0Myw1MTc0NCw1MTc0NSw1MTc0Niw1MTc0Nyw1MTc0OCw1MTc0OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTc1MCw1MTc1MSw1MTc1Miw1MTc1NCw1MTc1NSw1MTc1Niw1MTc1Nyw1MTc1OCw1MTc1OSw1MTc2MCw1MTc2MSw1MTc2Miw1MTc2Myw1MTc2NCw1MTc2NSw1MTc2Niw1MTc2Nyw1MTc2OCw1MTc2OSw1MTc3MCw1MTc3MSw1MTc3Miw1MTc3Myw1MTc3NCw1MTc3NSw1MTc3Niw1MTc3Nyw1MTc3OCw1MTc3OSw1MTc4MCw1MTc4MSw1MTc4MiwxMjU5MywxMjU5NCwxMjU5NSwxMjU5NiwxMjU5NywxMjU5OCwxMjU5OSwxMjYwMCwxMjYwMSwxMjYwMiwxMjYwMywxMjYwNCwxMjYwNSwxMjYwNiwxMjYwNywxMjYwOCwxMjYwOSwxMjYxMCwxMjYxMSwxMjYxMiwxMjYxMywxMjYxNCwxMjYxNSwxMjYxNiwxMjYxNywxMjYxOCwxMjYxOSwxMjYyMCwxMjYyMSwxMjYyMiwxMjYyMywxMjYyNCwxMjYyNSwxMjYyNiwxMjYyNywxMjYyOCwxMjYyOSwxMjYzMCwxMjYzMSwxMjYzMiwxMjYzMywxMjYzNCwxMjYzNSwxMjYzNiwxMjYzNywxMjYzOCwxMjYzOSwxMjY0MCwxMjY0MSwxMjY0MiwxMjY0MywxMjY0NCwxMjY0NSwxMjY0NiwxMjY0NywxMjY0OCwxMjY0OSwxMjY1MCwxMjY1MSwxMjY1MiwxMjY1MywxMjY1NCwxMjY1NSwxMjY1NiwxMjY1NywxMjY1OCwxMjY1OSwxMjY2MCwxMjY2MSwxMjY2MiwxMjY2MywxMjY2NCwxMjY2NSwxMjY2NiwxMjY2NywxMjY2OCwxMjY2OSwxMjY3MCwxMjY3MSwxMjY3MiwxMjY3MywxMjY3NCwxMjY3NSwxMjY3NiwxMjY3NywxMjY3OCwxMjY3OSwxMjY4MCwxMjY4MSwxMjY4MiwxMjY4MywxMjY4NCwxMjY4NSwxMjY4Niw1MTc4Myw1MTc4NCw1MTc4NSw1MTc4Niw1MTc4Nyw1MTc5MCw1MTc5MSw1MTc5Myw1MTc5NCw1MTc5NSw1MTc5Nyw1MTc5OCw1MTc5OSw1MTgwMCw1MTgwMSw1MTgwMiw1MTgwMyw1MTgwNiw1MTgxMCw1MTgxMSw1MTgxMiw1MTgxMyw1MTgxNCw1MTgxNSw1MTgxNyw1MTgxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTgxOSw1MTgyMCw1MTgyMSw1MTgyMiw1MTgyMyw1MTgyNCw1MTgyNSw1MTgyNiw1MTgyNyw1MTgyOCw1MTgyOSw1MTgzMCw1MTgzMSw1MTgzMiw1MTgzMyw1MTgzNCw1MTgzNSw1MTgzNiw1MTgzOCw1MTgzOSw1MTg0MCw1MTg0MSw1MTg0Miw1MTg0Myw1MTg0NSw1MTg0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MTg0Nyw1MTg0OCw1MTg0OSw1MTg1MCw1MTg1MSw1MTg1Miw1MTg1Myw1MTg1NCw1MTg1NSw1MTg1Niw1MTg1Nyw1MTg1OCw1MTg1OSw1MTg2MCw1MTg2MSw1MTg2Miw1MTg2Myw1MTg2NSw1MTg2Niw1MTg2Nyw1MTg2OCw1MTg2OSw1MTg3MCw1MTg3MSw1MTg3Miw1MTg3Myw1MTg3NCw1MTg3NSw1MTg3Niw1MTg3Nyw1MTg3OCw1MTg3OSw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxODgwLDUxODgxLDUxODgyLDUxODgzLDUxODg0LDUxODg1LDUxODg2LDUxODg3LDUxODg4LDUxODg5LDUxODkwLDUxODkxLDUxODkyLDUxODkzLDUxODk0LDUxODk1LDUxODk2LDUxODk3LDUxODk4LDUxODk5LDUxOTAyLDUxOTAzLDUxOTA1LDUxOTA2LDUxOTA3LDUxOTA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTEwLDUxOTExLDUxOTEyLDUxOTEzLDUxOTE0LDUxOTE1LDUxOTE4LDUxOTIwLDUxOTIyLDUxOTI0LDUxOTI1LDUxOTI2LDUxOTI3LDUxOTMwLDUxOTMxLDUxOTMyLDUxOTMzLDUxOTM0LDUxOTM1LDUxOTM3LDUxOTM4LDUxOTM5LDUxOTQwLDUxOTQxLDUxOTQyLDUxOTQzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUxOTQ0LDUxOTQ1LDUxOTQ2LDUxOTQ3LDUxOTQ5LDUxOTUwLDUxOTUxLDUxOTUyLDUxOTUzLDUxOTU0LDUxOTU1LDUxOTU3LDUxOTU4LDUxOTU5LDUxOTYwLDUxOTYxLDUxOTYyLDUxOTYzLDUxOTY0LDUxOTY1LDUxOTY2LDUxOTY3LDUxOTY4LDUxOTY5LDUxOTcwLDUxOTcxLDUxOTcyLDUxOTczLDUxOTc0LDUxOTc1LDUxOTc3LDUxOTc4LDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Niw5NDkyLDk1MDAsOTUxNiw5NTA4LDk1MjQsOTUzMiw5NDczLDk0NzUsOTQ4Nyw5NDkxLDk0OTksOTQ5NSw5NTA3LDk1MjMsOTUxNSw5NTMxLDk1NDcsOTUwNCw5NTE5LDk1MTIsOTUyNyw5NTM1LDk1MDEsOTUyMCw5NTA5LDk1MjgsOTUzOCw5NDkwLDk0ODksOTQ5OCw5NDk3LDk0OTQsOTQ5Myw5NDg2LDk0ODUsOTUwMiw5NTAzLDk1MDUsOTUwNiw5NTEwLDk1MTEsOTUxMyw5NTE0LDk1MTcsOTUxOCw5NTIxLDk1MjIsOTUyNSw5NTI2LDk1MjksOTUzMCw5NTMzLDk1MzQsOTUzNiw5NTM3LDk1MzksOTU0MCw5NTQxLDk1NDIsOTU0Myw5NTQ0LDk1NDUsOTU0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTE5NzksNTE5ODAsNTE5ODEsNTE5ODIsNTE5ODMsNTE5ODUsNTE5ODYsNTE5ODcsNTE5ODksNTE5OTAsNTE5OTEsNTE5OTMsNTE5OTQsNTE5OTUsNTE5OTYsNTE5OTcsNTE5OTgsNTE5OTksNTIwMDIsNTIwMDMsNTIwMDQsNTIwMDUsNTIwMDYsNTIwMDcsNTIwMDgsNTIwMDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMTAsNTIwMTEsNTIwMTIsNTIwMTMsNTIwMTQsNTIwMTUsNTIwMTYsNTIwMTcsNTIwMTgsNTIwMTksNTIwMjAsNTIwMjEsNTIwMjIsNTIwMjMsNTIwMjQsNTIwMjUsNTIwMjYsNTIwMjcsNTIwMjgsNTIwMjksNTIwMzAsNTIwMzEsNTIwMzIsNTIwMzQsNTIwMzUsNTIwMzYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIwMzcsNTIwMzgsNTIwMzksNTIwNDIsNTIwNDMsNTIwNDUsNTIwNDYsNTIwNDcsNTIwNDksNTIwNTAsNTIwNTEsNTIwNTIsNTIwNTMsNTIwNTQsNTIwNTUsNTIwNTgsNTIwNTksNTIwNjAsNTIwNjIsNTIwNjMsNTIwNjQsNTIwNjUsNTIwNjYsNTIwNjcsNTIwNjksNTIwNzAsNTIwNzEsNTIwNzIsNTIwNzMsNTIwNzQsNTIwNzUsNTIwNzYsMTMyMDUsMTMyMDYsMTMyMDcsODQ2NywxMzIwOCwxMzI1MiwxMzIxOSwxMzIyMCwxMzIyMSwxMzIyMiwxMzIwOSwxMzIxMCwxMzIxMSwxMzIxMiwxMzIxMywxMzIxNCwxMzIxNSwxMzIxNiwxMzIxNywxMzIxOCwxMzI1OCwxMzE5NywxMzE5OCwxMzE5OSwxMzI2MywxMzE5MiwxMzE5MywxMzI1NiwxMzIyMywxMzIyNCwxMzIzMiwxMzIzMywxMzIzNCwxMzIzNSwxMzIzNiwxMzIzNywxMzIzOCwxMzIzOSwxMzI0MCwxMzI0MSwxMzE4NCwxMzE4NSwxMzE4NiwxMzE4NywxMzE4OCwxMzI0MiwxMzI0MywxMzI0NCwxMzI0NSwxMzI0NiwxMzI0NywxMzIwMCwxMzIwMSwxMzIwMiwxMzIwMywxMzIwNCw4NDg2LDEzMjQ4LDEzMjQ5LDEzMTk0LDEzMTk1LDEzMTk2LDEzMjcwLDEzMjUzLDEzMjI5LDEzMjMwLDEzMjMxLDEzMjc1LDEzMjI1LDEzMjI2LDEzMjI3LDEzMjI4LDEzMjc3LDEzMjY0LDEzMjY3LDEzMjUxLDEzMjU3LDEzMjc2LDEzMjU0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMDc3LDUyMDc4LDUyMDc5LDUyMDgwLDUyMDgxLDUyMDgyLDUyMDgzLDUyMDg0LDUyMDg1LDUyMDg2LDUyMDg3LDUyMDkwLDUyMDkxLDUyMDkyLDUyMDkzLDUyMDk0LDUyMDk1LDUyMDk2LDUyMDk3LDUyMDk4LDUyMDk5LDUyMTAwLDUyMTAxLDUyMTAyLDUyMTAzLDUyMTA0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTA1LDUyMTA2LDUyMTA3LDUyMTA4LDUyMTA5LDUyMTEwLDUyMTExLDUyMTEyLDUyMTEzLDUyMTE0LDUyMTE1LDUyMTE2LDUyMTE3LDUyMTE4LDUyMTE5LDUyMTIwLDUyMTIxLDUyMTIyLDUyMTIzLDUyMTI1LDUyMTI2LDUyMTI3LDUyMTI4LDUyMTI5LDUyMTMwLDUyMTMxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyMTMyLDUyMTMzLDUyMTM0LDUyMTM1LDUyMTM2LDUyMTM3LDUyMTM4LDUyMTM5LDUyMTQwLDUyMTQxLDUyMTQyLDUyMTQzLDUyMTQ0LDUyMTQ1LDUyMTQ2LDUyMTQ3LDUyMTQ4LDUyMTQ5LDUyMTUwLDUyMTUxLDUyMTUzLDUyMTU0LDUyMTU1LDUyMTU2LDUyMTU3LDUyMTU4LDUyMTU5LDUyMTYwLDUyMTYxLDUyMTYyLDUyMTYzLDUyMTY0LDE5OCwyMDgsMTcwLDI5NCxudWxsLDMwNixudWxsLDMxOSwzMjEsMjE2LDMzOCwxODYsMjIyLDM1OCwzMzAsbnVsbCwxMjg5NiwxMjg5NywxMjg5OCwxMjg5OSwxMjkwMCwxMjkwMSwxMjkwMiwxMjkwMywxMjkwNCwxMjkwNSwxMjkwNiwxMjkwNywxMjkwOCwxMjkwOSwxMjkxMCwxMjkxMSwxMjkxMiwxMjkxMywxMjkxNCwxMjkxNSwxMjkxNiwxMjkxNywxMjkxOCwxMjkxOSwxMjkyMCwxMjkyMSwxMjkyMiwxMjkyMyw5NDI0LDk0MjUsOTQyNiw5NDI3LDk0MjgsOTQyOSw5NDMwLDk0MzEsOTQzMiw5NDMzLDk0MzQsOTQzNSw5NDM2LDk0MzcsOTQzOCw5NDM5LDk0NDAsOTQ0MSw5NDQyLDk0NDMsOTQ0NCw5NDQ1LDk0NDYsOTQ0Nyw5NDQ4LDk0NDksOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw5MzIyLDkzMjMsOTMyNCw5MzI1LDkzMjYsMTg5LDg1MzEsODUzMiwxODgsMTkwLDg1MzksODU0MCw4NTQxLDg1NDIsNTIxNjUsNTIxNjYsNTIxNjcsNTIxNjgsNTIxNjksNTIxNzAsNTIxNzEsNTIxNzIsNTIxNzMsNTIxNzQsNTIxNzUsNTIxNzYsNTIxNzcsNTIxNzgsNTIxNzksNTIxODEsNTIxODIsNTIxODMsNTIxODQsNTIxODUsNTIxODYsNTIxODcsNTIxODgsNTIxODksNTIxOTAsNTIxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIxOTIsNTIxOTMsNTIxOTQsNTIxOTUsNTIxOTcsNTIxOTgsNTIyMDAsNTIyMDIsNTIyMDMsNTIyMDQsNTIyMDUsNTIyMDYsNTIyMDcsNTIyMDgsNTIyMDksNTIyMTAsNTIyMTEsNTIyMTIsNTIyMTMsNTIyMTQsNTIyMTUsNTIyMTYsNTIyMTcsNTIyMTgsNTIyMTksNTIyMjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIyMjEsNTIyMjIsNTIyMjMsNTIyMjQsNTIyMjUsNTIyMjYsNTIyMjcsNTIyMjgsNTIyMjksNTIyMzAsNTIyMzEsNTIyMzIsNTIyMzMsNTIyMzQsNTIyMzUsNTIyMzgsNTIyMzksNTIyNDEsNTIyNDIsNTIyNDMsNTIyNDUsNTIyNDYsNTIyNDcsNTIyNDgsNTIyNDksNTIyNTAsNTIyNTEsNTIyNTQsNTIyNTUsNTIyNTYsNTIyNTksNTIyNjAsMjMwLDI3MywyNDAsMjk1LDMwNSwzMDcsMzEyLDMyMCwzMjIsMjQ4LDMzOSwyMjMsMjU0LDM1OSwzMzEsMzI5LDEyODAwLDEyODAxLDEyODAyLDEyODAzLDEyODA0LDEyODA1LDEyODA2LDEyODA3LDEyODA4LDEyODA5LDEyODEwLDEyODExLDEyODEyLDEyODEzLDEyODE0LDEyODE1LDEyODE2LDEyODE3LDEyODE4LDEyODE5LDEyODIwLDEyODIxLDEyODIyLDEyODIzLDEyODI0LDEyODI1LDEyODI2LDEyODI3LDkzNzIsOTM3Myw5Mzc0LDkzNzUsOTM3Niw5Mzc3LDkzNzgsOTM3OSw5MzgwLDkzODEsOTM4Miw5MzgzLDkzODQsOTM4NSw5Mzg2LDkzODcsOTM4OCw5Mzg5LDkzOTAsOTM5MSw5MzkyLDkzOTMsOTM5NCw5Mzk1LDkzOTYsOTM5Nyw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDkzNDIsOTM0Myw5MzQ0LDkzNDUsOTM0NiwxODUsMTc4LDE3OSw4MzA4LDgzMTksODMyMSw4MzIyLDgzMjMsODMyNCw1MjI2MSw1MjI2Miw1MjI2Niw1MjI2Nyw1MjI2OSw1MjI3MSw1MjI3Myw1MjI3NCw1MjI3NSw1MjI3Niw1MjI3Nyw1MjI3OCw1MjI3OSw1MjI4Miw1MjI4Nyw1MjI4OCw1MjI4OSw1MjI5MCw1MjI5MSw1MjI5NCw1MjI5NSw1MjI5Nyw1MjI5OCw1MjI5OSw1MjMwMSw1MjMwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMwMyw1MjMwNCw1MjMwNSw1MjMwNiw1MjMwNyw1MjMxMCw1MjMxNCw1MjMxNSw1MjMxNiw1MjMxNyw1MjMxOCw1MjMxOSw1MjMyMSw1MjMyMiw1MjMyMyw1MjMyNSw1MjMyNyw1MjMyOSw1MjMzMCw1MjMzMSw1MjMzMiw1MjMzMyw1MjMzNCw1MjMzNSw1MjMzNyw1MjMzOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjMzOSw1MjM0MCw1MjM0Miw1MjM0Myw1MjM0NCw1MjM0NSw1MjM0Niw1MjM0Nyw1MjM0OCw1MjM0OSw1MjM1MCw1MjM1MSw1MjM1Miw1MjM1Myw1MjM1NCw1MjM1NSw1MjM1Niw1MjM1Nyw1MjM1OCw1MjM1OSw1MjM2MCw1MjM2MSw1MjM2Miw1MjM2Myw1MjM2NCw1MjM2NSw1MjM2Niw1MjM2Nyw1MjM2OCw1MjM2OSw1MjM3MCw1MjM3MSwxMjM1MywxMjM1NCwxMjM1NSwxMjM1NiwxMjM1NywxMjM1OCwxMjM1OSwxMjM2MCwxMjM2MSwxMjM2MiwxMjM2MywxMjM2NCwxMjM2NSwxMjM2NiwxMjM2NywxMjM2OCwxMjM2OSwxMjM3MCwxMjM3MSwxMjM3MiwxMjM3MywxMjM3NCwxMjM3NSwxMjM3NiwxMjM3NywxMjM3OCwxMjM3OSwxMjM4MCwxMjM4MSwxMjM4MiwxMjM4MywxMjM4NCwxMjM4NSwxMjM4NiwxMjM4NywxMjM4OCwxMjM4OSwxMjM5MCwxMjM5MSwxMjM5MiwxMjM5MywxMjM5NCwxMjM5NSwxMjM5NiwxMjM5NywxMjM5OCwxMjM5OSwxMjQwMCwxMjQwMSwxMjQwMiwxMjQwMywxMjQwNCwxMjQwNSwxMjQwNiwxMjQwNywxMjQwOCwxMjQwOSwxMjQxMCwxMjQxMSwxMjQxMiwxMjQxMywxMjQxNCwxMjQxNSwxMjQxNiwxMjQxNywxMjQxOCwxMjQxOSwxMjQyMCwxMjQyMSwxMjQyMiwxMjQyMywxMjQyNCwxMjQyNSwxMjQyNiwxMjQyNywxMjQyOCwxMjQyOSwxMjQzMCwxMjQzMSwxMjQzMiwxMjQzMywxMjQzNCwxMjQzNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTIzNzIsNTIzNzMsNTIzNzQsNTIzNzUsNTIzNzgsNTIzNzksNTIzODEsNTIzODIsNTIzODMsNTIzODUsNTIzODYsNTIzODcsNTIzODgsNTIzODksNTIzOTAsNTIzOTEsNTIzOTQsNTIzOTgsNTIzOTksNTI0MDAsNTI0MDEsNTI0MDIsNTI0MDMsNTI0MDYsNTI0MDcsNTI0MDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0MTAsNTI0MTEsNTI0MTMsNTI0MTQsNTI0MTUsNTI0MTYsNTI0MTcsNTI0MTgsNTI0MTksNTI0MjIsNTI0MjQsNTI0MjYsNTI0MjcsNTI0MjgsNTI0MjksNTI0MzAsNTI0MzEsNTI0MzMsNTI0MzQsNTI0MzUsNTI0MzcsNTI0MzgsNTI0MzksNTI0NDAsNTI0NDEsNTI0NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI0NDMsNTI0NDQsNTI0NDUsNTI0NDYsNTI0NDcsNTI0NDgsNTI0NDksNTI0NTAsNTI0NTEsNTI0NTMsNTI0NTQsNTI0NTUsNTI0NTYsNTI0NTcsNTI0NTgsNTI0NTksNTI0NjEsNTI0NjIsNTI0NjMsNTI0NjUsNTI0NjYsNTI0NjcsNTI0NjgsNTI0NjksNTI0NzAsNTI0NzEsNTI0NzIsNTI0NzMsNTI0NzQsNTI0NzUsNTI0NzYsNTI0NzcsMTI0NDksMTI0NTAsMTI0NTEsMTI0NTIsMTI0NTMsMTI0NTQsMTI0NTUsMTI0NTYsMTI0NTcsMTI0NTgsMTI0NTksMTI0NjAsMTI0NjEsMTI0NjIsMTI0NjMsMTI0NjQsMTI0NjUsMTI0NjYsMTI0NjcsMTI0NjgsMTI0NjksMTI0NzAsMTI0NzEsMTI0NzIsMTI0NzMsMTI0NzQsMTI0NzUsMTI0NzYsMTI0NzcsMTI0NzgsMTI0NzksMTI0ODAsMTI0ODEsMTI0ODIsMTI0ODMsMTI0ODQsMTI0ODUsMTI0ODYsMTI0ODcsMTI0ODgsMTI0ODksMTI0OTAsMTI0OTEsMTI0OTIsMTI0OTMsMTI0OTQsMTI0OTUsMTI0OTYsMTI0OTcsMTI0OTgsMTI0OTksMTI1MDAsMTI1MDEsMTI1MDIsMTI1MDMsMTI1MDQsMTI1MDUsMTI1MDYsMTI1MDcsMTI1MDgsMTI1MDksMTI1MTAsMTI1MTEsMTI1MTIsMTI1MTMsMTI1MTQsMTI1MTUsMTI1MTYsMTI1MTcsMTI1MTgsMTI1MTksMTI1MjAsMTI1MjEsMTI1MjIsMTI1MjMsMTI1MjQsMTI1MjUsMTI1MjYsMTI1MjcsMTI1MjgsMTI1MjksMTI1MzAsMTI1MzEsMTI1MzIsMTI1MzMsMTI1MzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNDc4LDUyNDc5LDUyNDgwLDUyNDgyLDUyNDgzLDUyNDg0LDUyNDg1LDUyNDg2LDUyNDg3LDUyNDkwLDUyNDkxLDUyNDkzLDUyNDk0LDUyNDk1LDUyNDk3LDUyNDk4LDUyNDk5LDUyNTAwLDUyNTAxLDUyNTAyLDUyNTAzLDUyNTA2LDUyNTA4LDUyNTEwLDUyNTExLDUyNTEyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTEzLDUyNTE0LDUyNTE1LDUyNTE3LDUyNTE4LDUyNTE5LDUyNTIxLDUyNTIyLDUyNTIzLDUyNTI1LDUyNTI2LDUyNTI3LDUyNTI4LDUyNTI5LDUyNTMwLDUyNTMxLDUyNTMyLDUyNTMzLDUyNTM0LDUyNTM1LDUyNTM2LDUyNTM4LDUyNTM5LDUyNTQwLDUyNTQxLDUyNTQyLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNTQzLDUyNTQ0LDUyNTQ1LDUyNTQ2LDUyNTQ3LDUyNTQ4LDUyNTQ5LDUyNTUwLDUyNTUxLDUyNTUyLDUyNTUzLDUyNTU0LDUyNTU1LDUyNTU2LDUyNTU3LDUyNTU4LDUyNTU5LDUyNTYwLDUyNTYxLDUyNTYyLDUyNTYzLDUyNTY0LDUyNTY1LDUyNTY2LDUyNTY3LDUyNTY4LDUyNTY5LDUyNTcwLDUyNTcxLDUyNTczLDUyNTc0LDUyNTc1LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI1NzcsNTI1NzgsNTI1NzksNTI1ODEsNTI1ODIsNTI1ODMsNTI1ODQsNTI1ODUsNTI1ODYsNTI1ODcsNTI1OTAsNTI1OTIsNTI1OTQsNTI1OTUsNTI1OTYsNTI1OTcsNTI1OTgsNTI1OTksNTI2MDEsNTI2MDIsNTI2MDMsNTI2MDQsNTI2MDUsNTI2MDYsNTI2MDcsNTI2MDgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2MDksNTI2MTAsNTI2MTEsNTI2MTIsNTI2MTMsNTI2MTQsNTI2MTUsNTI2MTcsNTI2MTgsNTI2MTksNTI2MjAsNTI2MjEsNTI2MjIsNTI2MjMsNTI2MjQsNTI2MjUsNTI2MjYsNTI2MjcsNTI2MzAsNTI2MzEsNTI2MzMsNTI2MzQsNTI2MzUsNTI2MzcsNTI2MzgsNTI2MzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI2NDAsNTI2NDEsNTI2NDIsNTI2NDMsNTI2NDYsNTI2NDgsNTI2NTAsNTI2NTEsNTI2NTIsNTI2NTMsNTI2NTQsNTI2NTUsNTI2NTcsNTI2NTgsNTI2NTksNTI2NjAsNTI2NjEsNTI2NjIsNTI2NjMsNTI2NjQsNTI2NjUsNTI2NjYsNTI2NjcsNTI2NjgsNTI2NjksNTI2NzAsNTI2NzEsNTI2NzIsNTI2NzMsNTI2NzQsNTI2NzUsNTI2NzcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjY3OCw1MjY3OSw1MjY4MCw1MjY4MSw1MjY4Miw1MjY4Myw1MjY4NSw1MjY4Niw1MjY4Nyw1MjY4OSw1MjY5MCw1MjY5MSw1MjY5Miw1MjY5Myw1MjY5NCw1MjY5NSw1MjY5Niw1MjY5Nyw1MjY5OCw1MjY5OSw1MjcwMCw1MjcwMSw1MjcwMiw1MjcwMyw1MjcwNCw1MjcwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjcwNiw1MjcwNyw1MjcwOCw1MjcwOSw1MjcxMCw1MjcxMSw1MjcxMyw1MjcxNCw1MjcxNSw1MjcxNyw1MjcxOCw1MjcxOSw1MjcyMSw1MjcyMiw1MjcyMyw1MjcyNCw1MjcyNSw1MjcyNiw1MjcyNyw1MjczMCw1MjczMiw1MjczNCw1MjczNSw1MjczNiw1MjczNyw1MjczOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw1MjczOSw1Mjc0MSw1Mjc0Miw1Mjc0Myw1Mjc0NSw1Mjc0Niw1Mjc0Nyw1Mjc0OSw1Mjc1MCw1Mjc1MSw1Mjc1Miw1Mjc1Myw1Mjc1NCw1Mjc1NSw1Mjc1Nyw1Mjc1OCw1Mjc1OSw1Mjc2MCw1Mjc2Miw1Mjc2Myw1Mjc2NCw1Mjc2NSw1Mjc2Niw1Mjc2Nyw1Mjc3MCw1Mjc3MSw1Mjc3Myw1Mjc3NCw1Mjc3NSw1Mjc3Nyw1Mjc3OCw1Mjc3OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyNzgwLDUyNzgxLDUyNzgyLDUyNzgzLDUyNzg2LDUyNzg4LDUyNzkwLDUyNzkxLDUyNzkyLDUyNzkzLDUyNzk0LDUyNzk1LDUyNzk2LDUyNzk3LDUyNzk4LDUyNzk5LDUyODAwLDUyODAxLDUyODAyLDUyODAzLDUyODA0LDUyODA1LDUyODA2LDUyODA3LDUyODA4LDUyODA5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODEwLDUyODExLDUyODEyLDUyODEzLDUyODE0LDUyODE1LDUyODE2LDUyODE3LDUyODE4LDUyODE5LDUyODIwLDUyODIxLDUyODIyLDUyODIzLDUyODI2LDUyODI3LDUyODI5LDUyODMwLDUyODM0LDUyODM1LDUyODM2LDUyODM3LDUyODM4LDUyODM5LDUyODQyLDUyODQ0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDUyODQ2LDUyODQ3LDUyODQ4LDUyODQ5LDUyODUwLDUyODUxLDUyODU0LDUyODU1LDUyODU3LDUyODU4LDUyODU5LDUyODYxLDUyODYyLDUyODYzLDUyODY0LDUyODY1LDUyODY2LDUyODY3LDUyODcwLDUyODcyLDUyODc0LDUyODc1LDUyODc2LDUyODc3LDUyODc4LDUyODc5LDUyODgyLDUyODgzLDUyODg1LDUyODg2LDUyODg3LDUyODg5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI4OTAsNTI4OTEsNTI4OTIsNTI4OTMsNTI4OTQsNTI4OTUsNTI4OTgsNTI5MDIsNTI5MDMsNTI5MDQsNTI5MDUsNTI5MDYsNTI5MDcsNTI5MTAsNTI5MTEsNTI5MTIsNTI5MTMsNTI5MTQsNTI5MTUsNTI5MTYsNTI5MTcsNTI5MTgsNTI5MTksNTI5MjAsNTI5MjEsNTI5MjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5MjMsNTI5MjQsNTI5MjUsNTI5MjYsNTI5MjcsNTI5MjgsNTI5MzAsNTI5MzEsNTI5MzIsNTI5MzMsNTI5MzQsNTI5MzUsNTI5MzYsNTI5MzcsNTI5MzgsNTI5MzksNTI5NDAsNTI5NDEsNTI5NDIsNTI5NDMsNTI5NDQsNTI5NDUsNTI5NDYsNTI5NDcsNTI5NDgsNTI5NDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTI5NTAsNTI5NTEsNTI5NTIsNTI5NTMsNTI5NTQsNTI5NTUsNTI5NTYsNTI5NTcsNTI5NTgsNTI5NTksNTI5NjAsNTI5NjEsNTI5NjIsNTI5NjMsNTI5NjYsNTI5NjcsNTI5NjksNTI5NzAsNTI5NzMsNTI5NzQsNTI5NzUsNTI5NzYsNTI5NzcsNTI5NzgsNTI5NzksNTI5ODIsNTI5ODYsNTI5ODcsNTI5ODgsNTI5ODksNTI5OTAsNTI5OTEsNDQwMzIsNDQwMzMsNDQwMzYsNDQwMzksNDQwNDAsNDQwNDEsNDQwNDIsNDQwNDgsNDQwNDksNDQwNTAsNDQwNTEsNDQwNTIsNDQwNTMsNDQwNTQsNDQwNTUsNDQwNTcsNDQwNTgsNDQwNTksNDQwNjAsNDQwNjEsNDQwNjQsNDQwNjgsNDQwNzYsNDQwNzcsNDQwNzksNDQwODAsNDQwODEsNDQwODgsNDQwODksNDQwOTIsNDQwOTYsNDQxMDcsNDQxMDksNDQxMTYsNDQxMjAsNDQxMjQsNDQxNDQsNDQxNDUsNDQxNDgsNDQxNTEsNDQxNTIsNDQxNTQsNDQxNjAsNDQxNjEsNDQxNjMsNDQxNjQsNDQxNjUsNDQxNjYsNDQxNjksNDQxNzAsNDQxNzEsNDQxNzIsNDQxNzYsNDQxODAsNDQxODgsNDQxODksNDQxOTEsNDQxOTIsNDQxOTMsNDQyMDAsNDQyMDEsNDQyMDIsNDQyMDQsNDQyMDcsNDQyMDgsNDQyMTYsNDQyMTcsNDQyMTksNDQyMjAsNDQyMjEsNDQyMjUsNDQyMjgsNDQyMzIsNDQyMzYsNDQyNDUsNDQyNDcsNDQyNTYsNDQyNTcsNDQyNjAsNDQyNjMsNDQyNjQsNDQyNjYsNDQyNjgsNDQyNzEsNDQyNzIsNDQyNzMsNDQyNzUsNDQyNzcsNDQyNzgsNDQyODQsNDQyODUsNDQyODgsNDQyOTIsNDQyOTQsNTI5OTQsNTI5OTUsNTI5OTcsNTI5OTgsNTI5OTksNTMwMDEsNTMwMDIsNTMwMDMsNTMwMDQsNTMwMDUsNTMwMDYsNTMwMDcsNTMwMTAsNTMwMTIsNTMwMTQsNTMwMTUsNTMwMTYsNTMwMTcsNTMwMTgsNTMwMTksNTMwMjEsNTMwMjIsNTMwMjMsNTMwMjUsNTMwMjYsNTMwMjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMwMjksNTMwMzAsNTMwMzEsNTMwMzIsNTMwMzMsNTMwMzQsNTMwMzUsNTMwMzgsNTMwNDIsNTMwNDMsNTMwNDQsNTMwNDUsNTMwNDYsNTMwNDcsNTMwNDksNTMwNTAsNTMwNTEsNTMwNTIsNTMwNTMsNTMwNTQsNTMwNTUsNTMwNTYsNTMwNTcsNTMwNTgsNTMwNTksNTMwNjAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMwNjEsNTMwNjIsNTMwNjMsNTMwNjQsNTMwNjUsNTMwNjYsNTMwNjcsNTMwNjgsNTMwNjksNTMwNzAsNTMwNzEsNTMwNzIsNTMwNzMsNTMwNzQsNTMwNzUsNTMwNzgsNTMwNzksNTMwODEsNTMwODIsNTMwODMsNTMwODUsNTMwODYsNTMwODcsNTMwODgsNTMwODksNTMwOTAsNTMwOTEsNTMwOTQsNTMwOTYsNTMwOTgsNTMwOTksNTMxMDAsNDQzMDAsNDQzMDEsNDQzMDMsNDQzMDUsNDQzMTIsNDQzMTYsNDQzMjAsNDQzMjksNDQzMzIsNDQzMzMsNDQzNDAsNDQzNDEsNDQzNDQsNDQzNDgsNDQzNTYsNDQzNTcsNDQzNTksNDQzNjEsNDQzNjgsNDQzNzIsNDQzNzYsNDQzODUsNDQzODcsNDQzOTYsNDQzOTcsNDQ0MDAsNDQ0MDMsNDQ0MDQsNDQ0MDUsNDQ0MDYsNDQ0MTEsNDQ0MTIsNDQ0MTMsNDQ0MTUsNDQ0MTcsNDQ0MTgsNDQ0MjQsNDQ0MjUsNDQ0MjgsNDQ0MzIsNDQ0NDQsNDQ0NDUsNDQ0NTIsNDQ0NzEsNDQ0ODAsNDQ0ODEsNDQ0ODQsNDQ0ODgsNDQ0OTYsNDQ0OTcsNDQ0OTksNDQ1MDgsNDQ1MTIsNDQ1MTYsNDQ1MzYsNDQ1MzcsNDQ1NDAsNDQ1NDMsNDQ1NDQsNDQ1NDUsNDQ1NTIsNDQ1NTMsNDQ1NTUsNDQ1NTcsNDQ1NjQsNDQ1OTIsNDQ1OTMsNDQ1OTYsNDQ1OTksNDQ2MDAsNDQ2MDIsNDQ2MDgsNDQ2MDksNDQ2MTEsNDQ2MTMsNDQ2MTQsNDQ2MTgsNDQ2MjAsNDQ2MjEsNDQ2MjIsNDQ2MjQsNDQ2MjgsNDQ2MzAsNDQ2MzYsNDQ2MzcsNDQ2MzksNDQ2NDAsNDQ2NDEsNDQ2NDUsNDQ2NDgsNDQ2NDksNDQ2NTIsNDQ2NTYsNDQ2NjQsNTMxMDEsNTMxMDIsNTMxMDMsNTMxMDYsNTMxMDcsNTMxMDksNTMxMTAsNTMxMTEsNTMxMTMsNTMxMTQsNTMxMTUsNTMxMTYsNTMxMTcsNTMxMTgsNTMxMTksNTMxMjEsNTMxMjIsNTMxMjMsNTMxMjQsNTMxMjYsNTMxMjcsNTMxMjgsNTMxMjksNTMxMzAsNTMxMzEsNTMxMzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMxMzQsNTMxMzUsNTMxMzYsNTMxMzcsNTMxMzgsNTMxMzksNTMxNDAsNTMxNDEsNTMxNDIsNTMxNDMsNTMxNDQsNTMxNDUsNTMxNDYsNTMxNDcsNTMxNDgsNTMxNDksNTMxNTAsNTMxNTEsNTMxNTIsNTMxNTQsNTMxNTUsNTMxNTYsNTMxNTcsNTMxNTgsNTMxNTksNTMxNjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMxNjIsNTMxNjMsNTMxNjQsNTMxNjUsNTMxNjYsNTMxNjcsNTMxNjksNTMxNzAsNTMxNzEsNTMxNzIsNTMxNzMsNTMxNzQsNTMxNzUsNTMxNzYsNTMxNzcsNTMxNzgsNTMxNzksNTMxODAsNTMxODEsNTMxODIsNTMxODMsNTMxODQsNTMxODUsNTMxODYsNTMxODcsNTMxODksNTMxOTAsNTMxOTEsNTMxOTIsNTMxOTMsNTMxOTQsNTMxOTUsNDQ2NjUsNDQ2NjcsNDQ2NjgsNDQ2NjksNDQ2NzYsNDQ2NzcsNDQ2ODQsNDQ3MzIsNDQ3MzMsNDQ3MzQsNDQ3MzYsNDQ3NDAsNDQ3NDgsNDQ3NDksNDQ3NTEsNDQ3NTIsNDQ3NTMsNDQ3NjAsNDQ3NjEsNDQ3NjQsNDQ3NzYsNDQ3NzksNDQ3ODEsNDQ3ODgsNDQ3OTIsNDQ3OTYsNDQ4MDcsNDQ4MDgsNDQ4MTMsNDQ4MTYsNDQ4NDQsNDQ4NDUsNDQ4NDgsNDQ4NTAsNDQ4NTIsNDQ4NjAsNDQ4NjEsNDQ4NjMsNDQ4NjUsNDQ4NjYsNDQ4NjcsNDQ4NzIsNDQ4NzMsNDQ4ODAsNDQ4OTIsNDQ4OTMsNDQ5MDAsNDQ5MDEsNDQ5MjEsNDQ5MjgsNDQ5MzIsNDQ5MzYsNDQ5NDQsNDQ5NDUsNDQ5NDksNDQ5NTYsNDQ5ODQsNDQ5ODUsNDQ5ODgsNDQ5OTIsNDQ5OTksNDUwMDAsNDUwMDEsNDUwMDMsNDUwMDUsNDUwMDYsNDUwMTIsNDUwMjAsNDUwMzIsNDUwMzMsNDUwNDAsNDUwNDEsNDUwNDQsNDUwNDgsNDUwNTYsNDUwNTcsNDUwNjAsNDUwNjgsNDUwNzIsNDUwNzYsNDUwODQsNDUwODUsNDUwOTYsNDUxMjQsNDUxMjUsNDUxMjgsNDUxMzAsNDUxMzIsNDUxMzQsNDUxMzksNDUxNDAsNDUxNDEsNDUxNDMsNDUxNDUsNTMxOTYsNTMxOTcsNTMxOTgsNTMxOTksNTMyMDAsNTMyMDEsNTMyMDIsNTMyMDMsNTMyMDQsNTMyMDUsNTMyMDYsNTMyMDcsNTMyMDgsNTMyMDksNTMyMTAsNTMyMTEsNTMyMTIsNTMyMTMsNTMyMTQsNTMyMTUsNTMyMTgsNTMyMTksNTMyMjEsNTMyMjIsNTMyMjMsNTMyMjUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMyMjYsNTMyMjcsNTMyMjgsNTMyMjksNTMyMzAsNTMyMzEsNTMyMzQsNTMyMzYsNTMyMzgsNTMyMzksNTMyNDAsNTMyNDEsNTMyNDIsNTMyNDMsNTMyNDUsNTMyNDYsNTMyNDcsNTMyNDksNTMyNTAsNTMyNTEsNTMyNTMsNTMyNTQsNTMyNTUsNTMyNTYsNTMyNTcsNTMyNTgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMyNTksNTMyNjAsNTMyNjEsNTMyNjIsNTMyNjMsNTMyNjQsNTMyNjYsNTMyNjcsNTMyNjgsNTMyNjksNTMyNzAsNTMyNzEsNTMyNzMsNTMyNzQsNTMyNzUsNTMyNzYsNTMyNzcsNTMyNzgsNTMyNzksNTMyODAsNTMyODEsNTMyODIsNTMyODMsNTMyODQsNTMyODUsNTMyODYsNTMyODcsNTMyODgsNTMyODksNTMyOTAsNTMyOTEsNTMyOTIsNDUxNDksNDUxODAsNDUxODEsNDUxODQsNDUxODgsNDUxOTYsNDUxOTcsNDUxOTksNDUyMDEsNDUyMDgsNDUyMDksNDUyMTAsNDUyMTIsNDUyMTUsNDUyMTYsNDUyMTcsNDUyMTgsNDUyMjQsNDUyMjUsNDUyMjcsNDUyMjgsNDUyMjksNDUyMzAsNDUyMzEsNDUyMzMsNDUyMzUsNDUyMzYsNDUyMzcsNDUyNDAsNDUyNDQsNDUyNTIsNDUyNTMsNDUyNTUsNDUyNTYsNDUyNTcsNDUyNjQsNDUyNjUsNDUyNjgsNDUyNzIsNDUyODAsNDUyODUsNDUzMjAsNDUzMjEsNDUzMjMsNDUzMjQsNDUzMjgsNDUzMzAsNDUzMzEsNDUzMzYsNDUzMzcsNDUzMzksNDUzNDAsNDUzNDEsNDUzNDcsNDUzNDgsNDUzNDksNDUzNTIsNDUzNTYsNDUzNjQsNDUzNjUsNDUzNjcsNDUzNjgsNDUzNjksNDUzNzYsNDUzNzcsNDUzODAsNDUzODQsNDUzOTIsNDUzOTMsNDUzOTYsNDUzOTcsNDU0MDAsNDU0MDQsNDU0MDgsNDU0MzIsNDU0MzMsNDU0MzYsNDU0NDAsNDU0NDIsNDU0NDgsNDU0NDksNDU0NTEsNDU0NTMsNDU0NTgsNDU0NTksNDU0NjAsNDU0NjQsNDU0NjgsNDU0ODAsNDU1MTYsNDU1MjAsNDU1MjQsNDU1MzIsNDU1MzMsNTMyOTQsNTMyOTUsNTMyOTYsNTMyOTcsNTMyOTgsNTMyOTksNTMzMDIsNTMzMDMsNTMzMDUsNTMzMDYsNTMzMDcsNTMzMDksNTMzMTAsNTMzMTEsNTMzMTIsNTMzMTMsNTMzMTQsNTMzMTUsNTMzMTgsNTMzMjAsNTMzMjIsNTMzMjMsNTMzMjQsNTMzMjUsNTMzMjYsNTMzMjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMzMjksNTMzMzAsNTMzMzEsNTMzMzMsNTMzMzQsNTMzMzUsNTMzMzcsNTMzMzgsNTMzMzksNTMzNDAsNTMzNDEsNTMzNDIsNTMzNDMsNTMzNDUsNTMzNDYsNTMzNDcsNTMzNDgsNTMzNDksNTMzNTAsNTMzNTEsNTMzNTIsNTMzNTMsNTMzNTQsNTMzNTUsNTMzNTgsNTMzNTksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTMzNjEsNTMzNjIsNTMzNjMsNTMzNjUsNTMzNjYsNTMzNjcsNTMzNjgsNTMzNjksNTMzNzAsNTMzNzEsNTMzNzQsNTMzNzUsNTMzNzYsNTMzNzgsNTMzNzksNTMzODAsNTMzODEsNTMzODIsNTMzODMsNTMzODQsNTMzODUsNTMzODYsNTMzODcsNTMzODgsNTMzODksNTMzOTAsNTMzOTEsNTMzOTIsNTMzOTMsNTMzOTQsNTMzOTUsNTMzOTYsNDU1MzUsNDU1NDQsNDU1NDUsNDU1NDgsNDU1NTIsNDU1NjEsNDU1NjMsNDU1NjUsNDU1NzIsNDU1NzMsNDU1NzYsNDU1NzksNDU1ODAsNDU1ODgsNDU1ODksNDU1OTEsNDU1OTMsNDU2MDAsNDU2MjAsNDU2MjgsNDU2NTYsNDU2NjAsNDU2NjQsNDU2NzIsNDU2NzMsNDU2ODQsNDU2ODUsNDU2OTIsNDU3MDAsNDU3MDEsNDU3MDUsNDU3MTIsNDU3MTMsNDU3MTYsNDU3MjAsNDU3MjEsNDU3MjIsNDU3MjgsNDU3MjksNDU3MzEsNDU3MzMsNDU3MzQsNDU3MzgsNDU3NDAsNDU3NDQsNDU3NDgsNDU3NjgsNDU3NjksNDU3NzIsNDU3NzYsNDU3NzgsNDU3ODQsNDU3ODUsNDU3ODcsNDU3ODksNDU3OTQsNDU3OTYsNDU3OTcsNDU3OTgsNDU4MDAsNDU4MDMsNDU4MDQsNDU4MDUsNDU4MDYsNDU4MDcsNDU4MTEsNDU4MTIsNDU4MTMsNDU4MTUsNDU4MTYsNDU4MTcsNDU4MTgsNDU4MTksNDU4MjMsNDU4MjQsNDU4MjUsNDU4MjgsNDU4MzIsNDU4NDAsNDU4NDEsNDU4NDMsNDU4NDQsNDU4NDUsNDU4NTIsNDU5MDgsNDU5MDksNDU5MTAsNDU5MTIsNDU5MTUsNDU5MTYsNDU5MTgsNDU5MTksNDU5MjQsNDU5MjUsNTMzOTcsNTMzOTgsNTMzOTksNTM0MDAsNTM0MDEsNTM0MDIsNTM0MDMsNTM0MDQsNTM0MDUsNTM0MDYsNTM0MDcsNTM0MDgsNTM0MDksNTM0MTAsNTM0MTEsNTM0MTQsNTM0MTUsNTM0MTcsNTM0MTgsNTM0MTksNTM0MjEsNTM0MjIsNTM0MjMsNTM0MjQsNTM0MjUsNTM0MjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM0MjcsNTM0MzAsNTM0MzIsNTM0MzQsNTM0MzUsNTM0MzYsNTM0MzcsNTM0MzgsNTM0MzksNTM0NDIsNTM0NDMsNTM0NDUsNTM0NDYsNTM0NDcsNTM0NTAsNTM0NTEsNTM0NTIsNTM0NTMsNTM0NTQsNTM0NTUsNTM0NTgsNTM0NjIsNTM0NjMsNTM0NjQsNTM0NjUsNTM0NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM0NjcsNTM0NzAsNTM0NzEsNTM0NzMsNTM0NzQsNTM0NzUsNTM0NzcsNTM0NzgsNTM0NzksNTM0ODAsNTM0ODEsNTM0ODIsNTM0ODMsNTM0ODYsNTM0OTAsNTM0OTEsNTM0OTIsNTM0OTMsNTM0OTQsNTM0OTUsNTM0OTcsNTM0OTgsNTM0OTksNTM1MDAsNTM1MDEsNTM1MDIsNTM1MDMsNTM1MDQsNTM1MDUsNTM1MDYsNTM1MDcsNTM1MDgsNDU5MjcsNDU5MjksNDU5MzEsNDU5MzQsNDU5MzYsNDU5MzcsNDU5NDAsNDU5NDQsNDU5NTIsNDU5NTMsNDU5NTUsNDU5NTYsNDU5NTcsNDU5NjQsNDU5NjgsNDU5NzIsNDU5ODQsNDU5ODUsNDU5OTIsNDU5OTYsNDYwMjAsNDYwMjEsNDYwMjQsNDYwMjcsNDYwMjgsNDYwMzAsNDYwMzIsNDYwMzYsNDYwMzcsNDYwMzksNDYwNDEsNDYwNDMsNDYwNDUsNDYwNDgsNDYwNTIsNDYwNTYsNDYwNzYsNDYwOTYsNDYxMDQsNDYxMDgsNDYxMTIsNDYxMjAsNDYxMjEsNDYxMjMsNDYxMzIsNDYxNjAsNDYxNjEsNDYxNjQsNDYxNjgsNDYxNzYsNDYxNzcsNDYxNzksNDYxODEsNDYxODgsNDYyMDgsNDYyMTYsNDYyMzcsNDYyNDQsNDYyNDgsNDYyNTIsNDYyNjEsNDYyNjMsNDYyNjUsNDYyNzIsNDYyNzYsNDYyODAsNDYyODgsNDYyOTMsNDYzMDAsNDYzMDEsNDYzMDQsNDYzMDcsNDYzMDgsNDYzMTAsNDYzMTYsNDYzMTcsNDYzMTksNDYzMjEsNDYzMjgsNDYzNTYsNDYzNTcsNDYzNjAsNDYzNjMsNDYzNjQsNDYzNzIsNDYzNzMsNDYzNzUsNDYzNzYsNDYzNzcsNDYzNzgsNDYzODQsNDYzODUsNDYzODgsNDYzOTIsNTM1MDksNTM1MTAsNTM1MTEsNTM1MTIsNTM1MTMsNTM1MTQsNTM1MTUsNTM1MTYsNTM1MTgsNTM1MTksNTM1MjAsNTM1MjEsNTM1MjIsNTM1MjMsNTM1MjQsNTM1MjUsNTM1MjYsNTM1MjcsNTM1MjgsNTM1MjksNTM1MzAsNTM1MzEsNTM1MzIsNTM1MzMsNTM1MzQsNTM1MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM1MzYsNTM1MzcsNTM1MzgsNTM1MzksNTM1NDAsNTM1NDEsNTM1NDIsNTM1NDMsNTM1NDQsNTM1NDUsNTM1NDYsNTM1NDcsNTM1NDgsNTM1NDksNTM1NTAsNTM1NTEsNTM1NTQsNTM1NTUsNTM1NTcsNTM1NTgsNTM1NTksNTM1NjEsNTM1NjMsNTM1NjQsNTM1NjUsNTM1NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM1NjcsNTM1NzAsNTM1NzQsNTM1NzUsNTM1NzYsNTM1NzcsNTM1NzgsNTM1NzksNTM1ODIsNTM1ODMsNTM1ODUsNTM1ODYsNTM1ODcsNTM1ODksNTM1OTAsNTM1OTEsNTM1OTIsNTM1OTMsNTM1OTQsNTM1OTUsNTM1OTgsNTM2MDAsNTM2MDIsNTM2MDMsNTM2MDQsNTM2MDUsNTM2MDYsNTM2MDcsNTM2MDksNTM2MTAsNTM2MTEsNTM2MTMsNDY0MDAsNDY0MDEsNDY0MDMsNDY0MDQsNDY0MDUsNDY0MTEsNDY0MTIsNDY0MTMsNDY0MTYsNDY0MjAsNDY0MjgsNDY0MjksNDY0MzEsNDY0MzIsNDY0MzMsNDY0OTYsNDY0OTcsNDY1MDAsNDY1MDQsNDY1MDYsNDY1MDcsNDY1MTIsNDY1MTMsNDY1MTUsNDY1MTYsNDY1MTcsNDY1MjMsNDY1MjQsNDY1MjUsNDY1MjgsNDY1MzIsNDY1NDAsNDY1NDEsNDY1NDMsNDY1NDQsNDY1NDUsNDY1NTIsNDY1NzIsNDY2MDgsNDY2MDksNDY2MTIsNDY2MTYsNDY2MjksNDY2MzYsNDY2NDQsNDY2NjQsNDY2OTIsNDY2OTYsNDY3NDgsNDY3NDksNDY3NTIsNDY3NTYsNDY3NjMsNDY3NjQsNDY3NjksNDY4MDQsNDY4MzIsNDY4MzYsNDY4NDAsNDY4NDgsNDY4NDksNDY4NTMsNDY4ODgsNDY4ODksNDY4OTIsNDY4OTUsNDY4OTYsNDY5MDQsNDY5MDUsNDY5MDcsNDY5MTYsNDY5MjAsNDY5MjQsNDY5MzIsNDY5MzMsNDY5NDQsNDY5NDgsNDY5NTIsNDY5NjAsNDY5NjEsNDY5NjMsNDY5NjUsNDY5NzIsNDY5NzMsNDY5NzYsNDY5ODAsNDY5ODgsNDY5ODksNDY5OTEsNDY5OTIsNDY5OTMsNDY5OTQsNDY5OTgsNDY5OTksNTM2MTQsNTM2MTUsNTM2MTYsNTM2MTcsNTM2MTgsNTM2MTksNTM2MjAsNTM2MjEsNTM2MjIsNTM2MjMsNTM2MjQsNTM2MjUsNTM2MjYsNTM2MjcsNTM2MjksNTM2MzAsNTM2MzEsNTM2MzIsNTM2MzMsNTM2MzQsNTM2MzUsNTM2MzcsNTM2MzgsNTM2MzksNTM2NDEsNTM2NDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM2NDMsNTM2NDQsNTM2NDUsNTM2NDYsNTM2NDcsNTM2NDgsNTM2NDksNTM2NTAsNTM2NTEsNTM2NTIsNTM2NTMsNTM2NTQsNTM2NTUsNTM2NTYsNTM2NTcsNTM2NTgsNTM2NTksNTM2NjAsNTM2NjEsNTM2NjIsNTM2NjMsNTM2NjYsNTM2NjcsNTM2NjksNTM2NzAsNTM2NzEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM2NzMsNTM2NzQsNTM2NzUsNTM2NzYsNTM2NzcsNTM2NzgsNTM2NzksNTM2ODIsNTM2ODQsNTM2ODYsNTM2ODcsNTM2ODgsNTM2ODksNTM2OTEsNTM2OTMsNTM2OTQsNTM2OTUsNTM2OTcsNTM2OTgsNTM2OTksNTM3MDAsNTM3MDEsNTM3MDIsNTM3MDMsNTM3MDQsNTM3MDUsNTM3MDYsNTM3MDcsNTM3MDgsNTM3MDksNTM3MTAsNTM3MTEsNDcwMDAsNDcwMDEsNDcwMDQsNDcwMDgsNDcwMTYsNDcwMTcsNDcwMTksNDcwMjAsNDcwMjEsNDcwMjgsNDcwMjksNDcwMzIsNDcwNDcsNDcwNDksNDcwODQsNDcwODUsNDcwODgsNDcwOTIsNDcxMDAsNDcxMDEsNDcxMDMsNDcxMDQsNDcxMDUsNDcxMTEsNDcxMTIsNDcxMTMsNDcxMTYsNDcxMjAsNDcxMjgsNDcxMjksNDcxMzEsNDcxMzMsNDcxNDAsNDcxNDEsNDcxNDQsNDcxNDgsNDcxNTYsNDcxNTcsNDcxNTksNDcxNjAsNDcxNjEsNDcxNjgsNDcxNzIsNDcxODUsNDcxODcsNDcxOTYsNDcxOTcsNDcyMDAsNDcyMDQsNDcyMTIsNDcyMTMsNDcyMTUsNDcyMTcsNDcyMjQsNDcyMjgsNDcyNDUsNDcyNzIsNDcyODAsNDcyODQsNDcyODgsNDcyOTYsNDcyOTcsNDcyOTksNDczMDEsNDczMDgsNDczMTIsNDczMTYsNDczMjUsNDczMjcsNDczMjksNDczMzYsNDczMzcsNDczNDAsNDczNDQsNDczNTIsNDczNTMsNDczNTUsNDczNTcsNDczNjQsNDczODQsNDczOTIsNDc0MjAsNDc0MjEsNDc0MjQsNDc0MjgsNDc0MzYsNDc0MzksNDc0NDEsNDc0NDgsNDc0NDksNDc0NTIsNDc0NTYsNDc0NjQsNDc0NjUsNTM3MTIsNTM3MTMsNTM3MTQsNTM3MTUsNTM3MTYsNTM3MTcsNTM3MTgsNTM3MTksNTM3MjEsNTM3MjIsNTM3MjMsNTM3MjQsNTM3MjUsNTM3MjYsNTM3MjcsNTM3MjgsNTM3MjksNTM3MzAsNTM3MzEsNTM3MzIsNTM3MzMsNTM3MzQsNTM3MzUsNTM3MzYsNTM3MzcsNTM3MzgsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM3MzksNTM3NDAsNTM3NDEsNTM3NDIsNTM3NDMsNTM3NDQsNTM3NDUsNTM3NDYsNTM3NDcsNTM3NDksNTM3NTAsNTM3NTEsNTM3NTMsNTM3NTQsNTM3NTUsNTM3NTYsNTM3NTcsNTM3NTgsNTM3NTksNTM3NjAsNTM3NjEsNTM3NjIsNTM3NjMsNTM3NjQsNTM3NjUsNTM3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM3NjgsNTM3NzAsNTM3NzEsNTM3NzIsNTM3NzMsNTM3NzQsNTM3NzUsNTM3NzcsNTM3NzgsNTM3NzksNTM3ODAsNTM3ODEsNTM3ODIsNTM3ODMsNTM3ODQsNTM3ODUsNTM3ODYsNTM3ODcsNTM3ODgsNTM3ODksNTM3OTAsNTM3OTEsNTM3OTIsNTM3OTMsNTM3OTQsNTM3OTUsNTM3OTYsNTM3OTcsNTM3OTgsNTM3OTksNTM4MDAsNTM4MDEsNDc0NjcsNDc0NjksNDc0NzYsNDc0NzcsNDc0ODAsNDc0ODQsNDc0OTIsNDc0OTMsNDc0OTUsNDc0OTcsNDc0OTgsNDc1MDEsNDc1MDIsNDc1MzIsNDc1MzMsNDc1MzYsNDc1NDAsNDc1NDgsNDc1NDksNDc1NTEsNDc1NTMsNDc1NjAsNDc1NjEsNDc1NjQsNDc1NjYsNDc1NjcsNDc1NjgsNDc1NjksNDc1NzAsNDc1NzYsNDc1NzcsNDc1NzksNDc1ODEsNDc1ODIsNDc1ODUsNDc1ODcsNDc1ODgsNDc1ODksNDc1OTIsNDc1OTYsNDc2MDQsNDc2MDUsNDc2MDcsNDc2MDgsNDc2MDksNDc2MTAsNDc2MTYsNDc2MTcsNDc2MjQsNDc2MzcsNDc2NzIsNDc2NzMsNDc2NzYsNDc2ODAsNDc2ODIsNDc2ODgsNDc2ODksNDc2OTEsNDc2OTMsNDc2OTQsNDc2OTksNDc3MDAsNDc3MDEsNDc3MDQsNDc3MDgsNDc3MTYsNDc3MTcsNDc3MTksNDc3MjAsNDc3MjEsNDc3MjgsNDc3MjksNDc3MzIsNDc3MzYsNDc3NDcsNDc3NDgsNDc3NDksNDc3NTEsNDc3NTYsNDc3ODQsNDc3ODUsNDc3ODcsNDc3ODgsNDc3OTIsNDc3OTQsNDc4MDAsNDc4MDEsNDc4MDMsNDc4MDUsNDc4MTIsNDc4MTYsNDc4MzIsNDc4MzMsNDc4NjgsNTM4MDIsNTM4MDMsNTM4MDYsNTM4MDcsNTM4MDksNTM4MTAsNTM4MTEsNTM4MTMsNTM4MTQsNTM4MTUsNTM4MTYsNTM4MTcsNTM4MTgsNTM4MTksNTM4MjIsNTM4MjQsNTM4MjYsNTM4MjcsNTM4MjgsNTM4MjksNTM4MzAsNTM4MzEsNTM4MzMsNTM4MzQsNTM4MzUsNTM4MzYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4MzcsNTM4MzgsNTM4MzksNTM4NDAsNTM4NDEsNTM4NDIsNTM4NDMsNTM4NDQsNTM4NDUsNTM4NDYsNTM4NDcsNTM4NDgsNTM4NDksNTM4NTAsNTM4NTEsNTM4NTMsNTM4NTQsNTM4NTUsNTM4NTYsNTM4NTcsNTM4NTgsNTM4NTksNTM4NjEsNTM4NjIsNTM4NjMsNTM4NjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4NjUsNTM4NjYsNTM4NjcsNTM4NjgsNTM4NjksNTM4NzAsNTM4NzEsNTM4NzIsNTM4NzMsNTM4NzQsNTM4NzUsNTM4NzYsNTM4NzcsNTM4NzgsNTM4NzksNTM4ODAsNTM4ODEsNTM4ODIsNTM4ODMsNTM4ODQsNTM4ODUsNTM4ODYsNTM4ODcsNTM4OTAsNTM4OTEsNTM4OTMsNTM4OTQsNTM4OTUsNTM4OTcsNTM4OTgsNTM4OTksNTM5MDAsNDc4NzIsNDc4NzYsNDc4ODUsNDc4ODcsNDc4ODksNDc4OTYsNDc5MDAsNDc5MDQsNDc5MTMsNDc5MTUsNDc5MjQsNDc5MjUsNDc5MjYsNDc5MjgsNDc5MzEsNDc5MzIsNDc5MzMsNDc5MzQsNDc5NDAsNDc5NDEsNDc5NDMsNDc5NDUsNDc5NDksNDc5NTEsNDc5NTIsNDc5NTYsNDc5NjAsNDc5NjksNDc5NzEsNDc5ODAsNDgwMDgsNDgwMTIsNDgwMTYsNDgwMzYsNDgwNDAsNDgwNDQsNDgwNTIsNDgwNTUsNDgwNjQsNDgwNjgsNDgwNzIsNDgwODAsNDgwODMsNDgxMjAsNDgxMjEsNDgxMjQsNDgxMjcsNDgxMjgsNDgxMzAsNDgxMzYsNDgxMzcsNDgxMzksNDgxNDAsNDgxNDEsNDgxNDMsNDgxNDUsNDgxNDgsNDgxNDksNDgxNTAsNDgxNTEsNDgxNTIsNDgxNTUsNDgxNTYsNDgxNTcsNDgxNTgsNDgxNTksNDgxNjQsNDgxNjUsNDgxNjcsNDgxNjksNDgxNzMsNDgxNzYsNDgxNzcsNDgxODAsNDgxODQsNDgxOTIsNDgxOTMsNDgxOTUsNDgxOTYsNDgxOTcsNDgyMDEsNDgyMDQsNDgyMDUsNDgyMDgsNDgyMjEsNDgyNjAsNDgyNjEsNDgyNjQsNDgyNjcsNDgyNjgsNDgyNzAsNDgyNzYsNDgyNzcsNDgyNzksNTM5MDEsNTM5MDIsNTM5MDMsNTM5MDYsNTM5MDcsNTM5MDgsNTM5MTAsNTM5MTEsNTM5MTIsNTM5MTMsNTM5MTQsNTM5MTUsNTM5MTcsNTM5MTgsNTM5MTksNTM5MjEsNTM5MjIsNTM5MjMsNTM5MjUsNTM5MjYsNTM5MjcsNTM5MjgsNTM5MjksNTM5MzAsNTM5MzEsNTM5MzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM5MzQsNTM5MzUsNTM5MzYsNTM5MzgsNTM5MzksNTM5NDAsNTM5NDEsNTM5NDIsNTM5NDMsNTM5NDYsNTM5NDcsNTM5NDksNTM5NTAsNTM5NTMsNTM5NTUsNTM5NTYsNTM5NTcsNTM5NTgsNTM5NTksNTM5NjIsNTM5NjQsNTM5NjUsNTM5NjYsNTM5NjcsNTM5NjgsNTM5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM5NzAsNTM5NzEsNTM5NzMsNTM5NzQsNTM5NzUsNTM5NzcsNTM5NzgsNTM5NzksNTM5ODEsNTM5ODIsNTM5ODMsNTM5ODQsNTM5ODUsNTM5ODYsNTM5ODcsNTM5OTAsNTM5OTEsNTM5OTIsNTM5OTMsNTM5OTQsNTM5OTUsNTM5OTYsNTM5OTcsNTM5OTgsNTM5OTksNTQwMDIsNTQwMDMsNTQwMDUsNTQwMDYsNTQwMDcsNTQwMDksNTQwMTAsNDgyODEsNDgyODIsNDgyODgsNDgyODksNDgyOTIsNDgyOTUsNDgyOTYsNDgzMDQsNDgzMDUsNDgzMDcsNDgzMDgsNDgzMDksNDgzMTYsNDgzMTcsNDgzMjAsNDgzMjQsNDgzMzMsNDgzMzUsNDgzMzYsNDgzMzcsNDgzNDEsNDgzNDQsNDgzNDgsNDgzNzIsNDgzNzMsNDgzNzQsNDgzNzYsNDgzODAsNDgzODgsNDgzODksNDgzOTEsNDgzOTMsNDg0MDAsNDg0MDQsNDg0MjAsNDg0MjgsNDg0NDgsNDg0NTYsNDg0NTcsNDg0NjAsNDg0NjQsNDg0NzIsNDg0NzMsNDg0ODQsNDg0ODgsNDg1MTIsNDg1MTMsNDg1MTYsNDg1MTksNDg1MjAsNDg1MjEsNDg1MjIsNDg1MjgsNDg1MjksNDg1MzEsNDg1MzMsNDg1MzcsNDg1MzgsNDg1NDAsNDg1NDgsNDg1NjAsNDg1NjgsNDg1OTYsNDg1OTcsNDg2MDAsNDg2MDQsNDg2MTcsNDg2MjQsNDg2MjgsNDg2MzIsNDg2NDAsNDg2NDMsNDg2NDUsNDg2NTIsNDg2NTMsNDg2NTYsNDg2NjAsNDg2NjgsNDg2NjksNDg2NzEsNDg3MDgsNDg3MDksNDg3MTIsNDg3MTYsNDg3MTgsNDg3MjQsNDg3MjUsNDg3MjcsNDg3MjksNDg3MzAsNDg3MzEsNDg3MzYsNDg3MzcsNDg3NDAsNTQwMTEsNTQwMTIsNTQwMTMsNTQwMTQsNTQwMTUsNTQwMTgsNTQwMjAsNTQwMjIsNTQwMjMsNTQwMjQsNTQwMjUsNTQwMjYsNTQwMjcsNTQwMzEsNTQwMzMsNTQwMzQsNTQwMzUsNTQwMzcsNTQwMzksNTQwNDAsNTQwNDEsNTQwNDIsNTQwNDMsNTQwNDYsNTQwNTAsNTQwNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQwNTIsNTQwNTQsNTQwNTUsNTQwNTgsNTQwNTksNTQwNjEsNTQwNjIsNTQwNjMsNTQwNjUsNTQwNjYsNTQwNjcsNTQwNjgsNTQwNjksNTQwNzAsNTQwNzEsNTQwNzQsNTQwNzgsNTQwNzksNTQwODAsNTQwODEsNTQwODIsNTQwODMsNTQwODYsNTQwODcsNTQwODgsNTQwODksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQwOTAsNTQwOTEsNTQwOTIsNTQwOTMsNTQwOTQsNTQwOTUsNTQwOTYsNTQwOTcsNTQwOTgsNTQwOTksNTQxMDAsNTQxMDEsNTQxMDIsNTQxMDMsNTQxMDQsNTQxMDUsNTQxMDYsNTQxMDcsNTQxMDgsNTQxMDksNTQxMTAsNTQxMTEsNTQxMTIsNTQxMTMsNTQxMTQsNTQxMTUsNTQxMTYsNTQxMTcsNTQxMTgsNTQxMTksNTQxMjAsNTQxMjEsNDg3NDQsNDg3NDYsNDg3NTIsNDg3NTMsNDg3NTUsNDg3NTYsNDg3NTcsNDg3NjMsNDg3NjQsNDg3NjUsNDg3NjgsNDg3NzIsNDg3ODAsNDg3ODEsNDg3ODMsNDg3ODQsNDg3ODUsNDg3OTIsNDg3OTMsNDg4MDgsNDg4NDgsNDg4NDksNDg4NTIsNDg4NTUsNDg4NTYsNDg4NjQsNDg4NjcsNDg4NjgsNDg4NjksNDg4NzYsNDg4OTcsNDg5MDQsNDg5MDUsNDg5MjAsNDg5MjEsNDg5MjMsNDg5MjQsNDg5MjUsNDg5NjAsNDg5NjEsNDg5NjQsNDg5NjgsNDg5NzYsNDg5NzcsNDg5ODEsNDkwNDQsNDkwNzIsNDkwOTMsNDkxMDAsNDkxMDEsNDkxMDQsNDkxMDgsNDkxMTYsNDkxMTksNDkxMjEsNDkyMTIsNDkyMzMsNDkyNDAsNDkyNDQsNDkyNDgsNDkyNTYsNDkyNTcsNDkyOTYsNDkyOTcsNDkzMDAsNDkzMDQsNDkzMTIsNDkzMTMsNDkzMTUsNDkzMTcsNDkzMjQsNDkzMjUsNDkzMjcsNDkzMjgsNDkzMzEsNDkzMzIsNDkzMzMsNDkzMzQsNDkzNDAsNDkzNDEsNDkzNDMsNDkzNDQsNDkzNDUsNDkzNDksNDkzNTIsNDkzNTMsNDkzNTYsNDkzNjAsNDkzNjgsNDkzNjksNDkzNzEsNDkzNzIsNDkzNzMsNDkzODAsNTQxMjIsNTQxMjMsNTQxMjQsNTQxMjUsNTQxMjYsNTQxMjcsNTQxMjgsNTQxMjksNTQxMzAsNTQxMzEsNTQxMzIsNTQxMzMsNTQxMzQsNTQxMzUsNTQxMzYsNTQxMzcsNTQxMzgsNTQxMzksNTQxNDIsNTQxNDMsNTQxNDUsNTQxNDYsNTQxNDcsNTQxNDksNTQxNTAsNTQxNTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQxNTIsNTQxNTMsNTQxNTQsNTQxNTUsNTQxNTgsNTQxNjIsNTQxNjMsNTQxNjQsNTQxNjUsNTQxNjYsNTQxNjcsNTQxNzAsNTQxNzEsNTQxNzMsNTQxNzQsNTQxNzUsNTQxNzcsNTQxNzgsNTQxNzksNTQxODAsNTQxODEsNTQxODIsNTQxODMsNTQxODYsNTQxODgsNTQxOTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQxOTEsNTQxOTIsNTQxOTMsNTQxOTQsNTQxOTUsNTQxOTcsNTQxOTgsNTQxOTksNTQyMDEsNTQyMDIsNTQyMDMsNTQyMDUsNTQyMDYsNTQyMDcsNTQyMDgsNTQyMDksNTQyMTAsNTQyMTEsNTQyMTQsNTQyMTUsNTQyMTgsNTQyMTksNTQyMjAsNTQyMjEsNTQyMjIsNTQyMjMsNTQyMjUsNTQyMjYsNTQyMjcsNTQyMjgsNTQyMjksNTQyMzAsNDkzODEsNDkzODQsNDkzODgsNDkzOTYsNDkzOTcsNDkzOTksNDk0MDEsNDk0MDgsNDk0MTIsNDk0MTYsNDk0MjQsNDk0MjksNDk0MzYsNDk0MzcsNDk0MzgsNDk0MzksNDk0NDAsNDk0NDMsNDk0NDQsNDk0NDYsNDk0NDcsNDk0NTIsNDk0NTMsNDk0NTUsNDk0NTYsNDk0NTcsNDk0NjIsNDk0NjQsNDk0NjUsNDk0NjgsNDk0NzIsNDk0ODAsNDk0ODEsNDk0ODMsNDk0ODQsNDk0ODUsNDk0OTIsNDk0OTMsNDk0OTYsNDk1MDAsNDk1MDgsNDk1MDksNDk1MTEsNDk1MTIsNDk1MTMsNDk1MjAsNDk1MjQsNDk1MjgsNDk1NDEsNDk1NDgsNDk1NDksNDk1NTAsNDk1NTIsNDk1NTYsNDk1NTgsNDk1NjQsNDk1NjUsNDk1NjcsNDk1NjksNDk1NzMsNDk1NzYsNDk1NzcsNDk1ODAsNDk1ODQsNDk1OTcsNDk2MDQsNDk2MDgsNDk2MTIsNDk2MjAsNDk2MjMsNDk2MjQsNDk2MzIsNDk2MzYsNDk2NDAsNDk2NDgsNDk2NDksNDk2NTEsNDk2NjAsNDk2NjEsNDk2NjQsNDk2NjgsNDk2NzYsNDk2NzcsNDk2NzksNDk2ODEsNDk2ODgsNDk2ODksNDk2OTIsNDk2OTUsNDk2OTYsNDk3MDQsNDk3MDUsNDk3MDcsNDk3MDksNTQyMzEsNTQyMzMsNTQyMzQsNTQyMzUsNTQyMzYsNTQyMzcsNTQyMzgsNTQyMzksNTQyNDAsNTQyNDIsNTQyNDQsNTQyNDUsNTQyNDYsNTQyNDcsNTQyNDgsNTQyNDksNTQyNTAsNTQyNTEsNTQyNTQsNTQyNTUsNTQyNTcsNTQyNTgsNTQyNTksNTQyNjEsNTQyNjIsNTQyNjMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyNjQsNTQyNjUsNTQyNjYsNTQyNjcsNTQyNzAsNTQyNzIsNTQyNzQsNTQyNzUsNTQyNzYsNTQyNzcsNTQyNzgsNTQyNzksNTQyODEsNTQyODIsNTQyODMsNTQyODQsNTQyODUsNTQyODYsNTQyODcsNTQyODgsNTQyODksNTQyOTAsNTQyOTEsNTQyOTIsNTQyOTMsNTQyOTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyOTUsNTQyOTYsNTQyOTcsNTQyOTgsNTQyOTksNTQzMDAsNTQzMDIsNTQzMDMsNTQzMDQsNTQzMDUsNTQzMDYsNTQzMDcsNTQzMDgsNTQzMDksNTQzMTAsNTQzMTEsNTQzMTIsNTQzMTMsNTQzMTQsNTQzMTUsNTQzMTYsNTQzMTcsNTQzMTgsNTQzMTksNTQzMjAsNTQzMjEsNTQzMjIsNTQzMjMsNTQzMjQsNTQzMjUsNTQzMjYsNTQzMjcsNDk3MTEsNDk3MTMsNDk3MTQsNDk3MTYsNDk3MzYsNDk3NDQsNDk3NDUsNDk3NDgsNDk3NTIsNDk3NjAsNDk3NjUsNDk3NzIsNDk3NzMsNDk3NzYsNDk3ODAsNDk3ODgsNDk3ODksNDk3OTEsNDk3OTMsNDk4MDAsNDk4MDEsNDk4MDgsNDk4MTYsNDk4MTksNDk4MjEsNDk4MjgsNDk4MjksNDk4MzIsNDk4MzYsNDk4MzcsNDk4NDQsNDk4NDUsNDk4NDcsNDk4NDksNDk4ODQsNDk4ODUsNDk4ODgsNDk4OTEsNDk4OTIsNDk4OTksNDk5MDAsNDk5MDEsNDk5MDMsNDk5MDUsNDk5MTAsNDk5MTIsNDk5MTMsNDk5MTUsNDk5MTYsNDk5MjAsNDk5MjgsNDk5MjksNDk5MzIsNDk5MzMsNDk5MzksNDk5NDAsNDk5NDEsNDk5NDQsNDk5NDgsNDk5NTYsNDk5NTcsNDk5NjAsNDk5NjEsNDk5ODksNTAwMjQsNTAwMjUsNTAwMjgsNTAwMzIsNTAwMzQsNTAwNDAsNTAwNDEsNTAwNDQsNTAwNDUsNTAwNTIsNTAwNTYsNTAwNjAsNTAxMTIsNTAxMzYsNTAxMzcsNTAxNDAsNTAxNDMsNTAxNDQsNTAxNDYsNTAxNTIsNTAxNTMsNTAxNTcsNTAxNjQsNTAxNjUsNTAxNjgsNTAxODQsNTAxOTIsNTAyMTIsNTAyMjAsNTAyMjQsNTQzMjgsNTQzMjksNTQzMzAsNTQzMzEsNTQzMzIsNTQzMzMsNTQzMzQsNTQzMzUsNTQzMzcsNTQzMzgsNTQzMzksNTQzNDEsNTQzNDIsNTQzNDMsNTQzNDQsNTQzNDUsNTQzNDYsNTQzNDcsNTQzNDgsNTQzNDksNTQzNTAsNTQzNTEsNTQzNTIsNTQzNTMsNTQzNTQsNTQzNTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQzNTYsNTQzNTcsNTQzNTgsNTQzNTksNTQzNjAsNTQzNjEsNTQzNjIsNTQzNjMsNTQzNjUsNTQzNjYsNTQzNjcsNTQzNjksNTQzNzAsNTQzNzEsNTQzNzMsNTQzNzQsNTQzNzUsNTQzNzYsNTQzNzcsNTQzNzgsNTQzNzksNTQzODAsNTQzODIsNTQzODQsNTQzODUsNTQzODYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQzODcsNTQzODgsNTQzODksNTQzOTAsNTQzOTEsNTQzOTQsNTQzOTUsNTQzOTcsNTQzOTgsNTQ0MDEsNTQ0MDMsNTQ0MDQsNTQ0MDUsNTQ0MDYsNTQ0MDcsNTQ0MTAsNTQ0MTIsNTQ0MTQsNTQ0MTUsNTQ0MTYsNTQ0MTcsNTQ0MTgsNTQ0MTksNTQ0MjEsNTQ0MjIsNTQ0MjMsNTQ0MjQsNTQ0MjUsNTQ0MjYsNTQ0MjcsNTQ0MjgsNTQ0MjksNTAyMjgsNTAyMzYsNTAyMzcsNTAyNDgsNTAyNzYsNTAyNzcsNTAyODAsNTAyODQsNTAyOTIsNTAyOTMsNTAyOTcsNTAzMDQsNTAzMjQsNTAzMzIsNTAzNjAsNTAzNjQsNTA0MDksNTA0MTYsNTA0MTcsNTA0MjAsNTA0MjQsNTA0MjYsNTA0MzEsNTA0MzIsNTA0MzMsNTA0NDQsNTA0NDgsNTA0NTIsNTA0NjAsNTA0NzIsNTA0NzMsNTA0NzYsNTA0ODAsNTA0ODgsNTA0ODksNTA0OTEsNTA0OTMsNTA1MDAsNTA1MDEsNTA1MDQsNTA1MDUsNTA1MDYsNTA1MDgsNTA1MDksNTA1MTAsNTA1MTUsNTA1MTYsNTA1MTcsNTA1MTksNTA1MjAsNTA1MjEsNTA1MjUsNTA1MjYsNTA1MjgsNTA1MjksNTA1MzIsNTA1MzYsNTA1NDQsNTA1NDUsNTA1NDcsNTA1NDgsNTA1NDksNTA1NTYsNTA1NTcsNTA1NjAsNTA1NjQsNTA1NjcsNTA1NzIsNTA1NzMsNTA1NzUsNTA1NzcsNTA1ODEsNTA1ODMsNTA1ODQsNTA1ODgsNTA1OTIsNTA2MDEsNTA2MTIsNTA2MTMsNTA2MTYsNTA2MTcsNTA2MTksNTA2MjAsNTA2MjEsNTA2MjIsNTA2MjgsNTA2MjksNTA2MzAsNTA2MzEsNTA2MzIsNTA2MzMsNTA2MzQsNTA2MzYsNTA2MzgsNTQ0MzAsNTQ0MzEsNTQ0MzIsNTQ0MzMsNTQ0MzQsNTQ0MzUsNTQ0MzYsNTQ0MzcsNTQ0MzgsNTQ0MzksNTQ0NDAsNTQ0NDIsNTQ0NDMsNTQ0NDQsNTQ0NDUsNTQ0NDYsNTQ0NDcsNTQ0NDgsNTQ0NDksNTQ0NTAsNTQ0NTEsNTQ0NTIsNTQ0NTMsNTQ0NTQsNTQ0NTUsNTQ0NTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ0NTcsNTQ0NTgsNTQ0NTksNTQ0NjAsNTQ0NjEsNTQ0NjIsNTQ0NjMsNTQ0NjQsNTQ0NjUsNTQ0NjYsNTQ0NjcsNTQ0NjgsNTQ0NjksNTQ0NzAsNTQ0NzEsNTQ0NzIsNTQ0NzMsNTQ0NzQsNTQ0NzUsNTQ0NzcsNTQ0NzgsNTQ0NzksNTQ0ODEsNTQ0ODIsNTQ0ODMsNTQ0ODUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ0ODYsNTQ0ODcsNTQ0ODgsNTQ0ODksNTQ0OTAsNTQ0OTEsNTQ0OTMsNTQ0OTQsNTQ0OTYsNTQ0OTcsNTQ0OTgsNTQ0OTksNTQ1MDAsNTQ1MDEsNTQ1MDIsNTQ1MDMsNTQ1MDUsNTQ1MDYsNTQ1MDcsNTQ1MDksNTQ1MTAsNTQ1MTEsNTQ1MTMsNTQ1MTQsNTQ1MTUsNTQ1MTYsNTQ1MTcsNTQ1MTgsNTQ1MTksNTQ1MjEsNTQ1MjIsNTQ1MjQsNTA2NDAsNTA2NDEsNTA2NDQsNTA2NDgsNTA2NTYsNTA2NTcsNTA2NTksNTA2NjEsNTA2NjgsNTA2NjksNTA2NzAsNTA2NzIsNTA2NzYsNTA2NzgsNTA2NzksNTA2ODQsNTA2ODUsNTA2ODYsNTA2ODcsNTA2ODgsNTA2ODksNTA2OTMsNTA2OTQsNTA2OTUsNTA2OTYsNTA3MDAsNTA3MDQsNTA3MTIsNTA3MTMsNTA3MTUsNTA3MTYsNTA3MjQsNTA3MjUsNTA3MjgsNTA3MzIsNTA3MzMsNTA3MzQsNTA3MzYsNTA3MzksNTA3NDAsNTA3NDEsNTA3NDMsNTA3NDUsNTA3NDcsNTA3NTIsNTA3NTMsNTA3NTYsNTA3NjAsNTA3NjgsNTA3NjksNTA3NzEsNTA3NzIsNTA3NzMsNTA3ODAsNTA3ODEsNTA3ODQsNTA3OTYsNTA3OTksNTA4MDEsNTA4MDgsNTA4MDksNTA4MTIsNTA4MTYsNTA4MjQsNTA4MjUsNTA4MjcsNTA4MjksNTA4MzYsNTA4MzcsNTA4NDAsNTA4NDQsNTA4NTIsNTA4NTMsNTA4NTUsNTA4NTcsNTA4NjQsNTA4NjUsNTA4NjgsNTA4NzIsNTA4NzMsNTA4NzQsNTA4ODAsNTA4ODEsNTA4ODMsNTA4ODUsNTA4OTIsNTA4OTMsNTA4OTYsNTA5MDAsNTA5MDgsNTA5MDksNTA5MTIsNTA5MTMsNTA5MjAsNTQ1MjYsNTQ1MjcsNTQ1MjgsNTQ1MjksNTQ1MzAsNTQ1MzEsNTQ1MzMsNTQ1MzQsNTQ1MzUsNTQ1MzcsNTQ1MzgsNTQ1MzksNTQ1NDEsNTQ1NDIsNTQ1NDMsNTQ1NDQsNTQ1NDUsNTQ1NDYsNTQ1NDcsNTQ1NTAsNTQ1NTIsNTQ1NTMsNTQ1NTQsNTQ1NTUsNTQ1NTYsNTQ1NTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ1NTgsNTQ1NTksNTQ1NjAsNTQ1NjEsNTQ1NjIsNTQ1NjMsNTQ1NjQsNTQ1NjUsNTQ1NjYsNTQ1NjcsNTQ1NjgsNTQ1NjksNTQ1NzAsNTQ1NzEsNTQ1NzIsNTQ1NzMsNTQ1NzQsNTQ1NzUsNTQ1NzYsNTQ1NzcsNTQ1NzgsNTQ1NzksNTQ1ODAsNTQ1ODEsNTQ1ODIsNTQ1ODMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ1ODQsNTQ1ODUsNTQ1ODYsNTQ1ODcsNTQ1OTAsNTQ1OTEsNTQ1OTMsNTQ1OTQsNTQ1OTUsNTQ1OTcsNTQ1OTgsNTQ1OTksNTQ2MDAsNTQ2MDEsNTQ2MDIsNTQ2MDMsNTQ2MDYsNTQ2MDgsNTQ2MTAsNTQ2MTEsNTQ2MTIsNTQ2MTMsNTQ2MTQsNTQ2MTUsNTQ2MTgsNTQ2MTksNTQ2MjEsNTQ2MjIsNTQ2MjMsNTQ2MjUsNTQ2MjYsNTQ2MjcsNTA5MjEsNTA5MjQsNTA5MjgsNTA5MzYsNTA5MzcsNTA5NDEsNTA5NDgsNTA5NDksNTA5NTIsNTA5NTYsNTA5NjQsNTA5NjUsNTA5NjcsNTA5NjksNTA5NzYsNTA5NzcsNTA5ODAsNTA5ODQsNTA5OTIsNTA5OTMsNTA5OTUsNTA5OTcsNTA5OTksNTEwMDQsNTEwMDUsNTEwMDgsNTEwMTIsNTEwMTgsNTEwMjAsNTEwMjEsNTEwMjMsNTEwMjUsNTEwMjYsNTEwMjcsNTEwMjgsNTEwMjksNTEwMzAsNTEwMzEsNTEwMzIsNTEwMzYsNTEwNDAsNTEwNDgsNTEwNTEsNTEwNjAsNTEwNjEsNTEwNjQsNTEwNjgsNTEwNjksNTEwNzAsNTEwNzUsNTEwNzYsNTEwNzcsNTEwNzksNTEwODAsNTEwODEsNTEwODIsNTEwODYsNTEwODgsNTEwODksNTEwOTIsNTEwOTQsNTEwOTUsNTEwOTYsNTEwOTgsNTExMDQsNTExMDUsNTExMDcsNTExMDgsNTExMDksNTExMTAsNTExMTYsNTExMTcsNTExMjAsNTExMjQsNTExMzIsNTExMzMsNTExMzUsNTExMzYsNTExMzcsNTExNDQsNTExNDUsNTExNDgsNTExNTAsNTExNTIsNTExNjAsNTExNjUsNTExNzIsNTExNzYsNTExODAsNTEyMDAsNTEyMDEsNTEyMDQsNTEyMDgsNTEyMTAsNTQ2MjgsNTQ2MzAsNTQ2MzEsNTQ2MzQsNTQ2MzYsNTQ2MzgsNTQ2MzksNTQ2NDAsNTQ2NDEsNTQ2NDIsNTQ2NDMsNTQ2NDYsNTQ2NDcsNTQ2NDksNTQ2NTAsNTQ2NTEsNTQ2NTMsNTQ2NTQsNTQ2NTUsNTQ2NTYsNTQ2NTcsNTQ2NTgsNTQ2NTksNTQ2NjIsNTQ2NjYsNTQ2NjcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ2NjgsNTQ2NjksNTQ2NzAsNTQ2NzEsNTQ2NzMsNTQ2NzQsNTQ2NzUsNTQ2NzYsNTQ2NzcsNTQ2NzgsNTQ2NzksNTQ2ODAsNTQ2ODEsNTQ2ODIsNTQ2ODMsNTQ2ODQsNTQ2ODUsNTQ2ODYsNTQ2ODcsNTQ2ODgsNTQ2ODksNTQ2OTAsNTQ2OTEsNTQ2OTIsNTQ2OTQsNTQ2OTUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ2OTYsNTQ2OTcsNTQ2OTgsNTQ2OTksNTQ3MDAsNTQ3MDEsNTQ3MDIsNTQ3MDMsNTQ3MDQsNTQ3MDUsNTQ3MDYsNTQ3MDcsNTQ3MDgsNTQ3MDksNTQ3MTAsNTQ3MTEsNTQ3MTIsNTQ3MTMsNTQ3MTQsNTQ3MTUsNTQ3MTYsNTQ3MTcsNTQ3MTgsNTQ3MTksNTQ3MjAsNTQ3MjEsNTQ3MjIsNTQ3MjMsNTQ3MjQsNTQ3MjUsNTQ3MjYsNTQ3MjcsNTEyMTYsNTEyMTcsNTEyMTksNTEyMjEsNTEyMjIsNTEyMjgsNTEyMjksNTEyMzIsNTEyMzYsNTEyNDQsNTEyNDUsNTEyNDcsNTEyNDksNTEyNTYsNTEyNjAsNTEyNjQsNTEyNzIsNTEyNzMsNTEyNzYsNTEyNzcsNTEyODQsNTEzMTIsNTEzMTMsNTEzMTYsNTEzMjAsNTEzMjIsNTEzMjgsNTEzMjksNTEzMzEsNTEzMzMsNTEzMzQsNTEzMzUsNTEzMzksNTEzNDAsNTEzNDEsNTEzNDgsNTEzNTcsNTEzNTksNTEzNjEsNTEzNjgsNTEzODgsNTEzODksNTEzOTYsNTE0MDAsNTE0MDQsNTE0MTIsNTE0MTMsNTE0MTUsNTE0MTcsNTE0MjQsNTE0MjUsNTE0MjgsNTE0NDUsNTE0NTIsNTE0NTMsNTE0NTYsNTE0NjAsNTE0NjEsNTE0NjIsNTE0NjgsNTE0NjksNTE0NzEsNTE0NzMsNTE0ODAsNTE1MDAsNTE1MDgsNTE1MzYsNTE1MzcsNTE1NDAsNTE1NDQsNTE1NTIsNTE1NTMsNTE1NTUsNTE1NjQsNTE1NjgsNTE1NzIsNTE1ODAsNTE1OTIsNTE1OTMsNTE1OTYsNTE2MDAsNTE2MDgsNTE2MDksNTE2MTEsNTE2MTMsNTE2NDgsNTE2NDksNTE2NTIsNTE2NTUsNTE2NTYsNTE2NTgsNTE2NjQsNTE2NjUsNTE2NjcsNTQ3MzAsNTQ3MzEsNTQ3MzMsNTQ3MzQsNTQ3MzUsNTQ3MzcsNTQ3MzksNTQ3NDAsNTQ3NDEsNTQ3NDIsNTQ3NDMsNTQ3NDYsNTQ3NDgsNTQ3NTAsNTQ3NTEsNTQ3NTIsNTQ3NTMsNTQ3NTQsNTQ3NTUsNTQ3NTgsNTQ3NTksNTQ3NjEsNTQ3NjIsNTQ3NjMsNTQ3NjUsNTQ3NjYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ3NjcsNTQ3NjgsNTQ3NjksNTQ3NzAsNTQ3NzEsNTQ3NzQsNTQ3NzYsNTQ3NzgsNTQ3NzksNTQ3ODAsNTQ3ODEsNTQ3ODIsNTQ3ODMsNTQ3ODYsNTQ3ODcsNTQ3ODksNTQ3OTAsNTQ3OTEsNTQ3OTMsNTQ3OTQsNTQ3OTUsNTQ3OTYsNTQ3OTcsNTQ3OTgsNTQ3OTksNTQ4MDIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MDYsNTQ4MDcsNTQ4MDgsNTQ4MDksNTQ4MTAsNTQ4MTEsNTQ4MTMsNTQ4MTQsNTQ4MTUsNTQ4MTcsNTQ4MTgsNTQ4MTksNTQ4MjEsNTQ4MjIsNTQ4MjMsNTQ4MjQsNTQ4MjUsNTQ4MjYsNTQ4MjcsNTQ4MjgsNTQ4MzAsNTQ4MzEsNTQ4MzIsNTQ4MzMsNTQ4MzQsNTQ4MzUsNTQ4MzYsNTQ4MzcsNTQ4MzgsNTQ4MzksNTQ4NDIsNTQ4NDMsNTE2NjksNTE2NzAsNTE2NzMsNTE2NzQsNTE2NzYsNTE2NzcsNTE2ODAsNTE2ODIsNTE2ODQsNTE2ODcsNTE2OTIsNTE2OTMsNTE2OTUsNTE2OTYsNTE2OTcsNTE3MDQsNTE3MDUsNTE3MDgsNTE3MTIsNTE3MjAsNTE3MjEsNTE3MjMsNTE3MjQsNTE3MjUsNTE3MzIsNTE3MzYsNTE3NTMsNTE3ODgsNTE3ODksNTE3OTIsNTE3OTYsNTE4MDQsNTE4MDUsNTE4MDcsNTE4MDgsNTE4MDksNTE4MTYsNTE4MzcsNTE4NDQsNTE4NjQsNTE5MDAsNTE5MDEsNTE5MDQsNTE5MDgsNTE5MTYsNTE5MTcsNTE5MTksNTE5MjEsNTE5MjMsNTE5MjgsNTE5MjksNTE5MzYsNTE5NDgsNTE5NTYsNTE5NzYsNTE5ODQsNTE5ODgsNTE5OTIsNTIwMDAsNTIwMDEsNTIwMzMsNTIwNDAsNTIwNDEsNTIwNDQsNTIwNDgsNTIwNTYsNTIwNTcsNTIwNjEsNTIwNjgsNTIwODgsNTIwODksNTIxMjQsNTIxNTIsNTIxODAsNTIxOTYsNTIxOTksNTIyMDEsNTIyMzYsNTIyMzcsNTIyNDAsNTIyNDQsNTIyNTIsNTIyNTMsNTIyNTcsNTIyNTgsNTIyNjMsNTIyNjQsNTIyNjUsNTIyNjgsNTIyNzAsNTIyNzIsNTIyODAsNTIyODEsNTIyODMsNTQ4NDUsNTQ4NDYsNTQ4NDcsNTQ4NDksNTQ4NTAsNTQ4NTEsNTQ4NTIsNTQ4NTQsNTQ4NTUsNTQ4NTgsNTQ4NjAsNTQ4NjIsNTQ4NjMsNTQ4NjQsNTQ4NjYsNTQ4NjcsNTQ4NzAsNTQ4NzEsNTQ4NzMsNTQ4NzQsNTQ4NzUsNTQ4NzcsNTQ4NzgsNTQ4NzksNTQ4ODAsNTQ4ODEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4ODIsNTQ4ODMsNTQ4ODQsNTQ4ODUsNTQ4ODYsNTQ4ODgsNTQ4OTAsNTQ4OTEsNTQ4OTIsNTQ4OTMsNTQ4OTQsNTQ4OTUsNTQ4OTgsNTQ4OTksNTQ5MDEsNTQ5MDIsNTQ5MDMsNTQ5MDQsNTQ5MDUsNTQ5MDYsNTQ5MDcsNTQ5MDgsNTQ5MDksNTQ5MTAsNTQ5MTEsNTQ5MTIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5MTMsNTQ5MTQsNTQ5MTYsNTQ5MTgsNTQ5MTksNTQ5MjAsNTQ5MjEsNTQ5MjIsNTQ5MjMsNTQ5MjYsNTQ5MjcsNTQ5MjksNTQ5MzAsNTQ5MzEsNTQ5MzMsNTQ5MzQsNTQ5MzUsNTQ5MzYsNTQ5MzcsNTQ5MzgsNTQ5MzksNTQ5NDAsNTQ5NDIsNTQ5NDQsNTQ5NDYsNTQ5NDcsNTQ5NDgsNTQ5NDksNTQ5NTAsNTQ5NTEsNTQ5NTMsNTQ5NTQsNTIyODQsNTIyODUsNTIyODYsNTIyOTIsNTIyOTMsNTIyOTYsNTIzMDAsNTIzMDgsNTIzMDksNTIzMTEsNTIzMTIsNTIzMTMsNTIzMjAsNTIzMjQsNTIzMjYsNTIzMjgsNTIzMzYsNTIzNDEsNTIzNzYsNTIzNzcsNTIzODAsNTIzODQsNTIzOTIsNTIzOTMsNTIzOTUsNTIzOTYsNTIzOTcsNTI0MDQsNTI0MDUsNTI0MDgsNTI0MTIsNTI0MjAsNTI0MjEsNTI0MjMsNTI0MjUsNTI0MzIsNTI0MzYsNTI0NTIsNTI0NjAsNTI0NjQsNTI0ODEsNTI0ODgsNTI0ODksNTI0OTIsNTI0OTYsNTI1MDQsNTI1MDUsNTI1MDcsNTI1MDksNTI1MTYsNTI1MjAsNTI1MjQsNTI1MzcsNTI1NzIsNTI1NzYsNTI1ODAsNTI1ODgsNTI1ODksNTI1OTEsNTI1OTMsNTI2MDAsNTI2MTYsNTI2MjgsNTI2MjksNTI2MzIsNTI2MzYsNTI2NDQsNTI2NDUsNTI2NDcsNTI2NDksNTI2NTYsNTI2NzYsNTI2ODQsNTI2ODgsNTI3MTIsNTI3MTYsNTI3MjAsNTI3MjgsNTI3MjksNTI3MzEsNTI3MzMsNTI3NDAsNTI3NDQsNTI3NDgsNTI3NTYsNTI3NjEsNTI3NjgsNTI3NjksNTI3NzIsNTI3NzYsNTI3ODQsNTI3ODUsNTI3ODcsNTI3ODksNTQ5NTUsNTQ5NTcsNTQ5NTgsNTQ5NTksNTQ5NjEsNTQ5NjIsNTQ5NjMsNTQ5NjQsNTQ5NjUsNTQ5NjYsNTQ5NjcsNTQ5NjgsNTQ5NzAsNTQ5NzIsNTQ5NzMsNTQ5NzQsNTQ5NzUsNTQ5NzYsNTQ5NzcsNTQ5NzgsNTQ5NzksNTQ5ODIsNTQ5ODMsNTQ5ODUsNTQ5ODYsNTQ5ODcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ5ODksNTQ5OTAsNTQ5OTEsNTQ5OTIsNTQ5OTQsNTQ5OTUsNTQ5OTcsNTQ5OTgsNTUwMDAsNTUwMDIsNTUwMDMsNTUwMDQsNTUwMDUsNTUwMDYsNTUwMDcsNTUwMDksNTUwMTAsNTUwMTEsNTUwMTMsNTUwMTQsNTUwMTUsNTUwMTcsNTUwMTgsNTUwMTksNTUwMjAsNTUwMjEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUwMjIsNTUwMjMsNTUwMjUsNTUwMjYsNTUwMjcsNTUwMjgsNTUwMzAsNTUwMzEsNTUwMzIsNTUwMzMsNTUwMzQsNTUwMzUsNTUwMzgsNTUwMzksNTUwNDEsNTUwNDIsNTUwNDMsNTUwNDUsNTUwNDYsNTUwNDcsNTUwNDgsNTUwNDksNTUwNTAsNTUwNTEsNTUwNTIsNTUwNTMsNTUwNTQsNTUwNTUsNTUwNTYsNTUwNTgsNTUwNTksNTUwNjAsNTI4MjQsNTI4MjUsNTI4MjgsNTI4MzEsNTI4MzIsNTI4MzMsNTI4NDAsNTI4NDEsNTI4NDMsNTI4NDUsNTI4NTIsNTI4NTMsNTI4NTYsNTI4NjAsNTI4NjgsNTI4NjksNTI4NzEsNTI4NzMsNTI4ODAsNTI4ODEsNTI4ODQsNTI4ODgsNTI4OTYsNTI4OTcsNTI4OTksNTI5MDAsNTI5MDEsNTI5MDgsNTI5MDksNTI5MjksNTI5NjQsNTI5NjUsNTI5NjgsNTI5NzEsNTI5NzIsNTI5ODAsNTI5ODEsNTI5ODMsNTI5ODQsNTI5ODUsNTI5OTIsNTI5OTMsNTI5OTYsNTMwMDAsNTMwMDgsNTMwMDksNTMwMTEsNTMwMTMsNTMwMjAsNTMwMjQsNTMwMjgsNTMwMzYsNTMwMzcsNTMwMzksNTMwNDAsNTMwNDEsNTMwNDgsNTMwNzYsNTMwNzcsNTMwODAsNTMwODQsNTMwOTIsNTMwOTMsNTMwOTUsNTMwOTcsNTMxMDQsNTMxMDUsNTMxMDgsNTMxMTIsNTMxMjAsNTMxMjUsNTMxMzIsNTMxNTMsNTMxNjAsNTMxNjgsNTMxODgsNTMyMTYsNTMyMTcsNTMyMjAsNTMyMjQsNTMyMzIsNTMyMzMsNTMyMzUsNTMyMzcsNTMyNDQsNTMyNDgsNTMyNTIsNTMyNjUsNTMyNzIsNTMyOTMsNTMzMDAsNTMzMDEsNTMzMDQsNTMzMDgsNTUwNjEsNTUwNjIsNTUwNjMsNTUwNjYsNTUwNjcsNTUwNjksNTUwNzAsNTUwNzEsNTUwNzMsNTUwNzQsNTUwNzUsNTUwNzYsNTUwNzcsNTUwNzgsNTUwNzksNTUwODIsNTUwODQsNTUwODYsNTUwODcsNTUwODgsNTUwODksNTUwOTAsNTUwOTEsNTUwOTQsNTUwOTUsNTUwOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUwOTgsNTUwOTksNTUxMDEsNTUxMDIsNTUxMDMsNTUxMDQsNTUxMDUsNTUxMDYsNTUxMDcsNTUxMDksNTUxMTAsNTUxMTIsNTUxMTQsNTUxMTUsNTUxMTYsNTUxMTcsNTUxMTgsNTUxMTksNTUxMjIsNTUxMjMsNTUxMjUsNTUxMzAsNTUxMzEsNTUxMzIsNTUxMzMsNTUxMzQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTUxMzUsNTUxMzgsNTUxNDAsNTUxNDIsNTUxNDMsNTUxNDQsNTUxNDYsNTUxNDcsNTUxNDksNTUxNTAsNTUxNTEsNTUxNTMsNTUxNTQsNTUxNTUsNTUxNTcsNTUxNTgsNTUxNTksNTUxNjAsNTUxNjEsNTUxNjIsNTUxNjMsNTUxNjYsNTUxNjcsNTUxNjgsNTUxNzAsNTUxNzEsNTUxNzIsNTUxNzMsNTUxNzQsNTUxNzUsNTUxNzgsNTUxNzksNTMzMTYsNTMzMTcsNTMzMTksNTMzMjEsNTMzMjgsNTMzMzIsNTMzMzYsNTMzNDQsNTMzNTYsNTMzNTcsNTMzNjAsNTMzNjQsNTMzNzIsNTMzNzMsNTMzNzcsNTM0MTIsNTM0MTMsNTM0MTYsNTM0MjAsNTM0MjgsNTM0MjksNTM0MzEsNTM0MzMsNTM0NDAsNTM0NDEsNTM0NDQsNTM0NDgsNTM0NDksNTM0NTYsNTM0NTcsNTM0NTksNTM0NjAsNTM0NjEsNTM0NjgsNTM0NjksNTM0NzIsNTM0NzYsNTM0ODQsNTM0ODUsNTM0ODcsNTM0ODgsNTM0ODksNTM0OTYsNTM1MTcsNTM1NTIsNTM1NTMsNTM1NTYsNTM1NjAsNTM1NjIsNTM1NjgsNTM1NjksNTM1NzEsNTM1NzIsNTM1NzMsNTM1ODAsNTM1ODEsNTM1ODQsNTM1ODgsNTM1OTYsNTM1OTcsNTM1OTksNTM2MDEsNTM2MDgsNTM2MTIsNTM2MjgsNTM2MzYsNTM2NDAsNTM2NjQsNTM2NjUsNTM2NjgsNTM2NzIsNTM2ODAsNTM2ODEsNTM2ODMsNTM2ODUsNTM2OTAsNTM2OTIsNTM2OTYsNTM3MjAsNTM3NDgsNTM3NTIsNTM3NjcsNTM3NjksNTM3NzYsNTM4MDQsNTM4MDUsNTM4MDgsNTM4MTIsNTM4MjAsNTM4MjEsNTM4MjMsNTM4MjUsNTM4MzIsNTM4NTIsNTUxODEsNTUxODIsNTUxODMsNTUxODUsNTUxODYsNTUxODcsNTUxODgsNTUxODksNTUxOTAsNTUxOTEsNTUxOTQsNTUxOTYsNTUxOTgsNTUxOTksNTUyMDAsNTUyMDEsNTUyMDIsNTUyMDMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTM4NjAsNTM4ODgsNTM4ODksNTM4OTIsNTM4OTYsNTM5MDQsNTM5MDUsNTM5MDksNTM5MTYsNTM5MjAsNTM5MjQsNTM5MzIsNTM5MzcsNTM5NDQsNTM5NDUsNTM5NDgsNTM5NTEsNTM5NTIsNTM5NTQsNTM5NjAsNTM5NjEsNTM5NjMsNTM5NzIsNTM5NzYsNTM5ODAsNTM5ODgsNTM5ODksNTQwMDAsNTQwMDEsNTQwMDQsNTQwMDgsNTQwMTYsNTQwMTcsNTQwMTksNTQwMjEsNTQwMjgsNTQwMjksNTQwMzAsNTQwMzIsNTQwMzYsNTQwMzgsNTQwNDQsNTQwNDUsNTQwNDcsNTQwNDgsNTQwNDksNTQwNTMsNTQwNTYsNTQwNTcsNTQwNjAsNTQwNjQsNTQwNzIsNTQwNzMsNTQwNzUsNTQwNzYsNTQwNzcsNTQwODQsNTQwODUsNTQxNDAsNTQxNDEsNTQxNDQsNTQxNDgsNTQxNTYsNTQxNTcsNTQxNTksNTQxNjAsNTQxNjEsNTQxNjgsNTQxNjksNTQxNzIsNTQxNzYsNTQxODQsNTQxODUsNTQxODcsNTQxODksNTQxOTYsNTQyMDAsNTQyMDQsNTQyMTIsNTQyMTMsNTQyMTYsNTQyMTcsNTQyMjQsNTQyMzIsNTQyNDEsNTQyNDMsNTQyNTIsNTQyNTMsNTQyNTYsNTQyNjAsNTQyNjgsNTQyNjksNTQyNzEsNTQyNzMsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQyODAsNTQzMDEsNTQzMzYsNTQzNDAsNTQzNjQsNTQzNjgsNTQzNzIsNTQzODEsNTQzODMsNTQzOTIsNTQzOTMsNTQzOTYsNTQzOTksNTQ0MDAsNTQ0MDIsNTQ0MDgsNTQ0MDksNTQ0MTEsNTQ0MTMsNTQ0MjAsNTQ0NDEsNTQ0NzYsNTQ0ODAsNTQ0ODQsNTQ0OTIsNTQ0OTUsNTQ1MDQsNTQ1MDgsNTQ1MTIsNTQ1MjAsNTQ1MjMsNTQ1MjUsNTQ1MzIsNTQ1MzYsNTQ1NDAsNTQ1NDgsNTQ1NDksNTQ1NTEsNTQ1ODgsNTQ1ODksNTQ1OTIsNTQ1OTYsNTQ2MDQsNTQ2MDUsNTQ2MDcsNTQ2MDksNTQ2MTYsNTQ2MTcsNTQ2MjAsNTQ2MjQsNTQ2MjksNTQ2MzIsNTQ2MzMsNTQ2MzUsNTQ2MzcsNTQ2NDQsNTQ2NDUsNTQ2NDgsNTQ2NTIsNTQ2NjAsNTQ2NjEsNTQ2NjMsNTQ2NjQsNTQ2NjUsNTQ2NzIsNTQ2OTMsNTQ3MjgsNTQ3MjksNTQ3MzIsNTQ3MzYsNTQ3MzgsNTQ3NDQsNTQ3NDUsNTQ3NDcsNTQ3NDksNTQ3NTYsNTQ3NTcsNTQ3NjAsNTQ3NjQsNTQ3NzIsNTQ3NzMsNTQ3NzUsNTQ3NzcsNTQ3ODQsNTQ3ODUsNTQ3ODgsNTQ3OTIsNTQ4MDAsNTQ4MDEsNTQ4MDMsNTQ4MDQsNTQ4MDUsNTQ4MTIsNTQ4MTYsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsNTQ4MjAsNTQ4MjksNTQ4NDAsNTQ4NDEsNTQ4NDQsNTQ4NDgsNTQ4NTMsNTQ4NTYsNTQ4NTcsNTQ4NTksNTQ4NjEsNTQ4NjUsNTQ4NjgsNTQ4NjksNTQ4NzIsNTQ4NzYsNTQ4ODcsNTQ4ODksNTQ4OTYsNTQ4OTcsNTQ5MDAsNTQ5MTUsNTQ5MTcsNTQ5MjQsNTQ5MjUsNTQ5MjgsNTQ5MzIsNTQ5NDEsNTQ5NDMsNTQ5NDUsNTQ5NTIsNTQ5NTYsNTQ5NjAsNTQ5NjksNTQ5NzEsNTQ5ODAsNTQ5ODEsNTQ5ODQsNTQ5ODgsNTQ5OTMsNTQ5OTYsNTQ5OTksNTUwMDEsNTUwMDgsNTUwMTIsNTUwMTYsNTUwMjQsNTUwMjksNTUwMzYsNTUwMzcsNTUwNDAsNTUwNDQsNTUwNTcsNTUwNjQsNTUwNjUsNTUwNjgsNTUwNzIsNTUwODAsNTUwODEsNTUwODMsNTUwODUsNTUwOTIsNTUwOTMsNTUwOTYsNTUxMDAsNTUxMDgsNTUxMTEsNTUxMTMsNTUxMjAsNTUxMjEsNTUxMjQsNTUxMjYsNTUxMjcsNTUxMjgsNTUxMjksNTUxMzYsNTUxMzcsNTUxMzksNTUxNDEsNTUxNDUsNTUxNDgsNTUxNTIsNTUxNTYsNTUxNjQsNTUxNjUsNTUxNjksNTUxNzYsNTUxNzcsNTUxODAsNTUxODQsNTUxOTIsNTUxOTMsNTUxOTUsNTUxOTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDI4NSwyMDMzOSwyMDU1MSwyMDcyOSwyMTE1MiwyMTQ4NywyMTYyMSwyMTczMywyMjAyNSwyMzIzMywyMzQ3OCwyNjI0NywyNjU1MCwyNjU1MSwyNjYwNywyNzQ2OCwyOTYzNCwzMDE0NiwzMTI5MiwzMzQ5OSwzMzU0MCwzNDkwMywzNDk1MiwzNTM4MiwzNjA0MCwzNjMwMywzNjYwMywzNjgzOCwzOTM4MSwyMTA1MSwyMTM2NCwyMTUwOCwyNDY4MiwyNDkzMiwyNzU4MCwyOTY0NywzMzA1MCwzNTI1OCwzNTI4MiwzODMwNywyMDM1NSwyMTAwMiwyMjcxOCwyMjkwNCwyMzAxNCwyNDE3OCwyNDE4NSwyNTAzMSwyNTUzNiwyNjQzOCwyNjYwNCwyNjc1MSwyODU2NywzMDI4NiwzMDQ3NSwzMDk2NSwzMTI0MCwzMTQ4NywzMTc3NywzMjkyNSwzMzM5MCwzMzM5MywzNTU2MywzODI5MSwyMDA3NSwyMTkxNywyNjM1OSwyODIxMiwzMDg4MywzMTQ2OSwzMzg4MywzNTA4OCwzNDYzOCwzODgyNCwyMTIwOCwyMjM1MCwyMjU3MCwyMzg4NCwyNDg2MywyNTAyMiwyNTEyMSwyNTk1NCwyNjU3NywyNzIwNCwyODE4NywyOTk3NiwzMDEzMSwzMDQzNSwzMDY0MCwzMjA1OCwzNzAzOSwzNzk2OSwzNzk3MCw0MDg1MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTI4MywyMzcyNCwzMDAwMiwzMjk4NywzNzQ0MCwzODI5NiwyMTA4MywyMjUzNiwyMzAwNCwyMzcxMywyMzgzMSwyNDI0NywyNDM3OCwyNDM5NCwyNDk1MSwyNzc0MywzMDA3NCwzMDA4NiwzMTk2OCwzMjExNSwzMjE3NywzMjY1MiwzMzEwOCwzMzMxMywzNDE5MywzNTEzNywzNTYxMSwzNzYyOCwzODQ3Nyw0MDAwNywyMDE3MSwyMDIxNSwyMDQ5MSwyMDk3NywyMjYwNywyNDg4NywyNDg5NCwyNDkzNiwyNTkxMywyNzExNCwyODQzMywzMDExNywzMDM0MiwzMDQyMiwzMTYyMywzMzQ0NSwzMzk5NSw2Mzc0NCwzNzc5OSwzODI4MywyMTg4OCwyMzQ1OCwyMjM1Myw2Mzc0NSwzMTkyMywzMjY5NywzNzMwMSwyMDUyMCwyMTQzNSwyMzYyMSwyNDA0MCwyNTI5OCwyNTQ1NCwyNTgxOCwyNTgzMSwyODE5MiwyODg0NCwzMTA2NywzNjMxNywzNjM4Miw2Mzc0NiwzNjk4OSwzNzQ0NSwzNzYyNCwyMDA5NCwyMDIxNCwyMDU4MSwyNDA2MiwyNDMxNCwyNDgzOCwyNjk2NywzMzEzNywzNDM4OCwzNjQyMywzNzc0OSwzOTQ2NywyMDA2MiwyMDYyNSwyNjQ4MCwyNjY4OCwyMDc0NSwyMTEzMywyMTEzOCwyNzI5OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDY1MiwzNzM5Miw0MDY2MCwyMTE2MywyNDYyMywzNjg1MCwyMDU1MiwyNTAwMSwyNTU4MSwyNTgwMiwyNjY4NCwyNzI2OCwyODYwOCwzMzE2MCwzNTIzMywzODU0OCwyMjUzMywyOTMwOSwyOTM1NiwyOTk1NiwzMjEyMSwzMjM2NSwzMjkzNywzNTIxMSwzNTcwMCwzNjk2Myw0MDI3MywyNTIyNSwyNzc3MCwyODUwMCwzMjA4MCwzMjU3MCwzNTM2MywyMDg2MCwyNDkwNiwzMTY0NSwzNTYwOSwzNzQ2MywzNzc3MiwyMDE0MCwyMDQzNSwyMDUxMCwyMDY3MCwyMDc0MiwyMTE4NSwyMTE5NywyMTM3NSwyMjM4NCwyMjY1OSwyNDIxOCwyNDQ2NSwyNDk1MCwyNTAwNCwyNTgwNiwyNTk2NCwyNjIyMywyNjI5OSwyNjM1NiwyNjc3NSwyODAzOSwyODgwNSwyODkxMywyOTg1NSwyOTg2MSwyOTg5OCwzMDE2OSwzMDgyOCwzMDk1NiwzMTQ1NSwzMTQ3OCwzMjA2OSwzMjE0NywzMjc4OSwzMjgzMSwzMzA1MSwzMzY4NiwzNTY4NiwzNjYyOSwzNjg4NSwzNzg1NywzODkxNSwzODk2OCwzOTUxNCwzOTkxMiwyMDQxOCwyMTg0MywyMjU4NiwyMjg2NSwyMzM5NSwyMzYyMiwyNDc2MCwyNTEwNiwyNjY5MCwyNjgwMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg1NiwyODMzMCwzMDAyOCwzMDMyOCwzMDkyNiwzMTI5MywzMTk5NSwzMjM2MywzMjM4MCwzNTMzNiwzNTQ4OSwzNTkwMywzODU0Miw0MDM4OCwyMTQ3NiwyMTQ4MSwyMTU3OCwyMTYxNywyMjI2NiwyMjk5MywyMzM5NiwyMzYxMSwyNDIzNSwyNTMzNSwyNTkxMSwyNTkyNSwyNTk3MCwyNjI3MiwyNjU0MywyNzA3MywyNzgzNywzMDIwNCwzMDM1MiwzMDU5MCwzMTI5NSwzMjY2MCwzMjc3MSwzMjkyOSwzMzE2NywzMzUxMCwzMzUzMywzMzc3NiwzNDI0MSwzNDg2NSwzNDk5NiwzNTQ5Myw2Mzc0NywzNjc2NCwzNzY3OCwzODU5OSwzOTAxNSwzOTY0MCw0MDcyMywyMTc0MSwyNjAxMSwyNjM1NCwyNjc2NywzMTI5NiwzNTg5NSw0MDI4OCwyMjI1NiwyMjM3MiwyMzgyNSwyNjExOCwyNjgwMSwyNjgyOSwyODQxNCwyOTczNiwzNDk3NCwzOTkwOCwyNzc1Miw2Mzc0OCwzOTU5MiwyMDM3OSwyMDg0NCwyMDg0OSwyMTE1MSwyMzM4MCwyNDAzNywyNDY1NiwyNDY4NSwyNTMyOSwyNTUxMSwyNTkxNSwyOTY1NywzMTM1NCwzNDQ2NywzNjAwMiwzODc5OSwyMDAxOCwyMzUyMSwyNTA5NiwyNjUyNCwyOTkxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTE4NSwzMzc0NywzNTQ2MywzNTUwNiwzNjMyOCwzNjk0MiwzNzcwNywzODk4MiwyNDI3NSwyNzExMiwzNDMwMywzNzEwMSw2Mzc0OSwyMDg5NiwyMzQ0OCwyMzUzMiwyNDkzMSwyNjg3NCwyNzQ1NCwyODc0OCwyOTc0MywyOTkxMiwzMTY0OSwzMjU5MiwzMzczMywzNTI2NCwzNjAxMSwzODM2NCwzOTIwOCwyMTAzOCwyNDY2OSwyNTMyNCwzNjg2NiwyMDM2MiwyMDgwOSwyMTI4MSwyMjc0NSwyNDI5MSwyNjMzNiwyNzk2MCwyODgyNiwyOTM3OCwyOTY1NCwzMTU2OCwzMzAwOSwzNzk3OSwyMTM1MCwyNTQ5OSwzMjYxOSwyMDA1NCwyMDYwOCwyMjYwMiwyMjc1MCwyNDYxOCwyNDg3MSwyNTI5NiwyNzA4OCwzOTc0NSwyMzQzOSwzMjAyNCwzMjk0NSwzNjcwMywyMDEzMiwyMDY4OSwyMTY3NiwyMTkzMiwyMzMwOCwyMzk2OCwyNDAzOSwyNTg5OCwyNTkzNCwyNjY1NywyNzIxMSwyOTQwOSwzMDM1MCwzMDcwMywzMjA5NCwzMjc2MSwzMzE4NCwzNDEyNiwzNDUyNywzNjYxMSwzNjY4NiwzNzA2NiwzOTE3MSwzOTUwOSwzOTg1MSwxOTk5MiwyMDAzNywyMDA2MSwyMDE2NywyMDQ2NSwyMDg1NSwyMTI0NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTMxMiwyMTQ3NSwyMTQ3NywyMTY0NiwyMjAzNiwyMjM4OSwyMjQzNCwyMzQ5NSwyMzk0MywyNDI3MiwyNTA4NCwyNTMwNCwyNTkzNywyNjU1MiwyNjYwMSwyNzA4MywyNzQ3MiwyNzU5MCwyNzYyOCwyNzcxNCwyODMxNywyODc5MiwyOTM5OSwyOTU5MCwyOTY5OSwzMDY1NSwzMDY5NywzMTM1MCwzMjEyNywzMjc3NywzMzI3NiwzMzI4NSwzMzI5MCwzMzUwMywzNDkxNCwzNTYzNSwzNjA5MiwzNjU0NCwzNjg4MSwzNzA0MSwzNzQ3NiwzNzU1OCwzOTM3OCwzOTQ5Myw0MDE2OSw0MDQwNyw0MDg2MCwyMjI4MywyMzYxNiwzMzczOCwzODgxNiwzODgyNyw0MDYyOCwyMTUzMSwzMTM4NCwzMjY3NiwzNTAzMywzNjU1NywzNzA4OSwyMjUyOCwyMzYyNCwyNTQ5NiwzMTM5MSwyMzQ3MCwyNDMzOSwzMTM1MywzMTQwNiwzMzQyMiwzNjUyNCwyMDUxOCwyMTA0OCwyMTI0MCwyMTM2NywyMjI4MCwyNTMzMSwyNTQ1OCwyNzQwMiwyODA5OSwzMDUxOSwyMTQxMywyOTUyNywzNDE1MiwzNjQ3MCwzODM1NywyNjQyNiwyNzMzMSwyODUyOCwzNTQzNywzNjU1NiwzOTI0Myw2Mzc1MCwyNjIzMSwyNzUxMiwzNjAyMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzOTc0MCw2Mzc1MSwyMTQ4MywyMjMxNywyMjg2MiwyNTU0MiwyNzEzMSwyOTY3NCwzMDc4OSwzMTQxOCwzMTQyOSwzMTk5OCwzMzkwOSwzNTIxNSwzNjIxMSwzNjkxNywzODMxMiwyMTI0MywyMjM0MywzMDAyMywzMTU4NCwzMzc0MCwzNzQwNiw2Mzc1MiwyNzIyNCwyMDgxMSwyMTA2NywyMTEyNywyNTExOSwyNjg0MCwyNjk5NywzODU1MywyMDY3NywyMTE1NiwyMTIyMCwyNTAyNywyNjAyMCwyNjY4MSwyNzEzNSwyOTgyMiwzMTU2MywzMzQ2NSwzMzc3MSwzNTI1MCwzNTY0MSwzNjgxNywzOTI0MSw2Mzc1MywyMDE3MCwyMjkzNSwyNTgxMCwyNjEyOSwyNzI3OCwyOTc0OCwzMTEwNSwzMTE2NSwzMzQ0OSwzNDk0MiwzNDk0MywzNTE2Nyw2Mzc1NCwzNzY3MCwyMDIzNSwyMTQ1MCwyNDYxMywyNTIwMSwyNzc2MiwzMjAyNiwzMjEwMiwyMDEyMCwyMDgzNCwzMDY4NCwzMjk0MywyMDIyNSwyMDIzOCwyMDg1NCwyMDg2NCwyMTk4MCwyMjEyMCwyMjMzMSwyMjUyMiwyMjUyNCwyMjgwNCwyMjg1NSwyMjkzMSwyMzQ5MiwyMzY5NiwyMzgyMiwyNDA0OSwyNDE5MCwyNDUyNCwyNTIxNiwyNjA3MSwyNjA4MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjM5OCwyNjM5OSwyNjQ2MiwyNjgyNywyNjgyMCwyNzIzMSwyNzQ1MCwyNzY4MywyNzc3MywyNzc3OCwyODEwMywyOTU5MiwyOTczNCwyOTczOCwyOTgyNiwyOTg1OSwzMDA3MiwzMDA3OSwzMDg0OSwzMDk1OSwzMTA0MSwzMTA0NywzMTA0OCwzMTA5OCwzMTYzNywzMjAwMCwzMjE4NiwzMjY0OCwzMjc3NCwzMjgxMywzMjkwOCwzNTM1MiwzNTY2MywzNTkxMiwzNjIxNSwzNzY2NSwzNzY2OCwzOTEzOCwzOTI0OSwzOTQzOCwzOTQzOSwzOTUyNSw0MDU5NCwzMjIwMiwyMDM0MiwyMTUxMywyNTMyNiwyNjcwOCwzNzMyOSwyMTkzMSwyMDc5NCw2Mzc1NSw2Mzc1NiwyMzA2OCwyNTA2Miw2Mzc1NywyNTI5NSwyNTM0Myw2Mzc1OCw2Mzc1OSw2Mzc2MCw2Mzc2MSw2Mzc2Miw2Mzc2MywzNzAyNyw2Mzc2NCw2Mzc2NSw2Mzc2Niw2Mzc2Nyw2Mzc2OCwzNTU4Miw2Mzc2OSw2Mzc3MCw2Mzc3MSw2Mzc3MiwyNjI2Miw2Mzc3MywyOTAxNCw2Mzc3NCw2Mzc3NSwzODYyNyw2Mzc3NiwyNTQyMywyNTQ2NiwyMTMzNSw2Mzc3NywyNjUxMSwyNjk3NiwyODI3NSw2Mzc3OCwzMDAwNyw2Mzc3OSw2Mzc4MCw2Mzc4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjAxMyw2Mzc4Miw2Mzc4MywzNDkzMCwyMjIxOCwyMzA2NCw2Mzc4NCw2Mzc4NSw2Mzc4Niw2Mzc4Nyw2Mzc4OCwyMDAzNSw2Mzc4OSwyMDgzOSwyMjg1NiwyNjYwOCwzMjc4NCw2Mzc5MCwyMjg5OSwyNDE4MCwyNTc1NCwzMTE3OCwyNDU2NSwyNDY4NCwyNTI4OCwyNTQ2NywyMzUyNywyMzUxMSwyMTE2Miw2Mzc5MSwyMjkwMCwyNDM2MSwyNDU5NCw2Mzc5Miw2Mzc5Myw2Mzc5NCwyOTc4NSw2Mzc5NSw2Mzc5Niw2Mzc5Nyw2Mzc5OCw2Mzc5OSw2MzgwMCwzOTM3Nyw2MzgwMSw2MzgwMiw2MzgwMyw2MzgwNCw2MzgwNSw2MzgwNiw2MzgwNyw2MzgwOCw2MzgwOSw2MzgxMCw2MzgxMSwyODYxMSw2MzgxMiw2MzgxMywzMzIxNSwzNjc4NiwyNDgxNyw2MzgxNCw2MzgxNSwzMzEyNiw2MzgxNiw2MzgxNywyMzYxNSw2MzgxOCw2MzgxOSw2MzgyMCw2MzgyMSw2MzgyMiw2MzgyMyw2MzgyNCw2MzgyNSwyMzI3MywzNTM2NSwyNjQ5MSwzMjAxNiw2MzgyNiw2MzgyNyw2MzgyOCw2MzgyOSw2MzgzMCw2MzgzMSwzMzAyMSw2MzgzMiw2MzgzMywyMzYxMiwyNzg3NywyMTMxMSwyODM0NiwyMjgxMCwzMzU5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDAyNSwyMDE1MCwyMDI5NCwyMTkzNCwyMjI5NiwyMjcyNywyNDQwNiwyNjAzOSwyNjA4NiwyNzI2NCwyNzU3MywyODIzNywzMDcwMSwzMTQ3MSwzMTc3NCwzMjIyMiwzNDUwNywzNDk2MiwzNzE3MCwzNzcyMywyNTc4NywyODYwNiwyOTU2MiwzMDEzNiwzNjk0OCwyMTg0NiwyMjM0OSwyNTAxOCwyNTgxMiwyNjMxMSwyODEyOSwyODI1MSwyODUyNSwyODYwMSwzMDE5MiwzMjgzNSwzMzIxMywzNDExMywzNTIwMywzNTUyNywzNTY3NCwzNzY2MywyNzc5NSwzMDAzNSwzMTU3MiwzNjM2NywzNjk1NywyMTc3NiwyMjUzMCwyMjYxNiwyNDE2MiwyNTA5NSwyNTc1OCwyNjg0OCwzMDA3MCwzMTk1OCwzNDczOSw0MDY4MCwyMDE5NSwyMjQwOCwyMjM4MiwyMjgyMywyMzU2NSwyMzcyOSwyNDExOCwyNDQ1MywyNTE0MCwyNTgyNSwyOTYxOSwzMzI3NCwzNDk1NSwzNjAyNCwzODUzOCw0MDY2NywyMzQyOSwyNDUwMywyNDc1NSwyMDQ5OCwyMDk5MiwyMTA0MCwyMjI5NCwyMjU4MSwyMjYxNSwyMzU2NiwyMzY0OCwyMzc5OCwyMzk0NywyNDIzMCwyNDQ2NiwyNDc2NCwyNTM2MSwyNTQ4MSwyNTYyMywyNjY5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg3MywyNzMzMCwyODEyMCwyODE5MywyODM3MiwyODY0NCwyOTE4MiwzMDQyOCwzMDU4NSwzMTE1MywzMTI5MSwzMzc5NiwzNTI0MSwzNjA3NywzNjMzOSwzNjQyNCwzNjg2NywzNjg4NCwzNjk0NywzNzExNywzNzcwOSwzODUxOCwzODg3NiwyNzYwMiwyODY3OCwyOTI3MiwyOTM0NiwyOTU0NCwzMDU2MywzMTE2NywzMTcxNiwzMjQxMSwzNTcxMiwyMjY5NywyNDc3NSwyNTk1OCwyNjEwOSwyNjMwMiwyNzc4OCwyODk1OCwyOTEyOSwzNTkzMCwzODkzMSwyMDA3NywzMTM2MSwyMDE4OSwyMDkwOCwyMDk0MSwyMTIwNSwyMTUxNiwyNDk5OSwyNjQ4MSwyNjcwNCwyNjg0NywyNzkzNCwyODU0MCwzMDE0MCwzMDY0MywzMTQ2MSwzMzAxMiwzMzg5MSwzNzUwOSwyMDgyOCwyNjAwNywyNjQ2MCwyNjUxNSwzMDE2OCwzMTQzMSwzMzY1MSw2MzgzNCwzNTkxMCwzNjg4NywzODk1NywyMzY2MywzMzIxNiwzMzQzNCwzNjkyOSwzNjk3NSwzNzM4OSwyNDQ3MSwyMzk2NSwyNzIyNSwyOTEyOCwzMDMzMSwzMTU2MSwzNDI3NiwzNTU4OCwzNzE1OSwzOTQ3MiwyMTg5NSwyNTA3OCw2MzgzNSwzMDMxMywzMjY0NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNDM2NywzNDc0NiwzNTA2NCwzNzAwNyw2MzgzNiwyNzkzMSwyODg4OSwyOTY2MiwzMjA5NywzMzg1Myw2MzgzNywzNzIyNiwzOTQwOSw2MzgzOCwyMDA5OCwyMTM2NSwyNzM5NiwyNzQxMCwyODczNCwyOTIxMSwzNDM0OSw0MDQ3OCwyMTA2OCwzNjc3MSwyMzg4OCwyNTgyOSwyNTkwMCwyNzQxNCwyODY1MSwzMTgxMSwzMjQxMiwzNDI1MywzNTE3MiwzNTI2MSwyNTI4OSwzMzI0MCwzNDg0NywyNDI2NiwyNjM5MSwyODAxMCwyOTQzNiwyOTcwMSwyOTgwNywzNDY5MCwzNzA4NiwyMDM1OCwyMzgyMSwyNDQ4MCwzMzgwMiwyMDkxOSwyNTUwNCwzMDA1MywyMDE0MiwyMDQ4NiwyMDg0MSwyMDkzNywyNjc1MywyNzE1MywzMTkxOCwzMTkyMSwzMTk3NSwzMzM5MSwzNTUzOCwzNjYzNSwzNzMyNywyMDQwNiwyMDc5MSwyMTIzNywyMTU3MCwyNDMwMCwyNDk0MiwyNTE1MCwyNjA1MywyNzM1NCwyODY3MCwzMTAxOCwzNDI2OCwzNDg1MSwzODMxNywzOTUyMiwzOTUzMCw0MDU5OSw0MDY1NCwyMTE0NywyNjMxMCwyNzUxMSwyODcwMSwzMTAxOSwzNjcwNiwzODcyMiwyNDk3NiwyNTA4OCwyNTg5MSwyODQ1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyOTAwMSwyOTgzMywzMjI0NCwzMjg3OSwzNDAzMCwzNjY0NiwzNjg5OSwzNzcwNiwyMDkyNSwyMTAxNSwyMTE1NSwyNzkxNiwyODg3MiwzNTAxMCwyNDI2NSwyNTk4NiwyNzU2NiwyODYxMCwzMTgwNiwyOTU1NywyMDE5NiwyMDI3OCwyMjI2NSw2MzgzOSwyMzczOCwyMzk5NCwyNDYwNCwyOTYxOCwzMTUzMywzMjY2NiwzMjcxOCwzMjgzOCwzNjg5NCwzNzQyOCwzODY0NiwzODcyOCwzODkzNiw0MDgwMSwyMDM2MywyODU4MywzMTE1MCwzNzMwMCwzODU4MywyMTIxNCw2Mzg0MCwyNTczNiwyNTc5NiwyNzM0NywyODUxMCwyODY5NiwyOTIwMCwzMDQzOSwzMjc2OSwzNDMxMCwzNDM5NiwzNjMzNSwzNjYxMywzODcwNiwzOTc5MSw0MDQ0Miw0MDU2NSwzMDg2MCwzMTEwMywzMjE2MCwzMzczNywzNzYzNiw0MDU3NSw0MDU5NSwzNTU0MiwyMjc1MSwyNDMyNCwyNjQwNywyODcxMSwyOTkwMywzMTg0MCwzMjg5NCwyMDc2OSwyODcxMiwyOTI4MiwzMDkyMiwzNjAzNCwzNjA1OCwzNjA4NCwzODY0NywyMDEwMiwyMDY5OCwyMzUzNCwyNDI3OCwyNjAwOSwyOTEzNCwzMDI3NCwzMDYzNywzMjg0MiwzNDA0NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjk4OCwzOTcxOSw0MDg0NSwyMjc0NCwyMzEwNSwyMzY1MCwyNzE1NSwyODEyMiwyODQzMSwzMDI2NywzMjA0NywzMjMxMSwzNDA3OCwzNTEyOCwzNzg2MCwzODQ3NSwyMTEyOSwyNjA2NiwyNjYxMSwyNzA2MCwyNzk2OSwyODMxNiwyODY4NywyOTcwNSwyOTc5MiwzMDA0MSwzMDI0NCwzMDgyNywzNTYyOCwzOTAwNiwyMDg0NSwyNTEzNCwzODUyMCwyMDM3NCwyMDUyMywyMzgzMywyODEzOCwzMjE4NCwzNjY1MCwyNDQ1OSwyNDkwMCwyNjY0Nyw2Mzg0MSwzODUzNCwyMTIwMiwzMjkwNywyMDk1NiwyMDk0MCwyNjk3NCwzMTI2MCwzMjE5MCwzMzc3NywzODUxNywyMDQ0MiwyMTAzMywyMTQwMCwyMTUxOSwyMTc3NCwyMzY1MywyNDc0MywyNjQ0NiwyNjc5MiwyODAxMiwyOTMxMywyOTQzMiwyOTcwMiwyOTgyNyw2Mzg0MiwzMDE3OCwzMTg1MiwzMjYzMywzMjY5NiwzMzY3MywzNTAyMywzNTA0MSwzNzMyNCwzNzMyOCwzODYyNiwzOTg4MSwyMTUzMywyODU0MiwyOTEzNiwyOTg0OCwzNDI5OCwzNjUyMiwzODU2Myw0MDAyMyw0MDYwNywyNjUxOSwyODEwNywyOTc0NywzMzI1NiwzODY3OCwzMDc2NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTQzNSwzMTUyMCwzMTg5MCwyNTcwNSwyOTgwMiwzMDE5NCwzMDkwOCwzMDk1MiwzOTM0MCwzOTc2NCw0MDYzNSwyMzUxOCwyNDE0OSwyODQ0OCwzMzE4MCwzMzcwNywzNzAwMCwxOTk3NSwyMTMyNSwyMzA4MSwyNDAxOCwyNDM5OCwyNDkzMCwyNTQwNSwyNjIxNywyNjM2NCwyODQxNSwyODQ1OSwyODc3MSwzMDYyMiwzMzgzNiwzNDA2NywzNDg3NSwzNjYyNywzOTIzNywzOTk5NSwyMTc4OCwyNTI3MywyNjQxMSwyNzgxOSwzMzU0NSwzNTE3OCwzODc3OCwyMDEyOSwyMjkxNiwyNDUzNiwyNDUzNywyNjM5NSwzMjE3OCwzMjU5NiwzMzQyNiwzMzU3OSwzMzcyNSwzNjYzOCwzNzAxNywyMjQ3NSwyMjk2OSwyMzE4NiwyMzUwNCwyNjE1MSwyNjUyMiwyNjc1NywyNzU5OSwyOTAyOCwzMjYyOSwzNjAyMywzNjA2NywzNjk5MywzOTc0OSwzMzAzMiwzNTk3OCwzODQ3NiwzOTQ4OCw0MDYxMywyMzM5MSwyNzY2NywyOTQ2NywzMDQ1MCwzMDQzMSwzMzgwNCwyMDkwNiwzNTIxOSwyMDgxMywyMDg4NSwyMTE5MywyNjgyNSwyNzc5NiwzMDQ2OCwzMDQ5NiwzMjE5MSwzMjIzNiwzODc1NCw0MDYyOSwyODM1NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNDA2NSwyMDkwMSwyMTUxNywyMTYyOSwyNjEyNiwyNjI2OSwyNjkxOSwyODMxOSwzMDM5OSwzMDYwOSwzMzU1OSwzMzk4NiwzNDcxOSwzNzIyNSwzNzUyOCw0MDE4MCwzNDk0NiwyMDM5OCwyMDg4MiwyMTIxNSwyMjk4MiwyNDEyNSwyNDkxNywyNTcyMCwyNTcyMSwyNjI4NiwyNjU3NiwyNzE2OSwyNzU5NywyNzYxMSwyOTI3OSwyOTI4MSwyOTc2MSwzMDUyMCwzMDY4MywzMjc5MSwzMzQ2OCwzMzU0MSwzNTU4NCwzNTYyNCwzNTk4MCwyNjQwOCwyNzc5MiwyOTI4NywzMDQ0NiwzMDU2NiwzMTMwMiw0MDM2MSwyNzUxOSwyNzc5NCwyMjgxOCwyNjQwNiwzMzk0NSwyMTM1OSwyMjY3NSwyMjkzNywyNDI4NywyNTU1MSwyNjE2NCwyNjQ4MywyODIxOCwyOTQ4MywzMTQ0NywzMzQ5NSwzNzY3MiwyMTIwOSwyNDA0MywyNTAwNiwyNTAzNSwyNTA5OCwyNTI4NywyNTc3MSwyNjA4MCwyNjk2OSwyNzQ5NCwyNzU5NSwyODk2MSwyOTY4NywzMDA0NSwzMjMyNiwzMzMxMCwzMzUzOCwzNDE1NCwzNTQ5MSwzNjAzMSwzODY5NSw0MDI4OSwyMjY5Niw0MDY2NCwyMDQ5NywyMTAwNiwyMTU2MywyMTgzOSwyNTk5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNzc2NiwzMjAxMCwzMjAxMSwzMjg2MiwzNDQ0MiwzODI3MiwzODYzOSwyMTI0NywyNzc5NywyOTI4OSwyMTYxOSwyMzE5NCwyMzYxNCwyMzg4MywyNDM5NiwyNDQ5NCwyNjQxMCwyNjgwNiwyNjk3OSwyODIyMCwyODIyOCwzMDQ3MywzMTg1OSwzMjY1NCwzNDE4MywzNTU5OCwzNjg1NSwzODc1Myw0MDY5MiwyMzczNSwyNDc1OCwyNDg0NSwyNTAwMywyNTkzNSwyNjEwNywyNjEwOCwyNzY2NSwyNzg4NywyOTU5OSwyOTY0MSwzMjIyNSwzODI5MiwyMzQ5NCwzNDU4OCwzNTYwMCwyMTA4NSwyMTMzOCwyNTI5MywyNTYxNSwyNTc3OCwyNjQyMCwyNzE5MiwyNzg1MCwyOTYzMiwyOTg1NCwzMTYzNiwzMTg5MywzMjI4MywzMzE2MiwzMzMzNCwzNDE4MCwzNjg0MywzODY0OSwzOTM2MSwyMDI3NiwyMTMyMiwyMTQ1MywyMTQ2NywyNTI5MiwyNTY0NCwyNTg1NiwyNjAwMSwyNzA3NSwyNzg4NiwyODUwNCwyOTY3NywzMDAzNiwzMDI0MiwzMDQzNiwzMDQ2MCwzMDkyOCwzMDk3MSwzMTAyMCwzMjA3MCwzMzMyNCwzNDc4NCwzNjgyMCwzODkzMCwzOTE1MSwyMTE4NywyNTMwMCwyNTc2NSwyODE5NiwyODQ5NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDMzMiwzNjI5OSwzNzI5NywzNzQ3NCwzOTY2MiwzOTc0NywyMDUxNSwyMDYyMSwyMjM0NiwyMjk1MiwyMzU5MiwyNDEzNSwyNDQzOSwyNTE1MSwyNTkxOCwyNjA0MSwyNjA0OSwyNjEyMSwyNjUwNywyNzAzNiwyODM1NCwzMDkxNywzMjAzMywzMjkzOCwzMzE1MiwzMzMyMywzMzQ1OSwzMzk1MywzNDQ0NCwzNTM3MCwzNTYwNywzNzAzMCwzODQ1MCw0MDg0OCwyMDQ5MywyMDQ2Nyw2Mzg0MywyMjUyMSwyNDQ3MiwyNTMwOCwyNTQ5MCwyNjQ3OSwyODIyNywyODk1MywzMDQwMywzMjk3MiwzMjk4NiwzNTA2MCwzNTA2MSwzNTA5NywzNjA2NCwzNjY0OSwzNzE5NywzODUwNiwyMDI3MSwyMDMzNiwyNDA5MSwyNjU3NSwyNjY1OCwzMDMzMywzMDMzNCwzOTc0OCwyNDE2MSwyNzE0NiwyOTAzMywyOTE0MCwzMDA1OCw2Mzg0NCwzMjMyMSwzNDExNSwzNDI4MSwzOTEzMiwyMDI0MCwzMTU2NywzMjYyNCwzODMwOSwyMDk2MSwyNDA3MCwyNjgwNSwyNzcxMCwyNzcyNiwyNzg2NywyOTM1OSwzMTY4NCwzMzUzOSwyNzg2MSwyOTc1NCwyMDczMSwyMTEyOCwyMjcyMSwyNTgxNiwyNzI4NywyOTg2MywzMDI5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMDg4NywzNDMyNywzODM3MCwzODcxMyw2Mzg0NSwyMTM0MiwyNDMyMSwzNTcyMiwzNjc3NiwzNjc4MywzNzAwMiwyMTAyOSwzMDYyOSw0MDAwOSw0MDcxMiwxOTk5MywyMDQ4MiwyMDg1MywyMzY0MywyNDE4MywyNjE0MiwyNjE3MCwyNjU2NCwyNjgyMSwyODg1MSwyOTk1MywzMDE0OSwzMTE3NywzMTQ1MywzNjY0NywzOTIwMCwzOTQzMiwyMDQ0NSwyMjU2MSwyMjU3NywyMzU0MiwyNjIyMiwyNzQ5MywyNzkyMSwyODI4MiwyODU0MSwyOTY2OCwyOTk5NSwzMzc2OSwzNTAzNiwzNTA5MSwzNTY3NiwzNjYyOCwyMDIzOSwyMDY5MywyMTI2NCwyMTM0MCwyMzQ0MywyNDQ4OSwyNjM4MSwzMTExOSwzMzE0NSwzMzU4MywzNDA2OCwzNTA3OSwzNTIwNiwzNjY2NSwzNjY2NywzOTMzMywzOTk1NCwyNjQxMiwyMDA4NiwyMDQ3MiwyMjg1NywyMzU1MywyMzc5MSwyMzc5MiwyNTQ0NywyNjgzNCwyODkyNSwyOTA5MCwyOTczOSwzMjI5OSwzNDAyOCwzNDU2MiwzNjg5OCwzNzU4Niw0MDE3OSwxOTk4MSwyMDE4NCwyMDQ2MywyMDYxMywyMTA3OCwyMTEwMywyMTU0MiwyMTY0OCwyMjQ5NiwyMjgyNywyMzE0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzM4NiwyMzQxMywyMzUwMCwyNDIyMCw2Mzg0NiwyNTIwNiwyNTk3NSwyNjAyMywyODAxNCwyODMyNSwyOTIzOCwzMTUyNiwzMTgwNywzMjU2NiwzMzEwNCwzMzEwNSwzMzE3OCwzMzM0NCwzMzQzMywzMzcwNSwzNTMzMSwzNjAwMCwzNjA3MCwzNjA5MSwzNjIxMiwzNjI4MiwzNzA5NiwzNzM0MCwzODQyOCwzODQ2OCwzOTM4NSw0MDE2NywyMTI3MSwyMDk5OCwyMTU0NSwyMjEzMiwyMjcwNywyMjg2OCwyMjg5NCwyNDU3NSwyNDk5NiwyNTE5OCwyNjEyOCwyNzc3NCwyODk1NCwzMDQwNiwzMTg4MSwzMTk2NiwzMjAyNywzMzQ1MiwzNjAzMywzODY0MCw2Mzg0NywyMDMxNSwyNDM0MywyNDQ0NywyNTI4MiwyMzg0OSwyNjM3OSwyNjg0MiwzMDg0NCwzMjMyMyw0MDMwMCwxOTk4OSwyMDYzMywyMTI2OSwyMTI5MCwyMTMyOSwyMjkxNSwyMzEzOCwyNDE5OSwyNDc1NCwyNDk3MCwyNTE2MSwyNTIwOSwyNjAwMCwyNjUwMywyNzA0NywyNzYwNCwyNzYwNiwyNzYwNywyNzYwOCwyNzgzMiw2Mzg0OCwyOTc0OSwzMDIwMiwzMDczOCwzMDg2NSwzMTE4OSwzMTE5MiwzMTg3NSwzMjIwMywzMjczNywzMjkzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMzA4NiwzMzIxOCwzMzc3OCwzNDU4NiwzNTA0OCwzNTUxMywzNTY5MiwzNjAyNywzNzE0NSwzODc1MCwzOTEzMSw0MDc2MywyMjE4OCwyMzMzOCwyNDQyOCwyNTk5NiwyNzMxNSwyNzU2NywyNzk5NiwyODY1NywyODY5MywyOTI3NywyOTYxMywzNjAwNywzNjA1MSwzODk3MSwyNDk3NywyNzcwMywzMjg1NiwzOTQyNSwyMDA0NSwyMDEwNywyMDEyMywyMDE4MSwyMDI4MiwyMDI4NCwyMDM1MSwyMDQ0NywyMDczNSwyMTQ5MCwyMTQ5NiwyMTc2NiwyMTk4NywyMjIzNSwyMjc2MywyMjg4MiwyMzA1NywyMzUzMSwyMzU0NiwyMzU1NiwyNDA1MSwyNDEwNywyNDQ3MywyNDYwNSwyNTQ0OCwyNjAxMiwyNjAzMSwyNjYxNCwyNjYxOSwyNjc5NywyNzUxNSwyNzgwMSwyNzg2MywyODE5NSwyODY4MSwyOTUwOSwzMDcyMiwzMTAzOCwzMTA0MCwzMTA3MiwzMTE2OSwzMTcyMSwzMjAyMywzMjExNCwzMjkwMiwzMzI5MywzMzY3OCwzNDAwMSwzNDUwMywzNTAzOSwzNTQwOCwzNTQyMiwzNTYxMywzNjA2MCwzNjE5OCwzNjc4MSwzNzAzNCwzOTE2NCwzOTM5MSw0MDYwNSwyMTA2Niw2Mzg0OSwyNjM4OCw2Mzg1MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMDYzMiwyMTAzNCwyMzY2NSwyNTk1NSwyNzczMywyOTY0MiwyOTk4NywzMDEwOSwzMTYzOSwzMzk0OCwzNzI0MCwzODcwNCwyMDA4NywyNTc0NiwyNzU3OCwyOTAyMiwzNDIxNywxOTk3Nyw2Mzg1MSwyNjQ0MSwyNjg2MiwyODE4MywzMzQzOSwzNDA3MiwzNDkyMywyNTU5MSwyODU0NSwzNzM5NCwzOTA4NywxOTk3OCwyMDY2MywyMDY4NywyMDc2NywyMTgzMCwyMTkzMCwyMjAzOSwyMzM2MCwyMzU3NywyMzc3NiwyNDEyMCwyNDIwMiwyNDIyNCwyNDI1OCwyNDgxOSwyNjcwNSwyNzIzMywyODI0OCwyOTI0NSwyOTI0OCwyOTM3NiwzMDQ1NiwzMTA3NywzMTY2NSwzMjcyNCwzNTA1OSwzNTMxNiwzNTQ0MywzNTkzNywzNjA2MiwzODY4NCwyMjYyMiwyOTg4NSwzNjA5MywyMTk1OSw2Mzg1MiwzMTMyOSwzMjAzNCwzMzM5NCwyOTI5OCwyOTk4MywyOTk4OSw2Mzg1MywzMTUxMywyMjY2MSwyMjc3OSwyMzk5NiwyNDIwNywyNDI0NiwyNDQ2NCwyNDY2MSwyNTIzNCwyNTQ3MSwyNTkzMywyNjI1NywyNjMyOSwyNjM2MCwyNjY0NiwyNjg2NiwyOTMxMiwyOTc5MCwzMTU5OCwzMjExMCwzMjIxNCwzMjYyNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjk5NywzMzI5OCwzNDIyMywzNTE5OSwzNTQ3NSwzNjg5MywzNzYwNCw0MDY1Myw0MDczNiwyMjgwNSwyMjg5MywyNDEwOSwyNDc5NiwyNjEzMiwyNjIyNywyNjUxMiwyNzcyOCwyODEwMSwyODUxMSwzMDcwNywzMDg4OSwzMzk5MCwzNzMyMywzNzY3NSwyMDE4NSwyMDY4MiwyMDgwOCwyMTg5MiwyMzMwNywyMzQ1OSwyNTE1OSwyNTk4MiwyNjA1OSwyODIxMCwyOTA1MywyOTY5NywyOTc2NCwyOTgzMSwyOTg4NywzMDMxNiwzMTE0NiwzMjIxOCwzMjM0MSwzMjY4MCwzMzE0NiwzMzIwMywzMzMzNywzNDMzMCwzNDc5NiwzNTQ0NSwzNjMyMywzNjk4NCwzNzUyMSwzNzkyNSwzOTI0NSwzOTg1NCwyMTM1MiwyMzYzMywyNjk2NCwyNzg0NCwyNzk0NSwyODIwMywzMzI5MiwzNDIwMywzNTEzMSwzNTM3MywzNTQ5OCwzODYzNCw0MDgwNywyMTA4OSwyNjI5NywyNzU3MCwzMjQwNiwzNDgxNCwzNjEwOSwzODI3NSwzODQ5MywyNTg4NSwyODA0MSwyOTE2Niw2Mzg1NCwyMjQ3OCwyMjk5NSwyMzQ2OCwyNDYxNSwyNDgyNiwyNTEwNCwyNjE0MywyNjIwNywyOTQ4MSwyOTY4OSwzMDQyNywzMDQ2NSwzMTU5NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMjg1NCwzMjg4MiwzMzEyNSwzNTQ4OCwzNzI2NiwxOTk5MCwyMTIxOCwyNzUwNiwyNzkyNywzMTIzNywzMTU0NSwzMjA0OCw2Mzg1NSwzNjAxNiwyMTQ4NCwyMjA2MywyMjYwOSwyMzQ3NywyMzU2NywyMzU2OSwyNDAzNCwyNTE1MiwyNTQ3NSwyNTYyMCwyNjE1NywyNjgwMywyNzgzNiwyODA0MCwyODMzNSwyODcwMywyODgzNiwyOTEzOCwyOTk5MCwzMDA5NSwzMDA5NCwzMDIzMywzMTUwNSwzMTcxMiwzMTc4NywzMjAzMiwzMjA1NywzNDA5MiwzNDE1NywzNDMxMSwzNTM4MCwzNjg3NywzNjk2MSwzNzA0NSwzNzU1OSwzODkwMiwzOTQ3OSwyMDQzOSwyMzY2MCwyNjQ2MywyODA0OSwzMTkwMywzMjM5NiwzNTYwNiwzNjExOCwzNjg5NSwyMzQwMywyNDA2MSwyNTYxMywzMzk4NCwzNjk1NiwzOTEzNywyOTU3NSwyMzQzNSwyNDczMCwyNjQ5NCwyODEyNiwzNTM1OSwzNTQ5NCwzNjg2NSwzODkyNCwyMTA0Nyw2Mzg1NiwyODc1MywzMDg2MiwzNzc4MiwzNDkyOCwzNzMzNSwyMDQ2MiwyMTQ2MywyMjAxMywyMjIzNCwyMjQwMiwyMjc4MSwyMzIzNCwyMzQzMiwyMzcyMywyMzc0NCwyNDEwMSwyNDgzMyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNTEwMSwyNTE2MywyNTQ4MCwyNTYyOCwyNTkxMCwyNTk3NiwyNzE5MywyNzUzMCwyNzcwMCwyNzkyOSwyODQ2NSwyOTE1OSwyOTQxNywyOTU2MCwyOTcwMywyOTg3NCwzMDI0NiwzMDU2MSwzMTE2OCwzMTMxOSwzMTQ2NiwzMTkyOSwzMjE0MywzMjE3MiwzMjM1MywzMjY3MCwzMzA2NSwzMzU4NSwzMzkzNiwzNDAxMCwzNDI4MiwzNDk2NiwzNTUwNCwzNTcyOCwzNjY2NCwzNjkzMCwzNjk5NSwzNzIyOCwzNzUyNiwzNzU2MSwzODUzOSwzODU2NywzODU2OCwzODYxNCwzODY1NiwzODkyMCwzOTMxOCwzOTYzNSwzOTcwNiwyMTQ2MCwyMjY1NCwyMjgwOSwyMzQwOCwyMzQ4NywyODExMywyODUwNiwyOTA4NywyOTcyOSwyOTg4MSwzMjkwMSwzMzc4OSwyNDAzMywyNDQ1NSwyNDQ5MCwyNDY0MiwyNjA5MiwyNjY0MiwyNjk5MSwyNzIxOSwyNzUyOSwyNzk1NywyODE0NywyOTY2NywzMDQ2MiwzMDYzNiwzMTU2NSwzMjAyMCwzMzA1OSwzMzMwOCwzMzYwMCwzNDAzNiwzNDE0NywzNTQyNiwzNTUyNCwzNzI1NSwzNzY2MiwzODkxOCwzOTM0OCwyNTEwMCwzNDg5OSwzNjg0OCwzNzQ3NywyMzgxNSwyMzg0NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzkxMywyOTc5MSwzMzE4MSwzNDY2NCwyODYyOSwyNTM0MiwzMjcyMiwzNTEyNiwzNTE4NiwxOTk5OCwyMDA1NiwyMDcxMSwyMTIxMywyMTMxOSwyNTIxNSwyNjExOSwzMjM2MSwzNDgyMSwzODQ5NCwyMDM2NSwyMTI3MywyMjA3MCwyMjk4NywyMzIwNCwyMzYwOCwyMzYzMCwyMzYyOSwyNDA2NiwyNDMzNywyNDY0MywyNjA0NSwyNjE1OSwyNjE3OCwyNjU1OCwyNjYxMiwyOTQ2OCwzMDY5MCwzMTAzNCwzMjcwOSwzMzk0MCwzMzk5NywzNTIyMiwzNTQzMCwzNTQzMywzNTU1MywzNTkyNSwzNTk2MiwyMjUxNiwyMzUwOCwyNDMzNSwyNDY4NywyNTMyNSwyNjg5MywyNzU0MiwyODI1MiwyOTA2MCwzMTY5OCwzNDY0NSwzNTY3MiwzNjYwNiwzOTEzNSwzOTE2NiwyMDI4MCwyMDM1MywyMDQ0OSwyMTYyNywyMzA3MiwyMzQ4MCwyNDg5MiwyNjAzMiwyNjIxNiwyOTE4MCwzMDAwMywzMTA3MCwzMjA1MSwzMzEwMiwzMzI1MSwzMzY4OCwzNDIxOCwzNDI1NCwzNDU2MywzNTMzOCwzNjUyMywzNjc2Myw2Mzg1NywzNjgwNSwyMjgzMywyMzQ2MCwyMzUyNiwyNDcxMywyMzUyOSwyMzU2MywyNDUxNSwyNzc3NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2Mzg1OCwyODE0NSwyODY4MywyOTk3OCwzMzQ1NSwzNTU3NCwyMDE2MCwyMTMxMyw2Mzg1OSwzODYxNywyNzY2MywyMDEyNiwyMDQyMCwyMDgxOCwyMTg1NCwyMzA3NywyMzc4NCwyNTEwNSwyOTI3MywzMzQ2OSwzMzcwNiwzNDU1OCwzNDkwNSwzNTM1NywzODQ2MywzODU5NywzOTE4Nyw0MDIwMSw0MDI4NSwyMjUzOCwyMzczMSwyMzk5NywyNDEzMiwyNDgwMSwyNDg1MywyNTU2OSwyNzEzOCwyODE5NywzNzEyMiwzNzcxNiwzODk5MCwzOTk1Miw0MDgyMywyMzQzMywyMzczNiwyNTM1MywyNjE5MSwyNjY5NiwzMDUyNCwzODU5MywzODc5NywzODk5NiwzOTgzOSwyNjAxNywzNTU4NSwzNjU1NSwzODMzMiwyMTgxMywyMzcyMSwyNDAyMiwyNDI0NSwyNjI2MywzMDI4NCwzMzc4MCwzODM0MywyMjczOSwyNTI3NiwyOTM5MCw0MDIzMiwyMDIwOCwyMjgzMCwyNDU5MSwyNjE3MSwyNzUyMywzMTIwNyw0MDIzMCwyMTM5NSwyMTY5NiwyMjQ2NywyMzgzMCwyNDg1OSwyNjMyNiwyODA3OSwzMDg2MSwzMzQwNiwzODU1MiwzODcyNCwyMTM4MCwyNTIxMiwyNTQ5NCwyODA4MiwzMjI2NiwzMzA5OSwzODk4OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNzM4NywzMjU4OCw0MDM2Nyw0MDQ3NCwyMDA2MywyMDUzOSwyMDkxOCwyMjgxMiwyNDgyNSwyNTU5MCwyNjkyOCwyOTI0MiwzMjgyMiw2Mzg2MCwzNzMyNiwyNDM2OSw2Mzg2MSw2Mzg2MiwzMjAwNCwzMzUwOSwzMzkwMywzMzk3OSwzNDI3NywzNjQ5Myw2Mzg2MywyMDMzNSw2Mzg2NCw2Mzg2NSwyMjc1NiwyMzM2MywyNDY2NSwyNTU2MiwyNTg4MCwyNTk2NSwyNjI2NCw2Mzg2NiwyNjk1NCwyNzE3MSwyNzkxNSwyODY3MywyOTAzNiwzMDE2MiwzMDIyMSwzMTE1NSwzMTM0NCw2Mzg2NywzMjY1MCw2Mzg2OCwzNTE0MCw2Mzg2OSwzNTczMSwzNzMxMiwzODUyNSw2Mzg3MCwzOTE3OCwyMjI3NiwyNDQ4MSwyNjA0NCwyODQxNywzMDIwOCwzMTE0MiwzNTQ4NiwzOTM0MSwzOTc3MCw0MDgxMiwyMDc0MCwyNTAxNCwyNTIzMywyNzI3NywzMzIyMiwyMDU0NywyMjU3NiwyNDQyMiwyODkzNywzNTMyOCwzNTU3OCwyMzQyMCwzNDMyNiwyMDQ3NCwyMDc5NiwyMjE5NiwyMjg1MiwyNTUxMywyODE1MywyMzk3OCwyNjk4OSwyMDg3MCwyMDEwNCwyMDMxMyw2Mzg3MSw2Mzg3Miw2Mzg3MywyMjkxNCw2Mzg3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2Mzg3NSwyNzQ4NywyNzc0MSw2Mzg3NiwyOTg3NywzMDk5OCw2Mzg3NywzMzI4NywzMzM0OSwzMzU5MywzNjY3MSwzNjcwMSw2Mzg3OCwzOTE5Miw2Mzg3OSw2Mzg4MCw2Mzg4MSwyMDEzNCw2Mzg4MiwyMjQ5NSwyNDQ0MSwyNjEzMSw2Mzg4Myw2Mzg4NCwzMDEyMywzMjM3NywzNTY5NSw2Mzg4NSwzNjg3MCwzOTUxNSwyMjE4MSwyMjU2NywyMzAzMiwyMzA3MSwyMzQ3Niw2Mzg4NiwyNDMxMCw2Mzg4Nyw2Mzg4OCwyNTQyNCwyNTQwMyw2Mzg4OSwyNjk0MSwyNzc4MywyNzgzOSwyODA0NiwyODA1MSwyODE0OSwyODQzNiw2Mzg5MCwyODg5NSwyODk4MiwyOTAxNyw2Mzg5MSwyOTEyMywyOTE0MSw2Mzg5MiwzMDc5OSwzMDgzMSw2Mzg5MywzMTYwNSwzMjIyNyw2Mzg5NCwzMjMwMyw2Mzg5NSwzNDg5MywzNjU3NSw2Mzg5Niw2Mzg5Nyw2Mzg5OCwzNzQ2Nyw2Mzg5OSw0MDE4Miw2MzkwMCw2MzkwMSw2MzkwMiwyNDcwOSwyODAzNyw2MzkwMywyOTEwNSw2MzkwNCw2MzkwNSwzODMyMSwyMTQyMSw2MzkwNiw2MzkwNyw2MzkwOCwyNjU3OSw2MzkwOSwyODgxNCwyODk3NiwyOTc0NCwzMzM5OCwzMzQ5MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2MzkxMCwzODMzMSwzOTY1Myw0MDU3MywyNjMwOCw2MzkxMSwyOTEyMSwzMzg2NSw2MzkxMiw2MzkxMywyMjYwMyw2MzkxNCw2MzkxNSwyMzk5MiwyNDQzMyw2MzkxNiwyNjE0NCwyNjI1NCwyNzAwMSwyNzA1NCwyNzcwNCwyNzg5MSwyODIxNCwyODQ4MSwyODYzNCwyODY5OSwyODcxOSwyOTAwOCwyOTE1MSwyOTU1Miw2MzkxNywyOTc4Nyw2MzkxOCwyOTkwOCwzMDQwOCwzMTMxMCwzMjQwMyw2MzkxOSw2MzkyMCwzMzUyMSwzNTQyNCwzNjgxNCw2MzkyMSwzNzcwNCw2MzkyMiwzODY4MSw2MzkyMyw2MzkyNCwyMDAzNCwyMDUyMiw2MzkyNSwyMTAwMCwyMTQ3MywyNjM1NSwyNzc1NywyODYxOCwyOTQ1MCwzMDU5MSwzMTMzMCwzMzQ1NCwzNDI2OSwzNDMwNiw2MzkyNiwzNTAyOCwzNTQyNywzNTcwOSwzNTk0Nyw2MzkyNywzNzU1NSw2MzkyOCwzODY3NSwzODkyOCwyMDExNiwyMDIzNywyMDQyNSwyMDY1OCwyMTMyMCwyMTU2NiwyMTU1NSwyMTk3OCwyMjYyNiwyMjcxNCwyMjg4NywyMzA2NywyMzUyNCwyNDczNSw2MzkyOSwyNTAzNCwyNTk0MiwyNjExMSwyNjIxMiwyNjc5MSwyNzczOCwyODU5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyODg3OSwyOTEwMCwyOTUyMiwzMTYxMywzNDU2OCwzNTQ5MiwzOTk4Niw0MDcxMSwyMzYyNywyNzc3OSwyOTUwOCwyOTU3NywzNzQzNCwyODMzMSwyOTc5NywzMDIzOSwzMTMzNywzMjI3NywzNDMxNCwyMDgwMCwyMjcyNSwyNTc5MywyOTkzNCwyOTk3MywzMDMyMCwzMjcwNSwzNzAxMywzODYwNSwzOTI1MiwyODE5OCwyOTkyNiwzMTQwMSwzMTQwMiwzMzI1MywzNDUyMSwzNDY4MCwzNTM1NSwyMzExMywyMzQzNiwyMzQ1MSwyNjc4NSwyNjg4MCwyODAwMywyOTYwOSwyOTcxNSwyOTc0MCwzMDg3MSwzMjIzMywzMjc0NywzMzA0OCwzMzEwOSwzMzY5NCwzNTkxNiwzODQ0NiwzODkyOSwyNjM1MiwyNDQ0OCwyNjEwNiwyNjUwNSwyNzc1NCwyOTU3OSwyMDUyNSwyMzA0MywyNzQ5OCwzMDcwMiwyMjgwNiwyMzkxNiwyNDAxMywyOTQ3NywzMDAzMSw2MzkzMCw2MzkzMSwyMDcwOSwyMDk4NSwyMjU3NSwyMjgyOSwyMjkzNCwyMzAwMiwyMzUyNSw2MzkzMiw2MzkzMywyMzk3MCwyNTMwMywyNTYyMiwyNTc0NywyNTg1NCw2MzkzNCwyNjMzMiw2MzkzNSwyNzIwOCw2MzkzNiwyOTE4MywyOTc5Niw2MzkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTM2OCwzMTQwNywzMjMyNywzMjM1MCwzMjc2OCwzMzEzNiw2MzkzOCwzNDc5OSwzNTIwMSwzNTYxNiwzNjk1Myw2MzkzOSwzNjk5MiwzOTI1MCwyNDk1OCwyNzQ0MiwyODAyMCwzMjI4NywzNTEwOSwzNjc4NSwyMDQzMywyMDY1MywyMDg4NywyMTE5MSwyMjQ3MSwyMjY2NSwyMzQ4MSwyNDI0OCwyNDg5OCwyNzAyOSwyODA0NCwyODI2MywyODM0MiwyOTA3NiwyOTc5NCwyOTk5MiwyOTk5NiwzMjg4MywzMzU5MiwzMzk5MywzNjM2MiwzNzc4MCwzNzg1NCw2Mzk0MCwyMDExMCwyMDMwNSwyMDU5OCwyMDc3OCwyMTQ0OCwyMTQ1MSwyMTQ5MSwyMzQzMSwyMzUwNywyMzU4OCwyNDg1OCwyNDk2MiwyNjEwMCwyOTI3NSwyOTU5MSwyOTc2MCwzMDQwMiwzMTA1NiwzMTEyMSwzMTE2MSwzMjAwNiwzMjcwMSwzMzQxOSwzNDI2MSwzNDM5OCwzNjgwMiwzNjkzNSwzNzEwOSwzNzM1NCwzODUzMywzODYzMiwzODYzMywyMTIwNiwyNDQyMywyNjA5MywyNjE2MSwyNjY3MSwyOTAyMCwzMTI4NiwzNzA1NywzODkyMiwyMDExMyw2Mzk0MSwyNzIxOCwyNzU1MCwyODU2MCwyOTA2NSwzMjc5MiwzMzQ2NCwzNDEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjkzOSwzODU0OSwzODY0MiwzODkwNywzNDA3NCwzOTcyOSwyMDExMiwyOTA2NiwzODU5NiwyMDgwMywyMTQwNywyMTcyOSwyMjI5MSwyMjI5MCwyMjQzNSwyMzE5NSwyMzIzNiwyMzQ5MSwyNDYxNiwyNDg5NSwyNTU4OCwyNzc4MSwyNzk2MSwyODI3NCwyODMwNCwyOTIzMiwyOTUwMywyOTc4MywzMzQ4OSwzNDk0NSwzNjY3NywzNjk2MCw2Mzk0MiwzODQ5OCwzOTAwMCw0MDIxOSwyNjM3NiwzNjIzNCwzNzQ3MCwyMDMwMSwyMDU1MywyMDcwMiwyMTM2MSwyMjI4NSwyMjk5NiwyMzA0MSwyMzU2MSwyNDk0NCwyNjI1NiwyODIwNSwyOTIzNCwyOTc3MSwzMjIzOSwzMjk2MywzMzgwNiwzMzg5NCwzNDExMSwzNDY1NSwzNDkwNywzNTA5NiwzNTU4NiwzNjk0OSwzODg1OSwzOTc1OSwyMDA4MywyMDM2OSwyMDc1NCwyMDg0Miw2Mzk0MywyMTgwNywyMTkyOSwyMzQxOCwyMzQ2MSwyNDE4OCwyNDE4OSwyNDI1NCwyNDczNiwyNDc5OSwyNDg0MCwyNDg0MSwyNTU0MCwyNTkxMiwyNjM3Nyw2Mzk0NCwyNjU4MCwyNjU4Niw2Mzk0NSwyNjk3NywyNjk3OCwyNzgzMywyNzk0Myw2Mzk0NiwyODIxNiw2Mzk0NyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyODY0MSwyOTQ5NCwyOTQ5NSw2Mzk0OCwyOTc4OCwzMDAwMSw2Mzk0OSwzMDI5MCw2Mzk1MCw2Mzk1MSwzMjE3MywzMzI3OCwzMzg0OCwzNTAyOSwzNTQ4MCwzNTU0NywzNTU2NSwzNjQwMCwzNjQxOCwzNjkzOCwzNjkyNiwzNjk4NiwzNzE5MywzNzMyMSwzNzc0Miw2Mzk1Miw2Mzk1MywyMjUzNyw2Mzk1NCwyNzYwMywzMjkwNSwzMjk0Niw2Mzk1NSw2Mzk1NiwyMDgwMSwyMjg5MSwyMzYwOSw2Mzk1Nyw2Mzk1OCwyODUxNiwyOTYwNywzMjk5NiwzNjEwMyw2Mzk1OSwzNzM5OSwzODI4Nyw2Mzk2MCw2Mzk2MSw2Mzk2Miw2Mzk2MywzMjg5NSwyNTEwMiwyODcwMCwzMjEwNCwzNDcwMSw2Mzk2NCwyMjQzMiwyNDY4MSwyNDkwMywyNzU3NSwzNTUxOCwzNzUwNCwzODU3NywyMDA1NywyMTUzNSwyODEzOSwzNDA5MywzODUxMiwzODg5OSwzOTE1MCwyNTU1OCwyNzg3NSwzNzAwOSwyMDk1NywyNTAzMywzMzIxMCw0MDQ0MSwyMDM4MSwyMDUwNiwyMDczNiwyMzQ1MiwyNDg0NywyNTA4NywyNTgzNiwyNjg4NSwyNzU4OSwzMDA5NywzMDY5MSwzMjY4MSwzMzM4MCwzNDE5MSwzNDgxMSwzNDkxNSwzNTUxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNTY5NiwzNzI5MSwyMDEwOCwyMDE5NywyMDIzNCw2Mzk2NSw2Mzk2NiwyMjgzOSwyMzAxNiw2Mzk2NywyNDA1MCwyNDM0NywyNDQxMSwyNDYwOSw2Mzk2OCw2Mzk2OSw2Mzk3MCw2Mzk3MSwyOTI0NiwyOTY2OSw2Mzk3MiwzMDA2NCwzMDE1Nyw2Mzk3MywzMTIyNyw2Mzk3NCwzMjc4MCwzMjgxOSwzMjkwMCwzMzUwNSwzMzYxNyw2Mzk3NSw2Mzk3NiwzNjAyOSwzNjAxOSwzNjk5OSw2Mzk3Nyw2Mzk3OCwzOTE1NiwzOTE4MCw2Mzk3OSw2Mzk4MCwyODcyNywzMDQxMCwzMjcxNCwzMjcxNiwzMjc2NCwzNTYxMCwyMDE1NCwyMDE2MSwyMDk5NSwyMTM2MCw2Mzk4MSwyMTY5MywyMjI0MCwyMzAzNSwyMzQ5MywyNDM0MSwyNDUyNSwyODI3MCw2Mzk4Miw2Mzk4MywzMjEwNiwzMzU4OSw2Mzk4NCwzNDQ1MSwzNTQ2OSw2Mzk4NSwzODc2NSwzODc3NSw2Mzk4Niw2Mzk4NywxOTk2OCwyMDMxNCwyMDM1MCwyMjc3NywyNjA4NSwyODMyMiwzNjkyMCwzNzgwOCwzOTM1MywyMDIxOSwyMjc2NCwyMjkyMiwyMzAwMSwyNDY0MSw2Mzk4OCw2Mzk4OSwzMTI1Miw2Mzk5MCwzMzYxNSwzNjAzNSwyMDgzNywyMTMxNixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2Mzk5MSw2Mzk5Miw2Mzk5MywyMDE3MywyMTA5NywyMzM4MSwzMzQ3MSwyMDE4MCwyMTA1MCwyMTY3MiwyMjk4NSwyMzAzOSwyMzM3NiwyMzM4MywyMzM4OCwyNDY3NSwyNDkwNCwyODM2MywyODgyNSwyOTAzOCwyOTU3NCwyOTk0MywzMDEzMywzMDkxMywzMjA0MywzMjc3MywzMzI1OCwzMzU3NiwzNDA3MSwzNDI0OSwzNTU2NiwzNjAzOSwzODYwNCwyMDMxNiwyMTI0MiwyMjIwNCwyNjAyNywyNjE1MiwyODc5NiwyODg1NiwyOTIzNywzMjE4OSwzMzQyMSwzNzE5NiwzODU5Miw0MDMwNiwyMzQwOSwyNjg1NSwyNzU0NCwyODUzOCwzMDQzMCwyMzY5NywyNjI4MywyODUwNywzMTY2OCwzMTc4NiwzNDg3MCwzODYyMCwxOTk3NiwyMDE4MywyMTI4MCwyMjU4MCwyMjcxNSwyMjc2NywyMjg5MiwyMzU1OSwyNDExNSwyNDE5NiwyNDM3MywyNTQ4NCwyNjI5MCwyNjQ1NCwyNzE2NywyNzI5OSwyNzQwNCwyODQ3OSwyOTI1NCw2Mzk5NCwyOTUyMCwyOTgzNSwzMTQ1NiwzMTkxMSwzMzE0NCwzMzI0NywzMzI1NSwzMzY3NCwzMzkwMCwzNDA4MywzNDE5NiwzNDI1NSwzNTAzNywzNjExNSwzNzI5MiwzODI2MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzODU1NiwyMDg3NywyMTcwNSwyMjMxMiwyMzQ3MiwyNTE2NSwyNjQ0OCwyNjY4NSwyNjc3MSwyODIyMSwyODM3MSwyODc5NywzMjI4OSwzNTAwOSwzNjAwMSwzNjYxNyw0MDc3OSw0MDc4MiwyOTIyOSwzMTYzMSwzNTUzMywzNzY1OCwyMDI5NSwyMDMwMiwyMDc4NiwyMTYzMiwyMjk5MiwyNDIxMywyNTI2OSwyNjQ4NSwyNjk5MCwyNzE1OSwyNzgyMiwyODE4NiwyOTQwMSwyOTQ4MiwzMDE0MSwzMTY3MiwzMjA1MywzMzUxMSwzMzc4NSwzMzg3OSwzNDI5NSwzNTQxOSwzNjAxNSwzNjQ4NywzNjg4OSwzNzA0OCwzODYwNiw0MDc5OSwyMTIxOSwyMTUxNCwyMzI2NSwyMzQ5MCwyNTY4OCwyNTk3MywyODQwNCwyOTM4MCw2Mzk5NSwzMDM0MCwzMTMwOSwzMTUxNSwzMTgyMSwzMjMxOCwzMjczNSwzMzY1OSwzNTYyNywzNjA0MiwzNjE5NiwzNjMyMSwzNjQ0NywzNjg0MiwzNjg1NywzNjk2OSwzNzg0MSwyMDI5MSwyMDM0NiwyMDY1OSwyMDg0MCwyMDg1NiwyMTA2OSwyMTA5OCwyMjYyNSwyMjY1MiwyMjg4MCwyMzU2MCwyMzYzNywyNDI4MywyNDczMSwyNTEzNiwyNjY0MywyNzU4MywyNzY1NiwyODU5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyOTAwNiwyOTcyOCwzMDAwMCwzMDAwOCwzMDAzMywzMDMyMiwzMTU2NCwzMTYyNywzMTY2MSwzMTY4NiwzMjM5OSwzNTQzOCwzNjY3MCwzNjY4MSwzNzQzOSwzNzUyMywzNzY2NiwzNzkzMSwzODY1MSwzOTAwMiwzOTAxOSwzOTE5OCwyMDk5OSwyNTEzMCwyNTI0MCwyNzk5MywzMDMwOCwzMTQzNCwzMTY4MCwzMjExOCwyMTM0NCwyMzc0MiwyNDIxNSwyODQ3MiwyODg1NywzMTg5NiwzODY3MywzOTgyMiw0MDY3MCwyNTUwOSwyNTcyMiwzNDY3OCwxOTk2OSwyMDExNywyMDE0MSwyMDU3MiwyMDU5NywyMTU3NiwyMjk3OSwyMzQ1MCwyNDEyOCwyNDIzNywyNDMxMSwyNDQ0OSwyNDc3MywyNTQwMiwyNTkxOSwyNTk3MiwyNjA2MCwyNjIzMCwyNjIzMiwyNjYyMiwyNjk4NCwyNzI3MywyNzQ5MSwyNzcxMiwyODA5NiwyODEzNiwyODE5MSwyODI1NCwyODcwMiwyODgzMywyOTU4MiwyOTY5MywzMDAxMCwzMDU1NSwzMDg1NSwzMTExOCwzMTI0MywzMTM1NywzMTkzNCwzMjE0MiwzMzM1MSwzNTMzMCwzNTU2MiwzNTk5OCwzNzE2NSwzNzE5NCwzNzMzNiwzNzQ3OCwzNzU4MCwzNzY2NCwzODY2MiwzODc0MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzODc0OCwzODkxNCw0MDcxOCwyMTA0NiwyMTEzNywyMTg4NCwyMjU2NCwyNDA5MywyNDM1MSwyNDcxNiwyNTU1MiwyNjc5OSwyODYzOSwzMTA4NSwzMTUzMiwzMzIyOSwzNDIzNCwzNTA2OSwzNTU3NiwzNjQyMCwzNzI2MSwzODUwMCwzODU1NSwzODcxNywzODk4OCw0MDc3OCwyMDQzMCwyMDgwNiwyMDkzOSwyMTE2MSwyMjA2NiwyNDM0MCwyNDQyNywyNTUxNCwyNTgwNSwyNjA4OSwyNjE3NywyNjM2MiwyNjM2MSwyNjM5NywyNjc4MSwyNjgzOSwyNzEzMywyODQzNywyODUyNiwyOTAzMSwyOTE1NywyOTIyNiwyOTg2NiwzMDUyMiwzMTA2MiwzMTA2NiwzMTE5OSwzMTI2NCwzMTM4MSwzMTg5NSwzMTk2NywzMjA2OCwzMjM2OCwzMjkwMywzNDI5OSwzNDQ2OCwzNTQxMiwzNTUxOSwzNjI0OSwzNjQ4MSwzNjg5NiwzNjk3MywzNzM0NywzODQ1OSwzODYxMyw0MDE2NSwyNjA2MywzMTc1MSwzNjI3NSwzNzgyNywyMzM4NCwyMzU2MiwyMTMzMCwyNTMwNSwyOTQ2OSwyMDUxOSwyMzQ0NywyNDQ3OCwyNDc1MiwyNDkzOSwyNjgzNywyODEyMSwyOTc0MiwzMTI3OCwzMjA2NiwzMjE1NiwzMjMwNSwzMzEzMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjM5NCwzNjQwNSwzNzc1OCwzNzkxMiwyMDMwNCwyMjM1MiwyNDAzOCwyNDIzMSwyNTM4NywzMjYxOCwyMDAyNywyMDMwMywyMDM2NywyMDU3MCwyMzAwNSwzMjk2NCwyMTYxMCwyMTYwOCwyMjAxNCwyMjg2MywyMzQ0OSwyNDAzMCwyNDI4MiwyNjIwNSwyNjQxNywyNjYwOSwyNjY2NiwyNzg4MCwyNzk1NCwyODIzNCwyODU1NywyODg1NSwyOTY2NCwzMDA4NywzMTgyMCwzMjAwMiwzMjA0NCwzMjE2MiwzMzMxMSwzNDUyMywzNTM4NywzNTQ2MSwzNjIwOCwzNjQ5MCwzNjY1OSwzNjkxMywzNzE5OCwzNzIwMiwzNzk1NiwzOTM3NiwzMTQ4MSwzMTkwOSwyMDQyNiwyMDczNywyMDkzNCwyMjQ3MiwyMzUzNSwyMzgwMywyNjIwMSwyNzE5NywyNzk5NCwyODMxMCwyODY1MiwyODk0MCwzMDA2MywzMTQ1OSwzNDg1MCwzNjg5NywzNjk4MSwzODYwMywzOTQyMywzMzUzNywyMDAxMywyMDIxMCwzNDg4NiwzNzMyNSwyMTM3MywyNzM1NSwyNjk4NywyNzcxMywzMzkxNCwyMjY4NiwyNDk3NCwyNjM2NiwyNTMyNywyODg5MywyOTk2OSwzMDE1MSwzMjMzOCwzMzk3NiwzNTY1NywzNjEwNCwyMDA0MywyMTQ4MixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTY3NSwyMjMyMCwyMjMzNiwyNDUzNSwyNTM0NSwyNTM1MSwyNTcxMSwyNTkwMywyNjA4OCwyNjIzNCwyNjUyNSwyNjU0NywyNzQ5MCwyNzc0NCwyNzgwMiwyODQ2MCwzMDY5MywzMDc1NywzMTA0OSwzMTA2MywzMjAyNSwzMjkzMCwzMzAyNiwzMzI2NywzMzQzNywzMzQ2MywzNDU4NCwzNTQ2OCw2Mzk5NiwzNjEwMCwzNjI4NiwzNjk3OCwzMDQ1MiwzMTI1NywzMTI4NywzMjM0MCwzMjg4NywyMTc2NywyMTk3MiwyMjY0NSwyNTM5MSwyNTYzNCwyNjE4NSwyNjE4NywyNjczMywyNzAzNSwyNzUyNCwyNzk0MSwyODMzNywyOTY0NSwyOTgwMCwyOTg1NywzMDA0MywzMDEzNywzMDQzMywzMDQ5NCwzMDYwMywzMTIwNiwzMjI2NSwzMjI4NSwzMzI3NSwzNDA5NSwzNDk2NywzNTM4NiwzNjA0OSwzNjU4NywzNjc4NCwzNjkxNCwzNzgwNSwzODQ5OSwzODUxNSwzODY2MywyMDM1NiwyMTQ4OSwyMzAxOCwyMzI0MSwyNDA4OSwyNjcwMiwyOTg5NCwzMDE0MiwzMTIwOSwzMTM3OCwzMzE4NywzNDU0MSwzNjA3NCwzNjMwMCwzNjg0NSwyNjAxNSwyNjM4OSw2Mzk5NywyMjUxOSwyODUwMywzMjIyMSwzNjY1NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNzg3OCwzODU5OCwyNDUwMSwyNTA3NCwyODU0OCwxOTk4OCwyMDM3NiwyMDUxMSwyMTQ0OSwyMTk4MywyMzkxOSwyNDA0NiwyNzQyNSwyNzQ5MiwzMDkyMywzMTY0Miw2Mzk5OCwzNjQyNSwzNjU1NCwzNjk3NCwyNTQxNywyNTY2MiwzMDUyOCwzMTM2NCwzNzY3OSwzODAxNSw0MDgxMCwyNTc3NiwyODU5MSwyOTE1OCwyOTg2NCwyOTkxNCwzMTQyOCwzMTc2MiwzMjM4NiwzMTkyMiwzMjQwOCwzNTczOCwzNjEwNiwzODAxMywzOTE4NCwzOTI0NCwyMTA0OSwyMzUxOSwyNTgzMCwyNjQxMywzMjA0NiwyMDcxNywyMTQ0MywyMjY0OSwyNDkyMCwyNDkyMSwyNTA4MiwyNjAyOCwzMTQ0OSwzNTczMCwzNTczNCwyMDQ4OSwyMDUxMywyMTEwOSwyMTgwOSwyMzEwMCwyNDI4OCwyNDQzMiwyNDg4NCwyNTk1MCwyNjEyNCwyNjE2NiwyNjI3NCwyNzA4NSwyODM1NiwyODQ2NiwyOTQ2MiwzMDI0MSwzMTM3OSwzMzA4MSwzMzM2OSwzMzc1MCwzMzk4MCwyMDY2MSwyMjUxMiwyMzQ4OCwyMzUyOCwyNDQyNSwyNTUwNSwzMDc1OCwzMjE4MSwzMzc1NiwzNDA4MSwzNzMxOSwzNzM2NSwyMDg3NCwyNjYxMywzMTU3NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjAxMiwyMDkzMiwyMjk3MSwyNDc2NSwzNDM4OSwyMDUwOCw2Mzk5OSwyMTA3NiwyMzYxMCwyNDk1NywyNTExNCwyNTI5OSwyNTg0MiwyNjAyMSwyODM2NCwzMDI0MCwzMzAzNCwzNjQ0OCwzODQ5NSwzODU4NywyMDE5MSwyMTMxNSwyMTkxMiwyMjgyNSwyNDAyOSwyNTc5NywyNzg0OSwyODE1NCwyOTU4OCwzMTM1OSwzMzMwNywzNDIxNCwzNjA2OCwzNjM2OCwzNjk4MywzNzM1MSwzODM2OSwzODQzMywzODg1NCwyMDk4NCwyMTc0NiwyMTg5NCwyNDUwNSwyNTc2NCwyODU1MiwzMjE4MCwzNjYzOSwzNjY4NSwzNzk0MSwyMDY4MSwyMzU3NCwyNzgzOCwyODE1NSwyOTk3OSwzMDY1MSwzMTgwNSwzMTg0NCwzNTQ0OSwzNTUyMiwyMjU1OCwyMjk3NCwyNDA4NiwyNTQ2MywyOTI2NiwzMDA5MCwzMDU3MSwzNTU0OCwzNjAyOCwzNjYyNiwyNDMwNywyNjIyOCwyODE1MiwzMjg5MywzMzcyOSwzNTUzMSwzODczNywzOTg5NCw2NDAwMCwyMTA1OSwyNjM2NywyODA1MywyODM5OSwzMjIyNCwzNTU1OCwzNjkxMCwzNjk1OCwzOTYzNiwyMTAyMSwyMTExOSwyMTczNiwyNDk4MCwyNTIyMCwyNTMwNywyNjc4NixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNjg5OCwyNjk3MCwyNzE4OSwyODgxOCwyODk2NiwzMDgxMywzMDk3NywzMDk5MCwzMTE4NiwzMTI0NSwzMjkxOCwzMzQwMCwzMzQ5MywzMzYwOSwzNDEyMSwzNTk3MCwzNjIyOSwzNzIxOCwzNzI1OSwzNzI5NCwyMDQxOSwyMjIyNSwyOTE2NSwzMDY3OSwzNDU2MCwzNTMyMCwyMzU0NCwyNDUzNCwyNjQ0OSwzNzAzMiwyMTQ3NCwyMjYxOCwyMzU0MSwyNDc0MCwyNDk2MSwyNTY5NiwzMjMxNywzMjg4MCwzNDA4NSwzNzUwNywyNTc3NCwyMDY1MiwyMzgyOCwyNjM2OCwyMjY4NCwyNTI3NywyNTUxMiwyNjg5NCwyNzAwMCwyNzE2NiwyODI2NywzMDM5NCwzMTE3OSwzMzQ2NywzMzgzMywzNTUzNSwzNjI2NCwzNjg2MSwzNzEzOCwzNzE5NSwzNzI3NiwzNzY0OCwzNzY1NiwzNzc4NiwzODYxOSwzOTQ3OCwzOTk0OSwxOTk4NSwzMDA0NCwzMTA2OSwzMTQ4MiwzMTU2OSwzMTY4OSwzMjMwMiwzMzk4OCwzNjQ0MSwzNjQ2OCwzNjYwMCwzNjg4MCwyNjE0OSwyNjk0MywyOTc2MywyMDk4NiwyNjQxNCw0MDY2OCwyMDgwNSwyNDU0NCwyNzc5OCwzNDgwMiwzNDkwOSwzNDkzNSwyNDc1NiwzMzIwNSwzMzc5NSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNjEwMSwyMTQ2MiwyMTU2MSwyMjA2OCwyMzA5NCwyMzYwMSwyODgxMCwzMjczNiwzMjg1OCwzMzAzMCwzMzI2MSwzNjI1OSwzNzI1NywzOTUxOSw0MDQzNCwyMDU5NiwyMDE2NCwyMTQwOCwyNDgyNywyODIwNCwyMzY1MiwyMDM2MCwyMDUxNiwyMTk4OCwyMzc2OSwyNDE1OSwyNDY3NywyNjc3MiwyNzgzNSwyODEwMCwyOTExOCwzMDE2NCwzMDE5NiwzMDMwNSwzMTI1OCwzMTMwNSwzMjE5OSwzMjI1MSwzMjYyMiwzMzI2OCwzNDQ3MywzNjYzNiwzODYwMSwzOTM0Nyw0MDc4NiwyMTA2MywyMTE4OSwzOTE0OSwzNTI0MiwxOTk3MSwyNjU3OCwyODQyMiwyMDQwNSwyMzUyMiwyNjUxNywyNzc4NCwyODAyNCwyOTcyMywzMDc1OSwzNzM0MSwzNzc1NiwzNDc1NiwzMTIwNCwzMTI4MSwyNDU1NSwyMDE4MiwyMTY2OCwyMTgyMiwyMjcwMiwyMjk0OSwyNDgxNiwyNTE3MSwyNTMwMiwyNjQyMiwyNjk2NSwzMzMzMywzODQ2NCwzOTM0NSwzOTM4OSwyMDUyNCwyMTMzMSwyMTgyOCwyMjM5Niw2NDAwMSwyNTE3Niw2NDAwMiwyNTgyNiwyNjIxOSwyNjU4OSwyODYwOSwyODY1NSwyOTczMCwyOTc1MiwzNTM1MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzNzk0NCwyMTU4NSwyMjAyMiwyMjM3NCwyNDM5MiwyNDk4NiwyNzQ3MCwyODc2MCwyODg0NSwzMjE4NywzNTQ3NywyMjg5MCwzMzA2NywyNTUwNiwzMDQ3MiwzMjgyOSwzNjAxMCwyMjYxMiwyNTY0NSwyNzA2NywyMzQ0NSwyNDA4MSwyODI3MSw2NDAwMywzNDE1MywyMDgxMiwyMTQ4OCwyMjgyNiwyNDYwOCwyNDkwNywyNzUyNiwyNzc2MCwyNzg4OCwzMTUxOCwzMjk3NCwzMzQ5MiwzNjI5NCwzNzA0MCwzOTA4OSw2NDAwNCwyNTc5OSwyODU4MCwyNTc0NSwyNTg2MCwyMDgxNCwyMTUyMCwyMjMwMywzNTM0MiwyNDkyNywyNjc0Miw2NDAwNSwzMDE3MSwzMTU3MCwzMjExMywzNjg5MCwyMjUzNCwyNzA4NCwzMzE1MSwzNTExNCwzNjg2NCwzODk2OSwyMDYwMCwyMjg3MSwyMjk1NiwyNTIzNywzNjg3OSwzOTcyMiwyNDkyNSwyOTMwNSwzODM1OCwyMjM2OSwyMzExMCwyNDA1MiwyNTIyNiwyNTc3MywyNTg1MCwyNjQ4NywyNzg3NCwyNzk2NiwyOTIyOCwyOTc1MCwzMDc3MiwzMjYzMSwzMzQ1MywzNjMxNSwzODkzNSwyMTAyOCwyMjMzOCwyNjQ5NSwyOTI1NiwyOTkyMywzNjAwOSwzNjc3NCwzNzM5MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzODQ0MiwyMDg0MywyMTQ4NSwyNTQyMCwyMDMyOSwyMTc2NCwyNDcyNiwyNTk0MywyNzgwMywyODAzMSwyOTI2MCwyOTQzNywzMTI1NSwzNTIwNywzNTk5NywyNDQyOSwyODU1OCwyODkyMSwzMzE5MiwyNDg0NiwyMDQxNSwyMDU1OSwyNTE1MywyOTI1NSwzMTY4NywzMjIzMiwzMjc0NSwzNjk0MSwzODgyOSwzOTQ0OSwzNjAyMiwyMjM3OCwyNDE3OSwyNjU0NCwzMzgwNSwzNTQxMywyMTUzNiwyMzMxOCwyNDE2MywyNDI5MCwyNDMzMCwyNTk4NywzMjk1NCwzNDEwOSwzODI4MSwzODQ5MSwyMDI5NiwyMTI1MywyMTI2MSwyMTI2MywyMTYzOCwyMTc1NCwyMjI3NSwyNDA2NywyNDU5OCwyNTI0MywyNTI2NSwyNTQyOSw2NDAwNiwyNzg3MywyODAwNiwzMDEyOSwzMDc3MCwzMjk5MCwzMzA3MSwzMzUwMiwzMzg4OSwzMzk3MCwzNDk1NywzNTA5MCwzNjg3NSwzNzYxMCwzOTE2NSwzOTgyNSwyNDEzMywyNjI5MiwyNjMzMywyODY4OSwyOTE5MCw2NDAwNywyMDQ2OSwyMTExNywyNDQyNiwyNDkxNSwyNjQ1MSwyNzE2MSwyODQxOCwyOTkyMiwzMTA4MCwzNDkyMCwzNTk2MSwzOTExMSwzOTEwOCwzOTQ5MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMTY5NywzMTI2MywyNjk2MywzNTU3NSwzNTkxNCwzOTA4MCwzOTM0MiwyNDQ0NCwyNTI1OSwzMDEzMCwzMDM4MiwzNDk4NywzNjk5MSwzODQ2NiwyMTMwNSwyNDM4MCwyNDUxNywyNzg1MiwyOTY0NCwzMDA1MCwzMDA5MSwzMTU1OCwzMzUzNCwzOTMyNSwyMDA0NywzNjkyNCwxOTk3OSwyMDMwOSwyMTQxNCwyMjc5OSwyNDI2NCwyNjE2MCwyNzgyNywyOTc4MSwzMzY1NSwzNDY2MiwzNjAzMiwzNjk0NCwzODY4NiwzOTk1NywyMjczNywyMzQxNiwzNDM4NCwzNTYwNCw0MDM3MiwyMzUwNiwyNDY4MCwyNDcxNywyNjA5NywyNzczNSwyODQ1MCwyODU3OSwyODY5OCwzMjU5NywzMjc1MiwzODI4OSwzODI5MCwzODQ4MCwzODg2NywyMTEwNiwzNjY3NiwyMDk4OSwyMTU0NywyMTY4OCwyMTg1OSwyMTg5OCwyNzMyMywyODA4NSwzMjIxNiwzMzM4MiwzNzUzMiwzODUxOSw0MDU2OSwyMTUxMiwyMTcwNCwzMDQxOCwzNDUzMiwzODMwOCwzODM1NiwzODQ5MiwyMDEzMCwyMDIzMywyMzAyMiwyMzI3MCwyNDA1NSwyNDY1OCwyNTIzOSwyNjQ3NywyNjY4OSwyNzc4MiwyODIwNywzMjU2OCwzMjkyMywzMzMyMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NDAwOCw2NDAwOSwzODkxNywyMDEzMywyMDU2NSwyMTY4MywyMjQxOSwyMjg3NCwyMzQwMSwyMzQ3NSwyNTAzMiwyNjk5OSwyODAyMywyODcwNywzNDgwOSwzNTI5OSwzNTQ0MiwzNTU1OSwzNjk5NCwzOTQwNSwzOTYwOCwyMTE4MiwyNjY4MCwyMDUwMiwyNDE4NCwyNjQ0NywzMzYwNywzNDg5MiwyMDEzOSwyMTUyMSwyMjE5MCwyOTY3MCwzNzE0MSwzODkxMSwzOTE3NywzOTI1NSwzOTMyMSwyMjA5OSwyMjY4NywzNDM5NSwzNTM3NywyNTAxMCwyNzM4MiwyOTU2MywzNjU2MiwyNzQ2MywzODU3MCwzOTUxMSwyMjg2OSwyOTE4NCwzNjIwMywzODc2MSwyMDQzNiwyMzc5NiwyNDM1OCwyNTA4MCwyNjIwMywyNzg4MywyODg0MywyOTU3MiwyOTYyNSwyOTY5NCwzMDUwNSwzMDU0MSwzMjA2NywzMjA5OCwzMjI5MSwzMzMzNSwzNDg5OCw2NDAxMCwzNjA2NiwzNzQ0OSwzOTAyMywyMzM3NywzMTM0OCwzNDg4MCwzODkxMywyMzI0NCwyMDQ0OCwyMTMzMiwyMjg0NiwyMzgwNSwyNTQwNiwyODAyNSwyOTQzMywzMzAyOSwzMzAzMSwzMzY5OCwzNzU4MywzODk2MCwyMDEzNiwyMDgwNCwyMTAwOSwyMjQxMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNDQxOCwyNzg0MiwyODM2NiwyODY3NywyODc1MiwyODg0NywyOTA3NCwyOTY3MywyOTgwMSwzMzYxMCwzNDcyMiwzNDkxMywzNjg3MiwzNzAyNiwzNzc5NSwzOTMzNiwyMDg0NiwyNDQwNywyNDgwMCwyNDkzNSwyNjI5MSwzNDEzNywzNjQyNiwzNzI5NSwzODc5NSwyMDA0NiwyMDExNCwyMTYyOCwyMjc0MSwyMjc3OCwyMjkwOSwyMzczMywyNDM1OSwyNTE0MiwyNTE2MCwyNjEyMiwyNjIxNSwyNzYyNywyODAwOSwyODExMSwyODI0NiwyODQwOCwyODU2NCwyODY0MCwyODY0OSwyODc2NSwyOTM5MiwyOTczMywyOTc4NiwyOTkyMCwzMDM1NSwzMTA2OCwzMTk0NiwzMjI4NiwzMjk5MywzMzQ0NiwzMzg5OSwzMzk4MywzNDM4MiwzNDM5OSwzNDY3NiwzNTcwMywzNTk0NiwzNzgwNCwzODkxMiwzOTAxMywyNDc4NSwyNTExMCwzNzIzOSwyMzEzMCwyNjEyNywyODE1MSwyODIyMiwyOTc1OSwzOTc0NiwyNDU3MywyNDc5NCwzMTUwMywyMTcwMCwyNDM0NCwyNzc0MiwyNzg1OSwyNzk0NiwyODg4OCwzMjAwNSwzNDQyNSwzNTM0MCw0MDI1MSwyMTI3MCwyMTY0NCwyMzMwMSwyNzE5NCwyODc3OSwzMDA2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwzMTExNywzMTE2NiwzMzQ1NywzMzc3NSwzNTQ0MSwzNTY0OSwzNjAwOCwzODc3Miw2NDAxMSwyNTg0NCwyNTg5OSwzMDkwNiwzMDkwNywzMTMzOSwyMDAyNCwyMTkxNCwyMjg2NCwyMzQ2MiwyNDE4NywyNDczOSwyNTU2MywyNzQ4OSwyNjIxMywyNjcwNywyODE4NSwyOTAyOSwyOTg3MiwzMjAwOCwzNjk5NiwzOTUyOSwzOTk3MywyNzk2MywyODM2OSwyOTUwMiwzNTkwNSwzODM0NiwyMDk3NiwyNDE0MCwyNDQ4OCwyNDY1MywyNDgyMiwyNDg4MCwyNDkwOCwyNjE3OSwyNjE4MCwyNzA0NSwyNzg0MSwyODI1NSwyODM2MSwyODUxNCwyOTAwNCwyOTg1MiwzMDM0MywzMTY4MSwzMTc4MywzMzYxOCwzNDY0NywzNjk0NSwzODU0MSw0MDY0MywyMTI5NSwyMjIzOCwyNDMxNSwyNDQ1OCwyNDY3NCwyNDcyNCwyNTA3OSwyNjIxNCwyNjM3MSwyNzI5MiwyODE0MiwyODU5MCwyODc4NCwyOTU0NiwzMjM2MiwzMzIxNCwzMzU4OCwzNDUxNiwzNTQ5NiwzNjAzNiwyMTEyMywyOTU1NCwyMzQ0NiwyNzI0MywzNzg5MiwyMTc0MiwyMjE1MCwyMzM4OSwyNTkyOCwyNTk4OSwyNjMxMywyNjc4MywyODA0NSwyODEwMixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyOTI0MywzMjk0OCwzNzIzNywzOTUwMSwyMDM5OSwyMDUwNSwyMTQwMiwyMTUxOCwyMTU2NCwyMTg5NywyMTk1NywyNDEyNywyNDQ2MCwyNjQyOSwyOTAzMCwyOTY2MSwzNjg2OSwyMTIxMSwyMTIzNSwyMjYyOCwyMjczNCwyODkzMiwyOTA3MSwyOTE3OSwzNDIyNCwzNTM0NywyNjI0OCwzNDIxNiwyMTkyNywyNjI0NCwyOTAwMiwzMzg0MSwyMTMyMSwyMTkxMywyNzU4NSwyNDQwOSwyNDUwOSwyNTU4MiwyNjI0OSwyODk5OSwzNTU2OSwzNjYzNyw0MDYzOCwyMDI0MSwyNTY1OCwyODg3NSwzMDA1NCwzNDQwNywyNDY3NiwzNTY2Miw0MDQ0MCwyMDgwNywyMDk4MiwyMTI1NiwyNzk1OCwzMzAxNiw0MDY1NywyNjEzMywyNzQyNywyODgyNCwzMDE2NSwyMTUwNywyMzY3MywzMjAwNywzNTM1MCwyNzQyNCwyNzQ1MywyNzQ2MiwyMTU2MCwyNDY4OCwyNzk2NSwzMjcyNSwzMzI4OCwyMDY5NCwyMDk1OCwyMTkxNiwyMjEyMywyMjIyMSwyMzAyMCwyMzMwNSwyNDA3NiwyNDk4NSwyNDk4NCwyNTEzNywyNjIwNiwyNjM0MiwyOTA4MSwyOTExMywyOTExNCwyOTM1MSwzMTE0MywzMTIzMiwzMjY5MCwzNTQ0MCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJnYjE4MDMwXCI6WzE5OTcwLDE5OTcyLDE5OTczLDE5OTc0LDE5OTgzLDE5OTg2LDE5OTkxLDE5OTk5LDIwMDAwLDIwMDAxLDIwMDAzLDIwMDA2LDIwMDA5LDIwMDE0LDIwMDE1LDIwMDE3LDIwMDE5LDIwMDIxLDIwMDIzLDIwMDI4LDIwMDMyLDIwMDMzLDIwMDM0LDIwMDM2LDIwMDM4LDIwMDQyLDIwMDQ5LDIwMDUzLDIwMDU1LDIwMDU4LDIwMDU5LDIwMDY2LDIwMDY3LDIwMDY4LDIwMDY5LDIwMDcxLDIwMDcyLDIwMDc0LDIwMDc1LDIwMDc2LDIwMDc3LDIwMDc4LDIwMDc5LDIwMDgyLDIwMDg0LDIwMDg1LDIwMDg2LDIwMDg3LDIwMDg4LDIwMDg5LDIwMDkwLDIwMDkxLDIwMDkyLDIwMDkzLDIwMDk1LDIwMDk2LDIwMDk3LDIwMDk4LDIwMDk5LDIwMTAwLDIwMTAxLDIwMTAzLDIwMTA2LDIwMTEyLDIwMTE4LDIwMTE5LDIwMTIxLDIwMTI0LDIwMTI1LDIwMTI2LDIwMTMxLDIwMTM4LDIwMTQzLDIwMTQ0LDIwMTQ1LDIwMTQ4LDIwMTUwLDIwMTUxLDIwMTUyLDIwMTUzLDIwMTU2LDIwMTU3LDIwMTU4LDIwMTY4LDIwMTcyLDIwMTc1LDIwMTc2LDIwMTc4LDIwMTg2LDIwMTg3LDIwMTg4LDIwMTkyLDIwMTk0LDIwMTk4LDIwMTk5LDIwMjAxLDIwMjA1LDIwMjA2LDIwMjA3LDIwMjA5LDIwMjEyLDIwMjE2LDIwMjE3LDIwMjE4LDIwMjIwLDIwMjIyLDIwMjI0LDIwMjI2LDIwMjI3LDIwMjI4LDIwMjI5LDIwMjMwLDIwMjMxLDIwMjMyLDIwMjM1LDIwMjM2LDIwMjQyLDIwMjQzLDIwMjQ0LDIwMjQ1LDIwMjQ2LDIwMjUyLDIwMjUzLDIwMjU3LDIwMjU5LDIwMjY0LDIwMjY1LDIwMjY4LDIwMjY5LDIwMjcwLDIwMjczLDIwMjc1LDIwMjc3LDIwMjc5LDIwMjgxLDIwMjgzLDIwMjg2LDIwMjg3LDIwMjg4LDIwMjg5LDIwMjkwLDIwMjkyLDIwMjkzLDIwMjk1LDIwMjk2LDIwMjk3LDIwMjk4LDIwMjk5LDIwMzAwLDIwMzA2LDIwMzA4LDIwMzEwLDIwMzIxLDIwMzIyLDIwMzI2LDIwMzI4LDIwMzMwLDIwMzMxLDIwMzMzLDIwMzM0LDIwMzM3LDIwMzM4LDIwMzQxLDIwMzQzLDIwMzQ0LDIwMzQ1LDIwMzQ2LDIwMzQ5LDIwMzUyLDIwMzUzLDIwMzU0LDIwMzU3LDIwMzU4LDIwMzU5LDIwMzYyLDIwMzY0LDIwMzY2LDIwMzY4LDIwMzcwLDIwMzcxLDIwMzczLDIwMzc0LDIwMzc2LDIwMzc3LDIwMzc4LDIwMzgwLDIwMzgyLDIwMzgzLDIwMzg1LDIwMzg2LDIwMzg4LDIwMzk1LDIwMzk3LDIwNDAwLDIwNDAxLDIwNDAyLDIwNDAzLDIwNDA0LDIwNDA2LDIwNDA3LDIwNDA4LDIwNDA5LDIwNDEwLDIwNDExLDIwNDEyLDIwNDEzLDIwNDE0LDIwNDE2LDIwNDE3LDIwNDE4LDIwNDIyLDIwNDIzLDIwNDI0LDIwNDI1LDIwNDI3LDIwNDI4LDIwNDI5LDIwNDM0LDIwNDM1LDIwNDM2LDIwNDM3LDIwNDM4LDIwNDQxLDIwNDQzLDIwNDQ4LDIwNDUwLDIwNDUyLDIwNDUzLDIwNDU1LDIwNDU5LDIwNDYwLDIwNDY0LDIwNDY2LDIwNDY4LDIwNDY5LDIwNDcwLDIwNDcxLDIwNDczLDIwNDc1LDIwNDc2LDIwNDc3LDIwNDc5LDIwNDgwLDIwNDgxLDIwNDgyLDIwNDgzLDIwNDg0LDIwNDg1LDIwNDg2LDIwNDg3LDIwNDg4LDIwNDg5LDIwNDkwLDIwNDkxLDIwNDk0LDIwNDk2LDIwNDk3LDIwNDk5LDIwNTAxLDIwNTAyLDIwNTAzLDIwNTA3LDIwNTA5LDIwNTEwLDIwNTEyLDIwNTE0LDIwNTE1LDIwNTE2LDIwNTE5LDIwNTIzLDIwNTI3LDIwNTI4LDIwNTI5LDIwNTMwLDIwNTMxLDIwNTMyLDIwNTMzLDIwNTM0LDIwNTM1LDIwNTM2LDIwNTM3LDIwNTM5LDIwNTQxLDIwNTQzLDIwNTQ0LDIwNTQ1LDIwNTQ2LDIwNTQ4LDIwNTQ5LDIwNTUwLDIwNTUzLDIwNTU0LDIwNTU1LDIwNTU3LDIwNTYwLDIwNTYxLDIwNTYyLDIwNTYzLDIwNTY0LDIwNTY2LDIwNTY3LDIwNTY4LDIwNTY5LDIwNTcxLDIwNTczLDIwNTc0LDIwNTc1LDIwNTc2LDIwNTc3LDIwNTc4LDIwNTc5LDIwNTgwLDIwNTgyLDIwNTgzLDIwNTg0LDIwNTg1LDIwNTg2LDIwNTg3LDIwNTg5LDIwNTkwLDIwNTkxLDIwNTkyLDIwNTkzLDIwNTk0LDIwNTk1LDIwNTk2LDIwNTk3LDIwNjAwLDIwNjAxLDIwNjAyLDIwNjA0LDIwNjA1LDIwNjA5LDIwNjEwLDIwNjExLDIwNjEyLDIwNjE0LDIwNjE1LDIwNjE3LDIwNjE4LDIwNjE5LDIwNjIwLDIwNjIyLDIwNjIzLDIwNjI0LDIwNjI1LDIwNjI2LDIwNjI3LDIwNjI4LDIwNjI5LDIwNjMwLDIwNjMxLDIwNjMyLDIwNjMzLDIwNjM0LDIwNjM1LDIwNjM2LDIwNjM3LDIwNjM4LDIwNjM5LDIwNjQwLDIwNjQxLDIwNjQyLDIwNjQ0LDIwNjQ2LDIwNjUwLDIwNjUxLDIwNjUzLDIwNjU0LDIwNjU1LDIwNjU2LDIwNjU3LDIwNjU5LDIwNjYwLDIwNjYxLDIwNjYyLDIwNjYzLDIwNjY0LDIwNjY1LDIwNjY4LDIwNjY5LDIwNjcwLDIwNjcxLDIwNjcyLDIwNjczLDIwNjc0LDIwNjc1LDIwNjc2LDIwNjc3LDIwNjc4LDIwNjc5LDIwNjgwLDIwNjgxLDIwNjgyLDIwNjgzLDIwNjg0LDIwNjg1LDIwNjg2LDIwNjg4LDIwNjg5LDIwNjkwLDIwNjkxLDIwNjkyLDIwNjkzLDIwNjk1LDIwNjk2LDIwNjk3LDIwNjk5LDIwNzAwLDIwNzAxLDIwNzAyLDIwNzAzLDIwNzA0LDIwNzA1LDIwNzA2LDIwNzA3LDIwNzA4LDIwNzA5LDIwNzEyLDIwNzEzLDIwNzE0LDIwNzE1LDIwNzE5LDIwNzIwLDIwNzIxLDIwNzIyLDIwNzI0LDIwNzI2LDIwNzI3LDIwNzI4LDIwNzI5LDIwNzMwLDIwNzMyLDIwNzMzLDIwNzM0LDIwNzM1LDIwNzM2LDIwNzM3LDIwNzM4LDIwNzM5LDIwNzQwLDIwNzQxLDIwNzQ0LDIwNzQ1LDIwNzQ2LDIwNzQ4LDIwNzQ5LDIwNzUwLDIwNzUxLDIwNzUyLDIwNzUzLDIwNzU1LDIwNzU2LDIwNzU3LDIwNzU4LDIwNzU5LDIwNzYwLDIwNzYxLDIwNzYyLDIwNzYzLDIwNzY0LDIwNzY1LDIwNzY2LDIwNzY3LDIwNzY4LDIwNzcwLDIwNzcxLDIwNzcyLDIwNzczLDIwNzc0LDIwNzc1LDIwNzc2LDIwNzc3LDIwNzc4LDIwNzc5LDIwNzgwLDIwNzgxLDIwNzgyLDIwNzgzLDIwNzg0LDIwNzg1LDIwNzg2LDIwNzg3LDIwNzg4LDIwNzg5LDIwNzkwLDIwNzkxLDIwNzkyLDIwNzkzLDIwNzk0LDIwNzk1LDIwNzk2LDIwNzk3LDIwNzk4LDIwODAyLDIwODA3LDIwODEwLDIwODEyLDIwODE0LDIwODE1LDIwODE2LDIwODE4LDIwODE5LDIwODIzLDIwODI0LDIwODI1LDIwODI3LDIwODI5LDIwODMwLDIwODMxLDIwODMyLDIwODMzLDIwODM1LDIwODM2LDIwODM4LDIwODM5LDIwODQxLDIwODQyLDIwODQ3LDIwODUwLDIwODU4LDIwODYyLDIwODYzLDIwODY3LDIwODY4LDIwODcwLDIwODcxLDIwODc0LDIwODc1LDIwODc4LDIwODc5LDIwODgwLDIwODgxLDIwODgzLDIwODg0LDIwODg4LDIwODkwLDIwODkzLDIwODk0LDIwODk1LDIwODk3LDIwODk5LDIwOTAyLDIwOTAzLDIwOTA0LDIwOTA1LDIwOTA2LDIwOTA5LDIwOTEwLDIwOTE2LDIwOTIwLDIwOTIxLDIwOTIyLDIwOTI2LDIwOTI3LDIwOTI5LDIwOTMwLDIwOTMxLDIwOTMzLDIwOTM2LDIwOTM4LDIwOTQxLDIwOTQyLDIwOTQ0LDIwOTQ2LDIwOTQ3LDIwOTQ4LDIwOTQ5LDIwOTUwLDIwOTUxLDIwOTUyLDIwOTUzLDIwOTU0LDIwOTU2LDIwOTU4LDIwOTU5LDIwOTYyLDIwOTYzLDIwOTY1LDIwOTY2LDIwOTY3LDIwOTY4LDIwOTY5LDIwOTcwLDIwOTcyLDIwOTc0LDIwOTc3LDIwOTc4LDIwOTgwLDIwOTgzLDIwOTkwLDIwOTk2LDIwOTk3LDIxMDAxLDIxMDAzLDIxMDA0LDIxMDA3LDIxMDA4LDIxMDExLDIxMDEyLDIxMDEzLDIxMDIwLDIxMDIyLDIxMDIzLDIxMDI1LDIxMDI2LDIxMDI3LDIxMDI5LDIxMDMwLDIxMDMxLDIxMDM0LDIxMDM2LDIxMDM5LDIxMDQxLDIxMDQyLDIxMDQ0LDIxMDQ1LDIxMDUyLDIxMDU0LDIxMDYwLDIxMDYxLDIxMDYyLDIxMDYzLDIxMDY0LDIxMDY1LDIxMDY3LDIxMDcwLDIxMDcxLDIxMDc0LDIxMDc1LDIxMDc3LDIxMDc5LDIxMDgwLDIxMDgxLDIxMDgyLDIxMDgzLDIxMDg1LDIxMDg3LDIxMDg4LDIxMDkwLDIxMDkxLDIxMDkyLDIxMDk0LDIxMDk2LDIxMDk5LDIxMTAwLDIxMTAxLDIxMTAyLDIxMTA0LDIxMTA1LDIxMTA3LDIxMTA4LDIxMTA5LDIxMTEwLDIxMTExLDIxMTEyLDIxMTEzLDIxMTE0LDIxMTE1LDIxMTE2LDIxMTE4LDIxMTIwLDIxMTIzLDIxMTI0LDIxMTI1LDIxMTI2LDIxMTI3LDIxMTI5LDIxMTMwLDIxMTMxLDIxMTMyLDIxMTMzLDIxMTM0LDIxMTM1LDIxMTM3LDIxMTM4LDIxMTQwLDIxMTQxLDIxMTQyLDIxMTQzLDIxMTQ0LDIxMTQ1LDIxMTQ2LDIxMTQ4LDIxMTU2LDIxMTU3LDIxMTU4LDIxMTU5LDIxMTY2LDIxMTY3LDIxMTY4LDIxMTcyLDIxMTczLDIxMTc0LDIxMTc1LDIxMTc2LDIxMTc3LDIxMTc4LDIxMTc5LDIxMTgwLDIxMTgxLDIxMTg0LDIxMTg1LDIxMTg2LDIxMTg4LDIxMTg5LDIxMTkwLDIxMTkyLDIxMTk0LDIxMTk2LDIxMTk3LDIxMTk4LDIxMTk5LDIxMjAxLDIxMjAzLDIxMjA0LDIxMjA1LDIxMjA3LDIxMjA5LDIxMjEwLDIxMjExLDIxMjEyLDIxMjEzLDIxMjE0LDIxMjE2LDIxMjE3LDIxMjE4LDIxMjE5LDIxMjIxLDIxMjIyLDIxMjIzLDIxMjI0LDIxMjI1LDIxMjI2LDIxMjI3LDIxMjI4LDIxMjI5LDIxMjMwLDIxMjMxLDIxMjMzLDIxMjM0LDIxMjM1LDIxMjM2LDIxMjM3LDIxMjM4LDIxMjM5LDIxMjQwLDIxMjQzLDIxMjQ0LDIxMjQ1LDIxMjQ5LDIxMjUwLDIxMjUxLDIxMjUyLDIxMjU1LDIxMjU3LDIxMjU4LDIxMjU5LDIxMjYwLDIxMjYyLDIxMjY1LDIxMjY2LDIxMjY3LDIxMjY4LDIxMjcyLDIxMjc1LDIxMjc2LDIxMjc4LDIxMjc5LDIxMjgyLDIxMjg0LDIxMjg1LDIxMjg3LDIxMjg4LDIxMjg5LDIxMjkxLDIxMjkyLDIxMjkzLDIxMjk1LDIxMjk2LDIxMjk3LDIxMjk4LDIxMjk5LDIxMzAwLDIxMzAxLDIxMzAyLDIxMzAzLDIxMzA0LDIxMzA4LDIxMzA5LDIxMzEyLDIxMzE0LDIxMzE2LDIxMzE4LDIxMzIzLDIxMzI0LDIxMzI1LDIxMzI4LDIxMzMyLDIxMzM2LDIxMzM3LDIxMzM5LDIxMzQxLDIxMzQ5LDIxMzUyLDIxMzU0LDIxMzU2LDIxMzU3LDIxMzYyLDIxMzY2LDIxMzY5LDIxMzcxLDIxMzcyLDIxMzczLDIxMzc0LDIxMzc2LDIxMzc3LDIxMzc5LDIxMzgzLDIxMzg0LDIxMzg2LDIxMzkwLDIxMzkxLDIxMzkyLDIxMzkzLDIxMzk0LDIxMzk1LDIxMzk2LDIxMzk4LDIxMzk5LDIxNDAxLDIxNDAzLDIxNDA0LDIxNDA2LDIxNDA4LDIxNDA5LDIxNDEyLDIxNDE1LDIxNDE4LDIxNDE5LDIxNDIwLDIxNDIxLDIxNDIzLDIxNDI0LDIxNDI1LDIxNDI2LDIxNDI3LDIxNDI4LDIxNDI5LDIxNDMxLDIxNDMyLDIxNDMzLDIxNDM0LDIxNDM2LDIxNDM3LDIxNDM4LDIxNDQwLDIxNDQzLDIxNDQ0LDIxNDQ1LDIxNDQ2LDIxNDQ3LDIxNDU0LDIxNDU1LDIxNDU2LDIxNDU4LDIxNDU5LDIxNDYxLDIxNDY2LDIxNDY4LDIxNDY5LDIxNDcwLDIxNDczLDIxNDc0LDIxNDc5LDIxNDkyLDIxNDk4LDIxNTAyLDIxNTAzLDIxNTA0LDIxNTA2LDIxNTA5LDIxNTExLDIxNTE1LDIxNTI0LDIxNTI4LDIxNTI5LDIxNTMwLDIxNTMyLDIxNTM4LDIxNTQwLDIxNTQxLDIxNTQ2LDIxNTUyLDIxNTU1LDIxNTU4LDIxNTU5LDIxNTYyLDIxNTY1LDIxNTY3LDIxNTY5LDIxNTcwLDIxNTcyLDIxNTczLDIxNTc1LDIxNTc3LDIxNTgwLDIxNTgxLDIxNTgyLDIxNTgzLDIxNTg1LDIxNTk0LDIxNTk3LDIxNTk4LDIxNTk5LDIxNjAwLDIxNjAxLDIxNjAzLDIxNjA1LDIxNjA3LDIxNjA5LDIxNjEwLDIxNjExLDIxNjEyLDIxNjEzLDIxNjE0LDIxNjE1LDIxNjE2LDIxNjIwLDIxNjI1LDIxNjI2LDIxNjMwLDIxNjMxLDIxNjMzLDIxNjM1LDIxNjM3LDIxNjM5LDIxNjQwLDIxNjQxLDIxNjQyLDIxNjQ1LDIxNjQ5LDIxNjUxLDIxNjU1LDIxNjU2LDIxNjYwLDIxNjYyLDIxNjYzLDIxNjY0LDIxNjY1LDIxNjY2LDIxNjY5LDIxNjc4LDIxNjgwLDIxNjgyLDIxNjg1LDIxNjg2LDIxNjg3LDIxNjg5LDIxNjkwLDIxNjkyLDIxNjk0LDIxNjk5LDIxNzAxLDIxNzA2LDIxNzA3LDIxNzE4LDIxNzIwLDIxNzIzLDIxNzI4LDIxNzI5LDIxNzMwLDIxNzMxLDIxNzMyLDIxNzM5LDIxNzQwLDIxNzQzLDIxNzQ0LDIxNzQ1LDIxNzQ4LDIxNzQ5LDIxNzUwLDIxNzUxLDIxNzUyLDIxNzUzLDIxNzU1LDIxNzU4LDIxNzYwLDIxNzYyLDIxNzYzLDIxNzY0LDIxNzY1LDIxNzY4LDIxNzcwLDIxNzcxLDIxNzcyLDIxNzczLDIxNzc0LDIxNzc4LDIxNzc5LDIxNzgxLDIxNzgyLDIxNzgzLDIxNzg0LDIxNzg1LDIxNzg2LDIxNzg4LDIxNzg5LDIxNzkwLDIxNzkxLDIxNzkzLDIxNzk3LDIxNzk4LDIxODAwLDIxODAxLDIxODAzLDIxODA1LDIxODEwLDIxODEyLDIxODEzLDIxODE0LDIxODE2LDIxODE3LDIxODE4LDIxODE5LDIxODIxLDIxODI0LDIxODI2LDIxODI5LDIxODMxLDIxODMyLDIxODM1LDIxODM2LDIxODM3LDIxODM4LDIxODM5LDIxODQxLDIxODQyLDIxODQzLDIxODQ0LDIxODQ3LDIxODQ4LDIxODQ5LDIxODUwLDIxODUxLDIxODUzLDIxODU0LDIxODU1LDIxODU2LDIxODU4LDIxODU5LDIxODY0LDIxODY1LDIxODY3LDIxODcxLDIxODcyLDIxODczLDIxODc0LDIxODc1LDIxODc2LDIxODgxLDIxODgyLDIxODg1LDIxODg3LDIxODkzLDIxODk0LDIxOTAwLDIxOTAxLDIxOTAyLDIxOTA0LDIxOTA2LDIxOTA3LDIxOTA5LDIxOTEwLDIxOTExLDIxOTE0LDIxOTE1LDIxOTE4LDIxOTIwLDIxOTIxLDIxOTIyLDIxOTIzLDIxOTI0LDIxOTI1LDIxOTI2LDIxOTI4LDIxOTI5LDIxOTMwLDIxOTMxLDIxOTMyLDIxOTMzLDIxOTM0LDIxOTM1LDIxOTM2LDIxOTM4LDIxOTQwLDIxOTQyLDIxOTQ0LDIxOTQ2LDIxOTQ4LDIxOTUxLDIxOTUyLDIxOTUzLDIxOTU0LDIxOTU1LDIxOTU4LDIxOTU5LDIxOTYwLDIxOTYyLDIxOTYzLDIxOTY2LDIxOTY3LDIxOTY4LDIxOTczLDIxOTc1LDIxOTc2LDIxOTc3LDIxOTc4LDIxOTc5LDIxOTgyLDIxOTg0LDIxOTg2LDIxOTkxLDIxOTkzLDIxOTk3LDIxOTk4LDIyMDAwLDIyMDAxLDIyMDA0LDIyMDA2LDIyMDA4LDIyMDA5LDIyMDEwLDIyMDExLDIyMDEyLDIyMDE1LDIyMDE4LDIyMDE5LDIyMDIwLDIyMDIxLDIyMDIyLDIyMDIzLDIyMDI2LDIyMDI3LDIyMDI5LDIyMDMyLDIyMDMzLDIyMDM0LDIyMDM1LDIyMDM2LDIyMDM3LDIyMDM4LDIyMDM5LDIyMDQxLDIyMDQyLDIyMDQ0LDIyMDQ1LDIyMDQ4LDIyMDQ5LDIyMDUwLDIyMDUzLDIyMDU0LDIyMDU2LDIyMDU3LDIyMDU4LDIyMDU5LDIyMDYyLDIyMDYzLDIyMDY0LDIyMDY3LDIyMDY5LDIyMDcxLDIyMDcyLDIyMDc0LDIyMDc2LDIyMDc3LDIyMDc4LDIyMDgwLDIyMDgxLDIyMDgyLDIyMDgzLDIyMDg0LDIyMDg1LDIyMDg2LDIyMDg3LDIyMDg4LDIyMDg5LDIyMDkwLDIyMDkxLDIyMDk1LDIyMDk2LDIyMDk3LDIyMDk4LDIyMDk5LDIyMTAxLDIyMTAyLDIyMTA2LDIyMTA3LDIyMTA5LDIyMTEwLDIyMTExLDIyMTEyLDIyMTEzLDIyMTE1LDIyMTE3LDIyMTE4LDIyMTE5LDIyMTI1LDIyMTI2LDIyMTI3LDIyMTI4LDIyMTMwLDIyMTMxLDIyMTMyLDIyMTMzLDIyMTM1LDIyMTM2LDIyMTM3LDIyMTM4LDIyMTQxLDIyMTQyLDIyMTQzLDIyMTQ0LDIyMTQ1LDIyMTQ2LDIyMTQ3LDIyMTQ4LDIyMTUxLDIyMTUyLDIyMTUzLDIyMTU0LDIyMTU1LDIyMTU2LDIyMTU3LDIyMTYwLDIyMTYxLDIyMTYyLDIyMTY0LDIyMTY1LDIyMTY2LDIyMTY3LDIyMTY4LDIyMTY5LDIyMTcwLDIyMTcxLDIyMTcyLDIyMTczLDIyMTc0LDIyMTc1LDIyMTc2LDIyMTc3LDIyMTc4LDIyMTgwLDIyMTgxLDIyMTgyLDIyMTgzLDIyMTg0LDIyMTg1LDIyMTg2LDIyMTg3LDIyMTg4LDIyMTg5LDIyMTkwLDIyMTkyLDIyMTkzLDIyMTk0LDIyMTk1LDIyMTk2LDIyMTk3LDIyMTk4LDIyMjAwLDIyMjAxLDIyMjAyLDIyMjAzLDIyMjA1LDIyMjA2LDIyMjA3LDIyMjA4LDIyMjA5LDIyMjEwLDIyMjExLDIyMjEyLDIyMjEzLDIyMjE0LDIyMjE1LDIyMjE2LDIyMjE3LDIyMjE5LDIyMjIwLDIyMjIxLDIyMjIyLDIyMjIzLDIyMjI0LDIyMjI1LDIyMjI2LDIyMjI3LDIyMjI5LDIyMjMwLDIyMjMyLDIyMjMzLDIyMjM2LDIyMjQzLDIyMjQ1LDIyMjQ2LDIyMjQ3LDIyMjQ4LDIyMjQ5LDIyMjUwLDIyMjUyLDIyMjU0LDIyMjU1LDIyMjU4LDIyMjU5LDIyMjYyLDIyMjYzLDIyMjY0LDIyMjY3LDIyMjY4LDIyMjcyLDIyMjczLDIyMjc0LDIyMjc3LDIyMjc5LDIyMjgzLDIyMjg0LDIyMjg1LDIyMjg2LDIyMjg3LDIyMjg4LDIyMjg5LDIyMjkwLDIyMjkxLDIyMjkyLDIyMjkzLDIyMjk0LDIyMjk1LDIyMjk2LDIyMjk3LDIyMjk4LDIyMjk5LDIyMzAxLDIyMzAyLDIyMzA0LDIyMzA1LDIyMzA2LDIyMzA4LDIyMzA5LDIyMzEwLDIyMzExLDIyMzE1LDIyMzIxLDIyMzIyLDIyMzI0LDIyMzI1LDIyMzI2LDIyMzI3LDIyMzI4LDIyMzMyLDIyMzMzLDIyMzM1LDIyMzM3LDIyMzM5LDIyMzQwLDIyMzQxLDIyMzQyLDIyMzQ0LDIyMzQ1LDIyMzQ3LDIyMzU0LDIyMzU1LDIyMzU2LDIyMzU3LDIyMzU4LDIyMzYwLDIyMzYxLDIyMzcwLDIyMzcxLDIyMzczLDIyMzc1LDIyMzgwLDIyMzgyLDIyMzg0LDIyMzg1LDIyMzg2LDIyMzg4LDIyMzg5LDIyMzkyLDIyMzkzLDIyMzk0LDIyMzk3LDIyMzk4LDIyMzk5LDIyNDAwLDIyNDAxLDIyNDA3LDIyNDA4LDIyNDA5LDIyNDEwLDIyNDEzLDIyNDE0LDIyNDE1LDIyNDE2LDIyNDE3LDIyNDIwLDIyNDIxLDIyNDIyLDIyNDIzLDIyNDI0LDIyNDI1LDIyNDI2LDIyNDI4LDIyNDI5LDIyNDMwLDIyNDMxLDIyNDM3LDIyNDQwLDIyNDQyLDIyNDQ0LDIyNDQ3LDIyNDQ4LDIyNDQ5LDIyNDUxLDIyNDUzLDIyNDU0LDIyNDU1LDIyNDU3LDIyNDU4LDIyNDU5LDIyNDYwLDIyNDYxLDIyNDYyLDIyNDYzLDIyNDY0LDIyNDY1LDIyNDY4LDIyNDY5LDIyNDcwLDIyNDcxLDIyNDcyLDIyNDczLDIyNDc0LDIyNDc2LDIyNDc3LDIyNDgwLDIyNDgxLDIyNDgzLDIyNDg2LDIyNDg3LDIyNDkxLDIyNDkyLDIyNDk0LDIyNDk3LDIyNDk4LDIyNDk5LDIyNTAxLDIyNTAyLDIyNTAzLDIyNTA0LDIyNTA1LDIyNTA2LDIyNTA3LDIyNTA4LDIyNTEwLDIyNTEyLDIyNTEzLDIyNTE0LDIyNTE1LDIyNTE3LDIyNTE4LDIyNTE5LDIyNTIzLDIyNTI0LDIyNTI2LDIyNTI3LDIyNTI5LDIyNTMxLDIyNTMyLDIyNTMzLDIyNTM2LDIyNTM3LDIyNTM4LDIyNTQwLDIyNTQyLDIyNTQzLDIyNTQ0LDIyNTQ2LDIyNTQ3LDIyNTQ4LDIyNTUwLDIyNTUxLDIyNTUyLDIyNTU0LDIyNTU1LDIyNTU2LDIyNTU3LDIyNTU5LDIyNTYyLDIyNTYzLDIyNTY1LDIyNTY2LDIyNTY3LDIyNTY4LDIyNTY5LDIyNTcxLDIyNTcyLDIyNTczLDIyNTc0LDIyNTc1LDIyNTc3LDIyNTc4LDIyNTc5LDIyNTgwLDIyNTgyLDIyNTgzLDIyNTg0LDIyNTg1LDIyNTg2LDIyNTg3LDIyNTg4LDIyNTg5LDIyNTkwLDIyNTkxLDIyNTkyLDIyNTkzLDIyNTk0LDIyNTk1LDIyNTk3LDIyNTk4LDIyNTk5LDIyNjAwLDIyNjAxLDIyNjAyLDIyNjAzLDIyNjA2LDIyNjA3LDIyNjA4LDIyNjEwLDIyNjExLDIyNjEzLDIyNjE0LDIyNjE1LDIyNjE3LDIyNjE4LDIyNjE5LDIyNjIwLDIyNjIxLDIyNjIzLDIyNjI0LDIyNjI1LDIyNjI2LDIyNjI3LDIyNjI4LDIyNjMwLDIyNjMxLDIyNjMyLDIyNjMzLDIyNjM0LDIyNjM3LDIyNjM4LDIyNjM5LDIyNjQwLDIyNjQxLDIyNjQyLDIyNjQzLDIyNjQ0LDIyNjQ1LDIyNjQ2LDIyNjQ3LDIyNjQ4LDIyNjQ5LDIyNjUwLDIyNjUxLDIyNjUyLDIyNjUzLDIyNjU1LDIyNjU4LDIyNjYwLDIyNjYyLDIyNjYzLDIyNjY0LDIyNjY2LDIyNjY3LDIyNjY4LDIyNjY5LDIyNjcwLDIyNjcxLDIyNjcyLDIyNjczLDIyNjc2LDIyNjc3LDIyNjc4LDIyNjc5LDIyNjgwLDIyNjgzLDIyNjg0LDIyNjg1LDIyNjg4LDIyNjg5LDIyNjkwLDIyNjkxLDIyNjkyLDIyNjkzLDIyNjk0LDIyNjk1LDIyNjk4LDIyNjk5LDIyNzAwLDIyNzAxLDIyNzAyLDIyNzAzLDIyNzA0LDIyNzA1LDIyNzA2LDIyNzA3LDIyNzA4LDIyNzA5LDIyNzEwLDIyNzExLDIyNzEyLDIyNzEzLDIyNzE0LDIyNzE1LDIyNzE3LDIyNzE4LDIyNzE5LDIyNzIwLDIyNzIyLDIyNzIzLDIyNzI0LDIyNzI2LDIyNzI3LDIyNzI4LDIyNzI5LDIyNzMwLDIyNzMxLDIyNzMyLDIyNzMzLDIyNzM0LDIyNzM1LDIyNzM2LDIyNzM4LDIyNzM5LDIyNzQwLDIyNzQyLDIyNzQzLDIyNzQ0LDIyNzQ1LDIyNzQ2LDIyNzQ3LDIyNzQ4LDIyNzQ5LDIyNzUwLDIyNzUxLDIyNzUyLDIyNzUzLDIyNzU0LDIyNzU1LDIyNzU3LDIyNzU4LDIyNzU5LDIyNzYwLDIyNzYxLDIyNzYyLDIyNzY1LDIyNzY3LDIyNzY5LDIyNzcwLDIyNzcyLDIyNzczLDIyNzc1LDIyNzc2LDIyNzc4LDIyNzc5LDIyNzgwLDIyNzgxLDIyNzgyLDIyNzgzLDIyNzg0LDIyNzg1LDIyNzg3LDIyNzg5LDIyNzkwLDIyNzkyLDIyNzkzLDIyNzk0LDIyNzk1LDIyNzk2LDIyNzk4LDIyODAwLDIyODAxLDIyODAyLDIyODAzLDIyODA3LDIyODA4LDIyODExLDIyODEzLDIyODE0LDIyODE2LDIyODE3LDIyODE4LDIyODE5LDIyODIyLDIyODI0LDIyODI4LDIyODMyLDIyODM0LDIyODM1LDIyODM3LDIyODM4LDIyODQzLDIyODQ1LDIyODQ2LDIyODQ3LDIyODQ4LDIyODUxLDIyODUzLDIyODU0LDIyODU4LDIyODYwLDIyODYxLDIyODY0LDIyODY2LDIyODY3LDIyODczLDIyODc1LDIyODc2LDIyODc3LDIyODc4LDIyODc5LDIyODgxLDIyODgzLDIyODg0LDIyODg2LDIyODg3LDIyODg4LDIyODg5LDIyODkwLDIyODkxLDIyODkyLDIyODkzLDIyODk0LDIyODk1LDIyODk2LDIyODk3LDIyODk4LDIyOTAxLDIyOTAzLDIyOTA2LDIyOTA3LDIyOTA4LDIyOTEwLDIyOTExLDIyOTEyLDIyOTE3LDIyOTIxLDIyOTIzLDIyOTI0LDIyOTI2LDIyOTI3LDIyOTI4LDIyOTI5LDIyOTMyLDIyOTMzLDIyOTM2LDIyOTM4LDIyOTM5LDIyOTQwLDIyOTQxLDIyOTQzLDIyOTQ0LDIyOTQ1LDIyOTQ2LDIyOTUwLDIyOTUxLDIyOTU2LDIyOTU3LDIyOTYwLDIyOTYxLDIyOTYzLDIyOTY0LDIyOTY1LDIyOTY2LDIyOTY3LDIyOTY4LDIyOTcwLDIyOTcyLDIyOTczLDIyOTc1LDIyOTc2LDIyOTc3LDIyOTc4LDIyOTc5LDIyOTgwLDIyOTgxLDIyOTgzLDIyOTg0LDIyOTg1LDIyOTg4LDIyOTg5LDIyOTkwLDIyOTkxLDIyOTk3LDIyOTk4LDIzMDAxLDIzMDAzLDIzMDA2LDIzMDA3LDIzMDA4LDIzMDA5LDIzMDEwLDIzMDEyLDIzMDE0LDIzMDE1LDIzMDE3LDIzMDE4LDIzMDE5LDIzMDIxLDIzMDIyLDIzMDIzLDIzMDI0LDIzMDI1LDIzMDI2LDIzMDI3LDIzMDI4LDIzMDI5LDIzMDMwLDIzMDMxLDIzMDMyLDIzMDM0LDIzMDM2LDIzMDM3LDIzMDM4LDIzMDQwLDIzMDQyLDIzMDUwLDIzMDUxLDIzMDUzLDIzMDU0LDIzMDU1LDIzMDU2LDIzMDU4LDIzMDYwLDIzMDYxLDIzMDYyLDIzMDYzLDIzMDY1LDIzMDY2LDIzMDY3LDIzMDY5LDIzMDcwLDIzMDczLDIzMDc0LDIzMDc2LDIzMDc4LDIzMDc5LDIzMDgwLDIzMDgyLDIzMDgzLDIzMDg0LDIzMDg1LDIzMDg2LDIzMDg3LDIzMDg4LDIzMDkxLDIzMDkzLDIzMDk1LDIzMDk2LDIzMDk3LDIzMDk4LDIzMDk5LDIzMTAxLDIzMTAyLDIzMTAzLDIzMTA1LDIzMTA2LDIzMTA3LDIzMTA4LDIzMTA5LDIzMTExLDIzMTEyLDIzMTE1LDIzMTE2LDIzMTE3LDIzMTE4LDIzMTE5LDIzMTIwLDIzMTIxLDIzMTIyLDIzMTIzLDIzMTI0LDIzMTI2LDIzMTI3LDIzMTI4LDIzMTI5LDIzMTMxLDIzMTMyLDIzMTMzLDIzMTM0LDIzMTM1LDIzMTM2LDIzMTM3LDIzMTM5LDIzMTQwLDIzMTQxLDIzMTQyLDIzMTQ0LDIzMTQ1LDIzMTQ3LDIzMTQ4LDIzMTQ5LDIzMTUwLDIzMTUxLDIzMTUyLDIzMTUzLDIzMTU0LDIzMTU1LDIzMTYwLDIzMTYxLDIzMTYzLDIzMTY0LDIzMTY1LDIzMTY2LDIzMTY4LDIzMTY5LDIzMTcwLDIzMTcxLDIzMTcyLDIzMTczLDIzMTc0LDIzMTc1LDIzMTc2LDIzMTc3LDIzMTc4LDIzMTc5LDIzMTgwLDIzMTgxLDIzMTgyLDIzMTgzLDIzMTg0LDIzMTg1LDIzMTg3LDIzMTg4LDIzMTg5LDIzMTkwLDIzMTkxLDIzMTkyLDIzMTkzLDIzMTk2LDIzMTk3LDIzMTk4LDIzMTk5LDIzMjAwLDIzMjAxLDIzMjAyLDIzMjAzLDIzMjA0LDIzMjA1LDIzMjA2LDIzMjA3LDIzMjA4LDIzMjA5LDIzMjExLDIzMjEyLDIzMjEzLDIzMjE0LDIzMjE1LDIzMjE2LDIzMjE3LDIzMjIwLDIzMjIyLDIzMjIzLDIzMjI1LDIzMjI2LDIzMjI3LDIzMjI4LDIzMjI5LDIzMjMxLDIzMjMyLDIzMjM1LDIzMjM2LDIzMjM3LDIzMjM4LDIzMjM5LDIzMjQwLDIzMjQyLDIzMjQzLDIzMjQ1LDIzMjQ2LDIzMjQ3LDIzMjQ4LDIzMjQ5LDIzMjUxLDIzMjUzLDIzMjU1LDIzMjU3LDIzMjU4LDIzMjU5LDIzMjYxLDIzMjYyLDIzMjYzLDIzMjY2LDIzMjY4LDIzMjY5LDIzMjcxLDIzMjcyLDIzMjc0LDIzMjc2LDIzMjc3LDIzMjc4LDIzMjc5LDIzMjgwLDIzMjgyLDIzMjgzLDIzMjg0LDIzMjg1LDIzMjg2LDIzMjg3LDIzMjg4LDIzMjg5LDIzMjkwLDIzMjkxLDIzMjkyLDIzMjkzLDIzMjk0LDIzMjk1LDIzMjk2LDIzMjk3LDIzMjk4LDIzMjk5LDIzMzAwLDIzMzAxLDIzMzAyLDIzMzAzLDIzMzA0LDIzMzA2LDIzMzA3LDIzMzA4LDIzMzA5LDIzMzEwLDIzMzExLDIzMzEyLDIzMzEzLDIzMzE0LDIzMzE1LDIzMzE2LDIzMzE3LDIzMzIwLDIzMzIxLDIzMzIyLDIzMzIzLDIzMzI0LDIzMzI1LDIzMzI2LDIzMzI3LDIzMzI4LDIzMzI5LDIzMzMwLDIzMzMxLDIzMzMyLDIzMzMzLDIzMzM0LDIzMzM1LDIzMzM2LDIzMzM3LDIzMzM4LDIzMzM5LDIzMzQwLDIzMzQxLDIzMzQyLDIzMzQzLDIzMzQ0LDIzMzQ1LDIzMzQ3LDIzMzQ5LDIzMzUwLDIzMzUyLDIzMzUzLDIzMzU0LDIzMzU1LDIzMzU2LDIzMzU3LDIzMzU4LDIzMzU5LDIzMzYxLDIzMzYyLDIzMzYzLDIzMzY0LDIzMzY1LDIzMzY2LDIzMzY3LDIzMzY4LDIzMzY5LDIzMzcwLDIzMzcxLDIzMzcyLDIzMzczLDIzMzc0LDIzMzc1LDIzMzc4LDIzMzgyLDIzMzkwLDIzMzkyLDIzMzkzLDIzMzk5LDIzNDAwLDIzNDAzLDIzNDA1LDIzNDA2LDIzNDA3LDIzNDEwLDIzNDEyLDIzNDE0LDIzNDE1LDIzNDE2LDIzNDE3LDIzNDE5LDIzNDIwLDIzNDIyLDIzNDIzLDIzNDI2LDIzNDMwLDIzNDM0LDIzNDM3LDIzNDM4LDIzNDQwLDIzNDQxLDIzNDQyLDIzNDQ0LDIzNDQ2LDIzNDU1LDIzNDYzLDIzNDY0LDIzNDY1LDIzNDY4LDIzNDY5LDIzNDcwLDIzNDcxLDIzNDczLDIzNDc0LDIzNDc5LDIzNDgyLDIzNDgzLDIzNDg0LDIzNDg4LDIzNDg5LDIzNDkxLDIzNDk2LDIzNDk3LDIzNDk4LDIzNDk5LDIzNTAxLDIzNTAyLDIzNTAzLDIzNTA1LDIzNTA4LDIzNTA5LDIzNTEwLDIzNTExLDIzNTEyLDIzNTEzLDIzNTE0LDIzNTE1LDIzNTE2LDIzNTIwLDIzNTIyLDIzNTIzLDIzNTI2LDIzNTI3LDIzNTI5LDIzNTMwLDIzNTMxLDIzNTMyLDIzNTMzLDIzNTM1LDIzNTM3LDIzNTM4LDIzNTM5LDIzNTQwLDIzNTQxLDIzNTQyLDIzNTQzLDIzNTQ5LDIzNTUwLDIzNTUyLDIzNTU0LDIzNTU1LDIzNTU3LDIzNTU5LDIzNTYwLDIzNTYzLDIzNTY0LDIzNTY1LDIzNTY2LDIzNTY4LDIzNTcwLDIzNTcxLDIzNTc1LDIzNTc3LDIzNTc5LDIzNTgyLDIzNTgzLDIzNTg0LDIzNTg1LDIzNTg3LDIzNTkwLDIzNTkyLDIzNTkzLDIzNTk0LDIzNTk1LDIzNTk3LDIzNTk4LDIzNTk5LDIzNjAwLDIzNjAyLDIzNjAzLDIzNjA1LDIzNjA2LDIzNjA3LDIzNjE5LDIzNjIwLDIzNjIyLDIzNjIzLDIzNjI4LDIzNjI5LDIzNjM0LDIzNjM1LDIzNjM2LDIzNjM4LDIzNjM5LDIzNjQwLDIzNjQyLDIzNjQzLDIzNjQ0LDIzNjQ1LDIzNjQ3LDIzNjUwLDIzNjUyLDIzNjU1LDIzNjU2LDIzNjU3LDIzNjU4LDIzNjU5LDIzNjYwLDIzNjYxLDIzNjY0LDIzNjY2LDIzNjY3LDIzNjY4LDIzNjY5LDIzNjcwLDIzNjcxLDIzNjcyLDIzNjc1LDIzNjc2LDIzNjc3LDIzNjc4LDIzNjgwLDIzNjgzLDIzNjg0LDIzNjg1LDIzNjg2LDIzNjg3LDIzNjg5LDIzNjkwLDIzNjkxLDIzNjk0LDIzNjk1LDIzNjk4LDIzNjk5LDIzNzAxLDIzNzA5LDIzNzEwLDIzNzExLDIzNzEyLDIzNzEzLDIzNzE2LDIzNzE3LDIzNzE4LDIzNzE5LDIzNzIwLDIzNzIyLDIzNzI2LDIzNzI3LDIzNzI4LDIzNzMwLDIzNzMyLDIzNzM0LDIzNzM3LDIzNzM4LDIzNzM5LDIzNzQwLDIzNzQyLDIzNzQ0LDIzNzQ2LDIzNzQ3LDIzNzQ5LDIzNzUwLDIzNzUxLDIzNzUyLDIzNzUzLDIzNzU0LDIzNzU2LDIzNzU3LDIzNzU4LDIzNzU5LDIzNzYwLDIzNzYxLDIzNzYzLDIzNzY0LDIzNzY1LDIzNzY2LDIzNzY3LDIzNzY4LDIzNzcwLDIzNzcxLDIzNzcyLDIzNzczLDIzNzc0LDIzNzc1LDIzNzc2LDIzNzc4LDIzNzc5LDIzNzgzLDIzNzg1LDIzNzg3LDIzNzg4LDIzNzkwLDIzNzkxLDIzNzkzLDIzNzk0LDIzNzk1LDIzNzk2LDIzNzk3LDIzNzk4LDIzNzk5LDIzODAwLDIzODAxLDIzODAyLDIzODA0LDIzODA1LDIzODA2LDIzODA3LDIzODA4LDIzODA5LDIzODEyLDIzODEzLDIzODE2LDIzODE3LDIzODE4LDIzODE5LDIzODIwLDIzODIxLDIzODIzLDIzODI0LDIzODI1LDIzODI2LDIzODI3LDIzODI5LDIzODMxLDIzODMyLDIzODMzLDIzODM0LDIzODM2LDIzODM3LDIzODM5LDIzODQwLDIzODQxLDIzODQyLDIzODQzLDIzODQ1LDIzODQ4LDIzODUwLDIzODUxLDIzODUyLDIzODU1LDIzODU2LDIzODU3LDIzODU4LDIzODU5LDIzODYxLDIzODYyLDIzODYzLDIzODY0LDIzODY1LDIzODY2LDIzODY3LDIzODY4LDIzODcxLDIzODcyLDIzODczLDIzODc0LDIzODc1LDIzODc2LDIzODc3LDIzODc4LDIzODgwLDIzODgxLDIzODg1LDIzODg2LDIzODg3LDIzODg4LDIzODg5LDIzODkwLDIzODkxLDIzODkyLDIzODkzLDIzODk0LDIzODk1LDIzODk3LDIzODk4LDIzOTAwLDIzOTAyLDIzOTAzLDIzOTA0LDIzOTA1LDIzOTA2LDIzOTA3LDIzOTA4LDIzOTA5LDIzOTEwLDIzOTExLDIzOTEyLDIzOTE0LDIzOTE3LDIzOTE4LDIzOTIwLDIzOTIxLDIzOTIyLDIzOTIzLDIzOTI1LDIzOTI2LDIzOTI3LDIzOTI4LDIzOTI5LDIzOTMwLDIzOTMxLDIzOTMyLDIzOTMzLDIzOTM0LDIzOTM1LDIzOTM2LDIzOTM3LDIzOTM5LDIzOTQwLDIzOTQxLDIzOTQyLDIzOTQzLDIzOTQ0LDIzOTQ1LDIzOTQ2LDIzOTQ3LDIzOTQ4LDIzOTQ5LDIzOTUwLDIzOTUxLDIzOTUyLDIzOTUzLDIzOTU0LDIzOTU1LDIzOTU2LDIzOTU3LDIzOTU4LDIzOTU5LDIzOTYwLDIzOTYyLDIzOTYzLDIzOTY0LDIzOTY2LDIzOTY3LDIzOTY4LDIzOTY5LDIzOTcwLDIzOTcxLDIzOTcyLDIzOTczLDIzOTc0LDIzOTc1LDIzOTc2LDIzOTc3LDIzOTc4LDIzOTc5LDIzOTgwLDIzOTgxLDIzOTgyLDIzOTgzLDIzOTg0LDIzOTg1LDIzOTg2LDIzOTg3LDIzOTg4LDIzOTg5LDIzOTkwLDIzOTkyLDIzOTkzLDIzOTk0LDIzOTk1LDIzOTk2LDIzOTk3LDIzOTk4LDIzOTk5LDI0MDAwLDI0MDAxLDI0MDAyLDI0MDAzLDI0MDA0LDI0MDA2LDI0MDA3LDI0MDA4LDI0MDA5LDI0MDEwLDI0MDExLDI0MDEyLDI0MDE0LDI0MDE1LDI0MDE2LDI0MDE3LDI0MDE4LDI0MDE5LDI0MDIwLDI0MDIxLDI0MDIyLDI0MDIzLDI0MDI0LDI0MDI1LDI0MDI2LDI0MDI4LDI0MDMxLDI0MDMyLDI0MDM1LDI0MDM2LDI0MDQyLDI0MDQ0LDI0MDQ1LDI0MDQ4LDI0MDUzLDI0MDU0LDI0MDU2LDI0MDU3LDI0MDU4LDI0MDU5LDI0MDYwLDI0MDYzLDI0MDY0LDI0MDY4LDI0MDcxLDI0MDczLDI0MDc0LDI0MDc1LDI0MDc3LDI0MDc4LDI0MDgyLDI0MDgzLDI0MDg3LDI0MDk0LDI0MDk1LDI0MDk2LDI0MDk3LDI0MDk4LDI0MDk5LDI0MTAwLDI0MTAxLDI0MTA0LDI0MTA1LDI0MTA2LDI0MTA3LDI0MTA4LDI0MTExLDI0MTEyLDI0MTE0LDI0MTE1LDI0MTE2LDI0MTE3LDI0MTE4LDI0MTIxLDI0MTIyLDI0MTI2LDI0MTI3LDI0MTI4LDI0MTI5LDI0MTMxLDI0MTM0LDI0MTM1LDI0MTM2LDI0MTM3LDI0MTM4LDI0MTM5LDI0MTQxLDI0MTQyLDI0MTQzLDI0MTQ0LDI0MTQ1LDI0MTQ2LDI0MTQ3LDI0MTUwLDI0MTUxLDI0MTUyLDI0MTUzLDI0MTU0LDI0MTU2LDI0MTU3LDI0MTU5LDI0MTYwLDI0MTYzLDI0MTY0LDI0MTY1LDI0MTY2LDI0MTY3LDI0MTY4LDI0MTY5LDI0MTcwLDI0MTcxLDI0MTcyLDI0MTczLDI0MTc0LDI0MTc1LDI0MTc2LDI0MTc3LDI0MTgxLDI0MTgzLDI0MTg1LDI0MTkwLDI0MTkzLDI0MTk0LDI0MTk1LDI0MTk3LDI0MjAwLDI0MjAxLDI0MjA0LDI0MjA1LDI0MjA2LDI0MjEwLDI0MjE2LDI0MjE5LDI0MjIxLDI0MjI1LDI0MjI2LDI0MjI3LDI0MjI4LDI0MjMyLDI0MjMzLDI0MjM0LDI0MjM1LDI0MjM2LDI0MjM4LDI0MjM5LDI0MjQwLDI0MjQxLDI0MjQyLDI0MjQ0LDI0MjUwLDI0MjUxLDI0MjUyLDI0MjUzLDI0MjU1LDI0MjU2LDI0MjU3LDI0MjU4LDI0MjU5LDI0MjYwLDI0MjYxLDI0MjYyLDI0MjYzLDI0MjY0LDI0MjY3LDI0MjY4LDI0MjY5LDI0MjcwLDI0MjcxLDI0MjcyLDI0Mjc2LDI0Mjc3LDI0Mjc5LDI0MjgwLDI0MjgxLDI0MjgyLDI0Mjg0LDI0Mjg1LDI0Mjg2LDI0Mjg3LDI0Mjg4LDI0Mjg5LDI0MjkwLDI0MjkxLDI0MjkyLDI0MjkzLDI0Mjk0LDI0Mjk1LDI0Mjk3LDI0Mjk5LDI0MzAwLDI0MzAxLDI0MzAyLDI0MzAzLDI0MzA0LDI0MzA1LDI0MzA2LDI0MzA3LDI0MzA5LDI0MzEyLDI0MzEzLDI0MzE1LDI0MzE2LDI0MzE3LDI0MzI1LDI0MzI2LDI0MzI3LDI0MzI5LDI0MzMyLDI0MzMzLDI0MzM0LDI0MzM2LDI0MzM4LDI0MzQwLDI0MzQyLDI0MzQ1LDI0MzQ2LDI0MzQ4LDI0MzQ5LDI0MzUwLDI0MzUzLDI0MzU0LDI0MzU1LDI0MzU2LDI0MzYwLDI0MzYzLDI0MzY0LDI0MzY2LDI0MzY4LDI0MzcwLDI0MzcxLDI0MzcyLDI0MzczLDI0Mzc0LDI0Mzc1LDI0Mzc2LDI0Mzc5LDI0MzgxLDI0MzgyLDI0MzgzLDI0Mzg1LDI0Mzg2LDI0Mzg3LDI0Mzg4LDI0Mzg5LDI0MzkwLDI0MzkxLDI0MzkyLDI0MzkzLDI0Mzk0LDI0Mzk1LDI0Mzk2LDI0Mzk3LDI0Mzk4LDI0Mzk5LDI0NDAxLDI0NDA0LDI0NDA5LDI0NDEwLDI0NDExLDI0NDEyLDI0NDE0LDI0NDE1LDI0NDE2LDI0NDE5LDI0NDIxLDI0NDIzLDI0NDI0LDI0NDI3LDI0NDMwLDI0NDMxLDI0NDM0LDI0NDM2LDI0NDM3LDI0NDM4LDI0NDQwLDI0NDQyLDI0NDQ1LDI0NDQ2LDI0NDQ3LDI0NDUxLDI0NDU0LDI0NDYxLDI0NDYyLDI0NDYzLDI0NDY1LDI0NDY3LDI0NDY4LDI0NDcwLDI0NDc0LDI0NDc1LDI0NDc3LDI0NDc4LDI0NDc5LDI0NDgwLDI0NDgyLDI0NDgzLDI0NDg0LDI0NDg1LDI0NDg2LDI0NDg3LDI0NDg5LDI0NDkxLDI0NDkyLDI0NDk1LDI0NDk2LDI0NDk3LDI0NDk4LDI0NDk5LDI0NTAwLDI0NTAyLDI0NTA0LDI0NTA1LDI0NTA2LDI0NTA3LDI0NTEwLDI0NTExLDI0NTEyLDI0NTEzLDI0NTE0LDI0NTE5LDI0NTIwLDI0NTIyLDI0NTIzLDI0NTI2LDI0NTMxLDI0NTMyLDI0NTMzLDI0NTM4LDI0NTM5LDI0NTQwLDI0NTQyLDI0NTQzLDI0NTQ2LDI0NTQ3LDI0NTQ5LDI0NTUwLDI0NTUyLDI0NTUzLDI0NTU2LDI0NTU5LDI0NTYwLDI0NTYyLDI0NTYzLDI0NTY0LDI0NTY2LDI0NTY3LDI0NTY5LDI0NTcwLDI0NTcyLDI0NTgzLDI0NTg0LDI0NTg1LDI0NTg3LDI0NTg4LDI0NTkyLDI0NTkzLDI0NTk1LDI0NTk5LDI0NjAwLDI0NjAyLDI0NjA2LDI0NjA3LDI0NjEwLDI0NjExLDI0NjEyLDI0NjIwLDI0NjIxLDI0NjIyLDI0NjI0LDI0NjI1LDI0NjI2LDI0NjI3LDI0NjI4LDI0NjMwLDI0NjMxLDI0NjMyLDI0NjMzLDI0NjM0LDI0NjM3LDI0NjM4LDI0NjQwLDI0NjQ0LDI0NjQ1LDI0NjQ2LDI0NjQ3LDI0NjQ4LDI0NjQ5LDI0NjUwLDI0NjUyLDI0NjU0LDI0NjU1LDI0NjU3LDI0NjU5LDI0NjYwLDI0NjYyLDI0NjYzLDI0NjY0LDI0NjY3LDI0NjY4LDI0NjcwLDI0NjcxLDI0NjcyLDI0NjczLDI0Njc3LDI0Njc4LDI0Njg2LDI0Njg5LDI0NjkwLDI0NjkyLDI0NjkzLDI0Njk1LDI0NzAyLDI0NzA0LDI0NzA1LDI0NzA2LDI0NzA5LDI0NzEwLDI0NzExLDI0NzEyLDI0NzE0LDI0NzE1LDI0NzE4LDI0NzE5LDI0NzIwLDI0NzIxLDI0NzIzLDI0NzI1LDI0NzI3LDI0NzI4LDI0NzI5LDI0NzMyLDI0NzM0LDI0NzM3LDI0NzM4LDI0NzQwLDI0NzQxLDI0NzQzLDI0NzQ1LDI0NzQ2LDI0NzUwLDI0NzUyLDI0NzU1LDI0NzU3LDI0NzU4LDI0NzU5LDI0NzYxLDI0NzYyLDI0NzY1LDI0NzY2LDI0NzY3LDI0NzY4LDI0NzY5LDI0NzcwLDI0NzcxLDI0NzcyLDI0Nzc1LDI0Nzc2LDI0Nzc3LDI0NzgwLDI0NzgxLDI0NzgyLDI0NzgzLDI0Nzg0LDI0Nzg2LDI0Nzg3LDI0Nzg4LDI0NzkwLDI0NzkxLDI0NzkzLDI0Nzk1LDI0Nzk4LDI0ODAxLDI0ODAyLDI0ODAzLDI0ODA0LDI0ODA1LDI0ODEwLDI0ODE3LDI0ODE4LDI0ODIxLDI0ODIzLDI0ODI0LDI0ODI3LDI0ODI4LDI0ODI5LDI0ODMwLDI0ODMxLDI0ODM0LDI0ODM1LDI0ODM2LDI0ODM3LDI0ODM5LDI0ODQyLDI0ODQzLDI0ODQ0LDI0ODQ4LDI0ODQ5LDI0ODUwLDI0ODUxLDI0ODUyLDI0ODU0LDI0ODU1LDI0ODU2LDI0ODU3LDI0ODU5LDI0ODYwLDI0ODYxLDI0ODYyLDI0ODY1LDI0ODY2LDI0ODY5LDI0ODcyLDI0ODczLDI0ODc0LDI0ODc2LDI0ODc3LDI0ODc4LDI0ODc5LDI0ODgwLDI0ODgxLDI0ODgyLDI0ODgzLDI0ODg0LDI0ODg1LDI0ODg2LDI0ODg3LDI0ODg4LDI0ODg5LDI0ODkwLDI0ODkxLDI0ODkyLDI0ODkzLDI0ODk0LDI0ODk2LDI0ODk3LDI0ODk4LDI0ODk5LDI0OTAwLDI0OTAxLDI0OTAyLDI0OTAzLDI0OTA1LDI0OTA3LDI0OTA5LDI0OTExLDI0OTEyLDI0OTE0LDI0OTE1LDI0OTE2LDI0OTE4LDI0OTE5LDI0OTIwLDI0OTIxLDI0OTIyLDI0OTIzLDI0OTI0LDI0OTI2LDI0OTI3LDI0OTI4LDI0OTI5LDI0OTMxLDI0OTMyLDI0OTMzLDI0OTM0LDI0OTM3LDI0OTM4LDI0OTM5LDI0OTQwLDI0OTQxLDI0OTQyLDI0OTQzLDI0OTQ1LDI0OTQ2LDI0OTQ3LDI0OTQ4LDI0OTUwLDI0OTUyLDI0OTUzLDI0OTU0LDI0OTU1LDI0OTU2LDI0OTU3LDI0OTU4LDI0OTU5LDI0OTYwLDI0OTYxLDI0OTYyLDI0OTYzLDI0OTY0LDI0OTY1LDI0OTY2LDI0OTY3LDI0OTY4LDI0OTY5LDI0OTcwLDI0OTcyLDI0OTczLDI0OTc1LDI0OTc2LDI0OTc3LDI0OTc4LDI0OTc5LDI0OTgxLDI0OTgyLDI0OTgzLDI0OTg0LDI0OTg1LDI0OTg2LDI0OTg3LDI0OTg4LDI0OTkwLDI0OTkxLDI0OTkyLDI0OTkzLDI0OTk0LDI0OTk1LDI0OTk2LDI0OTk3LDI0OTk4LDI1MDAyLDI1MDAzLDI1MDA1LDI1MDA2LDI1MDA3LDI1MDA4LDI1MDA5LDI1MDEwLDI1MDExLDI1MDEyLDI1MDEzLDI1MDE0LDI1MDE2LDI1MDE3LDI1MDE4LDI1MDE5LDI1MDIwLDI1MDIxLDI1MDIzLDI1MDI0LDI1MDI1LDI1MDI3LDI1MDI4LDI1MDI5LDI1MDMwLDI1MDMxLDI1MDMzLDI1MDM2LDI1MDM3LDI1MDM4LDI1MDM5LDI1MDQwLDI1MDQzLDI1MDQ1LDI1MDQ2LDI1MDQ3LDI1MDQ4LDI1MDQ5LDI1MDUwLDI1MDUxLDI1MDUyLDI1MDUzLDI1MDU0LDI1MDU1LDI1MDU2LDI1MDU3LDI1MDU4LDI1MDU5LDI1MDYwLDI1MDYxLDI1MDYzLDI1MDY0LDI1MDY1LDI1MDY2LDI1MDY3LDI1MDY4LDI1MDY5LDI1MDcwLDI1MDcxLDI1MDcyLDI1MDczLDI1MDc0LDI1MDc1LDI1MDc2LDI1MDc4LDI1MDc5LDI1MDgwLDI1MDgxLDI1MDgyLDI1MDgzLDI1MDg0LDI1MDg1LDI1MDg2LDI1MDg4LDI1MDg5LDI1MDkwLDI1MDkxLDI1MDkyLDI1MDkzLDI1MDk1LDI1MDk3LDI1MTA3LDI1MTA4LDI1MTEzLDI1MTE2LDI1MTE3LDI1MTE4LDI1MTIwLDI1MTIzLDI1MTI2LDI1MTI3LDI1MTI4LDI1MTI5LDI1MTMxLDI1MTMzLDI1MTM1LDI1MTM2LDI1MTM3LDI1MTM4LDI1MTQxLDI1MTQyLDI1MTQ0LDI1MTQ1LDI1MTQ2LDI1MTQ3LDI1MTQ4LDI1MTU0LDI1MTU2LDI1MTU3LDI1MTU4LDI1MTYyLDI1MTY3LDI1MTY4LDI1MTczLDI1MTc0LDI1MTc1LDI1MTc3LDI1MTc4LDI1MTgwLDI1MTgxLDI1MTgyLDI1MTgzLDI1MTg0LDI1MTg1LDI1MTg2LDI1MTg4LDI1MTg5LDI1MTkyLDI1MjAxLDI1MjAyLDI1MjA0LDI1MjA1LDI1MjA3LDI1MjA4LDI1MjEwLDI1MjExLDI1MjEzLDI1MjE3LDI1MjE4LDI1MjE5LDI1MjIxLDI1MjIyLDI1MjIzLDI1MjI0LDI1MjI3LDI1MjI4LDI1MjI5LDI1MjMwLDI1MjMxLDI1MjMyLDI1MjM2LDI1MjQxLDI1MjQ0LDI1MjQ1LDI1MjQ2LDI1MjUxLDI1MjU0LDI1MjU1LDI1MjU3LDI1MjU4LDI1MjYxLDI1MjYyLDI1MjYzLDI1MjY0LDI1MjY2LDI1MjY3LDI1MjY4LDI1MjcwLDI1MjcxLDI1MjcyLDI1Mjc0LDI1Mjc4LDI1MjgwLDI1MjgxLDI1MjgzLDI1MjkxLDI1Mjk1LDI1Mjk3LDI1MzAxLDI1MzA5LDI1MzEwLDI1MzEyLDI1MzEzLDI1MzE2LDI1MzIyLDI1MzIzLDI1MzI4LDI1MzMwLDI1MzMzLDI1MzM2LDI1MzM3LDI1MzM4LDI1MzM5LDI1MzQ0LDI1MzQ3LDI1MzQ4LDI1MzQ5LDI1MzUwLDI1MzU0LDI1MzU1LDI1MzU2LDI1MzU3LDI1MzU5LDI1MzYwLDI1MzYyLDI1MzYzLDI1MzY0LDI1MzY1LDI1MzY3LDI1MzY4LDI1MzY5LDI1MzcyLDI1MzgyLDI1MzgzLDI1Mzg1LDI1Mzg4LDI1Mzg5LDI1MzkwLDI1MzkyLDI1MzkzLDI1Mzk1LDI1Mzk2LDI1Mzk3LDI1Mzk4LDI1Mzk5LDI1NDAwLDI1NDAzLDI1NDA0LDI1NDA2LDI1NDA3LDI1NDA4LDI1NDA5LDI1NDEyLDI1NDE1LDI1NDE2LDI1NDE4LDI1NDI1LDI1NDI2LDI1NDI3LDI1NDI4LDI1NDMwLDI1NDMxLDI1NDMyLDI1NDMzLDI1NDM0LDI1NDM1LDI1NDM2LDI1NDM3LDI1NDQwLDI1NDQ0LDI1NDQ1LDI1NDQ2LDI1NDQ4LDI1NDUwLDI1NDUxLDI1NDUyLDI1NDU1LDI1NDU2LDI1NDU4LDI1NDU5LDI1NDYwLDI1NDYxLDI1NDY0LDI1NDY1LDI1NDY4LDI1NDY5LDI1NDcwLDI1NDcxLDI1NDczLDI1NDc1LDI1NDc2LDI1NDc3LDI1NDc4LDI1NDgzLDI1NDg1LDI1NDg5LDI1NDkxLDI1NDkyLDI1NDkzLDI1NDk1LDI1NDk3LDI1NDk4LDI1NDk5LDI1NTAwLDI1NTAxLDI1NTAyLDI1NTAzLDI1NTA1LDI1NTA4LDI1NTEwLDI1NTE1LDI1NTE5LDI1NTIxLDI1NTIyLDI1NTI1LDI1NTI2LDI1NTI5LDI1NTMxLDI1NTMzLDI1NTM1LDI1NTM2LDI1NTM3LDI1NTM4LDI1NTM5LDI1NTQxLDI1NTQzLDI1NTQ0LDI1NTQ2LDI1NTQ3LDI1NTQ4LDI1NTUzLDI1NTU1LDI1NTU2LDI1NTU3LDI1NTU5LDI1NTYwLDI1NTYxLDI1NTYyLDI1NTYzLDI1NTY0LDI1NTY1LDI1NTY3LDI1NTcwLDI1NTcyLDI1NTczLDI1NTc0LDI1NTc1LDI1NTc2LDI1NTc5LDI1NTgwLDI1NTgyLDI1NTgzLDI1NTg0LDI1NTg1LDI1NTg3LDI1NTg5LDI1NTkxLDI1NTkzLDI1NTk0LDI1NTk1LDI1NTk2LDI1NTk4LDI1NjAzLDI1NjA0LDI1NjA2LDI1NjA3LDI1NjA4LDI1NjA5LDI1NjEwLDI1NjEzLDI1NjE0LDI1NjE3LDI1NjE4LDI1NjIxLDI1NjIyLDI1NjIzLDI1NjI0LDI1NjI1LDI1NjI2LDI1NjI5LDI1NjMxLDI1NjM0LDI1NjM1LDI1NjM2LDI1NjM3LDI1NjM5LDI1NjQwLDI1NjQxLDI1NjQzLDI1NjQ2LDI1NjQ3LDI1NjQ4LDI1NjQ5LDI1NjUwLDI1NjUxLDI1NjUzLDI1NjU0LDI1NjU1LDI1NjU2LDI1NjU3LDI1NjU5LDI1NjYwLDI1NjYyLDI1NjY0LDI1NjY2LDI1NjY3LDI1NjczLDI1Njc1LDI1Njc2LDI1Njc3LDI1Njc4LDI1Njc5LDI1NjgwLDI1NjgxLDI1NjgzLDI1Njg1LDI1Njg2LDI1Njg3LDI1Njg5LDI1NjkwLDI1NjkxLDI1NjkyLDI1NjkzLDI1Njk1LDI1Njk2LDI1Njk3LDI1Njk4LDI1Njk5LDI1NzAwLDI1NzAxLDI1NzAyLDI1NzA0LDI1NzA2LDI1NzA3LDI1NzA4LDI1NzEwLDI1NzExLDI1NzEyLDI1NzEzLDI1NzE0LDI1NzE1LDI1NzE2LDI1NzE3LDI1NzE4LDI1NzE5LDI1NzIzLDI1NzI0LDI1NzI1LDI1NzI2LDI1NzI3LDI1NzI4LDI1NzI5LDI1NzMxLDI1NzM0LDI1NzM2LDI1NzM3LDI1NzM4LDI1NzM5LDI1NzQwLDI1NzQxLDI1NzQyLDI1NzQzLDI1NzQ0LDI1NzQ3LDI1NzQ4LDI1NzUxLDI1NzUyLDI1NzU0LDI1NzU1LDI1NzU2LDI1NzU3LDI1NzU5LDI1NzYwLDI1NzYxLDI1NzYyLDI1NzYzLDI1NzY1LDI1NzY2LDI1NzY3LDI1NzY4LDI1NzcwLDI1NzcxLDI1Nzc1LDI1Nzc3LDI1Nzc4LDI1Nzc5LDI1NzgwLDI1NzgyLDI1Nzg1LDI1Nzg3LDI1Nzg5LDI1NzkwLDI1NzkxLDI1NzkzLDI1Nzk1LDI1Nzk2LDI1Nzk4LDI1Nzk5LDI1ODAwLDI1ODAxLDI1ODAyLDI1ODAzLDI1ODA0LDI1ODA3LDI1ODA5LDI1ODExLDI1ODEyLDI1ODEzLDI1ODE0LDI1ODE3LDI1ODE4LDI1ODE5LDI1ODIwLDI1ODIxLDI1ODIzLDI1ODI0LDI1ODI1LDI1ODI3LDI1ODI5LDI1ODMxLDI1ODMyLDI1ODMzLDI1ODM0LDI1ODM1LDI1ODM2LDI1ODM3LDI1ODM4LDI1ODM5LDI1ODQwLDI1ODQxLDI1ODQyLDI1ODQzLDI1ODQ0LDI1ODQ1LDI1ODQ2LDI1ODQ3LDI1ODQ4LDI1ODQ5LDI1ODUwLDI1ODUxLDI1ODUyLDI1ODUzLDI1ODU0LDI1ODU1LDI1ODU3LDI1ODU4LDI1ODU5LDI1ODYwLDI1ODYxLDI1ODYyLDI1ODYzLDI1ODY0LDI1ODY2LDI1ODY3LDI1ODY4LDI1ODY5LDI1ODcwLDI1ODcxLDI1ODcyLDI1ODczLDI1ODc1LDI1ODc2LDI1ODc3LDI1ODc4LDI1ODc5LDI1ODgxLDI1ODgyLDI1ODgzLDI1ODg0LDI1ODg1LDI1ODg2LDI1ODg3LDI1ODg4LDI1ODg5LDI1ODkwLDI1ODkxLDI1ODkyLDI1ODk0LDI1ODk1LDI1ODk2LDI1ODk3LDI1ODk4LDI1OTAwLDI1OTAxLDI1OTA0LDI1OTA1LDI1OTA2LDI1OTA3LDI1OTExLDI1OTE0LDI1OTE2LDI1OTE3LDI1OTIwLDI1OTIxLDI1OTIyLDI1OTIzLDI1OTI0LDI1OTI2LDI1OTI3LDI1OTMwLDI1OTMxLDI1OTMzLDI1OTM0LDI1OTM2LDI1OTM4LDI1OTM5LDI1OTQwLDI1OTQzLDI1OTQ0LDI1OTQ2LDI1OTQ4LDI1OTUxLDI1OTUyLDI1OTUzLDI1OTU2LDI1OTU3LDI1OTU5LDI1OTYwLDI1OTYxLDI1OTYyLDI1OTY1LDI1OTY2LDI1OTY3LDI1OTY5LDI1OTcxLDI1OTczLDI1OTc0LDI1OTc2LDI1OTc3LDI1OTc4LDI1OTc5LDI1OTgwLDI1OTgxLDI1OTgyLDI1OTgzLDI1OTg0LDI1OTg1LDI1OTg2LDI1OTg3LDI1OTg4LDI1OTg5LDI1OTkwLDI1OTkyLDI1OTkzLDI1OTk0LDI1OTk3LDI1OTk4LDI1OTk5LDI2MDAyLDI2MDA0LDI2MDA1LDI2MDA2LDI2MDA4LDI2MDEwLDI2MDEzLDI2MDE0LDI2MDE2LDI2MDE4LDI2MDE5LDI2MDIyLDI2MDI0LDI2MDI2LDI2MDI4LDI2MDMwLDI2MDMzLDI2MDM0LDI2MDM1LDI2MDM2LDI2MDM3LDI2MDM4LDI2MDM5LDI2MDQwLDI2MDQyLDI2MDQzLDI2MDQ2LDI2MDQ3LDI2MDQ4LDI2MDUwLDI2MDU1LDI2MDU2LDI2MDU3LDI2MDU4LDI2MDYxLDI2MDY0LDI2MDY1LDI2MDY3LDI2MDY4LDI2MDY5LDI2MDcyLDI2MDczLDI2MDc0LDI2MDc1LDI2MDc2LDI2MDc3LDI2MDc4LDI2MDc5LDI2MDgxLDI2MDgzLDI2MDg0LDI2MDkwLDI2MDkxLDI2MDk4LDI2MDk5LDI2MTAwLDI2MTAxLDI2MTA0LDI2MTA1LDI2MTA3LDI2MTA4LDI2MTA5LDI2MTEwLDI2MTExLDI2MTEzLDI2MTE2LDI2MTE3LDI2MTE5LDI2MTIwLDI2MTIxLDI2MTIzLDI2MTI1LDI2MTI4LDI2MTI5LDI2MTMwLDI2MTM0LDI2MTM1LDI2MTM2LDI2MTM4LDI2MTM5LDI2MTQwLDI2MTQyLDI2MTQ1LDI2MTQ2LDI2MTQ3LDI2MTQ4LDI2MTUwLDI2MTUzLDI2MTU0LDI2MTU1LDI2MTU2LDI2MTU4LDI2MTYwLDI2MTYyLDI2MTYzLDI2MTY3LDI2MTY4LDI2MTY5LDI2MTcwLDI2MTcxLDI2MTczLDI2MTc1LDI2MTc2LDI2MTc4LDI2MTgwLDI2MTgxLDI2MTgyLDI2MTgzLDI2MTg0LDI2MTg1LDI2MTg2LDI2MTg5LDI2MTkwLDI2MTkyLDI2MTkzLDI2MjAwLDI2MjAxLDI2MjAzLDI2MjA0LDI2MjA1LDI2MjA2LDI2MjA4LDI2MjEwLDI2MjExLDI2MjEzLDI2MjE1LDI2MjE3LDI2MjE4LDI2MjE5LDI2MjIwLDI2MjIxLDI2MjI1LDI2MjI2LDI2MjI3LDI2MjI5LDI2MjMyLDI2MjMzLDI2MjM1LDI2MjM2LDI2MjM3LDI2MjM5LDI2MjQwLDI2MjQxLDI2MjQzLDI2MjQ1LDI2MjQ2LDI2MjQ4LDI2MjQ5LDI2MjUwLDI2MjUxLDI2MjUzLDI2MjU0LDI2MjU1LDI2MjU2LDI2MjU4LDI2MjU5LDI2MjYwLDI2MjYxLDI2MjY0LDI2MjY1LDI2MjY2LDI2MjY3LDI2MjY4LDI2MjcwLDI2MjcxLDI2MjcyLDI2MjczLDI2Mjc0LDI2Mjc1LDI2Mjc2LDI2Mjc3LDI2Mjc4LDI2MjgxLDI2MjgyLDI2MjgzLDI2Mjg0LDI2Mjg1LDI2Mjg3LDI2Mjg4LDI2Mjg5LDI2MjkwLDI2MjkxLDI2MjkzLDI2Mjk0LDI2Mjk1LDI2Mjk2LDI2Mjk4LDI2Mjk5LDI2MzAwLDI2MzAxLDI2MzAzLDI2MzA0LDI2MzA1LDI2MzA2LDI2MzA3LDI2MzA4LDI2MzA5LDI2MzEwLDI2MzExLDI2MzEyLDI2MzEzLDI2MzE0LDI2MzE1LDI2MzE2LDI2MzE3LDI2MzE4LDI2MzE5LDI2MzIwLDI2MzIxLDI2MzIyLDI2MzIzLDI2MzI0LDI2MzI1LDI2MzI2LDI2MzI3LDI2MzI4LDI2MzMwLDI2MzM0LDI2MzM1LDI2MzM2LDI2MzM3LDI2MzM4LDI2MzM5LDI2MzQwLDI2MzQxLDI2MzQzLDI2MzQ0LDI2MzQ2LDI2MzQ3LDI2MzQ4LDI2MzQ5LDI2MzUwLDI2MzUxLDI2MzUzLDI2MzU3LDI2MzU4LDI2MzYwLDI2MzYyLDI2MzYzLDI2MzY1LDI2MzY5LDI2MzcwLDI2MzcxLDI2MzcyLDI2MzczLDI2Mzc0LDI2Mzc1LDI2MzgwLDI2MzgyLDI2MzgzLDI2Mzg1LDI2Mzg2LDI2Mzg3LDI2MzkwLDI2MzkyLDI2MzkzLDI2Mzk0LDI2Mzk2LDI2Mzk4LDI2NDAwLDI2NDAxLDI2NDAyLDI2NDAzLDI2NDA0LDI2NDA1LDI2NDA3LDI2NDA5LDI2NDE0LDI2NDE2LDI2NDE4LDI2NDE5LDI2NDIyLDI2NDIzLDI2NDI0LDI2NDI1LDI2NDI3LDI2NDI4LDI2NDMwLDI2NDMxLDI2NDMzLDI2NDM2LDI2NDM3LDI2NDM5LDI2NDQyLDI2NDQzLDI2NDQ1LDI2NDUwLDI2NDUyLDI2NDUzLDI2NDU1LDI2NDU2LDI2NDU3LDI2NDU4LDI2NDU5LDI2NDYxLDI2NDY2LDI2NDY3LDI2NDY4LDI2NDcwLDI2NDcxLDI2NDc1LDI2NDc2LDI2NDc4LDI2NDgxLDI2NDg0LDI2NDg2LDI2NDg4LDI2NDg5LDI2NDkwLDI2NDkxLDI2NDkzLDI2NDk2LDI2NDk4LDI2NDk5LDI2NTAxLDI2NTAyLDI2NTA0LDI2NTA2LDI2NTA4LDI2NTA5LDI2NTEwLDI2NTExLDI2NTEzLDI2NTE0LDI2NTE1LDI2NTE2LDI2NTE4LDI2NTIxLDI2NTIzLDI2NTI3LDI2NTI4LDI2NTI5LDI2NTMyLDI2NTM0LDI2NTM3LDI2NTQwLDI2NTQyLDI2NTQ1LDI2NTQ2LDI2NTQ4LDI2NTUzLDI2NTU0LDI2NTU1LDI2NTU2LDI2NTU3LDI2NTU4LDI2NTU5LDI2NTYwLDI2NTYyLDI2NTY1LDI2NTY2LDI2NTY3LDI2NTY4LDI2NTY5LDI2NTcwLDI2NTcxLDI2NTcyLDI2NTczLDI2NTc0LDI2NTgxLDI2NTgyLDI2NTgzLDI2NTg3LDI2NTkxLDI2NTkzLDI2NTk1LDI2NTk2LDI2NTk4LDI2NTk5LDI2NjAwLDI2NjAyLDI2NjAzLDI2NjA1LDI2NjA2LDI2NjEwLDI2NjEzLDI2NjE0LDI2NjE1LDI2NjE2LDI2NjE3LDI2NjE4LDI2NjE5LDI2NjIwLDI2NjIyLDI2NjI1LDI2NjI2LDI2NjI3LDI2NjI4LDI2NjMwLDI2NjM3LDI2NjQwLDI2NjQyLDI2NjQ0LDI2NjQ1LDI2NjQ4LDI2NjQ5LDI2NjUwLDI2NjUxLDI2NjUyLDI2NjU0LDI2NjU1LDI2NjU2LDI2NjU4LDI2NjU5LDI2NjYwLDI2NjYxLDI2NjYyLDI2NjYzLDI2NjY0LDI2NjY3LDI2NjY4LDI2NjY5LDI2NjcwLDI2NjcxLDI2NjcyLDI2NjczLDI2Njc2LDI2Njc3LDI2Njc4LDI2NjgyLDI2NjgzLDI2Njg3LDI2Njk1LDI2Njk5LDI2NzAxLDI2NzAzLDI2NzA2LDI2NzEwLDI2NzExLDI2NzEyLDI2NzEzLDI2NzE0LDI2NzE1LDI2NzE2LDI2NzE3LDI2NzE4LDI2NzE5LDI2NzMwLDI2NzMyLDI2NzMzLDI2NzM0LDI2NzM1LDI2NzM2LDI2NzM3LDI2NzM4LDI2NzM5LDI2NzQxLDI2NzQ0LDI2NzQ1LDI2NzQ2LDI2NzQ3LDI2NzQ4LDI2NzQ5LDI2NzUwLDI2NzUxLDI2NzUyLDI2NzU0LDI2NzU2LDI2NzU5LDI2NzYwLDI2NzYxLDI2NzYyLDI2NzYzLDI2NzY0LDI2NzY1LDI2NzY2LDI2NzY4LDI2NzY5LDI2NzcwLDI2NzcyLDI2NzczLDI2Nzc0LDI2Nzc2LDI2Nzc3LDI2Nzc4LDI2Nzc5LDI2NzgwLDI2NzgxLDI2NzgyLDI2NzgzLDI2Nzg0LDI2Nzg1LDI2Nzg3LDI2Nzg4LDI2Nzg5LDI2NzkzLDI2Nzk0LDI2Nzk1LDI2Nzk2LDI2Nzk4LDI2ODAxLDI2ODAyLDI2ODA0LDI2ODA2LDI2ODA3LDI2ODA4LDI2ODA5LDI2ODEwLDI2ODExLDI2ODEyLDI2ODEzLDI2ODE0LDI2ODE1LDI2ODE3LDI2ODE5LDI2ODIwLDI2ODIxLDI2ODIyLDI2ODIzLDI2ODI0LDI2ODI2LDI2ODI4LDI2ODMwLDI2ODMxLDI2ODMyLDI2ODMzLDI2ODM1LDI2ODM2LDI2ODM4LDI2ODM5LDI2ODQxLDI2ODQzLDI2ODQ0LDI2ODQ1LDI2ODQ2LDI2ODQ3LDI2ODQ5LDI2ODUwLDI2ODUyLDI2ODUzLDI2ODU0LDI2ODU1LDI2ODU2LDI2ODU3LDI2ODU4LDI2ODU5LDI2ODYwLDI2ODYxLDI2ODYzLDI2ODY2LDI2ODY3LDI2ODY4LDI2ODcwLDI2ODcxLDI2ODcyLDI2ODc1LDI2ODc3LDI2ODc4LDI2ODc5LDI2ODgwLDI2ODgyLDI2ODgzLDI2ODg0LDI2ODg2LDI2ODg3LDI2ODg4LDI2ODg5LDI2ODkwLDI2ODkyLDI2ODk1LDI2ODk3LDI2ODk5LDI2OTAwLDI2OTAxLDI2OTAyLDI2OTAzLDI2OTA0LDI2OTA1LDI2OTA2LDI2OTA3LDI2OTA4LDI2OTA5LDI2OTEwLDI2OTEzLDI2OTE0LDI2OTE1LDI2OTE3LDI2OTE4LDI2OTE5LDI2OTIwLDI2OTIxLDI2OTIyLDI2OTIzLDI2OTI0LDI2OTI2LDI2OTI3LDI2OTI5LDI2OTMwLDI2OTMxLDI2OTMzLDI2OTM0LDI2OTM1LDI2OTM2LDI2OTM4LDI2OTM5LDI2OTQwLDI2OTQyLDI2OTQ0LDI2OTQ1LDI2OTQ3LDI2OTQ4LDI2OTQ5LDI2OTUwLDI2OTUxLDI2OTUyLDI2OTUzLDI2OTU0LDI2OTU1LDI2OTU2LDI2OTU3LDI2OTU4LDI2OTU5LDI2OTYwLDI2OTYxLDI2OTYyLDI2OTYzLDI2OTY1LDI2OTY2LDI2OTY4LDI2OTY5LDI2OTcxLDI2OTcyLDI2OTc1LDI2OTc3LDI2OTc4LDI2OTgwLDI2OTgxLDI2OTgzLDI2OTg0LDI2OTg1LDI2OTg2LDI2OTg4LDI2OTg5LDI2OTkxLDI2OTkyLDI2OTk0LDI2OTk1LDI2OTk2LDI2OTk3LDI2OTk4LDI3MDAyLDI3MDAzLDI3MDA1LDI3MDA2LDI3MDA3LDI3MDA5LDI3MDExLDI3MDEzLDI3MDE4LDI3MDE5LDI3MDIwLDI3MDIyLDI3MDIzLDI3MDI0LDI3MDI1LDI3MDI2LDI3MDI3LDI3MDMwLDI3MDMxLDI3MDMzLDI3MDM0LDI3MDM3LDI3MDM4LDI3MDM5LDI3MDQwLDI3MDQxLDI3MDQyLDI3MDQzLDI3MDQ0LDI3MDQ1LDI3MDQ2LDI3MDQ5LDI3MDUwLDI3MDUyLDI3MDU0LDI3MDU1LDI3MDU2LDI3MDU4LDI3MDU5LDI3MDYxLDI3MDYyLDI3MDY0LDI3MDY1LDI3MDY2LDI3MDY4LDI3MDY5LDI3MDcwLDI3MDcxLDI3MDcyLDI3MDc0LDI3MDc1LDI3MDc2LDI3MDc3LDI3MDc4LDI3MDc5LDI3MDgwLDI3MDgxLDI3MDgzLDI3MDg1LDI3MDg3LDI3MDg5LDI3MDkwLDI3MDkxLDI3MDkzLDI3MDk0LDI3MDk1LDI3MDk2LDI3MDk3LDI3MDk4LDI3MTAwLDI3MTAxLDI3MTAyLDI3MTA1LDI3MTA2LDI3MTA3LDI3MTA4LDI3MTA5LDI3MTEwLDI3MTExLDI3MTEyLDI3MTEzLDI3MTE0LDI3MTE1LDI3MTE2LDI3MTE4LDI3MTE5LDI3MTIwLDI3MTIxLDI3MTIzLDI3MTI0LDI3MTI1LDI3MTI2LDI3MTI3LDI3MTI4LDI3MTI5LDI3MTMwLDI3MTMxLDI3MTMyLDI3MTM0LDI3MTM2LDI3MTM3LDI3MTM4LDI3MTM5LDI3MTQwLDI3MTQxLDI3MTQyLDI3MTQzLDI3MTQ0LDI3MTQ1LDI3MTQ3LDI3MTQ4LDI3MTQ5LDI3MTUwLDI3MTUxLDI3MTUyLDI3MTUzLDI3MTU0LDI3MTU1LDI3MTU2LDI3MTU3LDI3MTU4LDI3MTYxLDI3MTYyLDI3MTYzLDI3MTY0LDI3MTY1LDI3MTY2LDI3MTY4LDI3MTcwLDI3MTcxLDI3MTcyLDI3MTczLDI3MTc0LDI3MTc1LDI3MTc3LDI3MTc5LDI3MTgwLDI3MTgxLDI3MTgyLDI3MTg0LDI3MTg2LDI3MTg3LDI3MTg4LDI3MTkwLDI3MTkxLDI3MTkyLDI3MTkzLDI3MTk0LDI3MTk1LDI3MTk2LDI3MTk5LDI3MjAwLDI3MjAxLDI3MjAyLDI3MjAzLDI3MjA1LDI3MjA2LDI3MjA4LDI3MjA5LDI3MjEwLDI3MjExLDI3MjEyLDI3MjEzLDI3MjE0LDI3MjE1LDI3MjE3LDI3MjE4LDI3MjE5LDI3MjIwLDI3MjIxLDI3MjIyLDI3MjIzLDI3MjI2LDI3MjI4LDI3MjI5LDI3MjMwLDI3MjMxLDI3MjMyLDI3MjM0LDI3MjM1LDI3MjM2LDI3MjM4LDI3MjM5LDI3MjQwLDI3MjQxLDI3MjQyLDI3MjQzLDI3MjQ0LDI3MjQ1LDI3MjQ2LDI3MjQ3LDI3MjQ4LDI3MjUwLDI3MjUxLDI3MjUyLDI3MjUzLDI3MjU0LDI3MjU1LDI3MjU2LDI3MjU4LDI3MjU5LDI3MjYxLDI3MjYyLDI3MjYzLDI3MjY1LDI3MjY2LDI3MjY3LDI3MjY5LDI3MjcwLDI3MjcxLDI3MjcyLDI3MjczLDI3Mjc0LDI3Mjc1LDI3Mjc2LDI3Mjc3LDI3Mjc5LDI3MjgyLDI3MjgzLDI3Mjg0LDI3Mjg1LDI3Mjg2LDI3Mjg4LDI3Mjg5LDI3MjkwLDI3MjkxLDI3MjkyLDI3MjkzLDI3Mjk0LDI3Mjk1LDI3Mjk3LDI3Mjk4LDI3Mjk5LDI3MzAwLDI3MzAxLDI3MzAyLDI3MzAzLDI3MzA0LDI3MzA2LDI3MzA5LDI3MzEwLDI3MzExLDI3MzEyLDI3MzEzLDI3MzE0LDI3MzE1LDI3MzE2LDI3MzE3LDI3MzE4LDI3MzE5LDI3MzIwLDI3MzIxLDI3MzIyLDI3MzIzLDI3MzI0LDI3MzI1LDI3MzI2LDI3MzI3LDI3MzI4LDI3MzI5LDI3MzMwLDI3MzMxLDI3MzMyLDI3MzMzLDI3MzM0LDI3MzM1LDI3MzM2LDI3MzM3LDI3MzM4LDI3MzM5LDI3MzQwLDI3MzQxLDI3MzQyLDI3MzQzLDI3MzQ0LDI3MzQ1LDI3MzQ2LDI3MzQ3LDI3MzQ4LDI3MzQ5LDI3MzUwLDI3MzUxLDI3MzUyLDI3MzUzLDI3MzU0LDI3MzU1LDI3MzU2LDI3MzU3LDI3MzU4LDI3MzU5LDI3MzYwLDI3MzYxLDI3MzYyLDI3MzYzLDI3MzY0LDI3MzY1LDI3MzY2LDI3MzY3LDI3MzY4LDI3MzY5LDI3MzcwLDI3MzcxLDI3MzcyLDI3MzczLDI3Mzc0LDI3Mzc1LDI3Mzc2LDI3Mzc3LDI3Mzc4LDI3Mzc5LDI3MzgwLDI3MzgxLDI3MzgyLDI3MzgzLDI3Mzg0LDI3Mzg1LDI3Mzg2LDI3Mzg3LDI3Mzg4LDI3Mzg5LDI3MzkwLDI3MzkxLDI3MzkyLDI3MzkzLDI3Mzk0LDI3Mzk1LDI3Mzk2LDI3Mzk3LDI3Mzk4LDI3Mzk5LDI3NDAwLDI3NDAxLDI3NDAyLDI3NDAzLDI3NDA0LDI3NDA1LDI3NDA2LDI3NDA3LDI3NDA4LDI3NDA5LDI3NDEwLDI3NDExLDI3NDEyLDI3NDEzLDI3NDE0LDI3NDE1LDI3NDE2LDI3NDE3LDI3NDE4LDI3NDE5LDI3NDIwLDI3NDIxLDI3NDIyLDI3NDIzLDI3NDI5LDI3NDMwLDI3NDMyLDI3NDMzLDI3NDM0LDI3NDM1LDI3NDM2LDI3NDM3LDI3NDM4LDI3NDM5LDI3NDQwLDI3NDQxLDI3NDQzLDI3NDQ0LDI3NDQ1LDI3NDQ2LDI3NDQ4LDI3NDUxLDI3NDUyLDI3NDUzLDI3NDU1LDI3NDU2LDI3NDU3LDI3NDU4LDI3NDYwLDI3NDYxLDI3NDY0LDI3NDY2LDI3NDY3LDI3NDY5LDI3NDcwLDI3NDcxLDI3NDcyLDI3NDczLDI3NDc0LDI3NDc1LDI3NDc2LDI3NDc3LDI3NDc4LDI3NDc5LDI3NDgwLDI3NDgyLDI3NDgzLDI3NDg0LDI3NDg1LDI3NDg2LDI3NDg3LDI3NDg4LDI3NDg5LDI3NDk2LDI3NDk3LDI3NDk5LDI3NTAwLDI3NTAxLDI3NTAyLDI3NTAzLDI3NTA0LDI3NTA1LDI3NTA2LDI3NTA3LDI3NTA4LDI3NTA5LDI3NTEwLDI3NTExLDI3NTEyLDI3NTE0LDI3NTE3LDI3NTE4LDI3NTE5LDI3NTIwLDI3NTI1LDI3NTI4LDI3NTMyLDI3NTM0LDI3NTM1LDI3NTM2LDI3NTM3LDI3NTQwLDI3NTQxLDI3NTQzLDI3NTQ0LDI3NTQ1LDI3NTQ4LDI3NTQ5LDI3NTUwLDI3NTUxLDI3NTUyLDI3NTU0LDI3NTU1LDI3NTU2LDI3NTU3LDI3NTU4LDI3NTU5LDI3NTYwLDI3NTYxLDI3NTYzLDI3NTY0LDI3NTY1LDI3NTY2LDI3NTY3LDI3NTY4LDI3NTY5LDI3NTcwLDI3NTc0LDI3NTc2LDI3NTc3LDI3NTc4LDI3NTc5LDI3NTgwLDI3NTgxLDI3NTgyLDI3NTg0LDI3NTg3LDI3NTg4LDI3NTkwLDI3NTkxLDI3NTkyLDI3NTkzLDI3NTk0LDI3NTk2LDI3NTk4LDI3NjAwLDI3NjAxLDI3NjA4LDI3NjEwLDI3NjEyLDI3NjEzLDI3NjE0LDI3NjE1LDI3NjE2LDI3NjE4LDI3NjE5LDI3NjIwLDI3NjIxLDI3NjIyLDI3NjIzLDI3NjI0LDI3NjI1LDI3NjI4LDI3NjI5LDI3NjMwLDI3NjMyLDI3NjMzLDI3NjM0LDI3NjM2LDI3NjM4LDI3NjM5LDI3NjQwLDI3NjQyLDI3NjQzLDI3NjQ0LDI3NjQ2LDI3NjQ3LDI3NjQ4LDI3NjQ5LDI3NjUwLDI3NjUxLDI3NjUyLDI3NjU2LDI3NjU3LDI3NjU4LDI3NjU5LDI3NjYwLDI3NjYyLDI3NjY2LDI3NjcxLDI3Njc2LDI3Njc3LDI3Njc4LDI3NjgwLDI3NjgzLDI3Njg1LDI3NjkxLDI3NjkyLDI3NjkzLDI3Njk3LDI3Njk5LDI3NzAyLDI3NzAzLDI3NzA1LDI3NzA2LDI3NzA3LDI3NzA4LDI3NzEwLDI3NzExLDI3NzE1LDI3NzE2LDI3NzE3LDI3NzIwLDI3NzIzLDI3NzI0LDI3NzI1LDI3NzI2LDI3NzI3LDI3NzI5LDI3NzMwLDI3NzMxLDI3NzM0LDI3NzM2LDI3NzM3LDI3NzM4LDI3NzQ2LDI3NzQ3LDI3NzQ5LDI3NzUwLDI3NzUxLDI3NzU1LDI3NzU2LDI3NzU3LDI3NzU4LDI3NzU5LDI3NzYxLDI3NzYzLDI3NzY1LDI3NzY3LDI3NzY4LDI3NzcwLDI3NzcxLDI3NzcyLDI3Nzc1LDI3Nzc2LDI3NzgwLDI3NzgzLDI3Nzg2LDI3Nzg3LDI3Nzg5LDI3NzkwLDI3NzkzLDI3Nzk0LDI3Nzk3LDI3Nzk4LDI3Nzk5LDI3ODAwLDI3ODAyLDI3ODA0LDI3ODA1LDI3ODA2LDI3ODA4LDI3ODEwLDI3ODE2LDI3ODIwLDI3ODIzLDI3ODI0LDI3ODI4LDI3ODI5LDI3ODMwLDI3ODMxLDI3ODM0LDI3ODQwLDI3ODQxLDI3ODQyLDI3ODQzLDI3ODQ2LDI3ODQ3LDI3ODQ4LDI3ODUxLDI3ODUzLDI3ODU0LDI3ODU1LDI3ODU3LDI3ODU4LDI3ODY0LDI3ODY1LDI3ODY2LDI3ODY4LDI3ODY5LDI3ODcxLDI3ODc2LDI3ODc4LDI3ODc5LDI3ODgxLDI3ODg0LDI3ODg1LDI3ODkwLDI3ODkyLDI3ODk3LDI3OTAzLDI3OTA0LDI3OTA2LDI3OTA3LDI3OTA5LDI3OTEwLDI3OTEyLDI3OTEzLDI3OTE0LDI3OTE3LDI3OTE5LDI3OTIwLDI3OTIxLDI3OTIzLDI3OTI0LDI3OTI1LDI3OTI2LDI3OTI4LDI3OTMyLDI3OTMzLDI3OTM1LDI3OTM2LDI3OTM3LDI3OTM4LDI3OTM5LDI3OTQwLDI3OTQyLDI3OTQ0LDI3OTQ1LDI3OTQ4LDI3OTQ5LDI3OTUxLDI3OTUyLDI3OTU2LDI3OTU4LDI3OTU5LDI3OTYwLDI3OTYyLDI3OTY3LDI3OTY4LDI3OTcwLDI3OTcyLDI3OTc3LDI3OTgwLDI3OTg0LDI3OTg5LDI3OTkwLDI3OTkxLDI3OTkyLDI3OTk1LDI3OTk3LDI3OTk5LDI4MDAxLDI4MDAyLDI4MDA0LDI4MDA1LDI4MDA3LDI4MDA4LDI4MDExLDI4MDEyLDI4MDEzLDI4MDE2LDI4MDE3LDI4MDE4LDI4MDE5LDI4MDIxLDI4MDIyLDI4MDI1LDI4MDI2LDI4MDI3LDI4MDI5LDI4MDMwLDI4MDMxLDI4MDMyLDI4MDMzLDI4MDM1LDI4MDM2LDI4MDM4LDI4MDM5LDI4MDQyLDI4MDQzLDI4MDQ1LDI4MDQ3LDI4MDQ4LDI4MDUwLDI4MDU0LDI4MDU1LDI4MDU2LDI4MDU3LDI4MDU4LDI4MDYwLDI4MDY2LDI4MDY5LDI4MDc2LDI4MDc3LDI4MDgwLDI4MDgxLDI4MDgzLDI4MDg0LDI4MDg2LDI4MDg3LDI4MDg5LDI4MDkwLDI4MDkxLDI4MDkyLDI4MDkzLDI4MDk0LDI4MDk3LDI4MDk4LDI4MDk5LDI4MTA0LDI4MTA1LDI4MTA2LDI4MTA5LDI4MTEwLDI4MTExLDI4MTEyLDI4MTE0LDI4MTE1LDI4MTE2LDI4MTE3LDI4MTE5LDI4MTIyLDI4MTIzLDI4MTI0LDI4MTI3LDI4MTMwLDI4MTMxLDI4MTMzLDI4MTM1LDI4MTM2LDI4MTM3LDI4MTM4LDI4MTQxLDI4MTQzLDI4MTQ0LDI4MTQ2LDI4MTQ4LDI4MTQ5LDI4MTUwLDI4MTUyLDI4MTU0LDI4MTU3LDI4MTU4LDI4MTU5LDI4MTYwLDI4MTYxLDI4MTYyLDI4MTYzLDI4MTY0LDI4MTY2LDI4MTY3LDI4MTY4LDI4MTY5LDI4MTcxLDI4MTc1LDI4MTc4LDI4MTc5LDI4MTgxLDI4MTg0LDI4MTg1LDI4MTg3LDI4MTg4LDI4MTkwLDI4MTkxLDI4MTk0LDI4MTk4LDI4MTk5LDI4MjAwLDI4MjAyLDI4MjA0LDI4MjA2LDI4MjA4LDI4MjA5LDI4MjExLDI4MjEzLDI4MjE0LDI4MjE1LDI4MjE3LDI4MjE5LDI4MjIwLDI4MjIxLDI4MjIyLDI4MjIzLDI4MjI0LDI4MjI1LDI4MjI2LDI4MjI5LDI4MjMwLDI4MjMxLDI4MjMyLDI4MjMzLDI4MjM0LDI4MjM1LDI4MjM2LDI4MjM5LDI4MjQwLDI4MjQxLDI4MjQyLDI4MjQ1LDI4MjQ3LDI4MjQ5LDI4MjUwLDI4MjUyLDI4MjUzLDI4MjU0LDI4MjU2LDI4MjU3LDI4MjU4LDI4MjU5LDI4MjYwLDI4MjYxLDI4MjYyLDI4MjYzLDI4MjY0LDI4MjY1LDI4MjY2LDI4MjY4LDI4MjY5LDI4MjcxLDI4MjcyLDI4MjczLDI4Mjc0LDI4Mjc1LDI4Mjc2LDI4Mjc3LDI4Mjc4LDI4Mjc5LDI4MjgwLDI4MjgxLDI4MjgyLDI4MjgzLDI4Mjg0LDI4Mjg1LDI4Mjg4LDI4Mjg5LDI4MjkwLDI4MjkyLDI4Mjk1LDI4Mjk2LDI4Mjk4LDI4Mjk5LDI4MzAwLDI4MzAxLDI4MzAyLDI4MzA1LDI4MzA2LDI4MzA3LDI4MzA4LDI4MzA5LDI4MzEwLDI4MzExLDI4MzEzLDI4MzE0LDI4MzE1LDI4MzE3LDI4MzE4LDI4MzIwLDI4MzIxLDI4MzIzLDI4MzI0LDI4MzI2LDI4MzI4LDI4MzI5LDI4MzMxLDI4MzMyLDI4MzMzLDI4MzM0LDI4MzM2LDI4MzM5LDI4MzQxLDI4MzQ0LDI4MzQ1LDI4MzQ4LDI4MzUwLDI4MzUxLDI4MzUyLDI4MzU1LDI4MzU2LDI4MzU3LDI4MzU4LDI4MzYwLDI4MzYxLDI4MzYyLDI4MzY0LDI4MzY1LDI4MzY2LDI4MzY4LDI4MzcwLDI4Mzc0LDI4Mzc2LDI4Mzc3LDI4Mzc5LDI4MzgwLDI4MzgxLDI4Mzg3LDI4MzkxLDI4Mzk0LDI4Mzk1LDI4Mzk2LDI4Mzk3LDI4Mzk4LDI4Mzk5LDI4NDAwLDI4NDAxLDI4NDAyLDI4NDAzLDI4NDA1LDI4NDA2LDI4NDA3LDI4NDA4LDI4NDEwLDI4NDExLDI4NDEyLDI4NDEzLDI4NDE0LDI4NDE1LDI4NDE2LDI4NDE3LDI4NDE5LDI4NDIwLDI4NDIxLDI4NDIzLDI4NDI0LDI4NDI2LDI4NDI3LDI4NDI4LDI4NDI5LDI4NDMwLDI4NDMyLDI4NDMzLDI4NDM0LDI4NDM4LDI4NDM5LDI4NDQwLDI4NDQxLDI4NDQyLDI4NDQzLDI4NDQ0LDI4NDQ1LDI4NDQ2LDI4NDQ3LDI4NDQ5LDI4NDUwLDI4NDUxLDI4NDUzLDI4NDU0LDI4NDU1LDI4NDU2LDI4NDYwLDI4NDYyLDI4NDY0LDI4NDY2LDI4NDY4LDI4NDY5LDI4NDcxLDI4NDcyLDI4NDczLDI4NDc0LDI4NDc1LDI4NDc2LDI4NDc3LDI4NDc5LDI4NDgwLDI4NDgxLDI4NDgyLDI4NDgzLDI4NDg0LDI4NDg1LDI4NDg4LDI4NDg5LDI4NDkwLDI4NDkyLDI4NDk0LDI4NDk1LDI4NDk2LDI4NDk3LDI4NDk4LDI4NDk5LDI4NTAwLDI4NTAxLDI4NTAyLDI4NTAzLDI4NTA1LDI4NTA2LDI4NTA3LDI4NTA5LDI4NTExLDI4NTEyLDI4NTEzLDI4NTE1LDI4NTE2LDI4NTE3LDI4NTE5LDI4NTIwLDI4NTIxLDI4NTIyLDI4NTIzLDI4NTI0LDI4NTI3LDI4NTI4LDI4NTI5LDI4NTMxLDI4NTMzLDI4NTM0LDI4NTM1LDI4NTM3LDI4NTM5LDI4NTQxLDI4NTQyLDI4NTQzLDI4NTQ0LDI4NTQ1LDI4NTQ2LDI4NTQ3LDI4NTQ5LDI4NTUwLDI4NTUxLDI4NTU0LDI4NTU1LDI4NTU5LDI4NTYwLDI4NTYxLDI4NTYyLDI4NTYzLDI4NTY0LDI4NTY1LDI4NTY2LDI4NTY3LDI4NTY4LDI4NTY5LDI4NTcwLDI4NTcxLDI4NTczLDI4NTc0LDI4NTc1LDI4NTc2LDI4NTc4LDI4NTc5LDI4NTgwLDI4NTgxLDI4NTgyLDI4NTg0LDI4NTg1LDI4NTg2LDI4NTg3LDI4NTg4LDI4NTg5LDI4NTkwLDI4NTkxLDI4NTkyLDI4NTkzLDI4NTk0LDI4NTk2LDI4NTk3LDI4NTk5LDI4NjAwLDI4NjAyLDI4NjAzLDI4NjA0LDI4NjA1LDI4NjA2LDI4NjA3LDI4NjA5LDI4NjExLDI4NjEyLDI4NjEzLDI4NjE0LDI4NjE1LDI4NjE2LDI4NjE4LDI4NjE5LDI4NjIwLDI4NjIxLDI4NjIyLDI4NjIzLDI4NjI0LDI4NjI3LDI4NjI4LDI4NjI5LDI4NjMwLDI4NjMxLDI4NjMyLDI4NjMzLDI4NjM0LDI4NjM1LDI4NjM2LDI4NjM3LDI4NjM5LDI4NjQyLDI4NjQzLDI4NjQ0LDI4NjQ1LDI4NjQ2LDI4NjQ3LDI4NjQ4LDI4NjQ5LDI4NjUwLDI4NjUxLDI4NjUyLDI4NjUzLDI4NjU2LDI4NjU3LDI4NjU4LDI4NjU5LDI4NjYwLDI4NjYxLDI4NjYyLDI4NjYzLDI4NjY0LDI4NjY1LDI4NjY2LDI4NjY3LDI4NjY4LDI4NjY5LDI4NjcwLDI4NjcxLDI4NjcyLDI4NjczLDI4Njc0LDI4Njc1LDI4Njc2LDI4Njc3LDI4Njc4LDI4Njc5LDI4NjgwLDI4NjgxLDI4NjgyLDI4NjgzLDI4Njg0LDI4Njg1LDI4Njg2LDI4Njg3LDI4Njg4LDI4NjkwLDI4NjkxLDI4NjkyLDI4NjkzLDI4Njk0LDI4Njk1LDI4Njk2LDI4Njk3LDI4NzAwLDI4NzAxLDI4NzAyLDI4NzAzLDI4NzA0LDI4NzA1LDI4NzA2LDI4NzA4LDI4NzA5LDI4NzEwLDI4NzExLDI4NzEyLDI4NzEzLDI4NzE0LDI4NzE1LDI4NzE2LDI4NzE3LDI4NzE4LDI4NzE5LDI4NzIwLDI4NzIxLDI4NzIyLDI4NzIzLDI4NzI0LDI4NzI2LDI4NzI3LDI4NzI4LDI4NzMwLDI4NzMxLDI4NzMyLDI4NzMzLDI4NzM0LDI4NzM1LDI4NzM2LDI4NzM3LDI4NzM4LDI4NzM5LDI4NzQwLDI4NzQxLDI4NzQyLDI4NzQzLDI4NzQ0LDI4NzQ1LDI4NzQ2LDI4NzQ3LDI4NzQ5LDI4NzUwLDI4NzUyLDI4NzUzLDI4NzU0LDI4NzU1LDI4NzU2LDI4NzU3LDI4NzU4LDI4NzU5LDI4NzYwLDI4NzYxLDI4NzYyLDI4NzYzLDI4NzY0LDI4NzY1LDI4NzY3LDI4NzY4LDI4NzY5LDI4NzcwLDI4NzcxLDI4NzcyLDI4NzczLDI4Nzc0LDI4Nzc1LDI4Nzc2LDI4Nzc3LDI4Nzc4LDI4NzgyLDI4Nzg1LDI4Nzg2LDI4Nzg3LDI4Nzg4LDI4NzkxLDI4NzkzLDI4Nzk0LDI4Nzk1LDI4Nzk3LDI4ODAxLDI4ODAyLDI4ODAzLDI4ODA0LDI4ODA2LDI4ODA3LDI4ODA4LDI4ODExLDI4ODEyLDI4ODEzLDI4ODE1LDI4ODE2LDI4ODE3LDI4ODE5LDI4ODIzLDI4ODI0LDI4ODI2LDI4ODI3LDI4ODMwLDI4ODMxLDI4ODMyLDI4ODMzLDI4ODM0LDI4ODM1LDI4ODM2LDI4ODM3LDI4ODM4LDI4ODM5LDI4ODQwLDI4ODQxLDI4ODQyLDI4ODQ4LDI4ODUwLDI4ODUyLDI4ODUzLDI4ODU0LDI4ODU4LDI4ODYyLDI4ODYzLDI4ODY4LDI4ODY5LDI4ODcwLDI4ODcxLDI4ODczLDI4ODc1LDI4ODc2LDI4ODc3LDI4ODc4LDI4ODc5LDI4ODgwLDI4ODgxLDI4ODgyLDI4ODgzLDI4ODg0LDI4ODg1LDI4ODg2LDI4ODg3LDI4ODkwLDI4ODkyLDI4ODkzLDI4ODk0LDI4ODk2LDI4ODk3LDI4ODk4LDI4ODk5LDI4OTAxLDI4OTA2LDI4OTEwLDI4OTEyLDI4OTEzLDI4OTE0LDI4OTE1LDI4OTE2LDI4OTE3LDI4OTE4LDI4OTIwLDI4OTIyLDI4OTIzLDI4OTI0LDI4OTI2LDI4OTI3LDI4OTI4LDI4OTI5LDI4OTMwLDI4OTMxLDI4OTMyLDI4OTMzLDI4OTM0LDI4OTM1LDI4OTM2LDI4OTM5LDI4OTQwLDI4OTQxLDI4OTQyLDI4OTQzLDI4OTQ1LDI4OTQ2LDI4OTQ4LDI4OTUxLDI4OTU1LDI4OTU2LDI4OTU3LDI4OTU4LDI4OTU5LDI4OTYwLDI4OTYxLDI4OTYyLDI4OTYzLDI4OTY0LDI4OTY1LDI4OTY3LDI4OTY4LDI4OTY5LDI4OTcwLDI4OTcxLDI4OTcyLDI4OTczLDI4OTc0LDI4OTc4LDI4OTc5LDI4OTgwLDI4OTgxLDI4OTgzLDI4OTg0LDI4OTg1LDI4OTg2LDI4OTg3LDI4OTg4LDI4OTg5LDI4OTkwLDI4OTkxLDI4OTkyLDI4OTkzLDI4OTk0LDI4OTk1LDI4OTk2LDI4OTk4LDI4OTk5LDI5MDAwLDI5MDAxLDI5MDAzLDI5MDA1LDI5MDA3LDI5MDA4LDI5MDA5LDI5MDEwLDI5MDExLDI5MDEyLDI5MDEzLDI5MDE0LDI5MDE1LDI5MDE2LDI5MDE3LDI5MDE4LDI5MDE5LDI5MDIxLDI5MDIzLDI5MDI0LDI5MDI1LDI5MDI2LDI5MDI3LDI5MDI5LDI5MDMzLDI5MDM0LDI5MDM1LDI5MDM2LDI5MDM3LDI5MDM5LDI5MDQwLDI5MDQxLDI5MDQ0LDI5MDQ1LDI5MDQ2LDI5MDQ3LDI5MDQ5LDI5MDUxLDI5MDUyLDI5MDU0LDI5MDU1LDI5MDU2LDI5MDU3LDI5MDU4LDI5MDU5LDI5MDYxLDI5MDYyLDI5MDYzLDI5MDY0LDI5MDY1LDI5MDY3LDI5MDY4LDI5MDY5LDI5MDcwLDI5MDcyLDI5MDczLDI5MDc0LDI5MDc1LDI5MDc3LDI5MDc4LDI5MDc5LDI5MDgyLDI5MDgzLDI5MDg0LDI5MDg1LDI5MDg2LDI5MDg5LDI5MDkwLDI5MDkxLDI5MDkyLDI5MDkzLDI5MDk0LDI5MDk1LDI5MDk3LDI5MDk4LDI5MDk5LDI5MTAxLDI5MTAyLDI5MTAzLDI5MTA0LDI5MTA1LDI5MTA2LDI5MTA4LDI5MTEwLDI5MTExLDI5MTEyLDI5MTE0LDI5MTE1LDI5MTE2LDI5MTE3LDI5MTE4LDI5MTE5LDI5MTIwLDI5MTIxLDI5MTIyLDI5MTI0LDI5MTI1LDI5MTI2LDI5MTI3LDI5MTI4LDI5MTI5LDI5MTMwLDI5MTMxLDI5MTMyLDI5MTMzLDI5MTM1LDI5MTM2LDI5MTM3LDI5MTM4LDI5MTM5LDI5MTQyLDI5MTQzLDI5MTQ0LDI5MTQ1LDI5MTQ2LDI5MTQ3LDI5MTQ4LDI5MTQ5LDI5MTUwLDI5MTUxLDI5MTUzLDI5MTU0LDI5MTU1LDI5MTU2LDI5MTU4LDI5MTYwLDI5MTYxLDI5MTYyLDI5MTYzLDI5MTY0LDI5MTY1LDI5MTY3LDI5MTY4LDI5MTY5LDI5MTcwLDI5MTcxLDI5MTcyLDI5MTczLDI5MTc0LDI5MTc1LDI5MTc2LDI5MTc4LDI5MTc5LDI5MTgwLDI5MTgxLDI5MTgyLDI5MTgzLDI5MTg0LDI5MTg1LDI5MTg2LDI5MTg3LDI5MTg4LDI5MTg5LDI5MTkxLDI5MTkyLDI5MTkzLDI5MTk0LDI5MTk1LDI5MTk2LDI5MTk3LDI5MTk4LDI5MTk5LDI5MjAwLDI5MjAxLDI5MjAyLDI5MjAzLDI5MjA0LDI5MjA1LDI5MjA2LDI5MjA3LDI5MjA4LDI5MjA5LDI5MjEwLDI5MjExLDI5MjEyLDI5MjE0LDI5MjE1LDI5MjE2LDI5MjE3LDI5MjE4LDI5MjE5LDI5MjIwLDI5MjIxLDI5MjIyLDI5MjIzLDI5MjI1LDI5MjI3LDI5MjI5LDI5MjMwLDI5MjMxLDI5MjM0LDI5MjM1LDI5MjM2LDI5MjQyLDI5MjQ0LDI5MjQ2LDI5MjQ4LDI5MjQ5LDI5MjUwLDI5MjUxLDI5MjUyLDI5MjUzLDI5MjU0LDI5MjU3LDI5MjU4LDI5MjU5LDI5MjYyLDI5MjYzLDI5MjY0LDI5MjY1LDI5MjY3LDI5MjY4LDI5MjY5LDI5MjcxLDI5MjcyLDI5Mjc0LDI5Mjc2LDI5Mjc4LDI5MjgwLDI5MjgzLDI5Mjg0LDI5Mjg1LDI5Mjg4LDI5MjkwLDI5MjkxLDI5MjkyLDI5MjkzLDI5Mjk2LDI5Mjk3LDI5Mjk5LDI5MzAwLDI5MzAyLDI5MzAzLDI5MzA0LDI5MzA3LDI5MzA4LDI5MzA5LDI5MzE0LDI5MzE1LDI5MzE3LDI5MzE4LDI5MzE5LDI5MzIwLDI5MzIxLDI5MzI0LDI5MzI2LDI5MzI4LDI5MzI5LDI5MzMxLDI5MzMyLDI5MzMzLDI5MzM0LDI5MzM1LDI5MzM2LDI5MzM3LDI5MzM4LDI5MzM5LDI5MzQwLDI5MzQxLDI5MzQyLDI5MzQ0LDI5MzQ1LDI5MzQ2LDI5MzQ3LDI5MzQ4LDI5MzQ5LDI5MzUwLDI5MzUxLDI5MzUyLDI5MzUzLDI5MzU0LDI5MzU1LDI5MzU4LDI5MzYxLDI5MzYyLDI5MzYzLDI5MzY1LDI5MzcwLDI5MzcxLDI5MzcyLDI5MzczLDI5Mzc0LDI5Mzc1LDI5Mzc2LDI5MzgxLDI5MzgyLDI5MzgzLDI5Mzg1LDI5Mzg2LDI5Mzg3LDI5Mzg4LDI5MzkxLDI5MzkzLDI5Mzk1LDI5Mzk2LDI5Mzk3LDI5Mzk4LDI5NDAwLDI5NDAyLDI5NDAzLDU4NTY2LDU4NTY3LDU4NTY4LDU4NTY5LDU4NTcwLDU4NTcxLDU4NTcyLDU4NTczLDU4NTc0LDU4NTc1LDU4NTc2LDU4NTc3LDU4NTc4LDU4NTc5LDU4NTgwLDU4NTgxLDU4NTgyLDU4NTgzLDU4NTg0LDU4NTg1LDU4NTg2LDU4NTg3LDU4NTg4LDU4NTg5LDU4NTkwLDU4NTkxLDU4NTkyLDU4NTkzLDU4NTk0LDU4NTk1LDU4NTk2LDU4NTk3LDU4NTk4LDU4NTk5LDU4NjAwLDU4NjAxLDU4NjAyLDU4NjAzLDU4NjA0LDU4NjA1LDU4NjA2LDU4NjA3LDU4NjA4LDU4NjA5LDU4NjEwLDU4NjExLDU4NjEyLDU4NjEzLDU4NjE0LDU4NjE1LDU4NjE2LDU4NjE3LDU4NjE4LDU4NjE5LDU4NjIwLDU4NjIxLDU4NjIyLDU4NjIzLDU4NjI0LDU4NjI1LDU4NjI2LDU4NjI3LDU4NjI4LDU4NjI5LDU4NjMwLDU4NjMxLDU4NjMyLDU4NjMzLDU4NjM0LDU4NjM1LDU4NjM2LDU4NjM3LDU4NjM4LDU4NjM5LDU4NjQwLDU4NjQxLDU4NjQyLDU4NjQzLDU4NjQ0LDU4NjQ1LDU4NjQ2LDU4NjQ3LDU4NjQ4LDU4NjQ5LDU4NjUwLDU4NjUxLDU4NjUyLDU4NjUzLDU4NjU0LDU4NjU1LDU4NjU2LDU4NjU3LDU4NjU4LDU4NjU5LDU4NjYwLDU4NjYxLDEyMjg4LDEyMjg5LDEyMjkwLDE4Myw3MTMsNzExLDE2OCwxMjI5MSwxMjI5Myw4MjEyLDY1Mzc0LDgyMTQsODIzMCw4MjE2LDgyMTcsODIyMCw4MjIxLDEyMzA4LDEyMzA5LDEyMjk2LDEyMjk3LDEyMjk4LDEyMjk5LDEyMzAwLDEyMzAxLDEyMzAyLDEyMzAzLDEyMzEwLDEyMzExLDEyMzA0LDEyMzA1LDE3NywyMTUsMjQ3LDg3NTgsODc0Myw4NzQ0LDg3MjEsODcxOSw4NzQ2LDg3NDUsODcxMiw4NzU5LDg3MzAsODg2OSw4NzQxLDg3MzYsODk3OCw4ODU3LDg3NDcsODc1MCw4ODAxLDg3ODAsODc3Niw4NzY1LDg3MzMsODgwMCw4ODE0LDg4MTUsODgwNCw4ODA1LDg3MzQsODc1Nyw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQzLDg0NTEsNjUyODQsMTY0LDY1NTA0LDY1NTA1LDgyNDAsMTY3LDg0NzAsOTczNCw5NzMzLDk2NzUsOTY3OSw5Njc4LDk2NzEsOTY3MCw5NjMzLDk2MzIsOTY1MSw5NjUwLDgyNTEsODU5NCw4NTkyLDg1OTMsODU5NSwxMjMwNyw1ODY2Miw1ODY2Myw1ODY2NCw1ODY2NSw1ODY2Niw1ODY2Nyw1ODY2OCw1ODY2OSw1ODY3MCw1ODY3MSw1ODY3Miw1ODY3Myw1ODY3NCw1ODY3NSw1ODY3Niw1ODY3Nyw1ODY3OCw1ODY3OSw1ODY4MCw1ODY4MSw1ODY4Miw1ODY4Myw1ODY4NCw1ODY4NSw1ODY4Niw1ODY4Nyw1ODY4OCw1ODY4OSw1ODY5MCw1ODY5MSw1ODY5Miw1ODY5Myw1ODY5NCw1ODY5NSw1ODY5Niw1ODY5Nyw1ODY5OCw1ODY5OSw1ODcwMCw1ODcwMSw1ODcwMiw1ODcwMyw1ODcwNCw1ODcwNSw1ODcwNiw1ODcwNyw1ODcwOCw1ODcwOSw1ODcxMCw1ODcxMSw1ODcxMiw1ODcxMyw1ODcxNCw1ODcxNSw1ODcxNiw1ODcxNyw1ODcxOCw1ODcxOSw1ODcyMCw1ODcyMSw1ODcyMiw1ODcyMyw1ODcyNCw1ODcyNSw1ODcyNiw1ODcyNyw1ODcyOCw1ODcyOSw1ODczMCw1ODczMSw1ODczMiw1ODczMyw1ODczNCw1ODczNSw1ODczNiw1ODczNyw1ODczOCw1ODczOSw1ODc0MCw1ODc0MSw1ODc0Miw1ODc0Myw1ODc0NCw1ODc0NSw1ODc0Niw1ODc0Nyw1ODc0OCw1ODc0OSw1ODc1MCw1ODc1MSw1ODc1Miw1ODc1Myw1ODc1NCw1ODc1NSw1ODc1Niw1ODc1Nyw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDU5MjM4LDU5MjM5LDU5MjQwLDU5MjQxLDU5MjQyLDU5MjQzLDkzNTIsOTM1Myw5MzU0LDkzNTUsOTM1Niw5MzU3LDkzNTgsOTM1OSw5MzYwLDkzNjEsOTM2Miw5MzYzLDkzNjQsOTM2NSw5MzY2LDkzNjcsOTM2OCw5MzY5LDkzNzAsOTM3MSw5MzMyLDkzMzMsOTMzNCw5MzM1LDkzMzYsOTMzNyw5MzM4LDkzMzksOTM0MCw5MzQxLDkzNDIsOTM0Myw5MzQ0LDkzNDUsOTM0Niw5MzQ3LDkzNDgsOTM0OSw5MzUwLDkzNTEsOTMxMiw5MzEzLDkzMTQsOTMxNSw5MzE2LDkzMTcsOTMxOCw5MzE5LDkzMjAsOTMyMSw4MzY0LDU5MjQ1LDEyODMyLDEyODMzLDEyODM0LDEyODM1LDEyODM2LDEyODM3LDEyODM4LDEyODM5LDEyODQwLDEyODQxLDU5MjQ2LDU5MjQ3LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsODU1NCw4NTU1LDU5MjQ4LDU5MjQ5LDU4NzU4LDU4NzU5LDU4NzYwLDU4NzYxLDU4NzYyLDU4NzYzLDU4NzY0LDU4NzY1LDU4NzY2LDU4NzY3LDU4NzY4LDU4NzY5LDU4NzcwLDU4NzcxLDU4NzcyLDU4NzczLDU4Nzc0LDU4Nzc1LDU4Nzc2LDU4Nzc3LDU4Nzc4LDU4Nzc5LDU4NzgwLDU4NzgxLDU4NzgyLDU4NzgzLDU4Nzg0LDU4Nzg1LDU4Nzg2LDU4Nzg3LDU4Nzg4LDU4Nzg5LDU4NzkwLDU4NzkxLDU4NzkyLDU4NzkzLDU4Nzk0LDU4Nzk1LDU4Nzk2LDU4Nzk3LDU4Nzk4LDU4Nzk5LDU4ODAwLDU4ODAxLDU4ODAyLDU4ODAzLDU4ODA0LDU4ODA1LDU4ODA2LDU4ODA3LDU4ODA4LDU4ODA5LDU4ODEwLDU4ODExLDU4ODEyLDU4ODEzLDU4ODE0LDU4ODE1LDU4ODE2LDU4ODE3LDU4ODE4LDU4ODE5LDU4ODIwLDU4ODIxLDU4ODIyLDU4ODIzLDU4ODI0LDU4ODI1LDU4ODI2LDU4ODI3LDU4ODI4LDU4ODI5LDU4ODMwLDU4ODMxLDU4ODMyLDU4ODMzLDU4ODM0LDU4ODM1LDU4ODM2LDU4ODM3LDU4ODM4LDU4ODM5LDU4ODQwLDU4ODQxLDU4ODQyLDU4ODQzLDU4ODQ0LDU4ODQ1LDU4ODQ2LDU4ODQ3LDU4ODQ4LDU4ODQ5LDU4ODUwLDU4ODUxLDU4ODUyLDEyMjg4LDY1MjgxLDY1MjgyLDY1MjgzLDY1NTA5LDY1Mjg1LDY1Mjg2LDY1Mjg3LDY1Mjg4LDY1Mjg5LDY1MjkwLDY1MjkxLDY1MjkyLDY1MjkzLDY1Mjk0LDY1Mjk1LDY1Mjk2LDY1Mjk3LDY1Mjk4LDY1Mjk5LDY1MzAwLDY1MzAxLDY1MzAyLDY1MzAzLDY1MzA0LDY1MzA1LDY1MzA2LDY1MzA3LDY1MzA4LDY1MzA5LDY1MzEwLDY1MzExLDY1MzEyLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LDY1MzM5LDY1MzQwLDY1MzQxLDY1MzQyLDY1MzQzLDY1MzQ0LDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLDY1MzcxLDY1MzcyLDY1MzczLDY1NTA3LDU4ODU0LDU4ODU1LDU4ODU2LDU4ODU3LDU4ODU4LDU4ODU5LDU4ODYwLDU4ODYxLDU4ODYyLDU4ODYzLDU4ODY0LDU4ODY1LDU4ODY2LDU4ODY3LDU4ODY4LDU4ODY5LDU4ODcwLDU4ODcxLDU4ODcyLDU4ODczLDU4ODc0LDU4ODc1LDU4ODc2LDU4ODc3LDU4ODc4LDU4ODc5LDU4ODgwLDU4ODgxLDU4ODgyLDU4ODgzLDU4ODg0LDU4ODg1LDU4ODg2LDU4ODg3LDU4ODg4LDU4ODg5LDU4ODkwLDU4ODkxLDU4ODkyLDU4ODkzLDU4ODk0LDU4ODk1LDU4ODk2LDU4ODk3LDU4ODk4LDU4ODk5LDU4OTAwLDU4OTAxLDU4OTAyLDU4OTAzLDU4OTA0LDU4OTA1LDU4OTA2LDU4OTA3LDU4OTA4LDU4OTA5LDU4OTEwLDU4OTExLDU4OTEyLDU4OTEzLDU4OTE0LDU4OTE1LDU4OTE2LDU4OTE3LDU4OTE4LDU4OTE5LDU4OTIwLDU4OTIxLDU4OTIyLDU4OTIzLDU4OTI0LDU4OTI1LDU4OTI2LDU4OTI3LDU4OTI4LDU4OTI5LDU4OTMwLDU4OTMxLDU4OTMyLDU4OTMzLDU4OTM0LDU4OTM1LDU4OTM2LDU4OTM3LDU4OTM4LDU4OTM5LDU4OTQwLDU4OTQxLDU4OTQyLDU4OTQzLDU4OTQ0LDU4OTQ1LDU4OTQ2LDU4OTQ3LDU4OTQ4LDU4OTQ5LDEyMzUzLDEyMzU0LDEyMzU1LDEyMzU2LDEyMzU3LDEyMzU4LDEyMzU5LDEyMzYwLDEyMzYxLDEyMzYyLDEyMzYzLDEyMzY0LDEyMzY1LDEyMzY2LDEyMzY3LDEyMzY4LDEyMzY5LDEyMzcwLDEyMzcxLDEyMzcyLDEyMzczLDEyMzc0LDEyMzc1LDEyMzc2LDEyMzc3LDEyMzc4LDEyMzc5LDEyMzgwLDEyMzgxLDEyMzgyLDEyMzgzLDEyMzg0LDEyMzg1LDEyMzg2LDEyMzg3LDEyMzg4LDEyMzg5LDEyMzkwLDEyMzkxLDEyMzkyLDEyMzkzLDEyMzk0LDEyMzk1LDEyMzk2LDEyMzk3LDEyMzk4LDEyMzk5LDEyNDAwLDEyNDAxLDEyNDAyLDEyNDAzLDEyNDA0LDEyNDA1LDEyNDA2LDEyNDA3LDEyNDA4LDEyNDA5LDEyNDEwLDEyNDExLDEyNDEyLDEyNDEzLDEyNDE0LDEyNDE1LDEyNDE2LDEyNDE3LDEyNDE4LDEyNDE5LDEyNDIwLDEyNDIxLDEyNDIyLDEyNDIzLDEyNDI0LDEyNDI1LDEyNDI2LDEyNDI3LDEyNDI4LDEyNDI5LDEyNDMwLDEyNDMxLDEyNDMyLDEyNDMzLDEyNDM0LDEyNDM1LDU5MjUwLDU5MjUxLDU5MjUyLDU5MjUzLDU5MjU0LDU5MjU1LDU5MjU2LDU5MjU3LDU5MjU4LDU5MjU5LDU5MjYwLDU4OTUwLDU4OTUxLDU4OTUyLDU4OTUzLDU4OTU0LDU4OTU1LDU4OTU2LDU4OTU3LDU4OTU4LDU4OTU5LDU4OTYwLDU4OTYxLDU4OTYyLDU4OTYzLDU4OTY0LDU4OTY1LDU4OTY2LDU4OTY3LDU4OTY4LDU4OTY5LDU4OTcwLDU4OTcxLDU4OTcyLDU4OTczLDU4OTc0LDU4OTc1LDU4OTc2LDU4OTc3LDU4OTc4LDU4OTc5LDU4OTgwLDU4OTgxLDU4OTgyLDU4OTgzLDU4OTg0LDU4OTg1LDU4OTg2LDU4OTg3LDU4OTg4LDU4OTg5LDU4OTkwLDU4OTkxLDU4OTkyLDU4OTkzLDU4OTk0LDU4OTk1LDU4OTk2LDU4OTk3LDU4OTk4LDU4OTk5LDU5MDAwLDU5MDAxLDU5MDAyLDU5MDAzLDU5MDA0LDU5MDA1LDU5MDA2LDU5MDA3LDU5MDA4LDU5MDA5LDU5MDEwLDU5MDExLDU5MDEyLDU5MDEzLDU5MDE0LDU5MDE1LDU5MDE2LDU5MDE3LDU5MDE4LDU5MDE5LDU5MDIwLDU5MDIxLDU5MDIyLDU5MDIzLDU5MDI0LDU5MDI1LDU5MDI2LDU5MDI3LDU5MDI4LDU5MDI5LDU5MDMwLDU5MDMxLDU5MDMyLDU5MDMzLDU5MDM0LDU5MDM1LDU5MDM2LDU5MDM3LDU5MDM4LDU5MDM5LDU5MDQwLDU5MDQxLDU5MDQyLDU5MDQzLDU5MDQ0LDU5MDQ1LDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LDU5MjYxLDU5MjYyLDU5MjYzLDU5MjY0LDU5MjY1LDU5MjY2LDU5MjY3LDU5MjY4LDU5MDQ2LDU5MDQ3LDU5MDQ4LDU5MDQ5LDU5MDUwLDU5MDUxLDU5MDUyLDU5MDUzLDU5MDU0LDU5MDU1LDU5MDU2LDU5MDU3LDU5MDU4LDU5MDU5LDU5MDYwLDU5MDYxLDU5MDYyLDU5MDYzLDU5MDY0LDU5MDY1LDU5MDY2LDU5MDY3LDU5MDY4LDU5MDY5LDU5MDcwLDU5MDcxLDU5MDcyLDU5MDczLDU5MDc0LDU5MDc1LDU5MDc2LDU5MDc3LDU5MDc4LDU5MDc5LDU5MDgwLDU5MDgxLDU5MDgyLDU5MDgzLDU5MDg0LDU5MDg1LDU5MDg2LDU5MDg3LDU5MDg4LDU5MDg5LDU5MDkwLDU5MDkxLDU5MDkyLDU5MDkzLDU5MDk0LDU5MDk1LDU5MDk2LDU5MDk3LDU5MDk4LDU5MDk5LDU5MTAwLDU5MTAxLDU5MTAyLDU5MTAzLDU5MTA0LDU5MTA1LDU5MTA2LDU5MTA3LDU5MTA4LDU5MTA5LDU5MTEwLDU5MTExLDU5MTEyLDU5MTEzLDU5MTE0LDU5MTE1LDU5MTE2LDU5MTE3LDU5MTE4LDU5MTE5LDU5MTIwLDU5MTIxLDU5MTIyLDU5MTIzLDU5MTI0LDU5MTI1LDU5MTI2LDU5MTI3LDU5MTI4LDU5MTI5LDU5MTMwLDU5MTMxLDU5MTMyLDU5MTMzLDU5MTM0LDU5MTM1LDU5MTM2LDU5MTM3LDU5MTM4LDU5MTM5LDU5MTQwLDU5MTQxLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDU5MjY5LDU5MjcwLDU5MjcxLDU5MjcyLDU5MjczLDU5Mjc0LDU5Mjc1LDU5Mjc2LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDU5Mjc3LDU5Mjc4LDU5Mjc5LDU5MjgwLDU5MjgxLDU5MjgyLDU5MjgzLDY1MDc3LDY1MDc4LDY1MDgxLDY1MDgyLDY1MDg3LDY1MDg4LDY1MDg1LDY1MDg2LDY1MDg5LDY1MDkwLDY1MDkxLDY1MDkyLDU5Mjg0LDU5Mjg1LDY1MDgzLDY1MDg0LDY1MDc5LDY1MDgwLDY1MDczLDU5Mjg2LDY1MDc1LDY1MDc2LDU5Mjg3LDU5Mjg4LDU5Mjg5LDU5MjkwLDU5MjkxLDU5MjkyLDU5MjkzLDU5Mjk0LDU5Mjk1LDU5MTQyLDU5MTQzLDU5MTQ0LDU5MTQ1LDU5MTQ2LDU5MTQ3LDU5MTQ4LDU5MTQ5LDU5MTUwLDU5MTUxLDU5MTUyLDU5MTUzLDU5MTU0LDU5MTU1LDU5MTU2LDU5MTU3LDU5MTU4LDU5MTU5LDU5MTYwLDU5MTYxLDU5MTYyLDU5MTYzLDU5MTY0LDU5MTY1LDU5MTY2LDU5MTY3LDU5MTY4LDU5MTY5LDU5MTcwLDU5MTcxLDU5MTcyLDU5MTczLDU5MTc0LDU5MTc1LDU5MTc2LDU5MTc3LDU5MTc4LDU5MTc5LDU5MTgwLDU5MTgxLDU5MTgyLDU5MTgzLDU5MTg0LDU5MTg1LDU5MTg2LDU5MTg3LDU5MTg4LDU5MTg5LDU5MTkwLDU5MTkxLDU5MTkyLDU5MTkzLDU5MTk0LDU5MTk1LDU5MTk2LDU5MTk3LDU5MTk4LDU5MTk5LDU5MjAwLDU5MjAxLDU5MjAyLDU5MjAzLDU5MjA0LDU5MjA1LDU5MjA2LDU5MjA3LDU5MjA4LDU5MjA5LDU5MjEwLDU5MjExLDU5MjEyLDU5MjEzLDU5MjE0LDU5MjE1LDU5MjE2LDU5MjE3LDU5MjE4LDU5MjE5LDU5MjIwLDU5MjIxLDU5MjIyLDU5MjIzLDU5MjI0LDU5MjI1LDU5MjI2LDU5MjI3LDU5MjI4LDU5MjI5LDU5MjMwLDU5MjMxLDU5MjMyLDU5MjMzLDU5MjM0LDU5MjM1LDU5MjM2LDU5MjM3LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDU5Mjk2LDU5Mjk3LDU5Mjk4LDU5Mjk5LDU5MzAwLDU5MzAxLDU5MzAyLDU5MzAzLDU5MzA0LDU5MzA1LDU5MzA2LDU5MzA3LDU5MzA4LDU5MzA5LDU5MzEwLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDU5MzExLDU5MzEyLDU5MzEzLDU5MzE0LDU5MzE1LDU5MzE2LDU5MzE3LDU5MzE4LDU5MzE5LDU5MzIwLDU5MzIxLDU5MzIyLDU5MzIzLDcxNCw3MTUsNzI5LDgyMTEsODIxMyw4MjI5LDgyNDUsODQ1Myw4NDU3LDg1OTgsODU5OSw4NjAwLDg2MDEsODcyNSw4NzM1LDg3MzksODc4Niw4ODA2LDg4MDcsODg5NSw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTU4MSw5NTgyLDk1ODMsOTU4NCw5NTg1LDk1ODYsOTU4Nyw5NjAxLDk2MDIsOTYwMyw5NjA0LDk2MDUsOTYwNiw5NjA3LDk2MDgsOTYwOSw5NjEwLDk2MTEsOTYxMiw5NjEzLDk2MTQsOTYxNSw5NjE5LDk2MjAsOTYyMSw5NjYwLDk2NjEsOTY5OCw5Njk5LDk3MDAsOTcwMSw5NzM3LDg4NTMsMTIzMDYsMTIzMTcsMTIzMTgsNTkzMjQsNTkzMjUsNTkzMjYsNTkzMjcsNTkzMjgsNTkzMjksNTkzMzAsNTkzMzEsNTkzMzIsNTkzMzMsNTkzMzQsMjU3LDIyNSw0NjIsMjI0LDI3NSwyMzMsMjgzLDIzMiwyOTksMjM3LDQ2NCwyMzYsMzMzLDI0Myw0NjYsMjQyLDM2MywyNTAsNDY4LDI0OSw0NzAsNDcyLDQ3NCw0NzYsMjUyLDIzNCw1OTMsNTkzMzUsMzI0LDMyOCw1MDUsNjA5LDU5MzM3LDU5MzM4LDU5MzM5LDU5MzQwLDEyNTQ5LDEyNTUwLDEyNTUxLDEyNTUyLDEyNTUzLDEyNTU0LDEyNTU1LDEyNTU2LDEyNTU3LDEyNTU4LDEyNTU5LDEyNTYwLDEyNTYxLDEyNTYyLDEyNTYzLDEyNTY0LDEyNTY1LDEyNTY2LDEyNTY3LDEyNTY4LDEyNTY5LDEyNTcwLDEyNTcxLDEyNTcyLDEyNTczLDEyNTc0LDEyNTc1LDEyNTc2LDEyNTc3LDEyNTc4LDEyNTc5LDEyNTgwLDEyNTgxLDEyNTgyLDEyNTgzLDEyNTg0LDEyNTg1LDU5MzQxLDU5MzQyLDU5MzQzLDU5MzQ0LDU5MzQ1LDU5MzQ2LDU5MzQ3LDU5MzQ4LDU5MzQ5LDU5MzUwLDU5MzUxLDU5MzUyLDU5MzUzLDU5MzU0LDU5MzU1LDU5MzU2LDU5MzU3LDU5MzU4LDU5MzU5LDU5MzYwLDU5MzYxLDEyMzIxLDEyMzIyLDEyMzIzLDEyMzI0LDEyMzI1LDEyMzI2LDEyMzI3LDEyMzI4LDEyMzI5LDEyOTYzLDEzMTk4LDEzMTk5LDEzMjEyLDEzMjEzLDEzMjE0LDEzMjE3LDEzMjUyLDEzMjYyLDEzMjY1LDEzMjY2LDEzMjY5LDY1MDcyLDY1NTA2LDY1NTA4LDU5MzYyLDg0ODEsMTI4NDksNTkzNjMsODIwOCw1OTM2NCw1OTM2NSw1OTM2NiwxMjU0MCwxMjQ0MywxMjQ0NCwxMjU0MSwxMjU0MiwxMjI5NCwxMjQ0NSwxMjQ0Niw2NTA5Nyw2NTA5OCw2NTA5OSw2NTEwMCw2NTEwMSw2NTEwMiw2NTEwMyw2NTEwNCw2NTEwNSw2NTEwNiw2NTEwOCw2NTEwOSw2NTExMCw2NTExMSw2NTExMyw2NTExNCw2NTExNSw2NTExNiw2NTExNyw2NTExOCw2NTExOSw2NTEyMCw2NTEyMSw2NTEyMiw2NTEyMyw2NTEyNCw2NTEyNSw2NTEyNiw2NTEyOCw2NTEyOSw2NTEzMCw2NTEzMSwxMjM1MCwxMjI3MiwxMjI3MywxMjI3NCwxMjI3NSwxMjI3NiwxMjI3NywxMjI3OCwxMjI3OSwxMjI4MCwxMjI4MSwxMjI4MiwxMjI4MywxMjI5NSw1OTM4MCw1OTM4MSw1OTM4Miw1OTM4Myw1OTM4NCw1OTM4NSw1OTM4Niw1OTM4Nyw1OTM4OCw1OTM4OSw1OTM5MCw1OTM5MSw1OTM5Miw5NDcyLDk0NzMsOTQ3NCw5NDc1LDk0NzYsOTQ3Nyw5NDc4LDk0NzksOTQ4MCw5NDgxLDk0ODIsOTQ4Myw5NDg0LDk0ODUsOTQ4Niw5NDg3LDk0ODgsOTQ4OSw5NDkwLDk0OTEsOTQ5Miw5NDkzLDk0OTQsOTQ5NSw5NDk2LDk0OTcsOTQ5OCw5NDk5LDk1MDAsOTUwMSw5NTAyLDk1MDMsOTUwNCw5NTA1LDk1MDYsOTUwNyw5NTA4LDk1MDksOTUxMCw5NTExLDk1MTIsOTUxMyw5NTE0LDk1MTUsOTUxNiw5NTE3LDk1MTgsOTUxOSw5NTIwLDk1MjEsOTUyMiw5NTIzLDk1MjQsOTUyNSw5NTI2LDk1MjcsOTUyOCw5NTI5LDk1MzAsOTUzMSw5NTMyLDk1MzMsOTUzNCw5NTM1LDk1MzYsOTUzNyw5NTM4LDk1MzksOTU0MCw5NTQxLDk1NDIsOTU0Myw5NTQ0LDk1NDUsOTU0Niw5NTQ3LDU5MzkzLDU5Mzk0LDU5Mzk1LDU5Mzk2LDU5Mzk3LDU5Mzk4LDU5Mzk5LDU5NDAwLDU5NDAxLDU5NDAyLDU5NDAzLDU5NDA0LDU5NDA1LDU5NDA2LDU5NDA3LDI5NDA0LDI5NDA1LDI5NDA3LDI5NDEwLDI5NDExLDI5NDEyLDI5NDEzLDI5NDE0LDI5NDE1LDI5NDE4LDI5NDE5LDI5NDI5LDI5NDMwLDI5NDMzLDI5NDM3LDI5NDM4LDI5NDM5LDI5NDQwLDI5NDQyLDI5NDQ0LDI5NDQ1LDI5NDQ2LDI5NDQ3LDI5NDQ4LDI5NDQ5LDI5NDUxLDI5NDUyLDI5NDUzLDI5NDU1LDI5NDU2LDI5NDU3LDI5NDU4LDI5NDYwLDI5NDY0LDI5NDY1LDI5NDY2LDI5NDcxLDI5NDcyLDI5NDc1LDI5NDc2LDI5NDc4LDI5NDc5LDI5NDgwLDI5NDg1LDI5NDg3LDI5NDg4LDI5NDkwLDI5NDkxLDI5NDkzLDI5NDk0LDI5NDk4LDI5NDk5LDI5NTAwLDI5NTAxLDI5NTA0LDI5NTA1LDI5NTA2LDI5NTA3LDI5NTA4LDI5NTA5LDI5NTEwLDI5NTExLDI5NTEyLDI5NTEzLDI5NTE0LDI5NTE1LDI5NTE2LDI5NTE4LDI5NTE5LDI5NTIxLDI5NTIzLDI5NTI0LDI5NTI1LDI5NTI2LDI5NTI4LDI5NTI5LDI5NTMwLDI5NTMxLDI5NTMyLDI5NTMzLDI5NTM0LDI5NTM1LDI5NTM3LDI5NTM4LDI5NTM5LDI5NTQwLDI5NTQxLDI5NTQyLDI5NTQzLDI5NTQ0LDI5NTQ1LDI5NTQ2LDI5NTQ3LDI5NTUwLDI5NTUyLDI5NTUzLDU3MzQ0LDU3MzQ1LDU3MzQ2LDU3MzQ3LDU3MzQ4LDU3MzQ5LDU3MzUwLDU3MzUxLDU3MzUyLDU3MzUzLDU3MzU0LDU3MzU1LDU3MzU2LDU3MzU3LDU3MzU4LDU3MzU5LDU3MzYwLDU3MzYxLDU3MzYyLDU3MzYzLDU3MzY0LDU3MzY1LDU3MzY2LDU3MzY3LDU3MzY4LDU3MzY5LDU3MzcwLDU3MzcxLDU3MzcyLDU3MzczLDU3Mzc0LDU3Mzc1LDU3Mzc2LDU3Mzc3LDU3Mzc4LDU3Mzc5LDU3MzgwLDU3MzgxLDU3MzgyLDU3MzgzLDU3Mzg0LDU3Mzg1LDU3Mzg2LDU3Mzg3LDU3Mzg4LDU3Mzg5LDU3MzkwLDU3MzkxLDU3MzkyLDU3MzkzLDU3Mzk0LDU3Mzk1LDU3Mzk2LDU3Mzk3LDU3Mzk4LDU3Mzk5LDU3NDAwLDU3NDAxLDU3NDAyLDU3NDAzLDU3NDA0LDU3NDA1LDU3NDA2LDU3NDA3LDU3NDA4LDU3NDA5LDU3NDEwLDU3NDExLDU3NDEyLDU3NDEzLDU3NDE0LDU3NDE1LDU3NDE2LDU3NDE3LDU3NDE4LDU3NDE5LDU3NDIwLDU3NDIxLDU3NDIyLDU3NDIzLDU3NDI0LDU3NDI1LDU3NDI2LDU3NDI3LDU3NDI4LDU3NDI5LDU3NDMwLDU3NDMxLDU3NDMyLDU3NDMzLDU3NDM0LDU3NDM1LDU3NDM2LDU3NDM3LDI5NTU0LDI5NTU1LDI5NTU2LDI5NTU3LDI5NTU4LDI5NTU5LDI5NTYwLDI5NTYxLDI5NTYyLDI5NTYzLDI5NTY0LDI5NTY1LDI5NTY3LDI5NTY4LDI5NTY5LDI5NTcwLDI5NTcxLDI5NTczLDI5NTc0LDI5NTc2LDI5NTc4LDI5NTgwLDI5NTgxLDI5NTgzLDI5NTg0LDI5NTg2LDI5NTg3LDI5NTg4LDI5NTg5LDI5NTkxLDI5NTkyLDI5NTkzLDI5NTk0LDI5NTk2LDI5NTk3LDI5NTk4LDI5NjAwLDI5NjAxLDI5NjAzLDI5NjA0LDI5NjA1LDI5NjA2LDI5NjA3LDI5NjA4LDI5NjEwLDI5NjEyLDI5NjEzLDI5NjE3LDI5NjIwLDI5NjIxLDI5NjIyLDI5NjI0LDI5NjI1LDI5NjI4LDI5NjI5LDI5NjMwLDI5NjMxLDI5NjMzLDI5NjM1LDI5NjM2LDI5NjM3LDI5NjM4LDI5NjM5LDI5NjQzLDI5NjQ0LDI5NjQ2LDI5NjUwLDI5NjUxLDI5NjUyLDI5NjUzLDI5NjU0LDI5NjU1LDI5NjU2LDI5NjU4LDI5NjU5LDI5NjYwLDI5NjYxLDI5NjYzLDI5NjY1LDI5NjY2LDI5NjY3LDI5NjY4LDI5NjcwLDI5NjcyLDI5Njc0LDI5Njc1LDI5Njc2LDI5Njc4LDI5Njc5LDI5NjgwLDI5NjgxLDI5NjgzLDI5Njg0LDI5Njg1LDI5Njg2LDI5Njg3LDU3NDM4LDU3NDM5LDU3NDQwLDU3NDQxLDU3NDQyLDU3NDQzLDU3NDQ0LDU3NDQ1LDU3NDQ2LDU3NDQ3LDU3NDQ4LDU3NDQ5LDU3NDUwLDU3NDUxLDU3NDUyLDU3NDUzLDU3NDU0LDU3NDU1LDU3NDU2LDU3NDU3LDU3NDU4LDU3NDU5LDU3NDYwLDU3NDYxLDU3NDYyLDU3NDYzLDU3NDY0LDU3NDY1LDU3NDY2LDU3NDY3LDU3NDY4LDU3NDY5LDU3NDcwLDU3NDcxLDU3NDcyLDU3NDczLDU3NDc0LDU3NDc1LDU3NDc2LDU3NDc3LDU3NDc4LDU3NDc5LDU3NDgwLDU3NDgxLDU3NDgyLDU3NDgzLDU3NDg0LDU3NDg1LDU3NDg2LDU3NDg3LDU3NDg4LDU3NDg5LDU3NDkwLDU3NDkxLDU3NDkyLDU3NDkzLDU3NDk0LDU3NDk1LDU3NDk2LDU3NDk3LDU3NDk4LDU3NDk5LDU3NTAwLDU3NTAxLDU3NTAyLDU3NTAzLDU3NTA0LDU3NTA1LDU3NTA2LDU3NTA3LDU3NTA4LDU3NTA5LDU3NTEwLDU3NTExLDU3NTEyLDU3NTEzLDU3NTE0LDU3NTE1LDU3NTE2LDU3NTE3LDU3NTE4LDU3NTE5LDU3NTIwLDU3NTIxLDU3NTIyLDU3NTIzLDU3NTI0LDU3NTI1LDU3NTI2LDU3NTI3LDU3NTI4LDU3NTI5LDU3NTMwLDU3NTMxLDI5Njg4LDI5Njg5LDI5NjkwLDI5NjkxLDI5NjkyLDI5NjkzLDI5Njk0LDI5Njk1LDI5Njk2LDI5Njk3LDI5Njk4LDI5NzAwLDI5NzAzLDI5NzA0LDI5NzA3LDI5NzA4LDI5NzA5LDI5NzEwLDI5NzEzLDI5NzE0LDI5NzE1LDI5NzE2LDI5NzE3LDI5NzE4LDI5NzE5LDI5NzIwLDI5NzIxLDI5NzI0LDI5NzI1LDI5NzI2LDI5NzI3LDI5NzI4LDI5NzI5LDI5NzMxLDI5NzMyLDI5NzM1LDI5NzM3LDI5NzM5LDI5NzQxLDI5NzQzLDI5NzQ1LDI5NzQ2LDI5NzUxLDI5NzUyLDI5NzUzLDI5NzU0LDI5NzU1LDI5NzU3LDI5NzU4LDI5NzU5LDI5NzYwLDI5NzYyLDI5NzYzLDI5NzY0LDI5NzY1LDI5NzY2LDI5NzY3LDI5NzY4LDI5NzY5LDI5NzcwLDI5NzcxLDI5NzcyLDI5NzczLDI5Nzc0LDI5Nzc1LDI5Nzc2LDI5Nzc3LDI5Nzc4LDI5Nzc5LDI5NzgwLDI5NzgyLDI5Nzg0LDI5Nzg5LDI5NzkyLDI5NzkzLDI5Nzk0LDI5Nzk1LDI5Nzk2LDI5Nzk3LDI5Nzk4LDI5Nzk5LDI5ODAwLDI5ODAxLDI5ODAyLDI5ODAzLDI5ODA0LDI5ODA2LDI5ODA3LDI5ODA5LDI5ODEwLDI5ODExLDI5ODEyLDI5ODEzLDI5ODE2LDI5ODE3LDI5ODE4LDU3NTMyLDU3NTMzLDU3NTM0LDU3NTM1LDU3NTM2LDU3NTM3LDU3NTM4LDU3NTM5LDU3NTQwLDU3NTQxLDU3NTQyLDU3NTQzLDU3NTQ0LDU3NTQ1LDU3NTQ2LDU3NTQ3LDU3NTQ4LDU3NTQ5LDU3NTUwLDU3NTUxLDU3NTUyLDU3NTUzLDU3NTU0LDU3NTU1LDU3NTU2LDU3NTU3LDU3NTU4LDU3NTU5LDU3NTYwLDU3NTYxLDU3NTYyLDU3NTYzLDU3NTY0LDU3NTY1LDU3NTY2LDU3NTY3LDU3NTY4LDU3NTY5LDU3NTcwLDU3NTcxLDU3NTcyLDU3NTczLDU3NTc0LDU3NTc1LDU3NTc2LDU3NTc3LDU3NTc4LDU3NTc5LDU3NTgwLDU3NTgxLDU3NTgyLDU3NTgzLDU3NTg0LDU3NTg1LDU3NTg2LDU3NTg3LDU3NTg4LDU3NTg5LDU3NTkwLDU3NTkxLDU3NTkyLDU3NTkzLDU3NTk0LDU3NTk1LDU3NTk2LDU3NTk3LDU3NTk4LDU3NTk5LDU3NjAwLDU3NjAxLDU3NjAyLDU3NjAzLDU3NjA0LDU3NjA1LDU3NjA2LDU3NjA3LDU3NjA4LDU3NjA5LDU3NjEwLDU3NjExLDU3NjEyLDU3NjEzLDU3NjE0LDU3NjE1LDU3NjE2LDU3NjE3LDU3NjE4LDU3NjE5LDU3NjIwLDU3NjIxLDU3NjIyLDU3NjIzLDU3NjI0LDU3NjI1LDI5ODE5LDI5ODIwLDI5ODIxLDI5ODIzLDI5ODI2LDI5ODI4LDI5ODI5LDI5ODMwLDI5ODMyLDI5ODMzLDI5ODM0LDI5ODM2LDI5ODM3LDI5ODM5LDI5ODQxLDI5ODQyLDI5ODQzLDI5ODQ0LDI5ODQ1LDI5ODQ2LDI5ODQ3LDI5ODQ4LDI5ODQ5LDI5ODUwLDI5ODUxLDI5ODUzLDI5ODU1LDI5ODU2LDI5ODU3LDI5ODU4LDI5ODU5LDI5ODYwLDI5ODYxLDI5ODYyLDI5ODY2LDI5ODY3LDI5ODY4LDI5ODY5LDI5ODcwLDI5ODcxLDI5ODcyLDI5ODczLDI5ODc0LDI5ODc1LDI5ODc2LDI5ODc3LDI5ODc4LDI5ODc5LDI5ODgwLDI5ODgxLDI5ODgzLDI5ODg0LDI5ODg1LDI5ODg2LDI5ODg3LDI5ODg4LDI5ODg5LDI5ODkwLDI5ODkxLDI5ODkyLDI5ODkzLDI5ODk0LDI5ODk1LDI5ODk2LDI5ODk3LDI5ODk4LDI5ODk5LDI5OTAwLDI5OTAxLDI5OTAyLDI5OTAzLDI5OTA0LDI5OTA1LDI5OTA3LDI5OTA4LDI5OTA5LDI5OTEwLDI5OTExLDI5OTEyLDI5OTEzLDI5OTE0LDI5OTE1LDI5OTE3LDI5OTE5LDI5OTIxLDI5OTI1LDI5OTI3LDI5OTI4LDI5OTI5LDI5OTMwLDI5OTMxLDI5OTMyLDI5OTMzLDI5OTM2LDI5OTM3LDI5OTM4LDU3NjI2LDU3NjI3LDU3NjI4LDU3NjI5LDU3NjMwLDU3NjMxLDU3NjMyLDU3NjMzLDU3NjM0LDU3NjM1LDU3NjM2LDU3NjM3LDU3NjM4LDU3NjM5LDU3NjQwLDU3NjQxLDU3NjQyLDU3NjQzLDU3NjQ0LDU3NjQ1LDU3NjQ2LDU3NjQ3LDU3NjQ4LDU3NjQ5LDU3NjUwLDU3NjUxLDU3NjUyLDU3NjUzLDU3NjU0LDU3NjU1LDU3NjU2LDU3NjU3LDU3NjU4LDU3NjU5LDU3NjYwLDU3NjYxLDU3NjYyLDU3NjYzLDU3NjY0LDU3NjY1LDU3NjY2LDU3NjY3LDU3NjY4LDU3NjY5LDU3NjcwLDU3NjcxLDU3NjcyLDU3NjczLDU3Njc0LDU3Njc1LDU3Njc2LDU3Njc3LDU3Njc4LDU3Njc5LDU3NjgwLDU3NjgxLDU3NjgyLDU3NjgzLDU3Njg0LDU3Njg1LDU3Njg2LDU3Njg3LDU3Njg4LDU3Njg5LDU3NjkwLDU3NjkxLDU3NjkyLDU3NjkzLDU3Njk0LDU3Njk1LDU3Njk2LDU3Njk3LDU3Njk4LDU3Njk5LDU3NzAwLDU3NzAxLDU3NzAyLDU3NzAzLDU3NzA0LDU3NzA1LDU3NzA2LDU3NzA3LDU3NzA4LDU3NzA5LDU3NzEwLDU3NzExLDU3NzEyLDU3NzEzLDU3NzE0LDU3NzE1LDU3NzE2LDU3NzE3LDU3NzE4LDU3NzE5LDI5OTM5LDI5OTQxLDI5OTQ0LDI5OTQ1LDI5OTQ2LDI5OTQ3LDI5OTQ4LDI5OTQ5LDI5OTUwLDI5OTUyLDI5OTUzLDI5OTU0LDI5OTU1LDI5OTU3LDI5OTU4LDI5OTU5LDI5OTYwLDI5OTYxLDI5OTYyLDI5OTYzLDI5OTY0LDI5OTY2LDI5OTY4LDI5OTcwLDI5OTcyLDI5OTczLDI5OTc0LDI5OTc1LDI5OTc5LDI5OTgxLDI5OTgyLDI5OTg0LDI5OTg1LDI5OTg2LDI5OTg3LDI5OTg4LDI5OTkwLDI5OTkxLDI5OTk0LDI5OTk4LDMwMDA0LDMwMDA2LDMwMDA5LDMwMDEyLDMwMDEzLDMwMDE1LDMwMDE3LDMwMDE4LDMwMDE5LDMwMDIwLDMwMDIyLDMwMDIzLDMwMDI1LDMwMDI2LDMwMDI5LDMwMDMyLDMwMDMzLDMwMDM0LDMwMDM1LDMwMDM3LDMwMDM4LDMwMDM5LDMwMDQwLDMwMDQ1LDMwMDQ2LDMwMDQ3LDMwMDQ4LDMwMDQ5LDMwMDUwLDMwMDUxLDMwMDUyLDMwMDU1LDMwMDU2LDMwMDU3LDMwMDU5LDMwMDYwLDMwMDYxLDMwMDYyLDMwMDYzLDMwMDY0LDMwMDY1LDMwMDY3LDMwMDY5LDMwMDcwLDMwMDcxLDMwMDc0LDMwMDc1LDMwMDc2LDMwMDc3LDMwMDc4LDMwMDgwLDMwMDgxLDMwMDgyLDMwMDg0LDMwMDg1LDMwMDg3LDU3NzIwLDU3NzIxLDU3NzIyLDU3NzIzLDU3NzI0LDU3NzI1LDU3NzI2LDU3NzI3LDU3NzI4LDU3NzI5LDU3NzMwLDU3NzMxLDU3NzMyLDU3NzMzLDU3NzM0LDU3NzM1LDU3NzM2LDU3NzM3LDU3NzM4LDU3NzM5LDU3NzQwLDU3NzQxLDU3NzQyLDU3NzQzLDU3NzQ0LDU3NzQ1LDU3NzQ2LDU3NzQ3LDU3NzQ4LDU3NzQ5LDU3NzUwLDU3NzUxLDU3NzUyLDU3NzUzLDU3NzU0LDU3NzU1LDU3NzU2LDU3NzU3LDU3NzU4LDU3NzU5LDU3NzYwLDU3NzYxLDU3NzYyLDU3NzYzLDU3NzY0LDU3NzY1LDU3NzY2LDU3NzY3LDU3NzY4LDU3NzY5LDU3NzcwLDU3NzcxLDU3NzcyLDU3NzczLDU3Nzc0LDU3Nzc1LDU3Nzc2LDU3Nzc3LDU3Nzc4LDU3Nzc5LDU3NzgwLDU3NzgxLDU3NzgyLDU3NzgzLDU3Nzg0LDU3Nzg1LDU3Nzg2LDU3Nzg3LDU3Nzg4LDU3Nzg5LDU3NzkwLDU3NzkxLDU3NzkyLDU3NzkzLDU3Nzk0LDU3Nzk1LDU3Nzk2LDU3Nzk3LDU3Nzk4LDU3Nzk5LDU3ODAwLDU3ODAxLDU3ODAyLDU3ODAzLDU3ODA0LDU3ODA1LDU3ODA2LDU3ODA3LDU3ODA4LDU3ODA5LDU3ODEwLDU3ODExLDU3ODEyLDU3ODEzLDMwMDg4LDMwMDg5LDMwMDkwLDMwMDkyLDMwMDkzLDMwMDk0LDMwMDk2LDMwMDk5LDMwMTAxLDMwMTA0LDMwMTA3LDMwMTA4LDMwMTEwLDMwMTE0LDMwMTE4LDMwMTE5LDMwMTIwLDMwMTIxLDMwMTIyLDMwMTI1LDMwMTM0LDMwMTM1LDMwMTM4LDMwMTM5LDMwMTQzLDMwMTQ0LDMwMTQ1LDMwMTUwLDMwMTU1LDMwMTU2LDMwMTU4LDMwMTU5LDMwMTYwLDMwMTYxLDMwMTYzLDMwMTY3LDMwMTY5LDMwMTcwLDMwMTcyLDMwMTczLDMwMTc1LDMwMTc2LDMwMTc3LDMwMTgxLDMwMTg1LDMwMTg4LDMwMTg5LDMwMTkwLDMwMTkxLDMwMTk0LDMwMTk1LDMwMTk3LDMwMTk4LDMwMTk5LDMwMjAwLDMwMjAyLDMwMjAzLDMwMjA1LDMwMjA2LDMwMjEwLDMwMjEyLDMwMjE0LDMwMjE1LDMwMjE2LDMwMjE3LDMwMjE5LDMwMjIxLDMwMjIyLDMwMjIzLDMwMjI1LDMwMjI2LDMwMjI3LDMwMjI4LDMwMjMwLDMwMjM0LDMwMjM2LDMwMjM3LDMwMjM4LDMwMjQxLDMwMjQzLDMwMjQ3LDMwMjQ4LDMwMjUyLDMwMjU0LDMwMjU1LDMwMjU3LDMwMjU4LDMwMjYyLDMwMjYzLDMwMjY1LDMwMjY2LDMwMjY3LDMwMjY5LDMwMjczLDMwMjc0LDMwMjc2LDU3ODE0LDU3ODE1LDU3ODE2LDU3ODE3LDU3ODE4LDU3ODE5LDU3ODIwLDU3ODIxLDU3ODIyLDU3ODIzLDU3ODI0LDU3ODI1LDU3ODI2LDU3ODI3LDU3ODI4LDU3ODI5LDU3ODMwLDU3ODMxLDU3ODMyLDU3ODMzLDU3ODM0LDU3ODM1LDU3ODM2LDU3ODM3LDU3ODM4LDU3ODM5LDU3ODQwLDU3ODQxLDU3ODQyLDU3ODQzLDU3ODQ0LDU3ODQ1LDU3ODQ2LDU3ODQ3LDU3ODQ4LDU3ODQ5LDU3ODUwLDU3ODUxLDU3ODUyLDU3ODUzLDU3ODU0LDU3ODU1LDU3ODU2LDU3ODU3LDU3ODU4LDU3ODU5LDU3ODYwLDU3ODYxLDU3ODYyLDU3ODYzLDU3ODY0LDU3ODY1LDU3ODY2LDU3ODY3LDU3ODY4LDU3ODY5LDU3ODcwLDU3ODcxLDU3ODcyLDU3ODczLDU3ODc0LDU3ODc1LDU3ODc2LDU3ODc3LDU3ODc4LDU3ODc5LDU3ODgwLDU3ODgxLDU3ODgyLDU3ODgzLDU3ODg0LDU3ODg1LDU3ODg2LDU3ODg3LDU3ODg4LDU3ODg5LDU3ODkwLDU3ODkxLDU3ODkyLDU3ODkzLDU3ODk0LDU3ODk1LDU3ODk2LDU3ODk3LDU3ODk4LDU3ODk5LDU3OTAwLDU3OTAxLDU3OTAyLDU3OTAzLDU3OTA0LDU3OTA1LDU3OTA2LDU3OTA3LDMwMjc3LDMwMjc4LDMwMjc5LDMwMjgwLDMwMjgxLDMwMjgyLDMwMjgzLDMwMjg2LDMwMjg3LDMwMjg4LDMwMjg5LDMwMjkwLDMwMjkxLDMwMjkzLDMwMjk1LDMwMjk2LDMwMjk3LDMwMjk4LDMwMjk5LDMwMzAxLDMwMzAzLDMwMzA0LDMwMzA1LDMwMzA2LDMwMzA4LDMwMzA5LDMwMzEwLDMwMzExLDMwMzEyLDMwMzEzLDMwMzE0LDMwMzE2LDMwMzE3LDMwMzE4LDMwMzIwLDMwMzIxLDMwMzIyLDMwMzIzLDMwMzI0LDMwMzI1LDMwMzI2LDMwMzI3LDMwMzI5LDMwMzMwLDMwMzMyLDMwMzM1LDMwMzM2LDMwMzM3LDMwMzM5LDMwMzQxLDMwMzQ1LDMwMzQ2LDMwMzQ4LDMwMzQ5LDMwMzUxLDMwMzUyLDMwMzU0LDMwMzU2LDMwMzU3LDMwMzU5LDMwMzYwLDMwMzYyLDMwMzYzLDMwMzY0LDMwMzY1LDMwMzY2LDMwMzY3LDMwMzY4LDMwMzY5LDMwMzcwLDMwMzcxLDMwMzczLDMwMzc0LDMwMzc1LDMwMzc2LDMwMzc3LDMwMzc4LDMwMzc5LDMwMzgwLDMwMzgxLDMwMzgzLDMwMzg0LDMwMzg3LDMwMzg5LDMwMzkwLDMwMzkxLDMwMzkyLDMwMzkzLDMwMzk0LDMwMzk1LDMwMzk2LDMwMzk3LDMwMzk4LDMwNDAwLDMwNDAxLDMwNDAzLDIxODM0LDM4NDYzLDIyNDY3LDI1Mzg0LDIxNzEwLDIxNzY5LDIxNjk2LDMwMzUzLDMwMjg0LDM0MTA4LDMwNzAyLDMzNDA2LDMwODYxLDI5MjMzLDM4NTUyLDM4Nzk3LDI3Njg4LDIzNDMzLDIwNDc0LDI1MzUzLDI2MjYzLDIzNzM2LDMzMDE4LDI2Njk2LDMyOTQyLDI2MTE0LDMwNDE0LDIwOTg1LDI1OTQyLDI5MTAwLDMyNzUzLDM0OTQ4LDIwNjU4LDIyODg1LDI1MDM0LDI4NTk1LDMzNDUzLDI1NDIwLDI1MTcwLDIxNDg1LDIxNTQzLDMxNDk0LDIwODQzLDMwMTE2LDI0MDUyLDI1MzAwLDM2Mjk5LDM4Nzc0LDI1MjI2LDMyNzkzLDIyMzY1LDM4NzEyLDMyNjEwLDI5MjQwLDMwMzMzLDI2NTc1LDMwMzM0LDI1NjcwLDIwMzM2LDM2MTMzLDI1MzA4LDMxMjU1LDI2MDAxLDI5Njc3LDI1NjQ0LDI1MjAzLDMzMzI0LDM5MDQxLDI2NDk1LDI5MjU2LDI1MTk4LDI1MjkyLDIwMjc2LDI5OTIzLDIxMzIyLDIxMTUwLDMyNDU4LDM3MDMwLDI0MTEwLDI2NzU4LDI3MDM2LDMzMTUyLDMyNDY1LDI2ODM0LDMwOTE3LDM0NDQ0LDM4MjI1LDIwNjIxLDM1ODc2LDMzNTAyLDMyOTkwLDIxMjUzLDM1MDkwLDIxMDkzLDMwNDA0LDMwNDA3LDMwNDA5LDMwNDExLDMwNDEyLDMwNDE5LDMwNDIxLDMwNDI1LDMwNDI2LDMwNDI4LDMwNDI5LDMwNDMwLDMwNDMyLDMwNDMzLDMwNDM0LDMwNDM1LDMwNDM2LDMwNDM4LDMwNDM5LDMwNDQwLDMwNDQxLDMwNDQyLDMwNDQzLDMwNDQ0LDMwNDQ1LDMwNDQ4LDMwNDUxLDMwNDUzLDMwNDU0LDMwNDU1LDMwNDU4LDMwNDU5LDMwNDYxLDMwNDYzLDMwNDY0LDMwNDY2LDMwNDY3LDMwNDY5LDMwNDcwLDMwNDc0LDMwNDc2LDMwNDc4LDMwNDc5LDMwNDgwLDMwNDgxLDMwNDgyLDMwNDgzLDMwNDg0LDMwNDg1LDMwNDg2LDMwNDg3LDMwNDg4LDMwNDkxLDMwNDkyLDMwNDkzLDMwNDk0LDMwNDk3LDMwNDk5LDMwNTAwLDMwNTAxLDMwNTAzLDMwNTA2LDMwNTA3LDMwNTA4LDMwNTEwLDMwNTEyLDMwNTEzLDMwNTE0LDMwNTE1LDMwNTE2LDMwNTIxLDMwNTIzLDMwNTI1LDMwNTI2LDMwNTI3LDMwNTMwLDMwNTMyLDMwNTMzLDMwNTM0LDMwNTM2LDMwNTM3LDMwNTM4LDMwNTM5LDMwNTQwLDMwNTQxLDMwNTQyLDMwNTQzLDMwNTQ2LDMwNTQ3LDMwNTQ4LDMwNTQ5LDMwNTUwLDMwNTUxLDMwNTUyLDMwNTUzLDMwNTU2LDM0MTgwLDM4NjQ5LDIwNDQ1LDIyNTYxLDM5MjgxLDIzNDUzLDI1MjY1LDI1MjUzLDI2MjkyLDM1OTYxLDQwMDc3LDI5MTkwLDI2NDc5LDMwODY1LDI0NzU0LDIxMzI5LDIxMjcxLDM2NzQ0LDMyOTcyLDM2MTI1LDM4MDQ5LDIwNDkzLDI5Mzg0LDIyNzkxLDI0ODExLDI4OTUzLDM0OTg3LDIyODY4LDMzNTE5LDI2NDEyLDMxNTI4LDIzODQ5LDMyNTAzLDI5OTk3LDI3ODkzLDM2NDU0LDM2ODU2LDM2OTI0LDQwNzYzLDI3NjA0LDM3MTQ1LDMxNTA4LDI0NDQ0LDMwODg3LDM0MDA2LDM0MTA5LDI3NjA1LDI3NjA5LDI3NjA2LDI0MDY1LDI0MTk5LDMwMjAxLDM4MzgxLDI1OTQ5LDI0MzMwLDI0NTE3LDM2NzY3LDIyNzIxLDMzMjE4LDM2OTkxLDM4NDkxLDM4ODI5LDM2NzkzLDMyNTM0LDM2MTQwLDI1MTUzLDIwNDE1LDIxNDY0LDIxMzQyLDM2Nzc2LDM2Nzc3LDM2Nzc5LDM2OTQxLDI2NjMxLDI0NDI2LDMzMTc2LDM0OTIwLDQwMTUwLDI0OTcxLDIxMDM1LDMwMjUwLDI0NDI4LDI1OTk2LDI4NjI2LDI4MzkyLDIzNDg2LDI1NjcyLDIwODUzLDIwOTEyLDI2NTY0LDE5OTkzLDMxMTc3LDM5MjkyLDI4ODUxLDMwNTU3LDMwNTU4LDMwNTU5LDMwNTYwLDMwNTY0LDMwNTY3LDMwNTY5LDMwNTcwLDMwNTczLDMwNTc0LDMwNTc1LDMwNTc2LDMwNTc3LDMwNTc4LDMwNTc5LDMwNTgwLDMwNTgxLDMwNTgyLDMwNTgzLDMwNTg0LDMwNTg2LDMwNTg3LDMwNTg4LDMwNTkzLDMwNTk0LDMwNTk1LDMwNTk4LDMwNTk5LDMwNjAwLDMwNjAxLDMwNjAyLDMwNjAzLDMwNjA3LDMwNjA4LDMwNjExLDMwNjEyLDMwNjEzLDMwNjE0LDMwNjE1LDMwNjE2LDMwNjE3LDMwNjE4LDMwNjE5LDMwNjIwLDMwNjIxLDMwNjIyLDMwNjI1LDMwNjI3LDMwNjI4LDMwNjMwLDMwNjMyLDMwNjM1LDMwNjM3LDMwNjM4LDMwNjM5LDMwNjQxLDMwNjQyLDMwNjQ0LDMwNjQ2LDMwNjQ3LDMwNjQ4LDMwNjQ5LDMwNjUwLDMwNjUyLDMwNjU0LDMwNjU2LDMwNjU3LDMwNjU4LDMwNjU5LDMwNjYwLDMwNjYxLDMwNjYyLDMwNjYzLDMwNjY0LDMwNjY1LDMwNjY2LDMwNjY3LDMwNjY4LDMwNjcwLDMwNjcxLDMwNjcyLDMwNjczLDMwNjc0LDMwNjc1LDMwNjc2LDMwNjc3LDMwNjc4LDMwNjgwLDMwNjgxLDMwNjgyLDMwNjg1LDMwNjg2LDMwNjg3LDMwNjg4LDMwNjg5LDMwNjkyLDMwMTQ5LDI0MTgyLDI5NjI3LDMzNzYwLDI1NzczLDI1MzIwLDM4MDY5LDI3ODc0LDIxMzM4LDIxMTg3LDI1NjE1LDM4MDgyLDMxNjM2LDIwMjcxLDI0MDkxLDMzMzM0LDMzMDQ2LDMzMTYyLDI4MTk2LDI3ODUwLDM5NTM5LDI1NDI5LDIxMzQwLDIxNzU0LDM0OTE3LDIyNDk2LDE5OTgxLDI0MDY3LDI3NDkzLDMxODA3LDM3MDk2LDI0NTk4LDI1ODMwLDI5NDY4LDM1MDA5LDI2NDQ4LDI1MTY1LDM2MTMwLDMwNTcyLDM2MzkzLDM3MzE5LDI0NDI1LDMzNzU2LDM0MDgxLDM5MTg0LDIxNDQyLDM0NDUzLDI3NTMxLDI0ODEzLDI0ODA4LDI4Nzk5LDMzNDg1LDMzMzI5LDIwMTc5LDI3ODE1LDM0MjU1LDI1ODA1LDMxOTYxLDI3MTMzLDI2MzYxLDMzNjA5LDIxMzk3LDMxNTc0LDIwMzkxLDIwODc2LDI3OTc5LDIzNjE4LDM2NDYxLDI1NTU0LDIxNDQ5LDMzNTgwLDMzNTkwLDI2NTk3LDMwOTAwLDI1NjYxLDIzNTE5LDIzNzAwLDI0MDQ2LDM1ODE1LDI1Mjg2LDI2NjEyLDM1OTYyLDI1NjAwLDI1NTMwLDM0NjMzLDM5MzA3LDM1ODYzLDMyNTQ0LDM4MTMwLDIwMTM1LDM4NDE2LDM5MDc2LDI2MTI0LDI5NDYyLDMwNjk0LDMwNjk2LDMwNjk4LDMwNzAzLDMwNzA0LDMwNzA1LDMwNzA2LDMwNzA4LDMwNzA5LDMwNzExLDMwNzEzLDMwNzE0LDMwNzE1LDMwNzE2LDMwNzIzLDMwNzI0LDMwNzI1LDMwNzI2LDMwNzI3LDMwNzI4LDMwNzMwLDMwNzMxLDMwNzM0LDMwNzM1LDMwNzM2LDMwNzM5LDMwNzQxLDMwNzQ1LDMwNzQ3LDMwNzUwLDMwNzUyLDMwNzUzLDMwNzU0LDMwNzU2LDMwNzYwLDMwNzYyLDMwNzYzLDMwNzY2LDMwNzY3LDMwNzY5LDMwNzcwLDMwNzcxLDMwNzczLDMwNzc0LDMwNzgxLDMwNzgzLDMwNzg1LDMwNzg2LDMwNzg3LDMwNzg4LDMwNzkwLDMwNzkyLDMwNzkzLDMwNzk0LDMwNzk1LDMwNzk3LDMwNzk5LDMwODAxLDMwODAzLDMwODA0LDMwODA4LDMwODA5LDMwODEwLDMwODExLDMwODEyLDMwODE0LDMwODE1LDMwODE2LDMwODE3LDMwODE4LDMwODE5LDMwODIwLDMwODIxLDMwODIyLDMwODIzLDMwODI0LDMwODI1LDMwODMxLDMwODMyLDMwODMzLDMwODM0LDMwODM1LDMwODM2LDMwODM3LDMwODM4LDMwODQwLDMwODQxLDMwODQyLDMwODQzLDMwODQ1LDMwODQ2LDMwODQ3LDMwODQ4LDMwODQ5LDMwODUwLDMwODUxLDIyMzMwLDIzNTgxLDI0MTIwLDM4MjcxLDIwNjA3LDMyOTI4LDIxMzc4LDI1OTUwLDMwMDIxLDIxODA5LDIwNTEzLDM2MjI5LDI1MjIwLDM4MDQ2LDI2Mzk3LDIyMDY2LDI4NTI2LDI0MDM0LDIxNTU3LDI4ODE4LDM2NzEwLDI1MTk5LDI1NzY0LDI1NTA3LDI0NDQzLDI4NTUyLDM3MTA4LDMzMjUxLDM2Nzg0LDIzNTc2LDI2MjE2LDI0NTYxLDI3Nzg1LDM4NDcyLDM2MjI1LDM0OTI0LDI1NzQ1LDMxMjE2LDIyNDc4LDI3MjI1LDI1MTA0LDIxNTc2LDIwMDU2LDMxMjQzLDI0ODA5LDI4NTQ4LDM1ODAyLDI1MjE1LDM2ODk0LDM5NTYzLDMxMjA0LDIxNTA3LDMwMTk2LDI1MzQ1LDIxMjczLDI3NzQ0LDM2ODMxLDI0MzQ3LDM5NTM2LDMyODI3LDQwODMxLDIwMzYwLDIzNjEwLDM2MTk2LDMyNzA5LDI2MDIxLDI4ODYxLDIwODA1LDIwOTE0LDM0NDExLDIzODE1LDIzNDU2LDI1Mjc3LDM3MjI4LDMwMDY4LDM2MzY0LDMxMjY0LDI0ODMzLDMxNjA5LDIwMTY3LDMyNTA0LDMwNTk3LDE5OTg1LDMzMjYxLDIxMDIxLDIwOTg2LDI3MjQ5LDIxNDE2LDM2NDg3LDM4MTQ4LDM4NjA3LDI4MzUzLDM4NTAwLDI2OTcwLDMwODUyLDMwODUzLDMwODU0LDMwODU2LDMwODU4LDMwODU5LDMwODYzLDMwODY0LDMwODY2LDMwODY4LDMwODY5LDMwODcwLDMwODczLDMwODc3LDMwODc4LDMwODgwLDMwODgyLDMwODg0LDMwODg2LDMwODg4LDMwODg5LDMwODkwLDMwODkxLDMwODkyLDMwODkzLDMwODk0LDMwODk1LDMwOTAxLDMwOTAyLDMwOTAzLDMwOTA0LDMwOTA2LDMwOTA3LDMwOTA4LDMwOTA5LDMwOTExLDMwOTEyLDMwOTE0LDMwOTE1LDMwOTE2LDMwOTE4LDMwOTE5LDMwOTIwLDMwOTI0LDMwOTI1LDMwOTI2LDMwOTI3LDMwOTI5LDMwOTMwLDMwOTMxLDMwOTM0LDMwOTM1LDMwOTM2LDMwOTM4LDMwOTM5LDMwOTQwLDMwOTQxLDMwOTQyLDMwOTQzLDMwOTQ0LDMwOTQ1LDMwOTQ2LDMwOTQ3LDMwOTQ4LDMwOTQ5LDMwOTUwLDMwOTUxLDMwOTUzLDMwOTU0LDMwOTU1LDMwOTU3LDMwOTU4LDMwOTU5LDMwOTYwLDMwOTYxLDMwOTYzLDMwOTY1LDMwOTY2LDMwOTY4LDMwOTY5LDMwOTcxLDMwOTcyLDMwOTczLDMwOTc0LDMwOTc1LDMwOTc2LDMwOTc4LDMwOTc5LDMwOTgwLDMwOTgyLDMwOTgzLDMwOTg0LDMwOTg1LDMwOTg2LDMwOTg3LDMwOTg4LDMwNzg0LDIwNjQ4LDMwNjc5LDI1NjE2LDM1MzAyLDIyNzg4LDI1NTcxLDI0MDI5LDMxMzU5LDI2OTQxLDIwMjU2LDMzMzM3LDIxOTEyLDIwMDE4LDMwMTI2LDMxMzgzLDI0MTYyLDI0MjAyLDM4MzgzLDIxMDE5LDIxNTYxLDI4ODEwLDI1NDYyLDM4MTgwLDIyNDAyLDI2MTQ5LDI2OTQzLDM3MjU1LDIxNzY3LDI4MTQ3LDMyNDMxLDM0ODUwLDI1MTM5LDMyNDk2LDMwMTMzLDMzNTc2LDMwOTEzLDM4NjA0LDM2NzY2LDI0OTA0LDI5OTQzLDM1Nzg5LDI3NDkyLDIxMDUwLDM2MTc2LDI3NDI1LDMyODc0LDMzOTA1LDIyMjU3LDIxMjU0LDIwMTc0LDE5OTk1LDIwOTQ1LDMxODk1LDM3MjU5LDMxNzUxLDIwNDE5LDM2NDc5LDMxNzEzLDMxMzg4LDI1NzAzLDIzODI4LDIwNjUyLDMzMDMwLDMwMjA5LDMxOTI5LDI4MTQwLDMyNzM2LDI2NDQ5LDIzMzg0LDIzNTQ0LDMwOTIzLDI1Nzc0LDI1NjE5LDI1NTE0LDI1Mzg3LDM4MTY5LDI1NjQ1LDM2Nzk4LDMxNTcyLDMwMjQ5LDI1MTcxLDIyODIzLDIxNTc0LDI3NTEzLDIwNjQzLDI1MTQwLDI0MTAyLDI3NTI2LDIwMTk1LDM2MTUxLDM0OTU1LDI0NDUzLDM2OTEwLDMwOTg5LDMwOTkwLDMwOTkxLDMwOTkyLDMwOTkzLDMwOTk0LDMwOTk2LDMwOTk3LDMwOTk4LDMwOTk5LDMxMDAwLDMxMDAxLDMxMDAyLDMxMDAzLDMxMDA0LDMxMDA1LDMxMDA3LDMxMDA4LDMxMDA5LDMxMDEwLDMxMDExLDMxMDEzLDMxMDE0LDMxMDE1LDMxMDE2LDMxMDE3LDMxMDE4LDMxMDE5LDMxMDIwLDMxMDIxLDMxMDIyLDMxMDIzLDMxMDI0LDMxMDI1LDMxMDI2LDMxMDI3LDMxMDI5LDMxMDMwLDMxMDMxLDMxMDMyLDMxMDMzLDMxMDM3LDMxMDM5LDMxMDQyLDMxMDQzLDMxMDQ0LDMxMDQ1LDMxMDQ3LDMxMDUwLDMxMDUxLDMxMDUyLDMxMDUzLDMxMDU0LDMxMDU1LDMxMDU2LDMxMDU3LDMxMDU4LDMxMDYwLDMxMDYxLDMxMDY0LDMxMDY1LDMxMDczLDMxMDc1LDMxMDc2LDMxMDc4LDMxMDgxLDMxMDgyLDMxMDgzLDMxMDg0LDMxMDg2LDMxMDg4LDMxMDg5LDMxMDkwLDMxMDkxLDMxMDkyLDMxMDkzLDMxMDk0LDMxMDk3LDMxMDk5LDMxMTAwLDMxMTAxLDMxMTAyLDMxMTAzLDMxMTA2LDMxMTA3LDMxMTEwLDMxMTExLDMxMTEyLDMxMTEzLDMxMTE1LDMxMTE2LDMxMTE3LDMxMTE4LDMxMTIwLDMxMTIxLDMxMTIyLDI0NjA4LDMyODI5LDI1Mjg1LDIwMDI1LDIxMzMzLDM3MTEyLDI1NTI4LDMyOTY2LDI2MDg2LDI3Njk0LDIwMjk0LDI0ODE0LDI4MTI5LDM1ODA2LDI0Mzc3LDM0NTA3LDI0NDAzLDI1Mzc3LDIwODI2LDMzNjMzLDI2NzIzLDIwOTkyLDI1NDQzLDM2NDI0LDIwNDk4LDIzNzA3LDMxMDk1LDIzNTQ4LDIxMDQwLDMxMjkxLDI0NzY0LDM2OTQ3LDMwNDIzLDI0NTAzLDI0NDcxLDMwMzQwLDM2NDYwLDI4NzgzLDMwMzMxLDMxNTYxLDMwNjM0LDIwOTc5LDM3MDExLDIyNTY0LDIwMzAyLDI4NDA0LDM2ODQyLDI1OTMyLDMxNTE1LDI5MzgwLDI4MDY4LDMyNzM1LDIzMjY1LDI1MjY5LDI0MjEzLDIyMzIwLDMzOTIyLDMxNTMyLDI0MDkzLDI0MzUxLDM2ODgyLDMyNTMyLDM5MDcyLDI1NDc0LDI4MzU5LDMwODcyLDI4ODU3LDIwODU2LDM4NzQ3LDIyNDQzLDMwMDA1LDIwMjkxLDMwMDA4LDI0MjE1LDI0ODA2LDIyODgwLDI4MDk2LDI3NTgzLDMwODU3LDIxNTAwLDM4NjEzLDIwOTM5LDIwOTkzLDI1NDgxLDIxNTE0LDM4MDM1LDM1ODQzLDM2MzAwLDI5MjQxLDMwODc5LDM0Njc4LDM2ODQ1LDM1ODUzLDIxNDcyLDMxMTIzLDMxMTI0LDMxMTI1LDMxMTI2LDMxMTI3LDMxMTI4LDMxMTI5LDMxMTMxLDMxMTMyLDMxMTMzLDMxMTM0LDMxMTM1LDMxMTM2LDMxMTM3LDMxMTM4LDMxMTM5LDMxMTQwLDMxMTQxLDMxMTQyLDMxMTQ0LDMxMTQ1LDMxMTQ2LDMxMTQ3LDMxMTQ4LDMxMTQ5LDMxMTUwLDMxMTUxLDMxMTUyLDMxMTUzLDMxMTU0LDMxMTU2LDMxMTU3LDMxMTU4LDMxMTU5LDMxMTYwLDMxMTY0LDMxMTY3LDMxMTcwLDMxMTcyLDMxMTczLDMxMTc1LDMxMTc2LDMxMTc4LDMxMTgwLDMxMTgyLDMxMTgzLDMxMTg0LDMxMTg3LDMxMTg4LDMxMTkwLDMxMTkxLDMxMTkzLDMxMTk0LDMxMTk1LDMxMTk2LDMxMTk3LDMxMTk4LDMxMjAwLDMxMjAxLDMxMjAyLDMxMjA1LDMxMjA4LDMxMjEwLDMxMjEyLDMxMjE0LDMxMjE3LDMxMjE4LDMxMjE5LDMxMjIwLDMxMjIxLDMxMjIyLDMxMjIzLDMxMjI1LDMxMjI2LDMxMjI4LDMxMjMwLDMxMjMxLDMxMjMzLDMxMjM2LDMxMjM3LDMxMjM5LDMxMjQwLDMxMjQxLDMxMjQyLDMxMjQ0LDMxMjQ3LDMxMjQ4LDMxMjQ5LDMxMjUwLDMxMjUxLDMxMjUzLDMxMjU0LDMxMjU2LDMxMjU3LDMxMjU5LDMxMjYwLDE5OTY5LDMwNDQ3LDIxNDg2LDM4MDI1LDM5MDMwLDQwNzE4LDM4MTg5LDIzNDUwLDM1NzQ2LDIwMDAyLDE5OTk2LDIwOTA4LDMzODkxLDI1MDI2LDIxMTYwLDI2NjM1LDIwMzc1LDI0NjgzLDIwOTIzLDI3OTM0LDIwODI4LDI1MjM4LDI2MDA3LDM4NDk3LDM1OTEwLDM2ODg3LDMwMTY4LDM3MTE3LDMwNTYzLDI3NjAyLDI5MzIyLDI5NDIwLDM1ODM1LDIyNTgxLDMwNTg1LDM2MTcyLDI2NDYwLDM4MjA4LDMyOTIyLDI0MjMwLDI4MTkzLDIyOTMwLDMxNDcxLDMwNzAxLDM4MjAzLDI3NTczLDI2MDI5LDMyNTI2LDIyNTM0LDIwODE3LDM4NDMxLDIzNTQ1LDIyNjk3LDIxNTQ0LDM2NDY2LDI1OTU4LDM5MDM5LDIyMjQ0LDM4MDQ1LDMwNDYyLDM2OTI5LDI1NDc5LDIxNzAyLDIyODEwLDIyODQyLDIyNDI3LDM2NTMwLDI2NDIxLDM2MzQ2LDMzMzMzLDIxMDU3LDI0ODE2LDIyNTQ5LDM0NTU4LDIzNzg0LDQwNTE3LDIwNDIwLDM5MDY5LDM1NzY5LDIzMDc3LDI0Njk0LDIxMzgwLDI1MjEyLDM2OTQzLDM3MTIyLDM5Mjk1LDI0NjgxLDMyNzgwLDIwNzk5LDMyODE5LDIzNTcyLDM5Mjg1LDI3OTUzLDIwMTA4LDMxMjYxLDMxMjYzLDMxMjY1LDMxMjY2LDMxMjY4LDMxMjY5LDMxMjcwLDMxMjcxLDMxMjcyLDMxMjczLDMxMjc0LDMxMjc1LDMxMjc2LDMxMjc3LDMxMjc4LDMxMjc5LDMxMjgwLDMxMjgxLDMxMjgyLDMxMjg0LDMxMjg1LDMxMjg2LDMxMjg4LDMxMjkwLDMxMjk0LDMxMjk2LDMxMjk3LDMxMjk4LDMxMjk5LDMxMzAwLDMxMzAxLDMxMzAzLDMxMzA0LDMxMzA1LDMxMzA2LDMxMzA3LDMxMzA4LDMxMzA5LDMxMzEwLDMxMzExLDMxMzEyLDMxMzE0LDMxMzE1LDMxMzE2LDMxMzE3LDMxMzE4LDMxMzIwLDMxMzIxLDMxMzIyLDMxMzIzLDMxMzI0LDMxMzI1LDMxMzI2LDMxMzI3LDMxMzI4LDMxMzI5LDMxMzMwLDMxMzMxLDMxMzMyLDMxMzMzLDMxMzM0LDMxMzM1LDMxMzM2LDMxMzM3LDMxMzM4LDMxMzM5LDMxMzQwLDMxMzQxLDMxMzQyLDMxMzQzLDMxMzQ1LDMxMzQ2LDMxMzQ3LDMxMzQ5LDMxMzU1LDMxMzU2LDMxMzU3LDMxMzU4LDMxMzYyLDMxMzY1LDMxMzY3LDMxMzY5LDMxMzcwLDMxMzcxLDMxMzcyLDMxMzc0LDMxMzc1LDMxMzc2LDMxMzc5LDMxMzgwLDMxMzg1LDMxMzg2LDMxMzg3LDMxMzkwLDMxMzkzLDMxMzk0LDM2MTQ0LDIxNDU3LDMyNjAyLDMxNTY3LDIwMjQwLDIwMDQ3LDM4NDAwLDI3ODYxLDI5NjQ4LDM0MjgxLDI0MDcwLDMwMDU4LDMyNzYzLDI3MTQ2LDMwNzE4LDM4MDM0LDMyMzIxLDIwOTYxLDI4OTAyLDIxNDUzLDM2ODIwLDMzNTM5LDM2MTM3LDI5MzU5LDM5Mjc3LDI3ODY3LDIyMzQ2LDMzNDU5LDI2MDQxLDMyOTM4LDI1MTUxLDM4NDUwLDIyOTUyLDIwMjIzLDM1Nzc1LDMyNDQyLDI1OTE4LDMzNzc4LDM4NzUwLDIxODU3LDM5MTM0LDMyOTMzLDIxMjkwLDM1ODM3LDIxNTM2LDMyOTU0LDI0MjIzLDI3ODMyLDM2MTUzLDMzNDUyLDM3MjEwLDIxNTQ1LDI3Njc1LDIwOTk4LDMyNDM5LDIyMzY3LDI4OTU0LDI3Nzc0LDMxODgxLDIyODU5LDIwMjIxLDI0NTc1LDI0ODY4LDMxOTE0LDIwMDE2LDIzNTUzLDI2NTM5LDM0NTYyLDIzNzkyLDM4MTU1LDM5MTE4LDMwMTI3LDI4OTI1LDM2ODk4LDIwOTExLDMyNTQxLDM1NzczLDIyODU3LDIwOTY0LDIwMzE1LDIxNTQyLDIyODI3LDI1OTc1LDMyOTMyLDIzNDEzLDI1MjA2LDI1MjgyLDM2NzUyLDI0MTMzLDI3Njc5LDMxNTI2LDIwMjM5LDIwNDQwLDI2MzgxLDMxMzk1LDMxMzk2LDMxMzk5LDMxNDAxLDMxNDAyLDMxNDAzLDMxNDA2LDMxNDA3LDMxNDA4LDMxNDA5LDMxNDEwLDMxNDEyLDMxNDEzLDMxNDE0LDMxNDE1LDMxNDE2LDMxNDE3LDMxNDE4LDMxNDE5LDMxNDIwLDMxNDIxLDMxNDIyLDMxNDI0LDMxNDI1LDMxNDI2LDMxNDI3LDMxNDI4LDMxNDI5LDMxNDMwLDMxNDMxLDMxNDMyLDMxNDMzLDMxNDM0LDMxNDM2LDMxNDM3LDMxNDM4LDMxNDM5LDMxNDQwLDMxNDQxLDMxNDQyLDMxNDQzLDMxNDQ0LDMxNDQ1LDMxNDQ3LDMxNDQ4LDMxNDUwLDMxNDUxLDMxNDUyLDMxNDUzLDMxNDU3LDMxNDU4LDMxNDYwLDMxNDYzLDMxNDY0LDMxNDY1LDMxNDY2LDMxNDY3LDMxNDY4LDMxNDcwLDMxNDcyLDMxNDczLDMxNDc0LDMxNDc1LDMxNDc2LDMxNDc3LDMxNDc4LDMxNDc5LDMxNDgwLDMxNDgzLDMxNDg0LDMxNDg2LDMxNDg4LDMxNDg5LDMxNDkwLDMxNDkzLDMxNDk1LDMxNDk3LDMxNTAwLDMxNTAxLDMxNTAyLDMxNTA0LDMxNTA2LDMxNTA3LDMxNTEwLDMxNTExLDMxNTEyLDMxNTE0LDMxNTE2LDMxNTE3LDMxNTE5LDMxNTIxLDMxNTIyLDMxNTIzLDMxNTI3LDMxNTI5LDMxNTMzLDI4MDE0LDI4MDc0LDMxMTE5LDM0OTkzLDI0MzQzLDI5OTk1LDI1MjQyLDM2NzQxLDIwNDYzLDM3MzQwLDI2MDIzLDMzMDcxLDMzMTA1LDI0MjIwLDMzMTA0LDM2MjEyLDIxMTAzLDM1MjA2LDM2MTcxLDIyNzk3LDIwNjEzLDIwMTg0LDM4NDI4LDI5MjM4LDMzMTQ1LDM2MTI3LDIzNTAwLDM1NzQ3LDM4NDY4LDIyOTE5LDMyNTM4LDIxNjQ4LDIyMTM0LDIyMDMwLDM1ODEzLDI1OTEzLDI3MDEwLDM4MDQxLDMwNDIyLDI4Mjk3LDI0MTc4LDI5OTc2LDI2NDM4LDI2NTc3LDMxNDg3LDMyOTI1LDM2MjE0LDI0ODYzLDMxMTc0LDI1OTU0LDM2MTk1LDIwODcyLDIxMDE4LDM4MDUwLDMyNTY4LDMyOTIzLDMyNDM0LDIzNzAzLDI4MjA3LDI2NDY0LDMxNzA1LDMwMzQ3LDM5NjQwLDMzMTY3LDMyNjYwLDMxOTU3LDI1NjMwLDM4MjI0LDMxMjk1LDIxNTc4LDIxNzMzLDI3NDY4LDI1NjAxLDI1MDk2LDQwNTA5LDMzMDExLDMwMTA1LDIxMTA2LDM4NzYxLDMzODgzLDI2Njg0LDM0NTMyLDM4NDAxLDM4NTQ4LDM4MTI0LDIwMDEwLDIxNTA4LDMyNDczLDI2NjgxLDM2MzE5LDMyNzg5LDI2MzU2LDI0MjE4LDMyNjk3LDMxNTM1LDMxNTM2LDMxNTM4LDMxNTQwLDMxNTQxLDMxNTQyLDMxNTQzLDMxNTQ1LDMxNTQ3LDMxNTQ5LDMxNTUxLDMxNTUyLDMxNTUzLDMxNTU0LDMxNTU1LDMxNTU2LDMxNTU4LDMxNTYwLDMxNTYyLDMxNTY1LDMxNTY2LDMxNTcxLDMxNTczLDMxNTc1LDMxNTc3LDMxNTgwLDMxNTgyLDMxNTgzLDMxNTg1LDMxNTg3LDMxNTg4LDMxNTg5LDMxNTkwLDMxNTkxLDMxNTkyLDMxNTkzLDMxNTk0LDMxNTk1LDMxNTk2LDMxNTk3LDMxNTk5LDMxNjAwLDMxNjAzLDMxNjA0LDMxNjA2LDMxNjA4LDMxNjEwLDMxNjEyLDMxNjEzLDMxNjE1LDMxNjE3LDMxNjE4LDMxNjE5LDMxNjIwLDMxNjIyLDMxNjIzLDMxNjI0LDMxNjI1LDMxNjI2LDMxNjI3LDMxNjI4LDMxNjMwLDMxNjMxLDMxNjMzLDMxNjM0LDMxNjM1LDMxNjM4LDMxNjQwLDMxNjQxLDMxNjQyLDMxNjQzLDMxNjQ2LDMxNjQ3LDMxNjQ4LDMxNjUxLDMxNjUyLDMxNjUzLDMxNjYyLDMxNjYzLDMxNjY0LDMxNjY2LDMxNjY3LDMxNjY5LDMxNjcwLDMxNjcxLDMxNjczLDMxNjc0LDMxNjc1LDMxNjc2LDMxNjc3LDMxNjc4LDMxNjc5LDMxNjgwLDMxNjgyLDMxNjgzLDMxNjg0LDIyNDY2LDMyODMxLDI2Nzc1LDI0MDM3LDI1OTE1LDIxMTUxLDI0Njg1LDQwODU4LDIwMzc5LDM2NTI0LDIwODQ0LDIzNDY3LDI0MzM5LDI0MDQxLDI3NzQyLDI1MzI5LDM2MTI5LDIwODQ5LDM4MDU3LDIxMjQ2LDI3ODA3LDMzNTAzLDI5Mzk5LDIyNDM0LDI2NTAwLDM2MTQxLDIyODE1LDM2NzY0LDMzNzM1LDIxNjUzLDMxNjI5LDIwMjcyLDI3ODM3LDIzMzk2LDIyOTkzLDQwNzIzLDIxNDc2LDM0NTA2LDM5NTkyLDM1ODk1LDMyOTI5LDI1OTI1LDM5MDM4LDIyMjY2LDM4NTk5LDIxMDM4LDI5OTE2LDIxMDcyLDIzNTIxLDI1MzQ2LDM1MDc0LDIwMDU0LDI1Mjk2LDI0NjE4LDI2ODc0LDIwODUxLDIzNDQ4LDIwODk2LDM1MjY2LDMxNjQ5LDM5MzAyLDMyNTkyLDI0ODE1LDI4NzQ4LDM2MTQzLDIwODA5LDI0MTkxLDM2ODkxLDI5ODA4LDM1MjY4LDIyMzE3LDMwNzg5LDI0NDAyLDQwODYzLDM4Mzk0LDM2NzEyLDM5NzQwLDM1ODA5LDMwMzI4LDI2NjkwLDI2NTg4LDM2MzMwLDM2MTQ5LDIxMDUzLDM2NzQ2LDI4Mzc4LDI2ODI5LDM4MTQ5LDM3MTAxLDIyMjY5LDI2NTI0LDM1MDY1LDM2ODA3LDIxNzA0LDMxNjg1LDMxNjg4LDMxNjg5LDMxNjkwLDMxNjkxLDMxNjkzLDMxNjk0LDMxNjk1LDMxNjk2LDMxNjk4LDMxNzAwLDMxNzAxLDMxNzAyLDMxNzAzLDMxNzA0LDMxNzA3LDMxNzA4LDMxNzEwLDMxNzExLDMxNzEyLDMxNzE0LDMxNzE1LDMxNzE2LDMxNzE5LDMxNzIwLDMxNzIxLDMxNzIzLDMxNzI0LDMxNzI1LDMxNzI3LDMxNzI4LDMxNzMwLDMxNzMxLDMxNzMyLDMxNzMzLDMxNzM0LDMxNzM2LDMxNzM3LDMxNzM4LDMxNzM5LDMxNzQxLDMxNzQzLDMxNzQ0LDMxNzQ1LDMxNzQ2LDMxNzQ3LDMxNzQ4LDMxNzQ5LDMxNzUwLDMxNzUyLDMxNzUzLDMxNzU0LDMxNzU3LDMxNzU4LDMxNzYwLDMxNzYxLDMxNzYyLDMxNzYzLDMxNzY0LDMxNzY1LDMxNzY3LDMxNzY4LDMxNzY5LDMxNzcwLDMxNzcxLDMxNzcyLDMxNzczLDMxNzc0LDMxNzc2LDMxNzc3LDMxNzc4LDMxNzc5LDMxNzgwLDMxNzgxLDMxNzg0LDMxNzg1LDMxNzg3LDMxNzg4LDMxNzg5LDMxNzkwLDMxNzkxLDMxNzkyLDMxNzkzLDMxNzk0LDMxNzk1LDMxNzk2LDMxNzk3LDMxNzk4LDMxNzk5LDMxODAxLDMxODAyLDMxODAzLDMxODA0LDMxODA1LDMxODA2LDMxODEwLDM5NjA4LDIzNDAxLDI4MDIzLDI3Njg2LDIwMTMzLDIzNDc1LDM5NTU5LDM3MjE5LDI1MDAwLDM3MDM5LDM4ODg5LDIxNTQ3LDI4MDg1LDIzNTA2LDIwOTg5LDIxODk4LDMyNTk3LDMyNzUyLDI1Nzg4LDI1NDIxLDI2MDk3LDI1MDIyLDI0NzE3LDI4OTM4LDI3NzM1LDI3NzIxLDIyODMxLDI2NDc3LDMzMzIyLDIyNzQxLDIyMTU4LDM1OTQ2LDI3NjI3LDM3MDg1LDIyOTA5LDMyNzkxLDIxNDk1LDI4MDA5LDIxNjIxLDIxOTE3LDMzNjU1LDMzNzQzLDI2NjgwLDMxMTY2LDIxNjQ0LDIwMzA5LDIxNTEyLDMwNDE4LDM1OTc3LDM4NDAyLDI3ODI3LDI4MDg4LDM2MjAzLDM1MDg4LDQwNTQ4LDM2MTU0LDIyMDc5LDQwNjU3LDMwMTY1LDI0NDU2LDI5NDA4LDI0NjgwLDIxNzU2LDIwMTM2LDI3MTc4LDM0OTEzLDI0NjU4LDM2NzIwLDIxNzAwLDI4ODg4LDM0NDI1LDQwNTExLDI3OTQ2LDIzNDM5LDI0MzQ0LDMyNDE4LDIxODk3LDIwMzk5LDI5NDkyLDIxNTY0LDIxNDAyLDIwNTA1LDIxNTE4LDIxNjI4LDIwMDQ2LDI0NTczLDI5Nzg2LDIyNzc0LDMzODk5LDMyOTkzLDM0Njc2LDI5MzkyLDMxOTQ2LDI4MjQ2LDMxODExLDMxODEyLDMxODEzLDMxODE0LDMxODE1LDMxODE2LDMxODE3LDMxODE4LDMxODE5LDMxODIwLDMxODIyLDMxODIzLDMxODI0LDMxODI1LDMxODI2LDMxODI3LDMxODI4LDMxODI5LDMxODMwLDMxODMxLDMxODMyLDMxODMzLDMxODM0LDMxODM1LDMxODM2LDMxODM3LDMxODM4LDMxODM5LDMxODQwLDMxODQxLDMxODQyLDMxODQzLDMxODQ0LDMxODQ1LDMxODQ2LDMxODQ3LDMxODQ4LDMxODQ5LDMxODUwLDMxODUxLDMxODUyLDMxODUzLDMxODU0LDMxODU1LDMxODU2LDMxODU3LDMxODU4LDMxODYxLDMxODYyLDMxODYzLDMxODY0LDMxODY1LDMxODY2LDMxODcwLDMxODcxLDMxODcyLDMxODczLDMxODc0LDMxODc1LDMxODc2LDMxODc3LDMxODc4LDMxODc5LDMxODgwLDMxODgyLDMxODgzLDMxODg0LDMxODg1LDMxODg2LDMxODg3LDMxODg4LDMxODkxLDMxODkyLDMxODk0LDMxODk3LDMxODk4LDMxODk5LDMxOTA0LDMxOTA1LDMxOTA3LDMxOTEwLDMxOTExLDMxOTEyLDMxOTEzLDMxOTE1LDMxOTE2LDMxOTE3LDMxOTE5LDMxOTIwLDMxOTI0LDMxOTI1LDMxOTI2LDMxOTI3LDMxOTI4LDMxOTMwLDMxOTMxLDI0MzU5LDM0MzgyLDIxODA0LDI1MjUyLDIwMTE0LDI3ODE4LDI1MTQzLDMzNDU3LDIxNzE5LDIxMzI2LDI5NTAyLDI4MzY5LDMwMDExLDIxMDEwLDIxMjcwLDM1ODA1LDI3MDg4LDI0NDU4LDI0NTc2LDI4MTQyLDIyMzUxLDI3NDI2LDI5NjE1LDI2NzA3LDM2ODI0LDMyNTMxLDI1NDQyLDI0NzM5LDIxNzk2LDMwMTg2LDM1OTM4LDI4OTQ5LDI4MDY3LDIzNDYyLDI0MTg3LDMzNjE4LDI0OTA4LDQwNjQ0LDMwOTcwLDM0NjQ3LDMxNzgzLDMwMzQzLDIwOTc2LDI0ODIyLDI5MDA0LDI2MTc5LDI0MTQwLDI0NjUzLDM1ODU0LDI4Nzg0LDI1MzgxLDM2NzQ1LDI0NTA5LDI0Njc0LDM0NTE2LDIyMjM4LDI3NTg1LDI0NzI0LDI0OTM1LDIxMzIxLDI0ODAwLDI2MjE0LDM2MTU5LDMxMjI5LDIwMjUwLDI4OTA1LDI3NzE5LDM1NzYzLDM1ODI2LDMyNDcyLDMzNjM2LDI2MTI3LDIzMTMwLDM5NzQ2LDI3OTg1LDI4MTUxLDM1OTA1LDI3OTYzLDIwMjQ5LDI4Nzc5LDMzNzE5LDI1MTEwLDI0Nzg1LDM4NjY5LDM2MTM1LDMxMDk2LDIwOTg3LDIyMzM0LDIyNTIyLDI2NDI2LDMwMDcyLDMxMjkzLDMxMjE1LDMxNjM3LDMxOTM1LDMxOTM2LDMxOTM4LDMxOTM5LDMxOTQwLDMxOTQyLDMxOTQ1LDMxOTQ3LDMxOTUwLDMxOTUxLDMxOTUyLDMxOTUzLDMxOTU0LDMxOTU1LDMxOTU2LDMxOTYwLDMxOTYyLDMxOTYzLDMxOTY1LDMxOTY2LDMxOTY5LDMxOTcwLDMxOTcxLDMxOTcyLDMxOTczLDMxOTc0LDMxOTc1LDMxOTc3LDMxOTc4LDMxOTc5LDMxOTgwLDMxOTgxLDMxOTgyLDMxOTg0LDMxOTg1LDMxOTg2LDMxOTg3LDMxOTg4LDMxOTg5LDMxOTkwLDMxOTkxLDMxOTkzLDMxOTk0LDMxOTk2LDMxOTk3LDMxOTk4LDMxOTk5LDMyMDAwLDMyMDAxLDMyMDAyLDMyMDAzLDMyMDA0LDMyMDA1LDMyMDA2LDMyMDA3LDMyMDA4LDMyMDA5LDMyMDExLDMyMDEyLDMyMDEzLDMyMDE0LDMyMDE1LDMyMDE2LDMyMDE3LDMyMDE4LDMyMDE5LDMyMDIwLDMyMDIxLDMyMDIyLDMyMDIzLDMyMDI0LDMyMDI1LDMyMDI2LDMyMDI3LDMyMDI4LDMyMDI5LDMyMDMwLDMyMDMxLDMyMDMzLDMyMDM1LDMyMDM2LDMyMDM3LDMyMDM4LDMyMDQwLDMyMDQxLDMyMDQyLDMyMDQ0LDMyMDQ1LDMyMDQ2LDMyMDQ4LDMyMDQ5LDMyMDUwLDMyMDUxLDMyMDUyLDMyMDUzLDMyMDU0LDMyOTA4LDM5MjY5LDM2ODU3LDI4NjA4LDM1NzQ5LDQwNDgxLDIzMDIwLDMyNDg5LDMyNTIxLDIxNTEzLDI2NDk3LDI2ODQwLDM2NzUzLDMxODIxLDM4NTk4LDIxNDUwLDI0NjEzLDMwMTQyLDI3NzYyLDIxMzYzLDIzMjQxLDMyNDIzLDI1MzgwLDIwOTYwLDMzMDM0LDI0MDQ5LDM0MDE1LDI1MjE2LDIwODY0LDIzMzk1LDIwMjM4LDMxMDg1LDIxMDU4LDI0NzYwLDI3OTgyLDIzNDkyLDIzNDkwLDM1NzQ1LDM1NzYwLDI2MDgyLDI0NTI0LDM4NDY5LDIyOTMxLDMyNDg3LDMyNDI2LDIyMDI1LDI2NTUxLDIyODQxLDIwMzM5LDIzNDc4LDIxMTUyLDMzNjI2LDM5MDUwLDM2MTU4LDMwMDAyLDM4MDc4LDIwNTUxLDMxMjkyLDIwMjE1LDI2NTUwLDM5NTUwLDIzMjMzLDI3NTE2LDMwNDE3LDIyMzYyLDIzNTc0LDMxNTQ2LDM4Mzg4LDI5MDA2LDIwODYwLDMyOTM3LDMzMzkyLDIyOTA0LDMyNTE2LDMzNTc1LDI2ODE2LDI2NjA0LDMwODk3LDMwODM5LDI1MzE1LDI1NDQxLDMxNjE2LDIwNDYxLDIxMDk4LDIwOTQzLDMzNjE2LDI3MDk5LDM3NDkyLDM2MzQxLDM2MTQ1LDM1MjY1LDM4MTkwLDMxNjYxLDIwMjE0LDMyMDU1LDMyMDU2LDMyMDU3LDMyMDU4LDMyMDU5LDMyMDYwLDMyMDYxLDMyMDYyLDMyMDYzLDMyMDY0LDMyMDY1LDMyMDY2LDMyMDY3LDMyMDY4LDMyMDY5LDMyMDcwLDMyMDcxLDMyMDcyLDMyMDczLDMyMDc0LDMyMDc1LDMyMDc2LDMyMDc3LDMyMDc4LDMyMDc5LDMyMDgwLDMyMDgxLDMyMDgyLDMyMDgzLDMyMDg0LDMyMDg1LDMyMDg2LDMyMDg3LDMyMDg4LDMyMDg5LDMyMDkwLDMyMDkxLDMyMDkyLDMyMDkzLDMyMDk0LDMyMDk1LDMyMDk2LDMyMDk3LDMyMDk4LDMyMDk5LDMyMTAwLDMyMTAxLDMyMTAyLDMyMTAzLDMyMTA0LDMyMTA1LDMyMTA2LDMyMTA3LDMyMTA4LDMyMTA5LDMyMTExLDMyMTEyLDMyMTEzLDMyMTE0LDMyMTE1LDMyMTE2LDMyMTE3LDMyMTE4LDMyMTIwLDMyMTIxLDMyMTIyLDMyMTIzLDMyMTI0LDMyMTI1LDMyMTI2LDMyMTI3LDMyMTI4LDMyMTI5LDMyMTMwLDMyMTMxLDMyMTMyLDMyMTMzLDMyMTM0LDMyMTM1LDMyMTM2LDMyMTM3LDMyMTM4LDMyMTM5LDMyMTQwLDMyMTQxLDMyMTQyLDMyMTQzLDMyMTQ0LDMyMTQ1LDMyMTQ2LDMyMTQ3LDMyMTQ4LDMyMTQ5LDMyMTUwLDMyMTUxLDMyMTUyLDIwNTgxLDMzMzI4LDIxMDczLDM5Mjc5LDI4MTc2LDI4MjkzLDI4MDcxLDI0MzE0LDIwNzI1LDIzMDA0LDIzNTU4LDI3OTc0LDI3NzQzLDMwMDg2LDMzOTMxLDI2NzI4LDIyODcwLDM1NzYyLDIxMjgwLDM3MjMzLDM4NDc3LDM0MTIxLDI2ODk4LDMwOTc3LDI4OTY2LDMzMDE0LDIwMTMyLDM3MDY2LDI3OTc1LDM5NTU2LDIzMDQ3LDIyMjA0LDI1NjA1LDM4MTI4LDMwNjk5LDIwMzg5LDMzMDUwLDI5NDA5LDM1MjgyLDM5MjkwLDMyNTY0LDMyNDc4LDIxMTE5LDI1OTQ1LDM3MjM3LDM2NzM1LDM2NzM5LDIxNDgzLDMxMzgyLDI1NTgxLDI1NTA5LDMwMzQyLDMxMjI0LDM0OTAzLDM4NDU0LDI1MTMwLDIxMTYzLDMzNDEwLDI2NzA4LDI2NDgwLDI1NDYzLDMwNTcxLDMxNDY5LDI3OTA1LDMyNDY3LDM1Mjk5LDIyOTkyLDI1MTA2LDM0MjQ5LDMzNDQ1LDMwMDI4LDIwNTExLDIwMTcxLDMwMTE3LDM1ODE5LDIzNjI2LDI0MDYyLDMxNTYzLDI2MDIwLDM3MzI5LDIwMTcwLDI3OTQxLDM1MTY3LDMyMDM5LDM4MTgyLDIwMTY1LDM1ODgwLDM2ODI3LDM4NzcxLDI2MTg3LDMxMTA1LDM2ODE3LDI4OTA4LDI4MDI0LDMyMTUzLDMyMTU0LDMyMTU1LDMyMTU2LDMyMTU3LDMyMTU4LDMyMTU5LDMyMTYwLDMyMTYxLDMyMTYyLDMyMTYzLDMyMTY0LDMyMTY1LDMyMTY3LDMyMTY4LDMyMTY5LDMyMTcwLDMyMTcxLDMyMTcyLDMyMTczLDMyMTc1LDMyMTc2LDMyMTc3LDMyMTc4LDMyMTc5LDMyMTgwLDMyMTgxLDMyMTgyLDMyMTgzLDMyMTg0LDMyMTg1LDMyMTg2LDMyMTg3LDMyMTg4LDMyMTg5LDMyMTkwLDMyMTkxLDMyMTkyLDMyMTkzLDMyMTk0LDMyMTk1LDMyMTk2LDMyMTk3LDMyMTk4LDMyMTk5LDMyMjAwLDMyMjAxLDMyMjAyLDMyMjAzLDMyMjA0LDMyMjA1LDMyMjA2LDMyMjA3LDMyMjA4LDMyMjA5LDMyMjEwLDMyMjExLDMyMjEyLDMyMjEzLDMyMjE0LDMyMjE1LDMyMjE2LDMyMjE3LDMyMjE4LDMyMjE5LDMyMjIwLDMyMjIxLDMyMjIyLDMyMjIzLDMyMjI0LDMyMjI1LDMyMjI2LDMyMjI3LDMyMjI4LDMyMjI5LDMyMjMwLDMyMjMxLDMyMjMyLDMyMjMzLDMyMjM0LDMyMjM1LDMyMjM2LDMyMjM3LDMyMjM4LDMyMjM5LDMyMjQwLDMyMjQxLDMyMjQyLDMyMjQzLDMyMjQ0LDMyMjQ1LDMyMjQ2LDMyMjQ3LDMyMjQ4LDMyMjQ5LDMyMjUwLDIzNjEzLDIxMTcwLDMzNjA2LDIwODM0LDMzNTUwLDMwNTU1LDI2MjMwLDQwMTIwLDIwMTQwLDI0Nzc4LDMxOTM0LDMxOTIzLDMyNDYzLDIwMTE3LDM1Njg2LDI2MjIzLDM5MDQ4LDM4NzQ1LDIyNjU5LDI1OTY0LDM4MjM2LDI0NDUyLDMwMTUzLDM4NzQyLDMxNDU1LDMxNDU0LDIwOTI4LDI4ODQ3LDMxMzg0LDI1NTc4LDMxMzUwLDMyNDE2LDI5NTkwLDM4ODkzLDIwMDM3LDI4NzkyLDIwMDYxLDM3MjAyLDIxNDE3LDI1OTM3LDI2MDg3LDMzMjc2LDMzMjg1LDIxNjQ2LDIzNjAxLDMwMTA2LDM4ODE2LDI1MzA0LDI5NDAxLDMwMTQxLDIzNjIxLDM5NTQ1LDMzNzM4LDIzNjE2LDIxNjMyLDMwNjk3LDIwMDMwLDI3ODIyLDMyODU4LDI1Mjk4LDI1NDU0LDI0MDQwLDIwODU1LDM2MzE3LDM2MzgyLDM4MTkxLDIwNDY1LDIxNDc3LDI0ODA3LDI4ODQ0LDIxMDk1LDI1NDI0LDQwNTE1LDIzMDcxLDIwNTE4LDMwNTE5LDIxMzY3LDMyNDgyLDI1NzMzLDI1ODk5LDI1MjI1LDI1NDk2LDIwNTAwLDI5MjM3LDM1MjczLDIwOTE1LDM1Nzc2LDMyNDc3LDIyMzQzLDMzNzQwLDM4MDU1LDIwODkxLDIxNTMxLDIzODAzLDMyMjUxLDMyMjUyLDMyMjUzLDMyMjU0LDMyMjU1LDMyMjU2LDMyMjU3LDMyMjU4LDMyMjU5LDMyMjYwLDMyMjYxLDMyMjYyLDMyMjYzLDMyMjY0LDMyMjY1LDMyMjY2LDMyMjY3LDMyMjY4LDMyMjY5LDMyMjcwLDMyMjcxLDMyMjcyLDMyMjczLDMyMjc0LDMyMjc1LDMyMjc2LDMyMjc3LDMyMjc4LDMyMjc5LDMyMjgwLDMyMjgxLDMyMjgyLDMyMjgzLDMyMjg0LDMyMjg1LDMyMjg2LDMyMjg3LDMyMjg4LDMyMjg5LDMyMjkwLDMyMjkxLDMyMjkyLDMyMjkzLDMyMjk0LDMyMjk1LDMyMjk2LDMyMjk3LDMyMjk4LDMyMjk5LDMyMzAwLDMyMzAxLDMyMzAyLDMyMzAzLDMyMzA0LDMyMzA1LDMyMzA2LDMyMzA3LDMyMzA4LDMyMzA5LDMyMzEwLDMyMzExLDMyMzEyLDMyMzEzLDMyMzE0LDMyMzE2LDMyMzE3LDMyMzE4LDMyMzE5LDMyMzIwLDMyMzIyLDMyMzIzLDMyMzI0LDMyMzI1LDMyMzI2LDMyMzI4LDMyMzI5LDMyMzMwLDMyMzMxLDMyMzMyLDMyMzMzLDMyMzM0LDMyMzM1LDMyMzM2LDMyMzM3LDMyMzM4LDMyMzM5LDMyMzQwLDMyMzQxLDMyMzQyLDMyMzQzLDMyMzQ0LDMyMzQ1LDMyMzQ2LDMyMzQ3LDMyMzQ4LDMyMzQ5LDIwNDI2LDMxNDU5LDI3OTk0LDM3MDg5LDM5NTY3LDIxODg4LDIxNjU0LDIxMzQ1LDIxNjc5LDI0MzIwLDI1NTc3LDI2OTk5LDIwOTc1LDI0OTM2LDIxMDAyLDIyNTcwLDIxMjA4LDIyMzUwLDMwNzMzLDMwNDc1LDI0MjQ3LDI0OTUxLDMxOTY4LDI1MTc5LDI1MjM5LDIwMTMwLDI4ODIxLDMyNzcxLDI1MzM1LDI4OTAwLDM4NzUyLDIyMzkxLDMzNDk5LDI2NjA3LDI2ODY5LDMwOTMzLDM5MDYzLDMxMTg1LDIyNzcxLDIxNjgzLDIxNDg3LDI4MjEyLDIwODExLDIxMDUxLDIzNDU4LDM1ODM4LDMyOTQzLDIxODI3LDIyNDM4LDI0NjkxLDIyMzUzLDIxNTQ5LDMxMzU0LDI0NjU2LDIzMzgwLDI1NTExLDI1MjQ4LDIxNDc1LDI1MTg3LDIzNDk1LDI2NTQzLDIxNzQxLDMxMzkxLDMzNTEwLDM3MjM5LDI0MjExLDM1MDQ0LDIyODQwLDIyNDQ2LDI1MzU4LDM2MzI4LDMzMDA3LDIyMzU5LDMxNjA3LDIwMzkzLDI0NTU1LDIzNDg1LDI3NDU0LDIxMjgxLDMxNTY4LDI5Mzc4LDI2Njk0LDMwNzE5LDMwNTE4LDI2MTAzLDIwOTE3LDIwMTExLDMwNDIwLDIzNzQzLDMxMzk3LDMzOTA5LDIyODYyLDM5NzQ1LDIwNjA4LDMyMzUwLDMyMzUxLDMyMzUyLDMyMzUzLDMyMzU0LDMyMzU1LDMyMzU2LDMyMzU3LDMyMzU4LDMyMzU5LDMyMzYwLDMyMzYxLDMyMzYyLDMyMzYzLDMyMzY0LDMyMzY1LDMyMzY2LDMyMzY3LDMyMzY4LDMyMzY5LDMyMzcwLDMyMzcxLDMyMzcyLDMyMzczLDMyMzc0LDMyMzc1LDMyMzc2LDMyMzc3LDMyMzc4LDMyMzc5LDMyMzgwLDMyMzgxLDMyMzgyLDMyMzgzLDMyMzg0LDMyMzg1LDMyMzg3LDMyMzg4LDMyMzg5LDMyMzkwLDMyMzkxLDMyMzkyLDMyMzkzLDMyMzk0LDMyMzk1LDMyMzk2LDMyMzk3LDMyMzk4LDMyMzk5LDMyNDAwLDMyNDAxLDMyNDAyLDMyNDAzLDMyNDA0LDMyNDA1LDMyNDA2LDMyNDA3LDMyNDA4LDMyNDA5LDMyNDEwLDMyNDEyLDMyNDEzLDMyNDE0LDMyNDMwLDMyNDM2LDMyNDQzLDMyNDQ0LDMyNDcwLDMyNDg0LDMyNDkyLDMyNTA1LDMyNTIyLDMyNTI4LDMyNTQyLDMyNTY3LDMyNTY5LDMyNTcxLDMyNTcyLDMyNTczLDMyNTc0LDMyNTc1LDMyNTc2LDMyNTc3LDMyNTc5LDMyNTgyLDMyNTgzLDMyNTg0LDMyNTg1LDMyNTg2LDMyNTg3LDMyNTg4LDMyNTg5LDMyNTkwLDMyNTkxLDMyNTk0LDMyNTk1LDM5MzA0LDI0ODcxLDI4MjkxLDIyMzcyLDI2MTE4LDI1NDE0LDIyMjU2LDI1MzI0LDI1MTkzLDI0Mjc1LDM4NDIwLDIyNDAzLDI1Mjg5LDIxODk1LDM0NTkzLDMzMDk4LDM2NzcxLDIxODYyLDMzNzEzLDI2NDY5LDM2MTgyLDM0MDEzLDIzMTQ2LDI2NjM5LDI1MzE4LDMxNzI2LDM4NDE3LDIwODQ4LDI4NTcyLDM1ODg4LDI1NTk3LDM1MjcyLDI1MDQyLDMyNTE4LDI4ODY2LDI4Mzg5LDI5NzAxLDI3MDI4LDI5NDM2LDI0MjY2LDM3MDcwLDI2MzkxLDI4MDEwLDI1NDM4LDIxMTcxLDI5MjgyLDMyNzY5LDIwMzMyLDIzMDEzLDM3MjI2LDI4ODg5LDI4MDYxLDIxMjAyLDIwMDQ4LDM4NjQ3LDM4MjUzLDM0MTc0LDMwOTIyLDMyMDQ3LDIwNzY5LDIyNDE4LDI1Nzk0LDMyOTA3LDMxODY3LDI3ODgyLDI2ODY1LDI2OTc0LDIwOTE5LDIxNDAwLDI2NzkyLDI5MzEzLDQwNjU0LDMxNzI5LDI5NDMyLDMxMTYzLDI4NDM1LDI5NzAyLDI2NDQ2LDM3MzI0LDQwMTAwLDMxMDM2LDMzNjczLDMzNjIwLDIxNTE5LDI2NjQ3LDIwMDI5LDIxMzg1LDIxMTY5LDMwNzgyLDIxMzgyLDIxMDMzLDIwNjE2LDIwMzYzLDIwNDMyLDMyNTk4LDMyNjAxLDMyNjAzLDMyNjA0LDMyNjA1LDMyNjA2LDMyNjA4LDMyNjExLDMyNjEyLDMyNjEzLDMyNjE0LDMyNjE1LDMyNjE5LDMyNjIwLDMyNjIxLDMyNjIzLDMyNjI0LDMyNjI3LDMyNjI5LDMyNjMwLDMyNjMxLDMyNjMyLDMyNjM0LDMyNjM1LDMyNjM2LDMyNjM3LDMyNjM5LDMyNjQwLDMyNjQyLDMyNjQzLDMyNjQ0LDMyNjQ1LDMyNjQ2LDMyNjQ3LDMyNjQ4LDMyNjQ5LDMyNjUxLDMyNjUzLDMyNjU1LDMyNjU2LDMyNjU3LDMyNjU4LDMyNjU5LDMyNjYxLDMyNjYyLDMyNjYzLDMyNjY0LDMyNjY1LDMyNjY3LDMyNjY4LDMyNjcyLDMyNjc0LDMyNjc1LDMyNjc3LDMyNjc4LDMyNjgwLDMyNjgxLDMyNjgyLDMyNjgzLDMyNjg0LDMyNjg1LDMyNjg2LDMyNjg5LDMyNjkxLDMyNjkyLDMyNjkzLDMyNjk0LDMyNjk1LDMyNjk4LDMyNjk5LDMyNzAyLDMyNzA0LDMyNzA2LDMyNzA3LDMyNzA4LDMyNzEwLDMyNzExLDMyNzEyLDMyNzEzLDMyNzE1LDMyNzE3LDMyNzE5LDMyNzIwLDMyNzIxLDMyNzIyLDMyNzIzLDMyNzI2LDMyNzI3LDMyNzI5LDMyNzMwLDMyNzMxLDMyNzMyLDMyNzMzLDMyNzM0LDMyNzM4LDMyNzM5LDMwMTc4LDMxNDM1LDMxODkwLDI3ODEzLDM4NTgyLDIxMTQ3LDI5ODI3LDIxNzM3LDIwNDU3LDMyODUyLDMzNzE0LDM2ODMwLDM4MjU2LDI0MjY1LDI0NjA0LDI4MDYzLDI0MDg4LDI1OTQ3LDMzMDgwLDM4MTQyLDI0NjUxLDI4ODYwLDMyNDUxLDMxOTE4LDIwOTM3LDI2NzUzLDMxOTIxLDMzMzkxLDIwMDA0LDM2NzQyLDM3MzI3LDI2MjM4LDIwMTQyLDM1ODQ1LDI1NzY5LDMyODQyLDIwNjk4LDMwMTAzLDI5MTM0LDIzNTI1LDM2Nzk3LDI4NTE4LDIwMTAyLDI1NzMwLDM4MjQzLDI0Mjc4LDI2MDA5LDIxMDE1LDM1MDEwLDI4ODcyLDIxMTU1LDI5NDU0LDI5NzQ3LDI2NTE5LDMwOTY3LDM4Njc4LDIwMDIwLDM3MDUxLDQwMTU4LDI4MTA3LDIwOTU1LDM2MTYxLDIxNTMzLDI1Mjk0LDI5NjE4LDMzNzc3LDM4NjQ2LDQwODM2LDM4MDgzLDIwMjc4LDMyNjY2LDIwOTQwLDI4Nzg5LDM4NTE3LDIzNzI1LDM5MDQ2LDIxNDc4LDIwMTk2LDI4MzE2LDI5NzA1LDI3MDYwLDMwODI3LDM5MzExLDMwMDQxLDIxMDE2LDMwMjQ0LDI3OTY5LDI2NjExLDIwODQ1LDQwODU3LDMyODQzLDIxNjU3LDMxNTQ4LDMxNDIzLDMyNzQwLDMyNzQzLDMyNzQ0LDMyNzQ2LDMyNzQ3LDMyNzQ4LDMyNzQ5LDMyNzUxLDMyNzU0LDMyNzU2LDMyNzU3LDMyNzU4LDMyNzU5LDMyNzYwLDMyNzYxLDMyNzYyLDMyNzY1LDMyNzY2LDMyNzY3LDMyNzcwLDMyNzc1LDMyNzc2LDMyNzc3LDMyNzc4LDMyNzgyLDMyNzgzLDMyNzg1LDMyNzg3LDMyNzk0LDMyNzk1LDMyNzk3LDMyNzk4LDMyNzk5LDMyODAxLDMyODAzLDMyODA0LDMyODExLDMyODEyLDMyODEzLDMyODE0LDMyODE1LDMyODE2LDMyODE4LDMyODIwLDMyODI1LDMyODI2LDMyODI4LDMyODMwLDMyODMyLDMyODMzLDMyODM2LDMyODM3LDMyODM5LDMyODQwLDMyODQxLDMyODQ2LDMyODQ3LDMyODQ4LDMyODQ5LDMyODUxLDMyODUzLDMyODU0LDMyODU1LDMyODU3LDMyODU5LDMyODYwLDMyODYxLDMyODYyLDMyODYzLDMyODY0LDMyODY1LDMyODY2LDMyODY3LDMyODY4LDMyODY5LDMyODcwLDMyODcxLDMyODcyLDMyODc1LDMyODc2LDMyODc3LDMyODc4LDMyODc5LDMyODgwLDMyODgyLDMyODgzLDMyODg0LDMyODg1LDMyODg2LDMyODg3LDMyODg4LDMyODg5LDMyODkwLDMyODkxLDMyODkyLDMyODkzLDM4NTM0LDIyNDA0LDI1MzE0LDM4NDcxLDI3MDA0LDIzMDQ0LDI1NjAyLDMxNjk5LDI4NDMxLDM4NDc1LDMzNDQ2LDIxMzQ2LDM5MDQ1LDI0MjA4LDI4ODA5LDI1NTIzLDIxMzQ4LDM0MzgzLDQwMDY1LDQwNTk1LDMwODYwLDM4NzA2LDM2MzM1LDM2MTYyLDQwNTc1LDI4NTEwLDMxMTA4LDI0NDA1LDM4NDcwLDI1MTM0LDM5NTQwLDIxNTI1LDM4MTA5LDIwMzg3LDI2MDUzLDIzNjUzLDIzNjQ5LDMyNTMzLDM0Mzg1LDI3Njk1LDI0NDU5LDI5NTc1LDI4Mzg4LDMyNTExLDIzNzgyLDI1MzcxLDIzNDAyLDI4MzkwLDIxMzY1LDIwMDgxLDI1NTA0LDMwMDUzLDI1MjQ5LDM2NzE4LDIwMjYyLDIwMTc3LDI3ODE0LDMyNDM4LDM1NzcwLDMzODIxLDM0NzQ2LDMyNTk5LDM2OTIzLDM4MTc5LDMxNjU3LDM5NTg1LDM1MDY0LDMzODUzLDI3OTMxLDM5NTU4LDMyNDc2LDIyOTIwLDQwNjM1LDI5NTk1LDMwNzIxLDM0NDM0LDM5NTMyLDM5NTU0LDIyMDQzLDIxNTI3LDIyNDc1LDIwMDgwLDQwNjE0LDIxMzM0LDM2ODA4LDMzMDMzLDMwNjEwLDM5MzE0LDM0NTQyLDI4Mzg1LDM0MDY3LDI2MzY0LDI0OTMwLDI4NDU5LDMyODk0LDMyODk3LDMyODk4LDMyOTAxLDMyOTA0LDMyOTA2LDMyOTA5LDMyOTEwLDMyOTExLDMyOTEyLDMyOTEzLDMyOTE0LDMyOTE2LDMyOTE3LDMyOTE5LDMyOTIxLDMyOTI2LDMyOTMxLDMyOTM0LDMyOTM1LDMyOTM2LDMyOTQwLDMyOTQ0LDMyOTQ3LDMyOTQ5LDMyOTUwLDMyOTUyLDMyOTUzLDMyOTU1LDMyOTY1LDMyOTY3LDMyOTY4LDMyOTY5LDMyOTcwLDMyOTcxLDMyOTc1LDMyOTc2LDMyOTc3LDMyOTc4LDMyOTc5LDMyOTgwLDMyOTgxLDMyOTg0LDMyOTkxLDMyOTkyLDMyOTk0LDMyOTk1LDMyOTk4LDMzMDA2LDMzMDEzLDMzMDE1LDMzMDE3LDMzMDE5LDMzMDIyLDMzMDIzLDMzMDI0LDMzMDI1LDMzMDI3LDMzMDI4LDMzMDI5LDMzMDMxLDMzMDMyLDMzMDM1LDMzMDM2LDMzMDQ1LDMzMDQ3LDMzMDQ5LDMzMDUxLDMzMDUyLDMzMDUzLDMzMDU1LDMzMDU2LDMzMDU3LDMzMDU4LDMzMDU5LDMzMDYwLDMzMDYxLDMzMDYyLDMzMDYzLDMzMDY0LDMzMDY1LDMzMDY2LDMzMDY3LDMzMDY5LDMzMDcwLDMzMDcyLDMzMDc1LDMzMDc2LDMzMDc3LDMzMDc5LDMzMDgxLDMzMDgyLDMzMDgzLDMzMDg0LDMzMDg1LDMzMDg3LDM1ODgxLDMzNDI2LDMzNTc5LDMwNDUwLDI3NjY3LDI0NTM3LDMzNzI1LDI5NDgzLDMzNTQxLDM4MTcwLDI3NjExLDMwNjgzLDM4MDg2LDIxMzU5LDMzNTM4LDIwODgyLDI0MTI1LDM1OTgwLDM2MTUyLDIwMDQwLDI5NjExLDI2NTIyLDI2NzU3LDM3MjM4LDM4NjY1LDI5MDI4LDI3ODA5LDMwNDczLDIzMTg2LDM4MjA5LDI3NTk5LDMyNjU0LDI2MTUxLDIzNTA0LDIyOTY5LDIzMTk0LDM4Mzc2LDM4MzkxLDIwMjA0LDMzODA0LDMzOTQ1LDI3MzA4LDMwNDMxLDM4MTkyLDI5NDY3LDI2NzkwLDIzMzkxLDMwNTExLDM3Mjc0LDM4NzUzLDMxOTY0LDM2ODU1LDM1ODY4LDI0MzU3LDMxODU5LDMxMTkyLDM1MjY5LDI3ODUyLDM0NTg4LDIzNDk0LDI0MTMwLDI2ODI1LDMwNDk2LDMyNTAxLDIwODg1LDIwODEzLDIxMTkzLDIzMDgxLDMyNTE3LDM4NzU0LDMzNDk1LDI1NTUxLDMwNTk2LDM0MjU2LDMxMTg2LDI4MjE4LDI0MjE3LDIyOTM3LDM0MDY1LDI4NzgxLDI3NjY1LDI1Mjc5LDMwMzk5LDI1OTM1LDI0NzUxLDM4Mzk3LDI2MTI2LDM0NzE5LDQwNDgzLDM4MTI1LDIxNTE3LDIxNjI5LDM1ODg0LDI1NzIwLDMzMDg4LDMzMDg5LDMzMDkwLDMzMDkxLDMzMDkyLDMzMDkzLDMzMDk1LDMzMDk3LDMzMTAxLDMzMTAyLDMzMTAzLDMzMTA2LDMzMTEwLDMzMTExLDMzMTEyLDMzMTE1LDMzMTE2LDMzMTE3LDMzMTE4LDMzMTE5LDMzMTIxLDMzMTIyLDMzMTIzLDMzMTI0LDMzMTI2LDMzMTI4LDMzMTMwLDMzMTMxLDMzMTMyLDMzMTM1LDMzMTM4LDMzMTM5LDMzMTQxLDMzMTQyLDMzMTQzLDMzMTQ0LDMzMTUzLDMzMTU1LDMzMTU2LDMzMTU3LDMzMTU4LDMzMTU5LDMzMTYxLDMzMTYzLDMzMTY0LDMzMTY1LDMzMTY2LDMzMTY4LDMzMTcwLDMzMTcxLDMzMTcyLDMzMTczLDMzMTc0LDMzMTc1LDMzMTc3LDMzMTc4LDMzMTgyLDMzMTgzLDMzMTg0LDMzMTg1LDMzMTg2LDMzMTg4LDMzMTg5LDMzMTkxLDMzMTkzLDMzMTk1LDMzMTk2LDMzMTk3LDMzMTk4LDMzMTk5LDMzMjAwLDMzMjAxLDMzMjAyLDMzMjA0LDMzMjA1LDMzMjA2LDMzMjA3LDMzMjA4LDMzMjA5LDMzMjEyLDMzMjEzLDMzMjE0LDMzMjE1LDMzMjIwLDMzMjIxLDMzMjIzLDMzMjI0LDMzMjI1LDMzMjI3LDMzMjI5LDMzMjMwLDMzMjMxLDMzMjMyLDMzMjMzLDMzMjM0LDMzMjM1LDI1NzIxLDM0MzIxLDI3MTY5LDMzMTgwLDMwOTUyLDI1NzA1LDM5NzY0LDI1MjczLDI2NDExLDMzNzA3LDIyNjk2LDQwNjY0LDI3ODE5LDI4NDQ4LDIzNTE4LDM4NDc2LDM1ODUxLDI5Mjc5LDI2NTc2LDI1Mjg3LDI5MjgxLDIwMTM3LDIyOTgyLDI3NTk3LDIyNjc1LDI2Mjg2LDI0MTQ5LDIxMjE1LDI0OTE3LDI2NDA4LDMwNDQ2LDMwNTY2LDI5Mjg3LDMxMzAyLDI1MzQzLDIxNzM4LDIxNTg0LDM4MDQ4LDM3MDI3LDIzMDY4LDMyNDM1LDI3NjcwLDIwMDM1LDIyOTAyLDMyNzg0LDIyODU2LDIxMzM1LDMwMDA3LDM4NTkwLDIyMjE4LDI1Mzc2LDMzMDQxLDI0NzAwLDM4MzkzLDI4MTE4LDIxNjAyLDM5Mjk3LDIwODY5LDIzMjczLDMzMDIxLDIyOTU4LDM4Njc1LDIwNTIyLDI3ODc3LDIzNjEyLDI1MzExLDIwMzIwLDIxMzExLDMzMTQ3LDM2ODcwLDI4MzQ2LDM0MDkxLDI1Mjg4LDI0MTgwLDMwOTEwLDI1NzgxLDI1NDY3LDI0NTY1LDIzMDY0LDM3MjQ3LDQwNDc5LDIzNjE1LDI1NDIzLDMyODM0LDIzNDIxLDIxODcwLDM4MjE4LDM4MjIxLDI4MDM3LDI0NzQ0LDI2NTkyLDI5NDA2LDIwOTU3LDIzNDI1LDMzMjM2LDMzMjM3LDMzMjM4LDMzMjM5LDMzMjQwLDMzMjQxLDMzMjQyLDMzMjQzLDMzMjQ0LDMzMjQ1LDMzMjQ2LDMzMjQ3LDMzMjQ4LDMzMjQ5LDMzMjUwLDMzMjUyLDMzMjUzLDMzMjU0LDMzMjU2LDMzMjU3LDMzMjU5LDMzMjYyLDMzMjYzLDMzMjY0LDMzMjY1LDMzMjY2LDMzMjY5LDMzMjcwLDMzMjcxLDMzMjcyLDMzMjczLDMzMjc0LDMzMjc3LDMzMjc5LDMzMjgzLDMzMjg3LDMzMjg4LDMzMjg5LDMzMjkwLDMzMjkxLDMzMjk0LDMzMjk1LDMzMjk3LDMzMjk5LDMzMzAxLDMzMzAyLDMzMzAzLDMzMzA0LDMzMzA1LDMzMzA2LDMzMzA5LDMzMzEyLDMzMzE2LDMzMzE3LDMzMzE4LDMzMzE5LDMzMzIxLDMzMzI2LDMzMzMwLDMzMzM4LDMzMzQwLDMzMzQxLDMzMzQzLDMzMzQ0LDMzMzQ1LDMzMzQ2LDMzMzQ3LDMzMzQ5LDMzMzUwLDMzMzUyLDMzMzU0LDMzMzU2LDMzMzU3LDMzMzU4LDMzMzYwLDMzMzYxLDMzMzYyLDMzMzYzLDMzMzY0LDMzMzY1LDMzMzY2LDMzMzY3LDMzMzY5LDMzMzcxLDMzMzcyLDMzMzczLDMzMzc0LDMzMzc2LDMzMzc3LDMzMzc4LDMzMzc5LDMzMzgwLDMzMzgxLDMzMzgyLDMzMzgzLDMzMzg1LDI1MzE5LDI3ODcwLDI5Mjc1LDI1MTk3LDM4MDYyLDMyNDQ1LDMzMDQzLDI3OTg3LDIwODkyLDI0MzI0LDIyOTAwLDIxMTYyLDI0NTk0LDIyODk5LDI2MjYyLDM0Mzg0LDMwMTExLDI1Mzg2LDI1MDYyLDMxOTgzLDM1ODM0LDIxNzM0LDI3NDMxLDQwNDg1LDI3NTcyLDM0MjYxLDIxNTg5LDIwNTk4LDI3ODEyLDIxODY2LDM2Mjc2LDI5MjI4LDI0MDg1LDI0NTk3LDI5NzUwLDI1MjkzLDI1NDkwLDI5MjYwLDI0NDcyLDI4MjI3LDI3OTY2LDI1ODU2LDI4NTA0LDMwNDI0LDMwOTI4LDMwNDYwLDMwMDM2LDIxMDI4LDIxNDY3LDIwMDUxLDI0MjIyLDI2MDQ5LDMyODEwLDMyOTgyLDI1MjQzLDIxNjM4LDIxMDMyLDI4ODQ2LDM0OTU3LDM2MzA1LDI3ODczLDIxNjI0LDMyOTg2LDIyNTIxLDM1MDYwLDM2MTgwLDM4NTA2LDM3MTk3LDIwMzI5LDI3ODAzLDIxOTQzLDMwNDA2LDMwNzY4LDI1MjU2LDI4OTIxLDI4NTU4LDI0NDI5LDM0MDI4LDI2ODQyLDMwODQ0LDMxNzM1LDMzMTkyLDI2Mzc5LDQwNTI3LDI1NDQ3LDMwODk2LDIyMzgzLDMwNzM4LDM4NzEzLDI1MjA5LDI1MjU5LDIxMTI4LDI5NzQ5LDI3NjA3LDMzMzg2LDMzMzg3LDMzMzg4LDMzMzg5LDMzMzkzLDMzMzk3LDMzMzk4LDMzMzk5LDMzNDAwLDMzNDAzLDMzNDA0LDMzNDA4LDMzNDA5LDMzNDExLDMzNDEzLDMzNDE0LDMzNDE1LDMzNDE3LDMzNDIwLDMzNDI0LDMzNDI3LDMzNDI4LDMzNDI5LDMzNDMwLDMzNDM0LDMzNDM1LDMzNDM4LDMzNDQwLDMzNDQyLDMzNDQzLDMzNDQ3LDMzNDU4LDMzNDYxLDMzNDYyLDMzNDY2LDMzNDY3LDMzNDY4LDMzNDcxLDMzNDcyLDMzNDc0LDMzNDc1LDMzNDc3LDMzNDc4LDMzNDgxLDMzNDg4LDMzNDk0LDMzNDk3LDMzNDk4LDMzNTAxLDMzNTA2LDMzNTExLDMzNTEyLDMzNTEzLDMzNTE0LDMzNTE2LDMzNTE3LDMzNTE4LDMzNTIwLDMzNTIyLDMzNTIzLDMzNTI1LDMzNTI2LDMzNTI4LDMzNTMwLDMzNTMyLDMzNTMzLDMzNTM0LDMzNTM1LDMzNTM2LDMzNTQ2LDMzNTQ3LDMzNTQ5LDMzNTUyLDMzNTU0LDMzNTU1LDMzNTU4LDMzNTYwLDMzNTYxLDMzNTY1LDMzNTY2LDMzNTY3LDMzNTY4LDMzNTY5LDMzNTcwLDMzNTcxLDMzNTcyLDMzNTczLDMzNTc0LDMzNTc3LDMzNTc4LDMzNTgyLDMzNTg0LDMzNTg2LDMzNTkxLDMzNTk1LDMzNTk3LDIxODYwLDMzMDg2LDMwMTMwLDMwMzgyLDIxMzA1LDMwMTc0LDIwNzMxLDIzNjE3LDM1NjkyLDMxNjg3LDIwNTU5LDI5MjU1LDM5NTc1LDM5MTI4LDI4NDE4LDI5OTIyLDMxMDgwLDI1NzM1LDMwNjI5LDI1MzQwLDM5MDU3LDM2MTM5LDIxNjk3LDMyODU2LDIwMDUwLDIyMzc4LDMzNTI5LDMzODA1LDI0MTc5LDIwOTczLDI5OTQyLDM1NzgwLDIzNjMxLDIyMzY5LDI3OTAwLDM5MDQ3LDIzMTEwLDMwNzcyLDM5NzQ4LDM2ODQzLDMxODkzLDIxMDc4LDI1MTY5LDM4MTM4LDIwMTY2LDMzNjcwLDMzODg5LDMzNzY5LDMzOTcwLDIyNDg0LDI2NDIwLDIyMjc1LDI2MjIyLDI4MDA2LDM1ODg5LDI2MzMzLDI4Njg5LDI2Mzk5LDI3NDUwLDI2NjQ2LDI1MTE0LDIyOTcxLDE5OTcxLDIwOTMyLDI4NDIyLDI2NTc4LDI3NzkxLDIwODU0LDI2ODI3LDIyODU1LDI3NDk1LDMwMDU0LDIzODIyLDMzMDQwLDQwNzg0LDI2MDcxLDMxMDQ4LDMxMDQxLDM5NTY5LDM2MjE1LDIzNjgyLDIwMDYyLDIwMjI1LDIxNTUxLDIyODY1LDMwNzMyLDIyMTIwLDI3NjY4LDM2ODA0LDI0MzIzLDI3NzczLDI3ODc1LDM1NzU1LDI1NDg4LDMzNTk4LDMzNTk5LDMzNjAxLDMzNjAyLDMzNjA0LDMzNjA1LDMzNjA4LDMzNjEwLDMzNjExLDMzNjEyLDMzNjEzLDMzNjE0LDMzNjE5LDMzNjIxLDMzNjIyLDMzNjIzLDMzNjI0LDMzNjI1LDMzNjI5LDMzNjM0LDMzNjQ4LDMzNjQ5LDMzNjUwLDMzNjUxLDMzNjUyLDMzNjUzLDMzNjU0LDMzNjU3LDMzNjU4LDMzNjYyLDMzNjYzLDMzNjY0LDMzNjY1LDMzNjY2LDMzNjY3LDMzNjY4LDMzNjcxLDMzNjcyLDMzNjc0LDMzNjc1LDMzNjc2LDMzNjc3LDMzNjc5LDMzNjgwLDMzNjgxLDMzNjg0LDMzNjg1LDMzNjg2LDMzNjg3LDMzNjg5LDMzNjkwLDMzNjkzLDMzNjk1LDMzNjk3LDMzNjk4LDMzNjk5LDMzNzAwLDMzNzAxLDMzNzAyLDMzNzAzLDMzNzA4LDMzNzA5LDMzNzEwLDMzNzExLDMzNzE3LDMzNzIzLDMzNzI2LDMzNzI3LDMzNzMwLDMzNzMxLDMzNzMyLDMzNzM0LDMzNzM2LDMzNzM3LDMzNzM5LDMzNzQxLDMzNzQyLDMzNzQ0LDMzNzQ1LDMzNzQ2LDMzNzQ3LDMzNzQ5LDMzNzUxLDMzNzUzLDMzNzU0LDMzNzU1LDMzNzU4LDMzNzYyLDMzNzYzLDMzNzY0LDMzNzY2LDMzNzY3LDMzNzY4LDMzNzcxLDMzNzcyLDMzNzczLDI0Njg4LDI3OTY1LDI5MzAxLDI1MTkwLDM4MDMwLDM4MDg1LDIxMzE1LDM2ODAxLDMxNjE0LDIwMTkxLDM1ODc4LDIwMDk0LDQwNjYwLDM4MDY1LDM4MDY3LDIxMDY5LDI4NTA4LDM2OTYzLDI3OTczLDM1ODkyLDIyNTQ1LDIzODg0LDI3NDI0LDI3NDY1LDI2NTM4LDIxNTk1LDMzMTA4LDMyNjUyLDIyNjgxLDM0MTAzLDI0Mzc4LDI1MjUwLDI3MjA3LDM4MjAxLDI1OTcwLDI0NzA4LDI2NzI1LDMwNjMxLDIwMDUyLDIwMzkyLDI0MDM5LDM4ODA4LDI1NzcyLDMyNzI4LDIzNzg5LDIwNDMxLDMxMzczLDIwOTk5LDMzNTQwLDE5OTg4LDI0NjIzLDMxMzYzLDM4MDU0LDIwNDA1LDIwMTQ2LDMxMjA2LDI5NzQ4LDIxMjIwLDMzNDY1LDI1ODEwLDMxMTY1LDIzNTE3LDI3Nzc3LDM4NzM4LDM2NzMxLDI3NjgyLDIwNTQyLDIxMzc1LDI4MTY1LDI1ODA2LDI2MjI4LDI3Njk2LDI0NzczLDM5MDMxLDM1ODMxLDI0MTk4LDI5NzU2LDMxMzUxLDMxMTc5LDE5OTkyLDM3MDQxLDI5Njk5LDI3NzE0LDIyMjM0LDM3MTk1LDI3ODQ1LDM2MjM1LDIxMzA2LDM0NTAyLDI2MzU0LDM2NTI3LDIzNjI0LDM5NTM3LDI4MTkyLDMzNzc0LDMzNzc1LDMzNzc5LDMzNzgwLDMzNzgxLDMzNzgyLDMzNzgzLDMzNzg2LDMzNzg3LDMzNzg4LDMzNzkwLDMzNzkxLDMzNzkyLDMzNzk0LDMzNzk3LDMzNzk5LDMzODAwLDMzODAxLDMzODAyLDMzODA4LDMzODEwLDMzODExLDMzODEyLDMzODEzLDMzODE0LDMzODE1LDMzODE3LDMzODE4LDMzODE5LDMzODIyLDMzODIzLDMzODI0LDMzODI1LDMzODI2LDMzODI3LDMzODMzLDMzODM0LDMzODM1LDMzODM2LDMzODM3LDMzODM4LDMzODM5LDMzODQwLDMzODQyLDMzODQzLDMzODQ0LDMzODQ1LDMzODQ2LDMzODQ3LDMzODQ5LDMzODUwLDMzODUxLDMzODU0LDMzODU1LDMzODU2LDMzODU3LDMzODU4LDMzODU5LDMzODYwLDMzODYxLDMzODYzLDMzODY0LDMzODY1LDMzODY2LDMzODY3LDMzODY4LDMzODY5LDMzODcwLDMzODcxLDMzODcyLDMzODc0LDMzODc1LDMzODc2LDMzODc3LDMzODc4LDMzODgwLDMzODg1LDMzODg2LDMzODg3LDMzODg4LDMzODkwLDMzODkyLDMzODkzLDMzODk0LDMzODk1LDMzODk2LDMzODk4LDMzOTAyLDMzOTAzLDMzOTA0LDMzOTA2LDMzOTA4LDMzOTExLDMzOTEzLDMzOTE1LDMzOTE2LDIxNDYyLDIzMDk0LDQwODQzLDM2MjU5LDIxNDM1LDIyMjgwLDM5MDc5LDI2NDM1LDM3Mjc1LDI3ODQ5LDIwODQwLDMwMTU0LDI1MzMxLDI5MzU2LDIxMDQ4LDIxMTQ5LDMyNTcwLDI4ODIwLDMwMjY0LDIxMzY0LDQwNTIyLDI3MDYzLDMwODMwLDM4NTkyLDM1MDMzLDMyNjc2LDI4OTgyLDI5MTIzLDIwODczLDI2NTc5LDI5OTI0LDIyNzU2LDI1ODgwLDIyMTk5LDM1NzUzLDM5Mjg2LDI1MjAwLDMyNDY5LDI0ODI1LDI4OTA5LDIyNzY0LDIwMTYxLDIwMTU0LDI0NTI1LDM4ODg3LDIwMjE5LDM1NzQ4LDIwOTk1LDIyOTIyLDMyNDI3LDI1MTcyLDIwMTczLDI2MDg1LDI1MTAyLDMzNTkyLDMzOTkzLDMzNjM1LDM0NzAxLDI5MDc2LDI4MzQyLDIzNDgxLDMyNDY2LDIwODg3LDI1NTQ1LDI2NTgwLDMyOTA1LDMzNTkzLDM0ODM3LDIwNzU0LDIzNDE4LDIyOTE0LDM2Nzg1LDIwMDgzLDI3NzQxLDIwODM3LDM1MTA5LDM2NzE5LDM4NDQ2LDM0MTIyLDI5NzkwLDM4MTYwLDM4Mzg0LDI4MDcwLDMzNTA5LDI0MzY5LDI1NzQ2LDI3OTIyLDMzODMyLDMzMTM0LDQwMTMxLDIyNjIyLDM2MTg3LDE5OTc3LDIxNDQxLDMzOTE3LDMzOTE4LDMzOTE5LDMzOTIwLDMzOTIxLDMzOTIzLDMzOTI0LDMzOTI1LDMzOTI2LDMzOTMwLDMzOTMzLDMzOTM1LDMzOTM2LDMzOTM3LDMzOTM4LDMzOTM5LDMzOTQwLDMzOTQxLDMzOTQyLDMzOTQ0LDMzOTQ2LDMzOTQ3LDMzOTQ5LDMzOTUwLDMzOTUxLDMzOTUyLDMzOTU0LDMzOTU1LDMzOTU2LDMzOTU3LDMzOTU4LDMzOTU5LDMzOTYwLDMzOTYxLDMzOTYyLDMzOTYzLDMzOTY0LDMzOTY1LDMzOTY2LDMzOTY4LDMzOTY5LDMzOTcxLDMzOTczLDMzOTc0LDMzOTc1LDMzOTc5LDMzOTgwLDMzOTgyLDMzOTg0LDMzOTg2LDMzOTg3LDMzOTg5LDMzOTkwLDMzOTkxLDMzOTkyLDMzOTk1LDMzOTk2LDMzOTk4LDMzOTk5LDM0MDAyLDM0MDA0LDM0MDA1LDM0MDA3LDM0MDA4LDM0MDA5LDM0MDEwLDM0MDExLDM0MDEyLDM0MDE0LDM0MDE3LDM0MDE4LDM0MDIwLDM0MDIzLDM0MDI0LDM0MDI1LDM0MDI2LDM0MDI3LDM0MDI5LDM0MDMwLDM0MDMxLDM0MDMzLDM0MDM0LDM0MDM1LDM0MDM2LDM0MDM3LDM0MDM4LDM0MDM5LDM0MDQwLDM0MDQxLDM0MDQyLDM0MDQzLDM0MDQ1LDM0MDQ2LDM0MDQ4LDM0MDQ5LDM0MDUwLDIwMjU0LDI1OTU1LDI2NzA1LDIxOTcxLDIwMDA3LDI1NjIwLDM5NTc4LDI1MTk1LDIzMjM0LDI5NzkxLDMzMzk0LDI4MDczLDI2ODYyLDIwNzExLDMzNjc4LDMwNzIyLDI2NDMyLDIxMDQ5LDI3ODAxLDMyNDMzLDIwNjY3LDIxODYxLDI5MDIyLDMxNTc5LDI2MTk0LDI5NjQyLDMzNTE1LDI2NDQxLDIzNjY1LDIxMDI0LDI5MDUzLDM0OTIzLDM4Mzc4LDM4NDg1LDI1Nzk3LDM2MTkzLDMzMjAzLDIxODkyLDI3NzMzLDI1MTU5LDMyNTU4LDIyNjc0LDIwMjYwLDIxODMwLDM2MTc1LDI2MTg4LDE5OTc4LDIzNTc4LDM1MDU5LDI2Nzg2LDI1NDIyLDMxMjQ1LDI4OTAzLDMzNDIxLDIxMjQyLDM4OTAyLDIzNTY5LDIxNzM2LDM3MDQ1LDMyNDYxLDIyODgyLDM2MTcwLDM0NTAzLDMzMjkyLDMzMjkzLDM2MTk4LDI1NjY4LDIzNTU2LDI0OTEzLDI4MDQxLDMxMDM4LDM1Nzc0LDMwNzc1LDMwMDAzLDIxNjI3LDIwMjgwLDM2NTIzLDI4MTQ1LDIzMDcyLDMyNDUzLDMxMDcwLDI3Nzg0LDIzNDU3LDIzMTU4LDI5OTc4LDMyOTU4LDI0OTEwLDI4MTgzLDIyNzY4LDI5OTgzLDI5OTg5LDI5Mjk4LDIxMzE5LDMyNDk5LDM0MDUxLDM0MDUyLDM0MDUzLDM0MDU0LDM0MDU1LDM0MDU2LDM0MDU3LDM0MDU4LDM0MDU5LDM0MDYxLDM0MDYyLDM0MDYzLDM0MDY0LDM0MDY2LDM0MDY4LDM0MDY5LDM0MDcwLDM0MDcyLDM0MDczLDM0MDc1LDM0MDc2LDM0MDc3LDM0MDc4LDM0MDgwLDM0MDgyLDM0MDgzLDM0MDg0LDM0MDg1LDM0MDg2LDM0MDg3LDM0MDg4LDM0MDg5LDM0MDkwLDM0MDkzLDM0MDk0LDM0MDk1LDM0MDk2LDM0MDk3LDM0MDk4LDM0MDk5LDM0MTAwLDM0MTAxLDM0MTAyLDM0MTEwLDM0MTExLDM0MTEyLDM0MTEzLDM0MTE0LDM0MTE2LDM0MTE3LDM0MTE4LDM0MTE5LDM0MTIzLDM0MTI0LDM0MTI1LDM0MTI2LDM0MTI3LDM0MTI4LDM0MTI5LDM0MTMwLDM0MTMxLDM0MTMyLDM0MTMzLDM0MTM1LDM0MTM2LDM0MTM4LDM0MTM5LDM0MTQwLDM0MTQxLDM0MTQzLDM0MTQ0LDM0MTQ1LDM0MTQ2LDM0MTQ3LDM0MTQ5LDM0MTUwLDM0MTUxLDM0MTUzLDM0MTU0LDM0MTU1LDM0MTU2LDM0MTU3LDM0MTU4LDM0MTU5LDM0MTYwLDM0MTYxLDM0MTYzLDM0MTY1LDM0MTY2LDM0MTY3LDM0MTY4LDM0MTcyLDM0MTczLDM0MTc1LDM0MTc2LDM0MTc3LDMwNDY1LDMwNDI3LDIxMDk3LDMyOTg4LDIyMzA3LDI0MDcyLDIyODMzLDI5NDIyLDI2MDQ1LDI4Mjg3LDM1Nzk5LDIzNjA4LDM0NDE3LDIxMzEzLDMwNzA3LDI1MzQyLDI2MTAyLDIwMTYwLDM5MTM1LDM0NDMyLDIzNDU0LDM1NzgyLDIxNDkwLDMwNjkwLDIwMzUxLDIzNjMwLDM5NTQyLDIyOTg3LDI0MzM1LDMxMDM0LDIyNzYzLDE5OTkwLDI2NjIzLDIwMTA3LDI1MzI1LDM1NDc1LDM2ODkzLDIxMTgzLDI2MTU5LDIxOTgwLDIyMTI0LDM2ODY2LDIwMTgxLDIwMzY1LDM3MzIyLDM5MjgwLDI3NjYzLDI0MDY2LDI0NjQzLDIzNDYwLDM1MjcwLDM1Nzk3LDI1OTEwLDI1MTYzLDM5MzE4LDIzNDMyLDIzNTUxLDI1NDgwLDIxODA2LDIxNDYzLDMwMjQ2LDIwODYxLDM0MDkyLDI2NTMwLDI2ODAzLDI3NTMwLDI1MjM0LDM2NzU1LDIxNDYwLDMzMjk4LDI4MTEzLDMwMDk1LDIwMDcwLDM2MTc0LDIzNDA4LDI5MDg3LDM0MjIzLDI2MjU3LDI2MzI5LDMyNjI2LDM0NTYwLDQwNjUzLDQwNzM2LDIzNjQ2LDI2NDE1LDM2ODQ4LDI2NjQxLDI2NDYzLDI1MTAxLDMxNDQ2LDIyNjYxLDI0MjQ2LDI1OTY4LDI4NDY1LDM0MTc4LDM0MTc5LDM0MTgyLDM0MTg0LDM0MTg1LDM0MTg2LDM0MTg3LDM0MTg4LDM0MTg5LDM0MTkwLDM0MTkyLDM0MTkzLDM0MTk0LDM0MTk1LDM0MTk2LDM0MTk3LDM0MTk4LDM0MTk5LDM0MjAwLDM0MjAxLDM0MjAyLDM0MjA1LDM0MjA2LDM0MjA3LDM0MjA4LDM0MjA5LDM0MjEwLDM0MjExLDM0MjEzLDM0MjE0LDM0MjE1LDM0MjE3LDM0MjE5LDM0MjIwLDM0MjIxLDM0MjI1LDM0MjI2LDM0MjI3LDM0MjI4LDM0MjI5LDM0MjMwLDM0MjMyLDM0MjM0LDM0MjM1LDM0MjM2LDM0MjM3LDM0MjM4LDM0MjM5LDM0MjQwLDM0MjQyLDM0MjQzLDM0MjQ0LDM0MjQ1LDM0MjQ2LDM0MjQ3LDM0MjQ4LDM0MjUwLDM0MjUxLDM0MjUyLDM0MjUzLDM0MjU0LDM0MjU3LDM0MjU4LDM0MjYwLDM0MjYyLDM0MjYzLDM0MjY0LDM0MjY1LDM0MjY2LDM0MjY3LDM0MjY5LDM0MjcwLDM0MjcxLDM0MjcyLDM0MjczLDM0Mjc0LDM0Mjc1LDM0Mjc3LDM0Mjc4LDM0Mjc5LDM0MjgwLDM0MjgyLDM0MjgzLDM0Mjg0LDM0Mjg1LDM0Mjg2LDM0Mjg3LDM0Mjg4LDM0Mjg5LDM0MjkwLDM0MjkxLDM0MjkyLDM0MjkzLDM0Mjk0LDM0Mjk1LDM0Mjk2LDI0NjYxLDIxMDQ3LDMyNzgxLDI1Njg0LDM0OTI4LDI5OTkzLDI0MDY5LDI2NjQzLDI1MzMyLDM4Njg0LDIxNDUyLDI5MjQ1LDM1ODQxLDI3NzAwLDMwNTYxLDMxMjQ2LDIxNTUwLDMwNjM2LDM5MDM0LDMzMzA4LDM1ODI4LDMwODA1LDI2Mzg4LDI4ODY1LDI2MDMxLDI1NzQ5LDIyMDcwLDI0NjA1LDMxMTY5LDIxNDk2LDE5OTk3LDI3NTE1LDMyOTAyLDIzNTQ2LDIxOTg3LDIyMjM1LDIwMjgyLDIwMjg0LDM5MjgyLDI0MDUxLDI2NDk0LDMyODI0LDI0NTc4LDM5MDQyLDM2ODY1LDIzNDM1LDM1NzcyLDM1ODI5LDI1NjI4LDMzMzY4LDI1ODIyLDIyMDEzLDMzNDg3LDM3MjIxLDIwNDM5LDMyMDMyLDM2ODk1LDMxOTAzLDIwNzIzLDIyNjA5LDI4MzM1LDIzNDg3LDM1Nzg1LDMyODk5LDM3MjQwLDMzOTQ4LDMxNjM5LDM0NDI5LDM4NTM5LDM4NTQzLDMyNDg1LDM5NjM1LDMwODYyLDIzNjgxLDMxMzE5LDM2OTMwLDM4NTY3LDMxMDcxLDIzMzg1LDI1NDM5LDMxNDk5LDM0MDAxLDI2Nzk3LDIxNzY2LDMyNTUzLDI5NzEyLDMyMDM0LDM4MTQ1LDI1MTUyLDIyNjA0LDIwMTgyLDIzNDI3LDIyOTA1LDIyNjEyLDM0Mjk3LDM0Mjk4LDM0MzAwLDM0MzAxLDM0MzAyLDM0MzA0LDM0MzA1LDM0MzA2LDM0MzA3LDM0MzA4LDM0MzEwLDM0MzExLDM0MzEyLDM0MzEzLDM0MzE0LDM0MzE1LDM0MzE2LDM0MzE3LDM0MzE4LDM0MzE5LDM0MzIwLDM0MzIyLDM0MzIzLDM0MzI0LDM0MzI1LDM0MzI3LDM0MzI4LDM0MzI5LDM0MzMwLDM0MzMxLDM0MzMyLDM0MzMzLDM0MzM0LDM0MzM1LDM0MzM2LDM0MzM3LDM0MzM4LDM0MzM5LDM0MzQwLDM0MzQxLDM0MzQyLDM0MzQ0LDM0MzQ2LDM0MzQ3LDM0MzQ4LDM0MzQ5LDM0MzUwLDM0MzUxLDM0MzUyLDM0MzUzLDM0MzU0LDM0MzU1LDM0MzU2LDM0MzU3LDM0MzU4LDM0MzU5LDM0MzYxLDM0MzYyLDM0MzYzLDM0MzY1LDM0MzY2LDM0MzY3LDM0MzY4LDM0MzY5LDM0MzcwLDM0MzcxLDM0MzcyLDM0MzczLDM0Mzc0LDM0Mzc1LDM0Mzc2LDM0Mzc3LDM0Mzc4LDM0Mzc5LDM0MzgwLDM0Mzg2LDM0Mzg3LDM0Mzg5LDM0MzkwLDM0MzkxLDM0MzkyLDM0MzkzLDM0Mzk1LDM0Mzk2LDM0Mzk3LDM0Mzk5LDM0NDAwLDM0NDAxLDM0NDAzLDM0NDA0LDM0NDA1LDM0NDA2LDM0NDA3LDM0NDA4LDM0NDA5LDM0NDEwLDI5NTQ5LDI1Mzc0LDM2NDI3LDM2MzY3LDMyOTc0LDMzNDkyLDI1MjYwLDIxNDg4LDI3ODg4LDM3MjE0LDIyODI2LDI0NTc3LDI3NzYwLDIyMzQ5LDI1Njc0LDM2MTM4LDMwMjUxLDI4MzkzLDIyMzYzLDI3MjY0LDMwMTkyLDI4NTI1LDM1ODg1LDM1ODQ4LDIyMzc0LDI3NjMxLDM0OTYyLDMwODk5LDI1NTA2LDIxNDk3LDI4ODQ1LDI3NzQ4LDIyNjE2LDI1NjQyLDIyNTMwLDI2ODQ4LDMzMTc5LDIxNzc2LDMxOTU4LDIwNTA0LDM2NTM4LDI4MTA4LDM2MjU1LDI4OTA3LDI1NDg3LDI4MDU5LDI4MzcyLDMyNDg2LDMzNzk2LDI2NjkxLDM2ODY3LDI4MTIwLDM4NTE4LDM1NzUyLDIyODcxLDI5MzA1LDM0Mjc2LDMzMTUwLDMwMTQwLDM1NDY2LDI2Nzk5LDIxMDc2LDM2Mzg2LDM4MTYxLDI1NTUyLDM5MDY0LDM2NDIwLDIxODg0LDIwMzA3LDI2MzY3LDIyMTU5LDI0Nzg5LDI4MDUzLDIxMDU5LDIzNjI1LDIyODI1LDI4MTU1LDIyNjM1LDMwMDAwLDI5OTgwLDI0Njg0LDMzMzAwLDMzMDk0LDI1MzYxLDI2NDY1LDM2ODM0LDMwNTIyLDM2MzM5LDM2MTQ4LDM4MDgxLDI0MDg2LDIxMzgxLDIxNTQ4LDI4ODY3LDM0NDEzLDM0NDE1LDM0NDE2LDM0NDE4LDM0NDE5LDM0NDIwLDM0NDIxLDM0NDIyLDM0NDIzLDM0NDI0LDM0NDM1LDM0NDM2LDM0NDM3LDM0NDM4LDM0NDM5LDM0NDQwLDM0NDQxLDM0NDQ2LDM0NDQ3LDM0NDQ4LDM0NDQ5LDM0NDUwLDM0NDUyLDM0NDU0LDM0NDU1LDM0NDU2LDM0NDU3LDM0NDU4LDM0NDU5LDM0NDYyLDM0NDYzLDM0NDY0LDM0NDY1LDM0NDY2LDM0NDY5LDM0NDcwLDM0NDc1LDM0NDc3LDM0NDc4LDM0NDgyLDM0NDgzLDM0NDg3LDM0NDg4LDM0NDg5LDM0NDkxLDM0NDkyLDM0NDkzLDM0NDk0LDM0NDk1LDM0NDk3LDM0NDk4LDM0NDk5LDM0NTAxLDM0NTA0LDM0NTA4LDM0NTA5LDM0NTE0LDM0NTE1LDM0NTE3LDM0NTE4LDM0NTE5LDM0NTIyLDM0NTI0LDM0NTI1LDM0NTI4LDM0NTI5LDM0NTMwLDM0NTMxLDM0NTMzLDM0NTM0LDM0NTM1LDM0NTM2LDM0NTM4LDM0NTM5LDM0NTQwLDM0NTQzLDM0NTQ5LDM0NTUwLDM0NTUxLDM0NTU0LDM0NTU1LDM0NTU2LDM0NTU3LDM0NTU5LDM0NTYxLDM0NTY0LDM0NTY1LDM0NTY2LDM0NTcxLDM0NTcyLDM0NTc0LDM0NTc1LDM0NTc2LDM0NTc3LDM0NTgwLDM0NTgyLDI3NzEyLDI0MzExLDIwNTcyLDIwMTQxLDI0MjM3LDI1NDAyLDMzMzUxLDM2ODkwLDI2NzA0LDM3MjMwLDMwNjQzLDIxNTE2LDM4MTA4LDI0NDIwLDMxNDYxLDI2NzQyLDI1NDEzLDMxNTcwLDMyNDc5LDMwMTcxLDIwNTk5LDI1MjM3LDIyODM2LDM2ODc5LDIwOTg0LDMxMTcxLDMxMzYxLDIyMjcwLDI0NDY2LDM2ODg0LDI4MDM0LDIzNjQ4LDIyMzAzLDIxNTIwLDIwODIwLDI4MjM3LDIyMjQyLDI1NTEyLDM5MDU5LDMzMTUxLDM0NTgxLDM1MTE0LDM2ODY0LDIxNTM0LDIzNjYzLDMzMjE2LDI1MzAyLDI1MTc2LDMzMDczLDQwNTAxLDM4NDY0LDM5NTM0LDM5NTQ4LDI2OTI1LDIyOTQ5LDI1Mjk5LDIxODIyLDI1MzY2LDIxNzAzLDM0NTIxLDI3OTY0LDIzMDQzLDI5OTI2LDM0OTcyLDI3NDk4LDIyODA2LDM1OTE2LDI0MzY3LDI4Mjg2LDI5NjA5LDM5MDM3LDIwMDI0LDI4OTE5LDIzNDM2LDMwODcxLDI1NDA1LDI2MjAyLDMwMzU4LDI0Nzc5LDIzNDUxLDIzMTEzLDE5OTc1LDMzMTA5LDI3NzU0LDI5NTc5LDIwMTI5LDI2NTA1LDMyNTkzLDI0NDQ4LDI2MTA2LDI2Mzk1LDI0NTM2LDIyOTE2LDIzMDQxLDM0NTg1LDM0NTg3LDM0NTg5LDM0NTkxLDM0NTkyLDM0NTk2LDM0NTk4LDM0NTk5LDM0NjAwLDM0NjAyLDM0NjAzLDM0NjA0LDM0NjA1LDM0NjA3LDM0NjA4LDM0NjEwLDM0NjExLDM0NjEzLDM0NjE0LDM0NjE2LDM0NjE3LDM0NjE4LDM0NjIwLDM0NjIxLDM0NjI0LDM0NjI1LDM0NjI2LDM0NjI3LDM0NjI4LDM0NjI5LDM0NjMwLDM0NjM0LDM0NjM1LDM0NjM3LDM0NjM5LDM0NjQwLDM0NjQxLDM0NjQyLDM0NjQ0LDM0NjQ1LDM0NjQ2LDM0NjQ4LDM0NjUwLDM0NjUxLDM0NjUyLDM0NjUzLDM0NjU0LDM0NjU1LDM0NjU3LDM0NjU4LDM0NjYyLDM0NjYzLDM0NjY0LDM0NjY1LDM0NjY2LDM0NjY3LDM0NjY4LDM0NjY5LDM0NjcxLDM0NjczLDM0Njc0LDM0Njc1LDM0Njc3LDM0Njc5LDM0NjgwLDM0NjgxLDM0NjgyLDM0Njg3LDM0Njg4LDM0Njg5LDM0NjkyLDM0Njk0LDM0Njk1LDM0Njk3LDM0Njk4LDM0NzAwLDM0NzAyLDM0NzAzLDM0NzA0LDM0NzA1LDM0NzA2LDM0NzA4LDM0NzA5LDM0NzEwLDM0NzEyLDM0NzEzLDM0NzE0LDM0NzE1LDM0NzE2LDM0NzE3LDM0NzE4LDM0NzIwLDM0NzIxLDM0NzIyLDM0NzIzLDM0NzI0LDI0MDEzLDI0NDk0LDIxMzYxLDM4ODg2LDM2ODI5LDI2NjkzLDIyMjYwLDIxODA3LDI0Nzk5LDIwMDI2LDI4NDkzLDMyNTAwLDMzNDc5LDMzODA2LDIyOTk2LDIwMjU1LDIwMjY2LDIzNjE0LDMyNDI4LDI2NDEwLDM0MDc0LDIxNjE5LDMwMDMxLDMyOTYzLDIxODkwLDM5NzU5LDIwMzAxLDI4MjA1LDM1ODU5LDIzNTYxLDI0OTQ0LDIxMzU1LDMwMjM5LDI4MjAxLDM0NDQyLDI1OTkxLDM4Mzk1LDMyNDQxLDIxNTYzLDMxMjgzLDMyMDEwLDM4MzgyLDIxOTg1LDMyNzA1LDI5OTM0LDI1MzczLDM0NTgzLDI4MDY1LDMxMzg5LDI1MTA1LDI2MDE3LDIxMzUxLDI1NTY5LDI3Nzc5LDI0MDQzLDIxNTk2LDM4MDU2LDIwMDQ0LDI3NzQ1LDM1ODIwLDIzNjI3LDI2MDgwLDMzNDM2LDI2NzkxLDIxNTY2LDIxNTU2LDI3NTk1LDI3NDk0LDIwMTE2LDI1NDEwLDIxMzIwLDMzMzEwLDIwMjM3LDIwMzk4LDIyMzY2LDI1MDk4LDM4NjU0LDI2MjEyLDI5Mjg5LDIxMjQ3LDIxMTUzLDI0NzM1LDM1ODIzLDI2MTMyLDI5MDgxLDI2NTEyLDM1MTk5LDMwODAyLDMwNzE3LDI2MjI0LDIyMDc1LDIxNTYwLDM4MTc3LDI5MzA2LDM0NzI1LDM0NzI2LDM0NzI3LDM0NzI5LDM0NzMwLDM0NzM0LDM0NzM2LDM0NzM3LDM0NzM4LDM0NzQwLDM0NzQyLDM0NzQzLDM0NzQ0LDM0NzQ1LDM0NzQ3LDM0NzQ4LDM0NzUwLDM0NzUxLDM0NzUzLDM0NzU0LDM0NzU1LDM0NzU2LDM0NzU3LDM0NzU5LDM0NzYwLDM0NzYxLDM0NzY0LDM0NzY1LDM0NzY2LDM0NzY3LDM0NzY4LDM0NzcyLDM0NzczLDM0Nzc0LDM0Nzc1LDM0Nzc2LDM0Nzc3LDM0Nzc4LDM0NzgwLDM0NzgxLDM0NzgyLDM0NzgzLDM0Nzg1LDM0Nzg2LDM0Nzg3LDM0Nzg4LDM0NzkwLDM0NzkxLDM0NzkyLDM0NzkzLDM0Nzk1LDM0Nzk2LDM0Nzk3LDM0Nzk5LDM0ODAwLDM0ODAxLDM0ODAyLDM0ODAzLDM0ODA0LDM0ODA1LDM0ODA2LDM0ODA3LDM0ODA4LDM0ODEwLDM0ODExLDM0ODEyLDM0ODEzLDM0ODE1LDM0ODE2LDM0ODE3LDM0ODE4LDM0ODIwLDM0ODIxLDM0ODIyLDM0ODIzLDM0ODI0LDM0ODI1LDM0ODI3LDM0ODI4LDM0ODI5LDM0ODMwLDM0ODMxLDM0ODMyLDM0ODMzLDM0ODM0LDM0ODM2LDM0ODM5LDM0ODQwLDM0ODQxLDM0ODQyLDM0ODQ0LDM0ODQ1LDM0ODQ2LDM0ODQ3LDM0ODQ4LDM0ODUxLDMxMjMyLDI0Njg3LDI0MDc2LDI0NzEzLDMzMTgxLDIyODA1LDI0Nzk2LDI5MDYwLDI4OTExLDI4MzMwLDI3NzI4LDI5MzEyLDI3MjY4LDM0OTg5LDI0MTA5LDIwMDY0LDIzMjE5LDIxOTE2LDM4MTE1LDI3OTI3LDMxOTk1LDM4NTUzLDI1MTAzLDMyNDU0LDMwNjA2LDM0NDMwLDIxMjgzLDM4Njg2LDM2NzU4LDI2MjQ3LDIzNzc3LDIwMzg0LDI5NDIxLDE5OTc5LDIxNDE0LDIyNzk5LDIxNTIzLDI1NDcyLDM4MTg0LDIwODA4LDIwMTg1LDQwMDkyLDMyNDIwLDIxNjg4LDM2MTMyLDM0OTAwLDMzMzM1LDM4Mzg2LDI4MDQ2LDI0MzU4LDIzMjQ0LDI2MTc0LDM4NTA1LDI5NjE2LDI5NDg2LDIxNDM5LDMzMTQ2LDM5MzAxLDMyNjczLDIzNDY2LDM4NTE5LDM4NDgwLDMyNDQ3LDMwNDU2LDIxNDEwLDM4MjYyLDM5MzIxLDMxNjY1LDM1MTQwLDI4MjQ4LDIwMDY1LDMyNzI0LDMxMDc3LDM1ODE0LDI0ODE5LDIxNzA5LDIwMTM5LDM5MDMzLDI0MDU1LDI3MjMzLDIwNjg3LDIxNTIxLDM1OTM3LDMzODMxLDMwODEzLDM4NjYwLDIxMDY2LDIxNzQyLDIyMTc5LDM4MTQ0LDI4MDQwLDIzNDc3LDI4MTAyLDI2MTk1LDM0ODUyLDM0ODUzLDM0ODU0LDM0ODU1LDM0ODU2LDM0ODU3LDM0ODU4LDM0ODU5LDM0ODYwLDM0ODYxLDM0ODYyLDM0ODYzLDM0ODY0LDM0ODY1LDM0ODY3LDM0ODY4LDM0ODY5LDM0ODcwLDM0ODcxLDM0ODcyLDM0ODc0LDM0ODc1LDM0ODc3LDM0ODc4LDM0ODc5LDM0ODgxLDM0ODgyLDM0ODgzLDM0ODg2LDM0ODg3LDM0ODg4LDM0ODg5LDM0ODkwLDM0ODkxLDM0ODk0LDM0ODk1LDM0ODk2LDM0ODk3LDM0ODk4LDM0ODk5LDM0OTAxLDM0OTAyLDM0OTA0LDM0OTA2LDM0OTA3LDM0OTA4LDM0OTA5LDM0OTEwLDM0OTExLDM0OTEyLDM0OTE4LDM0OTE5LDM0OTIyLDM0OTI1LDM0OTI3LDM0OTI5LDM0OTMxLDM0OTMyLDM0OTMzLDM0OTM0LDM0OTM2LDM0OTM3LDM0OTM4LDM0OTM5LDM0OTQwLDM0OTQ0LDM0OTQ3LDM0OTUwLDM0OTUxLDM0OTUzLDM0OTU0LDM0OTU2LDM0OTU4LDM0OTU5LDM0OTYwLDM0OTYxLDM0OTYzLDM0OTY0LDM0OTY1LDM0OTY3LDM0OTY4LDM0OTY5LDM0OTcwLDM0OTcxLDM0OTczLDM0OTc0LDM0OTc1LDM0OTc2LDM0OTc3LDM0OTc5LDM0OTgxLDM0OTgyLDM0OTgzLDM0OTg0LDM0OTg1LDM0OTg2LDIzNTY3LDIzMzg5LDI2NjU3LDMyOTE4LDIxODgwLDMxNTA1LDI1OTI4LDI2OTY0LDIwMTIzLDI3NDYzLDM0NjM4LDM4Nzk1LDIxMzI3LDI1Mzc1LDI1NjU4LDM3MDM0LDI2MDEyLDMyOTYxLDM1ODU2LDIwODg5LDI2ODAwLDIxMzY4LDM0ODA5LDI1MDMyLDI3ODQ0LDI3ODk5LDM1ODc0LDIzNjMzLDM0MjE4LDMzNDU1LDM4MTU2LDI3NDI3LDM2NzYzLDI2MDMyLDI0NTcxLDI0NTE1LDIwNDQ5LDM0ODg1LDI2MTQzLDMzMTI1LDI5NDgxLDI0ODI2LDIwODUyLDIxMDA5LDIyNDExLDI0NDE4LDM3MDI2LDM0ODkyLDM3MjY2LDI0MTg0LDI2NDQ3LDI0NjE1LDIyOTk1LDIwODA0LDIwOTgyLDMzMDE2LDIxMjU2LDI3NzY5LDM4NTk2LDI5MDY2LDIwMjQxLDIwNDYyLDMyNjcwLDI2NDI5LDIxOTU3LDM4MTUyLDMxMTY4LDM0OTY2LDMyNDgzLDIyNjg3LDI1MTAwLDM4NjU2LDM0Mzk0LDIyMDQwLDM5MDM1LDI0NDY0LDM1NzY4LDMzOTg4LDM3MjA3LDIxNDY1LDI2MDkzLDI0MjA3LDMwMDQ0LDI0Njc2LDMyMTEwLDIzMTY3LDMyNDkwLDMyNDkzLDM2NzEzLDIxOTI3LDIzNDU5LDI0NzQ4LDI2MDU5LDI5NTcyLDM0OTg4LDM0OTkwLDM0OTkxLDM0OTkyLDM0OTk0LDM0OTk1LDM0OTk2LDM0OTk3LDM0OTk4LDM1MDAwLDM1MDAxLDM1MDAyLDM1MDAzLDM1MDA1LDM1MDA2LDM1MDA3LDM1MDA4LDM1MDExLDM1MDEyLDM1MDE1LDM1MDE2LDM1MDE4LDM1MDE5LDM1MDIwLDM1MDIxLDM1MDIzLDM1MDI0LDM1MDI1LDM1MDI3LDM1MDMwLDM1MDMxLDM1MDM0LDM1MDM1LDM1MDM2LDM1MDM3LDM1MDM4LDM1MDQwLDM1MDQxLDM1MDQ2LDM1MDQ3LDM1MDQ5LDM1MDUwLDM1MDUxLDM1MDUyLDM1MDUzLDM1MDU0LDM1MDU1LDM1MDU4LDM1MDYxLDM1MDYyLDM1MDYzLDM1MDY2LDM1MDY3LDM1MDY5LDM1MDcxLDM1MDcyLDM1MDczLDM1MDc1LDM1MDc2LDM1MDc3LDM1MDc4LDM1MDc5LDM1MDgwLDM1MDgxLDM1MDgzLDM1MDg0LDM1MDg1LDM1MDg2LDM1MDg3LDM1MDg5LDM1MDkyLDM1MDkzLDM1MDk0LDM1MDk1LDM1MDk2LDM1MTAwLDM1MTAxLDM1MTAyLDM1MTAzLDM1MTA0LDM1MTA2LDM1MTA3LDM1MTA4LDM1MTEwLDM1MTExLDM1MTEyLDM1MTEzLDM1MTE2LDM1MTE3LDM1MTE4LDM1MTE5LDM1MTIxLDM1MTIyLDM1MTIzLDM1MTI1LDM1MTI3LDM2ODczLDMwMzA3LDMwNTA1LDMyNDc0LDM4NzcyLDM0MjAzLDIzMzk4LDMxMzQ4LDM4NjM0LDM0ODgwLDIxMTk1LDI5MDcxLDI0NDkwLDI2MDkyLDM1ODEwLDIzNTQ3LDM5NTM1LDI0MDMzLDI3NTI5LDI3NzM5LDM1NzU3LDM1NzU5LDM2ODc0LDM2ODA1LDIxMzg3LDI1Mjc2LDQwNDg2LDQwNDkzLDIxNTY4LDIwMDExLDMzNDY5LDI5MjczLDM0NDYwLDIzODMwLDM0OTA1LDI4MDc5LDM4NTk3LDIxNzEzLDIwMTIyLDM1NzY2LDI4OTM3LDIxNjkzLDM4NDA5LDI4ODk1LDI4MTUzLDMwNDE2LDIwMDA1LDMwNzQwLDM0NTc4LDIzNzIxLDI0MzEwLDM1MzI4LDM5MDY4LDM4NDE0LDI4ODE0LDI3ODM5LDIyODUyLDI1NTEzLDMwNTI0LDM0ODkzLDI4NDM2LDMzMzk1LDIyNTc2LDI5MTQxLDIxMzg4LDMwNzQ2LDM4NTkzLDIxNzYxLDI0NDIyLDI4OTc2LDIzNDc2LDM1ODY2LDM5NTY0LDI3NTIzLDIyODMwLDQwNDk1LDMxMjA3LDI2NDcyLDI1MTk2LDIwMzM1LDMwMTEzLDMyNjUwLDI3OTE1LDM4NDUxLDI3Njg3LDIwMjA4LDMwMTYyLDIwODU5LDI2Njc5LDI4NDc4LDM2OTkyLDMzMTM2LDIyOTM0LDI5ODE0LDM1MTI4LDM1MTI5LDM1MTMwLDM1MTMxLDM1MTMyLDM1MTMzLDM1MTM0LDM1MTM1LDM1MTM2LDM1MTM4LDM1MTM5LDM1MTQxLDM1MTQyLDM1MTQzLDM1MTQ0LDM1MTQ1LDM1MTQ2LDM1MTQ3LDM1MTQ4LDM1MTQ5LDM1MTUwLDM1MTUxLDM1MTUyLDM1MTUzLDM1MTU0LDM1MTU1LDM1MTU2LDM1MTU3LDM1MTU4LDM1MTU5LDM1MTYwLDM1MTYxLDM1MTYyLDM1MTYzLDM1MTY0LDM1MTY1LDM1MTY4LDM1MTY5LDM1MTcwLDM1MTcxLDM1MTcyLDM1MTczLDM1MTc1LDM1MTc2LDM1MTc3LDM1MTc4LDM1MTc5LDM1MTgwLDM1MTgxLDM1MTgyLDM1MTgzLDM1MTg0LDM1MTg1LDM1MTg2LDM1MTg3LDM1MTg4LDM1MTg5LDM1MTkwLDM1MTkxLDM1MTkyLDM1MTkzLDM1MTk0LDM1MTk2LDM1MTk3LDM1MTk4LDM1MjAwLDM1MjAyLDM1MjA0LDM1MjA1LDM1MjA3LDM1MjA4LDM1MjA5LDM1MjEwLDM1MjExLDM1MjEyLDM1MjEzLDM1MjE0LDM1MjE1LDM1MjE2LDM1MjE3LDM1MjE4LDM1MjE5LDM1MjIwLDM1MjIxLDM1MjIyLDM1MjIzLDM1MjI0LDM1MjI1LDM1MjI2LDM1MjI3LDM1MjI4LDM1MjI5LDM1MjMwLDM1MjMxLDM1MjMyLDM1MjMzLDI1NjcxLDIzNTkxLDM2OTY1LDMxMzc3LDM1ODc1LDIzMDAyLDIxNjc2LDMzMjgwLDMzNjQ3LDM1MjAxLDMyNzY4LDI2OTI4LDIyMDk0LDMyODIyLDI5MjM5LDM3MzI2LDIwOTE4LDIwMDYzLDM5MDI5LDI1NDk0LDE5OTk0LDIxNDk0LDI2MzU1LDMzMDk5LDIyODEyLDI4MDgyLDE5OTY4LDIyNzc3LDIxMzA3LDI1NTU4LDM4MTI5LDIwMzgxLDIwMjM0LDM0OTE1LDM5MDU2LDIyODM5LDM2OTUxLDMxMjI3LDIwMjAyLDMzMDA4LDMwMDk3LDI3Nzc4LDIzNDUyLDIzMDE2LDI0NDEzLDI2ODg1LDM0NDMzLDIwNTA2LDI0MDUwLDIwMDU3LDMwNjkxLDIwMTk3LDMzNDAyLDI1MjMzLDI2MTMxLDM3MDA5LDIzNjczLDIwMTU5LDI0NDQxLDMzMjIyLDM2OTIwLDMyOTAwLDMwMTIzLDIwMTM0LDM1MDI4LDI0ODQ3LDI3NTg5LDI0NTE4LDIwMDQxLDMwNDEwLDI4MzIyLDM1ODExLDM1NzU4LDM1ODUwLDM1NzkzLDI0MzIyLDMyNzY0LDMyNzE2LDMyNDYyLDMzNTg5LDMzNjQzLDIyMjQwLDI3NTc1LDM4ODk5LDM4NDUyLDIzMDM1LDIxNTM1LDM4MTM0LDI4MTM5LDIzNDkzLDM5Mjc4LDIzNjA5LDI0MzQxLDM4NTQ0LDM1MjM0LDM1MjM1LDM1MjM2LDM1MjM3LDM1MjM4LDM1MjM5LDM1MjQwLDM1MjQxLDM1MjQyLDM1MjQzLDM1MjQ0LDM1MjQ1LDM1MjQ2LDM1MjQ3LDM1MjQ4LDM1MjQ5LDM1MjUwLDM1MjUxLDM1MjUyLDM1MjUzLDM1MjU0LDM1MjU1LDM1MjU2LDM1MjU3LDM1MjU4LDM1MjU5LDM1MjYwLDM1MjYxLDM1MjYyLDM1MjYzLDM1MjY0LDM1MjY3LDM1Mjc3LDM1MjgzLDM1Mjg0LDM1Mjg1LDM1Mjg3LDM1Mjg4LDM1Mjg5LDM1MjkxLDM1MjkzLDM1Mjk1LDM1Mjk2LDM1Mjk3LDM1Mjk4LDM1MzAwLDM1MzAzLDM1MzA0LDM1MzA1LDM1MzA2LDM1MzA4LDM1MzA5LDM1MzEwLDM1MzEyLDM1MzEzLDM1MzE0LDM1MzE2LDM1MzE3LDM1MzE4LDM1MzE5LDM1MzIwLDM1MzIxLDM1MzIyLDM1MzIzLDM1MzI0LDM1MzI1LDM1MzI2LDM1MzI3LDM1MzI5LDM1MzMwLDM1MzMxLDM1MzMyLDM1MzMzLDM1MzM0LDM1MzM2LDM1MzM3LDM1MzM4LDM1MzM5LDM1MzQwLDM1MzQxLDM1MzQyLDM1MzQzLDM1MzQ0LDM1MzQ1LDM1MzQ2LDM1MzQ3LDM1MzQ4LDM1MzQ5LDM1MzUwLDM1MzUxLDM1MzUyLDM1MzUzLDM1MzU0LDM1MzU1LDM1MzU2LDM1MzU3LDIxMzYwLDMzNTIxLDI3MTg1LDIzMTU2LDQwNTYwLDI0MjEyLDMyNTUyLDMzNzIxLDMzODI4LDMzODI5LDMzNjM5LDM0NjMxLDM2ODE0LDM2MTk0LDMwNDA4LDI0NDMzLDM5MDYyLDMwODI4LDI2MTQ0LDIxNzI3LDI1MzE3LDIwMzIzLDMzMjE5LDMwMTUyLDI0MjQ4LDM4NjA1LDM2MzYyLDM0NTUzLDIxNjQ3LDI3ODkxLDI4MDQ0LDI3NzA0LDI0NzAzLDIxMTkxLDI5OTkyLDI0MTg5LDIwMjQ4LDI0NzM2LDI0NTUxLDIzNTg4LDMwMDAxLDM3MDM4LDM4MDgwLDI5MzY5LDI3ODMzLDI4MjE2LDM3MTkzLDI2Mzc3LDIxNDUxLDIxNDkxLDIwMzA1LDM3MzIxLDM1ODI1LDIxNDQ4LDI0MTg4LDM2ODAyLDI4MTMyLDIwMTEwLDMwNDAyLDI3MDE0LDM0Mzk4LDI0ODU4LDMzMjg2LDIwMzEzLDIwNDQ2LDM2OTI2LDQwMDYwLDI0ODQxLDI4MTg5LDI4MTgwLDM4NTMzLDIwMTA0LDIzMDg5LDM4NjMyLDE5OTgyLDIzNjc5LDMxMTYxLDIzNDMxLDM1ODIxLDMyNzAxLDI5NTc3LDIyNDk1LDMzNDE5LDM3MDU3LDIxNTA1LDM2OTM1LDIxOTQ3LDIzNzg2LDI0NDgxLDI0ODQwLDI3NDQyLDI5NDI1LDMyOTQ2LDM1NDY1LDM1MzU4LDM1MzU5LDM1MzYwLDM1MzYxLDM1MzYyLDM1MzYzLDM1MzY0LDM1MzY1LDM1MzY2LDM1MzY3LDM1MzY4LDM1MzY5LDM1MzcwLDM1MzcxLDM1MzcyLDM1MzczLDM1Mzc0LDM1Mzc1LDM1Mzc2LDM1Mzc3LDM1Mzc4LDM1Mzc5LDM1MzgwLDM1MzgxLDM1MzgyLDM1MzgzLDM1Mzg0LDM1Mzg1LDM1Mzg2LDM1Mzg3LDM1Mzg4LDM1Mzg5LDM1MzkxLDM1MzkyLDM1MzkzLDM1Mzk0LDM1Mzk1LDM1Mzk2LDM1Mzk3LDM1Mzk4LDM1Mzk5LDM1NDAxLDM1NDAyLDM1NDAzLDM1NDA0LDM1NDA1LDM1NDA2LDM1NDA3LDM1NDA4LDM1NDA5LDM1NDEwLDM1NDExLDM1NDEyLDM1NDEzLDM1NDE0LDM1NDE1LDM1NDE2LDM1NDE3LDM1NDE4LDM1NDE5LDM1NDIwLDM1NDIxLDM1NDIyLDM1NDIzLDM1NDI0LDM1NDI1LDM1NDI2LDM1NDI3LDM1NDI4LDM1NDI5LDM1NDMwLDM1NDMxLDM1NDMyLDM1NDMzLDM1NDM0LDM1NDM1LDM1NDM2LDM1NDM3LDM1NDM4LDM1NDM5LDM1NDQwLDM1NDQxLDM1NDQyLDM1NDQzLDM1NDQ0LDM1NDQ1LDM1NDQ2LDM1NDQ3LDM1NDQ4LDM1NDUwLDM1NDUxLDM1NDUyLDM1NDUzLDM1NDU0LDM1NDU1LDM1NDU2LDI4MDIwLDIzNTA3LDM1MDI5LDM5MDQ0LDM1OTQ3LDM5NTMzLDQwNDk5LDI4MTcwLDIwOTAwLDIwODAzLDIyNDM1LDM0OTQ1LDIxNDA3LDI1NTg4LDM2NzU3LDIyMjUzLDIxNTkyLDIyMjc4LDI5NTAzLDI4MzA0LDMyNTM2LDM2ODI4LDMzNDg5LDI0ODk1LDI0NjE2LDM4NDk4LDI2MzUyLDMyNDIyLDM2MjM0LDM2MjkxLDM4MDUzLDIzNzMxLDMxOTA4LDI2Mzc2LDI0NzQyLDM4NDA1LDMyNzkyLDIwMTEzLDM3MDk1LDIxMjQ4LDM4NTA0LDIwODAxLDM2ODE2LDM0MTY0LDM3MjEzLDI2MTk3LDM4OTAxLDIzMzgxLDIxMjc3LDMwNzc2LDI2NDM0LDI2Njg1LDIxNzA1LDI4Nzk4LDIzNDcyLDM2NzMzLDIwODc3LDIyMzEyLDIxNjgxLDI1ODc0LDI2MjQyLDM2MTkwLDM2MTYzLDMzMDM5LDMzOTAwLDM2OTczLDMxOTY3LDIwOTkxLDM0Mjk5LDI2NTMxLDI2MDg5LDI4NTc3LDM0NDY4LDM2NDgxLDIyMTIyLDM2ODk2LDMwMzM4LDI4NzkwLDI5MTU3LDM2MTMxLDI1MzIxLDIxMDE3LDI3OTAxLDM2MTU2LDI0NTkwLDIyNjg2LDI0OTc0LDI2MzY2LDM2MTkyLDI1MTY2LDIxOTM5LDI4MTk1LDI2NDEzLDM2NzExLDM1NDU3LDM1NDU4LDM1NDU5LDM1NDYwLDM1NDYxLDM1NDYyLDM1NDYzLDM1NDY0LDM1NDY3LDM1NDY4LDM1NDY5LDM1NDcwLDM1NDcxLDM1NDcyLDM1NDczLDM1NDc0LDM1NDc2LDM1NDc3LDM1NDc4LDM1NDc5LDM1NDgwLDM1NDgxLDM1NDgyLDM1NDgzLDM1NDg0LDM1NDg1LDM1NDg2LDM1NDg3LDM1NDg4LDM1NDg5LDM1NDkwLDM1NDkxLDM1NDkyLDM1NDkzLDM1NDk0LDM1NDk1LDM1NDk2LDM1NDk3LDM1NDk4LDM1NDk5LDM1NTAwLDM1NTAxLDM1NTAyLDM1NTAzLDM1NTA0LDM1NTA1LDM1NTA2LDM1NTA3LDM1NTA4LDM1NTA5LDM1NTEwLDM1NTExLDM1NTEyLDM1NTEzLDM1NTE0LDM1NTE1LDM1NTE2LDM1NTE3LDM1NTE4LDM1NTE5LDM1NTIwLDM1NTIxLDM1NTIyLDM1NTIzLDM1NTI0LDM1NTI1LDM1NTI2LDM1NTI3LDM1NTI4LDM1NTI5LDM1NTMwLDM1NTMxLDM1NTMyLDM1NTMzLDM1NTM0LDM1NTM1LDM1NTM2LDM1NTM3LDM1NTM4LDM1NTM5LDM1NTQwLDM1NTQxLDM1NTQyLDM1NTQzLDM1NTQ0LDM1NTQ1LDM1NTQ2LDM1NTQ3LDM1NTQ4LDM1NTQ5LDM1NTUwLDM1NTUxLDM1NTUyLDM1NTUzLDM1NTU0LDM1NTU1LDM4MTEzLDM4MzkyLDMwNTA0LDI2NjI5LDI3MDQ4LDIxNjQzLDIwMDQ1LDI4ODU2LDM1Nzg0LDI1Njg4LDI1OTk1LDIzNDI5LDMxMzY0LDIwNTM4LDIzNTI4LDMwNjUxLDI3NjE3LDM1NDQ5LDMxODk2LDI3ODM4LDMwNDE1LDI2MDI1LDM2NzU5LDIzODUzLDIzNjM3LDM0MzYwLDI2NjMyLDIxMzQ0LDI1MTEyLDMxNDQ5LDI4MjUxLDMyNTA5LDI3MTY3LDMxNDU2LDI0NDMyLDI4NDY3LDI0MzUyLDI1NDg0LDI4MDcyLDI2NDU0LDE5OTc2LDI0MDgwLDM2MTM0LDIwMTgzLDMyOTYwLDMwMjYwLDM4NTU2LDI1MzA3LDI2MTU3LDI1MjE0LDI3ODM2LDM2MjEzLDI5MDMxLDMyNjE3LDIwODA2LDMyOTAzLDIxNDg0LDM2OTc0LDI1MjQwLDIxNzQ2LDM0NTQ0LDM2NzYxLDMyNzczLDM4MTY3LDM0MDcxLDM2ODI1LDI3OTkzLDI5NjQ1LDI2MDE1LDMwNDk1LDI5OTU2LDMwNzU5LDMzMjc1LDM2MTI2LDM4MDI0LDIwMzkwLDI2NTE3LDMwMTM3LDM1Nzg2LDM4NjYzLDI1MzkxLDM4MjE1LDM4NDUzLDMzOTc2LDI1Mzc5LDMwNTI5LDI0NDQ5LDI5NDI0LDIwMTA1LDI0NTk2LDI1OTcyLDI1MzI3LDI3NDkxLDI1OTE5LDM1NTU2LDM1NTU3LDM1NTU4LDM1NTU5LDM1NTYwLDM1NTYxLDM1NTYyLDM1NTYzLDM1NTY0LDM1NTY1LDM1NTY2LDM1NTY3LDM1NTY4LDM1NTY5LDM1NTcwLDM1NTcxLDM1NTcyLDM1NTczLDM1NTc0LDM1NTc1LDM1NTc2LDM1NTc3LDM1NTc4LDM1NTc5LDM1NTgwLDM1NTgxLDM1NTgyLDM1NTgzLDM1NTg0LDM1NTg1LDM1NTg2LDM1NTg3LDM1NTg4LDM1NTg5LDM1NTkwLDM1NTkyLDM1NTkzLDM1NTk0LDM1NTk1LDM1NTk2LDM1NTk3LDM1NTk4LDM1NTk5LDM1NjAwLDM1NjAxLDM1NjAyLDM1NjAzLDM1NjA0LDM1NjA1LDM1NjA2LDM1NjA3LDM1NjA4LDM1NjA5LDM1NjEwLDM1NjExLDM1NjEyLDM1NjEzLDM1NjE0LDM1NjE1LDM1NjE2LDM1NjE3LDM1NjE4LDM1NjE5LDM1NjIwLDM1NjIxLDM1NjIzLDM1NjI0LDM1NjI1LDM1NjI2LDM1NjI3LDM1NjI4LDM1NjI5LDM1NjMwLDM1NjMxLDM1NjMyLDM1NjMzLDM1NjM0LDM1NjM1LDM1NjM2LDM1NjM3LDM1NjM4LDM1NjM5LDM1NjQwLDM1NjQxLDM1NjQyLDM1NjQzLDM1NjQ0LDM1NjQ1LDM1NjQ2LDM1NjQ3LDM1NjQ4LDM1NjQ5LDM1NjUwLDM1NjUxLDM1NjUyLDM1NjUzLDI0MTAzLDMwMTUxLDM3MDczLDM1Nzc3LDMzNDM3LDI2NTI1LDI1OTAzLDIxNTUzLDM0NTg0LDMwNjkzLDMyOTMwLDMzMDI2LDI3NzEzLDIwMDQzLDMyNDU1LDMyODQ0LDMwNDUyLDI2ODkzLDI3NTQyLDI1MTkxLDIwNTQwLDIwMzU2LDIyMzM2LDI1MzUxLDI3NDkwLDM2Mjg2LDIxNDgyLDI2MDg4LDMyNDQwLDI0NTM1LDI1MzcwLDI1NTI3LDMzMjY3LDMzMjY4LDMyNjIyLDI0MDkyLDIzNzY5LDIxMDQ2LDI2MjM0LDMxMjA5LDMxMjU4LDM2MTM2LDI4ODI1LDMwMTY0LDI4MzgyLDI3ODM1LDMxMzc4LDIwMDEzLDMwNDA1LDI0NTQ0LDM4MDQ3LDM0OTM1LDMyNDU2LDMxMTgxLDMyOTU5LDM3MzI1LDIwMjEwLDIwMjQ3LDMzMzExLDIxNjA4LDI0MDMwLDI3OTU0LDM1Nzg4LDMxOTA5LDM2NzI0LDMyOTIwLDI0MDkwLDIxNjUwLDMwMzg1LDIzNDQ5LDI2MTcyLDM5NTg4LDI5NjY0LDI2NjY2LDM0NTIzLDI2NDE3LDI5NDgyLDM1ODMyLDM1ODAzLDM2ODgwLDMxNDgxLDI4ODkxLDI5MDM4LDI1Mjg0LDMwNjMzLDIyMDY1LDIwMDI3LDMzODc5LDI2NjA5LDIxMTYxLDM0NDk2LDM2MTQyLDM4MTM2LDMxNTY5LDM1NjU0LDM1NjU1LDM1NjU2LDM1NjU3LDM1NjU4LDM1NjU5LDM1NjYwLDM1NjYxLDM1NjYyLDM1NjYzLDM1NjY0LDM1NjY1LDM1NjY2LDM1NjY3LDM1NjY4LDM1NjY5LDM1NjcwLDM1NjcxLDM1NjcyLDM1NjczLDM1Njc0LDM1Njc1LDM1Njc2LDM1Njc3LDM1Njc4LDM1Njc5LDM1NjgwLDM1NjgxLDM1NjgyLDM1NjgzLDM1Njg0LDM1Njg1LDM1Njg3LDM1Njg4LDM1Njg5LDM1NjkwLDM1NjkxLDM1NjkzLDM1Njk0LDM1Njk1LDM1Njk2LDM1Njk3LDM1Njk4LDM1Njk5LDM1NzAwLDM1NzAxLDM1NzAyLDM1NzAzLDM1NzA0LDM1NzA1LDM1NzA2LDM1NzA3LDM1NzA4LDM1NzA5LDM1NzEwLDM1NzExLDM1NzEyLDM1NzEzLDM1NzE0LDM1NzE1LDM1NzE2LDM1NzE3LDM1NzE4LDM1NzE5LDM1NzIwLDM1NzIxLDM1NzIyLDM1NzIzLDM1NzI0LDM1NzI1LDM1NzI2LDM1NzI3LDM1NzI4LDM1NzI5LDM1NzMwLDM1NzMxLDM1NzMyLDM1NzMzLDM1NzM0LDM1NzM1LDM1NzM2LDM1NzM3LDM1NzM4LDM1NzM5LDM1NzQwLDM1NzQxLDM1NzQyLDM1NzQzLDM1NzU2LDM1NzYxLDM1NzcxLDM1NzgzLDM1NzkyLDM1ODE4LDM1ODQ5LDM1ODcwLDIwMzAzLDI3ODgwLDMxMDY5LDM5NTQ3LDI1MjM1LDI5MjI2LDI1MzQxLDE5OTg3LDMwNzQyLDM2NzE2LDI1Nzc2LDM2MTg2LDMxNjg2LDI2NzI5LDI0MTk2LDM1MDEzLDIyOTE4LDI1NzU4LDIyNzY2LDI5MzY2LDI2ODk0LDM4MTgxLDM2ODYxLDM2MTg0LDIyMzY4LDMyNTEyLDM1ODQ2LDIwOTM0LDI1NDE3LDI1MzA1LDIxMzMxLDI2NzAwLDI5NzMwLDMzNTM3LDM3MTk2LDIxODI4LDMwNTI4LDI4Nzk2LDI3OTc4LDIwODU3LDIxNjcyLDM2MTY0LDIzMDM5LDI4MzYzLDI4MTAwLDIzMzg4LDMyMDQzLDIwMTgwLDMxODY5LDI4MzcxLDIzMzc2LDMzMjU4LDI4MTczLDIzMzgzLDM5NjgzLDI2ODM3LDM2Mzk0LDIzNDQ3LDMyNTA4LDI0NjM1LDMyNDM3LDM3MDQ5LDM2MjA4LDIyODYzLDI1NTQ5LDMxMTk5LDM2Mjc1LDIxMzMwLDI2MDYzLDMxMDYyLDM1NzgxLDM4NDU5LDMyNDUyLDM4MDc1LDMyMzg2LDIyMDY4LDM3MjU3LDI2MzY4LDMyNjE4LDIzNTYyLDM2OTgxLDI2MTUyLDI0MDM4LDIwMzA0LDI2NTkwLDIwNTcwLDIwMzE2LDIyMzUyLDI0MjMxLDU5NDA4LDU5NDA5LDU5NDEwLDU5NDExLDU5NDEyLDM1ODk2LDM1ODk3LDM1ODk4LDM1ODk5LDM1OTAwLDM1OTAxLDM1OTAyLDM1OTAzLDM1OTA0LDM1OTA2LDM1OTA3LDM1OTA4LDM1OTA5LDM1OTEyLDM1OTE0LDM1OTE1LDM1OTE3LDM1OTE4LDM1OTE5LDM1OTIwLDM1OTIxLDM1OTIyLDM1OTIzLDM1OTI0LDM1OTI2LDM1OTI3LDM1OTI4LDM1OTI5LDM1OTMxLDM1OTMyLDM1OTMzLDM1OTM0LDM1OTM1LDM1OTM2LDM1OTM5LDM1OTQwLDM1OTQxLDM1OTQyLDM1OTQzLDM1OTQ0LDM1OTQ1LDM1OTQ4LDM1OTQ5LDM1OTUwLDM1OTUxLDM1OTUyLDM1OTUzLDM1OTU0LDM1OTU2LDM1OTU3LDM1OTU4LDM1OTU5LDM1OTYzLDM1OTY0LDM1OTY1LDM1OTY2LDM1OTY3LDM1OTY4LDM1OTY5LDM1OTcxLDM1OTcyLDM1OTc0LDM1OTc1LDM1OTc2LDM1OTc5LDM1OTgxLDM1OTgyLDM1OTgzLDM1OTg0LDM1OTg1LDM1OTg2LDM1OTg3LDM1OTg5LDM1OTkwLDM1OTkxLDM1OTkzLDM1OTk0LDM1OTk1LDM1OTk2LDM1OTk3LDM1OTk4LDM1OTk5LDM2MDAwLDM2MDAxLDM2MDAyLDM2MDAzLDM2MDA0LDM2MDA1LDM2MDA2LDM2MDA3LDM2MDA4LDM2MDA5LDM2MDEwLDM2MDExLDM2MDEyLDM2MDEzLDIwMTA5LDE5OTgwLDIwODAwLDE5OTg0LDI0MzE5LDIxMzE3LDE5OTg5LDIwMTIwLDE5OTk4LDM5NzMwLDIzNDA0LDIyMTIxLDIwMDA4LDMxMTYyLDIwMDMxLDIxMjY5LDIwMDM5LDIyODI5LDI5MjQzLDIxMzU4LDI3NjY0LDIyMjM5LDMyOTk2LDM5MzE5LDI3NjAzLDMwNTkwLDQwNzI3LDIwMDIyLDIwMTI3LDQwNzIwLDIwMDYwLDIwMDczLDIwMTE1LDMzNDE2LDIzMzg3LDIxODY4LDIyMDMxLDIwMTY0LDIxMzg5LDIxNDA1LDIxNDExLDIxNDEzLDIxNDIyLDM4NzU3LDM2MTg5LDIxMjc0LDIxNDkzLDIxMjg2LDIxMjk0LDIxMzEwLDM2MTg4LDIxMzUwLDIxMzQ3LDIwOTk0LDIxMDAwLDIxMDA2LDIxMDM3LDIxMDQzLDIxMDU1LDIxMDU2LDIxMDY4LDIxMDg2LDIxMDg5LDIxMDg0LDMzOTY3LDIxMTE3LDIxMTIyLDIxMTIxLDIxMTM2LDIxMTM5LDIwODY2LDMyNTk2LDIwMTU1LDIwMTYzLDIwMTY5LDIwMTYyLDIwMjAwLDIwMTkzLDIwMjAzLDIwMTkwLDIwMjUxLDIwMjExLDIwMjU4LDIwMzI0LDIwMjEzLDIwMjYxLDIwMjYzLDIwMjMzLDIwMjY3LDIwMzE4LDIwMzI3LDI1OTEyLDIwMzE0LDIwMzE3LDM2MDE0LDM2MDE1LDM2MDE2LDM2MDE3LDM2MDE4LDM2MDE5LDM2MDIwLDM2MDIxLDM2MDIyLDM2MDIzLDM2MDI0LDM2MDI1LDM2MDI2LDM2MDI3LDM2MDI4LDM2MDI5LDM2MDMwLDM2MDMxLDM2MDMyLDM2MDMzLDM2MDM0LDM2MDM1LDM2MDM2LDM2MDM3LDM2MDM4LDM2MDM5LDM2MDQwLDM2MDQxLDM2MDQyLDM2MDQzLDM2MDQ0LDM2MDQ1LDM2MDQ2LDM2MDQ3LDM2MDQ4LDM2MDQ5LDM2MDUwLDM2MDUxLDM2MDUyLDM2MDUzLDM2MDU0LDM2MDU1LDM2MDU2LDM2MDU3LDM2MDU4LDM2MDU5LDM2MDYwLDM2MDYxLDM2MDYyLDM2MDYzLDM2MDY0LDM2MDY1LDM2MDY2LDM2MDY3LDM2MDY4LDM2MDY5LDM2MDcwLDM2MDcxLDM2MDcyLDM2MDczLDM2MDc0LDM2MDc1LDM2MDc2LDM2MDc3LDM2MDc4LDM2MDc5LDM2MDgwLDM2MDgxLDM2MDgyLDM2MDgzLDM2MDg0LDM2MDg1LDM2MDg2LDM2MDg3LDM2MDg4LDM2MDg5LDM2MDkwLDM2MDkxLDM2MDkyLDM2MDkzLDM2MDk0LDM2MDk1LDM2MDk2LDM2MDk3LDM2MDk4LDM2MDk5LDM2MTAwLDM2MTAxLDM2MTAyLDM2MTAzLDM2MTA0LDM2MTA1LDM2MTA2LDM2MTA3LDM2MTA4LDM2MTA5LDIwMzE5LDIwMzExLDIwMjc0LDIwMjg1LDIwMzQyLDIwMzQwLDIwMzY5LDIwMzYxLDIwMzU1LDIwMzY3LDIwMzUwLDIwMzQ3LDIwMzk0LDIwMzQ4LDIwMzk2LDIwMzcyLDIwNDU0LDIwNDU2LDIwNDU4LDIwNDIxLDIwNDQyLDIwNDUxLDIwNDQ0LDIwNDMzLDIwNDQ3LDIwNDcyLDIwNTIxLDIwNTU2LDIwNDY3LDIwNTI0LDIwNDk1LDIwNTI2LDIwNTI1LDIwNDc4LDIwNTA4LDIwNDkyLDIwNTE3LDIwNTIwLDIwNjA2LDIwNTQ3LDIwNTY1LDIwNTUyLDIwNTU4LDIwNTg4LDIwNjAzLDIwNjQ1LDIwNjQ3LDIwNjQ5LDIwNjY2LDIwNjk0LDIwNzQyLDIwNzE3LDIwNzE2LDIwNzEwLDIwNzE4LDIwNzQzLDIwNzQ3LDIwMTg5LDI3NzA5LDIwMzEyLDIwMzI1LDIwNDMwLDQwODY0LDI3NzE4LDMxODYwLDIwODQ2LDI0MDYxLDQwNjQ5LDM5MzIwLDIwODY1LDIyODA0LDIxMjQxLDIxMjYxLDM1MzM1LDIxMjY0LDIwOTcxLDIyODA5LDIwODIxLDIwMTI4LDIwODIyLDIwMTQ3LDM0OTI2LDM0OTgwLDIwMTQ5LDMzMDQ0LDM1MDI2LDMxMTA0LDIzMzQ4LDM0ODE5LDMyNjk2LDIwOTA3LDIwOTEzLDIwOTI1LDIwOTI0LDM2MTEwLDM2MTExLDM2MTEyLDM2MTEzLDM2MTE0LDM2MTE1LDM2MTE2LDM2MTE3LDM2MTE4LDM2MTE5LDM2MTIwLDM2MTIxLDM2MTIyLDM2MTIzLDM2MTI0LDM2MTI4LDM2MTc3LDM2MTc4LDM2MTgzLDM2MTkxLDM2MTk3LDM2MjAwLDM2MjAxLDM2MjAyLDM2MjA0LDM2MjA2LDM2MjA3LDM2MjA5LDM2MjEwLDM2MjE2LDM2MjE3LDM2MjE4LDM2MjE5LDM2MjIwLDM2MjIxLDM2MjIyLDM2MjIzLDM2MjI0LDM2MjI2LDM2MjI3LDM2MjMwLDM2MjMxLDM2MjMyLDM2MjMzLDM2MjM2LDM2MjM3LDM2MjM4LDM2MjM5LDM2MjQwLDM2MjQyLDM2MjQzLDM2MjQ1LDM2MjQ2LDM2MjQ3LDM2MjQ4LDM2MjQ5LDM2MjUwLDM2MjUxLDM2MjUyLDM2MjUzLDM2MjU0LDM2MjU2LDM2MjU3LDM2MjU4LDM2MjYwLDM2MjYxLDM2MjYyLDM2MjYzLDM2MjY0LDM2MjY1LDM2MjY2LDM2MjY3LDM2MjY4LDM2MjY5LDM2MjcwLDM2MjcxLDM2MjcyLDM2Mjc0LDM2Mjc4LDM2Mjc5LDM2MjgxLDM2MjgzLDM2Mjg1LDM2Mjg4LDM2Mjg5LDM2MjkwLDM2MjkzLDM2Mjk1LDM2Mjk2LDM2Mjk3LDM2Mjk4LDM2MzAxLDM2MzA0LDM2MzA2LDM2MzA3LDM2MzA4LDIwOTM1LDIwODg2LDIwODk4LDIwOTAxLDM1NzQ0LDM1NzUwLDM1NzUxLDM1NzU0LDM1NzY0LDM1NzY1LDM1NzY3LDM1Nzc4LDM1Nzc5LDM1Nzg3LDM1NzkxLDM1NzkwLDM1Nzk0LDM1Nzk1LDM1Nzk2LDM1Nzk4LDM1ODAwLDM1ODAxLDM1ODA0LDM1ODA3LDM1ODA4LDM1ODEyLDM1ODE2LDM1ODE3LDM1ODIyLDM1ODI0LDM1ODI3LDM1ODMwLDM1ODMzLDM1ODM2LDM1ODM5LDM1ODQwLDM1ODQyLDM1ODQ0LDM1ODQ3LDM1ODUyLDM1ODU1LDM1ODU3LDM1ODU4LDM1ODYwLDM1ODYxLDM1ODYyLDM1ODY1LDM1ODY3LDM1ODY0LDM1ODY5LDM1ODcxLDM1ODcyLDM1ODczLDM1ODc3LDM1ODc5LDM1ODgyLDM1ODgzLDM1ODg2LDM1ODg3LDM1ODkwLDM1ODkxLDM1ODkzLDM1ODk0LDIxMzUzLDIxMzcwLDM4NDI5LDM4NDM0LDM4NDMzLDM4NDQ5LDM4NDQyLDM4NDYxLDM4NDYwLDM4NDY2LDM4NDczLDM4NDg0LDM4NDk1LDM4NTAzLDM4NTA4LDM4NTE0LDM4NTE2LDM4NTM2LDM4NTQxLDM4NTUxLDM4NTc2LDM3MDE1LDM3MDE5LDM3MDIxLDM3MDE3LDM3MDM2LDM3MDI1LDM3MDQ0LDM3MDQzLDM3MDQ2LDM3MDUwLDM2MzA5LDM2MzEyLDM2MzEzLDM2MzE2LDM2MzIwLDM2MzIxLDM2MzIyLDM2MzI1LDM2MzI2LDM2MzI3LDM2MzI5LDM2MzMzLDM2MzM0LDM2MzM2LDM2MzM3LDM2MzM4LDM2MzQwLDM2MzQyLDM2MzQ4LDM2MzUwLDM2MzUxLDM2MzUyLDM2MzUzLDM2MzU0LDM2MzU1LDM2MzU2LDM2MzU4LDM2MzU5LDM2MzYwLDM2MzYzLDM2MzY1LDM2MzY2LDM2MzY4LDM2MzY5LDM2MzcwLDM2MzcxLDM2MzczLDM2Mzc0LDM2Mzc1LDM2Mzc2LDM2Mzc3LDM2Mzc4LDM2Mzc5LDM2MzgwLDM2Mzg0LDM2Mzg1LDM2Mzg4LDM2Mzg5LDM2MzkwLDM2MzkxLDM2MzkyLDM2Mzk1LDM2Mzk3LDM2NDAwLDM2NDAyLDM2NDAzLDM2NDA0LDM2NDA2LDM2NDA3LDM2NDA4LDM2NDExLDM2NDEyLDM2NDE0LDM2NDE1LDM2NDE5LDM2NDIxLDM2NDIyLDM2NDI4LDM2NDI5LDM2NDMwLDM2NDMxLDM2NDMyLDM2NDM1LDM2NDM2LDM2NDM3LDM2NDM4LDM2NDM5LDM2NDQwLDM2NDQyLDM2NDQzLDM2NDQ0LDM2NDQ1LDM2NDQ2LDM2NDQ3LDM2NDQ4LDM2NDQ5LDM2NDUwLDM2NDUxLDM2NDUyLDM2NDUzLDM2NDU1LDM2NDU2LDM2NDU4LDM2NDU5LDM2NDYyLDM2NDY1LDM3MDQ4LDM3MDQwLDM3MDcxLDM3MDYxLDM3MDU0LDM3MDcyLDM3MDYwLDM3MDYzLDM3MDc1LDM3MDk0LDM3MDkwLDM3MDg0LDM3MDc5LDM3MDgzLDM3MDk5LDM3MTAzLDM3MTE4LDM3MTI0LDM3MTU0LDM3MTUwLDM3MTU1LDM3MTY5LDM3MTY3LDM3MTc3LDM3MTg3LDM3MTkwLDIxMDA1LDIyODUwLDIxMTU0LDIxMTY0LDIxMTY1LDIxMTgyLDIxNzU5LDIxMjAwLDIxMjA2LDIxMjMyLDIxNDcxLDI5MTY2LDMwNjY5LDI0MzA4LDIwOTgxLDIwOTg4LDM5NzI3LDIxNDMwLDI0MzIxLDMwMDQyLDI0MDQ3LDIyMzQ4LDIyNDQxLDIyNDMzLDIyNjU0LDIyNzE2LDIyNzI1LDIyNzM3LDIyMzEzLDIyMzE2LDIyMzE0LDIyMzIzLDIyMzI5LDIyMzE4LDIyMzE5LDIyMzY0LDIyMzMxLDIyMzM4LDIyMzc3LDIyNDA1LDIyMzc5LDIyNDA2LDIyMzk2LDIyMzk1LDIyMzc2LDIyMzgxLDIyMzkwLDIyMzg3LDIyNDQ1LDIyNDM2LDIyNDEyLDIyNDUwLDIyNDc5LDIyNDM5LDIyNDUyLDIyNDE5LDIyNDMyLDIyNDg1LDIyNDg4LDIyNDkwLDIyNDg5LDIyNDgyLDIyNDU2LDIyNTE2LDIyNTExLDIyNTIwLDIyNTAwLDIyNDkzLDM2NDY3LDM2NDY5LDM2NDcxLDM2NDcyLDM2NDczLDM2NDc0LDM2NDc1LDM2NDc3LDM2NDc4LDM2NDgwLDM2NDgyLDM2NDgzLDM2NDg0LDM2NDg2LDM2NDg4LDM2NDg5LDM2NDkwLDM2NDkxLDM2NDkyLDM2NDkzLDM2NDk0LDM2NDk3LDM2NDk4LDM2NDk5LDM2NTAxLDM2NTAyLDM2NTAzLDM2NTA0LDM2NTA1LDM2NTA2LDM2NTA3LDM2NTA5LDM2NTExLDM2NTEyLDM2NTEzLDM2NTE0LDM2NTE1LDM2NTE2LDM2NTE3LDM2NTE4LDM2NTE5LDM2NTIwLDM2NTIxLDM2NTIyLDM2NTI1LDM2NTI2LDM2NTI4LDM2NTI5LDM2NTMxLDM2NTMyLDM2NTMzLDM2NTM0LDM2NTM1LDM2NTM2LDM2NTM3LDM2NTM5LDM2NTQwLDM2NTQxLDM2NTQyLDM2NTQzLDM2NTQ0LDM2NTQ1LDM2NTQ2LDM2NTQ3LDM2NTQ4LDM2NTQ5LDM2NTUwLDM2NTUxLDM2NTUyLDM2NTUzLDM2NTU0LDM2NTU1LDM2NTU2LDM2NTU3LDM2NTU5LDM2NTYwLDM2NTYxLDM2NTYyLDM2NTYzLDM2NTY0LDM2NTY1LDM2NTY2LDM2NTY3LDM2NTY4LDM2NTY5LDM2NTcwLDM2NTcxLDM2NTcyLDM2NTczLDM2NTc0LDM2NTc1LDM2NTc2LDM2NTc3LDM2NTc4LDM2NTc5LDM2NTgwLDIyNTM5LDIyNTQxLDIyNTI1LDIyNTA5LDIyNTI4LDIyNTU4LDIyNTUzLDIyNTk2LDIyNTYwLDIyNjI5LDIyNjM2LDIyNjU3LDIyNjY1LDIyNjgyLDIyNjU2LDM5MzM2LDQwNzI5LDI1MDg3LDMzNDAxLDMzNDA1LDMzNDA3LDMzNDIzLDMzNDE4LDMzNDQ4LDMzNDEyLDMzNDIyLDMzNDI1LDMzNDMxLDMzNDMzLDMzNDUxLDMzNDY0LDMzNDcwLDMzNDU2LDMzNDgwLDMzNDgyLDMzNTA3LDMzNDMyLDMzNDYzLDMzNDU0LDMzNDgzLDMzNDg0LDMzNDczLDMzNDQ5LDMzNDYwLDMzNDQxLDMzNDUwLDMzNDM5LDMzNDc2LDMzNDg2LDMzNDQ0LDMzNTA1LDMzNTQ1LDMzNTI3LDMzNTA4LDMzNTUxLDMzNTQzLDMzNTAwLDMzNTI0LDMzNDkwLDMzNDk2LDMzNTQ4LDMzNTMxLDMzNDkxLDMzNTUzLDMzNTYyLDMzNTQyLDMzNTU2LDMzNTU3LDMzNTA0LDMzNDkzLDMzNTY0LDMzNjE3LDMzNjI3LDMzNjI4LDMzNTQ0LDMzNjgyLDMzNTk2LDMzNTg4LDMzNTg1LDMzNjkxLDMzNjMwLDMzNTgzLDMzNjE1LDMzNjA3LDMzNjAzLDMzNjMxLDMzNjAwLDMzNTU5LDMzNjMyLDMzNTgxLDMzNTk0LDMzNTg3LDMzNjM4LDMzNjM3LDM2NTgxLDM2NTgyLDM2NTgzLDM2NTg0LDM2NTg1LDM2NTg2LDM2NTg3LDM2NTg4LDM2NTg5LDM2NTkwLDM2NTkxLDM2NTkyLDM2NTkzLDM2NTk0LDM2NTk1LDM2NTk2LDM2NTk3LDM2NTk4LDM2NTk5LDM2NjAwLDM2NjAxLDM2NjAyLDM2NjAzLDM2NjA0LDM2NjA1LDM2NjA2LDM2NjA3LDM2NjA4LDM2NjA5LDM2NjEwLDM2NjExLDM2NjEyLDM2NjEzLDM2NjE0LDM2NjE1LDM2NjE2LDM2NjE3LDM2NjE4LDM2NjE5LDM2NjIwLDM2NjIxLDM2NjIyLDM2NjIzLDM2NjI0LDM2NjI1LDM2NjI2LDM2NjI3LDM2NjI4LDM2NjI5LDM2NjMwLDM2NjMxLDM2NjMyLDM2NjMzLDM2NjM0LDM2NjM1LDM2NjM2LDM2NjM3LDM2NjM4LDM2NjM5LDM2NjQwLDM2NjQxLDM2NjQyLDM2NjQzLDM2NjQ0LDM2NjQ1LDM2NjQ2LDM2NjQ3LDM2NjQ4LDM2NjQ5LDM2NjUwLDM2NjUxLDM2NjUyLDM2NjUzLDM2NjU0LDM2NjU1LDM2NjU2LDM2NjU3LDM2NjU4LDM2NjU5LDM2NjYwLDM2NjYxLDM2NjYyLDM2NjYzLDM2NjY0LDM2NjY1LDM2NjY2LDM2NjY3LDM2NjY4LDM2NjY5LDM2NjcwLDM2NjcxLDM2NjcyLDM2NjczLDM2Njc0LDM2Njc1LDM2Njc2LDMzNjQwLDMzNTYzLDMzNjQxLDMzNjQ0LDMzNjQyLDMzNjQ1LDMzNjQ2LDMzNzEyLDMzNjU2LDMzNzE1LDMzNzE2LDMzNjk2LDMzNzA2LDMzNjgzLDMzNjkyLDMzNjY5LDMzNjYwLDMzNzE4LDMzNzA1LDMzNjYxLDMzNzIwLDMzNjU5LDMzNjg4LDMzNjk0LDMzNzA0LDMzNzIyLDMzNzI0LDMzNzI5LDMzNzkzLDMzNzY1LDMzNzUyLDIyNTM1LDMzODE2LDMzODAzLDMzNzU3LDMzNzg5LDMzNzUwLDMzODIwLDMzODQ4LDMzODA5LDMzNzk4LDMzNzQ4LDMzNzU5LDMzODA3LDMzNzk1LDMzNzg0LDMzNzg1LDMzNzcwLDMzNzMzLDMzNzI4LDMzODMwLDMzNzc2LDMzNzYxLDMzODg0LDMzODczLDMzODgyLDMzODgxLDMzOTA3LDMzOTI3LDMzOTI4LDMzOTE0LDMzOTI5LDMzOTEyLDMzODUyLDMzODYyLDMzODk3LDMzOTEwLDMzOTMyLDMzOTM0LDMzODQxLDMzOTAxLDMzOTg1LDMzOTk3LDM0MDAwLDM0MDIyLDMzOTgxLDM0MDAzLDMzOTk0LDMzOTgzLDMzOTc4LDM0MDE2LDMzOTUzLDMzOTc3LDMzOTcyLDMzOTQzLDM0MDIxLDM0MDE5LDM0MDYwLDI5OTY1LDM0MTA0LDM0MDMyLDM0MTA1LDM0MDc5LDM0MTA2LDM2Njc3LDM2Njc4LDM2Njc5LDM2NjgwLDM2NjgxLDM2NjgyLDM2NjgzLDM2Njg0LDM2Njg1LDM2Njg2LDM2Njg3LDM2Njg4LDM2Njg5LDM2NjkwLDM2NjkxLDM2NjkyLDM2NjkzLDM2Njk0LDM2Njk1LDM2Njk2LDM2Njk3LDM2Njk4LDM2Njk5LDM2NzAwLDM2NzAxLDM2NzAyLDM2NzAzLDM2NzA0LDM2NzA1LDM2NzA2LDM2NzA3LDM2NzA4LDM2NzA5LDM2NzE0LDM2NzM2LDM2NzQ4LDM2NzU0LDM2NzY1LDM2NzY4LDM2NzY5LDM2NzcwLDM2NzcyLDM2NzczLDM2Nzc0LDM2Nzc1LDM2Nzc4LDM2NzgwLDM2NzgxLDM2NzgyLDM2NzgzLDM2Nzg2LDM2Nzg3LDM2Nzg4LDM2Nzg5LDM2NzkxLDM2NzkyLDM2Nzk0LDM2Nzk1LDM2Nzk2LDM2Nzk5LDM2ODAwLDM2ODAzLDM2ODA2LDM2ODA5LDM2ODEwLDM2ODExLDM2ODEyLDM2ODEzLDM2ODE1LDM2ODE4LDM2ODIyLDM2ODIzLDM2ODI2LDM2ODMyLDM2ODMzLDM2ODM1LDM2ODM5LDM2ODQ0LDM2ODQ3LDM2ODQ5LDM2ODUwLDM2ODUyLDM2ODUzLDM2ODU0LDM2ODU4LDM2ODU5LDM2ODYwLDM2ODYyLDM2ODYzLDM2ODcxLDM2ODcyLDM2ODc2LDM2ODc4LDM2ODgzLDM2ODg1LDM2ODg4LDM0MTM0LDM0MTA3LDM0MDQ3LDM0MDQ0LDM0MTM3LDM0MTIwLDM0MTUyLDM0MTQ4LDM0MTQyLDM0MTcwLDMwNjI2LDM0MTE1LDM0MTYyLDM0MTcxLDM0MjEyLDM0MjE2LDM0MTgzLDM0MTkxLDM0MTY5LDM0MjIyLDM0MjA0LDM0MTgxLDM0MjMzLDM0MjMxLDM0MjI0LDM0MjU5LDM0MjQxLDM0MjY4LDM0MzAzLDM0MzQzLDM0MzA5LDM0MzQ1LDM0MzI2LDM0MzY0LDI0MzE4LDI0MzI4LDIyODQ0LDIyODQ5LDMyODIzLDIyODY5LDIyODc0LDIyODcyLDIxMjYzLDIzNTg2LDIzNTg5LDIzNTk2LDIzNjA0LDI1MTY0LDI1MTk0LDI1MjQ3LDI1Mjc1LDI1MjkwLDI1MzA2LDI1MzAzLDI1MzI2LDI1Mzc4LDI1MzM0LDI1NDAxLDI1NDE5LDI1NDExLDI1NTE3LDI1NTkwLDI1NDU3LDI1NDY2LDI1NDg2LDI1NTI0LDI1NDUzLDI1NTE2LDI1NDgyLDI1NDQ5LDI1NTE4LDI1NTMyLDI1NTg2LDI1NTkyLDI1NTY4LDI1NTk5LDI1NTQwLDI1NTY2LDI1NTUwLDI1NjgyLDI1NTQyLDI1NTM0LDI1NjY5LDI1NjY1LDI1NjExLDI1NjI3LDI1NjMyLDI1NjEyLDI1NjM4LDI1NjMzLDI1Njk0LDI1NzMyLDI1NzA5LDI1NzUwLDM2ODg5LDM2ODkyLDM2ODk5LDM2OTAwLDM2OTAxLDM2OTAzLDM2OTA0LDM2OTA1LDM2OTA2LDM2OTA3LDM2OTA4LDM2OTEyLDM2OTEzLDM2OTE0LDM2OTE1LDM2OTE2LDM2OTE5LDM2OTIxLDM2OTIyLDM2OTI1LDM2OTI3LDM2OTI4LDM2OTMxLDM2OTMzLDM2OTM0LDM2OTM2LDM2OTM3LDM2OTM4LDM2OTM5LDM2OTQwLDM2OTQyLDM2OTQ4LDM2OTQ5LDM2OTUwLDM2OTUzLDM2OTU0LDM2OTU2LDM2OTU3LDM2OTU4LDM2OTU5LDM2OTYwLDM2OTYxLDM2OTY0LDM2OTY2LDM2OTY3LDM2OTY5LDM2OTcwLDM2OTcxLDM2OTcyLDM2OTc1LDM2OTc2LDM2OTc3LDM2OTc4LDM2OTc5LDM2OTgyLDM2OTgzLDM2OTg0LDM2OTg1LDM2OTg2LDM2OTg3LDM2OTg4LDM2OTkwLDM2OTkzLDM2OTk2LDM2OTk3LDM2OTk4LDM2OTk5LDM3MDAxLDM3MDAyLDM3MDA0LDM3MDA1LDM3MDA2LDM3MDA3LDM3MDA4LDM3MDEwLDM3MDEyLDM3MDE0LDM3MDE2LDM3MDE4LDM3MDIwLDM3MDIyLDM3MDIzLDM3MDI0LDM3MDI4LDM3MDI5LDM3MDMxLDM3MDMyLDM3MDMzLDM3MDM1LDM3MDM3LDM3MDQyLDM3MDQ3LDM3MDUyLDM3MDUzLDM3MDU1LDM3MDU2LDI1NzIyLDI1NzgzLDI1Nzg0LDI1NzUzLDI1Nzg2LDI1NzkyLDI1ODA4LDI1ODE1LDI1ODI4LDI1ODI2LDI1ODY1LDI1ODkzLDI1OTAyLDI0MzMxLDI0NTMwLDI5OTc3LDI0MzM3LDIxMzQzLDIxNDg5LDIxNTAxLDIxNDgxLDIxNDgwLDIxNDk5LDIxNTIyLDIxNTI2LDIxNTEwLDIxNTc5LDIxNTg2LDIxNTg3LDIxNTg4LDIxNTkwLDIxNTcxLDIxNTM3LDIxNTkxLDIxNTkzLDIxNTM5LDIxNTU0LDIxNjM0LDIxNjUyLDIxNjIzLDIxNjE3LDIxNjA0LDIxNjU4LDIxNjU5LDIxNjM2LDIxNjIyLDIxNjA2LDIxNjYxLDIxNzEyLDIxNjc3LDIxNjk4LDIxNjg0LDIxNzE0LDIxNjcxLDIxNjcwLDIxNzE1LDIxNzE2LDIxNjE4LDIxNjY3LDIxNzE3LDIxNjkxLDIxNjk1LDIxNzA4LDIxNzIxLDIxNzIyLDIxNzI0LDIxNjczLDIxNjc0LDIxNjY4LDIxNzI1LDIxNzExLDIxNzI2LDIxNzg3LDIxNzM1LDIxNzkyLDIxNzU3LDIxNzgwLDIxNzQ3LDIxNzk0LDIxNzk1LDIxNzc1LDIxNzc3LDIxNzk5LDIxODAyLDIxODYzLDIxOTAzLDIxOTQxLDIxODMzLDIxODY5LDIxODI1LDIxODQ1LDIxODIzLDIxODQwLDIxODIwLDM3MDU4LDM3MDU5LDM3MDYyLDM3MDY0LDM3MDY1LDM3MDY3LDM3MDY4LDM3MDY5LDM3MDc0LDM3MDc2LDM3MDc3LDM3MDc4LDM3MDgwLDM3MDgxLDM3MDgyLDM3MDg2LDM3MDg3LDM3MDg4LDM3MDkxLDM3MDkyLDM3MDkzLDM3MDk3LDM3MDk4LDM3MTAwLDM3MTAyLDM3MTA0LDM3MTA1LDM3MTA2LDM3MTA3LDM3MTA5LDM3MTEwLDM3MTExLDM3MTEzLDM3MTE0LDM3MTE1LDM3MTE2LDM3MTE5LDM3MTIwLDM3MTIxLDM3MTIzLDM3MTI1LDM3MTI2LDM3MTI3LDM3MTI4LDM3MTI5LDM3MTMwLDM3MTMxLDM3MTMyLDM3MTMzLDM3MTM0LDM3MTM1LDM3MTM2LDM3MTM3LDM3MTM4LDM3MTM5LDM3MTQwLDM3MTQxLDM3MTQyLDM3MTQzLDM3MTQ0LDM3MTQ2LDM3MTQ3LDM3MTQ4LDM3MTQ5LDM3MTUxLDM3MTUyLDM3MTUzLDM3MTU2LDM3MTU3LDM3MTU4LDM3MTU5LDM3MTYwLDM3MTYxLDM3MTYyLDM3MTYzLDM3MTY0LDM3MTY1LDM3MTY2LDM3MTY4LDM3MTcwLDM3MTcxLDM3MTcyLDM3MTczLDM3MTc0LDM3MTc1LDM3MTc2LDM3MTc4LDM3MTc5LDM3MTgwLDM3MTgxLDM3MTgyLDM3MTgzLDM3MTg0LDM3MTg1LDM3MTg2LDM3MTg4LDIxODE1LDIxODQ2LDIxODc3LDIxODc4LDIxODc5LDIxODExLDIxODA4LDIxODUyLDIxODk5LDIxOTcwLDIxODkxLDIxOTM3LDIxOTQ1LDIxODk2LDIxODg5LDIxOTE5LDIxODg2LDIxOTc0LDIxOTA1LDIxODgzLDIxOTgzLDIxOTQ5LDIxOTUwLDIxOTA4LDIxOTEzLDIxOTk0LDIyMDA3LDIxOTYxLDIyMDQ3LDIxOTY5LDIxOTk1LDIxOTk2LDIxOTcyLDIxOTkwLDIxOTgxLDIxOTU2LDIxOTk5LDIxOTg5LDIyMDAyLDIyMDAzLDIxOTY0LDIxOTY1LDIxOTkyLDIyMDA1LDIxOTg4LDM2NzU2LDIyMDQ2LDIyMDI0LDIyMDI4LDIyMDE3LDIyMDUyLDIyMDUxLDIyMDE0LDIyMDE2LDIyMDU1LDIyMDYxLDIyMTA0LDIyMDczLDIyMTAzLDIyMDYwLDIyMDkzLDIyMTE0LDIyMTA1LDIyMTA4LDIyMDkyLDIyMTAwLDIyMTUwLDIyMTE2LDIyMTI5LDIyMTIzLDIyMTM5LDIyMTQwLDIyMTQ5LDIyMTYzLDIyMTkxLDIyMjI4LDIyMjMxLDIyMjM3LDIyMjQxLDIyMjYxLDIyMjUxLDIyMjY1LDIyMjcxLDIyMjc2LDIyMjgyLDIyMjgxLDIyMzAwLDI0MDc5LDI0MDg5LDI0MDg0LDI0MDgxLDI0MTEzLDI0MTIzLDI0MTI0LDM3MTg5LDM3MTkxLDM3MTkyLDM3MjAxLDM3MjAzLDM3MjA0LDM3MjA1LDM3MjA2LDM3MjA4LDM3MjA5LDM3MjExLDM3MjEyLDM3MjE1LDM3MjE2LDM3MjIyLDM3MjIzLDM3MjI0LDM3MjI3LDM3MjI5LDM3MjM1LDM3MjQyLDM3MjQzLDM3MjQ0LDM3MjQ4LDM3MjQ5LDM3MjUwLDM3MjUxLDM3MjUyLDM3MjU0LDM3MjU2LDM3MjU4LDM3MjYyLDM3MjYzLDM3MjY3LDM3MjY4LDM3MjY5LDM3MjcwLDM3MjcxLDM3MjcyLDM3MjczLDM3Mjc2LDM3Mjc3LDM3Mjc4LDM3Mjc5LDM3MjgwLDM3MjgxLDM3Mjg0LDM3Mjg1LDM3Mjg2LDM3Mjg3LDM3Mjg4LDM3Mjg5LDM3MjkxLDM3MjkyLDM3Mjk2LDM3Mjk3LDM3Mjk4LDM3Mjk5LDM3MzAyLDM3MzAzLDM3MzA0LDM3MzA1LDM3MzA3LDM3MzA4LDM3MzA5LDM3MzEwLDM3MzExLDM3MzEyLDM3MzEzLDM3MzE0LDM3MzE1LDM3MzE2LDM3MzE3LDM3MzE4LDM3MzIwLDM3MzIzLDM3MzI4LDM3MzMwLDM3MzMxLDM3MzMyLDM3MzMzLDM3MzM0LDM3MzM1LDM3MzM2LDM3MzM3LDM3MzM4LDM3MzM5LDM3MzQxLDM3MzQyLDM3MzQzLDM3MzQ0LDM3MzQ1LDM3MzQ2LDM3MzQ3LDM3MzQ4LDM3MzQ5LDI0MTE5LDI0MTMyLDI0MTQ4LDI0MTU1LDI0MTU4LDI0MTYxLDIzNjkyLDIzNjc0LDIzNjkzLDIzNjk2LDIzNzAyLDIzNjg4LDIzNzA0LDIzNzA1LDIzNjk3LDIzNzA2LDIzNzA4LDIzNzMzLDIzNzE0LDIzNzQxLDIzNzI0LDIzNzIzLDIzNzI5LDIzNzE1LDIzNzQ1LDIzNzM1LDIzNzQ4LDIzNzYyLDIzNzgwLDIzNzU1LDIzNzgxLDIzODEwLDIzODExLDIzODQ3LDIzODQ2LDIzODU0LDIzODQ0LDIzODM4LDIzODE0LDIzODM1LDIzODk2LDIzODcwLDIzODYwLDIzODY5LDIzOTE2LDIzODk5LDIzOTE5LDIzOTAxLDIzOTE1LDIzODgzLDIzODgyLDIzOTEzLDIzOTI0LDIzOTM4LDIzOTYxLDIzOTY1LDM1OTU1LDIzOTkxLDI0MDA1LDI0NDM1LDI0NDM5LDI0NDUwLDI0NDU1LDI0NDU3LDI0NDYwLDI0NDY5LDI0NDczLDI0NDc2LDI0NDg4LDI0NDkzLDI0NTAxLDI0NTA4LDM0OTE0LDI0NDE3LDI5MzU3LDI5MzYwLDI5MzY0LDI5MzY3LDI5MzY4LDI5Mzc5LDI5Mzc3LDI5MzkwLDI5Mzg5LDI5Mzk0LDI5NDE2LDI5NDIzLDI5NDE3LDI5NDI2LDI5NDI4LDI5NDMxLDI5NDQxLDI5NDI3LDI5NDQzLDI5NDM0LDM3MzUwLDM3MzUxLDM3MzUyLDM3MzUzLDM3MzU0LDM3MzU1LDM3MzU2LDM3MzU3LDM3MzU4LDM3MzU5LDM3MzYwLDM3MzYxLDM3MzYyLDM3MzYzLDM3MzY0LDM3MzY1LDM3MzY2LDM3MzY3LDM3MzY4LDM3MzY5LDM3MzcwLDM3MzcxLDM3MzcyLDM3MzczLDM3Mzc0LDM3Mzc1LDM3Mzc2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzg3LDM3Mzg4LDM3Mzg5LDM3MzkwLDM3MzkxLDM3MzkyLDM3MzkzLDM3Mzk0LDM3Mzk1LDM3Mzk2LDM3Mzk3LDM3Mzk4LDM3Mzk5LDM3NDAwLDM3NDAxLDM3NDAyLDM3NDAzLDM3NDA0LDM3NDA1LDM3NDA2LDM3NDA3LDM3NDA4LDM3NDA5LDM3NDEwLDM3NDExLDM3NDEyLDM3NDEzLDM3NDE0LDM3NDE1LDM3NDE2LDM3NDE3LDM3NDE4LDM3NDE5LDM3NDIwLDM3NDIxLDM3NDIyLDM3NDIzLDM3NDI0LDM3NDI1LDM3NDI2LDM3NDI3LDM3NDI4LDM3NDI5LDM3NDMwLDM3NDMxLDM3NDMyLDM3NDMzLDM3NDM0LDM3NDM1LDM3NDM2LDM3NDM3LDM3NDM4LDM3NDM5LDM3NDQwLDM3NDQxLDM3NDQyLDM3NDQzLDM3NDQ0LDM3NDQ1LDI5NDM1LDI5NDYzLDI5NDU5LDI5NDczLDI5NDUwLDI5NDcwLDI5NDY5LDI5NDYxLDI5NDc0LDI5NDk3LDI5NDc3LDI5NDg0LDI5NDk2LDI5NDg5LDI5NTIwLDI5NTE3LDI5NTI3LDI5NTM2LDI5NTQ4LDI5NTUxLDI5NTY2LDMzMzA3LDIyODIxLDM5MTQzLDIyODIwLDIyNzg2LDM5MjY3LDM5MjcxLDM5MjcyLDM5MjczLDM5Mjc0LDM5Mjc1LDM5Mjc2LDM5Mjg0LDM5Mjg3LDM5MjkzLDM5Mjk2LDM5MzAwLDM5MzAzLDM5MzA2LDM5MzA5LDM5MzEyLDM5MzEzLDM5MzE1LDM5MzE2LDM5MzE3LDI0MTkyLDI0MjA5LDI0MjAzLDI0MjE0LDI0MjI5LDI0MjI0LDI0MjQ5LDI0MjQ1LDI0MjU0LDI0MjQzLDM2MTc5LDI0Mjc0LDI0MjczLDI0MjgzLDI0Mjk2LDI0Mjk4LDMzMjEwLDI0NTE2LDI0NTIxLDI0NTM0LDI0NTI3LDI0NTc5LDI0NTU4LDI0NTgwLDI0NTQ1LDI0NTQ4LDI0NTc0LDI0NTgxLDI0NTgyLDI0NTU0LDI0NTU3LDI0NTY4LDI0NjAxLDI0NjI5LDI0NjE0LDI0NjAzLDI0NTkxLDI0NTg5LDI0NjE3LDI0NjE5LDI0NTg2LDI0NjM5LDI0NjA5LDI0Njk2LDI0Njk3LDI0Njk5LDI0Njk4LDI0NjQyLDM3NDQ2LDM3NDQ3LDM3NDQ4LDM3NDQ5LDM3NDUwLDM3NDUxLDM3NDUyLDM3NDUzLDM3NDU0LDM3NDU1LDM3NDU2LDM3NDU3LDM3NDU4LDM3NDU5LDM3NDYwLDM3NDYxLDM3NDYyLDM3NDYzLDM3NDY0LDM3NDY1LDM3NDY2LDM3NDY3LDM3NDY4LDM3NDY5LDM3NDcwLDM3NDcxLDM3NDcyLDM3NDczLDM3NDc0LDM3NDc1LDM3NDc2LDM3NDc3LDM3NDc4LDM3NDc5LDM3NDgwLDM3NDgxLDM3NDgyLDM3NDgzLDM3NDg0LDM3NDg1LDM3NDg2LDM3NDg3LDM3NDg4LDM3NDg5LDM3NDkwLDM3NDkxLDM3NDkzLDM3NDk0LDM3NDk1LDM3NDk2LDM3NDk3LDM3NDk4LDM3NDk5LDM3NTAwLDM3NTAxLDM3NTAyLDM3NTAzLDM3NTA0LDM3NTA1LDM3NTA2LDM3NTA3LDM3NTA4LDM3NTA5LDM3NTEwLDM3NTExLDM3NTEyLDM3NTEzLDM3NTE0LDM3NTE1LDM3NTE2LDM3NTE3LDM3NTE5LDM3NTIwLDM3NTIxLDM3NTIyLDM3NTIzLDM3NTI0LDM3NTI1LDM3NTI2LDM3NTI3LDM3NTI4LDM3NTI5LDM3NTMwLDM3NTMxLDM3NTMyLDM3NTMzLDM3NTM0LDM3NTM1LDM3NTM2LDM3NTM3LDM3NTM4LDM3NTM5LDM3NTQwLDM3NTQxLDM3NTQyLDM3NTQzLDI0NjgyLDI0NzAxLDI0NzI2LDI0NzMwLDI0NzQ5LDI0NzMzLDI0NzA3LDI0NzIyLDI0NzE2LDI0NzMxLDI0ODEyLDI0NzYzLDI0NzUzLDI0Nzk3LDI0NzkyLDI0Nzc0LDI0Nzk0LDI0NzU2LDI0ODY0LDI0ODcwLDI0ODUzLDI0ODY3LDI0ODIwLDI0ODMyLDI0ODQ2LDI0ODc1LDI0OTA2LDI0OTQ5LDI1MDA0LDI0OTgwLDI0OTk5LDI1MDE1LDI1MDQ0LDI1MDc3LDI0NTQxLDM4NTc5LDM4Mzc3LDM4Mzc5LDM4Mzg1LDM4Mzg3LDM4Mzg5LDM4MzkwLDM4Mzk2LDM4Mzk4LDM4NDAzLDM4NDA0LDM4NDA2LDM4NDA4LDM4NDEwLDM4NDExLDM4NDEyLDM4NDEzLDM4NDE1LDM4NDE4LDM4NDIxLDM4NDIyLDM4NDIzLDM4NDI1LDM4NDI2LDIwMDEyLDI5MjQ3LDI1MTA5LDI3NzAxLDI3NzMyLDI3NzQwLDI3NzIyLDI3ODExLDI3NzgxLDI3NzkyLDI3Nzk2LDI3Nzg4LDI3NzUyLDI3NzUzLDI3NzY0LDI3NzY2LDI3NzgyLDI3ODE3LDI3ODU2LDI3ODYwLDI3ODIxLDI3ODk1LDI3ODk2LDI3ODg5LDI3ODYzLDI3ODI2LDI3ODcyLDI3ODYyLDI3ODk4LDI3ODgzLDI3ODg2LDI3ODI1LDI3ODU5LDI3ODg3LDI3OTAyLDM3NTQ0LDM3NTQ1LDM3NTQ2LDM3NTQ3LDM3NTQ4LDM3NTQ5LDM3NTUxLDM3NTUyLDM3NTUzLDM3NTU0LDM3NTU1LDM3NTU2LDM3NTU3LDM3NTU4LDM3NTU5LDM3NTYwLDM3NTYxLDM3NTYyLDM3NTYzLDM3NTY0LDM3NTY1LDM3NTY2LDM3NTY3LDM3NTY4LDM3NTY5LDM3NTcwLDM3NTcxLDM3NTcyLDM3NTczLDM3NTc0LDM3NTc1LDM3NTc3LDM3NTc4LDM3NTc5LDM3NTgwLDM3NTgxLDM3NTgyLDM3NTgzLDM3NTg0LDM3NTg1LDM3NTg2LDM3NTg3LDM3NTg4LDM3NTg5LDM3NTkwLDM3NTkxLDM3NTkyLDM3NTkzLDM3NTk0LDM3NTk1LDM3NTk2LDM3NTk3LDM3NTk4LDM3NTk5LDM3NjAwLDM3NjAxLDM3NjAyLDM3NjAzLDM3NjA0LDM3NjA1LDM3NjA2LDM3NjA3LDM3NjA4LDM3NjA5LDM3NjEwLDM3NjExLDM3NjEyLDM3NjEzLDM3NjE0LDM3NjE1LDM3NjE2LDM3NjE3LDM3NjE4LDM3NjE5LDM3NjIwLDM3NjIxLDM3NjIyLDM3NjIzLDM3NjI0LDM3NjI1LDM3NjI2LDM3NjI3LDM3NjI4LDM3NjI5LDM3NjMwLDM3NjMxLDM3NjMyLDM3NjMzLDM3NjM0LDM3NjM1LDM3NjM2LDM3NjM3LDM3NjM4LDM3NjM5LDM3NjQwLDM3NjQxLDI3OTYxLDI3OTQzLDI3OTE2LDI3OTcxLDI3OTc2LDI3OTExLDI3OTA4LDI3OTI5LDI3OTE4LDI3OTQ3LDI3OTgxLDI3OTUwLDI3OTU3LDI3OTMwLDI3OTgzLDI3OTg2LDI3OTg4LDI3OTU1LDI4MDQ5LDI4MDE1LDI4MDYyLDI4MDY0LDI3OTk4LDI4MDUxLDI4MDUyLDI3OTk2LDI4MDAwLDI4MDI4LDI4MDAzLDI4MTg2LDI4MTAzLDI4MTAxLDI4MTI2LDI4MTc0LDI4MDk1LDI4MTI4LDI4MTc3LDI4MTM0LDI4MTI1LDI4MTIxLDI4MTgyLDI4MDc1LDI4MTcyLDI4MDc4LDI4MjAzLDI4MjcwLDI4MjM4LDI4MjY3LDI4MzM4LDI4MjU1LDI4Mjk0LDI4MjQzLDI4MjQ0LDI4MjEwLDI4MTk3LDI4MjI4LDI4MzgzLDI4MzM3LDI4MzEyLDI4Mzg0LDI4NDYxLDI4Mzg2LDI4MzI1LDI4MzI3LDI4MzQ5LDI4MzQ3LDI4MzQzLDI4Mzc1LDI4MzQwLDI4MzY3LDI4MzAzLDI4MzU0LDI4MzE5LDI4NTE0LDI4NDg2LDI4NDg3LDI4NDUyLDI4NDM3LDI4NDA5LDI4NDYzLDI4NDcwLDI4NDkxLDI4NTMyLDI4NDU4LDI4NDI1LDI4NDU3LDI4NTUzLDI4NTU3LDI4NTU2LDI4NTM2LDI4NTMwLDI4NTQwLDI4NTM4LDI4NjI1LDM3NjQyLDM3NjQzLDM3NjQ0LDM3NjQ1LDM3NjQ2LDM3NjQ3LDM3NjQ4LDM3NjQ5LDM3NjUwLDM3NjUxLDM3NjUyLDM3NjUzLDM3NjU0LDM3NjU1LDM3NjU2LDM3NjU3LDM3NjU4LDM3NjU5LDM3NjYwLDM3NjYxLDM3NjYyLDM3NjYzLDM3NjY0LDM3NjY1LDM3NjY2LDM3NjY3LDM3NjY4LDM3NjY5LDM3NjcwLDM3NjcxLDM3NjcyLDM3NjczLDM3Njc0LDM3Njc1LDM3Njc2LDM3Njc3LDM3Njc4LDM3Njc5LDM3NjgwLDM3NjgxLDM3NjgyLDM3NjgzLDM3Njg0LDM3Njg1LDM3Njg2LDM3Njg3LDM3Njg4LDM3Njg5LDM3NjkwLDM3NjkxLDM3NjkyLDM3NjkzLDM3Njk1LDM3Njk2LDM3Njk3LDM3Njk4LDM3Njk5LDM3NzAwLDM3NzAxLDM3NzAyLDM3NzAzLDM3NzA0LDM3NzA1LDM3NzA2LDM3NzA3LDM3NzA4LDM3NzA5LDM3NzEwLDM3NzExLDM3NzEyLDM3NzEzLDM3NzE0LDM3NzE1LDM3NzE2LDM3NzE3LDM3NzE4LDM3NzE5LDM3NzIwLDM3NzIxLDM3NzIyLDM3NzIzLDM3NzI0LDM3NzI1LDM3NzI2LDM3NzI3LDM3NzI4LDM3NzI5LDM3NzMwLDM3NzMxLDM3NzMyLDM3NzMzLDM3NzM0LDM3NzM1LDM3NzM2LDM3NzM3LDM3NzM5LDI4NjE3LDI4NTgzLDI4NjAxLDI4NTk4LDI4NjEwLDI4NjQxLDI4NjU0LDI4NjM4LDI4NjQwLDI4NjU1LDI4Njk4LDI4NzA3LDI4Njk5LDI4NzI5LDI4NzI1LDI4NzUxLDI4NzY2LDIzNDI0LDIzNDI4LDIzNDQ1LDIzNDQzLDIzNDYxLDIzNDgwLDI5OTk5LDM5NTgyLDI1NjUyLDIzNTI0LDIzNTM0LDM1MTIwLDIzNTM2LDM2NDIzLDM1NTkxLDM2NzkwLDM2ODE5LDM2ODIxLDM2ODM3LDM2ODQ2LDM2ODM2LDM2ODQxLDM2ODM4LDM2ODUxLDM2ODQwLDM2ODY5LDM2ODY4LDM2ODc1LDM2OTAyLDM2ODgxLDM2ODc3LDM2ODg2LDM2ODk3LDM2OTE3LDM2OTE4LDM2OTA5LDM2OTExLDM2OTMyLDM2OTQ1LDM2OTQ2LDM2OTQ0LDM2OTY4LDM2OTUyLDM2OTYyLDM2OTU1LDI2Mjk3LDM2OTgwLDM2OTg5LDM2OTk0LDM3MDAwLDM2OTk1LDM3MDAzLDI0NDAwLDI0NDA3LDI0NDA2LDI0NDA4LDIzNjExLDIxNjc1LDIzNjMyLDIzNjQxLDIzNDA5LDIzNjUxLDIzNjU0LDMyNzAwLDI0MzYyLDI0MzYxLDI0MzY1LDMzMzk2LDI0MzgwLDM5NzM5LDIzNjYyLDIyOTEzLDIyOTE1LDIyOTI1LDIyOTUzLDIyOTU0LDIyOTQ3LDM3NzQwLDM3NzQxLDM3NzQyLDM3NzQzLDM3NzQ0LDM3NzQ1LDM3NzQ2LDM3NzQ3LDM3NzQ4LDM3NzQ5LDM3NzUwLDM3NzUxLDM3NzUyLDM3NzUzLDM3NzU0LDM3NzU1LDM3NzU2LDM3NzU3LDM3NzU4LDM3NzU5LDM3NzYwLDM3NzYxLDM3NzYyLDM3NzYzLDM3NzY0LDM3NzY1LDM3NzY2LDM3NzY3LDM3NzY4LDM3NzY5LDM3NzcwLDM3NzcxLDM3NzcyLDM3NzczLDM3Nzc0LDM3Nzc2LDM3Nzc3LDM3Nzc4LDM3Nzc5LDM3NzgwLDM3NzgxLDM3NzgyLDM3NzgzLDM3Nzg0LDM3Nzg1LDM3Nzg2LDM3Nzg3LDM3Nzg4LDM3Nzg5LDM3NzkwLDM3NzkxLDM3NzkyLDM3NzkzLDM3Nzk0LDM3Nzk1LDM3Nzk2LDM3Nzk3LDM3Nzk4LDM3Nzk5LDM3ODAwLDM3ODAxLDM3ODAyLDM3ODAzLDM3ODA0LDM3ODA1LDM3ODA2LDM3ODA3LDM3ODA4LDM3ODA5LDM3ODEwLDM3ODExLDM3ODEyLDM3ODEzLDM3ODE0LDM3ODE1LDM3ODE2LDM3ODE3LDM3ODE4LDM3ODE5LDM3ODIwLDM3ODIxLDM3ODIyLDM3ODIzLDM3ODI0LDM3ODI1LDM3ODI2LDM3ODI3LDM3ODI4LDM3ODI5LDM3ODMwLDM3ODMxLDM3ODMyLDM3ODMzLDM3ODM1LDM3ODM2LDM3ODM3LDIyOTM1LDIyOTg2LDIyOTU1LDIyOTQyLDIyOTQ4LDIyOTk0LDIyOTYyLDIyOTU5LDIyOTk5LDIyOTc0LDIzMDQ1LDIzMDQ2LDIzMDA1LDIzMDQ4LDIzMDExLDIzMDAwLDIzMDMzLDIzMDUyLDIzMDQ5LDIzMDkwLDIzMDkyLDIzMDU3LDIzMDc1LDIzMDU5LDIzMTA0LDIzMTQzLDIzMTE0LDIzMTI1LDIzMTAwLDIzMTM4LDIzMTU3LDMzMDA0LDIzMjEwLDIzMTk1LDIzMTU5LDIzMTYyLDIzMjMwLDIzMjc1LDIzMjE4LDIzMjUwLDIzMjUyLDIzMjI0LDIzMjY0LDIzMjY3LDIzMjgxLDIzMjU0LDIzMjcwLDIzMjU2LDIzMjYwLDIzMzA1LDIzMzE5LDIzMzE4LDIzMzQ2LDIzMzUxLDIzMzYwLDIzNTczLDIzNTgwLDIzMzg2LDIzMzk3LDIzNDExLDIzMzc3LDIzMzc5LDIzMzk0LDM5NTQxLDM5NTQzLDM5NTQ0LDM5NTQ2LDM5NTUxLDM5NTQ5LDM5NTUyLDM5NTUzLDM5NTU3LDM5NTYwLDM5NTYyLDM5NTY4LDM5NTcwLDM5NTcxLDM5NTc0LDM5NTc2LDM5NTc5LDM5NTgwLDM5NTgxLDM5NTgzLDM5NTg0LDM5NTg2LDM5NTg3LDM5NTg5LDM5NTkxLDMyNDE1LDMyNDE3LDMyNDE5LDMyNDIxLDMyNDI0LDMyNDI1LDM3ODM4LDM3ODM5LDM3ODQwLDM3ODQxLDM3ODQyLDM3ODQzLDM3ODQ0LDM3ODQ1LDM3ODQ3LDM3ODQ4LDM3ODQ5LDM3ODUwLDM3ODUxLDM3ODUyLDM3ODUzLDM3ODU0LDM3ODU1LDM3ODU2LDM3ODU3LDM3ODU4LDM3ODU5LDM3ODYwLDM3ODYxLDM3ODYyLDM3ODYzLDM3ODY0LDM3ODY1LDM3ODY2LDM3ODY3LDM3ODY4LDM3ODY5LDM3ODcwLDM3ODcxLDM3ODcyLDM3ODczLDM3ODc0LDM3ODc1LDM3ODc2LDM3ODc3LDM3ODc4LDM3ODc5LDM3ODgwLDM3ODgxLDM3ODgyLDM3ODgzLDM3ODg0LDM3ODg1LDM3ODg2LDM3ODg3LDM3ODg4LDM3ODg5LDM3ODkwLDM3ODkxLDM3ODkyLDM3ODkzLDM3ODk0LDM3ODk1LDM3ODk2LDM3ODk3LDM3ODk4LDM3ODk5LDM3OTAwLDM3OTAxLDM3OTAyLDM3OTAzLDM3OTA0LDM3OTA1LDM3OTA2LDM3OTA3LDM3OTA4LDM3OTA5LDM3OTEwLDM3OTExLDM3OTEyLDM3OTEzLDM3OTE0LDM3OTE1LDM3OTE2LDM3OTE3LDM3OTE4LDM3OTE5LDM3OTIwLDM3OTIxLDM3OTIyLDM3OTIzLDM3OTI0LDM3OTI1LDM3OTI2LDM3OTI3LDM3OTI4LDM3OTI5LDM3OTMwLDM3OTMxLDM3OTMyLDM3OTMzLDM3OTM0LDMyNDI5LDMyNDMyLDMyNDQ2LDMyNDQ4LDMyNDQ5LDMyNDUwLDMyNDU3LDMyNDU5LDMyNDYwLDMyNDY0LDMyNDY4LDMyNDcxLDMyNDc1LDMyNDgwLDMyNDgxLDMyNDg4LDMyNDkxLDMyNDk0LDMyNDk1LDMyNDk3LDMyNDk4LDMyNTI1LDMyNTAyLDMyNTA2LDMyNTA3LDMyNTEwLDMyNTEzLDMyNTE0LDMyNTE1LDMyNTE5LDMyNTIwLDMyNTIzLDMyNTI0LDMyNTI3LDMyNTI5LDMyNTMwLDMyNTM1LDMyNTM3LDMyNTQwLDMyNTM5LDMyNTQzLDMyNTQ1LDMyNTQ2LDMyNTQ3LDMyNTQ4LDMyNTQ5LDMyNTUwLDMyNTUxLDMyNTU0LDMyNTU1LDMyNTU2LDMyNTU3LDMyNTU5LDMyNTYwLDMyNTYxLDMyNTYyLDMyNTYzLDMyNTY1LDI0MTg2LDMwMDc5LDI0MDI3LDMwMDE0LDM3MDEzLDI5NTgyLDI5NTg1LDI5NjE0LDI5NjAyLDI5NTk5LDI5NjQ3LDI5NjM0LDI5NjQ5LDI5NjIzLDI5NjE5LDI5NjMyLDI5NjQxLDI5NjQwLDI5NjY5LDI5NjU3LDM5MDM2LDI5NzA2LDI5NjczLDI5NjcxLDI5NjYyLDI5NjI2LDI5NjgyLDI5NzExLDI5NzM4LDI5Nzg3LDI5NzM0LDI5NzMzLDI5NzM2LDI5NzQ0LDI5NzQyLDI5NzQwLDM3OTM1LDM3OTM2LDM3OTM3LDM3OTM4LDM3OTM5LDM3OTQwLDM3OTQxLDM3OTQyLDM3OTQzLDM3OTQ0LDM3OTQ1LDM3OTQ2LDM3OTQ3LDM3OTQ4LDM3OTQ5LDM3OTUxLDM3OTUyLDM3OTUzLDM3OTU0LDM3OTU1LDM3OTU2LDM3OTU3LDM3OTU4LDM3OTU5LDM3OTYwLDM3OTYxLDM3OTYyLDM3OTYzLDM3OTY0LDM3OTY1LDM3OTY2LDM3OTY3LDM3OTY4LDM3OTY5LDM3OTcwLDM3OTcxLDM3OTcyLDM3OTczLDM3OTc0LDM3OTc1LDM3OTc2LDM3OTc3LDM3OTc4LDM3OTc5LDM3OTgwLDM3OTgxLDM3OTgyLDM3OTgzLDM3OTg0LDM3OTg1LDM3OTg2LDM3OTg3LDM3OTg4LDM3OTg5LDM3OTkwLDM3OTkxLDM3OTkyLDM3OTkzLDM3OTk0LDM3OTk2LDM3OTk3LDM3OTk4LDM3OTk5LDM4MDAwLDM4MDAxLDM4MDAyLDM4MDAzLDM4MDA0LDM4MDA1LDM4MDA2LDM4MDA3LDM4MDA4LDM4MDA5LDM4MDEwLDM4MDExLDM4MDEyLDM4MDEzLDM4MDE0LDM4MDE1LDM4MDE2LDM4MDE3LDM4MDE4LDM4MDE5LDM4MDIwLDM4MDMzLDM4MDM4LDM4MDQwLDM4MDg3LDM4MDk1LDM4MDk5LDM4MTAwLDM4MTA2LDM4MTE4LDM4MTM5LDM4MTcyLDM4MTc2LDI5NzIzLDI5NzIyLDI5NzYxLDI5Nzg4LDI5NzgzLDI5NzgxLDI5Nzg1LDI5ODE1LDI5ODA1LDI5ODIyLDI5ODUyLDI5ODM4LDI5ODI0LDI5ODI1LDI5ODMxLDI5ODM1LDI5ODU0LDI5ODY0LDI5ODY1LDI5ODQwLDI5ODYzLDI5OTA2LDI5ODgyLDM4ODkwLDM4ODkxLDM4ODkyLDI2NDQ0LDI2NDUxLDI2NDYyLDI2NDQwLDI2NDczLDI2NTMzLDI2NTAzLDI2NDc0LDI2NDgzLDI2NTIwLDI2NTM1LDI2NDg1LDI2NTM2LDI2NTI2LDI2NTQxLDI2NTA3LDI2NDg3LDI2NDkyLDI2NjA4LDI2NjMzLDI2NTg0LDI2NjM0LDI2NjAxLDI2NTQ0LDI2NjM2LDI2NTg1LDI2NTQ5LDI2NTg2LDI2NTQ3LDI2NTg5LDI2NjI0LDI2NTYzLDI2NTUyLDI2NTk0LDI2NjM4LDI2NTYxLDI2NjIxLDI2Njc0LDI2Njc1LDI2NzIwLDI2NzIxLDI2NzAyLDI2NzIyLDI2NjkyLDI2NzI0LDI2NzU1LDI2NjUzLDI2NzA5LDI2NzI2LDI2Njg5LDI2NzI3LDI2Njg4LDI2Njg2LDI2Njk4LDI2Njk3LDI2NjY1LDI2ODA1LDI2NzY3LDI2NzQwLDI2NzQzLDI2NzcxLDI2NzMxLDI2ODE4LDI2OTkwLDI2ODc2LDI2OTExLDI2OTEyLDI2ODczLDM4MTgzLDM4MTk1LDM4MjA1LDM4MjExLDM4MjE2LDM4MjE5LDM4MjI5LDM4MjM0LDM4MjQwLDM4MjU0LDM4MjYwLDM4MjYxLDM4MjYzLDM4MjY0LDM4MjY1LDM4MjY2LDM4MjY3LDM4MjY4LDM4MjY5LDM4MjcwLDM4MjcyLDM4MjczLDM4Mjc0LDM4Mjc1LDM4Mjc2LDM4Mjc3LDM4Mjc4LDM4Mjc5LDM4MjgwLDM4MjgxLDM4MjgyLDM4MjgzLDM4Mjg0LDM4Mjg1LDM4Mjg2LDM4Mjg3LDM4Mjg4LDM4Mjg5LDM4MjkwLDM4MjkxLDM4MjkyLDM4MjkzLDM4Mjk0LDM4Mjk1LDM4Mjk2LDM4Mjk3LDM4Mjk4LDM4Mjk5LDM4MzAwLDM4MzAxLDM4MzAyLDM4MzAzLDM4MzA0LDM4MzA1LDM4MzA2LDM4MzA3LDM4MzA4LDM4MzA5LDM4MzEwLDM4MzExLDM4MzEyLDM4MzEzLDM4MzE0LDM4MzE1LDM4MzE2LDM4MzE3LDM4MzE4LDM4MzE5LDM4MzIwLDM4MzIxLDM4MzIyLDM4MzIzLDM4MzI0LDM4MzI1LDM4MzI2LDM4MzI3LDM4MzI4LDM4MzI5LDM4MzMwLDM4MzMxLDM4MzMyLDM4MzMzLDM4MzM0LDM4MzM1LDM4MzM2LDM4MzM3LDM4MzM4LDM4MzM5LDM4MzQwLDM4MzQxLDM4MzQyLDM4MzQzLDM4MzQ0LDM4MzQ1LDM4MzQ2LDM4MzQ3LDI2OTE2LDI2ODY0LDI2ODkxLDI2ODgxLDI2OTY3LDI2ODUxLDI2ODk2LDI2OTkzLDI2OTM3LDI2OTc2LDI2OTQ2LDI2OTczLDI3MDEyLDI2OTg3LDI3MDA4LDI3MDMyLDI3MDAwLDI2OTMyLDI3MDg0LDI3MDE1LDI3MDE2LDI3MDg2LDI3MDE3LDI2OTgyLDI2OTc5LDI3MDAxLDI3MDM1LDI3MDQ3LDI3MDY3LDI3MDUxLDI3MDUzLDI3MDkyLDI3MDU3LDI3MDczLDI3MDgyLDI3MTAzLDI3MDI5LDI3MTA0LDI3MDIxLDI3MTM1LDI3MTgzLDI3MTE3LDI3MTU5LDI3MTYwLDI3MjM3LDI3MTIyLDI3MjA0LDI3MTk4LDI3Mjk2LDI3MjE2LDI3MjI3LDI3MTg5LDI3Mjc4LDI3MjU3LDI3MTk3LDI3MTc2LDI3MjI0LDI3MjYwLDI3MjgxLDI3MjgwLDI3MzA1LDI3Mjg3LDI3MzA3LDI5NDk1LDI5NTIyLDI3NTIxLDI3NTIyLDI3NTI3LDI3NTI0LDI3NTM4LDI3NTM5LDI3NTMzLDI3NTQ2LDI3NTQ3LDI3NTUzLDI3NTYyLDM2NzE1LDM2NzE3LDM2NzIxLDM2NzIyLDM2NzIzLDM2NzI1LDM2NzI2LDM2NzI4LDM2NzI3LDM2NzI5LDM2NzMwLDM2NzMyLDM2NzM0LDM2NzM3LDM2NzM4LDM2NzQwLDM2NzQzLDM2NzQ3LDM4MzQ4LDM4MzQ5LDM4MzUwLDM4MzUxLDM4MzUyLDM4MzUzLDM4MzU0LDM4MzU1LDM4MzU2LDM4MzU3LDM4MzU4LDM4MzU5LDM4MzYwLDM4MzYxLDM4MzYyLDM4MzYzLDM4MzY0LDM4MzY1LDM4MzY2LDM4MzY3LDM4MzY4LDM4MzY5LDM4MzcwLDM4MzcxLDM4MzcyLDM4MzczLDM4Mzc0LDM4Mzc1LDM4MzgwLDM4Mzk5LDM4NDA3LDM4NDE5LDM4NDI0LDM4NDI3LDM4NDMwLDM4NDMyLDM4NDM1LDM4NDM2LDM4NDM3LDM4NDM4LDM4NDM5LDM4NDQwLDM4NDQxLDM4NDQzLDM4NDQ0LDM4NDQ1LDM4NDQ3LDM4NDQ4LDM4NDU1LDM4NDU2LDM4NDU3LDM4NDU4LDM4NDYyLDM4NDY1LDM4NDY3LDM4NDc0LDM4NDc4LDM4NDc5LDM4NDgxLDM4NDgyLDM4NDgzLDM4NDg2LDM4NDg3LDM4NDg4LDM4NDg5LDM4NDkwLDM4NDkyLDM4NDkzLDM4NDk0LDM4NDk2LDM4NDk5LDM4NTAxLDM4NTAyLDM4NTA3LDM4NTA5LDM4NTEwLDM4NTExLDM4NTEyLDM4NTEzLDM4NTE1LDM4NTIwLDM4NTIxLDM4NTIyLDM4NTIzLDM4NTI0LDM4NTI1LDM4NTI2LDM4NTI3LDM4NTI4LDM4NTI5LDM4NTMwLDM4NTMxLDM4NTMyLDM4NTM1LDM4NTM3LDM4NTM4LDM2NzQ5LDM2NzUwLDM2NzUxLDM2NzYwLDM2NzYyLDM2NTU4LDI1MDk5LDI1MTExLDI1MTE1LDI1MTE5LDI1MTIyLDI1MTIxLDI1MTI1LDI1MTI0LDI1MTMyLDMzMjU1LDI5OTM1LDI5OTQwLDI5OTUxLDI5OTY3LDI5OTY5LDI5OTcxLDI1OTA4LDI2MDk0LDI2MDk1LDI2MDk2LDI2MTIyLDI2MTM3LDI2NDgyLDI2MTE1LDI2MTMzLDI2MTEyLDI4ODA1LDI2MzU5LDI2MTQxLDI2MTY0LDI2MTYxLDI2MTY2LDI2MTY1LDMyNzc0LDI2MjA3LDI2MTk2LDI2MTc3LDI2MTkxLDI2MTk4LDI2MjA5LDI2MTk5LDI2MjMxLDI2MjQ0LDI2MjUyLDI2Mjc5LDI2MjY5LDI2MzAyLDI2MzMxLDI2MzMyLDI2MzQyLDI2MzQ1LDM2MTQ2LDM2MTQ3LDM2MTUwLDM2MTU1LDM2MTU3LDM2MTYwLDM2MTY1LDM2MTY2LDM2MTY4LDM2MTY5LDM2MTY3LDM2MTczLDM2MTgxLDM2MTg1LDM1MjcxLDM1Mjc0LDM1Mjc1LDM1Mjc2LDM1Mjc4LDM1Mjc5LDM1MjgwLDM1MjgxLDI5Mjk0LDI5MzQzLDI5Mjc3LDI5Mjg2LDI5Mjk1LDI5MzEwLDI5MzExLDI5MzE2LDI5MzIzLDI5MzI1LDI5MzI3LDI5MzMwLDI1MzUyLDI1Mzk0LDI1NTIwLDM4NTQwLDM4NTQyLDM4NTQ1LDM4NTQ2LDM4NTQ3LDM4NTQ5LDM4NTUwLDM4NTU0LDM4NTU1LDM4NTU3LDM4NTU4LDM4NTU5LDM4NTYwLDM4NTYxLDM4NTYyLDM4NTYzLDM4NTY0LDM4NTY1LDM4NTY2LDM4NTY4LDM4NTY5LDM4NTcwLDM4NTcxLDM4NTcyLDM4NTczLDM4NTc0LDM4NTc1LDM4NTc3LDM4NTc4LDM4NTgwLDM4NTgxLDM4NTgzLDM4NTg0LDM4NTg2LDM4NTg3LDM4NTkxLDM4NTk0LDM4NTk1LDM4NjAwLDM4NjAyLDM4NjAzLDM4NjA4LDM4NjA5LDM4NjExLDM4NjEyLDM4NjE0LDM4NjE1LDM4NjE2LDM4NjE3LDM4NjE4LDM4NjE5LDM4NjIwLDM4NjIxLDM4NjIyLDM4NjIzLDM4NjI1LDM4NjI2LDM4NjI3LDM4NjI4LDM4NjI5LDM4NjMwLDM4NjMxLDM4NjM1LDM4NjM2LDM4NjM3LDM4NjM4LDM4NjQwLDM4NjQxLDM4NjQyLDM4NjQ0LDM4NjQ1LDM4NjQ4LDM4NjUwLDM4NjUxLDM4NjUyLDM4NjUzLDM4NjU1LDM4NjU4LDM4NjU5LDM4NjYxLDM4NjY2LDM4NjY3LDM4NjY4LDM4NjcyLDM4NjczLDM4Njc0LDM4Njc2LDM4Njc3LDM4Njc5LDM4NjgwLDM4NjgxLDM4NjgyLDM4NjgzLDM4Njg1LDM4Njg3LDM4Njg4LDI1NjYzLDI1ODE2LDMyNzcyLDI3NjI2LDI3NjM1LDI3NjQ1LDI3NjM3LDI3NjQxLDI3NjUzLDI3NjU1LDI3NjU0LDI3NjYxLDI3NjY5LDI3NjcyLDI3NjczLDI3Njc0LDI3NjgxLDI3Njg5LDI3Njg0LDI3NjkwLDI3Njk4LDI1OTA5LDI1OTQxLDI1OTYzLDI5MjYxLDI5MjY2LDI5MjcwLDI5MjMyLDM0NDAyLDIxMDE0LDMyOTI3LDMyOTI0LDMyOTE1LDMyOTU2LDI2Mzc4LDMyOTU3LDMyOTQ1LDMyOTM5LDMyOTQxLDMyOTQ4LDMyOTUxLDMyOTk5LDMzMDAwLDMzMDAxLDMzMDAyLDMyOTg3LDMyOTYyLDMyOTY0LDMyOTg1LDMyOTczLDMyOTgzLDI2Mzg0LDMyOTg5LDMzMDAzLDMzMDA5LDMzMDEyLDMzMDA1LDMzMDM3LDMzMDM4LDMzMDEwLDMzMDIwLDI2Mzg5LDMzMDQyLDM1OTMwLDMzMDc4LDMzMDU0LDMzMDY4LDMzMDQ4LDMzMDc0LDMzMDk2LDMzMTAwLDMzMTA3LDMzMTQwLDMzMTEzLDMzMTE0LDMzMTM3LDMzMTIwLDMzMTI5LDMzMTQ4LDMzMTQ5LDMzMTMzLDMzMTI3LDIyNjA1LDIzMjIxLDMzMTYwLDMzMTU0LDMzMTY5LDI4MzczLDMzMTg3LDMzMTk0LDMzMjI4LDI2NDA2LDMzMjI2LDMzMjExLDM4Njg5LDM4NjkwLDM4NjkxLDM4NjkyLDM4NjkzLDM4Njk0LDM4Njk1LDM4Njk2LDM4Njk3LDM4Njk5LDM4NzAwLDM4NzAyLDM4NzAzLDM4NzA1LDM4NzA3LDM4NzA4LDM4NzA5LDM4NzEwLDM4NzExLDM4NzE0LDM4NzE1LDM4NzE2LDM4NzE3LDM4NzE5LDM4NzIwLDM4NzIxLDM4NzIyLDM4NzIzLDM4NzI0LDM4NzI1LDM4NzI2LDM4NzI3LDM4NzI4LDM4NzI5LDM4NzMwLDM4NzMxLDM4NzMyLDM4NzMzLDM4NzM0LDM4NzM1LDM4NzM2LDM4NzM3LDM4NzQwLDM4NzQxLDM4NzQzLDM4NzQ0LDM4NzQ2LDM4NzQ4LDM4NzQ5LDM4NzUxLDM4NzU1LDM4NzU2LDM4NzU4LDM4NzU5LDM4NzYwLDM4NzYyLDM4NzYzLDM4NzY0LDM4NzY1LDM4NzY2LDM4NzY3LDM4NzY4LDM4NzY5LDM4NzcwLDM4NzczLDM4Nzc1LDM4Nzc2LDM4Nzc3LDM4Nzc4LDM4Nzc5LDM4NzgxLDM4NzgyLDM4NzgzLDM4Nzg0LDM4Nzg1LDM4Nzg2LDM4Nzg3LDM4Nzg4LDM4NzkwLDM4NzkxLDM4NzkyLDM4NzkzLDM4Nzk0LDM4Nzk2LDM4Nzk4LDM4Nzk5LDM4ODAwLDM4ODAzLDM4ODA1LDM4ODA2LDM4ODA3LDM4ODA5LDM4ODEwLDM4ODExLDM4ODEyLDM4ODEzLDMzMjE3LDMzMTkwLDI3NDI4LDI3NDQ3LDI3NDQ5LDI3NDU5LDI3NDYyLDI3NDgxLDM5MTIxLDM5MTIyLDM5MTIzLDM5MTI1LDM5MTI5LDM5MTMwLDI3NTcxLDI0Mzg0LDI3NTg2LDM1MzE1LDI2MDAwLDQwNzg1LDI2MDAzLDI2MDQ0LDI2MDU0LDI2MDUyLDI2MDUxLDI2MDYwLDI2MDYyLDI2MDY2LDI2MDcwLDI4ODAwLDI4ODI4LDI4ODIyLDI4ODI5LDI4ODU5LDI4ODY0LDI4ODU1LDI4ODQzLDI4ODQ5LDI4OTA0LDI4ODc0LDI4OTQ0LDI4OTQ3LDI4OTUwLDI4OTc1LDI4OTc3LDI5MDQzLDI5MDIwLDI5MDMyLDI4OTk3LDI5MDQyLDI5MDAyLDI5MDQ4LDI5MDUwLDI5MDgwLDI5MTA3LDI5MTA5LDI5MDk2LDI5MDg4LDI5MTUyLDI5MTQwLDI5MTU5LDI5MTc3LDI5MjEzLDI5MjI0LDI4NzgwLDI4OTUyLDI5MDMwLDI5MTEzLDI1MTUwLDI1MTQ5LDI1MTU1LDI1MTYwLDI1MTYxLDMxMDM1LDMxMDQwLDMxMDQ2LDMxMDQ5LDMxMDY3LDMxMDY4LDMxMDU5LDMxMDY2LDMxMDc0LDMxMDYzLDMxMDcyLDMxMDg3LDMxMDc5LDMxMDk4LDMxMTA5LDMxMTE0LDMxMTMwLDMxMTQzLDMxMTU1LDI0NTI5LDI0NTI4LDM4ODE0LDM4ODE1LDM4ODE3LDM4ODE4LDM4ODIwLDM4ODIxLDM4ODIyLDM4ODIzLDM4ODI0LDM4ODI1LDM4ODI2LDM4ODI4LDM4ODMwLDM4ODMyLDM4ODMzLDM4ODM1LDM4ODM3LDM4ODM4LDM4ODM5LDM4ODQwLDM4ODQxLDM4ODQyLDM4ODQzLDM4ODQ0LDM4ODQ1LDM4ODQ2LDM4ODQ3LDM4ODQ4LDM4ODQ5LDM4ODUwLDM4ODUxLDM4ODUyLDM4ODUzLDM4ODU0LDM4ODU1LDM4ODU2LDM4ODU3LDM4ODU4LDM4ODU5LDM4ODYwLDM4ODYxLDM4ODYyLDM4ODYzLDM4ODY0LDM4ODY1LDM4ODY2LDM4ODY3LDM4ODY4LDM4ODY5LDM4ODcwLDM4ODcxLDM4ODcyLDM4ODczLDM4ODc0LDM4ODc1LDM4ODc2LDM4ODc3LDM4ODc4LDM4ODc5LDM4ODgwLDM4ODgxLDM4ODgyLDM4ODgzLDM4ODg0LDM4ODg1LDM4ODg4LDM4ODk0LDM4ODk1LDM4ODk2LDM4ODk3LDM4ODk4LDM4OTAwLDM4OTAzLDM4OTA0LDM4OTA1LDM4OTA2LDM4OTA3LDM4OTA4LDM4OTA5LDM4OTEwLDM4OTExLDM4OTEyLDM4OTEzLDM4OTE0LDM4OTE1LDM4OTE2LDM4OTE3LDM4OTE4LDM4OTE5LDM4OTIwLDM4OTIxLDM4OTIyLDM4OTIzLDM4OTI0LDM4OTI1LDM4OTI2LDI0NjM2LDI0NjY5LDI0NjY2LDI0Njc5LDI0NjQxLDI0NjY1LDI0Njc1LDI0NzQ3LDI0ODM4LDI0ODQ1LDI0OTI1LDI1MDAxLDI0OTg5LDI1MDM1LDI1MDQxLDI1MDk0LDMyODk2LDMyODk1LDI3Nzk1LDI3ODk0LDI4MTU2LDMwNzEwLDMwNzEyLDMwNzIwLDMwNzI5LDMwNzQzLDMwNzQ0LDMwNzM3LDI2MDI3LDMwNzY1LDMwNzQ4LDMwNzQ5LDMwNzc3LDMwNzc4LDMwNzc5LDMwNzUxLDMwNzgwLDMwNzU3LDMwNzY0LDMwNzU1LDMwNzYxLDMwNzk4LDMwODI5LDMwODA2LDMwODA3LDMwNzU4LDMwODAwLDMwNzkxLDMwNzk2LDMwODI2LDMwODc1LDMwODY3LDMwODc0LDMwODU1LDMwODc2LDMwODgxLDMwODgzLDMwODk4LDMwOTA1LDMwODg1LDMwOTMyLDMwOTM3LDMwOTIxLDMwOTU2LDMwOTYyLDMwOTgxLDMwOTY0LDMwOTk1LDMxMDEyLDMxMDA2LDMxMDI4LDQwODU5LDQwNjk3LDQwNjk5LDQwNzAwLDMwNDQ5LDMwNDY4LDMwNDc3LDMwNDU3LDMwNDcxLDMwNDcyLDMwNDkwLDMwNDk4LDMwNDg5LDMwNTA5LDMwNTAyLDMwNTE3LDMwNTIwLDMwNTQ0LDMwNTQ1LDMwNTM1LDMwNTMxLDMwNTU0LDMwNTY4LDM4OTI3LDM4OTI4LDM4OTI5LDM4OTMwLDM4OTMxLDM4OTMyLDM4OTMzLDM4OTM0LDM4OTM1LDM4OTM2LDM4OTM3LDM4OTM4LDM4OTM5LDM4OTQwLDM4OTQxLDM4OTQyLDM4OTQzLDM4OTQ0LDM4OTQ1LDM4OTQ2LDM4OTQ3LDM4OTQ4LDM4OTQ5LDM4OTUwLDM4OTUxLDM4OTUyLDM4OTUzLDM4OTU0LDM4OTU1LDM4OTU2LDM4OTU3LDM4OTU4LDM4OTU5LDM4OTYwLDM4OTYxLDM4OTYyLDM4OTYzLDM4OTY0LDM4OTY1LDM4OTY2LDM4OTY3LDM4OTY4LDM4OTY5LDM4OTcwLDM4OTcxLDM4OTcyLDM4OTczLDM4OTc0LDM4OTc1LDM4OTc2LDM4OTc3LDM4OTc4LDM4OTc5LDM4OTgwLDM4OTgxLDM4OTgyLDM4OTgzLDM4OTg0LDM4OTg1LDM4OTg2LDM4OTg3LDM4OTg4LDM4OTg5LDM4OTkwLDM4OTkxLDM4OTkyLDM4OTkzLDM4OTk0LDM4OTk1LDM4OTk2LDM4OTk3LDM4OTk4LDM4OTk5LDM5MDAwLDM5MDAxLDM5MDAyLDM5MDAzLDM5MDA0LDM5MDA1LDM5MDA2LDM5MDA3LDM5MDA4LDM5MDA5LDM5MDEwLDM5MDExLDM5MDEyLDM5MDEzLDM5MDE0LDM5MDE1LDM5MDE2LDM5MDE3LDM5MDE4LDM5MDE5LDM5MDIwLDM5MDIxLDM5MDIyLDMwNTYyLDMwNTY1LDMwNTkxLDMwNjA1LDMwNTg5LDMwNTkyLDMwNjA0LDMwNjA5LDMwNjIzLDMwNjI0LDMwNjQwLDMwNjQ1LDMwNjUzLDMwMDEwLDMwMDE2LDMwMDMwLDMwMDI3LDMwMDI0LDMwMDQzLDMwMDY2LDMwMDczLDMwMDgzLDMyNjAwLDMyNjA5LDMyNjA3LDM1NDAwLDMyNjE2LDMyNjI4LDMyNjI1LDMyNjMzLDMyNjQxLDMyNjM4LDMwNDEzLDMwNDM3LDM0ODY2LDM4MDIxLDM4MDIyLDM4MDIzLDM4MDI3LDM4MDI2LDM4MDI4LDM4MDI5LDM4MDMxLDM4MDMyLDM4MDM2LDM4MDM5LDM4MDM3LDM4MDQyLDM4MDQzLDM4MDQ0LDM4MDUxLDM4MDUyLDM4MDU5LDM4MDU4LDM4MDYxLDM4MDYwLDM4MDYzLDM4MDY0LDM4MDY2LDM4MDY4LDM4MDcwLDM4MDcxLDM4MDcyLDM4MDczLDM4MDc0LDM4MDc2LDM4MDc3LDM4MDc5LDM4MDg0LDM4MDg4LDM4MDg5LDM4MDkwLDM4MDkxLDM4MDkyLDM4MDkzLDM4MDk0LDM4MDk2LDM4MDk3LDM4MDk4LDM4MTAxLDM4MTAyLDM4MTAzLDM4MTA1LDM4MTA0LDM4MTA3LDM4MTEwLDM4MTExLDM4MTEyLDM4MTE0LDM4MTE2LDM4MTE3LDM4MTE5LDM4MTIwLDM4MTIyLDM5MDIzLDM5MDI0LDM5MDI1LDM5MDI2LDM5MDI3LDM5MDI4LDM5MDUxLDM5MDU0LDM5MDU4LDM5MDYxLDM5MDY1LDM5MDc1LDM5MDgwLDM5MDgxLDM5MDgyLDM5MDgzLDM5MDg0LDM5MDg1LDM5MDg2LDM5MDg3LDM5MDg4LDM5MDg5LDM5MDkwLDM5MDkxLDM5MDkyLDM5MDkzLDM5MDk0LDM5MDk1LDM5MDk2LDM5MDk3LDM5MDk4LDM5MDk5LDM5MTAwLDM5MTAxLDM5MTAyLDM5MTAzLDM5MTA0LDM5MTA1LDM5MTA2LDM5MTA3LDM5MTA4LDM5MTA5LDM5MTEwLDM5MTExLDM5MTEyLDM5MTEzLDM5MTE0LDM5MTE1LDM5MTE2LDM5MTE3LDM5MTE5LDM5MTIwLDM5MTI0LDM5MTI2LDM5MTI3LDM5MTMxLDM5MTMyLDM5MTMzLDM5MTM2LDM5MTM3LDM5MTM4LDM5MTM5LDM5MTQwLDM5MTQxLDM5MTQyLDM5MTQ1LDM5MTQ2LDM5MTQ3LDM5MTQ4LDM5MTQ5LDM5MTUwLDM5MTUxLDM5MTUyLDM5MTUzLDM5MTU0LDM5MTU1LDM5MTU2LDM5MTU3LDM5MTU4LDM5MTU5LDM5MTYwLDM5MTYxLDM5MTYyLDM5MTYzLDM5MTY0LDM5MTY1LDM5MTY2LDM5MTY3LDM5MTY4LDM5MTY5LDM5MTcwLDM5MTcxLDM5MTcyLDM5MTczLDM5MTc0LDM5MTc1LDM4MTIxLDM4MTIzLDM4MTI2LDM4MTI3LDM4MTMxLDM4MTMyLDM4MTMzLDM4MTM1LDM4MTM3LDM4MTQwLDM4MTQxLDM4MTQzLDM4MTQ3LDM4MTQ2LDM4MTUwLDM4MTUxLDM4MTUzLDM4MTU0LDM4MTU3LDM4MTU4LDM4MTU5LDM4MTYyLDM4MTYzLDM4MTY0LDM4MTY1LDM4MTY2LDM4MTY4LDM4MTcxLDM4MTczLDM4MTc0LDM4MTc1LDM4MTc4LDM4MTg2LDM4MTg3LDM4MTg1LDM4MTg4LDM4MTkzLDM4MTk0LDM4MTk2LDM4MTk4LDM4MTk5LDM4MjAwLDM4MjA0LDM4MjA2LDM4MjA3LDM4MjEwLDM4MTk3LDM4MjEyLDM4MjEzLDM4MjE0LDM4MjE3LDM4MjIwLDM4MjIyLDM4MjIzLDM4MjI2LDM4MjI3LDM4MjI4LDM4MjMwLDM4MjMxLDM4MjMyLDM4MjMzLDM4MjM1LDM4MjM4LDM4MjM5LDM4MjM3LDM4MjQxLDM4MjQyLDM4MjQ0LDM4MjQ1LDM4MjQ2LDM4MjQ3LDM4MjQ4LDM4MjQ5LDM4MjUwLDM4MjUxLDM4MjUyLDM4MjU1LDM4MjU3LDM4MjU4LDM4MjU5LDM4MjAyLDMwNjk1LDMwNzAwLDM4NjAxLDMxMTg5LDMxMjEzLDMxMjAzLDMxMjExLDMxMjM4LDIzODc5LDMxMjM1LDMxMjM0LDMxMjYyLDMxMjUyLDM5MTc2LDM5MTc3LDM5MTc4LDM5MTc5LDM5MTgwLDM5MTgyLDM5MTgzLDM5MTg1LDM5MTg2LDM5MTg3LDM5MTg4LDM5MTg5LDM5MTkwLDM5MTkxLDM5MTkyLDM5MTkzLDM5MTk0LDM5MTk1LDM5MTk2LDM5MTk3LDM5MTk4LDM5MTk5LDM5MjAwLDM5MjAxLDM5MjAyLDM5MjAzLDM5MjA0LDM5MjA1LDM5MjA2LDM5MjA3LDM5MjA4LDM5MjA5LDM5MjEwLDM5MjExLDM5MjEyLDM5MjEzLDM5MjE1LDM5MjE2LDM5MjE3LDM5MjE4LDM5MjE5LDM5MjIwLDM5MjIxLDM5MjIyLDM5MjIzLDM5MjI0LDM5MjI1LDM5MjI2LDM5MjI3LDM5MjI4LDM5MjI5LDM5MjMwLDM5MjMxLDM5MjMyLDM5MjMzLDM5MjM0LDM5MjM1LDM5MjM2LDM5MjM3LDM5MjM4LDM5MjM5LDM5MjQwLDM5MjQxLDM5MjQyLDM5MjQzLDM5MjQ0LDM5MjQ1LDM5MjQ2LDM5MjQ3LDM5MjQ4LDM5MjQ5LDM5MjUwLDM5MjUxLDM5MjU0LDM5MjU1LDM5MjU2LDM5MjU3LDM5MjU4LDM5MjU5LDM5MjYwLDM5MjYxLDM5MjYyLDM5MjYzLDM5MjY0LDM5MjY1LDM5MjY2LDM5MjY4LDM5MjcwLDM5MjgzLDM5Mjg4LDM5Mjg5LDM5MjkxLDM5Mjk0LDM5Mjk4LDM5Mjk5LDM5MzA1LDMxMjg5LDMxMjg3LDMxMzEzLDQwNjU1LDM5MzMzLDMxMzQ0LDMwMzQ0LDMwMzUwLDMwMzU1LDMwMzYxLDMwMzcyLDI5OTE4LDI5OTIwLDI5OTk2LDQwNDgwLDQwNDgyLDQwNDg4LDQwNDg5LDQwNDkwLDQwNDkxLDQwNDkyLDQwNDk4LDQwNDk3LDQwNTAyLDQwNTA0LDQwNTAzLDQwNTA1LDQwNTA2LDQwNTEwLDQwNTEzLDQwNTE0LDQwNTE2LDQwNTE4LDQwNTE5LDQwNTIwLDQwNTIxLDQwNTIzLDQwNTI0LDQwNTI2LDQwNTI5LDQwNTMzLDQwNTM1LDQwNTM4LDQwNTM5LDQwNTQwLDQwNTQyLDQwNTQ3LDQwNTUwLDQwNTUxLDQwNTUyLDQwNTUzLDQwNTU0LDQwNTU1LDQwNTU2LDQwNTYxLDQwNTU3LDQwNTYzLDMwMDk4LDMwMTAwLDMwMTAyLDMwMTEyLDMwMTA5LDMwMTI0LDMwMTE1LDMwMTMxLDMwMTMyLDMwMTM2LDMwMTQ4LDMwMTI5LDMwMTI4LDMwMTQ3LDMwMTQ2LDMwMTY2LDMwMTU3LDMwMTc5LDMwMTg0LDMwMTgyLDMwMTgwLDMwMTg3LDMwMTgzLDMwMjExLDMwMTkzLDMwMjA0LDMwMjA3LDMwMjI0LDMwMjA4LDMwMjEzLDMwMjIwLDMwMjMxLDMwMjE4LDMwMjQ1LDMwMjMyLDMwMjI5LDMwMjMzLDM5MzA4LDM5MzEwLDM5MzIyLDM5MzIzLDM5MzI0LDM5MzI1LDM5MzI2LDM5MzI3LDM5MzI4LDM5MzI5LDM5MzMwLDM5MzMxLDM5MzMyLDM5MzM0LDM5MzM1LDM5MzM3LDM5MzM4LDM5MzM5LDM5MzQwLDM5MzQxLDM5MzQyLDM5MzQzLDM5MzQ0LDM5MzQ1LDM5MzQ2LDM5MzQ3LDM5MzQ4LDM5MzQ5LDM5MzUwLDM5MzUxLDM5MzUyLDM5MzUzLDM5MzU0LDM5MzU1LDM5MzU2LDM5MzU3LDM5MzU4LDM5MzU5LDM5MzYwLDM5MzYxLDM5MzYyLDM5MzYzLDM5MzY0LDM5MzY1LDM5MzY2LDM5MzY3LDM5MzY4LDM5MzY5LDM5MzcwLDM5MzcxLDM5MzcyLDM5MzczLDM5Mzc0LDM5Mzc1LDM5Mzc2LDM5Mzc3LDM5Mzc4LDM5Mzc5LDM5MzgwLDM5MzgxLDM5MzgyLDM5MzgzLDM5Mzg0LDM5Mzg1LDM5Mzg2LDM5Mzg3LDM5Mzg4LDM5Mzg5LDM5MzkwLDM5MzkxLDM5MzkyLDM5MzkzLDM5Mzk0LDM5Mzk1LDM5Mzk2LDM5Mzk3LDM5Mzk4LDM5Mzk5LDM5NDAwLDM5NDAxLDM5NDAyLDM5NDAzLDM5NDA0LDM5NDA1LDM5NDA2LDM5NDA3LDM5NDA4LDM5NDA5LDM5NDEwLDM5NDExLDM5NDEyLDM5NDEzLDM5NDE0LDM5NDE1LDM5NDE2LDM5NDE3LDMwMjM1LDMwMjY4LDMwMjQyLDMwMjQwLDMwMjcyLDMwMjUzLDMwMjU2LDMwMjcxLDMwMjYxLDMwMjc1LDMwMjcwLDMwMjU5LDMwMjg1LDMwMzAyLDMwMjkyLDMwMzAwLDMwMjk0LDMwMzE1LDMwMzE5LDMyNzE0LDMxNDYyLDMxMzUyLDMxMzUzLDMxMzYwLDMxMzY2LDMxMzY4LDMxMzgxLDMxMzk4LDMxMzkyLDMxNDA0LDMxNDAwLDMxNDA1LDMxNDExLDM0OTE2LDM0OTIxLDM0OTMwLDM0OTQxLDM0OTQzLDM0OTQ2LDM0OTc4LDM1MDE0LDM0OTk5LDM1MDA0LDM1MDE3LDM1MDQyLDM1MDIyLDM1MDQzLDM1MDQ1LDM1MDU3LDM1MDk4LDM1MDY4LDM1MDQ4LDM1MDcwLDM1MDU2LDM1MTA1LDM1MDk3LDM1MDkxLDM1MDk5LDM1MDgyLDM1MTI0LDM1MTE1LDM1MTI2LDM1MTM3LDM1MTc0LDM1MTk1LDMwMDkxLDMyOTk3LDMwMzg2LDMwMzg4LDMwNjg0LDMyNzg2LDMyNzg4LDMyNzkwLDMyNzk2LDMyODAwLDMyODAyLDMyODA1LDMyODA2LDMyODA3LDMyODA5LDMyODA4LDMyODE3LDMyNzc5LDMyODIxLDMyODM1LDMyODM4LDMyODQ1LDMyODUwLDMyODczLDMyODgxLDM1MjAzLDM5MDMyLDM5MDQwLDM5MDQzLDM5NDE4LDM5NDE5LDM5NDIwLDM5NDIxLDM5NDIyLDM5NDIzLDM5NDI0LDM5NDI1LDM5NDI2LDM5NDI3LDM5NDI4LDM5NDI5LDM5NDMwLDM5NDMxLDM5NDMyLDM5NDMzLDM5NDM0LDM5NDM1LDM5NDM2LDM5NDM3LDM5NDM4LDM5NDM5LDM5NDQwLDM5NDQxLDM5NDQyLDM5NDQzLDM5NDQ0LDM5NDQ1LDM5NDQ2LDM5NDQ3LDM5NDQ4LDM5NDQ5LDM5NDUwLDM5NDUxLDM5NDUyLDM5NDUzLDM5NDU0LDM5NDU1LDM5NDU2LDM5NDU3LDM5NDU4LDM5NDU5LDM5NDYwLDM5NDYxLDM5NDYyLDM5NDYzLDM5NDY0LDM5NDY1LDM5NDY2LDM5NDY3LDM5NDY4LDM5NDY5LDM5NDcwLDM5NDcxLDM5NDcyLDM5NDczLDM5NDc0LDM5NDc1LDM5NDc2LDM5NDc3LDM5NDc4LDM5NDc5LDM5NDgwLDM5NDgxLDM5NDgyLDM5NDgzLDM5NDg0LDM5NDg1LDM5NDg2LDM5NDg3LDM5NDg4LDM5NDg5LDM5NDkwLDM5NDkxLDM5NDkyLDM5NDkzLDM5NDk0LDM5NDk1LDM5NDk2LDM5NDk3LDM5NDk4LDM5NDk5LDM5NTAwLDM5NTAxLDM5NTAyLDM5NTAzLDM5NTA0LDM5NTA1LDM5NTA2LDM5NTA3LDM5NTA4LDM5NTA5LDM5NTEwLDM5NTExLDM5NTEyLDM5NTEzLDM5MDQ5LDM5MDUyLDM5MDUzLDM5MDU1LDM5MDYwLDM5MDY2LDM5MDY3LDM5MDcwLDM5MDcxLDM5MDczLDM5MDc0LDM5MDc3LDM5MDc4LDM0MzgxLDM0Mzg4LDM0NDEyLDM0NDE0LDM0NDMxLDM0NDI2LDM0NDI4LDM0NDI3LDM0NDcyLDM0NDQ1LDM0NDQzLDM0NDc2LDM0NDYxLDM0NDcxLDM0NDY3LDM0NDc0LDM0NDUxLDM0NDczLDM0NDg2LDM0NTAwLDM0NDg1LDM0NTEwLDM0NDgwLDM0NDkwLDM0NDgxLDM0NDc5LDM0NTA1LDM0NTExLDM0NDg0LDM0NTM3LDM0NTQ1LDM0NTQ2LDM0NTQxLDM0NTQ3LDM0NTEyLDM0NTc5LDM0NTI2LDM0NTQ4LDM0NTI3LDM0NTIwLDM0NTEzLDM0NTYzLDM0NTY3LDM0NTUyLDM0NTY4LDM0NTcwLDM0NTczLDM0NTY5LDM0NTk1LDM0NjE5LDM0NTkwLDM0NTk3LDM0NjA2LDM0NTg2LDM0NjIyLDM0NjMyLDM0NjEyLDM0NjA5LDM0NjAxLDM0NjE1LDM0NjIzLDM0NjkwLDM0NTk0LDM0Njg1LDM0Njg2LDM0NjgzLDM0NjU2LDM0NjcyLDM0NjM2LDM0NjcwLDM0Njk5LDM0NjQzLDM0NjU5LDM0Njg0LDM0NjYwLDM0NjQ5LDM0NjYxLDM0NzA3LDM0NzM1LDM0NzI4LDM0NzcwLDM5NTE0LDM5NTE1LDM5NTE2LDM5NTE3LDM5NTE4LDM5NTE5LDM5NTIwLDM5NTIxLDM5NTIyLDM5NTIzLDM5NTI0LDM5NTI1LDM5NTI2LDM5NTI3LDM5NTI4LDM5NTI5LDM5NTMwLDM5NTMxLDM5NTM4LDM5NTU1LDM5NTYxLDM5NTY1LDM5NTY2LDM5NTcyLDM5NTczLDM5NTc3LDM5NTkwLDM5NTkzLDM5NTk0LDM5NTk1LDM5NTk2LDM5NTk3LDM5NTk4LDM5NTk5LDM5NjAyLDM5NjAzLDM5NjA0LDM5NjA1LDM5NjA5LDM5NjExLDM5NjEzLDM5NjE0LDM5NjE1LDM5NjE5LDM5NjIwLDM5NjIyLDM5NjIzLDM5NjI0LDM5NjI1LDM5NjI2LDM5NjI5LDM5NjMwLDM5NjMxLDM5NjMyLDM5NjM0LDM5NjM2LDM5NjM3LDM5NjM4LDM5NjM5LDM5NjQxLDM5NjQyLDM5NjQzLDM5NjQ0LDM5NjQ1LDM5NjQ2LDM5NjQ4LDM5NjUwLDM5NjUxLDM5NjUyLDM5NjUzLDM5NjU1LDM5NjU2LDM5NjU3LDM5NjU4LDM5NjYwLDM5NjYyLDM5NjY0LDM5NjY1LDM5NjY2LDM5NjY3LDM5NjY4LDM5NjY5LDM5NjcwLDM5NjcxLDM5NjcyLDM5Njc0LDM5Njc2LDM5Njc3LDM5Njc4LDM5Njc5LDM5NjgwLDM5NjgxLDM5NjgyLDM5Njg0LDM5Njg1LDM5Njg2LDM0NzU4LDM0Njk2LDM0NjkzLDM0NzMzLDM0NzExLDM0NjkxLDM0NzMxLDM0Nzg5LDM0NzMyLDM0NzQxLDM0NzM5LDM0NzYzLDM0NzcxLDM0NzQ5LDM0NzY5LDM0NzUyLDM0NzYyLDM0Nzc5LDM0Nzk0LDM0Nzg0LDM0Nzk4LDM0ODM4LDM0ODM1LDM0ODE0LDM0ODI2LDM0ODQzLDM0ODQ5LDM0ODczLDM0ODc2LDMyNTY2LDMyNTc4LDMyNTgwLDMyNTgxLDMzMjk2LDMxNDgyLDMxNDg1LDMxNDk2LDMxNDkxLDMxNDkyLDMxNTA5LDMxNDk4LDMxNTMxLDMxNTAzLDMxNTU5LDMxNTQ0LDMxNTMwLDMxNTEzLDMxNTM0LDMxNTM3LDMxNTIwLDMxNTI1LDMxNTI0LDMxNTM5LDMxNTUwLDMxNTE4LDMxNTc2LDMxNTc4LDMxNTU3LDMxNjA1LDMxNTY0LDMxNTgxLDMxNTg0LDMxNTk4LDMxNjExLDMxNTg2LDMxNjAyLDMxNjAxLDMxNjMyLDMxNjU0LDMxNjU1LDMxNjcyLDMxNjYwLDMxNjQ1LDMxNjU2LDMxNjIxLDMxNjU4LDMxNjQ0LDMxNjUwLDMxNjU5LDMxNjY4LDMxNjk3LDMxNjgxLDMxNjkyLDMxNzA5LDMxNzA2LDMxNzE3LDMxNzE4LDMxNzIyLDMxNzU2LDMxNzQyLDMxNzQwLDMxNzU5LDMxNzY2LDMxNzU1LDM5Njg3LDM5Njg5LDM5NjkwLDM5NjkxLDM5NjkyLDM5NjkzLDM5Njk0LDM5Njk2LDM5Njk3LDM5Njk4LDM5NzAwLDM5NzAxLDM5NzAyLDM5NzAzLDM5NzA0LDM5NzA1LDM5NzA2LDM5NzA3LDM5NzA4LDM5NzA5LDM5NzEwLDM5NzEyLDM5NzEzLDM5NzE0LDM5NzE2LDM5NzE3LDM5NzE4LDM5NzE5LDM5NzIwLDM5NzIxLDM5NzIyLDM5NzIzLDM5NzI0LDM5NzI1LDM5NzI2LDM5NzI4LDM5NzI5LDM5NzMxLDM5NzMyLDM5NzMzLDM5NzM0LDM5NzM1LDM5NzM2LDM5NzM3LDM5NzM4LDM5NzQxLDM5NzQyLDM5NzQzLDM5NzQ0LDM5NzUwLDM5NzU0LDM5NzU1LDM5NzU2LDM5NzU4LDM5NzYwLDM5NzYyLDM5NzYzLDM5NzY1LDM5NzY2LDM5NzY3LDM5NzY4LDM5NzY5LDM5NzcwLDM5NzcxLDM5NzcyLDM5NzczLDM5Nzc0LDM5Nzc1LDM5Nzc2LDM5Nzc3LDM5Nzc4LDM5Nzc5LDM5NzgwLDM5NzgxLDM5NzgyLDM5NzgzLDM5Nzg0LDM5Nzg1LDM5Nzg2LDM5Nzg3LDM5Nzg4LDM5Nzg5LDM5NzkwLDM5NzkxLDM5NzkyLDM5NzkzLDM5Nzk0LDM5Nzk1LDM5Nzk2LDM5Nzk3LDM5Nzk4LDM5Nzk5LDM5ODAwLDM5ODAxLDM5ODAyLDM5ODAzLDMxNzc1LDMxNzg2LDMxNzgyLDMxODAwLDMxODA5LDMxODA4LDMzMjc4LDMzMjgxLDMzMjgyLDMzMjg0LDMzMjYwLDM0ODg0LDMzMzEzLDMzMzE0LDMzMzE1LDMzMzI1LDMzMzI3LDMzMzIwLDMzMzIzLDMzMzM2LDMzMzM5LDMzMzMxLDMzMzMyLDMzMzQyLDMzMzQ4LDMzMzUzLDMzMzU1LDMzMzU5LDMzMzcwLDMzMzc1LDMzMzg0LDM0OTQyLDM0OTQ5LDM0OTUyLDM1MDMyLDM1MDM5LDM1MTY2LDMyNjY5LDMyNjcxLDMyNjc5LDMyNjg3LDMyNjg4LDMyNjkwLDMxODY4LDI1OTI5LDMxODg5LDMxOTAxLDMxOTAwLDMxOTAyLDMxOTA2LDMxOTIyLDMxOTMyLDMxOTMzLDMxOTM3LDMxOTQzLDMxOTQ4LDMxOTQ5LDMxOTQ0LDMxOTQxLDMxOTU5LDMxOTc2LDMzMzkwLDI2MjgwLDMyNzAzLDMyNzE4LDMyNzI1LDMyNzQxLDMyNzM3LDMyNzQyLDMyNzQ1LDMyNzUwLDMyNzU1LDMxOTkyLDMyMTE5LDMyMTY2LDMyMTc0LDMyMzI3LDMyNDExLDQwNjMyLDQwNjI4LDM2MjExLDM2MjI4LDM2MjQ0LDM2MjQxLDM2MjczLDM2MTk5LDM2MjA1LDM1OTExLDM1OTEzLDM3MTk0LDM3MjAwLDM3MTk4LDM3MTk5LDM3MjIwLDM5ODA0LDM5ODA1LDM5ODA2LDM5ODA3LDM5ODA4LDM5ODA5LDM5ODEwLDM5ODExLDM5ODEyLDM5ODEzLDM5ODE0LDM5ODE1LDM5ODE2LDM5ODE3LDM5ODE4LDM5ODE5LDM5ODIwLDM5ODIxLDM5ODIyLDM5ODIzLDM5ODI0LDM5ODI1LDM5ODI2LDM5ODI3LDM5ODI4LDM5ODI5LDM5ODMwLDM5ODMxLDM5ODMyLDM5ODMzLDM5ODM0LDM5ODM1LDM5ODM2LDM5ODM3LDM5ODM4LDM5ODM5LDM5ODQwLDM5ODQxLDM5ODQyLDM5ODQzLDM5ODQ0LDM5ODQ1LDM5ODQ2LDM5ODQ3LDM5ODQ4LDM5ODQ5LDM5ODUwLDM5ODUxLDM5ODUyLDM5ODUzLDM5ODU0LDM5ODU1LDM5ODU2LDM5ODU3LDM5ODU4LDM5ODU5LDM5ODYwLDM5ODYxLDM5ODYyLDM5ODYzLDM5ODY0LDM5ODY1LDM5ODY2LDM5ODY3LDM5ODY4LDM5ODY5LDM5ODcwLDM5ODcxLDM5ODcyLDM5ODczLDM5ODc0LDM5ODc1LDM5ODc2LDM5ODc3LDM5ODc4LDM5ODc5LDM5ODgwLDM5ODgxLDM5ODgyLDM5ODgzLDM5ODg0LDM5ODg1LDM5ODg2LDM5ODg3LDM5ODg4LDM5ODg5LDM5ODkwLDM5ODkxLDM5ODkyLDM5ODkzLDM5ODk0LDM5ODk1LDM5ODk2LDM5ODk3LDM5ODk4LDM5ODk5LDM3MjE4LDM3MjE3LDM3MjMyLDM3MjI1LDM3MjMxLDM3MjQ1LDM3MjQ2LDM3MjM0LDM3MjM2LDM3MjQxLDM3MjYwLDM3MjUzLDM3MjY0LDM3MjYxLDM3MjY1LDM3MjgyLDM3MjgzLDM3MjkwLDM3MjkzLDM3Mjk0LDM3Mjk1LDM3MzAxLDM3MzAwLDM3MzA2LDM1OTI1LDQwNTc0LDM2MjgwLDM2MzMxLDM2MzU3LDM2NDQxLDM2NDU3LDM2Mjc3LDM2Mjg3LDM2Mjg0LDM2MjgyLDM2MjkyLDM2MzEwLDM2MzExLDM2MzE0LDM2MzE4LDM2MzAyLDM2MzAzLDM2MzE1LDM2Mjk0LDM2MzMyLDM2MzQzLDM2MzQ0LDM2MzIzLDM2MzQ1LDM2MzQ3LDM2MzI0LDM2MzYxLDM2MzQ5LDM2MzcyLDM2MzgxLDM2MzgzLDM2Mzk2LDM2Mzk4LDM2Mzg3LDM2Mzk5LDM2NDEwLDM2NDE2LDM2NDA5LDM2NDA1LDM2NDEzLDM2NDAxLDM2NDI1LDM2NDE3LDM2NDE4LDM2NDMzLDM2NDM0LDM2NDI2LDM2NDY0LDM2NDcwLDM2NDc2LDM2NDYzLDM2NDY4LDM2NDg1LDM2NDk1LDM2NTAwLDM2NDk2LDM2NTA4LDM2NTEwLDM1OTYwLDM1OTcwLDM1OTc4LDM1OTczLDM1OTkyLDM1OTg4LDI2MDExLDM1Mjg2LDM1Mjk0LDM1MjkwLDM1MjkyLDM5OTAwLDM5OTAxLDM5OTAyLDM5OTAzLDM5OTA0LDM5OTA1LDM5OTA2LDM5OTA3LDM5OTA4LDM5OTA5LDM5OTEwLDM5OTExLDM5OTEyLDM5OTEzLDM5OTE0LDM5OTE1LDM5OTE2LDM5OTE3LDM5OTE4LDM5OTE5LDM5OTIwLDM5OTIxLDM5OTIyLDM5OTIzLDM5OTI0LDM5OTI1LDM5OTI2LDM5OTI3LDM5OTI4LDM5OTI5LDM5OTMwLDM5OTMxLDM5OTMyLDM5OTMzLDM5OTM0LDM5OTM1LDM5OTM2LDM5OTM3LDM5OTM4LDM5OTM5LDM5OTQwLDM5OTQxLDM5OTQyLDM5OTQzLDM5OTQ0LDM5OTQ1LDM5OTQ2LDM5OTQ3LDM5OTQ4LDM5OTQ5LDM5OTUwLDM5OTUxLDM5OTUyLDM5OTUzLDM5OTU0LDM5OTU1LDM5OTU2LDM5OTU3LDM5OTU4LDM5OTU5LDM5OTYwLDM5OTYxLDM5OTYyLDM5OTYzLDM5OTY0LDM5OTY1LDM5OTY2LDM5OTY3LDM5OTY4LDM5OTY5LDM5OTcwLDM5OTcxLDM5OTcyLDM5OTczLDM5OTc0LDM5OTc1LDM5OTc2LDM5OTc3LDM5OTc4LDM5OTc5LDM5OTgwLDM5OTgxLDM5OTgyLDM5OTgzLDM5OTg0LDM5OTg1LDM5OTg2LDM5OTg3LDM5OTg4LDM5OTg5LDM5OTkwLDM5OTkxLDM5OTkyLDM5OTkzLDM5OTk0LDM5OTk1LDM1MzAxLDM1MzA3LDM1MzExLDM1MzkwLDM1NjIyLDM4NzM5LDM4NjMzLDM4NjQzLDM4NjM5LDM4NjYyLDM4NjU3LDM4NjY0LDM4NjcxLDM4NjcwLDM4Njk4LDM4NzAxLDM4NzA0LDM4NzE4LDQwODMyLDQwODM1LDQwODM3LDQwODM4LDQwODM5LDQwODQwLDQwODQxLDQwODQyLDQwODQ0LDQwNzAyLDQwNzE1LDQwNzE3LDM4NTg1LDM4NTg4LDM4NTg5LDM4NjA2LDM4NjEwLDMwNjU1LDM4NjI0LDM3NTE4LDM3NTUwLDM3NTc2LDM3Njk0LDM3NzM4LDM3ODM0LDM3Nzc1LDM3OTUwLDM3OTk1LDQwMDYzLDQwMDY2LDQwMDY5LDQwMDcwLDQwMDcxLDQwMDcyLDMxMjY3LDQwMDc1LDQwMDc4LDQwMDgwLDQwMDgxLDQwMDgyLDQwMDg0LDQwMDg1LDQwMDkwLDQwMDkxLDQwMDk0LDQwMDk1LDQwMDk2LDQwMDk3LDQwMDk4LDQwMDk5LDQwMTAxLDQwMTAyLDQwMTAzLDQwMTA0LDQwMTA1LDQwMTA3LDQwMTA5LDQwMTEwLDQwMTEyLDQwMTEzLDQwMTE0LDQwMTE1LDQwMTE2LDQwMTE3LDQwMTE4LDQwMTE5LDQwMTIyLDQwMTIzLDQwMTI0LDQwMTI1LDQwMTMyLDQwMTMzLDQwMTM0LDQwMTM1LDQwMTM4LDQwMTM5LDM5OTk2LDM5OTk3LDM5OTk4LDM5OTk5LDQwMDAwLDQwMDAxLDQwMDAyLDQwMDAzLDQwMDA0LDQwMDA1LDQwMDA2LDQwMDA3LDQwMDA4LDQwMDA5LDQwMDEwLDQwMDExLDQwMDEyLDQwMDEzLDQwMDE0LDQwMDE1LDQwMDE2LDQwMDE3LDQwMDE4LDQwMDE5LDQwMDIwLDQwMDIxLDQwMDIyLDQwMDIzLDQwMDI0LDQwMDI1LDQwMDI2LDQwMDI3LDQwMDI4LDQwMDI5LDQwMDMwLDQwMDMxLDQwMDMyLDQwMDMzLDQwMDM0LDQwMDM1LDQwMDM2LDQwMDM3LDQwMDM4LDQwMDM5LDQwMDQwLDQwMDQxLDQwMDQyLDQwMDQzLDQwMDQ0LDQwMDQ1LDQwMDQ2LDQwMDQ3LDQwMDQ4LDQwMDQ5LDQwMDUwLDQwMDUxLDQwMDUyLDQwMDUzLDQwMDU0LDQwMDU1LDQwMDU2LDQwMDU3LDQwMDU4LDQwMDU5LDQwMDYxLDQwMDYyLDQwMDY0LDQwMDY3LDQwMDY4LDQwMDczLDQwMDc0LDQwMDc2LDQwMDc5LDQwMDgzLDQwMDg2LDQwMDg3LDQwMDg4LDQwMDg5LDQwMDkzLDQwMTA2LDQwMTA4LDQwMTExLDQwMTIxLDQwMTI2LDQwMTI3LDQwMTI4LDQwMTI5LDQwMTMwLDQwMTM2LDQwMTM3LDQwMTQ1LDQwMTQ2LDQwMTU0LDQwMTU1LDQwMTYwLDQwMTYxLDQwMTQwLDQwMTQxLDQwMTQyLDQwMTQzLDQwMTQ0LDQwMTQ3LDQwMTQ4LDQwMTQ5LDQwMTUxLDQwMTUyLDQwMTUzLDQwMTU2LDQwMTU3LDQwMTU5LDQwMTYyLDM4NzgwLDM4Nzg5LDM4ODAxLDM4ODAyLDM4ODA0LDM4ODMxLDM4ODI3LDM4ODE5LDM4ODM0LDM4ODM2LDM5NjAxLDM5NjAwLDM5NjA3LDQwNTM2LDM5NjA2LDM5NjEwLDM5NjEyLDM5NjE3LDM5NjE2LDM5NjIxLDM5NjE4LDM5NjI3LDM5NjI4LDM5NjMzLDM5NzQ5LDM5NzQ3LDM5NzUxLDM5NzUzLDM5NzUyLDM5NzU3LDM5NzYxLDM5MTQ0LDM5MTgxLDM5MjE0LDM5MjUzLDM5MjUyLDM5NjQ3LDM5NjQ5LDM5NjU0LDM5NjYzLDM5NjU5LDM5Njc1LDM5NjYxLDM5NjczLDM5Njg4LDM5Njk1LDM5Njk5LDM5NzExLDM5NzE1LDQwNjM3LDQwNjM4LDMyMzE1LDQwNTc4LDQwNTgzLDQwNTg0LDQwNTg3LDQwNTk0LDM3ODQ2LDQwNjA1LDQwNjA3LDQwNjY3LDQwNjY4LDQwNjY5LDQwNjcyLDQwNjcxLDQwNjc0LDQwNjgxLDQwNjc5LDQwNjc3LDQwNjgyLDQwNjg3LDQwNzM4LDQwNzQ4LDQwNzUxLDQwNzYxLDQwNzU5LDQwNzY1LDQwNzY2LDQwNzcyLDQwMTYzLDQwMTY0LDQwMTY1LDQwMTY2LDQwMTY3LDQwMTY4LDQwMTY5LDQwMTcwLDQwMTcxLDQwMTcyLDQwMTczLDQwMTc0LDQwMTc1LDQwMTc2LDQwMTc3LDQwMTc4LDQwMTc5LDQwMTgwLDQwMTgxLDQwMTgyLDQwMTgzLDQwMTg0LDQwMTg1LDQwMTg2LDQwMTg3LDQwMTg4LDQwMTg5LDQwMTkwLDQwMTkxLDQwMTkyLDQwMTkzLDQwMTk0LDQwMTk1LDQwMTk2LDQwMTk3LDQwMTk4LDQwMTk5LDQwMjAwLDQwMjAxLDQwMjAyLDQwMjAzLDQwMjA0LDQwMjA1LDQwMjA2LDQwMjA3LDQwMjA4LDQwMjA5LDQwMjEwLDQwMjExLDQwMjEyLDQwMjEzLDQwMjE0LDQwMjE1LDQwMjE2LDQwMjE3LDQwMjE4LDQwMjE5LDQwMjIwLDQwMjIxLDQwMjIyLDQwMjIzLDQwMjI0LDQwMjI1LDQwMjI2LDQwMjI3LDQwMjI4LDQwMjI5LDQwMjMwLDQwMjMxLDQwMjMyLDQwMjMzLDQwMjM0LDQwMjM1LDQwMjM2LDQwMjM3LDQwMjM4LDQwMjM5LDQwMjQwLDQwMjQxLDQwMjQyLDQwMjQzLDQwMjQ0LDQwMjQ1LDQwMjQ2LDQwMjQ3LDQwMjQ4LDQwMjQ5LDQwMjUwLDQwMjUxLDQwMjUyLDQwMjUzLDQwMjU0LDQwMjU1LDQwMjU2LDQwMjU3LDQwMjU4LDU3OTA4LDU3OTA5LDU3OTEwLDU3OTExLDU3OTEyLDU3OTEzLDU3OTE0LDU3OTE1LDU3OTE2LDU3OTE3LDU3OTE4LDU3OTE5LDU3OTIwLDU3OTIxLDU3OTIyLDU3OTIzLDU3OTI0LDU3OTI1LDU3OTI2LDU3OTI3LDU3OTI4LDU3OTI5LDU3OTMwLDU3OTMxLDU3OTMyLDU3OTMzLDU3OTM0LDU3OTM1LDU3OTM2LDU3OTM3LDU3OTM4LDU3OTM5LDU3OTQwLDU3OTQxLDU3OTQyLDU3OTQzLDU3OTQ0LDU3OTQ1LDU3OTQ2LDU3OTQ3LDU3OTQ4LDU3OTQ5LDU3OTUwLDU3OTUxLDU3OTUyLDU3OTUzLDU3OTU0LDU3OTU1LDU3OTU2LDU3OTU3LDU3OTU4LDU3OTU5LDU3OTYwLDU3OTYxLDU3OTYyLDU3OTYzLDU3OTY0LDU3OTY1LDU3OTY2LDU3OTY3LDU3OTY4LDU3OTY5LDU3OTcwLDU3OTcxLDU3OTcyLDU3OTczLDU3OTc0LDU3OTc1LDU3OTc2LDU3OTc3LDU3OTc4LDU3OTc5LDU3OTgwLDU3OTgxLDU3OTgyLDU3OTgzLDU3OTg0LDU3OTg1LDU3OTg2LDU3OTg3LDU3OTg4LDU3OTg5LDU3OTkwLDU3OTkxLDU3OTkyLDU3OTkzLDU3OTk0LDU3OTk1LDU3OTk2LDU3OTk3LDU3OTk4LDU3OTk5LDU4MDAwLDU4MDAxLDQwMjU5LDQwMjYwLDQwMjYxLDQwMjYyLDQwMjYzLDQwMjY0LDQwMjY1LDQwMjY2LDQwMjY3LDQwMjY4LDQwMjY5LDQwMjcwLDQwMjcxLDQwMjcyLDQwMjczLDQwMjc0LDQwMjc1LDQwMjc2LDQwMjc3LDQwMjc4LDQwMjc5LDQwMjgwLDQwMjgxLDQwMjgyLDQwMjgzLDQwMjg0LDQwMjg1LDQwMjg2LDQwMjg3LDQwMjg4LDQwMjg5LDQwMjkwLDQwMjkxLDQwMjkyLDQwMjkzLDQwMjk0LDQwMjk1LDQwMjk2LDQwMjk3LDQwMjk4LDQwMjk5LDQwMzAwLDQwMzAxLDQwMzAyLDQwMzAzLDQwMzA0LDQwMzA1LDQwMzA2LDQwMzA3LDQwMzA4LDQwMzA5LDQwMzEwLDQwMzExLDQwMzEyLDQwMzEzLDQwMzE0LDQwMzE1LDQwMzE2LDQwMzE3LDQwMzE4LDQwMzE5LDQwMzIwLDQwMzIxLDQwMzIyLDQwMzIzLDQwMzI0LDQwMzI1LDQwMzI2LDQwMzI3LDQwMzI4LDQwMzI5LDQwMzMwLDQwMzMxLDQwMzMyLDQwMzMzLDQwMzM0LDQwMzM1LDQwMzM2LDQwMzM3LDQwMzM4LDQwMzM5LDQwMzQwLDQwMzQxLDQwMzQyLDQwMzQzLDQwMzQ0LDQwMzQ1LDQwMzQ2LDQwMzQ3LDQwMzQ4LDQwMzQ5LDQwMzUwLDQwMzUxLDQwMzUyLDQwMzUzLDQwMzU0LDU4MDAyLDU4MDAzLDU4MDA0LDU4MDA1LDU4MDA2LDU4MDA3LDU4MDA4LDU4MDA5LDU4MDEwLDU4MDExLDU4MDEyLDU4MDEzLDU4MDE0LDU4MDE1LDU4MDE2LDU4MDE3LDU4MDE4LDU4MDE5LDU4MDIwLDU4MDIxLDU4MDIyLDU4MDIzLDU4MDI0LDU4MDI1LDU4MDI2LDU4MDI3LDU4MDI4LDU4MDI5LDU4MDMwLDU4MDMxLDU4MDMyLDU4MDMzLDU4MDM0LDU4MDM1LDU4MDM2LDU4MDM3LDU4MDM4LDU4MDM5LDU4MDQwLDU4MDQxLDU4MDQyLDU4MDQzLDU4MDQ0LDU4MDQ1LDU4MDQ2LDU4MDQ3LDU4MDQ4LDU4MDQ5LDU4MDUwLDU4MDUxLDU4MDUyLDU4MDUzLDU4MDU0LDU4MDU1LDU4MDU2LDU4MDU3LDU4MDU4LDU4MDU5LDU4MDYwLDU4MDYxLDU4MDYyLDU4MDYzLDU4MDY0LDU4MDY1LDU4MDY2LDU4MDY3LDU4MDY4LDU4MDY5LDU4MDcwLDU4MDcxLDU4MDcyLDU4MDczLDU4MDc0LDU4MDc1LDU4MDc2LDU4MDc3LDU4MDc4LDU4MDc5LDU4MDgwLDU4MDgxLDU4MDgyLDU4MDgzLDU4MDg0LDU4MDg1LDU4MDg2LDU4MDg3LDU4MDg4LDU4MDg5LDU4MDkwLDU4MDkxLDU4MDkyLDU4MDkzLDU4MDk0LDU4MDk1LDQwMzU1LDQwMzU2LDQwMzU3LDQwMzU4LDQwMzU5LDQwMzYwLDQwMzYxLDQwMzYyLDQwMzYzLDQwMzY0LDQwMzY1LDQwMzY2LDQwMzY3LDQwMzY4LDQwMzY5LDQwMzcwLDQwMzcxLDQwMzcyLDQwMzczLDQwMzc0LDQwMzc1LDQwMzc2LDQwMzc3LDQwMzc4LDQwMzc5LDQwMzgwLDQwMzgxLDQwMzgyLDQwMzgzLDQwMzg0LDQwMzg1LDQwMzg2LDQwMzg3LDQwMzg4LDQwMzg5LDQwMzkwLDQwMzkxLDQwMzkyLDQwMzkzLDQwMzk0LDQwMzk1LDQwMzk2LDQwMzk3LDQwMzk4LDQwMzk5LDQwNDAwLDQwNDAxLDQwNDAyLDQwNDAzLDQwNDA0LDQwNDA1LDQwNDA2LDQwNDA3LDQwNDA4LDQwNDA5LDQwNDEwLDQwNDExLDQwNDEyLDQwNDEzLDQwNDE0LDQwNDE1LDQwNDE2LDQwNDE3LDQwNDE4LDQwNDE5LDQwNDIwLDQwNDIxLDQwNDIyLDQwNDIzLDQwNDI0LDQwNDI1LDQwNDI2LDQwNDI3LDQwNDI4LDQwNDI5LDQwNDMwLDQwNDMxLDQwNDMyLDQwNDMzLDQwNDM0LDQwNDM1LDQwNDM2LDQwNDM3LDQwNDM4LDQwNDM5LDQwNDQwLDQwNDQxLDQwNDQyLDQwNDQzLDQwNDQ0LDQwNDQ1LDQwNDQ2LDQwNDQ3LDQwNDQ4LDQwNDQ5LDQwNDUwLDU4MDk2LDU4MDk3LDU4MDk4LDU4MDk5LDU4MTAwLDU4MTAxLDU4MTAyLDU4MTAzLDU4MTA0LDU4MTA1LDU4MTA2LDU4MTA3LDU4MTA4LDU4MTA5LDU4MTEwLDU4MTExLDU4MTEyLDU4MTEzLDU4MTE0LDU4MTE1LDU4MTE2LDU4MTE3LDU4MTE4LDU4MTE5LDU4MTIwLDU4MTIxLDU4MTIyLDU4MTIzLDU4MTI0LDU4MTI1LDU4MTI2LDU4MTI3LDU4MTI4LDU4MTI5LDU4MTMwLDU4MTMxLDU4MTMyLDU4MTMzLDU4MTM0LDU4MTM1LDU4MTM2LDU4MTM3LDU4MTM4LDU4MTM5LDU4MTQwLDU4MTQxLDU4MTQyLDU4MTQzLDU4MTQ0LDU4MTQ1LDU4MTQ2LDU4MTQ3LDU4MTQ4LDU4MTQ5LDU4MTUwLDU4MTUxLDU4MTUyLDU4MTUzLDU4MTU0LDU4MTU1LDU4MTU2LDU4MTU3LDU4MTU4LDU4MTU5LDU4MTYwLDU4MTYxLDU4MTYyLDU4MTYzLDU4MTY0LDU4MTY1LDU4MTY2LDU4MTY3LDU4MTY4LDU4MTY5LDU4MTcwLDU4MTcxLDU4MTcyLDU4MTczLDU4MTc0LDU4MTc1LDU4MTc2LDU4MTc3LDU4MTc4LDU4MTc5LDU4MTgwLDU4MTgxLDU4MTgyLDU4MTgzLDU4MTg0LDU4MTg1LDU4MTg2LDU4MTg3LDU4MTg4LDU4MTg5LDQwNDUxLDQwNDUyLDQwNDUzLDQwNDU0LDQwNDU1LDQwNDU2LDQwNDU3LDQwNDU4LDQwNDU5LDQwNDYwLDQwNDYxLDQwNDYyLDQwNDYzLDQwNDY0LDQwNDY1LDQwNDY2LDQwNDY3LDQwNDY4LDQwNDY5LDQwNDcwLDQwNDcxLDQwNDcyLDQwNDczLDQwNDc0LDQwNDc1LDQwNDc2LDQwNDc3LDQwNDc4LDQwNDg0LDQwNDg3LDQwNDk0LDQwNDk2LDQwNTAwLDQwNTA3LDQwNTA4LDQwNTEyLDQwNTI1LDQwNTI4LDQwNTMwLDQwNTMxLDQwNTMyLDQwNTM0LDQwNTM3LDQwNTQxLDQwNTQzLDQwNTQ0LDQwNTQ1LDQwNTQ2LDQwNTQ5LDQwNTU4LDQwNTU5LDQwNTYyLDQwNTY0LDQwNTY1LDQwNTY2LDQwNTY3LDQwNTY4LDQwNTY5LDQwNTcwLDQwNTcxLDQwNTcyLDQwNTczLDQwNTc2LDQwNTc3LDQwNTc5LDQwNTgwLDQwNTgxLDQwNTgyLDQwNTg1LDQwNTg2LDQwNTg4LDQwNTg5LDQwNTkwLDQwNTkxLDQwNTkyLDQwNTkzLDQwNTk2LDQwNTk3LDQwNTk4LDQwNTk5LDQwNjAwLDQwNjAxLDQwNjAyLDQwNjAzLDQwNjA0LDQwNjA2LDQwNjA4LDQwNjA5LDQwNjEwLDQwNjExLDQwNjEyLDQwNjEzLDQwNjE1LDQwNjE2LDQwNjE3LDQwNjE4LDU4MTkwLDU4MTkxLDU4MTkyLDU4MTkzLDU4MTk0LDU4MTk1LDU4MTk2LDU4MTk3LDU4MTk4LDU4MTk5LDU4MjAwLDU4MjAxLDU4MjAyLDU4MjAzLDU4MjA0LDU4MjA1LDU4MjA2LDU4MjA3LDU4MjA4LDU4MjA5LDU4MjEwLDU4MjExLDU4MjEyLDU4MjEzLDU4MjE0LDU4MjE1LDU4MjE2LDU4MjE3LDU4MjE4LDU4MjE5LDU4MjIwLDU4MjIxLDU4MjIyLDU4MjIzLDU4MjI0LDU4MjI1LDU4MjI2LDU4MjI3LDU4MjI4LDU4MjI5LDU4MjMwLDU4MjMxLDU4MjMyLDU4MjMzLDU4MjM0LDU4MjM1LDU4MjM2LDU4MjM3LDU4MjM4LDU4MjM5LDU4MjQwLDU4MjQxLDU4MjQyLDU4MjQzLDU4MjQ0LDU4MjQ1LDU4MjQ2LDU4MjQ3LDU4MjQ4LDU4MjQ5LDU4MjUwLDU4MjUxLDU4MjUyLDU4MjUzLDU4MjU0LDU4MjU1LDU4MjU2LDU4MjU3LDU4MjU4LDU4MjU5LDU4MjYwLDU4MjYxLDU4MjYyLDU4MjYzLDU4MjY0LDU4MjY1LDU4MjY2LDU4MjY3LDU4MjY4LDU4MjY5LDU4MjcwLDU4MjcxLDU4MjcyLDU4MjczLDU4Mjc0LDU4Mjc1LDU4Mjc2LDU4Mjc3LDU4Mjc4LDU4Mjc5LDU4MjgwLDU4MjgxLDU4MjgyLDU4MjgzLDQwNjE5LDQwNjIwLDQwNjIxLDQwNjIyLDQwNjIzLDQwNjI0LDQwNjI1LDQwNjI2LDQwNjI3LDQwNjI5LDQwNjMwLDQwNjMxLDQwNjMzLDQwNjM0LDQwNjM2LDQwNjM5LDQwNjQwLDQwNjQxLDQwNjQyLDQwNjQzLDQwNjQ1LDQwNjQ2LDQwNjQ3LDQwNjQ4LDQwNjUwLDQwNjUxLDQwNjUyLDQwNjU2LDQwNjU4LDQwNjU5LDQwNjYxLDQwNjYyLDQwNjYzLDQwNjY1LDQwNjY2LDQwNjcwLDQwNjczLDQwNjc1LDQwNjc2LDQwNjc4LDQwNjgwLDQwNjgzLDQwNjg0LDQwNjg1LDQwNjg2LDQwNjg4LDQwNjg5LDQwNjkwLDQwNjkxLDQwNjkyLDQwNjkzLDQwNjk0LDQwNjk1LDQwNjk2LDQwNjk4LDQwNzAxLDQwNzAzLDQwNzA0LDQwNzA1LDQwNzA2LDQwNzA3LDQwNzA4LDQwNzA5LDQwNzEwLDQwNzExLDQwNzEyLDQwNzEzLDQwNzE0LDQwNzE2LDQwNzE5LDQwNzIxLDQwNzIyLDQwNzI0LDQwNzI1LDQwNzI2LDQwNzI4LDQwNzMwLDQwNzMxLDQwNzMyLDQwNzMzLDQwNzM0LDQwNzM1LDQwNzM3LDQwNzM5LDQwNzQwLDQwNzQxLDQwNzQyLDQwNzQzLDQwNzQ0LDQwNzQ1LDQwNzQ2LDQwNzQ3LDQwNzQ5LDQwNzUwLDQwNzUyLDQwNzUzLDU4Mjg0LDU4Mjg1LDU4Mjg2LDU4Mjg3LDU4Mjg4LDU4Mjg5LDU4MjkwLDU4MjkxLDU4MjkyLDU4MjkzLDU4Mjk0LDU4Mjk1LDU4Mjk2LDU4Mjk3LDU4Mjk4LDU4Mjk5LDU4MzAwLDU4MzAxLDU4MzAyLDU4MzAzLDU4MzA0LDU4MzA1LDU4MzA2LDU4MzA3LDU4MzA4LDU4MzA5LDU4MzEwLDU4MzExLDU4MzEyLDU4MzEzLDU4MzE0LDU4MzE1LDU4MzE2LDU4MzE3LDU4MzE4LDU4MzE5LDU4MzIwLDU4MzIxLDU4MzIyLDU4MzIzLDU4MzI0LDU4MzI1LDU4MzI2LDU4MzI3LDU4MzI4LDU4MzI5LDU4MzMwLDU4MzMxLDU4MzMyLDU4MzMzLDU4MzM0LDU4MzM1LDU4MzM2LDU4MzM3LDU4MzM4LDU4MzM5LDU4MzQwLDU4MzQxLDU4MzQyLDU4MzQzLDU4MzQ0LDU4MzQ1LDU4MzQ2LDU4MzQ3LDU4MzQ4LDU4MzQ5LDU4MzUwLDU4MzUxLDU4MzUyLDU4MzUzLDU4MzU0LDU4MzU1LDU4MzU2LDU4MzU3LDU4MzU4LDU4MzU5LDU4MzYwLDU4MzYxLDU4MzYyLDU4MzYzLDU4MzY0LDU4MzY1LDU4MzY2LDU4MzY3LDU4MzY4LDU4MzY5LDU4MzcwLDU4MzcxLDU4MzcyLDU4MzczLDU4Mzc0LDU4Mzc1LDU4Mzc2LDU4Mzc3LDQwNzU0LDQwNzU1LDQwNzU2LDQwNzU3LDQwNzU4LDQwNzYwLDQwNzYyLDQwNzY0LDQwNzY3LDQwNzY4LDQwNzY5LDQwNzcwLDQwNzcxLDQwNzczLDQwNzc0LDQwNzc1LDQwNzc2LDQwNzc3LDQwNzc4LDQwNzc5LDQwNzgwLDQwNzgxLDQwNzgyLDQwNzgzLDQwNzg2LDQwNzg3LDQwNzg4LDQwNzg5LDQwNzkwLDQwNzkxLDQwNzkyLDQwNzkzLDQwNzk0LDQwNzk1LDQwNzk2LDQwNzk3LDQwNzk4LDQwNzk5LDQwODAwLDQwODAxLDQwODAyLDQwODAzLDQwODA0LDQwODA1LDQwODA2LDQwODA3LDQwODA4LDQwODA5LDQwODEwLDQwODExLDQwODEyLDQwODEzLDQwODE0LDQwODE1LDQwODE2LDQwODE3LDQwODE4LDQwODE5LDQwODIwLDQwODIxLDQwODIyLDQwODIzLDQwODI0LDQwODI1LDQwODI2LDQwODI3LDQwODI4LDQwODI5LDQwODMwLDQwODMzLDQwODM0LDQwODQ1LDQwODQ2LDQwODQ3LDQwODQ4LDQwODQ5LDQwODUwLDQwODUxLDQwODUyLDQwODUzLDQwODU0LDQwODU1LDQwODU2LDQwODYwLDQwODYxLDQwODYyLDQwODY1LDQwODY2LDQwODY3LDQwODY4LDQwODY5LDYzNzg4LDYzODY1LDYzODkzLDYzOTc1LDYzOTg1LDU4Mzc4LDU4Mzc5LDU4MzgwLDU4MzgxLDU4MzgyLDU4MzgzLDU4Mzg0LDU4Mzg1LDU4Mzg2LDU4Mzg3LDU4Mzg4LDU4Mzg5LDU4MzkwLDU4MzkxLDU4MzkyLDU4MzkzLDU4Mzk0LDU4Mzk1LDU4Mzk2LDU4Mzk3LDU4Mzk4LDU4Mzk5LDU4NDAwLDU4NDAxLDU4NDAyLDU4NDAzLDU4NDA0LDU4NDA1LDU4NDA2LDU4NDA3LDU4NDA4LDU4NDA5LDU4NDEwLDU4NDExLDU4NDEyLDU4NDEzLDU4NDE0LDU4NDE1LDU4NDE2LDU4NDE3LDU4NDE4LDU4NDE5LDU4NDIwLDU4NDIxLDU4NDIyLDU4NDIzLDU4NDI0LDU4NDI1LDU4NDI2LDU4NDI3LDU4NDI4LDU4NDI5LDU4NDMwLDU4NDMxLDU4NDMyLDU4NDMzLDU4NDM0LDU4NDM1LDU4NDM2LDU4NDM3LDU4NDM4LDU4NDM5LDU4NDQwLDU4NDQxLDU4NDQyLDU4NDQzLDU4NDQ0LDU4NDQ1LDU4NDQ2LDU4NDQ3LDU4NDQ4LDU4NDQ5LDU4NDUwLDU4NDUxLDU4NDUyLDU4NDUzLDU4NDU0LDU4NDU1LDU4NDU2LDU4NDU3LDU4NDU4LDU4NDU5LDU4NDYwLDU4NDYxLDU4NDYyLDU4NDYzLDU4NDY0LDU4NDY1LDU4NDY2LDU4NDY3LDU4NDY4LDU4NDY5LDU4NDcwLDU4NDcxLDY0MDEyLDY0MDEzLDY0MDE0LDY0MDE1LDY0MDE3LDY0MDE5LDY0MDIwLDY0MDI0LDY0MDMxLDY0MDMyLDY0MDMzLDY0MDM1LDY0MDM2LDY0MDM5LDY0MDQwLDY0MDQxLDExOTA1LDU5NDE0LDU5NDE1LDU5NDE2LDExOTA4LDEzNDI3LDEzMzgzLDExOTEyLDExOTE1LDU5NDIyLDEzNzI2LDEzODUwLDEzODM4LDExOTE2LDExOTI3LDE0NzAyLDE0NjE2LDU5NDMwLDE0Nzk5LDE0ODE1LDE0OTYzLDE0ODAwLDU5NDM1LDU5NDM2LDE1MTgyLDE1NDcwLDE1NTg0LDExOTQzLDU5NDQxLDU5NDQyLDExOTQ2LDE2NDcwLDE2NzM1LDExOTUwLDE3MjA3LDExOTU1LDExOTU4LDExOTU5LDU5NDUxLDE3MzI5LDE3MzI0LDExOTYzLDE3MzczLDE3NjIyLDE4MDE3LDE3OTk2LDU5NDU5LDE4MjExLDE4MjE3LDE4MzAwLDE4MzE3LDExOTc4LDE4NzU5LDE4ODEwLDE4ODEzLDE4ODE4LDE4ODE5LDE4ODIxLDE4ODIyLDE4ODQ3LDE4ODQzLDE4ODcxLDE4ODcwLDU5NDc2LDU5NDc3LDE5NjE5LDE5NjE1LDE5NjE2LDE5NjE3LDE5NTc1LDE5NjE4LDE5NzMxLDE5NzMyLDE5NzMzLDE5NzM0LDE5NzM1LDE5NzM2LDE5NzM3LDE5ODg2LDU5NDkyLDU4NDcyLDU4NDczLDU4NDc0LDU4NDc1LDU4NDc2LDU4NDc3LDU4NDc4LDU4NDc5LDU4NDgwLDU4NDgxLDU4NDgyLDU4NDgzLDU4NDg0LDU4NDg1LDU4NDg2LDU4NDg3LDU4NDg4LDU4NDg5LDU4NDkwLDU4NDkxLDU4NDkyLDU4NDkzLDU4NDk0LDU4NDk1LDU4NDk2LDU4NDk3LDU4NDk4LDU4NDk5LDU4NTAwLDU4NTAxLDU4NTAyLDU4NTAzLDU4NTA0LDU4NTA1LDU4NTA2LDU4NTA3LDU4NTA4LDU4NTA5LDU4NTEwLDU4NTExLDU4NTEyLDU4NTEzLDU4NTE0LDU4NTE1LDU4NTE2LDU4NTE3LDU4NTE4LDU4NTE5LDU4NTIwLDU4NTIxLDU4NTIyLDU4NTIzLDU4NTI0LDU4NTI1LDU4NTI2LDU4NTI3LDU4NTI4LDU4NTI5LDU4NTMwLDU4NTMxLDU4NTMyLDU4NTMzLDU4NTM0LDU4NTM1LDU4NTM2LDU4NTM3LDU4NTM4LDU4NTM5LDU4NTQwLDU4NTQxLDU4NTQyLDU4NTQzLDU4NTQ0LDU4NTQ1LDU4NTQ2LDU4NTQ3LDU4NTQ4LDU4NTQ5LDU4NTUwLDU4NTUxLDU4NTUyLDU4NTUzLDU4NTU0LDU4NTU1LDU4NTU2LDU4NTU3LDU4NTU4LDU4NTU5LDU4NTYwLDU4NTYxLDU4NTYyLDU4NTYzLDU4NTY0LDU4NTY1XSxcbiAgXCJnYjE4MDMwLXJhbmdlc1wiOltbMCwxMjhdLFszNiwxNjVdLFszOCwxNjldLFs0NSwxNzhdLFs1MCwxODRdLFs4MSwyMTZdLFs4OSwyMjZdLFs5NSwyMzVdLFs5NiwyMzhdLFsxMDAsMjQ0XSxbMTAzLDI0OF0sWzEwNCwyNTFdLFsxMDUsMjUzXSxbMTA5LDI1OF0sWzEyNiwyNzZdLFsxMzMsMjg0XSxbMTQ4LDMwMF0sWzE3MiwzMjVdLFsxNzUsMzI5XSxbMTc5LDMzNF0sWzIwOCwzNjRdLFszMDYsNDYzXSxbMzA3LDQ2NV0sWzMwOCw0NjddLFszMDksNDY5XSxbMzEwLDQ3MV0sWzMxMSw0NzNdLFszMTIsNDc1XSxbMzEzLDQ3N10sWzM0MSw1MDZdLFs0MjgsNTk0XSxbNDQzLDYxMF0sWzU0NCw3MTJdLFs1NDUsNzE2XSxbNTU4LDczMF0sWzc0MSw5MzBdLFs3NDIsOTM4XSxbNzQ5LDk2Ml0sWzc1MCw5NzBdLFs4MDUsMTAyNl0sWzgxOSwxMTA0XSxbODIwLDExMDZdLFs3OTIyLDgyMDldLFs3OTI0LDgyMTVdLFs3OTI1LDgyMThdLFs3OTI3LDgyMjJdLFs3OTM0LDgyMzFdLFs3OTQzLDgyNDFdLFs3OTQ0LDgyNDRdLFs3OTQ1LDgyNDZdLFs3OTUwLDgyNTJdLFs4MDYyLDgzNjVdLFs4MTQ4LDg0NTJdLFs4MTQ5LDg0NTRdLFs4MTUyLDg0NThdLFs4MTY0LDg0NzFdLFs4MTc0LDg0ODJdLFs4MjM2LDg1NTZdLFs4MjQwLDg1NzBdLFs4MjYyLDg1OTZdLFs4MjY0LDg2MDJdLFs4Mzc0LDg3MTNdLFs4MzgwLDg3MjBdLFs4MzgxLDg3MjJdLFs4Mzg0LDg3MjZdLFs4Mzg4LDg3MzFdLFs4MzkwLDg3MzddLFs4MzkyLDg3NDBdLFs4MzkzLDg3NDJdLFs4Mzk0LDg3NDhdLFs4Mzk2LDg3NTFdLFs4NDAxLDg3NjBdLFs4NDA2LDg3NjZdLFs4NDE2LDg3NzddLFs4NDE5LDg3ODFdLFs4NDI0LDg3ODddLFs4NDM3LDg4MDJdLFs4NDM5LDg4MDhdLFs4NDQ1LDg4MTZdLFs4NDgyLDg4NTRdLFs4NDg1LDg4NThdLFs4NDk2LDg4NzBdLFs4NTIxLDg4OTZdLFs4NjAzLDg5NzldLFs4OTM2LDkzMjJdLFs4OTQ2LDkzNzJdLFs5MDQ2LDk1NDhdLFs5MDUwLDk1ODhdLFs5MDYzLDk2MTZdLFs5MDY2LDk2MjJdLFs5MDc2LDk2MzRdLFs5MDkyLDk2NTJdLFs5MTAwLDk2NjJdLFs5MTA4LDk2NzJdLFs5MTExLDk2NzZdLFs5MTEzLDk2ODBdLFs5MTMxLDk3MDJdLFs5MTYyLDk3MzVdLFs5MTY0LDk3MzhdLFs5MjE4LDk3OTNdLFs5MjE5LDk3OTVdLFsxMTMyOSwxMTkwNl0sWzExMzMxLDExOTA5XSxbMTEzMzQsMTE5MTNdLFsxMTMzNiwxMTkxN10sWzExMzQ2LDExOTI4XSxbMTEzNjEsMTE5NDRdLFsxMTM2MywxMTk0N10sWzExMzY2LDExOTUxXSxbMTEzNzAsMTE5NTZdLFsxMTM3MiwxMTk2MF0sWzExMzc1LDExOTY0XSxbMTEzODksMTE5NzldLFsxMTY4MiwxMjI4NF0sWzExNjg2LDEyMjkyXSxbMTE2ODcsMTIzMTJdLFsxMTY5MiwxMjMxOV0sWzExNjk0LDEyMzMwXSxbMTE3MTQsMTIzNTFdLFsxMTcxNiwxMjQzNl0sWzExNzIzLDEyNDQ3XSxbMTE3MjUsMTI1MzVdLFsxMTczMCwxMjU0M10sWzExNzM2LDEyNTg2XSxbMTE5ODIsMTI4NDJdLFsxMTk4OSwxMjg1MF0sWzEyMTAyLDEyOTY0XSxbMTIzMzYsMTMyMDBdLFsxMjM0OCwxMzIxNV0sWzEyMzUwLDEzMjE4XSxbMTIzODQsMTMyNTNdLFsxMjM5MywxMzI2M10sWzEyMzk1LDEzMjY3XSxbMTIzOTcsMTMyNzBdLFsxMjUxMCwxMzM4NF0sWzEyNTUzLDEzNDI4XSxbMTI4NTEsMTM3MjddLFsxMjk2MiwxMzgzOV0sWzEyOTczLDEzODUxXSxbMTM3MzgsMTQ2MTddLFsxMzgyMywxNDcwM10sWzEzOTE5LDE0ODAxXSxbMTM5MzMsMTQ4MTZdLFsxNDA4MCwxNDk2NF0sWzE0Mjk4LDE1MTgzXSxbMTQ1ODUsMTU0NzFdLFsxNDY5OCwxNTU4NV0sWzE1NTgzLDE2NDcxXSxbMTU4NDcsMTY3MzZdLFsxNjMxOCwxNzIwOF0sWzE2NDM0LDE3MzI1XSxbMTY0MzgsMTczMzBdLFsxNjQ4MSwxNzM3NF0sWzE2NzI5LDE3NjIzXSxbMTcxMDIsMTc5OTddLFsxNzEyMiwxODAxOF0sWzE3MzE1LDE4MjEyXSxbMTczMjAsMTgyMThdLFsxNzQwMiwxODMwMV0sWzE3NDE4LDE4MzE4XSxbMTc4NTksMTg3NjBdLFsxNzkwOSwxODgxMV0sWzE3OTExLDE4ODE0XSxbMTc5MTUsMTg4MjBdLFsxNzkxNiwxODgyM10sWzE3OTM2LDE4ODQ0XSxbMTc5MzksMTg4NDhdLFsxNzk2MSwxODg3Ml0sWzE4NjY0LDE5NTc2XSxbMTg3MDMsMTk2MjBdLFsxODgxNCwxOTczOF0sWzE4OTYyLDE5ODg3XSxbMTkwNDMsNDA4NzBdLFszMzQ2OSw1OTI0NF0sWzMzNDcwLDU5MzM2XSxbMzM0NzEsNTkzNjddLFszMzQ4NCw1OTQxM10sWzMzNDg1LDU5NDE3XSxbMzM0OTAsNTk0MjNdLFszMzQ5Nyw1OTQzMV0sWzMzNTAxLDU5NDM3XSxbMzM1MDUsNTk0NDNdLFszMzUxMyw1OTQ1Ml0sWzMzNTIwLDU5NDYwXSxbMzM1MzYsNTk0NzhdLFszMzU1MCw1OTQ5M10sWzM3ODQ1LDYzNzg5XSxbMzc5MjEsNjM4NjZdLFszNzk0OCw2Mzg5NF0sWzM4MDI5LDYzOTc2XSxbMzgwMzgsNjM5ODZdLFszODA2NCw2NDAxNl0sWzM4MDY1LDY0MDE4XSxbMzgwNjYsNjQwMjFdLFszODA2OSw2NDAyNV0sWzM4MDc1LDY0MDM0XSxbMzgwNzYsNjQwMzddLFszODA3OCw2NDA0Ml0sWzM5MTA4LDY1MDc0XSxbMzkxMDksNjUwOTNdLFszOTExMyw2NTEwN10sWzM5MTE0LDY1MTEyXSxbMzkxMTUsNjUxMjddLFszOTExNiw2NTEzMl0sWzM5MjY1LDY1Mzc1XSxbMzkzOTQsNjU1MTBdLFsxODkwMDAsNjU1MzZdXSxcbiAgXCJqaXMwMjA4XCI6WzEyMjg4LDEyMjg5LDEyMjkwLDY1MjkyLDY1Mjk0LDEyNTM5LDY1MzA2LDY1MzA3LDY1MzExLDY1MjgxLDEyNDQzLDEyNDQ0LDE4MCw2NTM0NCwxNjgsNjUzNDIsNjU1MDcsNjUzNDMsMTI1NDEsMTI1NDIsMTI0NDUsMTI0NDYsMTIyOTEsMjAxODksMTIyOTMsMTIyOTQsMTIyOTUsMTI1NDAsODIxMyw4MjA4LDY1Mjk1LDY1MzQwLDY1Mzc0LDg3NDEsNjUzNzIsODIzMCw4MjI5LDgyMTYsODIxNyw4MjIwLDgyMjEsNjUyODgsNjUyODksMTIzMDgsMTIzMDksNjUzMzksNjUzNDEsNjUzNzEsNjUzNzMsMTIyOTYsMTIyOTcsMTIyOTgsMTIyOTksMTIzMDAsMTIzMDEsMTIzMDIsMTIzMDMsMTIzMDQsMTIzMDUsNjUyOTEsNjUyOTMsMTc3LDIxNSwyNDcsNjUzMDksODgwMCw2NTMwOCw2NTMxMCw4ODA2LDg4MDcsODczNCw4NzU2LDk3OTQsOTc5MiwxNzYsODI0Miw4MjQzLDg0NTEsNjU1MDksNjUyODQsNjU1MDQsNjU1MDUsNjUyODUsNjUyODMsNjUyODYsNjUyOTAsNjUzMTIsMTY3LDk3MzQsOTczMyw5Njc1LDk2NzksOTY3OCw5NjcxLDk2NzAsOTYzMyw5NjMyLDk2NTEsOTY1MCw5NjYxLDk2NjAsODI1MSwxMjMwNiw4NTk0LDg1OTIsODU5Myw4NTk1LDEyMzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzEyLDg3MTUsODgzOCw4ODM5LDg4MzQsODgzNSw4NzQ2LDg3NDUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg3NDMsODc0NCw2NTUwNiw4NjU4LDg2NjAsODcwNCw4NzA3LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NzM2LDg4NjksODk3OCw4NzA2LDg3MTEsODgwMSw4Nzg2LDg4MTAsODgxMSw4NzMwLDg3NjUsODczMyw4NzU3LDg3NDcsODc0OCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDg0OTEsODI0MCw5ODM5LDk4MzcsOTgzNCw4MjI0LDgyMjUsMTgyLG51bGwsbnVsbCxudWxsLG51bGwsOTcxMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw2NTI5Niw2NTI5Nyw2NTI5OCw2NTI5OSw2NTMwMCw2NTMwMSw2NTMwMiw2NTMwMyw2NTMwNCw2NTMwNSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzEzLDY1MzE0LDY1MzE1LDY1MzE2LDY1MzE3LDY1MzE4LDY1MzE5LDY1MzIwLDY1MzIxLDY1MzIyLDY1MzIzLDY1MzI0LDY1MzI1LDY1MzI2LDY1MzI3LDY1MzI4LDY1MzI5LDY1MzMwLDY1MzMxLDY1MzMyLDY1MzMzLDY1MzM0LDY1MzM1LDY1MzM2LDY1MzM3LDY1MzM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDY1MzQ1LDY1MzQ2LDY1MzQ3LDY1MzQ4LDY1MzQ5LDY1MzUwLDY1MzUxLDY1MzUyLDY1MzUzLDY1MzU0LDY1MzU1LDY1MzU2LDY1MzU3LDY1MzU4LDY1MzU5LDY1MzYwLDY1MzYxLDY1MzYyLDY1MzYzLDY1MzY0LDY1MzY1LDY1MzY2LDY1MzY3LDY1MzY4LDY1MzY5LDY1MzcwLG51bGwsbnVsbCxudWxsLG51bGwsMTIzNTMsMTIzNTQsMTIzNTUsMTIzNTYsMTIzNTcsMTIzNTgsMTIzNTksMTIzNjAsMTIzNjEsMTIzNjIsMTIzNjMsMTIzNjQsMTIzNjUsMTIzNjYsMTIzNjcsMTIzNjgsMTIzNjksMTIzNzAsMTIzNzEsMTIzNzIsMTIzNzMsMTIzNzQsMTIzNzUsMTIzNzYsMTIzNzcsMTIzNzgsMTIzNzksMTIzODAsMTIzODEsMTIzODIsMTIzODMsMTIzODQsMTIzODUsMTIzODYsMTIzODcsMTIzODgsMTIzODksMTIzOTAsMTIzOTEsMTIzOTIsMTIzOTMsMTIzOTQsMTIzOTUsMTIzOTYsMTIzOTcsMTIzOTgsMTIzOTksMTI0MDAsMTI0MDEsMTI0MDIsMTI0MDMsMTI0MDQsMTI0MDUsMTI0MDYsMTI0MDcsMTI0MDgsMTI0MDksMTI0MTAsMTI0MTEsMTI0MTIsMTI0MTMsMTI0MTQsMTI0MTUsMTI0MTYsMTI0MTcsMTI0MTgsMTI0MTksMTI0MjAsMTI0MjEsMTI0MjIsMTI0MjMsMTI0MjQsMTI0MjUsMTI0MjYsMTI0MjcsMTI0MjgsMTI0MjksMTI0MzAsMTI0MzEsMTI0MzIsMTI0MzMsMTI0MzQsMTI0MzUsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEyNDQ5LDEyNDUwLDEyNDUxLDEyNDUyLDEyNDUzLDEyNDU0LDEyNDU1LDEyNDU2LDEyNDU3LDEyNDU4LDEyNDU5LDEyNDYwLDEyNDYxLDEyNDYyLDEyNDYzLDEyNDY0LDEyNDY1LDEyNDY2LDEyNDY3LDEyNDY4LDEyNDY5LDEyNDcwLDEyNDcxLDEyNDcyLDEyNDczLDEyNDc0LDEyNDc1LDEyNDc2LDEyNDc3LDEyNDc4LDEyNDc5LDEyNDgwLDEyNDgxLDEyNDgyLDEyNDgzLDEyNDg0LDEyNDg1LDEyNDg2LDEyNDg3LDEyNDg4LDEyNDg5LDEyNDkwLDEyNDkxLDEyNDkyLDEyNDkzLDEyNDk0LDEyNDk1LDEyNDk2LDEyNDk3LDEyNDk4LDEyNDk5LDEyNTAwLDEyNTAxLDEyNTAyLDEyNTAzLDEyNTA0LDEyNTA1LDEyNTA2LDEyNTA3LDEyNTA4LDEyNTA5LDEyNTEwLDEyNTExLDEyNTEyLDEyNTEzLDEyNTE0LDEyNTE1LDEyNTE2LDEyNTE3LDEyNTE4LDEyNTE5LDEyNTIwLDEyNTIxLDEyNTIyLDEyNTIzLDEyNTI0LDEyNTI1LDEyNTI2LDEyNTI3LDEyNTI4LDEyNTI5LDEyNTMwLDEyNTMxLDEyNTMyLDEyNTMzLDEyNTM0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwMjUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDExMDUsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDk2LDk0OTIsOTUwMCw5NTE2LDk1MDgsOTUyNCw5NTMyLDk0NzMsOTQ3NSw5NDg3LDk0OTEsOTQ5OSw5NDk1LDk1MDcsOTUyMyw5NTE1LDk1MzEsOTU0Nyw5NTA0LDk1MTksOTUxMiw5NTI3LDk1MzUsOTUwMSw5NTIwLDk1MDksOTUyOCw5NTM4LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDkzMTIsOTMxMyw5MzE0LDkzMTUsOTMxNiw5MzE3LDkzMTgsOTMxOSw5MzIwLDkzMjEsOTMyMiw5MzIzLDkzMjQsOTMyNSw5MzI2LDkzMjcsOTMyOCw5MzI5LDkzMzAsOTMzMSw4NTQ0LDg1NDUsODU0Niw4NTQ3LDg1NDgsODU0OSw4NTUwLDg1NTEsODU1Miw4NTUzLG51bGwsMTMxMjksMTMwNzYsMTMwOTAsMTMxMzMsMTMwODAsMTMwOTUsMTMwNTksMTMxMTAsMTMxMzcsMTMxNDMsMTMwNjksMTMwOTQsMTMwOTEsMTMwOTksMTMxMzAsMTMxMTUsMTMyMTIsMTMyMTMsMTMyMTQsMTMxOTgsMTMxOTksMTMyNTIsMTMyMTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDEzMTc5LDEyMzE3LDEyMzE5LDg0NzAsMTMyNjEsODQ4MSwxMjk2NCwxMjk2NSwxMjk2NiwxMjk2NywxMjk2OCwxMjg0OSwxMjg1MCwxMjg1NywxMzE4MiwxMzE4MSwxMzE4MCw4Nzg2LDg4MDEsODc0Nyw4NzUwLDg3MjEsODczMCw4ODY5LDg3MzYsODczNSw4ODk1LDg3NTcsODc0NSw4NzQ2LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMjAxMjQsMjE3ODIsMjMwNDMsMzg0NjMsMjE2OTYsMjQ4NTksMjUzODQsMjMwMzAsMzY4OTgsMzM5MDksMzM1NjQsMzEzMTIsMjQ3NDYsMjU1NjksMjgxOTcsMjYwOTMsMzM4OTQsMzM0NDYsMzk5MjUsMjY3NzEsMjIzMTEsMjYwMTcsMjUyMDEsMjM0NTEsMjI5OTIsMzQ0MjcsMzkxNTYsMzIwOTgsMzIxOTAsMzk4MjIsMjUxMTAsMzE5MDMsMzQ5OTksMjM0MzMsMjQyNDUsMjUzNTMsMjYyNjMsMjY2OTYsMzgzNDMsMzg3OTcsMjY0NDcsMjAxOTcsMjAyMzQsMjAzMDEsMjAzODEsMjA1NTMsMjIyNTgsMjI4MzksMjI5OTYsMjMwNDEsMjM1NjEsMjQ3OTksMjQ4NDcsMjQ5NDQsMjYxMzEsMjY4ODUsMjg4NTgsMzAwMzEsMzAwNjQsMzEyMjcsMzIxNzMsMzIyMzksMzI5NjMsMzM4MDYsMzQ5MTUsMzU1ODYsMzY5NDksMzY5ODYsMjEzMDcsMjAxMTcsMjAxMzMsMjI0OTUsMzI5NDYsMzcwNTcsMzA5NTksMTk5NjgsMjI3NjksMjgzMjIsMzY5MjAsMzEyODIsMzM1NzYsMzM0MTksMzk5ODMsMjA4MDEsMjEzNjAsMjE2OTMsMjE3MjksMjIyNDAsMjMwMzUsMjQzNDEsMzkxNTQsMjgxMzksMzI5OTYsMzQwOTMsMzg0OTgsMzg1MTIsMzg1NjAsMzg5MDcsMjE1MTUsMjE0OTEsMjM0MzEsMjg4NzksMzI3MDEsMzY4MDIsMzg2MzIsMjEzNTksNDAyODQsMzE0MTgsMTk5ODUsMzA4NjcsMzMyNzYsMjgxOTgsMjIwNDAsMjE3NjQsMjc0MjEsMzQwNzQsMzk5OTUsMjMwMTMsMjE0MTcsMjgwMDYsMjk5MTYsMzgyODcsMjIwODIsMjAxMTMsMzY5MzksMzg2NDIsMzM2MTUsMzkxODAsMjE0NzMsMjE5NDIsMjMzNDQsMjQ0MzMsMjYxNDQsMjYzNTUsMjY2MjgsMjc3MDQsMjc4OTEsMjc5NDUsMjk3ODcsMzA0MDgsMzEzMTAsMzg5NjQsMzM1MjEsMzQ5MDcsMzU0MjQsMzc2MTMsMjgwODIsMzAxMjMsMzA0MTAsMzkzNjUsMjQ3NDIsMzU1ODUsMzYyMzQsMzgzMjIsMjcwMjIsMjE0MjEsMjA4NzAsMjIyOTAsMjI1NzYsMjI4NTIsMjM0NzYsMjQzMTAsMjQ2MTYsMjU1MTMsMjU1ODgsMjc4MzksMjg0MzYsMjg4MTQsMjg5NDgsMjkwMTcsMjkxNDEsMjk1MDMsMzIyNTcsMzMzOTgsMzM0ODksMzQxOTksMzY5NjAsMzc0NjcsNDAyMTksMjI2MzMsMjYwNDQsMjc3MzgsMjk5ODksMjA5ODUsMjI4MzAsMjI4ODUsMjQ0NDgsMjQ1NDAsMjUyNzYsMjYxMDYsMjcxNzgsMjc0MzEsMjc1NzIsMjk1NzksMzI3MDUsMzUxNTgsNDAyMzYsNDAyMDYsNDA2NDQsMjM3MTMsMjc3OTgsMzM2NTksMjA3NDAsMjM2MjcsMjUwMTQsMzMyMjIsMjY3NDIsMjkyODEsMjAwNTcsMjA0NzQsMjEzNjgsMjQ2ODEsMjgyMDEsMzEzMTEsMzg4OTksMTk5NzksMjEyNzAsMjAyMDYsMjAzMDksMjAyODUsMjAzODUsMjAzMzksMjExNTIsMjE0ODcsMjIwMjUsMjI3OTksMjMyMzMsMjM0NzgsMjM1MjEsMzExODUsMjYyNDcsMjY1MjQsMjY1NTAsMjc0NjgsMjc4MjcsMjg3NzksMjk2MzQsMzExMTcsMzExNjYsMzEyOTIsMzE2MjMsMzM0NTcsMzM0OTksMzM1NDAsMzM2NTUsMzM3NzUsMzM3NDcsMzQ2NjIsMzU1MDYsMjIwNTcsMzYwMDgsMzY4MzgsMzY5NDIsMzg2ODYsMzQ0NDIsMjA0MjAsMjM3ODQsMjUxMDUsMjkyNzMsMzAwMTEsMzMyNTMsMzM0NjksMzQ1NTgsMzYwMzIsMzg1OTcsMzkxODcsMzkzODEsMjAxNzEsMjAyNTAsMzUyOTksMjIyMzgsMjI2MDIsMjI3MzAsMjQzMTUsMjQ1NTUsMjQ2MTgsMjQ3MjQsMjQ2NzQsMjUwNDAsMjUxMDYsMjUyOTYsMjU5MTMsMzk3NDUsMjYyMTQsMjY4MDAsMjgwMjMsMjg3ODQsMzAwMjgsMzAzNDIsMzIxMTcsMzM0NDUsMzQ4MDksMzgyODMsMzg1NDIsMzU5OTcsMjA5NzcsMjExODIsMjI4MDYsMjE2ODMsMjM0NzUsMjM4MzAsMjQ5MzYsMjcwMTAsMjgwNzksMzA4NjEsMzM5OTUsMzQ5MDMsMzU0NDIsMzc3OTksMzk2MDgsMjgwMTIsMzkzMzYsMzQ1MjEsMjI0MzUsMjY2MjMsMzQ1MTAsMzczOTAsMjExMjMsMjIxNTEsMjE1MDgsMjQyNzUsMjUzMTMsMjU3ODUsMjY2ODQsMjY2ODAsMjc1NzksMjk1NTQsMzA5MDYsMzEzMzksMzUyMjYsMzUyODIsMzYyMDMsMzY2MTEsMzcxMDEsMzgzMDcsMzg1NDgsMzg3NjEsMjMzOTgsMjM3MzEsMjcwMDUsMzg5ODksMzg5OTAsMjU0OTksMzE1MjAsMjcxNzksMjcyNjMsMjY4MDYsMzk5NDksMjg1MTEsMjExMDYsMjE5MTcsMjQ2ODgsMjUzMjQsMjc5NjMsMjgxNjcsMjgzNjksMzM4ODMsMzUwODgsMzY2NzYsMTk5ODgsMzk5OTMsMjE0OTQsMjY5MDcsMjcxOTQsMzg3ODgsMjY2NjYsMjA4MjgsMzE0MjcsMzM5NzAsMzczNDAsMzc3NzIsMjIxMDcsNDAyMzIsMjY2NTgsMzM1NDEsMzM4NDEsMzE5MDksMjEwMDAsMzM0NzcsMjk5MjYsMjAwOTQsMjAzNTUsMjA4OTYsMjM1MDYsMjEwMDIsMjEyMDgsMjEyMjMsMjQwNTksMjE5MTQsMjI1NzAsMjMwMTQsMjM0MzYsMjM0NDgsMjM1MTUsMjQxNzgsMjQxODUsMjQ3MzksMjQ4NjMsMjQ5MzEsMjUwMjIsMjU1NjMsMjU5NTQsMjY1NzcsMjY3MDcsMjY4NzQsMjc0NTQsMjc0NzUsMjc3MzUsMjg0NTAsMjg1NjcsMjg0ODUsMjk4NzIsMjk5NzYsMzA0MzUsMzA0NzUsMzE0ODcsMzE2NDksMzE3NzcsMzIyMzMsMzI1NjYsMzI3NTIsMzI5MjUsMzMzODIsMzM2OTQsMzUyNTEsMzU1MzIsMzYwMTEsMzY5OTYsMzc5NjksMzgyOTEsMzgyODksMzgzMDYsMzg1MDEsMzg4NjcsMzkyMDgsMzMzMDQsMjAwMjQsMjE1NDcsMjM3MzYsMjQwMTIsMjk2MDksMzAyODQsMzA1MjQsMjM3MjEsMzI3NDcsMzYxMDcsMzg1OTMsMzg5MjksMzg5OTYsMzkwMDAsMjAyMjUsMjAyMzgsMjEzNjEsMjE5MTYsMjIxMjAsMjI1MjIsMjI4NTUsMjMzMDUsMjM0OTIsMjM2OTYsMjQwNzYsMjQxOTAsMjQ1MjQsMjU1ODIsMjY0MjYsMjYwNzEsMjYwODIsMjYzOTksMjY4MjcsMjY4MjAsMjcyMzEsMjQxMTIsMjc1ODksMjc2NzEsMjc3NzMsMzAwNzksMzEwNDgsMjMzOTUsMzEyMzIsMzIwMDAsMjQ1MDksMzUyMTUsMzUzNTIsMzYwMjAsMzYyMTUsMzY1NTYsMzY2MzcsMzkxMzgsMzk0MzgsMzk3NDAsMjAwOTYsMjA2MDUsMjA3MzYsMjI5MzEsMjM0NTIsMjUxMzUsMjUyMTYsMjU4MzYsMjc0NTAsMjkzNDQsMzAwOTcsMzEwNDcsMzI2ODEsMzQ4MTEsMzU1MTYsMzU2OTYsMjU1MTYsMzM3MzgsMzg4MTYsMjE1MTMsMjE1MDcsMjE5MzEsMjY3MDgsMjcyMjQsMzU0NDAsMzA3NTksMjY0ODUsNDA2NTMsMjEzNjQsMjM0NTgsMzMwNTAsMzQzODQsMzY4NzAsMTk5OTIsMjAwMzcsMjAxNjcsMjAyNDEsMjE0NTAsMjE1NjAsMjM0NzAsMjQzMzksMjQ2MTMsMjU5MzcsMjY0MjksMjc3MTQsMjc3NjIsMjc4NzUsMjg3OTIsMjk2OTksMzEzNTAsMzE0MDYsMzE0OTYsMzIwMjYsMzE5OTgsMzIxMDIsMjYwODcsMjkyNzUsMjE0MzUsMjM2MjEsMjQwNDAsMjUyOTgsMjUzMTIsMjUzNjksMjgxOTIsMzQzOTQsMzUzNzcsMzYzMTcsMzc2MjQsMjg0MTcsMzExNDIsMzk3NzAsMjAxMzYsMjAxMzksMjAxNDAsMjAzNzksMjAzODQsMjA2ODksMjA4MDcsMzE0NzgsMjA4NDksMjA5ODIsMjEzMzIsMjEyODEsMjEzNzUsMjE0ODMsMjE5MzIsMjI2NTksMjM3NzcsMjQzNzUsMjQzOTQsMjQ2MjMsMjQ2NTYsMjQ2ODUsMjUzNzUsMjU5NDUsMjcyMTEsMjc4NDEsMjkzNzgsMjk0MjEsMzA3MDMsMzMwMTYsMzMwMjksMzMyODgsMzQxMjYsMzcxMTEsMzc4NTcsMzg5MTEsMzkyNTUsMzk1MTQsMjAyMDgsMjA5NTcsMjM1OTcsMjYyNDEsMjY5ODksMjM2MTYsMjYzNTQsMjY5OTcsMjk1NzcsMjY3MDQsMzE4NzMsMjA2NzcsMjEyMjAsMjIzNDMsMjQwNjIsMzc2NzAsMjYwMjAsMjc0MjcsMjc0NTMsMjk3NDgsMzExMDUsMzExNjUsMzE1NjMsMzIyMDIsMzM0NjUsMzM3NDAsMzQ5NDMsMzUxNjcsMzU2NDEsMzY4MTcsMzczMjksMjE1MzUsMzc1MDQsMjAwNjEsMjA1MzQsMjE0NzcsMjEzMDYsMjkzOTksMjk1OTAsMzA2OTcsMzM1MTAsMzY1MjcsMzkzNjYsMzkzNjgsMzkzNzgsMjA4NTUsMjQ4NTgsMzQzOTgsMjE5MzYsMzEzNTQsMjA1OTgsMjM1MDcsMzY5MzUsMzg1MzMsMjAwMTgsMjczNTUsMzczNTEsMjM2MzMsMjM2MjQsMjU0OTYsMzEzOTEsMjc3OTUsMzg3NzIsMzY3MDUsMzE0MDIsMjkwNjYsMzg1MzYsMzE4NzQsMjY2NDcsMzIzNjgsMjY3MDUsMzc3NDAsMjEyMzQsMjE1MzEsMzQyMTksMzUzNDcsMzI2NzYsMzY1NTcsMzcwODksMjEzNTAsMzQ5NTIsMzEwNDEsMjA0MTgsMjA2NzAsMjEwMDksMjA4MDQsMjE4NDMsMjIzMTcsMjk2NzQsMjI0MTEsMjI4NjUsMjQ0MTgsMjQ0NTIsMjQ2OTMsMjQ5NTAsMjQ5MzUsMjUwMDEsMjU1MjIsMjU2NTgsMjU5NjQsMjYyMjMsMjY2OTAsMjgxNzksMzAwNTQsMzEyOTMsMzE5OTUsMzIwNzYsMzIxNTMsMzIzMzEsMzI2MTksMzM1NTAsMzM2MTAsMzQ1MDksMzUzMzYsMzU0MjcsMzU2ODYsMzY2MDUsMzg5MzgsNDAzMzUsMzM0NjQsMzY4MTQsMzk5MTIsMjExMjcsMjUxMTksMjU3MzEsMjg2MDgsMzg1NTMsMjY2ODksMjA2MjUsMjc0MjQsMjc3NzAsMjg1MDAsMzEzNDgsMzIwODAsMzQ4ODAsMzUzNjMsMjYzNzYsMjAyMTQsMjA1MzcsMjA1MTgsMjA1ODEsMjA4NjAsMjEwNDgsMjEwOTEsMjE5MjcsMjIyODcsMjI1MzMsMjMyNDQsMjQzMTQsMjUwMTAsMjUwODAsMjUzMzEsMjU0NTgsMjY5MDgsMjcxNzcsMjkzMDksMjkzNTYsMjk0ODYsMzA3NDAsMzA4MzEsMzIxMjEsMzA0NzYsMzI5MzcsMzUyMTEsMzU2MDksMzYwNjYsMzY1NjIsMzY5NjMsMzc3NDksMzg1MjIsMzg5OTcsMzk0NDMsNDA1NjgsMjA4MDMsMjE0MDcsMjE0MjcsMjQxODcsMjQzNTgsMjgxODcsMjgzMDQsMjk1NzIsMjk2OTQsMzIwNjcsMzMzMzUsMzUzMjgsMzU1NzgsMzg0ODAsMjAwNDYsMjA0OTEsMjE0NzYsMjE2MjgsMjIyNjYsMjI5OTMsMjMzOTYsMjQwNDksMjQyMzUsMjQzNTksMjUxNDQsMjU5MjUsMjY1NDMsMjgyNDYsMjkzOTIsMzE5NDYsMzQ5OTYsMzI5MjksMzI5OTMsMzM3NzYsMzQzODIsMzU0NjMsMzYzMjgsMzc0MzEsMzg1OTksMzkwMTUsNDA3MjMsMjAxMTYsMjAxMTQsMjAyMzcsMjEzMjAsMjE1NzcsMjE1NjYsMjMwODcsMjQ0NjAsMjQ0ODEsMjQ3MzUsMjY3OTEsMjcyNzgsMjk3ODYsMzA4NDksMzU0ODYsMzU0OTIsMzU3MDMsMzcyNjQsMjAwNjIsMzk4ODEsMjAxMzIsMjAzNDgsMjAzOTksMjA1MDUsMjA1MDIsMjA4MDksMjA4NDQsMjExNTEsMjExNzcsMjEyNDYsMjE0MDIsMjE0NzUsMjE1MjEsMjE1MTgsMjE4OTcsMjIzNTMsMjI0MzQsMjI5MDksMjMzODAsMjMzODksMjM0MzksMjQwMzcsMjQwMzksMjQwNTUsMjQxODQsMjQxOTUsMjQyMTgsMjQyNDcsMjQzNDQsMjQ2NTgsMjQ5MDgsMjUyMzksMjUzMDQsMjU1MTEsMjU5MTUsMjYxMTQsMjYxNzksMjYzNTYsMjY0NzcsMjY2NTcsMjY3NzUsMjcwODMsMjc3NDMsMjc5NDYsMjgwMDksMjgyMDcsMjgzMTcsMzAwMDIsMzAzNDMsMzA4MjgsMzEyOTUsMzE5NjgsMzIwMDUsMzIwMjQsMzIwOTQsMzIxNzcsMzI3ODksMzI3NzEsMzI5NDMsMzI5NDUsMzMxMDgsMzMxNjcsMzMzMjIsMzM2MTgsMzQ4OTIsMzQ5MTMsMzU2MTEsMzYwMDIsMzYwOTIsMzcwNjYsMzcyMzcsMzc0ODksMzA3ODMsMzc2MjgsMzgzMDgsMzg0NzcsMzg5MTcsMzkzMjEsMzk2NDAsNDAyNTEsMjEwODMsMjExNjMsMjE0OTUsMjE1MTIsMjI3NDEsMjUzMzUsMjg2NDAsMzU5NDYsMzY3MDMsNDA2MzMsMjA4MTEsMjEwNTEsMjE1NzgsMjIyNjksMzEyOTYsMzcyMzksNDAyODgsNDA2NTgsMjk1MDgsMjg0MjUsMzMxMzYsMjk5NjksMjQ1NzMsMjQ3OTQsMzk1OTIsMjk0MDMsMzY3OTYsMjc0OTIsMzg5MTUsMjAxNzAsMjIyNTYsMjIzNzIsMjI3MTgsMjMxMzAsMjQ2ODAsMjUwMzEsMjYxMjcsMjYxMTgsMjY2ODEsMjY4MDEsMjgxNTEsMzAxNjUsMzIwNTgsMzMzOTAsMzk3NDYsMjAxMjMsMjAzMDQsMjE0NDksMjE3NjYsMjM5MTksMjQwMzgsMjQwNDYsMjY2MTksMjc4MDEsMjk4MTEsMzA3MjIsMzU0MDgsMzc3ODIsMzUwMzksMjIzNTIsMjQyMzEsMjUzODcsMjA2NjEsMjA2NTIsMjA4NzcsMjYzNjgsMjE3MDUsMjI2MjIsMjI5NzEsMjM0NzIsMjQ0MjUsMjUxNjUsMjU1MDUsMjY2ODUsMjc1MDcsMjgxNjgsMjg3OTcsMzczMTksMjkzMTIsMzA3NDEsMzA3NTgsMzEwODUsMjU5OTgsMzIwNDgsMzM3NTYsMzUwMDksMzY2MTcsMzg1NTUsMjEwOTIsMjIzMTIsMjY0NDgsMzI2MTgsMzYwMDEsMjA5MTYsMjIzMzgsMzg0NDIsMjI1ODYsMjcwMTgsMzI5NDgsMjE2ODIsMjM4MjIsMjI1MjQsMzA4NjksNDA0NDIsMjAzMTYsMjEwNjYsMjE2NDMsMjU2NjIsMjYxNTIsMjYzODgsMjY2MTMsMzEzNjQsMzE1NzQsMzIwMzQsMzc2NzksMjY3MTYsMzk4NTMsMzE1NDUsMjEyNzMsMjA4NzQsMjEwNDcsMjM1MTksMjUzMzQsMjU3NzQsMjU4MzAsMjY0MTMsMjc1NzgsMzQyMTcsMzg2MDksMzAzNTIsMzk4OTQsMjU0MjAsMzc2MzgsMzk4NTEsMzAzOTksMjYxOTQsMTk5NzcsMjA2MzIsMjE0NDIsMjM2NjUsMjQ4MDgsMjU3NDYsMjU5NTUsMjY3MTksMjkxNTgsMjk2NDIsMjk5ODcsMzE2MzksMzIzODYsMzQ0NTMsMzU3MTUsMzYwNTksMzcyNDAsMzkxODQsMjYwMjgsMjYyODMsMjc1MzEsMjAxODEsMjAxODAsMjAyODIsMjAzNTEsMjEwNTAsMjE0OTYsMjE0OTAsMjE5ODcsMjIyMzUsMjI3NjMsMjI5ODcsMjI5ODUsMjMwMzksMjMzNzYsMjM2MjksMjQwNjYsMjQxMDcsMjQ1MzUsMjQ2MDUsMjUzNTEsMjU5MDMsMjMzODgsMjYwMzEsMjYwNDUsMjYwODgsMjY1MjUsMjc0OTAsMjc1MTUsMjc2NjMsMjk1MDksMzEwNDksMzExNjksMzE5OTIsMzIwMjUsMzIwNDMsMzI5MzAsMzMwMjYsMzMyNjcsMzUyMjIsMzU0MjIsMzU0MzMsMzU0MzAsMzU0NjgsMzU1NjYsMzYwMzksMzYwNjAsMzg2MDQsMzkxNjQsMjc1MDMsMjAxMDcsMjAyODQsMjAzNjUsMjA4MTYsMjMzODMsMjM1NDYsMjQ5MDQsMjUzNDUsMjYxNzgsMjc0MjUsMjgzNjMsMjc4MzUsMjkyNDYsMjk4ODUsMzAxNjQsMzA5MTMsMzEwMzQsMzI3ODAsMzI4MTksMzMyNTgsMzM5NDAsMzY3NjYsMjc3MjgsNDA1NzUsMjQzMzUsMzU2NzIsNDAyMzUsMzE0ODIsMzY2MDAsMjM0MzcsMzg2MzUsMTk5NzEsMjE0ODksMjI1MTksMjI4MzMsMjMyNDEsMjM0NjAsMjQ3MTMsMjgyODcsMjg0MjIsMzAxNDIsMzYwNzQsMjM0NTUsMzQwNDgsMzE3MTIsMjA1OTQsMjY2MTIsMzM0MzcsMjM2NDksMzQxMjIsMzIyODYsMzMyOTQsMjA4ODksMjM1NTYsMjU0NDgsMzYxOTgsMjYwMTIsMjkwMzgsMzEwMzgsMzIwMjMsMzI3NzMsMzU2MTMsMzY1NTQsMzY5NzQsMzQ1MDMsMzcwMzQsMjA1MTEsMjEyNDIsMjM2MTAsMjY0NTEsMjg3OTYsMjkyMzcsMzcxOTYsMzczMjAsMzc2NzUsMzM1MDksMjM0OTAsMjQzNjksMjQ4MjUsMjAwMjcsMjE0NjIsMjM0MzIsMjUxNjMsMjY0MTcsMjc1MzAsMjk0MTcsMjk2NjQsMzEyNzgsMzMxMzEsMzYyNTksMzcyMDIsMzkzMTgsMjA3NTQsMjE0NjMsMjE2MTAsMjM1NTEsMjU0ODAsMjcxOTMsMzIxNzIsMzg2NTYsMjIyMzQsMjE0NTQsMjE2MDgsMjM0NDcsMjM2MDEsMjQwMzAsMjA0NjIsMjQ4MzMsMjUzNDIsMjc5NTQsMzExNjgsMzExNzksMzIwNjYsMzIzMzMsMzI3MjIsMzMyNjEsMzMzMTEsMzM5MzYsMzQ4ODYsMzUxODYsMzU3MjgsMzY0NjgsMzY2NTUsMzY5MTMsMzcxOTUsMzcyMjgsMzg1OTgsMzcyNzYsMjAxNjAsMjAzMDMsMjA4MDUsMjEzMTMsMjQ0NjcsMjUxMDIsMjY1ODAsMjc3MTMsMjgxNzEsMjk1MzksMzIyOTQsMzczMjUsMzc1MDcsMjE0NjAsMjI4MDksMjM0ODcsMjgxMTMsMzEwNjksMzIzMDIsMzE4OTksMjI2NTQsMjkwODcsMjA5ODYsMzQ4OTksMzY4NDgsMjA0MjYsMjM4MDMsMjYxNDksMzA2MzYsMzE0NTksMzMzMDgsMzk0MjMsMjA5MzQsMjQ0OTAsMjYwOTIsMjY5OTEsMjc1MjksMjgxNDcsMjgzMTAsMjg1MTYsMzA0NjIsMzIwMjAsMjQwMzMsMzY5ODEsMzcyNTUsMzg5MTgsMjA5NjYsMjEwMjEsMjUxNTIsMjYyNTcsMjYzMjksMjgxODYsMjQyNDYsMzIyMTAsMzI2MjYsMjYzNjAsMzQyMjMsMzQyOTUsMzU1NzYsMjExNjEsMjE0NjUsMjI4OTksMjQyMDcsMjQ0NjQsMjQ2NjEsMzc2MDQsMzg1MDAsMjA2NjMsMjA3NjcsMjEyMTMsMjEyODAsMjEzMTksMjE0ODQsMjE3MzYsMjE4MzAsMjE4MDksMjIwMzksMjI4ODgsMjI5NzQsMjMxMDAsMjM0NzcsMjM1NTgsMjM1NjcsMjM1NjksMjM1NzgsMjQxOTYsMjQyMDIsMjQyODgsMjQ0MzIsMjUyMTUsMjUyMjAsMjUzMDcsMjU0ODQsMjU0NjMsMjYxMTksMjYxMjQsMjYxNTcsMjYyMzAsMjY0OTQsMjY3ODYsMjcxNjcsMjcxODksMjc4MzYsMjgwNDAsMjgxNjksMjgyNDgsMjg5ODgsMjg5NjYsMjkwMzEsMzAxNTEsMzA0NjUsMzA4MTMsMzA5NzcsMzEwNzcsMzEyMTYsMzE0NTYsMzE1MDUsMzE5MTEsMzIwNTcsMzI5MTgsMzM3NTAsMzM5MzEsMzQxMjEsMzQ5MDksMzUwNTksMzUzNTksMzUzODgsMzU0MTIsMzU0NDMsMzU5MzcsMzYwNjIsMzcyODQsMzc0NzgsMzc3NTgsMzc5MTIsMzg1NTYsMzg4MDgsMTk5NzgsMTk5NzYsMTk5OTgsMjAwNTUsMjA4ODcsMjExMDQsMjI0NzgsMjI1ODAsMjI3MzIsMjMzMzAsMjQxMjAsMjQ3NzMsMjU4NTQsMjY0NjUsMjY0NTQsMjc5NzIsMjkzNjYsMzAwNjcsMzEzMzEsMzM5NzYsMzU2OTgsMzczMDQsMzc2NjQsMjIwNjUsMjI1MTYsMzkxNjYsMjUzMjUsMjY4OTMsMjc1NDIsMjkxNjUsMzIzNDAsMzI4ODcsMzMzOTQsMzUzMDIsMzkxMzUsMzQ2NDUsMzY3ODUsMjM2MTEsMjAyODAsMjA0NDksMjA0MDUsMjE3NjcsMjMwNzIsMjM1MTcsMjM1MjksMjQ1MTUsMjQ5MTAsMjUzOTEsMjYwMzIsMjYxODcsMjY4NjIsMjcwMzUsMjgwMjQsMjgxNDUsMzAwMDMsMzAxMzcsMzA0OTUsMzEwNzAsMzEyMDYsMzIwNTEsMzMyNTEsMzM0NTUsMzQyMTgsMzUyNDIsMzUzODYsMzY1MjMsMzY3NjMsMzY5MTQsMzczNDEsMzg2NjMsMjAxNTQsMjAxNjEsMjA5OTUsMjI2NDUsMjI3NjQsMjM1NjMsMjk5NzgsMjM2MTMsMzMxMDIsMzUzMzgsMzY4MDUsMzg0OTksMzg3NjUsMzE1MjUsMzU1MzUsMzg5MjAsMzcyMTgsMjIyNTksMjE0MTYsMzY4ODcsMjE1NjEsMjI0MDIsMjQxMDEsMjU1MTIsMjc3MDAsMjg4MTAsMzA1NjEsMzE4ODMsMzI3MzYsMzQ5MjgsMzY5MzAsMzcyMDQsMzc2NDgsMzc2NTYsMzg1NDMsMjk3OTAsMzk2MjAsMjM4MTUsMjM5MTMsMjU5NjgsMjY1MzAsMzYyNjQsMzg2MTksMjU0NTQsMjY0NDEsMjY5MDUsMzM3MzMsMzg5MzUsMzg1OTIsMzUwNzAsMjg1NDgsMjU3MjIsMjM1NDQsMTk5OTAsMjg3MTYsMzAwNDUsMjYxNTksMjA5MzIsMjEwNDYsMjEyMTgsMjI5OTUsMjQ0NDksMjQ2MTUsMjUxMDQsMjU5MTksMjU5NzIsMjYxNDMsMjYyMjgsMjY4NjYsMjY2NDYsMjc0OTEsMjgxNjUsMjkyOTgsMjk5ODMsMzA0MjcsMzE5MzQsMzI4NTQsMjI3NjgsMzUwNjksMzUxOTksMzU0ODgsMzU0NzUsMzU1MzEsMzY4OTMsMzcyNjYsMzg3MzgsMzg3NDUsMjU5OTMsMzEyNDYsMzMwMzAsMzg1ODcsMjQxMDksMjQ3OTYsMjUxMTQsMjYwMjEsMjYxMzIsMjY1MTIsMzA3MDcsMzEzMDksMzE4MjEsMzIzMTgsMzMwMzQsMzYwMTIsMzYxOTYsMzYzMjEsMzY0NDcsMzA4ODksMjA5OTksMjUzMDUsMjU1MDksMjU2NjYsMjUyNDAsMzUzNzMsMzEzNjMsMzE2ODAsMzU1MDAsMzg2MzQsMzIxMTgsMzMyOTIsMzQ2MzMsMjAxODUsMjA4MDgsMjEzMTUsMjEzNDQsMjM0NTksMjM1NTQsMjM1NzQsMjQwMjksMjUxMjYsMjUxNTksMjU3NzYsMjY2NDMsMjY2NzYsMjc4NDksMjc5NzMsMjc5MjcsMjY1NzksMjg1MDgsMjkwMDYsMjkwNTMsMjYwNTksMzEzNTksMzE2NjEsMzIyMTgsMzIzMzAsMzI2ODAsMzMxNDYsMzMzMDcsMzMzMzcsMzQyMTQsMzU0MzgsMzYwNDYsMzYzNDEsMzY5ODQsMzY5ODMsMzc1NDksMzc1MjEsMzgyNzUsMzk4NTQsMjEwNjksMjE4OTIsMjg0NzIsMjg5ODIsMjA4NDAsMzExMDksMzIzNDEsMzMyMDMsMzE5NTAsMjIwOTIsMjI2MDksMjM3MjAsMjU1MTQsMjYzNjYsMjYzNjUsMjY5NzAsMjk0MDEsMzAwOTUsMzAwOTQsMzA5OTAsMzEwNjIsMzExOTksMzE4OTUsMzIwMzIsMzIwNjgsMzQzMTEsMzUzODAsMzg0NTksMzY5NjEsNDA3MzYsMjA3MTEsMjExMDksMjE0NTIsMjE0NzQsMjA0ODksMjE5MzAsMjI3NjYsMjI4NjMsMjkyNDUsMjM0MzUsMjM2NTIsMjEyNzcsMjQ4MDMsMjQ4MTksMjU0MzYsMjU0NzUsMjU0MDcsMjU1MzEsMjU4MDUsMjYwODksMjYzNjEsMjQwMzUsMjcwODUsMjcxMzMsMjg0MzcsMjkxNTcsMjAxMDUsMzAxODUsMzA0NTYsMzEzNzksMzE5NjcsMzIyMDcsMzIxNTYsMzI4NjUsMzM2MDksMzM2MjQsMzM5MDAsMzM5ODAsMzQyOTksMzUwMTMsMzYyMDgsMzY4NjUsMzY5NzMsMzc3ODMsMzg2ODQsMzk0NDIsMjA2ODcsMjI2NzksMjQ5NzQsMzMyMzUsMzQxMDEsMzYxMDQsMzY4OTYsMjA0MTksMjA1OTYsMjEwNjMsMjEzNjMsMjQ2ODcsMjU0MTcsMjY0NjMsMjgyMDQsMzYyNzUsMzY4OTUsMjA0MzksMjM2NDYsMzYwNDIsMjYwNjMsMzIxNTQsMjEzMzAsMzQ5NjYsMjA4NTQsMjU1MzksMjMzODQsMjM0MDMsMjM1NjIsMjU2MTMsMjY0NDksMzY5NTYsMjAxODIsMjI4MTAsMjI4MjYsMjc3NjAsMzU0MDksMjE4MjIsMjI1NDksMjI5NDksMjQ4MTYsMjUxNzEsMjY1NjEsMzMzMzMsMjY5NjUsMzg0NjQsMzkzNjQsMzk0NjQsMjAzMDcsMjI1MzQsMjM1NTAsMzI3ODQsMjM3MjksMjQxMTEsMjQ0NTMsMjQ2MDgsMjQ5MDcsMjUxNDAsMjYzNjcsMjc4ODgsMjgzODIsMzI5NzQsMzMxNTEsMzM0OTIsMzQ5NTUsMzYwMjQsMzY4NjQsMzY5MTAsMzg1MzgsNDA2NjcsMzk4OTksMjAxOTUsMjE0ODgsMjI4MjMsMzE1MzIsMzcyNjEsMzg5ODgsNDA0NDEsMjgzODEsMjg3MTEsMjEzMzEsMjE4MjgsMjM0MjksMjUxNzYsMjUyNDYsMjUyOTksMjc4MTAsMjg2NTUsMjk3MzAsMzUzNTEsMzc5NDQsMjg2MDksMzU1ODIsMzM1OTIsMjA5NjcsMzQ1NTIsMjE0ODIsMjE0ODEsMjAyOTQsMzY5NDgsMzY3ODQsMjI4OTAsMzMwNzMsMjQwNjEsMzE0NjYsMzY3OTksMjY4NDIsMzU4OTUsMjk0MzIsNDAwMDgsMjcxOTcsMzU1MDQsMjAwMjUsMjEzMzYsMjIwMjIsMjIzNzQsMjUyODUsMjU1MDYsMjYwODYsMjc0NzAsMjgxMjksMjgyNTEsMjg4NDUsMzA3MDEsMzE0NzEsMzE2NTgsMzIxODcsMzI4MjksMzI5NjYsMzQ1MDcsMzU0NzcsMzc3MjMsMjIyNDMsMjI3MjcsMjQzODIsMjYwMjksMjYyNjIsMjcyNjQsMjc1NzMsMzAwMDcsMzU1MjcsMjA1MTYsMzA2OTMsMjIzMjAsMjQzNDcsMjQ2NzcsMjYyMzQsMjc3NDQsMzAxOTYsMzEyNTgsMzI2MjIsMzMyNjgsMzQ1ODQsMzY5MzMsMzkzNDcsMzE2ODksMzAwNDQsMzE0ODEsMzE1NjksMzM5ODgsMzY4ODAsMzEyMDksMzEzNzgsMzM1OTAsMjMyNjUsMzA1MjgsMjAwMTMsMjAyMTAsMjM0NDksMjQ1NDQsMjUyNzcsMjYxNzIsMjY2MDksMjc4ODAsMzQ0MTEsMzQ5MzUsMzUzODcsMzcxOTgsMzc2MTksMzkzNzYsMjcxNTksMjg3MTAsMjk0ODIsMzM1MTEsMzM4NzksMzYwMTUsMTk5NjksMjA4MDYsMjA5MzksMjE4OTksMjM1NDEsMjQwODYsMjQxMTUsMjQxOTMsMjQzNDAsMjQzNzMsMjQ0MjcsMjQ1MDAsMjUwNzQsMjUzNjEsMjYyNzQsMjYzOTcsMjg1MjYsMjkyNjYsMzAwMTAsMzA1MjIsMzI4ODQsMzMwODEsMzMxNDQsMzQ2NzgsMzU1MTksMzU1NDgsMzYyMjksMzYzMzksMzc1MzAsMzgyNjMsMzg5MTQsNDAxNjUsMjExODksMjU0MzEsMzA0NTIsMjYzODksMjc3ODQsMjk2NDUsMzYwMzUsMzc4MDYsMzg1MTUsMjc5NDEsMjI2ODQsMjY4OTQsMjcwODQsMzY4NjEsMzc3ODYsMzAxNzEsMzY4OTAsMjI2MTgsMjY2MjYsMjU1MjQsMjcxMzEsMjAyOTEsMjg0NjAsMjY1ODQsMzY3OTUsMzQwODYsMzIxODAsMzc3MTYsMjY5NDMsMjg1MjgsMjIzNzgsMjI3NzUsMjMzNDAsMzIwNDQsMjkyMjYsMjE1MTQsMzczNDcsNDAzNzIsMjAxNDEsMjAzMDIsMjA1NzIsMjA1OTcsMjEwNTksMzU5OTgsMjE1NzYsMjI1NjQsMjM0NTAsMjQwOTMsMjQyMTMsMjQyMzcsMjQzMTEsMjQzNTEsMjQ3MTYsMjUyNjksMjU0MDIsMjU1NTIsMjY3OTksMjc3MTIsMzA4NTUsMzExMTgsMzEyNDMsMzIyMjQsMzMzNTEsMzUzMzAsMzU1NTgsMzY0MjAsMzY4ODMsMzcwNDgsMzcxNjUsMzczMzYsNDA3MTgsMjc4NzcsMjU2ODgsMjU4MjYsMjU5NzMsMjg0MDQsMzAzNDAsMzE1MTUsMzY5NjksMzc4NDEsMjgzNDYsMjE3NDYsMjQ1MDUsMjU3NjQsMzY2ODUsMzY4NDUsMzc0NDQsMjA4NTYsMjI2MzUsMjI4MjUsMjM2MzcsMjQyMTUsMjgxNTUsMzIzOTksMjk5ODAsMzYwMjgsMzY1NzgsMzkwMDMsMjg4NTcsMjAyNTMsMjc1ODMsMjg1OTMsMzAwMDAsMzg2NTEsMjA4MTQsMjE1MjAsMjI1ODEsMjI2MTUsMjI5NTYsMjM2NDgsMjQ0NjYsMjYwMDcsMjY0NjAsMjgxOTMsMzAzMzEsMzM3NTksMzYwNzcsMzY4ODQsMzcxMTcsMzc3MDksMzA3NTcsMzA3NzgsMjExNjIsMjQyMzAsMjIzMDMsMjI5MDAsMjQ1OTQsMjA0OTgsMjA4MjYsMjA5MDgsMjA5NDEsMjA5OTIsMjE3NzYsMjI2MTIsMjI2MTYsMjI4NzEsMjM0NDUsMjM3OTgsMjM5NDcsMjQ3NjQsMjUyMzcsMjU2NDUsMjY0ODEsMjY2OTEsMjY4MTIsMjY4NDcsMzA0MjMsMjgxMjAsMjgyNzEsMjgwNTksMjg3ODMsMjkxMjgsMjQ0MDMsMzAxNjgsMzEwOTUsMzE1NjEsMzE1NzIsMzE1NzAsMzE5NTgsMzIxMTMsMjEwNDAsMzM4OTEsMzQxNTMsMzQyNzYsMzUzNDIsMzU1ODgsMzU5MTAsMzYzNjcsMzY4NjcsMzY4NzksMzc5MTMsMzg1MTgsMzg5NTcsMzk0NzIsMzgzNjAsMjA2ODUsMjEyMDUsMjE1MTYsMjI1MzAsMjM1NjYsMjQ5OTksMjU3NTgsMjc5MzQsMzA2NDMsMzE0NjEsMzMwMTIsMzM3OTYsMzY5NDcsMzc1MDksMjM3NzYsNDAxOTksMjEzMTEsMjQ0NzEsMjQ0OTksMjgwNjAsMjkzMDUsMzA1NjMsMzExNjcsMzE3MTYsMjc2MDIsMjk0MjAsMzU1MDEsMjY2MjcsMjcyMzMsMjA5ODQsMzEzNjEsMjY5MzIsMjM2MjYsNDAxODIsMzM1MTUsMjM0OTMsMzcxOTMsMjg3MDIsMjIxMzYsMjM2NjMsMjQ3NzUsMjU5NTgsMjc3ODgsMzU5MzAsMzY5MjksMzg5MzEsMjE1ODUsMjYzMTEsMzczODksMjI4NTYsMzcwMjcsMjA4NjksMjAwNDUsMjA5NzAsMzQyMDEsMzU1OTgsMjg3NjAsMjU0NjYsMzc3MDcsMjY5NzgsMzkzNDgsMzIyNjAsMzAwNzEsMjEzMzUsMjY5NzYsMzY1NzUsMzg2MjcsMjc3NDEsMjAxMDgsMjM2MTIsMjQzMzYsMzY4NDEsMjEyNTAsMzYwNDksMzI5MDUsMzQ0MjUsMjQzMTksMjYwODUsMjAwODMsMjA4MzcsMjI5MTQsMjM2MTUsMzg4OTQsMjAyMTksMjI5MjIsMjQ1MjUsMzU0NjksMjg2NDEsMzExNTIsMzEwNzQsMjM1MjcsMzM5MDUsMjk0ODMsMjkxMDUsMjQxODAsMjQ1NjUsMjU0NjcsMjU3NTQsMjkxMjMsMzE4OTYsMjAwMzUsMjQzMTYsMjAwNDMsMjI0OTIsMjIxNzgsMjQ3NDUsMjg2MTEsMzIwMTMsMzMwMjEsMzMwNzUsMzMyMTUsMzY3ODYsMzUyMjMsMzQ0NjgsMjQwNTIsMjUyMjYsMjU3NzMsMzUyMDcsMjY0ODcsMjc4NzQsMjc5NjYsMjk3NTAsMzA3NzIsMjMxMTAsMzI2MjksMzM0NTMsMzkzNDAsMjA0NjcsMjQyNTksMjUzMDksMjU0OTAsMjU5NDMsMjY0NzksMzA0MDMsMjkyNjAsMzI5NzIsMzI5NTQsMzY2NDksMzcxOTcsMjA0OTMsMjI1MjEsMjMxODYsMjY3NTcsMjY5OTUsMjkwMjgsMjk0MzcsMzYwMjMsMjI3NzAsMzYwNjQsMzg1MDYsMzY4ODksMzQ2ODcsMzEyMDQsMzA2OTUsMzM4MzMsMjAyNzEsMjEwOTMsMjEzMzgsMjUyOTMsMjY1NzUsMjc4NTAsMzAzMzMsMzE2MzYsMzE4OTMsMzMzMzQsMzQxODAsMzY4NDMsMjYzMzMsMjg0NDgsMjkxOTAsMzIyODMsMzM3MDcsMzkzNjEsNDA2MTQsMjA5ODksMzE2NjUsMzA4MzQsMzE2NzIsMzI5MDMsMzE1NjAsMjczNjgsMjQxNjEsMzI5MDgsMzAwMzMsMzAwNDgsMjA4NDMsMzc0NzQsMjgzMDAsMzAzMzAsMzcyNzEsMzk2NTgsMjAyNDAsMzI2MjQsMjUyNDQsMzE1NjcsMzgzMDksNDAxNjksMjIxMzgsMjI2MTcsMzQ1MzIsMzg1ODgsMjAyNzYsMjEwMjgsMjEzMjIsMjE0NTMsMjE0NjcsMjQwNzAsMjU2NDQsMjYwMDEsMjY0OTUsMjc3MTAsMjc3MjYsMjkyNTYsMjkzNTksMjk2NzcsMzAwMzYsMzIzMjEsMzMzMjQsMzQyODEsMzYwMDksMzE2ODQsMzczMTgsMjkwMzMsMzg5MzAsMzkxNTEsMjU0MDUsMjYyMTcsMzAwNTgsMzA0MzYsMzA5MjgsMzQxMTUsMzQ1NDIsMjEyOTAsMjEzMjksMjE1NDIsMjI5MTUsMjQxOTksMjQ0NDQsMjQ3NTQsMjUxNjEsMjUyMDksMjUyNTksMjYwMDAsMjc2MDQsMjc4NTIsMzAxMzAsMzAzODIsMzA4NjUsMzExOTIsMzIyMDMsMzI2MzEsMzI5MzMsMzQ5ODcsMzU1MTMsMzYwMjcsMzY5OTEsMzg3NTAsMzkxMzEsMjcxNDcsMzE4MDAsMjA2MzMsMjM2MTQsMjQ0OTQsMjY1MDMsMjc2MDgsMjk3NDksMzA0NzMsMzI2NTQsNDA3NjMsMjY1NzAsMzEyNTUsMjEzMDUsMzAwOTEsMzk2NjEsMjQ0MjIsMzMxODEsMzM3NzcsMzI5MjAsMjQzODAsMjQ1MTcsMzAwNTAsMzE1NTgsMzY5MjQsMjY3MjcsMjMwMTksMjMxOTUsMzIwMTYsMzAzMzQsMzU2MjgsMjA0NjksMjQ0MjYsMjcxNjEsMjc3MDMsMjg0MTgsMjk5MjIsMzEwODAsMzQ5MjAsMzU0MTMsMzU5NjEsMjQyODcsMjU1NTEsMzAxNDksMzExODYsMzM0OTUsMzc2NzIsMzc2MTgsMzM5NDgsMzQ1NDEsMzk5ODEsMjE2OTcsMjQ0MjgsMjU5OTYsMjc5OTYsMjg2OTMsMzYwMDcsMzYwNTEsMzg5NzEsMjU5MzUsMjk5NDIsMTk5ODEsMjAxODQsMjI0OTYsMjI4MjcsMjMxNDIsMjM1MDAsMjA5MDQsMjQwNjcsMjQyMjAsMjQ1OTgsMjUyMDYsMjU5NzUsMjYwMjMsMjYyMjIsMjgwMTQsMjkyMzgsMzE1MjYsMzMxMDQsMzMxNzgsMzM0MzMsMzU2NzYsMzYwMDAsMzYwNzAsMzYyMTIsMzg0MjgsMzg0NjgsMjAzOTgsMjU3NzEsMjc0OTQsMzMzMTAsMzM4ODksMzQxNTQsMzcwOTYsMjM1NTMsMjY5NjMsMzkwODAsMzM5MTQsMzQxMzUsMjAyMzksMjExMDMsMjQ0ODksMjQxMzMsMjYzODEsMzExMTksMzMxNDUsMzUwNzksMzUyMDYsMjgxNDksMjQzNDMsMjUxNzMsMjc4MzIsMjAxNzUsMjkyODksMzk4MjYsMjA5OTgsMjE1NjMsMjIxMzIsMjI3MDcsMjQ5OTYsMjUxOTgsMjg5NTQsMjI4OTQsMzE4ODEsMzE5NjYsMzIwMjcsMzg2NDAsMjU5OTEsMzI4NjIsMTk5OTMsMjAzNDEsMjA4NTMsMjI1OTIsMjQxNjMsMjQxNzksMjQzMzAsMjY1NjQsMjAwMDYsMzQxMDksMzgyODEsMzg0OTEsMzE4NTksMzg5MTMsMjA3MzEsMjI3MjEsMzAyOTQsMzA4ODcsMjEwMjksMzA2MjksMzQwNjUsMzE2MjIsMjA1NTksMjI3OTMsMjkyNTUsMzE2ODcsMzIyMzIsMzY3OTQsMzY4MjAsMzY5NDEsMjA0MTUsMjExOTMsMjMwODEsMjQzMjEsMzg4MjksMjA0NDUsMzMzMDMsMzc2MTAsMjIyNzUsMjU0MjksMjc0OTcsMjk5OTUsMzUwMzYsMzY2MjgsMzEyOTgsMjEyMTUsMjI2NzUsMjQ5MTcsMjUwOTgsMjYyODYsMjc1OTcsMzE4MDcsMzM3NjksMjA1MTUsMjA0NzIsMjEyNTMsMjE1NzQsMjI1NzcsMjI4NTcsMjM0NTMsMjM3OTIsMjM3OTEsMjM4NDksMjQyMTQsMjUyNjUsMjU0NDcsMjU5MTgsMjYwNDEsMjYzNzksMjc4NjEsMjc4NzMsMjg5MjEsMzA3NzAsMzIyOTksMzI5OTAsMzM0NTksMzM4MDQsMzQwMjgsMzQ1NjIsMzUwOTAsMzUzNzAsMzU5MTQsMzcwMzAsMzc1ODYsMzkxNjUsNDAxNzksNDAzMDAsMjAwNDcsMjAxMjksMjA2MjEsMjEwNzgsMjIzNDYsMjI5NTIsMjQxMjUsMjQ1MzYsMjQ1MzcsMjUxNTEsMjYyOTIsMjYzOTUsMjY1NzYsMjY4MzQsMjA4ODIsMzIwMzMsMzI5MzgsMzMxOTIsMzU1ODQsMzU5ODAsMzYwMzEsMzc1MDIsMzg0NTAsMjE1MzYsMzg5NTYsMjEyNzEsMjA2OTMsMjEzNDAsMjI2OTYsMjU3NzgsMjY0MjAsMjkyODcsMzA1NjYsMzEzMDIsMzczNTAsMjExODcsMjc4MDksMjc1MjYsMjI1MjgsMjQxNDAsMjI4NjgsMjY0MTIsMzI3NjMsMjA5NjEsMzA0MDYsMjU3MDUsMzA5NTIsMzk3NjQsNDA2MzUsMjI0NzUsMjI5NjksMjYxNTEsMjY1MjIsMjc1OTgsMjE3MzcsMjcwOTcsMjQxNDksMzMxODAsMjY1MTcsMzk4NTAsMjY2MjIsNDAwMTgsMjY3MTcsMjAxMzQsMjA0NTEsMjE0NDgsMjUyNzMsMjY0MTEsMjc4MTksMzY4MDQsMjAzOTcsMzIzNjUsNDA2MzksMTk5NzUsMjQ5MzAsMjgyODgsMjg0NTksMzQwNjcsMjE2MTksMjY0MTAsMzk3NDksMjQwNTEsMzE2MzcsMjM3MjQsMjM0OTQsMzQ1ODgsMjgyMzQsMzQwMDEsMzEyNTIsMzMwMzIsMjI5MzcsMzE4ODUsMjc2NjUsMzA0OTYsMjEyMDksMjI4MTgsMjg5NjEsMjkyNzksMzA2ODMsMzg2OTUsNDAyODksMjY4OTEsMjMxNjcsMjMwNjQsMjA5MDEsMjE1MTcsMjE2MjksMjYxMjYsMzA0MzEsMzY4NTUsMzc1MjgsNDAxODAsMjMwMTgsMjkyNzcsMjgzNTcsMjA4MTMsMjY4MjUsMzIxOTEsMzIyMzYsMzg3NTQsNDA2MzQsMjU3MjAsMjcxNjksMzM1MzgsMjI5MTYsMjMzOTEsMjc2MTEsMjk0NjcsMzA0NTAsMzIxNzgsMzI3OTEsMzM5NDUsMjA3ODYsMjY0MDgsNDA2NjUsMzA0NDYsMjY0NjYsMjEyNDcsMzkxNzMsMjM1ODgsMjUxNDcsMzE4NzAsMzYwMTYsMjE4MzksMjQ3NTgsMzIwMTEsMzgyNzIsMjEyNDksMjAwNjMsMjA5MTgsMjI4MTIsMjkyNDIsMzI4MjIsMzczMjYsMjQzNTcsMzA2OTAsMjEzODAsMjQ0NDEsMzIwMDQsMzQyMjAsMzUzNzksMzY0OTMsMzg3NDIsMjY2MTEsMzQyMjIsMzc5NzEsMjQ4NDEsMjQ4NDAsMjc4MzMsMzAyOTAsMzU1NjUsMzY2NjQsMjE4MDcsMjAzMDUsMjA3NzgsMjExOTEsMjE0NTEsMjM0NjEsMjQxODksMjQ3MzYsMjQ5NjIsMjU1NTgsMjYzNzcsMjY1ODYsMjgyNjMsMjgwNDQsMjk0OTQsMjk0OTUsMzAwMDEsMzEwNTYsMzUwMjksMzU0ODAsMzY5MzgsMzcwMDksMzcxMDksMzg1OTYsMzQ3MDEsMjI4MDUsMjAxMDQsMjAzMTMsMTk5ODIsMzU0NjUsMzY2NzEsMzg5MjgsMjA2NTMsMjQxODgsMjI5MzQsMjM0ODEsMjQyNDgsMjU1NjIsMjU1OTQsMjU3OTMsMjYzMzIsMjY5NTQsMjcwOTYsMjc5MTUsMjgzNDIsMjkwNzYsMjk5OTIsMzE0MDcsMzI2NTAsMzI3NjgsMzM4NjUsMzM5OTMsMzUyMDEsMzU2MTcsMzYzNjIsMzY5NjUsMzg1MjUsMzkxNzgsMjQ5NTgsMjUyMzMsMjc0NDIsMjc3NzksMjgwMjAsMzI3MTYsMzI3NjQsMjgwOTYsMzI2NDUsMzQ3NDYsMzUwNjQsMjY0NjksMzM3MTMsMzg5NzIsMzg2NDcsMjc5MzEsMzIwOTcsMzM4NTMsMzcyMjYsMjAwODEsMjEzNjUsMjM4ODgsMjczOTYsMjg2NTEsMzQyNTMsMzQzNDksMzUyMzksMjEwMzMsMjE1MTksMjM2NTMsMjY0NDYsMjY3OTIsMjk3MDIsMjk4MjcsMzAxNzgsMzUwMjMsMzUwNDEsMzczMjQsMzg2MjYsMzg1MjAsMjQ0NTksMjk1NzUsMzE0MzUsMzM4NzAsMjU1MDQsMzAwNTMsMjExMjksMjc5NjksMjgzMTYsMjk3MDUsMzAwNDEsMzA4MjcsMzE4OTAsMzg1MzQsMzE0NTIsNDA4NDUsMjA0MDYsMjQ5NDIsMjYwNTMsMzQzOTYsMjAxMDIsMjAxNDIsMjA2OTgsMjAwMDEsMjA5NDAsMjM1MzQsMjYwMDksMjY3NTMsMjgwOTIsMjk0NzEsMzAyNzQsMzA2MzcsMzEyNjAsMzE5NzUsMzMzOTEsMzU1MzgsMzY5ODgsMzczMjcsMzg1MTcsMzg5MzYsMjExNDcsMzIyMDksMjA1MjMsMjE0MDAsMjY1MTksMjgxMDcsMjkxMzYsMjk3NDcsMzMyNTYsMzY2NTAsMzg1NjMsNDAwMjMsNDA2MDcsMjk3OTIsMjI1OTMsMjgwNTcsMzIwNDcsMzkwMDYsMjAxOTYsMjAyNzgsMjAzNjMsMjA5MTksMjExNjksMjM5OTQsMjQ2MDQsMjk2MTgsMzEwMzYsMzM0OTEsMzc0MjgsMzg1ODMsMzg2NDYsMzg2NjYsNDA1OTksNDA4MDIsMjYyNzgsMjc1MDgsMjEwMTUsMjExNTUsMjg4NzIsMzUwMTAsMjQyNjUsMjQ2NTEsMjQ5NzYsMjg0NTEsMjkwMDEsMzE4MDYsMzIyNDQsMzI4NzksMzQwMzAsMzY4OTksMzc2NzYsMjE1NzAsMzk3OTEsMjczNDcsMjg4MDksMzYwMzQsMzYzMzUsMzg3MDYsMjExNzIsMjMxMDUsMjQyNjYsMjQzMjQsMjYzOTEsMjcwMDQsMjcwMjgsMjgwMTAsMjg0MzEsMjkyODIsMjk0MzYsMzE3MjUsMzI3NjksMzI4OTQsMzQ2MzUsMzcwNzAsMjA4NDUsNDA1OTUsMzExMDgsMzI5MDcsMzc2ODIsMzU1NDIsMjA1MjUsMjE2NDQsMzU0NDEsMjc0OTgsMzYwMzYsMzMwMzEsMjQ3ODUsMjY1MjgsNDA0MzQsMjAxMjEsMjAxMjAsMzk5NTIsMzU0MzUsMzQyNDEsMzQxNTIsMjY4ODAsMjgyODYsMzA4NzEsMzMxMDksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyNDMzMiwxOTk4NCwxOTk4OSwyMDAxMCwyMDAxNywyMDAyMiwyMDAyOCwyMDAzMSwyMDAzNCwyMDA1NCwyMDA1NiwyMDA5OCwyMDEwMSwzNTk0NywyMDEwNiwzMzI5OCwyNDMzMywyMDExMCwyMDEyNiwyMDEyNywyMDEyOCwyMDEzMCwyMDE0NCwyMDE0NywyMDE1MCwyMDE3NCwyMDE3MywyMDE2NCwyMDE2NiwyMDE2MiwyMDE4MywyMDE5MCwyMDIwNSwyMDE5MSwyMDIxNSwyMDIzMywyMDMxNCwyMDI3MiwyMDMxNSwyMDMxNywyMDMxMSwyMDI5NSwyMDM0MiwyMDM2MCwyMDM2NywyMDM3NiwyMDM0NywyMDMyOSwyMDMzNiwyMDM2OSwyMDMzNSwyMDM1OCwyMDM3NCwyMDc2MCwyMDQzNiwyMDQ0NywyMDQzMCwyMDQ0MCwyMDQ0MywyMDQzMywyMDQ0MiwyMDQzMiwyMDQ1MiwyMDQ1MywyMDUwNiwyMDUyMCwyMDUwMCwyMDUyMiwyMDUxNywyMDQ4NSwyMDI1MiwyMDQ3MCwyMDUxMywyMDUyMSwyMDUyNCwyMDQ3OCwyMDQ2MywyMDQ5NywyMDQ4NiwyMDU0NywyMDU1MSwyNjM3MSwyMDU2NSwyMDU2MCwyMDU1MiwyMDU3MCwyMDU2NiwyMDU4OCwyMDYwMCwyMDYwOCwyMDYzNCwyMDYxMywyMDY2MCwyMDY1OCwyMDY4MSwyMDY4MiwyMDY1OSwyMDY3NCwyMDY5NCwyMDcwMiwyMDcwOSwyMDcxNywyMDcwNywyMDcxOCwyMDcyOSwyMDcyNSwyMDc0NSwyMDczNywyMDczOCwyMDc1OCwyMDc1NywyMDc1NiwyMDc2MiwyMDc2OSwyMDc5NCwyMDc5MSwyMDc5NiwyMDc5NSwyMDc5OSwyMDgwMCwyMDgxOCwyMDgxMiwyMDgyMCwyMDgzNCwzMTQ4MCwyMDg0MSwyMDg0MiwyMDg0NiwyMDg2NCwyMDg2NiwyMjIzMiwyMDg3NiwyMDg3MywyMDg3OSwyMDg4MSwyMDg4MywyMDg4NSwyMDg4NiwyMDkwMCwyMDkwMiwyMDg5OCwyMDkwNSwyMDkwNiwyMDkwNywyMDkxNSwyMDkxMywyMDkxNCwyMDkxMiwyMDkxNywyMDkyNSwyMDkzMywyMDkzNywyMDk1NSwyMDk2MCwzNDM4OSwyMDk2OSwyMDk3MywyMDk3NiwyMDk4MSwyMDk5MCwyMDk5NiwyMTAwMywyMTAxMiwyMTAwNiwyMTAzMSwyMTAzNCwyMTAzOCwyMTA0MywyMTA0OSwyMTA3MSwyMTA2MCwyMTA2NywyMTA2OCwyMTA4NiwyMTA3NiwyMTA5OCwyMTEwOCwyMTA5NywyMTEwNywyMTExOSwyMTExNywyMTEzMywyMTE0MCwyMTEzOCwyMTEwNSwyMTEyOCwyMTEzNywzNjc3NiwzNjc3NSwyMTE2NCwyMTE2NSwyMTE4MCwyMTE3MywyMTE4NSwyMTE5NywyMTIwNywyMTIxNCwyMTIxOSwyMTIyMiwzOTE0OSwyMTIxNiwyMTIzNSwyMTIzNywyMTI0MCwyMTI0MSwyMTI1NCwyMTI1NiwzMDAwOCwyMTI2MSwyMTI2NCwyMTI2MywyMTI2OSwyMTI3NCwyMTI4MywyMTI5NSwyMTI5NywyMTI5OSwyMTMwNCwyMTMxMiwyMTMxOCwyMTMxNywxOTk5MSwyMTMyMSwyMTMyNSwyMDk1MCwyMTM0MiwyMTM1MywyMTM1OCwyMjgwOCwyMTM3MSwyMTM2NywyMTM3OCwyMTM5OCwyMTQwOCwyMTQxNCwyMTQxMywyMTQyMiwyMTQyNCwyMTQzMCwyMTQ0MywzMTc2MiwzODYxNywyMTQ3MSwyNjM2NCwyOTE2NiwyMTQ4NiwyMTQ4MCwyMTQ4NSwyMTQ5OCwyMTUwNSwyMTU2NSwyMTU2OCwyMTU0OCwyMTU0OSwyMTU2NCwyMTU1MCwyMTU1OCwyMTU0NSwyMTUzMywyMTU4MiwyMTY0NywyMTYyMSwyMTY0NiwyMTU5OSwyMTYxNywyMTYyMywyMTYxNiwyMTY1MCwyMTYyNywyMTYzMiwyMTYyMiwyMTYzNiwyMTY0OCwyMTYzOCwyMTcwMywyMTY2NiwyMTY4OCwyMTY2OSwyMTY3NiwyMTcwMCwyMTcwNCwyMTY3MiwyMTY3NSwyMTY5OCwyMTY2OCwyMTY5NCwyMTY5MiwyMTcyMCwyMTczMywyMTczNCwyMTc3NSwyMTc4MCwyMTc1NywyMTc0MiwyMTc0MSwyMTc1NCwyMTczMCwyMTgxNywyMTgyNCwyMTg1OSwyMTgzNiwyMTgwNiwyMTg1MiwyMTgyOSwyMTg0NiwyMTg0NywyMTgxNiwyMTgxMSwyMTg1MywyMTkxMywyMTg4OCwyMTY3OSwyMTg5OCwyMTkxOSwyMTg4MywyMTg4NiwyMTkxMiwyMTkxOCwyMTkzNCwyMTg4NCwyMTg5MSwyMTkyOSwyMTg5NSwyMTkyOCwyMTk3OCwyMTk1NywyMTk4MywyMTk1NiwyMTk4MCwyMTk4OCwyMTk3MiwyMjAzNiwyMjAwNywyMjAzOCwyMjAxNCwyMjAxMywyMjA0MywyMjAwOSwyMjA5NCwyMjA5NiwyOTE1MSwyMjA2OCwyMjA3MCwyMjA2NiwyMjA3MiwyMjEyMywyMjExNiwyMjA2MywyMjEyNCwyMjEyMiwyMjE1MCwyMjE0NCwyMjE1NCwyMjE3NiwyMjE2NCwyMjE1OSwyMjE4MSwyMjE5MCwyMjE5OCwyMjE5NiwyMjIxMCwyMjIwNCwyMjIwOSwyMjIxMSwyMjIwOCwyMjIxNiwyMjIyMiwyMjIyNSwyMjIyNywyMjIzMSwyMjI1NCwyMjI2NSwyMjI3MiwyMjI3MSwyMjI3NiwyMjI4MSwyMjI4MCwyMjI4MywyMjI4NSwyMjI5MSwyMjI5NiwyMjI5NCwyMTk1OSwyMjMwMCwyMjMxMCwyMjMyNywyMjMyOCwyMjM1MCwyMjMzMSwyMjMzNiwyMjM1MSwyMjM3NywyMjQ2NCwyMjQwOCwyMjM2OSwyMjM5OSwyMjQwOSwyMjQxOSwyMjQzMiwyMjQ1MSwyMjQzNiwyMjQ0MiwyMjQ0OCwyMjQ2NywyMjQ3MCwyMjQ4NCwyMjQ4MiwyMjQ4MywyMjUzOCwyMjQ4NiwyMjQ5OSwyMjUzOSwyMjU1MywyMjU1NywyMjY0MiwyMjU2MSwyMjYyNiwyMjYwMywyMjY0MCwyNzU4NCwyMjYxMCwyMjU4OSwyMjY0OSwyMjY2MSwyMjcxMywyMjY4NywyMjY5OSwyMjcxNCwyMjc1MCwyMjcxNSwyMjcxMiwyMjcwMiwyMjcyNSwyMjczOSwyMjczNywyMjc0MywyMjc0NSwyMjc0NCwyMjc1NywyMjc0OCwyMjc1NiwyMjc1MSwyMjc2NywyMjc3OCwyMjc3NywyMjc3OSwyMjc4MCwyMjc4MSwyMjc4NiwyMjc5NCwyMjgwMCwyMjgxMSwyNjc5MCwyMjgyMSwyMjgyOCwyMjgyOSwyMjgzNCwyMjg0MCwyMjg0NiwzMTQ0MiwyMjg2OSwyMjg2NCwyMjg2MiwyMjg3NCwyMjg3MiwyMjg4MiwyMjg4MCwyMjg4NywyMjg5MiwyMjg4OSwyMjkwNCwyMjkxMywyMjk0MSwyMDMxOCwyMDM5NSwyMjk0NywyMjk2MiwyMjk4MiwyMzAxNiwyMzAwNCwyMjkyNSwyMzAwMSwyMzAwMiwyMzA3NywyMzA3MSwyMzA1NywyMzA2OCwyMzA0OSwyMzA2NiwyMzEwNCwyMzE0OCwyMzExMywyMzA5MywyMzA5NCwyMzEzOCwyMzE0NiwyMzE5NCwyMzIyOCwyMzIzMCwyMzI0MywyMzIzNCwyMzIyOSwyMzI2NywyMzI1NSwyMzI3MCwyMzI3MywyMzI1NCwyMzI5MCwyMzI5MSwyMzMwOCwyMzMwNywyMzMxOCwyMzM0NiwyMzI0OCwyMzMzOCwyMzM1MCwyMzM1OCwyMzM2MywyMzM2NSwyMzM2MCwyMzM3NywyMzM4MSwyMzM4NiwyMzM4NywyMzM5NywyMzQwMSwyMzQwOCwyMzQxMSwyMzQxMywyMzQxNiwyNTk5MiwyMzQxOCwyMzQyNCwyMzQyNywyMzQ2MiwyMzQ4MCwyMzQ5MSwyMzQ5NSwyMzQ5NywyMzUwOCwyMzUwNCwyMzUyNCwyMzUyNiwyMzUyMiwyMzUxOCwyMzUyNSwyMzUzMSwyMzUzNiwyMzU0MiwyMzUzOSwyMzU1NywyMzU1OSwyMzU2MCwyMzU2NSwyMzU3MSwyMzU4NCwyMzU4NiwyMzU5MiwyMzYwOCwyMzYwOSwyMzYxNywyMzYyMiwyMzYzMCwyMzYzNSwyMzYzMiwyMzYzMSwyMzQwOSwyMzY2MCwyMzY2MiwyMDA2NiwyMzY3MCwyMzY3MywyMzY5MiwyMzY5NywyMzcwMCwyMjkzOSwyMzcyMywyMzczOSwyMzczNCwyMzc0MCwyMzczNSwyMzc0OSwyMzc0MiwyMzc1MSwyMzc2OSwyMzc4NSwyMzgwNSwyMzgwMiwyMzc4OSwyMzk0OCwyMzc4NiwyMzgxOSwyMzgyOSwyMzgzMSwyMzkwMCwyMzgzOSwyMzgzNSwyMzgyNSwyMzgyOCwyMzg0MiwyMzgzNCwyMzgzMywyMzgzMiwyMzg4NCwyMzg5MCwyMzg4NiwyMzg4MywyMzkxNiwyMzkyMywyMzkyNiwyMzk0MywyMzk0MCwyMzkzOCwyMzk3MCwyMzk2NSwyMzk4MCwyMzk4MiwyMzk5NywyMzk1MiwyMzk5MSwyMzk5NiwyNDAwOSwyNDAxMywyNDAxOSwyNDAxOCwyNDAyMiwyNDAyNywyNDA0MywyNDA1MCwyNDA1MywyNDA3NSwyNDA5MCwyNDA4OSwyNDA4MSwyNDA5MSwyNDExOCwyNDExOSwyNDEzMiwyNDEzMSwyNDEyOCwyNDE0MiwyNDE1MSwyNDE0OCwyNDE1OSwyNDE2MiwyNDE2NCwyNDEzNSwyNDE4MSwyNDE4MiwyNDE4Niw0MDYzNiwyNDE5MSwyNDIyNCwyNDI1NywyNDI1OCwyNDI2NCwyNDI3MiwyNDI3MSwyNDI3OCwyNDI5MSwyNDI4NSwyNDI4MiwyNDI4MywyNDI5MCwyNDI4OSwyNDI5NiwyNDI5NywyNDMwMCwyNDMwNSwyNDMwNywyNDMwNCwyNDMwOCwyNDMxMiwyNDMxOCwyNDMyMywyNDMyOSwyNDQxMywyNDQxMiwyNDMzMSwyNDMzNywyNDM0MiwyNDM2MSwyNDM2NSwyNDM3NiwyNDM4NSwyNDM5MiwyNDM5NiwyNDM5OCwyNDM2NywyNDQwMSwyNDQwNiwyNDQwNywyNDQwOSwyNDQxNywyNDQyOSwyNDQzNSwyNDQzOSwyNDQ1MSwyNDQ1MCwyNDQ0NywyNDQ1OCwyNDQ1NiwyNDQ2NSwyNDQ1NSwyNDQ3OCwyNDQ3MywyNDQ3MiwyNDQ4MCwyNDQ4OCwyNDQ5MywyNDUwOCwyNDUzNCwyNDU3MSwyNDU0OCwyNDU2OCwyNDU2MSwyNDU0MSwyNDc1NSwyNDU3NSwyNDYwOSwyNDY3MiwyNDYwMSwyNDU5MiwyNDYxNywyNDU5MCwyNDYyNSwyNDYwMywyNDU5NywyNDYxOSwyNDYxNCwyNDU5MSwyNDYzNCwyNDY2NiwyNDY0MSwyNDY4MiwyNDY5NSwyNDY3MSwyNDY1MCwyNDY0NiwyNDY1MywyNDY3NSwyNDY0MywyNDY3NiwyNDY0MiwyNDY4NCwyNDY4MywyNDY2NSwyNDcwNSwyNDcxNywyNDgwNywyNDcwNywyNDczMCwyNDcwOCwyNDczMSwyNDcyNiwyNDcyNywyNDcyMiwyNDc0MywyNDcxNSwyNDgwMSwyNDc2MCwyNDgwMCwyNDc4NywyNDc1NiwyNDU2MCwyNDc2NSwyNDc3NCwyNDc1NywyNDc5MiwyNDkwOSwyNDg1MywyNDgzOCwyNDgyMiwyNDgyMywyNDgzMiwyNDgyMCwyNDgyNiwyNDgzNSwyNDg2NSwyNDgyNywyNDgxNywyNDg0NSwyNDg0NiwyNDkwMywyNDg5NCwyNDg3MiwyNDg3MSwyNDkwNiwyNDg5NSwyNDg5MiwyNDg3NiwyNDg4NCwyNDg5MywyNDg5OCwyNDkwMCwyNDk0NywyNDk1MSwyNDkyMCwyNDkyMSwyNDkyMiwyNDkzOSwyNDk0OCwyNDk0MywyNDkzMywyNDk0NSwyNDkyNywyNDkyNSwyNDkxNSwyNDk0OSwyNDk4NSwyNDk4MiwyNDk2NywyNTAwNCwyNDk4MCwyNDk4NiwyNDk3MCwyNDk3NywyNTAwMywyNTAwNiwyNTAzNiwyNTAzNCwyNTAzMywyNTA3OSwyNTAzMiwyNTAyNywyNTAzMCwyNTAxOCwyNTAzNSwzMjYzMywyNTAzNywyNTA2MiwyNTA1OSwyNTA3OCwyNTA4MiwyNTA3NiwyNTA4NywyNTA4NSwyNTA4NCwyNTA4NiwyNTA4OCwyNTA5NiwyNTA5NywyNTEwMSwyNTEwMCwyNTEwOCwyNTExNSwyNTExOCwyNTEyMSwyNTEzMCwyNTEzNCwyNTEzNiwyNTEzOCwyNTEzOSwyNTE1MywyNTE2NiwyNTE4MiwyNTE4NywyNTE3OSwyNTE4NCwyNTE5MiwyNTIxMiwyNTIxOCwyNTIyNSwyNTIxNCwyNTIzNCwyNTIzNSwyNTIzOCwyNTMwMCwyNTIxOSwyNTIzNiwyNTMwMywyNTI5NywyNTI3NSwyNTI5NSwyNTM0MywyNTI4NiwyNTgxMiwyNTI4OCwyNTMwOCwyNTI5MiwyNTI5MCwyNTI4MiwyNTI4NywyNTI0MywyNTI4OSwyNTM1NiwyNTMyNiwyNTMyOSwyNTM4MywyNTM0NiwyNTM1MiwyNTMyNywyNTMzMywyNTQyNCwyNTQwNiwyNTQyMSwyNTYyOCwyNTQyMywyNTQ5NCwyNTQ4NiwyNTQ3MiwyNTUxNSwyNTQ2MiwyNTUwNywyNTQ4NywyNTQ4MSwyNTUwMywyNTUyNSwyNTQ1MSwyNTQ0OSwyNTUzNCwyNTU3NywyNTUzNiwyNTU0MiwyNTU3MSwyNTU0NSwyNTU1NCwyNTU5MCwyNTU0MCwyNTYyMiwyNTY1MiwyNTYwNiwyNTYxOSwyNTYzOCwyNTY1NCwyNTg4NSwyNTYyMywyNTY0MCwyNTYxNSwyNTcwMywyNTcxMSwyNTcxOCwyNTY3OCwyNTg5OCwyNTc0OSwyNTc0NywyNTc2NSwyNTc2OSwyNTczNiwyNTc4OCwyNTgxOCwyNTgxMCwyNTc5NywyNTc5OSwyNTc4NywyNTgxNiwyNTc5NCwyNTg0MSwyNTgzMSwzMzI4OSwyNTgyNCwyNTgyNSwyNTI2MCwyNTgyNywyNTgzOSwyNTkwMCwyNTg0NiwyNTg0NCwyNTg0MiwyNTg1MCwyNTg1NiwyNTg1MywyNTg4MCwyNTg4NCwyNTg2MSwyNTg5MiwyNTg5MSwyNTg5OSwyNTkwOCwyNTkwOSwyNTkxMSwyNTkxMCwyNTkxMiwzMDAyNywyNTkyOCwyNTk0MiwyNTk0MSwyNTkzMywyNTk0NCwyNTk1MCwyNTk0OSwyNTk3MCwyNTk3NiwyNTk4NiwyNTk4NywzNTcyMiwyNjAxMSwyNjAxNSwyNjAyNywyNjAzOSwyNjA1MSwyNjA1NCwyNjA0OSwyNjA1MiwyNjA2MCwyNjA2NiwyNjA3NSwyNjA3MywyNjA4MCwyNjA4MSwyNjA5NywyNjQ4MiwyNjEyMiwyNjExNSwyNjEwNywyNjQ4MywyNjE2NSwyNjE2NiwyNjE2NCwyNjE0MCwyNjE5MSwyNjE4MCwyNjE4NSwyNjE3NywyNjIwNiwyNjIwNSwyNjIxMiwyNjIxNSwyNjIxNiwyNjIwNywyNjIxMCwyNjIyNCwyNjI0MywyNjI0OCwyNjI1NCwyNjI0OSwyNjI0NCwyNjI2NCwyNjI2OSwyNjMwNSwyNjI5NywyNjMxMywyNjMwMiwyNjMwMCwyNjMwOCwyNjI5NiwyNjMyNiwyNjMzMCwyNjMzNiwyNjE3NSwyNjM0MiwyNjM0NSwyNjM1MiwyNjM1NywyNjM1OSwyNjM4MywyNjM5MCwyNjM5OCwyNjQwNiwyNjQwNywzODcxMiwyNjQxNCwyNjQzMSwyNjQyMiwyNjQzMywyNjQyNCwyNjQyMywyNjQzOCwyNjQ2MiwyNjQ2NCwyNjQ1NywyNjQ2NywyNjQ2OCwyNjUwNSwyNjQ4MCwyNjUzNywyNjQ5MiwyNjQ3NCwyNjUwOCwyNjUwNywyNjUzNCwyNjUyOSwyNjUwMSwyNjU1MSwyNjYwNywyNjU0OCwyNjYwNCwyNjU0NywyNjYwMSwyNjU1MiwyNjU5NiwyNjU5MCwyNjU4OSwyNjU5NCwyNjYwNiwyNjU1MywyNjU3NCwyNjU2NiwyNjU5OSwyNzI5MiwyNjY1NCwyNjY5NCwyNjY2NSwyNjY4OCwyNjcwMSwyNjY3NCwyNjcwMiwyNjgwMywyNjY2NywyNjcxMywyNjcyMywyNjc0MywyNjc1MSwyNjc4MywyNjc2NywyNjc5NywyNjc3MiwyNjc4MSwyNjc3OSwyNjc1NSwyNzMxMCwyNjgwOSwyNjc0MCwyNjgwNSwyNjc4NCwyNjgxMCwyNjg5NSwyNjc2NSwyNjc1MCwyNjg4MSwyNjgyNiwyNjg4OCwyNjg0MCwyNjkxNCwyNjkxOCwyNjg0OSwyNjg5MiwyNjgyOSwyNjgzNiwyNjg1NSwyNjgzNywyNjkzNCwyNjg5OCwyNjg4NCwyNjgzOSwyNjg1MSwyNjkxNywyNjg3MywyNjg0OCwyNjg2MywyNjkyMCwyNjkyMiwyNjkwNiwyNjkxNSwyNjkxMywyNjgyMiwyNzAwMSwyNjk5OSwyNjk3MiwyNzAwMCwyNjk4NywyNjk2NCwyNzAwNiwyNjk5MCwyNjkzNywyNjk5NiwyNjk0MSwyNjk2OSwyNjkyOCwyNjk3NywyNjk3NCwyNjk3MywyNzAwOSwyNjk4NiwyNzA1OCwyNzA1NCwyNzA4OCwyNzA3MSwyNzA3MywyNzA5MSwyNzA3MCwyNzA4NiwyMzUyOCwyNzA4MiwyNzEwMSwyNzA2NywyNzA3NSwyNzA0NywyNzE4MiwyNzAyNSwyNzA0MCwyNzAzNiwyNzAyOSwyNzA2MCwyNzEwMiwyNzExMiwyNzEzOCwyNzE2MywyNzEzNSwyNzQwMiwyNzEyOSwyNzEyMiwyNzExMSwyNzE0MSwyNzA1NywyNzE2NiwyNzExNywyNzE1NiwyNzExNSwyNzE0NiwyNzE1NCwyNzMyOSwyNzE3MSwyNzE1NSwyNzIwNCwyNzE0OCwyNzI1MCwyNzE5MCwyNzI1NiwyNzIwNywyNzIzNCwyNzIyNSwyNzIzOCwyNzIwOCwyNzE5MiwyNzE3MCwyNzI4MCwyNzI3NywyNzI5NiwyNzI2OCwyNzI5OCwyNzI5OSwyNzI4NywzNDMyNywyNzMyMywyNzMzMSwyNzMzMCwyNzMyMCwyNzMxNSwyNzMwOCwyNzM1OCwyNzM0NSwyNzM1OSwyNzMwNiwyNzM1NCwyNzM3MCwyNzM4NywyNzM5NywzNDMyNiwyNzM4NiwyNzQxMCwyNzQxNCwzOTcyOSwyNzQyMywyNzQ0OCwyNzQ0NywzMDQyOCwyNzQ0OSwzOTE1MCwyNzQ2MywyNzQ1OSwyNzQ2NSwyNzQ3MiwyNzQ4MSwyNzQ3NiwyNzQ4MywyNzQ4NywyNzQ4OSwyNzUxMiwyNzUxMywyNzUxOSwyNzUyMCwyNzUyNCwyNzUyMywyNzUzMywyNzU0NCwyNzU0MSwyNzU1MCwyNzU1NiwyNzU2MiwyNzU2MywyNzU2NywyNzU3MCwyNzU2OSwyNzU3MSwyNzU3NSwyNzU4MCwyNzU5MCwyNzU5NSwyNzYwMywyNzYxNSwyNzYyOCwyNzYyNywyNzYzNSwyNzYzMSw0MDYzOCwyNzY1NiwyNzY2NywyNzY2OCwyNzY3NSwyNzY4NCwyNzY4MywyNzc0MiwyNzczMywyNzc0NiwyNzc1NCwyNzc3OCwyNzc4OSwyNzgwMiwyNzc3NywyNzgwMywyNzc3NCwyNzc1MiwyNzc2MywyNzc5NCwyNzc5MiwyNzg0NCwyNzg4OSwyNzg1OSwyNzgzNywyNzg2MywyNzg0NSwyNzg2OSwyNzgyMiwyNzgyNSwyNzgzOCwyNzgzNCwyNzg2NywyNzg4NywyNzg2NSwyNzg4MiwyNzkzNSwzNDg5MywyNzk1OCwyNzk0NywyNzk2NSwyNzk2MCwyNzkyOSwyNzk1NywyNzk1NSwyNzkyMiwyNzkxNiwyODAwMywyODA1MSwyODAwNCwyNzk5NCwyODAyNSwyNzk5MywyODA0NiwyODA1MywyODY0NCwyODAzNywyODE1MywyODE4MSwyODE3MCwyODA4NSwyODEwMywyODEzNCwyODA4OCwyODEwMiwyODE0MCwyODEyNiwyODEwOCwyODEzNiwyODExNCwyODEwMSwyODE1NCwyODEyMSwyODEzMiwyODExNywyODEzOCwyODE0MiwyODIwNSwyODI3MCwyODIwNiwyODE4NSwyODI3NCwyODI1NSwyODIyMiwyODE5NSwyODI2NywyODIwMywyODI3OCwyODIzNywyODE5MSwyODIyNywyODIxOCwyODIzOCwyODE5NiwyODQxNSwyODE4OSwyODIxNiwyODI5MCwyODMzMCwyODMxMiwyODM2MSwyODM0MywyODM3MSwyODM0OSwyODMzNSwyODM1NiwyODMzOCwyODM3MiwyODM3MywyODMwMywyODMyNSwyODM1NCwyODMxOSwyODQ4MSwyODQzMywyODc0OCwyODM5NiwyODQwOCwyODQxNCwyODQ3OSwyODQwMiwyODQ2NSwyODM5OSwyODQ2NiwyODM2NCwyODQ3OCwyODQzNSwyODQwNywyODU1MCwyODUzOCwyODUzNiwyODU0NSwyODU0NCwyODUyNywyODUwNywyODY1OSwyODUyNSwyODU0NiwyODU0MCwyODUwNCwyODU1OCwyODU2MSwyODYxMCwyODUxOCwyODU5NSwyODU3OSwyODU3NywyODU4MCwyODYwMSwyODYxNCwyODU4NiwyODYzOSwyODYyOSwyODY1MiwyODYyOCwyODYzMiwyODY1NywyODY1NCwyODYzNSwyODY4MSwyODY4MywyODY2NiwyODY4OSwyODY3MywyODY4NywyODY3MCwyODY5OSwyODY5OCwyODUzMiwyODcwMSwyODY5NiwyODcwMywyODcyMCwyODczNCwyODcyMiwyODc1MywyODc3MSwyODgyNSwyODgxOCwyODg0NywyODkxMywyODg0NCwyODg1NiwyODg1MSwyODg0NiwyODg5NSwyODg3NSwyODg5MywyODg4OSwyODkzNywyODkyNSwyODk1NiwyODk1MywyOTAyOSwyOTAxMywyOTA2NCwyOTAzMCwyOTAyNiwyOTAwNCwyOTAxNCwyOTAzNiwyOTA3MSwyOTE3OSwyOTA2MCwyOTA3NywyOTA5NiwyOTEwMCwyOTE0MywyOTExMywyOTExOCwyOTEzOCwyOTEyOSwyOTE0MCwyOTEzNCwyOTE1MiwyOTE2NCwyOTE1OSwyOTE3MywyOTE4MCwyOTE3NywyOTE4MywyOTE5NywyOTIwMCwyOTIxMSwyOTIyNCwyOTIyOSwyOTIyOCwyOTIzMiwyOTIzNCwyOTI0MywyOTI0NCwyOTI0NywyOTI0OCwyOTI1NCwyOTI1OSwyOTI3MiwyOTMwMCwyOTMxMCwyOTMxNCwyOTMxMywyOTMxOSwyOTMzMCwyOTMzNCwyOTM0NiwyOTM1MSwyOTM2OSwyOTM2MiwyOTM3OSwyOTM4MiwyOTM4MCwyOTM5MCwyOTM5NCwyOTQxMCwyOTQwOCwyOTQwOSwyOTQzMywyOTQzMSwyMDQ5NSwyOTQ2MywyOTQ1MCwyOTQ2OCwyOTQ2MiwyOTQ2OSwyOTQ5MiwyOTQ4NywyOTQ4MSwyOTQ3NywyOTUwMiwyOTUxOCwyOTUxOSw0MDY2NCwyOTUyNywyOTU0NiwyOTU0NCwyOTU1MiwyOTU2MCwyOTU1NywyOTU2MywyOTU2MiwyOTY0MCwyOTYxOSwyOTY0NiwyOTYyNywyOTYzMiwyOTY2OSwyOTY3OCwyOTY2MiwyOTg1OCwyOTcwMSwyOTgwNywyOTczMywyOTY4OCwyOTc0NiwyOTc1NCwyOTc4MSwyOTc1OSwyOTc5MSwyOTc4NSwyOTc2MSwyOTc4OCwyOTgwMSwyOTgwOCwyOTc5NSwyOTgwMiwyOTgxNCwyOTgyMiwyOTgzNSwyOTg1NCwyOTg2MywyOTg5OCwyOTkwMywyOTkwOCwyOTY4MSwyOTkyMCwyOTkyMywyOTkyNywyOTkyOSwyOTkzNCwyOTkzOCwyOTkzNiwyOTkzNywyOTk0NCwyOTk0MywyOTk1NiwyOTk1NSwyOTk1NywyOTk2NCwyOTk2NiwyOTk2NSwyOTk3MywyOTk3MSwyOTk4MiwyOTk5MCwyOTk5NiwzMDAxMiwzMDAyMCwzMDAyOSwzMDAyNiwzMDAyNSwzMDA0MywzMDAyMiwzMDA0MiwzMDA1NywzMDA1MiwzMDA1NSwzMDA1OSwzMDA2MSwzMDA3MiwzMDA3MCwzMDA4NiwzMDA4NywzMDA2OCwzMDA5MCwzMDA4OSwzMDA4MiwzMDEwMCwzMDEwNiwzMDEwOSwzMDExNywzMDExNSwzMDE0NiwzMDEzMSwzMDE0NywzMDEzMywzMDE0MSwzMDEzNiwzMDE0MCwzMDEyOSwzMDE1NywzMDE1NCwzMDE2MiwzMDE2OSwzMDE3OSwzMDE3NCwzMDIwNiwzMDIwNywzMDIwNCwzMDIwOSwzMDE5MiwzMDIwMiwzMDE5NCwzMDE5NSwzMDIxOSwzMDIyMSwzMDIxNywzMDIzOSwzMDI0NywzMDI0MCwzMDI0MSwzMDI0MiwzMDI0NCwzMDI2MCwzMDI1NiwzMDI2NywzMDI3OSwzMDI4MCwzMDI3OCwzMDMwMCwzMDI5NiwzMDMwNSwzMDMwNiwzMDMxMiwzMDMxMywzMDMxNCwzMDMxMSwzMDMxNiwzMDMyMCwzMDMyMiwzMDMyNiwzMDMyOCwzMDMzMiwzMDMzNiwzMDMzOSwzMDM0NCwzMDM0NywzMDM1MCwzMDM1OCwzMDM1NSwzMDM2MSwzMDM2MiwzMDM4NCwzMDM4OCwzMDM5MiwzMDM5MywzMDM5NCwzMDQwMiwzMDQxMywzMDQyMiwzMDQxOCwzMDQzMCwzMDQzMywzMDQzNywzMDQzOSwzMDQ0MiwzNDM1MSwzMDQ1OSwzMDQ3MiwzMDQ3MSwzMDQ2OCwzMDUwNSwzMDUwMCwzMDQ5NCwzMDUwMSwzMDUwMiwzMDQ5MSwzMDUxOSwzMDUyMCwzMDUzNSwzMDU1NCwzMDU2OCwzMDU3MSwzMDU1NSwzMDU2NSwzMDU5MSwzMDU5MCwzMDU4NSwzMDYwNiwzMDYwMywzMDYwOSwzMDYyNCwzMDYyMiwzMDY0MCwzMDY0NiwzMDY0OSwzMDY1NSwzMDY1MiwzMDY1MywzMDY1MSwzMDY2MywzMDY2OSwzMDY3OSwzMDY4MiwzMDY4NCwzMDY5MSwzMDcwMiwzMDcxNiwzMDczMiwzMDczOCwzMTAxNCwzMDc1MiwzMTAxOCwzMDc4OSwzMDg2MiwzMDgzNiwzMDg1NCwzMDg0NCwzMDg3NCwzMDg2MCwzMDg4MywzMDkwMSwzMDg5MCwzMDg5NSwzMDkyOSwzMDkxOCwzMDkyMywzMDkzMiwzMDkxMCwzMDkwOCwzMDkxNywzMDkyMiwzMDk1NiwzMDk1MSwzMDkzOCwzMDk3MywzMDk2NCwzMDk4MywzMDk5NCwzMDk5MywzMTAwMSwzMTAyMCwzMTAxOSwzMTA0MCwzMTA3MiwzMTA2MywzMTA3MSwzMTA2NiwzMTA2MSwzMTA1OSwzMTA5OCwzMTEwMywzMTExNCwzMTEzMywzMTE0Myw0MDc3OSwzMTE0NiwzMTE1MCwzMTE1NSwzMTE2MSwzMTE2MiwzMTE3NywzMTE4OSwzMTIwNywzMTIxMiwzMTIwMSwzMTIwMywzMTI0MCwzMTI0NSwzMTI1NiwzMTI1NywzMTI2NCwzMTI2MywzMTEwNCwzMTI4MSwzMTI5MSwzMTI5NCwzMTI4NywzMTI5OSwzMTMxOSwzMTMwNSwzMTMyOSwzMTMzMCwzMTMzNyw0MDg2MSwzMTM0NCwzMTM1MywzMTM1NywzMTM2OCwzMTM4MywzMTM4MSwzMTM4NCwzMTM4MiwzMTQwMSwzMTQzMiwzMTQwOCwzMTQxNCwzMTQyOSwzMTQyOCwzMTQyMywzNjk5NSwzMTQzMSwzMTQzNCwzMTQzNywzMTQzOSwzMTQ0NSwzMTQ0MywzMTQ0OSwzMTQ1MCwzMTQ1MywzMTQ1NywzMTQ1OCwzMTQ2MiwzMTQ2OSwzMTQ3MiwzMTQ5MCwzMTUwMywzMTQ5OCwzMTQ5NCwzMTUzOSwzMTUxMiwzMTUxMywzMTUxOCwzMTU0MSwzMTUyOCwzMTU0MiwzMTU2OCwzMTYxMCwzMTQ5MiwzMTU2NSwzMTQ5OSwzMTU2NCwzMTU1NywzMTYwNSwzMTU4OSwzMTYwNCwzMTU5MSwzMTYwMCwzMTYwMSwzMTU5NiwzMTU5OCwzMTY0NSwzMTY0MCwzMTY0NywzMTYyOSwzMTY0NCwzMTY0MiwzMTYyNywzMTYzNCwzMTYzMSwzMTU4MSwzMTY0MSwzMTY5MSwzMTY4MSwzMTY5MiwzMTY5NSwzMTY2OCwzMTY4NiwzMTcwOSwzMTcyMSwzMTc2MSwzMTc2NCwzMTcxOCwzMTcxNywzMTg0MCwzMTc0NCwzMTc1MSwzMTc2MywzMTczMSwzMTczNSwzMTc2NywzMTc1NywzMTczNCwzMTc3OSwzMTc4MywzMTc4NiwzMTc3NSwzMTc5OSwzMTc4NywzMTgwNSwzMTgyMCwzMTgxMSwzMTgyOCwzMTgyMywzMTgwOCwzMTgyNCwzMTgzMiwzMTgzOSwzMTg0NCwzMTgzMCwzMTg0NSwzMTg1MiwzMTg2MSwzMTg3NSwzMTg4OCwzMTkwOCwzMTkxNywzMTkwNiwzMTkxNSwzMTkwNSwzMTkxMiwzMTkyMywzMTkyMiwzMTkyMSwzMTkxOCwzMTkyOSwzMTkzMywzMTkzNiwzMTk0MSwzMTkzOCwzMTk2MCwzMTk1NCwzMTk2NCwzMTk3MCwzOTczOSwzMTk4MywzMTk4NiwzMTk4OCwzMTk5MCwzMTk5NCwzMjAwNiwzMjAwMiwzMjAyOCwzMjAyMSwzMjAxMCwzMjA2OSwzMjA3NSwzMjA0NiwzMjA1MCwzMjA2MywzMjA1MywzMjA3MCwzMjExNSwzMjA4NiwzMjA3OCwzMjExNCwzMjEwNCwzMjExMCwzMjA3OSwzMjA5OSwzMjE0NywzMjEzNywzMjA5MSwzMjE0MywzMjEyNSwzMjE1NSwzMjE4NiwzMjE3NCwzMjE2MywzMjE4MSwzMjE5OSwzMjE4OSwzMjE3MSwzMjMxNywzMjE2MiwzMjE3NSwzMjIyMCwzMjE4NCwzMjE1OSwzMjE3NiwzMjIxNiwzMjIyMSwzMjIyOCwzMjIyMiwzMjI1MSwzMjI0MiwzMjIyNSwzMjI2MSwzMjI2NiwzMjI5MSwzMjI4OSwzMjI3NCwzMjMwNSwzMjI4NywzMjI2NSwzMjI2NywzMjI5MCwzMjMyNiwzMjM1OCwzMjMxNSwzMjMwOSwzMjMxMywzMjMyMywzMjMxMSwzMjMwNiwzMjMxNCwzMjM1OSwzMjM0OSwzMjM0MiwzMjM1MCwzMjM0NSwzMjM0NiwzMjM3NywzMjM2MiwzMjM2MSwzMjM4MCwzMjM3OSwzMjM4NywzMjIxMywzMjM4MSwzNjc4MiwzMjM4MywzMjM5MiwzMjM5MywzMjM5NiwzMjQwMiwzMjQwMCwzMjQwMywzMjQwNCwzMjQwNiwzMjM5OCwzMjQxMSwzMjQxMiwzMjU2OCwzMjU3MCwzMjU4MSwzMjU4OCwzMjU4OSwzMjU5MCwzMjU5MiwzMjU5MywzMjU5NywzMjU5NiwzMjYwMCwzMjYwNywzMjYwOCwzMjYxNiwzMjYxNywzMjYxNSwzMjYzMiwzMjY0MiwzMjY0NiwzMjY0MywzMjY0OCwzMjY0NywzMjY1MiwzMjY2MCwzMjY3MCwzMjY2OSwzMjY2NiwzMjY3NSwzMjY4NywzMjY5MCwzMjY5NywzMjY4NiwzMjY5NCwzMjY5NiwzNTY5NywzMjcwOSwzMjcxMCwzMjcxNCwzMjcyNSwzMjcyNCwzMjczNywzMjc0MiwzMjc0NSwzMjc1NSwzMjc2MSwzOTEzMiwzMjc3NCwzMjc3MiwzMjc3OSwzMjc4NiwzMjc5MiwzMjc5MywzMjc5NiwzMjgwMSwzMjgwOCwzMjgzMSwzMjgyNywzMjg0MiwzMjgzOCwzMjg1MCwzMjg1NiwzMjg1OCwzMjg2MywzMjg2NiwzMjg3MiwzMjg4MywzMjg4MiwzMjg4MCwzMjg4NiwzMjg4OSwzMjg5MywzMjg5NSwzMjkwMCwzMjkwMiwzMjkwMSwzMjkyMywzMjkxNSwzMjkyMiwzMjk0MSwyMDg4MCwzMjk0MCwzMjk4NywzMjk5NywzMjk4NSwzMjk4OSwzMjk2NCwzMjk4NiwzMjk4MiwzMzAzMywzMzAwNywzMzAwOSwzMzA1MSwzMzA2NSwzMzA1OSwzMzA3MSwzMzA5OSwzODUzOSwzMzA5NCwzMzA4NiwzMzEwNywzMzEwNSwzMzAyMCwzMzEzNywzMzEzNCwzMzEyNSwzMzEyNiwzMzE0MCwzMzE1NSwzMzE2MCwzMzE2MiwzMzE1MiwzMzE1NCwzMzE4NCwzMzE3MywzMzE4OCwzMzE4NywzMzExOSwzMzE3MSwzMzE5MywzMzIwMCwzMzIwNSwzMzIxNCwzMzIwOCwzMzIxMywzMzIxNiwzMzIxOCwzMzIxMCwzMzIyNSwzMzIyOSwzMzIzMywzMzI0MSwzMzI0MCwzMzIyNCwzMzI0MiwzMzI0NywzMzI0OCwzMzI1NSwzMzI3NCwzMzI3NSwzMzI3OCwzMzI4MSwzMzI4MiwzMzI4NSwzMzI4NywzMzI5MCwzMzI5MywzMzI5NiwzMzMwMiwzMzMyMSwzMzMyMywzMzMzNiwzMzMzMSwzMzM0NCwzMzM2OSwzMzM2OCwzMzM3MywzMzM3MCwzMzM3NSwzMzM4MCwzMzM3OCwzMzM4NCwzMzM4NiwzMzM4NywzMzMyNiwzMzM5MywzMzM5OSwzMzQwMCwzMzQwNiwzMzQyMSwzMzQyNiwzMzQ1MSwzMzQzOSwzMzQ2NywzMzQ1MiwzMzUwNSwzMzUwNywzMzUwMywzMzQ5MCwzMzUyNCwzMzUyMywzMzUzMCwzMzY4MywzMzUzOSwzMzUzMSwzMzUyOSwzMzUwMiwzMzU0MiwzMzUwMCwzMzU0NSwzMzQ5NywzMzU4OSwzMzU4OCwzMzU1OCwzMzU4NiwzMzU4NSwzMzYwMCwzMzU5MywzMzYxNiwzMzYwNSwzMzU4MywzMzU3OSwzMzU1OSwzMzU2MCwzMzY2OSwzMzY5MCwzMzcwNiwzMzY5NSwzMzY5OCwzMzY4NiwzMzU3MSwzMzY3OCwzMzY3MSwzMzY3NCwzMzY2MCwzMzcxNywzMzY1MSwzMzY1MywzMzY5NiwzMzY3MywzMzcwNCwzMzc4MCwzMzgxMSwzMzc3MSwzMzc0MiwzMzc4OSwzMzc5NSwzMzc1MiwzMzgwMywzMzcyOSwzMzc4MywzMzc5OSwzMzc2MCwzMzc3OCwzMzgwNSwzMzgyNiwzMzgyNCwzMzcyNSwzMzg0OCwzNDA1NCwzMzc4NywzMzkwMSwzMzgzNCwzMzg1MiwzNDEzOCwzMzkyNCwzMzkxMSwzMzg5OSwzMzk2NSwzMzkwMiwzMzkyMiwzMzg5NywzMzg2MiwzMzgzNiwzMzkwMywzMzkxMywzMzg0NSwzMzk5NCwzMzg5MCwzMzk3NywzMzk4MywzMzk1MSwzNDAwOSwzMzk5NywzMzk3OSwzNDAxMCwzNDAwMCwzMzk4NSwzMzk5MCwzNDAwNiwzMzk1MywzNDA4MSwzNDA0NywzNDAzNiwzNDA3MSwzNDA3MiwzNDA5MiwzNDA3OSwzNDA2OSwzNDA2OCwzNDA0NCwzNDExMiwzNDE0NywzNDEzNiwzNDEyMCwzNDExMywzNDMwNiwzNDEyMywzNDEzMywzNDE3NiwzNDIxMiwzNDE4NCwzNDE5MywzNDE4NiwzNDIxNiwzNDE1NywzNDE5NiwzNDIwMywzNDI4MiwzNDE4MywzNDIwNCwzNDE2NywzNDE3NCwzNDE5MiwzNDI0OSwzNDIzNCwzNDI1NSwzNDIzMywzNDI1NiwzNDI2MSwzNDI2OSwzNDI3NywzNDI2OCwzNDI5NywzNDMxNCwzNDMyMywzNDMxNSwzNDMwMiwzNDI5OCwzNDMxMCwzNDMzOCwzNDMzMCwzNDM1MiwzNDM2NywzNDM4MSwyMDA1MywzNDM4OCwzNDM5OSwzNDQwNywzNDQxNywzNDQ1MSwzNDQ2NywzNDQ3MywzNDQ3NCwzNDQ0MywzNDQ0NCwzNDQ4NiwzNDQ3OSwzNDUwMCwzNDUwMiwzNDQ4MCwzNDUwNSwzNDg1MSwzNDQ3NSwzNDUxNiwzNDUyNiwzNDUzNywzNDU0MCwzNDUyNywzNDUyMywzNDU0MywzNDU3OCwzNDU2NiwzNDU2OCwzNDU2MCwzNDU2MywzNDU1NSwzNDU3NywzNDU2OSwzNDU3MywzNDU1MywzNDU3MCwzNDYxMiwzNDYyMywzNDYxNSwzNDYxOSwzNDU5NywzNDYwMSwzNDU4NiwzNDY1NiwzNDY1NSwzNDY4MCwzNDYzNiwzNDYzOCwzNDY3NiwzNDY0NywzNDY2NCwzNDY3MCwzNDY0OSwzNDY0MywzNDY1OSwzNDY2NiwzNDgyMSwzNDcyMiwzNDcxOSwzNDY5MCwzNDczNSwzNDc2MywzNDc0OSwzNDc1MiwzNDc2OCwzODYxNCwzNDczMSwzNDc1NiwzNDczOSwzNDc1OSwzNDc1OCwzNDc0NywzNDc5OSwzNDgwMiwzNDc4NCwzNDgzMSwzNDgyOSwzNDgxNCwzNDgwNiwzNDgwNywzNDgzMCwzNDc3MCwzNDgzMywzNDgzOCwzNDgzNywzNDg1MCwzNDg0OSwzNDg2NSwzNDg3MCwzNDg3MywzNDg1NSwzNDg3NSwzNDg4NCwzNDg4MiwzNDg5OCwzNDkwNSwzNDkxMCwzNDkxNCwzNDkyMywzNDk0NSwzNDk0MiwzNDk3NCwzNDkzMywzNDk0MSwzNDk5NywzNDkzMCwzNDk0NiwzNDk2NywzNDk2MiwzNDk5MCwzNDk2OSwzNDk3OCwzNDk1NywzNDk4MCwzNDk5MiwzNTAwNywzNDk5MywzNTAxMSwzNTAxMiwzNTAyOCwzNTAzMiwzNTAzMywzNTAzNywzNTA2NSwzNTA3NCwzNTA2OCwzNTA2MCwzNTA0OCwzNTA1OCwzNTA3NiwzNTA4NCwzNTA4MiwzNTA5MSwzNTEzOSwzNTEwMiwzNTEwOSwzNTExNCwzNTExNSwzNTEzNywzNTE0MCwzNTEzMSwzNTEyNiwzNTEyOCwzNTE0OCwzNTEwMSwzNTE2OCwzNTE2NiwzNTE3NCwzNTE3MiwzNTE4MSwzNTE3OCwzNTE4MywzNTE4OCwzNTE5MSwzNTE5OCwzNTIwMywzNTIwOCwzNTIxMCwzNTIxOSwzNTIyNCwzNTIzMywzNTI0MSwzNTIzOCwzNTI0NCwzNTI0NywzNTI1MCwzNTI1OCwzNTI2MSwzNTI2MywzNTI2NCwzNTI5MCwzNTI5MiwzNTI5MywzNTMwMywzNTMxNiwzNTMyMCwzNTMzMSwzNTM1MCwzNTM0NCwzNTM0MCwzNTM1NSwzNTM1NywzNTM2NSwzNTM4MiwzNTM5MywzNTQxOSwzNTQxMCwzNTM5OCwzNTQwMCwzNTQ1MiwzNTQzNywzNTQzNiwzNTQyNiwzNTQ2MSwzNTQ1OCwzNTQ2MCwzNTQ5NiwzNTQ4OSwzNTQ3MywzNTQ5MywzNTQ5NCwzNTQ4MiwzNTQ5MSwzNTUyNCwzNTUzMywzNTUyMiwzNTU0NiwzNTU2MywzNTU3MSwzNTU1OSwzNTU1NiwzNTU2OSwzNTYwNCwzNTU1MiwzNTU1NCwzNTU3NSwzNTU1MCwzNTU0NywzNTU5NiwzNTU5MSwzNTYxMCwzNTU1MywzNTYwNiwzNTYwMCwzNTYwNywzNTYxNiwzNTYzNSwzODgyNywzNTYyMiwzNTYyNywzNTY0NiwzNTYyNCwzNTY0OSwzNTY2MCwzNTY2MywzNTY2MiwzNTY1NywzNTY3MCwzNTY3NSwzNTY3NCwzNTY5MSwzNTY3OSwzNTY5MiwzNTY5NSwzNTcwMCwzNTcwOSwzNTcxMiwzNTcyNCwzNTcyNiwzNTczMCwzNTczMSwzNTczNCwzNTczNywzNTczOCwzNTg5OCwzNTkwNSwzNTkwMywzNTkxMiwzNTkxNiwzNTkxOCwzNTkyMCwzNTkyNSwzNTkzOCwzNTk0OCwzNTk2MCwzNTk2MiwzNTk3MCwzNTk3NywzNTk3MywzNTk3OCwzNTk4MSwzNTk4MiwzNTk4OCwzNTk2NCwzNTk5MiwyNTExNywzNjAxMywzNjAxMCwzNjAyOSwzNjAxOCwzNjAxOSwzNjAxNCwzNjAyMiwzNjA0MCwzNjAzMywzNjA2OCwzNjA2NywzNjA1OCwzNjA5MywzNjA5MCwzNjA5MSwzNjEwMCwzNjEwMSwzNjEwNiwzNjEwMywzNjExMSwzNjEwOSwzNjExMiw0MDc4MiwzNjExNSwzNjA0NSwzNjExNiwzNjExOCwzNjE5OSwzNjIwNSwzNjIwOSwzNjIxMSwzNjIyNSwzNjI0OSwzNjI5MCwzNjI4NiwzNjI4MiwzNjMwMywzNjMxNCwzNjMxMCwzNjMwMCwzNjMxNSwzNjI5OSwzNjMzMCwzNjMzMSwzNjMxOSwzNjMyMywzNjM0OCwzNjM2MCwzNjM2MSwzNjM1MSwzNjM4MSwzNjM4MiwzNjM2OCwzNjM4MywzNjQxOCwzNjQwNSwzNjQwMCwzNjQwNCwzNjQyNiwzNjQyMywzNjQyNSwzNjQyOCwzNjQzMiwzNjQyNCwzNjQ0MSwzNjQ1MiwzNjQ0OCwzNjM5NCwzNjQ1MSwzNjQzNywzNjQ3MCwzNjQ2NiwzNjQ3NiwzNjQ4MSwzNjQ4NywzNjQ4NSwzNjQ4NCwzNjQ5MSwzNjQ5MCwzNjQ5OSwzNjQ5NywzNjUwMCwzNjUwNSwzNjUyMiwzNjUxMywzNjUyNCwzNjUyOCwzNjU1MCwzNjUyOSwzNjU0MiwzNjU0OSwzNjU1MiwzNjU1NSwzNjU3MSwzNjU3OSwzNjYwNCwzNjYwMywzNjU4NywzNjYwNiwzNjYxOCwzNjYxMywzNjYyOSwzNjYyNiwzNjYzMywzNjYyNywzNjYzNiwzNjYzOSwzNjYzNSwzNjYyMCwzNjY0NiwzNjY1OSwzNjY2NywzNjY2NSwzNjY3NywzNjY3NCwzNjY3MCwzNjY4NCwzNjY4MSwzNjY3OCwzNjY4NiwzNjY5NSwzNjcwMCwzNjcwNiwzNjcwNywzNjcwOCwzNjc2NCwzNjc2NywzNjc3MSwzNjc4MSwzNjc4MywzNjc5MSwzNjgyNiwzNjgzNywzNjgzNCwzNjg0MiwzNjg0NywzNjk5OSwzNjg1MiwzNjg2OSwzNjg1NywzNjg1OCwzNjg4MSwzNjg4NSwzNjg5NywzNjg3NywzNjg5NCwzNjg4NiwzNjg3NSwzNjkwMywzNjkxOCwzNjkxNywzNjkyMSwzNjg1NiwzNjk0MywzNjk0NCwzNjk0NSwzNjk0NiwzNjg3OCwzNjkzNywzNjkyNiwzNjk1MCwzNjk1MiwzNjk1OCwzNjk2OCwzNjk3NSwzNjk4MiwzODU2OCwzNjk3OCwzNjk5NCwzNjk4OSwzNjk5MywzNjk5MiwzNzAwMiwzNzAwMSwzNzAwNywzNzAzMiwzNzAzOSwzNzA0MSwzNzA0NSwzNzA5MCwzNzA5MiwyNTE2MCwzNzA4MywzNzEyMiwzNzEzOCwzNzE0NSwzNzE3MCwzNzE2OCwzNzE5NCwzNzIwNiwzNzIwOCwzNzIxOSwzNzIyMSwzNzIyNSwzNzIzNSwzNzIzNCwzNzI1OSwzNzI1NywzNzI1MCwzNzI4MiwzNzI5MSwzNzI5NSwzNzI5MCwzNzMwMSwzNzMwMCwzNzMwNiwzNzMxMiwzNzMxMywzNzMyMSwzNzMyMywzNzMyOCwzNzMzNCwzNzM0MywzNzM0NSwzNzMzOSwzNzM3MiwzNzM2NSwzNzM2NiwzNzQwNiwzNzM3NSwzNzM5NiwzNzQyMCwzNzM5NywzNzM5MywzNzQ3MCwzNzQ2MywzNzQ0NSwzNzQ0OSwzNzQ3NiwzNzQ0OCwzNzUyNSwzNzQzOSwzNzQ1MSwzNzQ1NiwzNzUzMiwzNzUyNiwzNzUyMywzNzUzMSwzNzQ2NiwzNzU4MywzNzU2MSwzNzU1OSwzNzYwOSwzNzY0NywzNzYyNiwzNzcwMCwzNzY3OCwzNzY1NywzNzY2NiwzNzY1OCwzNzY2NywzNzY5MCwzNzY4NSwzNzY5MSwzNzcyNCwzNzcyOCwzNzc1NiwzNzc0MiwzNzcxOCwzNzgwOCwzNzgwNCwzNzgwNSwzNzc4MCwzNzgxNywzNzg0NiwzNzg0NywzNzg2NCwzNzg2MSwzNzg0OCwzNzgyNywzNzg1MywzNzg0MCwzNzgzMiwzNzg2MCwzNzkxNCwzNzkwOCwzNzkwNywzNzg5MSwzNzg5NSwzNzkwNCwzNzk0MiwzNzkzMSwzNzk0MSwzNzkyMSwzNzk0NiwzNzk1MywzNzk3MCwzNzk1NiwzNzk3OSwzNzk4NCwzNzk4NiwzNzk4MiwzNzk5NCwzNzQxNywzODAwMCwzODAwNSwzODAwNywzODAxMywzNzk3OCwzODAxMiwzODAxNCwzODAxNywzODAxNSwzODI3NCwzODI3OSwzODI4MiwzODI5MiwzODI5NCwzODI5NiwzODI5NywzODMwNCwzODMxMiwzODMxMSwzODMxNywzODMzMiwzODMzMSwzODMyOSwzODMzNCwzODM0NiwyODY2MiwzODMzOSwzODM0OSwzODM0OCwzODM1NywzODM1NiwzODM1OCwzODM2NCwzODM2OSwzODM3MywzODM3MCwzODQzMywzODQ0MCwzODQ0NiwzODQ0NywzODQ2NiwzODQ3NiwzODQ3OSwzODQ3NSwzODUxOSwzODQ5MiwzODQ5NCwzODQ5MywzODQ5NSwzODUwMiwzODUxNCwzODUwOCwzODU0MSwzODU1MiwzODU0OSwzODU1MSwzODU3MCwzODU2NywzODU3NywzODU3OCwzODU3NiwzODU4MCwzODU4MiwzODU4NCwzODU4NSwzODYwNiwzODYwMywzODYwMSwzODYwNSwzNTE0OSwzODYyMCwzODY2OSwzODYxMywzODY0OSwzODY2MCwzODY2MiwzODY2NCwzODY3NSwzODY3MCwzODY3MywzODY3MSwzODY3OCwzODY4MSwzODY5MiwzODY5OCwzODcwNCwzODcxMywzODcxNywzODcxOCwzODcyNCwzODcyNiwzODcyOCwzODcyMiwzODcyOSwzODc0OCwzODc1MiwzODc1NiwzODc1OCwzODc2MCwyMTIwMiwzODc2MywzODc2OSwzODc3NywzODc4OSwzODc4MCwzODc4NSwzODc3OCwzODc5MCwzODc5NSwzODc5OSwzODgwMCwzODgxMiwzODgyNCwzODgyMiwzODgxOSwzODgzNSwzODgzNiwzODg1MSwzODg1NCwzODg1NiwzODg1OSwzODg3NiwzODg5Myw0MDc4MywzODg5OCwzMTQ1NSwzODkwMiwzODkwMSwzODkyNywzODkyNCwzODk2OCwzODk0OCwzODk0NSwzODk2NywzODk3MywzODk4MiwzODk5MSwzODk4NywzOTAxOSwzOTAyMywzOTAyNCwzOTAyNSwzOTAyOCwzOTAyNywzOTA4MiwzOTA4NywzOTA4OSwzOTA5NCwzOTEwOCwzOTEwNywzOTExMCwzOTE0NSwzOTE0NywzOTE3MSwzOTE3NywzOTE4NiwzOTE4OCwzOTE5MiwzOTIwMSwzOTE5NywzOTE5OCwzOTIwNCwzOTIwMCwzOTIxMiwzOTIxNCwzOTIyOSwzOTIzMCwzOTIzNCwzOTI0MSwzOTIzNywzOTI0OCwzOTI0MywzOTI0OSwzOTI1MCwzOTI0NCwzOTI1MywzOTMxOSwzOTMyMCwzOTMzMywzOTM0MSwzOTM0MiwzOTM1NiwzOTM5MSwzOTM4NywzOTM4OSwzOTM4NCwzOTM3NywzOTQwNSwzOTQwNiwzOTQwOSwzOTQxMCwzOTQxOSwzOTQxNiwzOTQyNSwzOTQzOSwzOTQyOSwzOTM5NCwzOTQ0OSwzOTQ2NywzOTQ3OSwzOTQ5MywzOTQ5MCwzOTQ4OCwzOTQ5MSwzOTQ4NiwzOTUwOSwzOTUwMSwzOTUxNSwzOTUxMSwzOTUxOSwzOTUyMiwzOTUyNSwzOTUyNCwzOTUyOSwzOTUzMSwzOTUzMCwzOTU5NywzOTYwMCwzOTYxMiwzOTYxNiwzOTYzMSwzOTYzMywzOTYzNSwzOTYzNiwzOTY0NiwzOTY0NywzOTY1MCwzOTY1MSwzOTY1NCwzOTY2MywzOTY1OSwzOTY2MiwzOTY2OCwzOTY2NSwzOTY3MSwzOTY3NSwzOTY4NiwzOTcwNCwzOTcwNiwzOTcxMSwzOTcxNCwzOTcxNSwzOTcxNywzOTcxOSwzOTcyMCwzOTcyMSwzOTcyMiwzOTcyNiwzOTcyNywzOTczMCwzOTc0OCwzOTc0NywzOTc1OSwzOTc1NywzOTc1OCwzOTc2MSwzOTc2OCwzOTc5NiwzOTgyNywzOTgxMSwzOTgyNSwzOTgzMCwzOTgzMSwzOTgzOSwzOTg0MCwzOTg0OCwzOTg2MCwzOTg3MiwzOTg4MiwzOTg2NSwzOTg3OCwzOTg4NywzOTg4OSwzOTg5MCwzOTkwNywzOTkwNiwzOTkwOCwzOTg5MiwzOTkwNSwzOTk5NCwzOTkyMiwzOTkyMSwzOTkyMCwzOTk1NywzOTk1NiwzOTk0NSwzOTk1NSwzOTk0OCwzOTk0MiwzOTk0NCwzOTk1NCwzOTk0NiwzOTk0MCwzOTk4MiwzOTk2MywzOTk3MywzOTk3MiwzOTk2OSwzOTk4NCw0MDAwNywzOTk4Niw0MDAwNiwzOTk5OCw0MDAyNiw0MDAzMiw0MDAzOSw0MDA1NCw0MDA1Niw0MDE2Nyw0MDE3Miw0MDE3Niw0MDIwMSw0MDIwMCw0MDE3MSw0MDE5NSw0MDE5OCw0MDIzNCw0MDIzMCw0MDM2Nyw0MDIyNyw0MDIyMyw0MDI2MCw0MDIxMyw0MDIxMCw0MDI1Nyw0MDI1NSw0MDI1NCw0MDI2Miw0MDI2NCw0MDI4NSw0MDI4Niw0MDI5Miw0MDI3Myw0MDI3Miw0MDI4MSw0MDMwNiw0MDMyOSw0MDMyNyw0MDM2Myw0MDMwMyw0MDMxNCw0MDM0Niw0MDM1Niw0MDM2MSw0MDM3MCw0MDM4OCw0MDM4NSw0MDM3OSw0MDM3Niw0MDM3OCw0MDM5MCw0MDM5OSw0MDM4Niw0MDQwOSw0MDQwMyw0MDQ0MCw0MDQyMiw0MDQyOSw0MDQzMSw0MDQ0NSw0MDQ3NCw0MDQ3NSw0MDQ3OCw0MDU2NSw0MDU2OSw0MDU3Myw0MDU3Nyw0MDU4NCw0MDU4Nyw0MDU4OCw0MDU5NCw0MDU5Nyw0MDU5Myw0MDYwNSw0MDYxMyw0MDYxNyw0MDYzMiw0MDYxOCw0MDYyMSwzODc1Myw0MDY1Miw0MDY1NCw0MDY1NSw0MDY1Niw0MDY2MCw0MDY2OCw0MDY3MCw0MDY2OSw0MDY3Miw0MDY3Nyw0MDY4MCw0MDY4Nyw0MDY5Miw0MDY5NCw0MDY5NSw0MDY5Nyw0MDY5OSw0MDcwMCw0MDcwMSw0MDcxMSw0MDcxMiwzMDM5MSw0MDcyNSw0MDczNyw0MDc0OCw0MDc2Niw0MDc3OCw0MDc4Niw0MDc4OCw0MDgwMyw0MDc5OSw0MDgwMCw0MDgwMSw0MDgwNiw0MDgwNyw0MDgxMiw0MDgxMCw0MDgyMyw0MDgxOCw0MDgyMiw0MDg1Myw0MDg2MCw0MDg2NCwyMjU3NSwyNzA3OSwzNjk1MywyOTc5NiwyMDk1NiwyOTA4MSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMzIzOTQsMzUxMDAsMzc3MDQsMzc1MTIsMzQwMTIsMjA0MjUsMjg4NTksMjYxNjEsMjY4MjQsMzc2MjUsMjYzNjMsMjQzODksMjAwMDgsMjAxOTMsMjAyMjAsMjAyMjQsMjAyMjcsMjAyODEsMjAzMTAsMjAzNzAsMjAzNjIsMjAzNzgsMjAzNzIsMjA0MjksMjA1NDQsMjA1MTQsMjA0NzksMjA1MTAsMjA1NTAsMjA1OTIsMjA1NDYsMjA2MjgsMjA3MjQsMjA2OTYsMjA4MTAsMjA4MzYsMjA4OTMsMjA5MjYsMjA5NzIsMjEwMTMsMjExNDgsMjExNTgsMjExODQsMjEyMTEsMjEyNDgsMjEyNTUsMjEyODQsMjEzNjIsMjEzOTUsMjE0MjYsMjE0NjksNjQwMTQsMjE2NjAsMjE2NDIsMjE2NzMsMjE3NTksMjE4OTQsMjIzNjEsMjIzNzMsMjI0NDQsMjI0NzIsMjI0NzEsNjQwMTUsNjQwMTYsMjI2ODYsMjI3MDYsMjI3OTUsMjI4NjcsMjI4NzUsMjI4NzcsMjI4ODMsMjI5NDgsMjI5NzAsMjMzODIsMjM0ODgsMjk5OTksMjM1MTIsMjM1MzIsMjM1ODIsMjM3MTgsMjM3MzgsMjM3OTcsMjM4NDcsMjM4OTEsNjQwMTcsMjM4NzQsMjM5MTcsMjM5OTIsMjM5OTMsMjQwMTYsMjQzNTMsMjQzNzIsMjQ0MjMsMjQ1MDMsMjQ1NDIsMjQ2NjksMjQ3MDksMjQ3MTQsMjQ3OTgsMjQ3ODksMjQ4NjQsMjQ4MTgsMjQ4NDksMjQ4ODcsMjQ4ODAsMjQ5ODQsMjUxMDcsMjUyNTQsMjU1ODksMjU2OTYsMjU3NTcsMjU4MDYsMjU5MzQsMjYxMTIsMjYxMzMsMjYxNzEsMjYxMjEsMjYxNTgsMjYxNDIsMjYxNDgsMjYyMTMsMjYxOTksMjYyMDEsNjQwMTgsMjYyMjcsMjYyNjUsMjYyNzIsMjYyOTAsMjYzMDMsMjYzNjIsMjYzODIsNjM3ODUsMjY0NzAsMjY1NTUsMjY3MDYsMjY1NjAsMjY2MjUsMjY2OTIsMjY4MzEsNjQwMTksMjY5ODQsNjQwMjAsMjcwMzIsMjcxMDYsMjcxODQsMjcyNDMsMjcyMDYsMjcyNTEsMjcyNjIsMjczNjIsMjczNjQsMjc2MDYsMjc3MTEsMjc3NDAsMjc3ODIsMjc3NTksMjc4NjYsMjc5MDgsMjgwMzksMjgwMTUsMjgwNTQsMjgwNzYsMjgxMTEsMjgxNTIsMjgxNDYsMjgxNTYsMjgyMTcsMjgyNTIsMjgxOTksMjgyMjAsMjgzNTEsMjg1NTIsMjg1OTcsMjg2NjEsMjg2NzcsMjg2NzksMjg3MTIsMjg4MDUsMjg4NDMsMjg5NDMsMjg5MzIsMjkwMjAsMjg5OTgsMjg5OTksNjQwMjEsMjkxMjEsMjkxODIsMjkzNjEsMjkzNzQsMjk0NzYsNjQwMjIsMjk1NTksMjk2MjksMjk2NDEsMjk2NTQsMjk2NjcsMjk2NTAsMjk3MDMsMjk2ODUsMjk3MzQsMjk3MzgsMjk3MzcsMjk3NDIsMjk3OTQsMjk4MzMsMjk4NTUsMjk5NTMsMzAwNjMsMzAzMzgsMzAzNjQsMzAzNjYsMzAzNjMsMzAzNzQsNjQwMjMsMzA1MzQsMjExNjcsMzA3NTMsMzA3OTgsMzA4MjAsMzA4NDIsMzEwMjQsNjQwMjQsNjQwMjUsNjQwMjYsMzExMjQsNjQwMjcsMzExMzEsMzE0NDEsMzE0NjMsNjQwMjgsMzE0NjcsMzE2NDYsNjQwMjksMzIwNzIsMzIwOTIsMzIxODMsMzIxNjAsMzIyMTQsMzIzMzgsMzI1ODMsMzI2NzMsNjQwMzAsMzM1MzcsMzM2MzQsMzM2NjMsMzM3MzUsMzM3ODIsMzM4NjQsMzM5NzIsMzQxMzEsMzQxMzcsMzQxNTUsNjQwMzEsMzQyMjQsNjQwMzIsNjQwMzMsMzQ4MjMsMzUwNjEsMzUzNDYsMzUzODMsMzU0NDksMzU0OTUsMzU1MTgsMzU1NTEsNjQwMzQsMzU1NzQsMzU2NjcsMzU3MTEsMzYwODAsMzYwODQsMzYxMTQsMzYyMTQsNjQwMzUsMzY1NTksNjQwMzYsNjQwMzcsMzY5NjcsMzcwODYsNjQwMzgsMzcxNDEsMzcxNTksMzczMzgsMzczMzUsMzczNDIsMzczNTcsMzczNTgsMzczNDgsMzczNDksMzczODIsMzczOTIsMzczODYsMzc0MzQsMzc0NDAsMzc0MzYsMzc0NTQsMzc0NjUsMzc0NTcsMzc0MzMsMzc0NzksMzc1NDMsMzc0OTUsMzc0OTYsMzc2MDcsMzc1OTEsMzc1OTMsMzc1ODQsNjQwMzksMzc1ODksMzc2MDAsMzc1ODcsMzc2NjksMzc2NjUsMzc2MjcsNjQwNDAsMzc2NjIsMzc2MzEsMzc2NjEsMzc2MzQsMzc3NDQsMzc3MTksMzc3OTYsMzc4MzAsMzc4NTQsMzc4ODAsMzc5MzcsMzc5NTcsMzc5NjAsMzgyOTAsNjM5NjQsNjQwNDEsMzg1NTcsMzg1NzUsMzg3MDcsMzg3MTUsMzg3MjMsMzg3MzMsMzg3MzUsMzg3MzcsMzg3NDEsMzg5OTksMzkwMTMsNjQwNDIsNjQwNDMsMzkyMDcsNjQwNDQsMzkzMjYsMzk1MDIsMzk2NDEsMzk2NDQsMzk3OTcsMzk3OTQsMzk4MjMsMzk4NTcsMzk4NjcsMzk5MzYsNDAzMDQsNDAyOTksNjQwNDUsNDA0NzMsNDA2NTcsbnVsbCxudWxsLDg1NjAsODU2MSw4NTYyLDg1NjMsODU2NCw4NTY1LDg1NjYsODU2Nyw4NTY4LDg1NjksNjU1MDYsNjU1MDgsNjUyODcsNjUyODIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw4NTYwLDg1NjEsODU2Miw4NTYzLDg1NjQsODU2NSw4NTY2LDg1NjcsODU2OCw4NTY5LDg1NDQsODU0NSw4NTQ2LDg1NDcsODU0OCw4NTQ5LDg1NTAsODU1MSw4NTUyLDg1NTMsNjU1MDYsNjU1MDgsNjUyODcsNjUyODIsMTI4NDksODQ3MCw4NDgxLDg3NTcsMzIzOTQsMzUxMDAsMzc3MDQsMzc1MTIsMzQwMTIsMjA0MjUsMjg4NTksMjYxNjEsMjY4MjQsMzc2MjUsMjYzNjMsMjQzODksMjAwMDgsMjAxOTMsMjAyMjAsMjAyMjQsMjAyMjcsMjAyODEsMjAzMTAsMjAzNzAsMjAzNjIsMjAzNzgsMjAzNzIsMjA0MjksMjA1NDQsMjA1MTQsMjA0NzksMjA1MTAsMjA1NTAsMjA1OTIsMjA1NDYsMjA2MjgsMjA3MjQsMjA2OTYsMjA4MTAsMjA4MzYsMjA4OTMsMjA5MjYsMjA5NzIsMjEwMTMsMjExNDgsMjExNTgsMjExODQsMjEyMTEsMjEyNDgsMjEyNTUsMjEyODQsMjEzNjIsMjEzOTUsMjE0MjYsMjE0NjksNjQwMTQsMjE2NjAsMjE2NDIsMjE2NzMsMjE3NTksMjE4OTQsMjIzNjEsMjIzNzMsMjI0NDQsMjI0NzIsMjI0NzEsNjQwMTUsNjQwMTYsMjI2ODYsMjI3MDYsMjI3OTUsMjI4NjcsMjI4NzUsMjI4NzcsMjI4ODMsMjI5NDgsMjI5NzAsMjMzODIsMjM0ODgsMjk5OTksMjM1MTIsMjM1MzIsMjM1ODIsMjM3MTgsMjM3MzgsMjM3OTcsMjM4NDcsMjM4OTEsNjQwMTcsMjM4NzQsMjM5MTcsMjM5OTIsMjM5OTMsMjQwMTYsMjQzNTMsMjQzNzIsMjQ0MjMsMjQ1MDMsMjQ1NDIsMjQ2NjksMjQ3MDksMjQ3MTQsMjQ3OTgsMjQ3ODksMjQ4NjQsMjQ4MTgsMjQ4NDksMjQ4ODcsMjQ4ODAsMjQ5ODQsMjUxMDcsMjUyNTQsMjU1ODksMjU2OTYsMjU3NTcsMjU4MDYsMjU5MzQsMjYxMTIsMjYxMzMsMjYxNzEsMjYxMjEsMjYxNTgsMjYxNDIsMjYxNDgsMjYyMTMsMjYxOTksMjYyMDEsNjQwMTgsMjYyMjcsMjYyNjUsMjYyNzIsMjYyOTAsMjYzMDMsMjYzNjIsMjYzODIsNjM3ODUsMjY0NzAsMjY1NTUsMjY3MDYsMjY1NjAsMjY2MjUsMjY2OTIsMjY4MzEsNjQwMTksMjY5ODQsNjQwMjAsMjcwMzIsMjcxMDYsMjcxODQsMjcyNDMsMjcyMDYsMjcyNTEsMjcyNjIsMjczNjIsMjczNjQsMjc2MDYsMjc3MTEsMjc3NDAsMjc3ODIsMjc3NTksMjc4NjYsMjc5MDgsMjgwMzksMjgwMTUsMjgwNTQsMjgwNzYsMjgxMTEsMjgxNTIsMjgxNDYsMjgxNTYsMjgyMTcsMjgyNTIsMjgxOTksMjgyMjAsMjgzNTEsMjg1NTIsMjg1OTcsMjg2NjEsMjg2NzcsMjg2NzksMjg3MTIsMjg4MDUsMjg4NDMsMjg5NDMsMjg5MzIsMjkwMjAsMjg5OTgsMjg5OTksNjQwMjEsMjkxMjEsMjkxODIsMjkzNjEsMjkzNzQsMjk0NzYsNjQwMjIsMjk1NTksMjk2MjksMjk2NDEsMjk2NTQsMjk2NjcsMjk2NTAsMjk3MDMsMjk2ODUsMjk3MzQsMjk3MzgsMjk3MzcsMjk3NDIsMjk3OTQsMjk4MzMsMjk4NTUsMjk5NTMsMzAwNjMsMzAzMzgsMzAzNjQsMzAzNjYsMzAzNjMsMzAzNzQsNjQwMjMsMzA1MzQsMjExNjcsMzA3NTMsMzA3OTgsMzA4MjAsMzA4NDIsMzEwMjQsNjQwMjQsNjQwMjUsNjQwMjYsMzExMjQsNjQwMjcsMzExMzEsMzE0NDEsMzE0NjMsNjQwMjgsMzE0NjcsMzE2NDYsNjQwMjksMzIwNzIsMzIwOTIsMzIxODMsMzIxNjAsMzIyMTQsMzIzMzgsMzI1ODMsMzI2NzMsNjQwMzAsMzM1MzcsMzM2MzQsMzM2NjMsMzM3MzUsMzM3ODIsMzM4NjQsMzM5NzIsMzQxMzEsMzQxMzcsMzQxNTUsNjQwMzEsMzQyMjQsNjQwMzIsNjQwMzMsMzQ4MjMsMzUwNjEsMzUzNDYsMzUzODMsMzU0NDksMzU0OTUsMzU1MTgsMzU1NTEsNjQwMzQsMzU1NzQsMzU2NjcsMzU3MTEsMzYwODAsMzYwODQsMzYxMTQsMzYyMTQsNjQwMzUsMzY1NTksNjQwMzYsNjQwMzcsMzY5NjcsMzcwODYsNjQwMzgsMzcxNDEsMzcxNTksMzczMzgsMzczMzUsMzczNDIsMzczNTcsMzczNTgsMzczNDgsMzczNDksMzczODIsMzczOTIsMzczODYsMzc0MzQsMzc0NDAsMzc0MzYsMzc0NTQsMzc0NjUsMzc0NTcsMzc0MzMsMzc0NzksMzc1NDMsMzc0OTUsMzc0OTYsMzc2MDcsMzc1OTEsMzc1OTMsMzc1ODQsNjQwMzksMzc1ODksMzc2MDAsMzc1ODcsMzc2NjksMzc2NjUsMzc2MjcsNjQwNDAsMzc2NjIsMzc2MzEsMzc2NjEsMzc2MzQsMzc3NDQsMzc3MTksMzc3OTYsMzc4MzAsMzc4NTQsMzc4ODAsMzc5MzcsMzc5NTcsMzc5NjAsMzgyOTAsNjM5NjQsNjQwNDEsMzg1NTcsMzg1NzUsMzg3MDcsMzg3MTUsMzg3MjMsMzg3MzMsMzg3MzUsMzg3MzcsMzg3NDEsMzg5OTksMzkwMTMsNjQwNDIsNjQwNDMsMzkyMDcsNjQwNDQsMzkzMjYsMzk1MDIsMzk2NDEsMzk2NDQsMzk3OTcsMzk3OTQsMzk4MjMsMzk4NTcsMzk4NjcsMzk5MzYsNDAzMDQsNDAyOTksNjQwNDUsNDA0NzMsNDA2NTcsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJqaXMwMjEyXCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDcyOCw3MTEsMTg0LDcyOSw3MzMsMTc1LDczMSw3MzAsNjUzNzQsOTAwLDkwMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTYxLDE2NiwxOTEsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE4NiwxNzAsMTY5LDE3NCw4NDgyLDE2NCw4NDcwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCw5MDIsOTA0LDkwNSw5MDYsOTM4LG51bGwsOTA4LG51bGwsOTEwLDkzOSxudWxsLDkxMSxudWxsLG51bGwsbnVsbCxudWxsLDk0MCw5NDEsOTQyLDk0Myw5NzAsOTEyLDk3Miw5NjIsOTczLDk3MSw5NDQsOTc0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzOCwxMDM5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExOCwxMTE5LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTk4LDI3MixudWxsLDI5NCxudWxsLDMwNixudWxsLDMyMSwzMTksbnVsbCwzMzAsMjE2LDMzOCxudWxsLDM1OCwyMjIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMzAsMjczLDI0MCwyOTUsMzA1LDMwNywzMTIsMzIyLDMyMCwzMjksMzMxLDI0OCwzMzksMjIzLDM1OSwyNTQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTMsMTkyLDE5NiwxOTQsMjU4LDQ2MSwyNTYsMjYwLDE5NywxOTUsMjYyLDI2NCwyNjgsMTk5LDI2NiwyNzAsMjAxLDIwMCwyMDMsMjAyLDI4MiwyNzgsMjc0LDI4MCxudWxsLDI4NCwyODYsMjkwLDI4OCwyOTIsMjA1LDIwNCwyMDcsMjA2LDQ2MywzMDQsMjk4LDMwMiwyOTYsMzA4LDMxMCwzMTMsMzE3LDMxNSwzMjMsMzI3LDMyNSwyMDksMjExLDIxMCwyMTQsMjEyLDQ2NSwzMzYsMzMyLDIxMywzNDAsMzQ0LDM0MiwzNDYsMzQ4LDM1MiwzNTAsMzU2LDM1NCwyMTgsMjE3LDIyMCwyMTksMzY0LDQ2NywzNjgsMzYyLDM3MCwzNjYsMzYwLDQ3MSw0NzUsNDczLDQ2OSwzNzIsMjIxLDM3NiwzNzQsMzc3LDM4MSwzNzksbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwyMjUsMjI0LDIyOCwyMjYsMjU5LDQ2MiwyNTcsMjYxLDIyOSwyMjcsMjYzLDI2NSwyNjksMjMxLDI2NywyNzEsMjMzLDIzMiwyMzUsMjM0LDI4MywyNzksMjc1LDI4MSw1MDEsMjg1LDI4NyxudWxsLDI4OSwyOTMsMjM3LDIzNiwyMzksMjM4LDQ2NCxudWxsLDI5OSwzMDMsMjk3LDMwOSwzMTEsMzE0LDMxOCwzMTYsMzI0LDMyOCwzMjYsMjQxLDI0MywyNDIsMjQ2LDI0NCw0NjYsMzM3LDMzMywyNDUsMzQxLDM0NSwzNDMsMzQ3LDM0OSwzNTMsMzUxLDM1NywzNTUsMjUwLDI0OSwyNTIsMjUxLDM2NSw0NjgsMzY5LDM2MywzNzEsMzY3LDM2MSw0NzIsNDc2LDQ3NCw0NzAsMzczLDI1MywyNTUsMzc1LDM3OCwzODIsMzgwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxOTk3MCwxOTk3MiwxOTk3MywxOTk4MCwxOTk4NiwxOTk5OSwyMDAwMywyMDAwNCwyMDAwOCwyMDAxMSwyMDAxNCwyMDAxNSwyMDAxNiwyMDAyMSwyMDAzMiwyMDAzMywyMDAzNiwyMDAzOSwyMDA0OSwyMDA1OCwyMDA2MCwyMDA2NywyMDA3MiwyMDA3MywyMDA4NCwyMDA4NSwyMDA4OSwyMDA5NSwyMDEwOSwyMDExOCwyMDExOSwyMDEyNSwyMDE0MywyMDE1MywyMDE2MywyMDE3NiwyMDE4NiwyMDE4NywyMDE5MiwyMDE5MywyMDE5NCwyMDIwMCwyMDIwNywyMDIwOSwyMDIxMSwyMDIxMywyMDIyMSwyMDIyMiwyMDIyMywyMDIyNCwyMDIyNiwyMDIyNywyMDIzMiwyMDIzNSwyMDIzNiwyMDI0MiwyMDI0NSwyMDI0NiwyMDI0NywyMDI0OSwyMDI3MCwyMDI3MywyMDMyMCwyMDI3NSwyMDI3NywyMDI3OSwyMDI4MSwyMDI4MywyMDI4NiwyMDI4OCwyMDI5MCwyMDI5NiwyMDI5NywyMDI5OSwyMDMwMCwyMDMwNiwyMDMwOCwyMDMxMCwyMDMxMiwyMDMxOSwyMDMyMywyMDMzMCwyMDMzMiwyMDMzNCwyMDMzNywyMDM0MywyMDM0NCwyMDM0NSwyMDM0NiwyMDM0OSwyMDM1MCwyMDM1MywyMDM1NCwyMDM1NiwyMDM1NywyMDM2MSwyMDM2MiwyMDM2NCwyMDM2NiwyMDM2OCwyMDM3MCwyMDM3MSwyMDM3MiwyMDM3NSwyMDM3NywyMDM3OCwyMDM4MiwyMDM4MywyMDQwMiwyMDQwNywyMDQwOSwyMDQxMSwyMDQxMiwyMDQxMywyMDQxNCwyMDQxNiwyMDQxNywyMDQyMSwyMDQyMiwyMDQyNCwyMDQyNSwyMDQyNywyMDQyOCwyMDQyOSwyMDQzMSwyMDQzNCwyMDQ0NCwyMDQ0OCwyMDQ1MCwyMDQ2NCwyMDQ2NiwyMDQ3NiwyMDQ3NywyMDQ3OSwyMDQ4MCwyMDQ4MSwyMDQ4NCwyMDQ4NywyMDQ5MCwyMDQ5MiwyMDQ5NCwyMDQ5NiwyMDQ5OSwyMDUwMywyMDUwNCwyMDUwNywyMDUwOCwyMDUwOSwyMDUxMCwyMDUxNCwyMDUxOSwyMDUyNiwyMDUyOCwyMDUzMCwyMDUzMSwyMDUzMywyMDU0NCwyMDU0NSwyMDU0NiwyMDU0OSwyMDU1MCwyMDU1NCwyMDU1NiwyMDU1OCwyMDU2MSwyMDU2MiwyMDU2MywyMDU2NywyMDU2OSwyMDU3NSwyMDU3NiwyMDU3OCwyMDU3OSwyMDU4MiwyMDU4MywyMDU4NiwyMDU4OSwyMDU5MiwyMDU5MywyMDUzOSwyMDYwOSwyMDYxMSwyMDYxMiwyMDYxNCwyMDYxOCwyMDYyMiwyMDYyMywyMDYyNCwyMDYyNiwyMDYyNywyMDYyOCwyMDYzMCwyMDYzNSwyMDYzNiwyMDYzOCwyMDYzOSwyMDY0MCwyMDY0MSwyMDY0MiwyMDY1MCwyMDY1NSwyMDY1NiwyMDY2NSwyMDY2NiwyMDY2OSwyMDY3MiwyMDY3NSwyMDY3NiwyMDY3OSwyMDY4NCwyMDY4NiwyMDY4OCwyMDY5MSwyMDY5MiwyMDY5NiwyMDcwMCwyMDcwMSwyMDcwMywyMDcwNiwyMDcwOCwyMDcxMCwyMDcxMiwyMDcxMywyMDcxOSwyMDcyMSwyMDcyNiwyMDczMCwyMDczNCwyMDczOSwyMDc0MiwyMDc0MywyMDc0NCwyMDc0NywyMDc0OCwyMDc0OSwyMDc1MCwyMDcyMiwyMDc1MiwyMDc1OSwyMDc2MSwyMDc2MywyMDc2NCwyMDc2NSwyMDc2NiwyMDc3MSwyMDc3NSwyMDc3NiwyMDc4MCwyMDc4MSwyMDc4MywyMDc4NSwyMDc4NywyMDc4OCwyMDc4OSwyMDc5MiwyMDc5MywyMDgwMiwyMDgxMCwyMDgxNSwyMDgxOSwyMDgyMSwyMDgyMywyMDgyNCwyMDgzMSwyMDgzNiwyMDgzOCwyMDg2MiwyMDg2NywyMDg2OCwyMDg3NSwyMDg3OCwyMDg4OCwyMDg5MywyMDg5NywyMDg5OSwyMDkwOSwyMDkyMCwyMDkyMiwyMDkyNCwyMDkyNiwyMDkyNywyMDkzMCwyMDkzNiwyMDk0MywyMDk0NSwyMDk0NiwyMDk0NywyMDk0OSwyMDk1MiwyMDk1OCwyMDk2MiwyMDk2NSwyMDk3NCwyMDk3OCwyMDk3OSwyMDk4MCwyMDk4MywyMDk5MywyMDk5NCwyMDk5NywyMTAxMCwyMTAxMSwyMTAxMywyMTAxNCwyMTAxNiwyMTAyNiwyMTAzMiwyMTA0MSwyMTA0MiwyMTA0NSwyMTA1MiwyMTA2MSwyMTA2NSwyMTA3NywyMTA3OSwyMTA4MCwyMTA4MiwyMTA4NCwyMTA4NywyMTA4OCwyMTA4OSwyMTA5NCwyMTEwMiwyMTExMSwyMTExMiwyMTExMywyMTEyMCwyMTEyMiwyMTEyNSwyMTEzMCwyMTEzMiwyMTEzOSwyMTE0MSwyMTE0MiwyMTE0MywyMTE0NCwyMTE0NiwyMTE0OCwyMTE1NiwyMTE1NywyMTE1OCwyMTE1OSwyMTE2NywyMTE2OCwyMTE3NCwyMTE3NSwyMTE3NiwyMTE3OCwyMTE3OSwyMTE4MSwyMTE4NCwyMTE4OCwyMTE5MCwyMTE5MiwyMTE5NiwyMTE5OSwyMTIwMSwyMTIwNCwyMTIwNiwyMTIxMSwyMTIxMiwyMTIxNywyMTIyMSwyMTIyNCwyMTIyNSwyMTIyNiwyMTIyOCwyMTIzMiwyMTIzMywyMTIzNiwyMTIzOCwyMTIzOSwyMTI0OCwyMTI1MSwyMTI1OCwyMTI1OSwyMTI2MCwyMTI2NSwyMTI2NywyMTI3MiwyMTI3NSwyMTI3NiwyMTI3OCwyMTI3OSwyMTI4NSwyMTI4NywyMTI4OCwyMTI4OSwyMTI5MSwyMTI5MiwyMTI5MywyMTI5NiwyMTI5OCwyMTMwMSwyMTMwOCwyMTMwOSwyMTMxMCwyMTMxNCwyMTMyNCwyMTMyMywyMTMzNywyMTMzOSwyMTM0NSwyMTM0NywyMTM0OSwyMTM1NiwyMTM1NywyMTM2MiwyMTM2OSwyMTM3NCwyMTM3OSwyMTM4MywyMTM4NCwyMTM5MCwyMTM5NSwyMTM5NiwyMTQwMSwyMTQwNSwyMTQwOSwyMTQxMiwyMTQxOCwyMTQxOSwyMTQyMywyMTQyNiwyMTQyOCwyMTQyOSwyMTQzMSwyMTQzMiwyMTQzNCwyMTQzNywyMTQ0MCwyMTQ0NSwyMTQ1NSwyMTQ1OCwyMTQ1OSwyMTQ2MSwyMTQ2NiwyMTQ2OSwyMTQ3MCwyMTQ3MiwyMTQ3OCwyMTQ3OSwyMTQ5MywyMTUwNiwyMTUyMywyMTUzMCwyMTUzNywyMTU0MywyMTU0NCwyMTU0NiwyMTU1MSwyMTU1MywyMTU1NiwyMTU1NywyMTU3MSwyMTU3MiwyMTU3NSwyMTU4MSwyMTU4MywyMTU5OCwyMTYwMiwyMTYwNCwyMTYwNiwyMTYwNywyMTYwOSwyMTYxMSwyMTYxMywyMTYxNCwyMTYyMCwyMTYzMSwyMTYzMywyMTYzNSwyMTYzNywyMTY0MCwyMTY0MSwyMTY0NSwyMTY0OSwyMTY1MywyMTY1NCwyMTY2MCwyMTY2MywyMTY2NSwyMTY3MCwyMTY3MSwyMTY3MywyMTY3NCwyMTY3NywyMTY3OCwyMTY4MSwyMTY4NywyMTY4OSwyMTY5MCwyMTY5MSwyMTY5NSwyMTcwMiwyMTcwNiwyMTcwOSwyMTcxMCwyMTcyOCwyMTczOCwyMTc0MCwyMTc0MywyMTc1MCwyMTc1NiwyMTc1OCwyMTc1OSwyMTc2MCwyMTc2MSwyMTc2NSwyMTc2OCwyMTc2OSwyMTc3MiwyMTc3MywyMTc3NCwyMTc4MSwyMTgwMiwyMTgwMywyMTgxMCwyMTgxMywyMTgxNCwyMTgxOSwyMTgyMCwyMTgyMSwyMTgyNSwyMTgzMSwyMTgzMywyMTgzNCwyMTgzNywyMTg0MCwyMTg0MSwyMTg0OCwyMTg1MCwyMTg1MSwyMTg1NCwyMTg1NiwyMTg1NywyMTg2MCwyMTg2MiwyMTg4NywyMTg4OSwyMTg5MCwyMTg5NCwyMTg5NiwyMTkwMiwyMTkwMywyMTkwNSwyMTkwNiwyMTkwNywyMTkwOCwyMTkxMSwyMTkyMywyMTkyNCwyMTkzMywyMTkzOCwyMTk1MSwyMTk1MywyMTk1NSwyMTk1OCwyMTk2MSwyMTk2MywyMTk2NCwyMTk2NiwyMTk2OSwyMTk3MCwyMTk3MSwyMTk3NSwyMTk3NiwyMTk3OSwyMTk4MiwyMTk4NiwyMTk5MywyMjAwNiwyMjAxNSwyMjAyMSwyMjAyNCwyMjAyNiwyMjAyOSwyMjAzMCwyMjAzMSwyMjAzMiwyMjAzMywyMjAzNCwyMjA0MSwyMjA2MCwyMjA2NCwyMjA2NywyMjA2OSwyMjA3MSwyMjA3MywyMjA3NSwyMjA3NiwyMjA3NywyMjA3OSwyMjA4MCwyMjA4MSwyMjA4MywyMjA4NCwyMjA4NiwyMjA4OSwyMjA5MSwyMjA5MywyMjA5NSwyMjEwMCwyMjExMCwyMjExMiwyMjExMywyMjExNCwyMjExNSwyMjExOCwyMjEyMSwyMjEyNSwyMjEyNywyMjEyOSwyMjEzMCwyMjEzMywyMjE0OCwyMjE0OSwyMjE1MiwyMjE1NSwyMjE1NiwyMjE2NSwyMjE2OSwyMjE3MCwyMjE3MywyMjE3NCwyMjE3NSwyMjE4MiwyMjE4MywyMjE4NCwyMjE4NSwyMjE4NywyMjE4OCwyMjE4OSwyMjE5MywyMjE5NSwyMjE5OSwyMjIwNiwyMjIxMywyMjIxNywyMjIxOCwyMjIxOSwyMjIyMywyMjIyNCwyMjIyMCwyMjIyMSwyMjIzMywyMjIzNiwyMjIzNywyMjIzOSwyMjI0MSwyMjI0NCwyMjI0NSwyMjI0NiwyMjI0NywyMjI0OCwyMjI1NywyMjI1MSwyMjI1MywyMjI2MiwyMjI2MywyMjI3MywyMjI3NCwyMjI3OSwyMjI4MiwyMjI4NCwyMjI4OSwyMjI5MywyMjI5OCwyMjI5OSwyMjMwMSwyMjMwNCwyMjMwNiwyMjMwNywyMjMwOCwyMjMwOSwyMjMxMywyMjMxNCwyMjMxNiwyMjMxOCwyMjMxOSwyMjMyMywyMjMyNCwyMjMzMywyMjMzNCwyMjMzNSwyMjM0MSwyMjM0MiwyMjM0OCwyMjM0OSwyMjM1NCwyMjM3MCwyMjM3MywyMjM3NSwyMjM3NiwyMjM3OSwyMjM4MSwyMjM4MiwyMjM4MywyMjM4NCwyMjM4NSwyMjM4NywyMjM4OCwyMjM4OSwyMjM5MSwyMjM5MywyMjM5NCwyMjM5NSwyMjM5NiwyMjM5OCwyMjQwMSwyMjQwMywyMjQxMiwyMjQyMCwyMjQyMywyMjQyNSwyMjQyNiwyMjQyOCwyMjQyOSwyMjQzMCwyMjQzMSwyMjQzMywyMjQyMSwyMjQzOSwyMjQ0MCwyMjQ0MSwyMjQ0NCwyMjQ1NiwyMjQ2MSwyMjQ3MSwyMjQ3MiwyMjQ3NiwyMjQ3OSwyMjQ4NSwyMjQ5MywyMjQ5NCwyMjUwMCwyMjUwMiwyMjUwMywyMjUwNSwyMjUwOSwyMjUxMiwyMjUxNywyMjUxOCwyMjUyMCwyMjUyNSwyMjUyNiwyMjUyNywyMjUzMSwyMjUzMiwyMjUzNiwyMjUzNywyMjQ5NywyMjU0MCwyMjU0MSwyMjU1NSwyMjU1OCwyMjU1OSwyMjU2MCwyMjU2NiwyMjU2NywyMjU3MywyMjU3OCwyMjU4NSwyMjU5MSwyMjYwMSwyMjYwNCwyMjYwNSwyMjYwNywyMjYwOCwyMjYxMywyMjYyMywyMjYyNSwyMjYyOCwyMjYzMSwyMjYzMiwyMjY0OCwyMjY1MiwyMjY1NSwyMjY1NiwyMjY1NywyMjY2MywyMjY2NCwyMjY2NSwyMjY2NiwyMjY2OCwyMjY2OSwyMjY3MSwyMjY3MiwyMjY3NiwyMjY3OCwyMjY4NSwyMjY4OCwyMjY4OSwyMjY5MCwyMjY5NCwyMjY5NywyMjcwNSwyMjcwNiwyMjcyNCwyMjcxNiwyMjcyMiwyMjcyOCwyMjczMywyMjczNCwyMjczNiwyMjczOCwyMjc0MCwyMjc0MiwyMjc0NiwyMjc0OSwyMjc1MywyMjc1NCwyMjc2MSwyMjc3MSwyMjc4OSwyMjc5MCwyMjc5NSwyMjc5NiwyMjgwMiwyMjgwMywyMjgwNCwzNDM2OSwyMjgxMywyMjgxNywyMjgxOSwyMjgyMCwyMjgyNCwyMjgzMSwyMjgzMiwyMjgzNSwyMjgzNywyMjgzOCwyMjg0NywyMjg1MSwyMjg1NCwyMjg2NiwyMjg2NywyMjg3MywyMjg3NSwyMjg3NywyMjg3OCwyMjg3OSwyMjg4MSwyMjg4MywyMjg5MSwyMjg5MywyMjg5NSwyMjg5OCwyMjkwMSwyMjkwMiwyMjkwNSwyMjkwNywyMjkwOCwyMjkyMywyMjkyNCwyMjkyNiwyMjkzMCwyMjkzMywyMjkzNSwyMjk0MywyMjk0OCwyMjk1MSwyMjk1NywyMjk1OCwyMjk1OSwyMjk2MCwyMjk2MywyMjk2NywyMjk3MCwyMjk3MiwyMjk3NywyMjk3OSwyMjk4MCwyMjk4NCwyMjk4NiwyMjk4OSwyMjk5NCwyMzAwNSwyMzAwNiwyMzAwNywyMzAxMSwyMzAxMiwyMzAxNSwyMzAyMiwyMzAyMywyMzAyNSwyMzAyNiwyMzAyOCwyMzAzMSwyMzA0MCwyMzA0NCwyMzA1MiwyMzA1MywyMzA1NCwyMzA1OCwyMzA1OSwyMzA3MCwyMzA3NSwyMzA3NiwyMzA3OSwyMzA4MCwyMzA4MiwyMzA4NSwyMzA4OCwyMzEwOCwyMzEwOSwyMzExMSwyMzExMiwyMzExNiwyMzEyMCwyMzEyNSwyMzEzNCwyMzEzOSwyMzE0MSwyMzE0MywyMzE0OSwyMzE1OSwyMzE2MiwyMzE2MywyMzE2NiwyMzE3OSwyMzE4NCwyMzE4NywyMzE5MCwyMzE5MywyMzE5NiwyMzE5OCwyMzE5OSwyMzIwMCwyMzIwMiwyMzIwNywyMzIxMiwyMzIxNywyMzIxOCwyMzIxOSwyMzIyMSwyMzIyNCwyMzIyNiwyMzIyNywyMzIzMSwyMzIzNiwyMzIzOCwyMzI0MCwyMzI0NywyMzI1OCwyMzI2MCwyMzI2NCwyMzI2OSwyMzI3NCwyMzI3OCwyMzI4NSwyMzI4NiwyMzI5MywyMzI5NiwyMzI5NywyMzMwNCwyMzMxOSwyMzM0OCwyMzMyMSwyMzMyMywyMzMyNSwyMzMyOSwyMzMzMywyMzM0MSwyMzM1MiwyMzM2MSwyMzM3MSwyMzM3MiwyMzM3OCwyMzM4MiwyMzM5MCwyMzQwMCwyMzQwNiwyMzQwNywyMzQyMCwyMzQyMSwyMzQyMiwyMzQyMywyMzQyNSwyMzQyOCwyMzQzMCwyMzQzNCwyMzQzOCwyMzQ0MCwyMzQ0MSwyMzQ0MywyMzQ0NCwyMzQ0NiwyMzQ2NCwyMzQ2NSwyMzQ2OCwyMzQ2OSwyMzQ3MSwyMzQ3MywyMzQ3NCwyMzQ3OSwyMzQ4MiwyMzQ4NCwyMzQ4OCwyMzQ4OSwyMzUwMSwyMzUwMywyMzUxMCwyMzUxMSwyMzUxMiwyMzUxMywyMzUxNCwyMzUyMCwyMzUzNSwyMzUzNywyMzU0MCwyMzU0OSwyMzU2NCwyMzU3NSwyMzU4MiwyMzU4MywyMzU4NywyMzU5MCwyMzU5MywyMzU5NSwyMzU5NiwyMzU5OCwyMzYwMCwyMzYwMiwyMzYwNSwyMzYwNiwyMzY0MSwyMzY0MiwyMzY0NCwyMzY1MCwyMzY1MSwyMzY1NSwyMzY1NiwyMzY1NywyMzY2MSwyMzY2NCwyMzY2OCwyMzY2OSwyMzY3NCwyMzY3NSwyMzY3NiwyMzY3NywyMzY4NywyMzY4OCwyMzY5MCwyMzY5NSwyMzY5OCwyMzcwOSwyMzcxMSwyMzcxMiwyMzcxNCwyMzcxNSwyMzcxOCwyMzcyMiwyMzczMCwyMzczMiwyMzczMywyMzczOCwyMzc1MywyMzc1NSwyMzc2MiwyMzc3MywyMzc2NywyMzc5MCwyMzc5MywyMzc5NCwyMzc5NiwyMzgwOSwyMzgxNCwyMzgyMSwyMzgyNiwyMzg1MSwyMzg0MywyMzg0NCwyMzg0NiwyMzg0NywyMzg1NywyMzg2MCwyMzg2NSwyMzg2OSwyMzg3MSwyMzg3NCwyMzg3NSwyMzg3OCwyMzg4MCwyMzg5MywyMzg4OSwyMzg5NywyMzg4MiwyMzkwMywyMzkwNCwyMzkwNSwyMzkwNiwyMzkwOCwyMzkxNCwyMzkxNywyMzkyMCwyMzkyOSwyMzkzMCwyMzkzNCwyMzkzNSwyMzkzNywyMzkzOSwyMzk0NCwyMzk0NiwyMzk1NCwyMzk1NSwyMzk1NiwyMzk1NywyMzk2MSwyMzk2MywyMzk2NywyMzk2OCwyMzk3NSwyMzk3OSwyMzk4NCwyMzk4OCwyMzk5MiwyMzk5MywyNDAwMywyNDAwNywyNDAxMSwyNDAxNiwyNDAxNCwyNDAyNCwyNDAyNSwyNDAzMiwyNDAzNiwyNDA0MSwyNDA1NiwyNDA1NywyNDA2NCwyNDA3MSwyNDA3NywyNDA4MiwyNDA4NCwyNDA4NSwyNDA4OCwyNDA5NSwyNDA5NiwyNDExMCwyNDEwNCwyNDExNCwyNDExNywyNDEyNiwyNDEzOSwyNDE0NCwyNDEzNywyNDE0NSwyNDE1MCwyNDE1MiwyNDE1NSwyNDE1NiwyNDE1OCwyNDE2OCwyNDE3MCwyNDE3MSwyNDE3MiwyNDE3MywyNDE3NCwyNDE3NiwyNDE5MiwyNDIwMywyNDIwNiwyNDIyNiwyNDIyOCwyNDIyOSwyNDIzMiwyNDIzNCwyNDIzNiwyNDI0MSwyNDI0MywyNDI1MywyNDI1NCwyNDI1NSwyNDI2MiwyNDI2OCwyNDI2NywyNDI3MCwyNDI3MywyNDI3NCwyNDI3NiwyNDI3NywyNDI4NCwyNDI4NiwyNDI5MywyNDI5OSwyNDMyMiwyNDMyNiwyNDMyNywyNDMyOCwyNDMzNCwyNDM0NSwyNDM0OCwyNDM0OSwyNDM1MywyNDM1NCwyNDM1NSwyNDM1NiwyNDM2MCwyNDM2MywyNDM2NCwyNDM2NiwyNDM2OCwyNDM3MiwyNDM3NCwyNDM3OSwyNDM4MSwyNDM4MywyNDM4NCwyNDM4OCwyNDM4OSwyNDM5MSwyNDM5NywyNDQwMCwyNDQwNCwyNDQwOCwyNDQxMSwyNDQxNiwyNDQxOSwyNDQyMCwyNDQyMywyNDQzMSwyNDQzNCwyNDQzNiwyNDQzNywyNDQ0MCwyNDQ0MiwyNDQ0NSwyNDQ0NiwyNDQ1NywyNDQ2MSwyNDQ2MywyNDQ3MCwyNDQ3NiwyNDQ3NywyNDQ4MiwyNDQ4NywyNDQ5MSwyNDQ4NCwyNDQ5MiwyNDQ5NSwyNDQ5NiwyNDQ5NywyNDUwNCwyNDUxNiwyNDUxOSwyNDUyMCwyNDUyMSwyNDUyMywyNDUyOCwyNDUyOSwyNDUzMCwyNDUzMSwyNDUzMiwyNDU0MiwyNDU0NSwyNDU0NiwyNDU1MiwyNDU1MywyNDU1NCwyNDU1NiwyNDU1NywyNDU1OCwyNDU1OSwyNDU2MiwyNDU2MywyNDU2NiwyNDU3MCwyNDU3MiwyNDU4MywyNDU4NiwyNDU4OSwyNDU5NSwyNDU5NiwyNDU5OSwyNDYwMCwyNDYwMiwyNDYwNywyNDYxMiwyNDYyMSwyNDYyNywyNDYyOSwyNDY0MCwyNDY0NywyNDY0OCwyNDY0OSwyNDY1MiwyNDY1NywyNDY2MCwyNDY2MiwyNDY2MywyNDY2OSwyNDY3MywyNDY3OSwyNDY4OSwyNDcwMiwyNDcwMywyNDcwNiwyNDcxMCwyNDcxMiwyNDcxNCwyNDcxOCwyNDcyMSwyNDcyMywyNDcyNSwyNDcyOCwyNDczMywyNDczNCwyNDczOCwyNDc0MCwyNDc0MSwyNDc0NCwyNDc1MiwyNDc1MywyNDc1OSwyNDc2MywyNDc2NiwyNDc3MCwyNDc3MiwyNDc3NiwyNDc3NywyNDc3OCwyNDc3OSwyNDc4MiwyNDc4MywyNDc4OCwyNDc4OSwyNDc5MywyNDc5NSwyNDc5NywyNDc5OCwyNDgwMiwyNDgwNSwyNDgxOCwyNDgyMSwyNDgyNCwyNDgyOCwyNDgyOSwyNDgzNCwyNDgzOSwyNDg0MiwyNDg0NCwyNDg0OCwyNDg0OSwyNDg1MCwyNDg1MSwyNDg1MiwyNDg1NCwyNDg1NSwyNDg1NywyNDg2MCwyNDg2MiwyNDg2NiwyNDg3NCwyNDg3NSwyNDg4MCwyNDg4MSwyNDg4NSwyNDg4NiwyNDg4NywyNDg4OSwyNDg5NywyNDkwMSwyNDkwMiwyNDkwNSwyNDkyNiwyNDkyOCwyNDk0MCwyNDk0NiwyNDk1MiwyNDk1NSwyNDk1NiwyNDk1OSwyNDk2MCwyNDk2MSwyNDk2MywyNDk2NCwyNDk3MSwyNDk3MywyNDk3OCwyNDk3OSwyNDk4MywyNDk4NCwyNDk4OCwyNDk4OSwyNDk5MSwyNDk5MiwyNDk5NywyNTAwMCwyNTAwMiwyNTAwNSwyNTAxNiwyNTAxNywyNTAyMCwyNTAyNCwyNTAyNSwyNTAyNiwyNTAzOCwyNTAzOSwyNTA0NSwyNTA1MiwyNTA1MywyNTA1NCwyNTA1NSwyNTA1NywyNTA1OCwyNTA2MywyNTA2NSwyNTA2MSwyNTA2OCwyNTA2OSwyNTA3MSwyNTA4OSwyNTA5MSwyNTA5MiwyNTA5NSwyNTEwNywyNTEwOSwyNTExNiwyNTEyMCwyNTEyMiwyNTEyMywyNTEyNywyNTEyOSwyNTEzMSwyNTE0NSwyNTE0OSwyNTE1NCwyNTE1NSwyNTE1NiwyNTE1OCwyNTE2NCwyNTE2OCwyNTE2OSwyNTE3MCwyNTE3MiwyNTE3NCwyNTE3OCwyNTE4MCwyNTE4OCwyNTE5NywyNTE5OSwyNTIwMywyNTIxMCwyNTIxMywyNTIyOSwyNTIzMCwyNTIzMSwyNTIzMiwyNTI1NCwyNTI1NiwyNTI2NywyNTI3MCwyNTI3MSwyNTI3NCwyNTI3OCwyNTI3OSwyNTI4NCwyNTI5NCwyNTMwMSwyNTMwMiwyNTMwNiwyNTMyMiwyNTMzMCwyNTMzMiwyNTM0MCwyNTM0MSwyNTM0NywyNTM0OCwyNTM1NCwyNTM1NSwyNTM1NywyNTM2MCwyNTM2MywyNTM2NiwyNTM2OCwyNTM4NSwyNTM4NiwyNTM4OSwyNTM5NywyNTM5OCwyNTQwMSwyNTQwNCwyNTQwOSwyNTQxMCwyNTQxMSwyNTQxMiwyNTQxNCwyNTQxOCwyNTQxOSwyNTQyMiwyNTQyNiwyNTQyNywyNTQyOCwyNTQzMiwyNTQzNSwyNTQ0NSwyNTQ0NiwyNTQ1MiwyNTQ1MywyNTQ1NywyNTQ2MCwyNTQ2MSwyNTQ2NCwyNTQ2OCwyNTQ2OSwyNTQ3MSwyNTQ3NCwyNTQ3NiwyNTQ3OSwyNTQ4MiwyNTQ4OCwyNTQ5MiwyNTQ5MywyNTQ5NywyNTQ5OCwyNTUwMiwyNTUwOCwyNTUxMCwyNTUxNywyNTUxOCwyNTUxOSwyNTUzMywyNTUzNywyNTU0MSwyNTU0NCwyNTU1MCwyNTU1MywyNTU1NSwyNTU1NiwyNTU1NywyNTU2NCwyNTU2OCwyNTU3MywyNTU3OCwyNTU4MCwyNTU4NiwyNTU4NywyNTU4OSwyNTU5MiwyNTU5MywyNTYwOSwyNTYxMCwyNTYxNiwyNTYxOCwyNTYyMCwyNTYyNCwyNTYzMCwyNTYzMiwyNTYzNCwyNTYzNiwyNTYzNywyNTY0MSwyNTY0MiwyNTY0NywyNTY0OCwyNTY1MywyNTY2MSwyNTY2MywyNTY3NSwyNTY3OSwyNTY4MSwyNTY4MiwyNTY4MywyNTY4NCwyNTY5MCwyNTY5MSwyNTY5MiwyNTY5MywyNTY5NSwyNTY5NiwyNTY5NywyNTY5OSwyNTcwOSwyNTcxNSwyNTcxNiwyNTcyMywyNTcyNSwyNTczMywyNTczNSwyNTc0MywyNTc0NCwyNTc0NSwyNTc1MiwyNTc1MywyNTc1NSwyNTc1NywyNTc1OSwyNTc2MSwyNTc2MywyNTc2NiwyNTc2OCwyNTc3MiwyNTc3OSwyNTc4OSwyNTc5MCwyNTc5MSwyNTc5NiwyNTgwMSwyNTgwMiwyNTgwMywyNTgwNCwyNTgwNiwyNTgwOCwyNTgwOSwyNTgxMywyNTgxNSwyNTgyOCwyNTgyOSwyNTgzMywyNTgzNCwyNTgzNywyNTg0MCwyNTg0NSwyNTg0NywyNTg1MSwyNTg1NSwyNTg1NywyNTg2MCwyNTg2NCwyNTg2NSwyNTg2NiwyNTg3MSwyNTg3NSwyNTg3NiwyNTg3OCwyNTg4MSwyNTg4MywyNTg4NiwyNTg4NywyNTg5MCwyNTg5NCwyNTg5NywyNTkwMiwyNTkwNSwyNTkxNCwyNTkxNiwyNTkxNywyNTkyMywyNTkyNywyNTkyOSwyNTkzNiwyNTkzOCwyNTk0MCwyNTk1MSwyNTk1MiwyNTk1OSwyNTk2MywyNTk3OCwyNTk4MSwyNTk4NSwyNTk4OSwyNTk5NCwyNjAwMiwyNjAwNSwyNjAwOCwyNjAxMywyNjAxNiwyNjAxOSwyNjAyMiwyNjAzMCwyNjAzNCwyNjAzNSwyNjAzNiwyNjA0NywyNjA1MCwyNjA1NiwyNjA1NywyNjA2MiwyNjA2NCwyNjA2OCwyNjA3MCwyNjA3MiwyNjA3OSwyNjA5NiwyNjA5OCwyNjEwMCwyNjEwMSwyNjEwNSwyNjExMCwyNjExMSwyNjExMiwyNjExNiwyNjEyMCwyNjEyMSwyNjEyNSwyNjEyOSwyNjEzMCwyNjEzMywyNjEzNCwyNjE0MSwyNjE0MiwyNjE0NSwyNjE0NiwyNjE0NywyNjE0OCwyNjE1MCwyNjE1MywyNjE1NCwyNjE1NSwyNjE1NiwyNjE1OCwyNjE2MCwyNjE2MSwyNjE2MywyNjE2OSwyNjE2NywyNjE3NiwyNjE4MSwyNjE4MiwyNjE4NiwyNjE4OCwyNjE5MywyNjE5MCwyNjE5OSwyNjIwMCwyNjIwMSwyNjIwMywyNjIwNCwyNjIwOCwyNjIwOSwyNjM2MywyNjIxOCwyNjIxOSwyNjIyMCwyNjIzOCwyNjIyNywyNjIyOSwyNjIzOSwyNjIzMSwyNjIzMiwyNjIzMywyNjIzNSwyNjI0MCwyNjIzNiwyNjI1MSwyNjI1MiwyNjI1MywyNjI1NiwyNjI1OCwyNjI2NSwyNjI2NiwyNjI2NywyNjI2OCwyNjI3MSwyNjI3MiwyNjI3NiwyNjI4NSwyNjI4OSwyNjI5MCwyNjI5MywyNjI5OSwyNjMwMywyNjMwNCwyNjMwNiwyNjMwNywyNjMxMiwyNjMxNiwyNjMxOCwyNjMxOSwyNjMyNCwyNjMzMSwyNjMzNSwyNjM0NCwyNjM0NywyNjM0OCwyNjM1MCwyNjM2MiwyNjM3MywyNjM3NSwyNjM4MiwyNjM4NywyNjM5MywyNjM5NiwyNjQwMCwyNjQwMiwyNjQxOSwyNjQzMCwyNjQzNywyNjQzOSwyNjQ0MCwyNjQ0NCwyNjQ1MiwyNjQ1MywyNjQ2MSwyNjQ3MCwyNjQ3NiwyNjQ3OCwyNjQ4NCwyNjQ4NiwyNjQ5MSwyNjQ5NywyNjUwMCwyNjUxMCwyNjUxMSwyNjUxMywyNjUxNSwyNjUxOCwyNjUyMCwyNjUyMSwyNjUyMywyNjU0NCwyNjU0NSwyNjU0NiwyNjU0OSwyNjU1NSwyNjU1NiwyNjU1NywyNjYxNywyNjU2MCwyNjU2MiwyNjU2MywyNjU2NSwyNjU2OCwyNjU2OSwyNjU3OCwyNjU4MywyNjU4NSwyNjU4OCwyNjU5MywyNjU5OCwyNjYwOCwyNjYxMCwyNjYxNCwyNjYxNSwyNjcwNiwyNjY0NCwyNjY0OSwyNjY1MywyNjY1NSwyNjY2NCwyNjY2MywyNjY2OCwyNjY2OSwyNjY3MSwyNjY3MiwyNjY3MywyNjY3NSwyNjY4MywyNjY4NywyNjY5MiwyNjY5MywyNjY5OCwyNjcwMCwyNjcwOSwyNjcxMSwyNjcxMiwyNjcxNSwyNjczMSwyNjczNCwyNjczNSwyNjczNiwyNjczNywyNjczOCwyNjc0MSwyNjc0NSwyNjc0NiwyNjc0NywyNjc0OCwyNjc1NCwyNjc1NiwyNjc1OCwyNjc2MCwyNjc3NCwyNjc3NiwyNjc3OCwyNjc4MCwyNjc4NSwyNjc4NywyNjc4OSwyNjc5MywyNjc5NCwyNjc5OCwyNjgwMiwyNjgxMSwyNjgyMSwyNjgyNCwyNjgyOCwyNjgzMSwyNjgzMiwyNjgzMywyNjgzNSwyNjgzOCwyNjg0MSwyNjg0NCwyNjg0NSwyNjg1MywyNjg1NiwyNjg1OCwyNjg1OSwyNjg2MCwyNjg2MSwyNjg2NCwyNjg2NSwyNjg2OSwyNjg3MCwyNjg3NSwyNjg3NiwyNjg3NywyNjg4NiwyNjg4OSwyNjg5MCwyNjg5NiwyNjg5NywyNjg5OSwyNjkwMiwyNjkwMywyNjkyOSwyNjkzMSwyNjkzMywyNjkzNiwyNjkzOSwyNjk0NiwyNjk0OSwyNjk1MywyNjk1OCwyNjk2NywyNjk3MSwyNjk3OSwyNjk4MCwyNjk4MSwyNjk4MiwyNjk4NCwyNjk4NSwyNjk4OCwyNjk5MiwyNjk5MywyNjk5NCwyNzAwMiwyNzAwMywyNzAwNywyNzAwOCwyNzAyMSwyNzAyNiwyNzAzMCwyNzAzMiwyNzA0MSwyNzA0NSwyNzA0NiwyNzA0OCwyNzA1MSwyNzA1MywyNzA1NSwyNzA2MywyNzA2NCwyNzA2NiwyNzA2OCwyNzA3NywyNzA4MCwyNzA4OSwyNzA5NCwyNzA5NSwyNzEwNiwyNzEwOSwyNzExOCwyNzExOSwyNzEyMSwyNzEyMywyNzEyNSwyNzEzNCwyNzEzNiwyNzEzNywyNzEzOSwyNzE1MSwyNzE1MywyNzE1NywyNzE2MiwyNzE2NSwyNzE2OCwyNzE3MiwyNzE3NiwyNzE4NCwyNzE4NiwyNzE4OCwyNzE5MSwyNzE5NSwyNzE5OCwyNzE5OSwyNzIwNSwyNzIwNiwyNzIwOSwyNzIxMCwyNzIxNCwyNzIxNiwyNzIxNywyNzIxOCwyNzIyMSwyNzIyMiwyNzIyNywyNzIzNiwyNzIzOSwyNzI0MiwyNzI0OSwyNzI1MSwyNzI2MiwyNzI2NSwyNzI2NywyNzI3MCwyNzI3MSwyNzI3MywyNzI3NSwyNzI4MSwyNzI5MSwyNzI5MywyNzI5NCwyNzI5NSwyNzMwMSwyNzMwNywyNzMxMSwyNzMxMiwyNzMxMywyNzMxNiwyNzMyNSwyNzMyNiwyNzMyNywyNzMzNCwyNzMzNywyNzMzNiwyNzM0MCwyNzM0NCwyNzM0OCwyNzM0OSwyNzM1MCwyNzM1NiwyNzM1NywyNzM2NCwyNzM2NywyNzM3MiwyNzM3NiwyNzM3NywyNzM3OCwyNzM4OCwyNzM4OSwyNzM5NCwyNzM5NSwyNzM5OCwyNzM5OSwyNzQwMSwyNzQwNywyNzQwOCwyNzQwOSwyNzQxNSwyNzQxOSwyNzQyMiwyNzQyOCwyNzQzMiwyNzQzNSwyNzQzNiwyNzQzOSwyNzQ0NSwyNzQ0NiwyNzQ1MSwyNzQ1NSwyNzQ2MiwyNzQ2NiwyNzQ2OSwyNzQ3NCwyNzQ3OCwyNzQ4MCwyNzQ4NSwyNzQ4OCwyNzQ5NSwyNzQ5OSwyNzUwMiwyNzUwNCwyNzUwOSwyNzUxNywyNzUxOCwyNzUyMiwyNzUyNSwyNzU0MywyNzU0NywyNzU1MSwyNzU1MiwyNzU1NCwyNzU1NSwyNzU2MCwyNzU2MSwyNzU2NCwyNzU2NSwyNzU2NiwyNzU2OCwyNzU3NiwyNzU3NywyNzU4MSwyNzU4MiwyNzU4NywyNzU4OCwyNzU5MywyNzU5NiwyNzYwNiwyNzYxMCwyNzYxNywyNzYxOSwyNzYyMiwyNzYyMywyNzYzMCwyNzYzMywyNzYzOSwyNzY0MSwyNzY0NywyNzY1MCwyNzY1MiwyNzY1MywyNzY1NywyNzY2MSwyNzY2MiwyNzY2NCwyNzY2NiwyNzY3MywyNzY3OSwyNzY4NiwyNzY4NywyNzY4OCwyNzY5MiwyNzY5NCwyNzY5OSwyNzcwMSwyNzcwMiwyNzcwNiwyNzcwNywyNzcxMSwyNzcyMiwyNzcyMywyNzcyNSwyNzcyNywyNzczMCwyNzczMiwyNzczNywyNzczOSwyNzc0MCwyNzc1NSwyNzc1NywyNzc1OSwyNzc2NCwyNzc2NiwyNzc2OCwyNzc2OSwyNzc3MSwyNzc4MSwyNzc4MiwyNzc4MywyNzc4NSwyNzc5NiwyNzc5NywyNzc5OSwyNzgwMCwyNzgwNCwyNzgwNywyNzgyNCwyNzgyNiwyNzgyOCwyNzg0MiwyNzg0NiwyNzg1MywyNzg1NSwyNzg1NiwyNzg1NywyNzg1OCwyNzg2MCwyNzg2MiwyNzg2NiwyNzg2OCwyNzg3MiwyNzg3OSwyNzg4MSwyNzg4MywyNzg4NCwyNzg4NiwyNzg5MCwyNzg5MiwyNzkwOCwyNzkxMSwyNzkxNCwyNzkxOCwyNzkxOSwyNzkyMSwyNzkyMywyNzkzMCwyNzk0MiwyNzk0MywyNzk0NCwyNzc1MSwyNzk1MCwyNzk1MSwyNzk1MywyNzk2MSwyNzk2NCwyNzk2NywyNzk5MSwyNzk5OCwyNzk5OSwyODAwMSwyODAwNSwyODAwNywyODAxNSwyODAxNiwyODAyOCwyODAzNCwyODAzOSwyODA0OSwyODA1MCwyODA1MiwyODA1NCwyODA1NSwyODA1NiwyODA3NCwyODA3NiwyODA4NCwyODA4NywyODA4OSwyODA5MywyODA5NSwyODEwMCwyODEwNCwyODEwNiwyODExMCwyODExMSwyODExOCwyODEyMywyODEyNSwyODEyNywyODEyOCwyODEzMCwyODEzMywyODEzNywyODE0MywyODE0NCwyODE0OCwyODE1MCwyODE1NiwyODE2MCwyODE2NCwyODE5MCwyODE5NCwyODE5OSwyODIxMCwyODIxNCwyODIxNywyODIxOSwyODIyMCwyODIyOCwyODIyOSwyODIzMiwyODIzMywyODIzNSwyODIzOSwyODI0MSwyODI0MiwyODI0MywyODI0NCwyODI0NywyODI1MiwyODI1MywyODI1NCwyODI1OCwyODI1OSwyODI2NCwyODI3NSwyODI4MywyODI4NSwyODMwMSwyODMwNywyODMxMywyODMyMCwyODMyNywyODMzMywyODMzNCwyODMzNywyODMzOSwyODM0NywyODM1MSwyODM1MiwyODM1MywyODM1NSwyODM1OSwyODM2MCwyODM2MiwyODM2NSwyODM2NiwyODM2NywyODM5NSwyODM5NywyODM5OCwyODQwOSwyODQxMSwyODQxMywyODQyMCwyODQyNCwyODQyNiwyODQyOCwyODQyOSwyODQzOCwyODQ0MCwyODQ0MiwyODQ0MywyODQ1NCwyODQ1NywyODQ1OCwyODQ2MywyODQ2NCwyODQ2NywyODQ3MCwyODQ3NSwyODQ3NiwyODQ2MSwyODQ5NSwyODQ5NywyODQ5OCwyODQ5OSwyODUwMywyODUwNSwyODUwNiwyODUwOSwyODUxMCwyODUxMywyODUxNCwyODUyMCwyODUyNCwyODU0MSwyODU0MiwyODU0NywyODU1MSwyODU1MiwyODU1NSwyODU1NiwyODU1NywyODU2MCwyODU2MiwyODU2MywyODU2NCwyODU2NiwyODU3MCwyODU3NSwyODU3NiwyODU4MSwyODU4MiwyODU4MywyODU4NCwyODU5MCwyODU5MSwyODU5MiwyODU5NywyODU5OCwyODYwNCwyODYxMywyODYxNSwyODYxNiwyODYxOCwyODYzNCwyODYzOCwyODY0OCwyODY0OSwyODY1NiwyODY2MSwyODY2NSwyODY2OCwyODY2OSwyODY3MiwyODY3NywyODY3OCwyODY3OSwyODY4NSwyODY5NSwyODcwNCwyODcwNywyODcxOSwyODcyNCwyODcyNywyODcyOSwyODczMiwyODczOSwyODc0MCwyODc0NCwyODc0NSwyODc0NiwyODc0NywyODc1NiwyODc1NywyODc2NSwyODc2NiwyODc1MCwyODc3MiwyODc3MywyODc4MCwyODc4MiwyODc4OSwyODc5MCwyODc5OCwyODgwMSwyODgwNSwyODgwNiwyODgyMCwyODgyMSwyODgyMiwyODgyMywyODgyNCwyODgyNywyODgzNiwyODg0MywyODg0OCwyODg0OSwyODg1MiwyODg1NSwyODg3NCwyODg4MSwyODg4MywyODg4NCwyODg4NSwyODg4NiwyODg4OCwyODg5MiwyODkwMCwyODkyMiwyODkzMSwyODkzMiwyODkzMywyODkzNCwyODkzNSwyODkzOSwyODk0MCwyODk0MywyODk1OCwyODk2MCwyODk3MSwyODk3MywyODk3NSwyODk3NiwyODk3NywyODk4NCwyODk5MywyODk5NywyODk5OCwyODk5OSwyOTAwMiwyOTAwMywyOTAwOCwyOTAxMCwyOTAxNSwyOTAxOCwyOTAyMCwyOTAyMiwyOTAyNCwyOTAzMiwyOTA0OSwyOTA1NiwyOTA2MSwyOTA2MywyOTA2OCwyOTA3NCwyOTA4MiwyOTA4MywyOTA4OCwyOTA5MCwyOTEwMywyOTEwNCwyOTEwNiwyOTEwNywyOTExNCwyOTExOSwyOTEyMCwyOTEyMSwyOTEyNCwyOTEzMSwyOTEzMiwyOTEzOSwyOTE0MiwyOTE0NSwyOTE0NiwyOTE0OCwyOTE3NiwyOTE4MiwyOTE4NCwyOTE5MSwyOTE5MiwyOTE5MywyOTIwMywyOTIwNywyOTIxMCwyOTIxMywyOTIxNSwyOTIyMCwyOTIyNywyOTIzMSwyOTIzNiwyOTI0MCwyOTI0MSwyOTI0OSwyOTI1MCwyOTI1MSwyOTI1MywyOTI2MiwyOTI2MywyOTI2NCwyOTI2NywyOTI2OSwyOTI3MCwyOTI3NCwyOTI3NiwyOTI3OCwyOTI4MCwyOTI4MywyOTI4OCwyOTI5MSwyOTI5NCwyOTI5NSwyOTI5NywyOTMwMywyOTMwNCwyOTMwNywyOTMwOCwyOTMxMSwyOTMxNiwyOTMyMSwyOTMyNSwyOTMyNiwyOTMzMSwyOTMzOSwyOTM1MiwyOTM1NywyOTM1OCwyOTM2MSwyOTM2NCwyOTM3NCwyOTM3NywyOTM4MywyOTM4NSwyOTM4OCwyOTM5NywyOTM5OCwyOTQwMCwyOTQwNywyOTQxMywyOTQyNywyOTQyOCwyOTQzNCwyOTQzNSwyOTQzOCwyOTQ0MiwyOTQ0NCwyOTQ0NSwyOTQ0NywyOTQ1MSwyOTQ1MywyOTQ1OCwyOTQ1OSwyOTQ2NCwyOTQ2NSwyOTQ3MCwyOTQ3NCwyOTQ3NiwyOTQ3OSwyOTQ4MCwyOTQ4NCwyOTQ4OSwyOTQ5MCwyOTQ5MywyOTQ5OCwyOTQ5OSwyOTUwMSwyOTUwNywyOTUxNywyOTUyMCwyOTUyMiwyOTUyNiwyOTUyOCwyOTUzMywyOTUzNCwyOTUzNSwyOTUzNiwyOTU0MiwyOTU0MywyOTU0NSwyOTU0NywyOTU0OCwyOTU1MCwyOTU1MSwyOTU1MywyOTU1OSwyOTU2MSwyOTU2NCwyOTU2OCwyOTU2OSwyOTU3MSwyOTU3MywyOTU3NCwyOTU4MiwyOTU4NCwyOTU4NywyOTU4OSwyOTU5MSwyOTU5MiwyOTU5NiwyOTU5OCwyOTU5OSwyOTYwMCwyOTYwMiwyOTYwNSwyOTYwNiwyOTYxMCwyOTYxMSwyOTYxMywyOTYyMSwyOTYyMywyOTYyNSwyOTYyOCwyOTYyOSwyOTYzMSwyOTYzNywyOTYzOCwyOTY0MSwyOTY0MywyOTY0NCwyOTY0NywyOTY1MCwyOTY1MSwyOTY1NCwyOTY1NywyOTY2MSwyOTY2NSwyOTY2NywyOTY3MCwyOTY3MSwyOTY3MywyOTY4NCwyOTY4NSwyOTY4NywyOTY4OSwyOTY5MCwyOTY5MSwyOTY5MywyOTY5NSwyOTY5NiwyOTY5NywyOTcwMCwyOTcwMywyOTcwNiwyOTcxMywyOTcyMiwyOTcyMywyOTczMiwyOTczNCwyOTczNiwyOTczNywyOTczOCwyOTczOSwyOTc0MCwyOTc0MSwyOTc0MiwyOTc0MywyOTc0NCwyOTc0NSwyOTc1MywyOTc2MCwyOTc2MywyOTc2NCwyOTc2NiwyOTc2NywyOTc3MSwyOTc3MywyOTc3NywyOTc3OCwyOTc4MywyOTc4OSwyOTc5NCwyOTc5OCwyOTc5OSwyOTgwMCwyOTgwMywyOTgwNSwyOTgwNiwyOTgwOSwyOTgxMCwyOTgyNCwyOTgyNSwyOTgyOSwyOTgzMCwyOTgzMSwyOTgzMywyOTgzOSwyOTg0MCwyOTg0MSwyOTg0MiwyOTg0OCwyOTg0OSwyOTg1MCwyOTg1MiwyOTg1NSwyOTg1NiwyOTg1NywyOTg1OSwyOTg2MiwyOTg2NCwyOTg2NSwyOTg2NiwyOTg2NywyOTg3MCwyOTg3MSwyOTg3MywyOTg3NCwyOTg3NywyOTg4MSwyOTg4MywyOTg4NywyOTg5NiwyOTg5NywyOTkwMCwyOTkwNCwyOTkwNywyOTkxMiwyOTkxNCwyOTkxNSwyOTkxOCwyOTkxOSwyOTkyNCwyOTkyOCwyOTkzMCwyOTkzMSwyOTkzNSwyOTk0MCwyOTk0NiwyOTk0NywyOTk0OCwyOTk1MSwyOTk1OCwyOTk3MCwyOTk3NCwyOTk3NSwyOTk4NCwyOTk4NSwyOTk4OCwyOTk5MSwyOTk5MywyOTk5NCwyOTk5OSwzMDAwNiwzMDAwOSwzMDAxMywzMDAxNCwzMDAxNSwzMDAxNiwzMDAxOSwzMDAyMywzMDAyNCwzMDAzMCwzMDAzMiwzMDAzNCwzMDAzOSwzMDA0NiwzMDA0NywzMDA0OSwzMDA2MywzMDA2NSwzMDA3MywzMDA3NCwzMDA3NSwzMDA3NiwzMDA3NywzMDA3OCwzMDA4MSwzMDA4NSwzMDA5NiwzMDA5OCwzMDA5OSwzMDEwMSwzMDEwNSwzMDEwOCwzMDExNCwzMDExNiwzMDEzMiwzMDEzOCwzMDE0MywzMDE0NCwzMDE0NSwzMDE0OCwzMDE1MCwzMDE1NiwzMDE1OCwzMDE1OSwzMDE2NywzMDE3MiwzMDE3NSwzMDE3NiwzMDE3NywzMDE4MCwzMDE4MywzMDE4OCwzMDE5MCwzMDE5MSwzMDE5MywzMDIwMSwzMDIwOCwzMDIxMCwzMDIxMSwzMDIxMiwzMDIxNSwzMDIxNiwzMDIxOCwzMDIyMCwzMDIyMywzMDIyNiwzMDIyNywzMDIyOSwzMDIzMCwzMDIzMywzMDIzNSwzMDIzNiwzMDIzNywzMDIzOCwzMDI0MywzMDI0NSwzMDI0NiwzMDI0OSwzMDI1MywzMDI1OCwzMDI1OSwzMDI2MSwzMDI2NCwzMDI2NSwzMDI2NiwzMDI2OCwzMDI4MiwzMDI3MiwzMDI3MywzMDI3NSwzMDI3NiwzMDI3NywzMDI4MSwzMDI4MywzMDI5MywzMDI5NywzMDMwMywzMDMwOCwzMDMwOSwzMDMxNywzMDMxOCwzMDMxOSwzMDMyMSwzMDMyNCwzMDMzNywzMDM0MSwzMDM0OCwzMDM0OSwzMDM1NywzMDM2MywzMDM2NCwzMDM2NSwzMDM2NywzMDM2OCwzMDM3MCwzMDM3MSwzMDM3MiwzMDM3MywzMDM3NCwzMDM3NSwzMDM3NiwzMDM3OCwzMDM4MSwzMDM5NywzMDQwMSwzMDQwNSwzMDQwOSwzMDQxMSwzMDQxMiwzMDQxNCwzMDQyMCwzMDQyNSwzMDQzMiwzMDQzOCwzMDQ0MCwzMDQ0NCwzMDQ0OCwzMDQ0OSwzMDQ1NCwzMDQ1NywzMDQ2MCwzMDQ2NCwzMDQ3MCwzMDQ3NCwzMDQ3OCwzMDQ4MiwzMDQ4NCwzMDQ4NSwzMDQ4NywzMDQ4OSwzMDQ5MCwzMDQ5MiwzMDQ5OCwzMDUwNCwzMDUwOSwzMDUxMCwzMDUxMSwzMDUxNiwzMDUxNywzMDUxOCwzMDUyMSwzMDUyNSwzMDUyNiwzMDUzMCwzMDUzMywzMDUzNCwzMDUzOCwzMDU0MSwzMDU0MiwzMDU0MywzMDU0NiwzMDU1MCwzMDU1MSwzMDU1NiwzMDU1OCwzMDU1OSwzMDU2MCwzMDU2MiwzMDU2NCwzMDU2NywzMDU3MCwzMDU3MiwzMDU3NiwzMDU3OCwzMDU3OSwzMDU4MCwzMDU4NiwzMDU4OSwzMDU5MiwzMDU5NiwzMDYwNCwzMDYwNSwzMDYxMiwzMDYxMywzMDYxNCwzMDYxOCwzMDYyMywzMDYyNiwzMDYzMSwzMDYzNCwzMDYzOCwzMDYzOSwzMDY0MSwzMDY0NSwzMDY1NCwzMDY1OSwzMDY2NSwzMDY3MywzMDY3NCwzMDY3NywzMDY4MSwzMDY4NiwzMDY4NywzMDY4OCwzMDY5MiwzMDY5NCwzMDY5OCwzMDcwMCwzMDcwNCwzMDcwNSwzMDcwOCwzMDcxMiwzMDcxNSwzMDcyNSwzMDcyNiwzMDcyOSwzMDczMywzMDczNCwzMDczNywzMDc0OSwzMDc1MywzMDc1NCwzMDc1NSwzMDc2NSwzMDc2NiwzMDc2OCwzMDc3MywzMDc3NSwzMDc4NywzMDc4OCwzMDc5MSwzMDc5MiwzMDc5NiwzMDc5OCwzMDgwMiwzMDgxMiwzMDgxNCwzMDgxNiwzMDgxNywzMDgxOSwzMDgyMCwzMDgyNCwzMDgyNiwzMDgzMCwzMDg0MiwzMDg0NiwzMDg1OCwzMDg2MywzMDg2OCwzMDg3MiwzMDg4MSwzMDg3NywzMDg3OCwzMDg3OSwzMDg4NCwzMDg4OCwzMDg5MiwzMDg5MywzMDg5NiwzMDg5NywzMDg5OCwzMDg5OSwzMDkwNywzMDkwOSwzMDkxMSwzMDkxOSwzMDkyMCwzMDkyMSwzMDkyNCwzMDkyNiwzMDkzMCwzMDkzMSwzMDkzMywzMDkzNCwzMDk0OCwzMDkzOSwzMDk0MywzMDk0NCwzMDk0NSwzMDk1MCwzMDk1NCwzMDk2MiwzMDk2MywzMDk3NiwzMDk2NiwzMDk2NywzMDk3MCwzMDk3MSwzMDk3NSwzMDk4MiwzMDk4OCwzMDk5MiwzMTAwMiwzMTAwNCwzMTAwNiwzMTAwNywzMTAwOCwzMTAxMywzMTAxNSwzMTAxNywzMTAyMSwzMTAyNSwzMTAyOCwzMTAyOSwzMTAzNSwzMTAzNywzMTAzOSwzMTA0NCwzMTA0NSwzMTA0NiwzMTA1MCwzMTA1MSwzMTA1NSwzMTA1NywzMTA2MCwzMTA2NCwzMTA2NywzMTA2OCwzMTA3OSwzMTA4MSwzMTA4MywzMTA5MCwzMTA5NywzMTA5OSwzMTEwMCwzMTEwMiwzMTExNSwzMTExNiwzMTEyMSwzMTEyMywzMTEyNCwzMTEyNSwzMTEyNiwzMTEyOCwzMTEzMSwzMTEzMiwzMTEzNywzMTE0NCwzMTE0NSwzMTE0NywzMTE1MSwzMTE1MywzMTE1NiwzMTE2MCwzMTE2MywzMTE3MCwzMTE3MiwzMTE3NSwzMTE3NiwzMTE3OCwzMTE4MywzMTE4OCwzMTE5MCwzMTE5NCwzMTE5NywzMTE5OCwzMTIwMCwzMTIwMiwzMTIwNSwzMTIxMCwzMTIxMSwzMTIxMywzMTIxNywzMTIyNCwzMTIyOCwzMTIzNCwzMTIzNSwzMTIzOSwzMTI0MSwzMTI0MiwzMTI0NCwzMTI0OSwzMTI1MywzMTI1OSwzMTI2MiwzMTI2NSwzMTI3MSwzMTI3NSwzMTI3NywzMTI3OSwzMTI4MCwzMTI4NCwzMTI4NSwzMTI4OCwzMTI4OSwzMTI5MCwzMTMwMCwzMTMwMSwzMTMwMywzMTMwNCwzMTMwOCwzMTMxNywzMTMxOCwzMTMyMSwzMTMyNCwzMTMyNSwzMTMyNywzMTMyOCwzMTMzMywzMTMzNSwzMTMzOCwzMTM0MSwzMTM0OSwzMTM1MiwzMTM1OCwzMTM2MCwzMTM2MiwzMTM2NSwzMTM2NiwzMTM3MCwzMTM3MSwzMTM3NiwzMTM3NywzMTM4MCwzMTM5MCwzMTM5MiwzMTM5NSwzMTQwNCwzMTQxMSwzMTQxMywzMTQxNywzMTQxOSwzMTQyMCwzMTQzMCwzMTQzMywzMTQzNiwzMTQzOCwzMTQ0MSwzMTQ1MSwzMTQ2NCwzMTQ2NSwzMTQ2NywzMTQ2OCwzMTQ3MywzMTQ3NiwzMTQ4MywzMTQ4NSwzMTQ4NiwzMTQ5NSwzMTUwOCwzMTUxOSwzMTUyMywzMTUyNywzMTUyOSwzMTUzMCwzMTUzMSwzMTUzMywzMTUzNCwzMTUzNSwzMTUzNiwzMTUzNywzMTU0MCwzMTU0OSwzMTU1MSwzMTU1MiwzMTU1MywzMTU1OSwzMTU2NiwzMTU3MywzMTU4NCwzMTU4OCwzMTU5MCwzMTU5MywzMTU5NCwzMTU5NywzMTU5OSwzMTYwMiwzMTYwMywzMTYwNywzMTYyMCwzMTYyNSwzMTYzMCwzMTYzMiwzMTYzMywzMTYzOCwzMTY0MywzMTY0NiwzMTY0OCwzMTY1MywzMTY2MCwzMTY2MywzMTY2NCwzMTY2NiwzMTY2OSwzMTY3MCwzMTY3NCwzMTY3NSwzMTY3NiwzMTY3NywzMTY4MiwzMTY4NSwzMTY4OCwzMTY5MCwzMTcwMCwzMTcwMiwzMTcwMywzMTcwNSwzMTcwNiwzMTcwNywzMTcyMCwzMTcyMiwzMTczMCwzMTczMiwzMTczMywzMTczNiwzMTczNywzMTczOCwzMTc0MCwzMTc0MiwzMTc0NSwzMTc0NiwzMTc0NywzMTc0OCwzMTc1MCwzMTc1MywzMTc1NSwzMTc1NiwzMTc1OCwzMTc1OSwzMTc2OSwzMTc3MSwzMTc3NiwzMTc4MSwzMTc4MiwzMTc4NCwzMTc4OCwzMTc5MywzMTc5NSwzMTc5NiwzMTc5OCwzMTgwMSwzMTgwMiwzMTgxNCwzMTgxOCwzMTgyOSwzMTgyNSwzMTgyNiwzMTgyNywzMTgzMywzMTgzNCwzMTgzNSwzMTgzNiwzMTgzNywzMTgzOCwzMTg0MSwzMTg0MywzMTg0NywzMTg0OSwzMTg1MywzMTg1NCwzMTg1NiwzMTg1OCwzMTg2NSwzMTg2OCwzMTg2OSwzMTg3OCwzMTg3OSwzMTg4NywzMTg5MiwzMTkwMiwzMTkwNCwzMTkxMCwzMTkyMCwzMTkyNiwzMTkyNywzMTkzMCwzMTkzMSwzMTkzMiwzMTkzNSwzMTk0MCwzMTk0MywzMTk0NCwzMTk0NSwzMTk0OSwzMTk1MSwzMTk1NSwzMTk1NiwzMTk1NywzMTk1OSwzMTk2MSwzMTk2MiwzMTk2NSwzMTk3NCwzMTk3NywzMTk3OSwzMTk4OSwzMjAwMywzMjAwNywzMjAwOCwzMjAwOSwzMjAxNSwzMjAxNywzMjAxOCwzMjAxOSwzMjAyMiwzMjAyOSwzMjAzMCwzMjAzNSwzMjAzOCwzMjA0MiwzMjA0NSwzMjA0OSwzMjA2MCwzMjA2MSwzMjA2MiwzMjA2NCwzMjA2NSwzMjA3MSwzMjA3MiwzMjA3NywzMjA4MSwzMjA4MywzMjA4NywzMjA4OSwzMjA5MCwzMjA5MiwzMjA5MywzMjEwMSwzMjEwMywzMjEwNiwzMjExMiwzMjEyMCwzMjEyMiwzMjEyMywzMjEyNywzMjEyOSwzMjEzMCwzMjEzMSwzMjEzMywzMjEzNCwzMjEzNiwzMjEzOSwzMjE0MCwzMjE0MSwzMjE0NSwzMjE1MCwzMjE1MSwzMjE1NywzMjE1OCwzMjE2NiwzMjE2NywzMjE3MCwzMjE3OSwzMjE4MiwzMjE4MywzMjE4NSwzMjE5NCwzMjE5NSwzMjE5NiwzMjE5NywzMjE5OCwzMjIwNCwzMjIwNSwzMjIwNiwzMjIxNSwzMjIxNywzMjI1NiwzMjIyNiwzMjIyOSwzMjIzMCwzMjIzNCwzMjIzNSwzMjIzNywzMjI0MSwzMjI0NSwzMjI0NiwzMjI0OSwzMjI1MCwzMjI2NCwzMjI3MiwzMjI3MywzMjI3NywzMjI3OSwzMjI4NCwzMjI4NSwzMjI4OCwzMjI5NSwzMjI5NiwzMjMwMCwzMjMwMSwzMjMwMywzMjMwNywzMjMxMCwzMjMxOSwzMjMyNCwzMjMyNSwzMjMyNywzMjMzNCwzMjMzNiwzMjMzOCwzMjM0NCwzMjM1MSwzMjM1MywzMjM1NCwzMjM1NywzMjM2MywzMjM2NiwzMjM2NywzMjM3MSwzMjM3NiwzMjM4MiwzMjM4NSwzMjM5MCwzMjM5MSwzMjM5NCwzMjM5NywzMjQwMSwzMjQwNSwzMjQwOCwzMjQxMCwzMjQxMywzMjQxNCwzMjU3MiwzMjU3MSwzMjU3MywzMjU3NCwzMjU3NSwzMjU3OSwzMjU4MCwzMjU4MywzMjU5MSwzMjU5NCwzMjU5NSwzMjYwMywzMjYwNCwzMjYwNSwzMjYwOSwzMjYxMSwzMjYxMiwzMjYxMywzMjYxNCwzMjYyMSwzMjYyNSwzMjYzNywzMjYzOCwzMjYzOSwzMjY0MCwzMjY1MSwzMjY1MywzMjY1NSwzMjY1NiwzMjY1NywzMjY2MiwzMjY2MywzMjY2OCwzMjY3MywzMjY3NCwzMjY3OCwzMjY4MiwzMjY4NSwzMjY5MiwzMjcwMCwzMjcwMywzMjcwNCwzMjcwNywzMjcxMiwzMjcxOCwzMjcxOSwzMjczMSwzMjczNSwzMjczOSwzMjc0MSwzMjc0NCwzMjc0OCwzMjc1MCwzMjc1MSwzMjc1NCwzMjc2MiwzMjc2NSwzMjc2NiwzMjc2NywzMjc3NSwzMjc3NiwzMjc3OCwzMjc4MSwzMjc4MiwzMjc4MywzMjc4NSwzMjc4NywzMjc4OCwzMjc5MCwzMjc5NywzMjc5OCwzMjc5OSwzMjgwMCwzMjgwNCwzMjgwNiwzMjgxMiwzMjgxNCwzMjgxNiwzMjgyMCwzMjgyMSwzMjgyMywzMjgyNSwzMjgyNiwzMjgyOCwzMjgzMCwzMjgzMiwzMjgzNiwzMjg2NCwzMjg2OCwzMjg3MCwzMjg3NywzMjg4MSwzMjg4NSwzMjg5NywzMjkwNCwzMjkxMCwzMjkyNCwzMjkyNiwzMjkzNCwzMjkzNSwzMjkzOSwzMjk1MiwzMjk1MywzMjk2OCwzMjk3MywzMjk3NSwzMjk3OCwzMjk4MCwzMjk4MSwzMjk4MywzMjk4NCwzMjk5MiwzMzAwNSwzMzAwNiwzMzAwOCwzMzAxMCwzMzAxMSwzMzAxNCwzMzAxNywzMzAxOCwzMzAyMiwzMzAyNywzMzAzNSwzMzA0NiwzMzA0NywzMzA0OCwzMzA1MiwzMzA1NCwzMzA1NiwzMzA2MCwzMzA2MywzMzA2OCwzMzA3MiwzMzA3NywzMzA4MiwzMzA4NCwzMzA5MywzMzA5NSwzMzA5OCwzMzEwMCwzMzEwNiwzMzExMSwzMzEyMCwzMzEyMSwzMzEyNywzMzEyOCwzMzEyOSwzMzEzMywzMzEzNSwzMzE0MywzMzE1MywzMzE2OCwzMzE1NiwzMzE1NywzMzE1OCwzMzE2MywzMzE2NiwzMzE3NCwzMzE3NiwzMzE3OSwzMzE4MiwzMzE4NiwzMzE5OCwzMzIwMiwzMzIwNCwzMzIxMSwzMzIyNywzMzIxOSwzMzIyMSwzMzIyNiwzMzIzMCwzMzIzMSwzMzIzNywzMzIzOSwzMzI0MywzMzI0NSwzMzI0NiwzMzI0OSwzMzI1MiwzMzI1OSwzMzI2MCwzMzI2NCwzMzI2NSwzMzI2NiwzMzI2OSwzMzI3MCwzMzI3MiwzMzI3MywzMzI3NywzMzI3OSwzMzI4MCwzMzI4MywzMzI5NSwzMzI5OSwzMzMwMCwzMzMwNSwzMzMwNiwzMzMwOSwzMzMxMywzMzMxNCwzMzMyMCwzMzMzMCwzMzMzMiwzMzMzOCwzMzM0NywzMzM0OCwzMzM0OSwzMzM1MCwzMzM1NSwzMzM1OCwzMzM1OSwzMzM2MSwzMzM2NiwzMzM3MiwzMzM3NiwzMzM3OSwzMzM4MywzMzM4OSwzMzM5NiwzMzQwMywzMzQwNSwzMzQwNywzMzQwOCwzMzQwOSwzMzQxMSwzMzQxMiwzMzQxNSwzMzQxNywzMzQxOCwzMzQyMiwzMzQyNSwzMzQyOCwzMzQzMCwzMzQzMiwzMzQzNCwzMzQzNSwzMzQ0MCwzMzQ0MSwzMzQ0MywzMzQ0NCwzMzQ0NywzMzQ0OCwzMzQ0OSwzMzQ1MCwzMzQ1NCwzMzQ1NiwzMzQ1OCwzMzQ2MCwzMzQ2MywzMzQ2NiwzMzQ2OCwzMzQ3MCwzMzQ3MSwzMzQ3OCwzMzQ4OCwzMzQ5MywzMzQ5OCwzMzUwNCwzMzUwNiwzMzUwOCwzMzUxMiwzMzUxNCwzMzUxNywzMzUxOSwzMzUyNiwzMzUyNywzMzUzMywzMzUzNCwzMzUzNiwzMzUzNywzMzU0MywzMzU0NCwzMzU0NiwzMzU0NywzMzYyMCwzMzU2MywzMzU2NSwzMzU2NiwzMzU2NywzMzU2OSwzMzU3MCwzMzU4MCwzMzU4MSwzMzU4MiwzMzU4NCwzMzU4NywzMzU5MSwzMzU5NCwzMzU5NiwzMzU5NywzMzYwMiwzMzYwMywzMzYwNCwzMzYwNywzMzYxMywzMzYxNCwzMzYxNywzMzYyMSwzMzYyMiwzMzYyMywzMzY0OCwzMzY1NiwzMzY2MSwzMzY2MywzMzY2NCwzMzY2NiwzMzY2OCwzMzY3MCwzMzY3NywzMzY4MiwzMzY4NCwzMzY4NSwzMzY4OCwzMzY4OSwzMzY5MSwzMzY5MiwzMzY5MywzMzcwMiwzMzcwMywzMzcwNSwzMzcwOCwzMzcyNiwzMzcyNywzMzcyOCwzMzczNSwzMzczNywzMzc0MywzMzc0NCwzMzc0NSwzMzc0OCwzMzc1NywzMzYxOSwzMzc2OCwzMzc3MCwzMzc4MiwzMzc4NCwzMzc4NSwzMzc4OCwzMzc5MywzMzc5OCwzMzgwMiwzMzgwNywzMzgwOSwzMzgxMywzMzgxNywzMzcwOSwzMzgzOSwzMzg0OSwzMzg2MSwzMzg2MywzMzg2NCwzMzg2NiwzMzg2OSwzMzg3MSwzMzg3MywzMzg3NCwzMzg3OCwzMzg4MCwzMzg4MSwzMzg4MiwzMzg4NCwzMzg4OCwzMzg5MiwzMzg5MywzMzg5NSwzMzg5OCwzMzkwNCwzMzkwNywzMzkwOCwzMzkxMCwzMzkxMiwzMzkxNiwzMzkxNywzMzkyMSwzMzkyNSwzMzkzOCwzMzkzOSwzMzk0MSwzMzk1MCwzMzk1OCwzMzk2MCwzMzk2MSwzMzk2MiwzMzk2NywzMzk2OSwzMzk3MiwzMzk3OCwzMzk4MSwzMzk4MiwzMzk4NCwzMzk4NiwzMzk5MSwzMzk5MiwzMzk5NiwzMzk5OSwzNDAwMywzNDAxMiwzNDAyMywzNDAyNiwzNDAzMSwzNDAzMiwzNDAzMywzNDAzNCwzNDAzOSwzNDA5OCwzNDA0MiwzNDA0MywzNDA0NSwzNDA1MCwzNDA1MSwzNDA1NSwzNDA2MCwzNDA2MiwzNDA2NCwzNDA3NiwzNDA3OCwzNDA4MiwzNDA4MywzNDA4NCwzNDA4NSwzNDA4NywzNDA5MCwzNDA5MSwzNDA5NSwzNDA5OSwzNDEwMCwzNDEwMiwzNDExMSwzNDExOCwzNDEyNywzNDEyOCwzNDEyOSwzNDEzMCwzNDEzMSwzNDEzNCwzNDEzNywzNDE0MCwzNDE0MSwzNDE0MiwzNDE0MywzNDE0NCwzNDE0NSwzNDE0NiwzNDE0OCwzNDE1NSwzNDE1OSwzNDE2OSwzNDE3MCwzNDE3MSwzNDE3MywzNDE3NSwzNDE3NywzNDE4MSwzNDE4MiwzNDE4NSwzNDE4NywzNDE4OCwzNDE5MSwzNDE5NSwzNDIwMCwzNDIwNSwzNDIwNywzNDIwOCwzNDIxMCwzNDIxMywzNDIxNSwzNDIyOCwzNDIzMCwzNDIzMSwzNDIzMiwzNDIzNiwzNDIzNywzNDIzOCwzNDIzOSwzNDI0MiwzNDI0NywzNDI1MCwzNDI1MSwzNDI1NCwzNDIyMSwzNDI2NCwzNDI2NiwzNDI3MSwzNDI3MiwzNDI3OCwzNDI4MCwzNDI4NSwzNDI5MSwzNDI5NCwzNDMwMCwzNDMwMywzNDMwNCwzNDMwOCwzNDMwOSwzNDMxNywzNDMxOCwzNDMyMCwzNDMyMSwzNDMyMiwzNDMyOCwzNDMyOSwzNDMzMSwzNDMzNCwzNDMzNywzNDM0MywzNDM0NSwzNDM1OCwzNDM2MCwzNDM2MiwzNDM2NCwzNDM2NSwzNDM2OCwzNDM3MCwzNDM3NCwzNDM4NiwzNDM4NywzNDM5MCwzNDM5MSwzNDM5MiwzNDM5MywzNDM5NywzNDQwMCwzNDQwMSwzNDQwMiwzNDQwMywzNDQwNCwzNDQwOSwzNDQxMiwzNDQxNSwzNDQyMSwzNDQyMiwzNDQyMywzNDQyNiwzNDQ0NSwzNDQ0OSwzNDQ1NCwzNDQ1NiwzNDQ1OCwzNDQ2MCwzNDQ2NSwzNDQ3MCwzNDQ3MSwzNDQ3MiwzNDQ3NywzNDQ4MSwzNDQ4MywzNDQ4NCwzNDQ4NSwzNDQ4NywzNDQ4OCwzNDQ4OSwzNDQ5NSwzNDQ5NiwzNDQ5NywzNDQ5OSwzNDUwMSwzNDUxMywzNDUxNCwzNDUxNywzNDUxOSwzNDUyMiwzNDUyNCwzNDUyOCwzNDUzMSwzNDUzMywzNDUzNSwzNDQ0MCwzNDU1NCwzNDU1NiwzNDU1NywzNDU2NCwzNDU2NSwzNDU2NywzNDU3MSwzNDU3NCwzNDU3NSwzNDU3NiwzNDU3OSwzNDU4MCwzNDU4NSwzNDU5MCwzNDU5MSwzNDU5MywzNDU5NSwzNDYwMCwzNDYwNiwzNDYwNywzNDYwOSwzNDYxMCwzNDYxNywzNDYxOCwzNDYyMCwzNDYyMSwzNDYyMiwzNDYyNCwzNDYyNywzNDYyOSwzNDYzNywzNDY0OCwzNDY1MywzNDY1NywzNDY2MCwzNDY2MSwzNDY3MSwzNDY3MywzNDY3NCwzNDY4MywzNDY5MSwzNDY5MiwzNDY5MywzNDY5NCwzNDY5NSwzNDY5NiwzNDY5NywzNDY5OSwzNDcwMCwzNDcwNCwzNDcwNywzNDcwOSwzNDcxMSwzNDcxMiwzNDcxMywzNDcxOCwzNDcyMCwzNDcyMywzNDcyNywzNDczMiwzNDczMywzNDczNCwzNDczNywzNDc0MSwzNDc1MCwzNDc1MSwzNDc1MywzNDc2MCwzNDc2MSwzNDc2MiwzNDc2NiwzNDc3MywzNDc3NCwzNDc3NywzNDc3OCwzNDc4MCwzNDc4MywzNDc4NiwzNDc4NywzNDc4OCwzNDc5NCwzNDc5NSwzNDc5NywzNDgwMSwzNDgwMywzNDgwOCwzNDgxMCwzNDgxNSwzNDgxNywzNDgxOSwzNDgyMiwzNDgyNSwzNDgyNiwzNDgyNywzNDgzMiwzNDg0MSwzNDgzNCwzNDgzNSwzNDgzNiwzNDg0MCwzNDg0MiwzNDg0MywzNDg0NCwzNDg0NiwzNDg0NywzNDg1NiwzNDg2MSwzNDg2MiwzNDg2NCwzNDg2NiwzNDg2OSwzNDg3NCwzNDg3NiwzNDg4MSwzNDg4MywzNDg4NSwzNDg4OCwzNDg4OSwzNDg5MCwzNDg5MSwzNDg5NCwzNDg5NywzNDkwMSwzNDkwMiwzNDkwNCwzNDkwNiwzNDkwOCwzNDkxMSwzNDkxMiwzNDkxNiwzNDkyMSwzNDkyOSwzNDkzNywzNDkzOSwzNDk0NCwzNDk2OCwzNDk3MCwzNDk3MSwzNDk3MiwzNDk3NSwzNDk3NiwzNDk4NCwzNDk4NiwzNTAwMiwzNTAwNSwzNTAwNiwzNTAwOCwzNTAxOCwzNTAxOSwzNTAyMCwzNTAyMSwzNTAyMiwzNTAyNSwzNTAyNiwzNTAyNywzNTAzNSwzNTAzOCwzNTA0NywzNTA1NSwzNTA1NiwzNTA1NywzNTA2MSwzNTA2MywzNTA3MywzNTA3OCwzNTA4NSwzNTA4NiwzNTA4NywzNTA5MywzNTA5NCwzNTA5NiwzNTA5NywzNTA5OCwzNTEwMCwzNTEwNCwzNTExMCwzNTExMSwzNTExMiwzNTEyMCwzNTEyMSwzNTEyMiwzNTEyNSwzNTEyOSwzNTEzMCwzNTEzNCwzNTEzNiwzNTEzOCwzNTE0MSwzNTE0MiwzNTE0NSwzNTE1MSwzNTE1NCwzNTE1OSwzNTE2MiwzNTE2MywzNTE2NCwzNTE2OSwzNTE3MCwzNTE3MSwzNTE3OSwzNTE4MiwzNTE4NCwzNTE4NywzNTE4OSwzNTE5NCwzNTE5NSwzNTE5NiwzNTE5NywzNTIwOSwzNTIxMywzNTIxNiwzNTIyMCwzNTIyMSwzNTIyNywzNTIyOCwzNTIzMSwzNTIzMiwzNTIzNywzNTI0OCwzNTI1MiwzNTI1MywzNTI1NCwzNTI1NSwzNTI2MCwzNTI4NCwzNTI4NSwzNTI4NiwzNTI4NywzNTI4OCwzNTMwMSwzNTMwNSwzNTMwNywzNTMwOSwzNTMxMywzNTMxNSwzNTMxOCwzNTMyMSwzNTMyNSwzNTMyNywzNTMzMiwzNTMzMywzNTMzNSwzNTM0MywzNTM0NSwzNTM0NiwzNTM0OCwzNTM0OSwzNTM1OCwzNTM2MCwzNTM2MiwzNTM2NCwzNTM2NiwzNTM3MSwzNTM3MiwzNTM3NSwzNTM4MSwzNTM4MywzNTM4OSwzNTM5MCwzNTM5MiwzNTM5NSwzNTM5NywzNTM5OSwzNTQwMSwzNTQwNSwzNTQwNiwzNTQxMSwzNTQxNCwzNTQxNSwzNTQxNiwzNTQyMCwzNTQyMSwzNTQyNSwzNTQyOSwzNTQzMSwzNTQ0NSwzNTQ0NiwzNTQ0NywzNTQ0OSwzNTQ1MCwzNTQ1MSwzNTQ1NCwzNTQ1NSwzNTQ1NiwzNTQ1OSwzNTQ2MiwzNTQ2NywzNTQ3MSwzNTQ3MiwzNTQ3NCwzNTQ3OCwzNTQ3OSwzNTQ4MSwzNTQ4NywzNTQ5NSwzNTQ5NywzNTUwMiwzNTUwMywzNTUwNywzNTUxMCwzNTUxMSwzNTUxNSwzNTUxOCwzNTUyMywzNTUyNiwzNTUyOCwzNTUyOSwzNTUzMCwzNTUzNywzNTUzOSwzNTU0MCwzNTU0MSwzNTU0MywzNTU0OSwzNTU1MSwzNTU2NCwzNTU2OCwzNTU3MiwzNTU3MywzNTU3NCwzNTU4MCwzNTU4MywzNTU4OSwzNTU5MCwzNTU5NSwzNTYwMSwzNTYxMiwzNTYxNCwzNTYxNSwzNTU5NCwzNTYyOSwzNTYzMiwzNTYzOSwzNTY0NCwzNTY1MCwzNTY1MSwzNTY1MiwzNTY1MywzNTY1NCwzNTY1NiwzNTY2NiwzNTY2NywzNTY2OCwzNTY3MywzNTY2MSwzNTY3OCwzNTY4MywzNTY5MywzNTcwMiwzNTcwNCwzNTcwNSwzNTcwOCwzNTcxMCwzNTcxMywzNTcxNiwzNTcxNywzNTcyMywzNTcyNSwzNTcyNywzNTczMiwzNTczMywzNTc0MCwzNTc0MiwzNTc0MywzNTg5NiwzNTg5NywzNTkwMSwzNTkwMiwzNTkwOSwzNTkxMSwzNTkxMywzNTkxNSwzNTkxOSwzNTkyMSwzNTkyMywzNTkyNCwzNTkyNywzNTkyOCwzNTkzMSwzNTkzMywzNTkyOSwzNTkzOSwzNTk0MCwzNTk0MiwzNTk0NCwzNTk0NSwzNTk0OSwzNTk1NSwzNTk1NywzNTk1OCwzNTk2MywzNTk2NiwzNTk3NCwzNTk3NSwzNTk3OSwzNTk4NCwzNTk4NiwzNTk4NywzNTk5MywzNTk5NSwzNTk5NiwzNjAwNCwzNjAyNSwzNjAyNiwzNjAzNywzNjAzOCwzNjA0MSwzNjA0MywzNjA0NywzNjA1NCwzNjA1MywzNjA1NywzNjA2MSwzNjA2NSwzNjA3MiwzNjA3NiwzNjA3OSwzNjA4MCwzNjA4MiwzNjA4NSwzNjA4NywzNjA4OCwzNjA5NCwzNjA5NSwzNjA5NywzNjA5OSwzNjEwNSwzNjExNCwzNjExOSwzNjEyMywzNjE5NywzNjIwMSwzNjIwNCwzNjIwNiwzNjIyMywzNjIyNiwzNjIyOCwzNjIzMiwzNjIzNywzNjI0MCwzNjI0MSwzNjI0NSwzNjI1NCwzNjI1NSwzNjI1NiwzNjI2MiwzNjI2NywzNjI2OCwzNjI3MSwzNjI3NCwzNjI3NywzNjI3OSwzNjI4MSwzNjI4MywzNjI4OCwzNjI5MywzNjI5NCwzNjI5NSwzNjI5NiwzNjI5OCwzNjMwMiwzNjMwNSwzNjMwOCwzNjMwOSwzNjMxMSwzNjMxMywzNjMyNCwzNjMyNSwzNjMyNywzNjMzMiwzNjMzNiwzNjI4NCwzNjMzNywzNjMzOCwzNjM0MCwzNjM0OSwzNjM1MywzNjM1NiwzNjM1NywzNjM1OCwzNjM2MywzNjM2OSwzNjM3MiwzNjM3NCwzNjM4NCwzNjM4NSwzNjM4NiwzNjM4NywzNjM5MCwzNjM5MSwzNjQwMSwzNjQwMywzNjQwNiwzNjQwNywzNjQwOCwzNjQwOSwzNjQxMywzNjQxNiwzNjQxNywzNjQyNywzNjQyOSwzNjQzMCwzNjQzMSwzNjQzNiwzNjQ0MywzNjQ0NCwzNjQ0NSwzNjQ0NiwzNjQ0OSwzNjQ1MCwzNjQ1NywzNjQ2MCwzNjQ2MSwzNjQ2MywzNjQ2NCwzNjQ2NSwzNjQ3MywzNjQ3NCwzNjQ3NSwzNjQ4MiwzNjQ4MywzNjQ4OSwzNjQ5NiwzNjQ5OCwzNjUwMSwzNjUwNiwzNjUwNywzNjUwOSwzNjUxMCwzNjUxNCwzNjUxOSwzNjUyMSwzNjUyNSwzNjUyNiwzNjUzMSwzNjUzMywzNjUzOCwzNjUzOSwzNjU0NCwzNjU0NSwzNjU0NywzNjU0OCwzNjU1MSwzNjU1OSwzNjU2MSwzNjU2NCwzNjU3MiwzNjU4NCwzNjU5MCwzNjU5MiwzNjU5MywzNjU5OSwzNjYwMSwzNjYwMiwzNjU4OSwzNjYwOCwzNjYxMCwzNjYxNSwzNjYxNiwzNjYyMywzNjYyNCwzNjYzMCwzNjYzMSwzNjYzMiwzNjYzOCwzNjY0MCwzNjY0MSwzNjY0MywzNjY0NSwzNjY0NywzNjY0OCwzNjY1MiwzNjY1MywzNjY1NCwzNjY2MCwzNjY2MSwzNjY2MiwzNjY2MywzNjY2NiwzNjY3MiwzNjY3MywzNjY3NSwzNjY3OSwzNjY4NywzNjY4OSwzNjY5MCwzNjY5MSwzNjY5MiwzNjY5MywzNjY5NiwzNjcwMSwzNjcwMiwzNjcwOSwzNjc2NSwzNjc2OCwzNjc2OSwzNjc3MiwzNjc3MywzNjc3NCwzNjc4OSwzNjc5MCwzNjc5MiwzNjc5OCwzNjgwMCwzNjgwMSwzNjgwNiwzNjgxMCwzNjgxMSwzNjgxMywzNjgxNiwzNjgxOCwzNjgxOSwzNjgyMSwzNjgzMiwzNjgzNSwzNjgzNiwzNjg0MCwzNjg0NiwzNjg0OSwzNjg1MywzNjg1NCwzNjg1OSwzNjg2MiwzNjg2NiwzNjg2OCwzNjg3MiwzNjg3NiwzNjg4OCwzNjg5MSwzNjkwNCwzNjkwNSwzNjkxMSwzNjkwNiwzNjkwOCwzNjkwOSwzNjkxNSwzNjkxNiwzNjkxOSwzNjkyNywzNjkzMSwzNjkzMiwzNjk0MCwzNjk1NSwzNjk1NywzNjk2MiwzNjk2NiwzNjk2NywzNjk3MiwzNjk3NiwzNjk4MCwzNjk4NSwzNjk5NywzNzAwMCwzNzAwMywzNzAwNCwzNzAwNiwzNzAwOCwzNzAxMywzNzAxNSwzNzAxNiwzNzAxNywzNzAxOSwzNzAyNCwzNzAyNSwzNzAyNiwzNzAyOSwzNzA0MCwzNzA0MiwzNzA0MywzNzA0NCwzNzA0NiwzNzA1MywzNzA2OCwzNzA1NCwzNzA1OSwzNzA2MCwzNzA2MSwzNzA2MywzNzA2NCwzNzA3NywzNzA3OSwzNzA4MCwzNzA4MSwzNzA4NCwzNzA4NSwzNzA4NywzNzA5MywzNzA3NCwzNzExMCwzNzA5OSwzNzEwMywzNzEwNCwzNzEwOCwzNzExOCwzNzExOSwzNzEyMCwzNzEyNCwzNzEyNSwzNzEyNiwzNzEyOCwzNzEzMywzNzEzNiwzNzE0MCwzNzE0MiwzNzE0MywzNzE0NCwzNzE0NiwzNzE0OCwzNzE1MCwzNzE1MiwzNzE1NywzNzE1NCwzNzE1NSwzNzE1OSwzNzE2MSwzNzE2NiwzNzE2NywzNzE2OSwzNzE3MiwzNzE3NCwzNzE3NSwzNzE3NywzNzE3OCwzNzE4MCwzNzE4MSwzNzE4NywzNzE5MSwzNzE5MiwzNzE5OSwzNzIwMywzNzIwNywzNzIwOSwzNzIxMCwzNzIxMSwzNzIxNywzNzIyMCwzNzIyMywzNzIyOSwzNzIzNiwzNzI0MSwzNzI0MiwzNzI0MywzNzI0OSwzNzI1MSwzNzI1MywzNzI1NCwzNzI1OCwzNzI2MiwzNzI2NSwzNzI2NywzNzI2OCwzNzI2OSwzNzI3MiwzNzI3OCwzNzI4MSwzNzI4NiwzNzI4OCwzNzI5MiwzNzI5MywzNzI5NCwzNzI5NiwzNzI5NywzNzI5OCwzNzI5OSwzNzMwMiwzNzMwNywzNzMwOCwzNzMwOSwzNzMxMSwzNzMxNCwzNzMxNSwzNzMxNywzNzMzMSwzNzMzMiwzNzMzNSwzNzMzNywzNzMzOCwzNzM0MiwzNzM0OCwzNzM0OSwzNzM1MywzNzM1NCwzNzM1NiwzNzM1NywzNzM1OCwzNzM1OSwzNzM2MCwzNzM2MSwzNzM2NywzNzM2OSwzNzM3MSwzNzM3MywzNzM3NiwzNzM3NywzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NSwzNzM4NiwzNzM4OCwzNzM5MiwzNzM5NCwzNzM5NSwzNzM5OCwzNzQwMCwzNzQwNCwzNzQwNSwzNzQxMSwzNzQxMiwzNzQxMywzNzQxNCwzNzQxNiwzNzQyMiwzNzQyMywzNzQyNCwzNzQyNywzNzQyOSwzNzQzMCwzNzQzMiwzNzQzMywzNzQzNCwzNzQzNiwzNzQzOCwzNzQ0MCwzNzQ0MiwzNzQ0MywzNzQ0NiwzNzQ0NywzNzQ1MCwzNzQ1MywzNzQ1NCwzNzQ1NSwzNzQ1NywzNzQ2NCwzNzQ2NSwzNzQ2OCwzNzQ2OSwzNzQ3MiwzNzQ3MywzNzQ3NywzNzQ3OSwzNzQ4MCwzNzQ4MSwzNzQ4NiwzNzQ4NywzNzQ4OCwzNzQ5MywzNzQ5NCwzNzQ5NSwzNzQ5NiwzNzQ5NywzNzQ5OSwzNzUwMCwzNzUwMSwzNzUwMywzNzUxMiwzNzUxMywzNzUxNCwzNzUxNywzNzUxOCwzNzUyMiwzNzUyNywzNzUyOSwzNzUzNSwzNzUzNiwzNzU0MCwzNzU0MSwzNzU0MywzNzU0NCwzNzU0NywzNzU1MSwzNzU1NCwzNzU1OCwzNzU2MCwzNzU2MiwzNzU2MywzNzU2NCwzNzU2NSwzNzU2NywzNzU2OCwzNzU2OSwzNzU3MCwzNzU3MSwzNzU3MywzNzU3NCwzNzU3NSwzNzU3NiwzNzU3OSwzNzU4MCwzNzU4MSwzNzU4MiwzNzU4NCwzNzU4NywzNzU4OSwzNzU5MSwzNzU5MiwzNzU5MywzNzU5NiwzNzU5NywzNzU5OSwzNzYwMCwzNzYwMSwzNzYwMywzNzYwNSwzNzYwNywzNzYwOCwzNzYxMiwzNzYxNCwzNzYxNiwzNzYyNSwzNzYyNywzNzYzMSwzNzYzMiwzNzYzNCwzNzY0MCwzNzY0NSwzNzY0OSwzNzY1MiwzNzY1MywzNzY2MCwzNzY2MSwzNzY2MiwzNzY2MywzNzY2NSwzNzY2OCwzNzY2OSwzNzY3MSwzNzY3MywzNzY3NCwzNzY4MywzNzY4NCwzNzY4NiwzNzY4NywzNzcwMywzNzcwNCwzNzcwNSwzNzcxMiwzNzcxMywzNzcxNCwzNzcxNywzNzcxOSwzNzcyMCwzNzcyMiwzNzcyNiwzNzczMiwzNzczMywzNzczNSwzNzczNywzNzczOCwzNzc0MSwzNzc0MywzNzc0NCwzNzc0NSwzNzc0NywzNzc0OCwzNzc1MCwzNzc1NCwzNzc1NywzNzc1OSwzNzc2MCwzNzc2MSwzNzc2MiwzNzc2OCwzNzc3MCwzNzc3MSwzNzc3MywzNzc3NSwzNzc3OCwzNzc4MSwzNzc4NCwzNzc4NywzNzc5MCwzNzc5MywzNzc5NSwzNzc5NiwzNzc5OCwzNzgwMCwzNzgwMywzNzgxMiwzNzgxMywzNzgxNCwzNzgxOCwzNzgwMSwzNzgyNSwzNzgyOCwzNzgyOSwzNzgzMCwzNzgzMSwzNzgzMywzNzgzNCwzNzgzNSwzNzgzNiwzNzgzNywzNzg0MywzNzg0OSwzNzg1MiwzNzg1NCwzNzg1NSwzNzg1OCwzNzg2MiwzNzg2MywzNzg4MSwzNzg3OSwzNzg4MCwzNzg4MiwzNzg4MywzNzg4NSwzNzg4OSwzNzg5MCwzNzg5MiwzNzg5NiwzNzg5NywzNzkwMSwzNzkwMiwzNzkwMywzNzkwOSwzNzkxMCwzNzkxMSwzNzkxOSwzNzkzNCwzNzkzNSwzNzkzNywzNzkzOCwzNzkzOSwzNzk0MCwzNzk0NywzNzk1MSwzNzk0OSwzNzk1NSwzNzk1NywzNzk2MCwzNzk2MiwzNzk2NCwzNzk3MywzNzk3NywzNzk4MCwzNzk4MywzNzk4NSwzNzk4NywzNzk5MiwzNzk5NSwzNzk5NywzNzk5OCwzNzk5OSwzODAwMSwzODAwMiwzODAyMCwzODAxOSwzODI2NCwzODI2NSwzODI3MCwzODI3NiwzODI4MCwzODI4NCwzODI4NSwzODI4NiwzODMwMSwzODMwMiwzODMwMywzODMwNSwzODMxMCwzODMxMywzODMxNSwzODMxNiwzODMyNCwzODMyNiwzODMzMCwzODMzMywzODMzNSwzODM0MiwzODM0NCwzODM0NSwzODM0NywzODM1MiwzODM1MywzODM1NCwzODM1NSwzODM2MSwzODM2MiwzODM2NSwzODM2NiwzODM2NywzODM2OCwzODM3MiwzODM3NCwzODQyOSwzODQzMCwzODQzNCwzODQzNiwzODQzNywzODQzOCwzODQ0NCwzODQ0OSwzODQ1MSwzODQ1NSwzODQ1NiwzODQ1NywzODQ1OCwzODQ2MCwzODQ2MSwzODQ2NSwzODQ4MiwzODQ4NCwzODQ4NiwzODQ4NywzODQ4OCwzODQ5NywzODUxMCwzODUxNiwzODUyMywzODUyNCwzODUyNiwzODUyNywzODUyOSwzODUzMCwzODUzMSwzODUzMiwzODUzNywzODU0NSwzODU1MCwzODU1NCwzODU1NywzODU1OSwzODU2NCwzODU2NSwzODU2NiwzODU2OSwzODU3NCwzODU3NSwzODU3OSwzODU4NiwzODYwMiwzODYxMCwyMzk4NiwzODYxNiwzODYxOCwzODYyMSwzODYyMiwzODYyMywzODYzMywzODYzOSwzODY0MSwzODY1MCwzODY1OCwzODY1OSwzODY2MSwzODY2NSwzODY4MiwzODY4MywzODY4NSwzODY4OSwzODY5MCwzODY5MSwzODY5NiwzODcwNSwzODcwNywzODcyMSwzODcyMywzODczMCwzODczNCwzODczNSwzODc0MSwzODc0MywzODc0NCwzODc0NiwzODc0NywzODc1NSwzODc1OSwzODc2MiwzODc2NiwzODc3MSwzODc3NCwzODc3NSwzODc3NiwzODc3OSwzODc4MSwzODc4MywzODc4NCwzODc5MywzODgwNSwzODgwNiwzODgwNywzODgwOSwzODgxMCwzODgxNCwzODgxNSwzODgxOCwzODgyOCwzODgzMCwzODgzMywzODgzNCwzODgzNywzODgzOCwzODg0MCwzODg0MSwzODg0MiwzODg0NCwzODg0NiwzODg0NywzODg0OSwzODg1MiwzODg1MywzODg1NSwzODg1NywzODg1OCwzODg2MCwzODg2MSwzODg2MiwzODg2NCwzODg2NSwzODg2OCwzODg3MSwzODg3MiwzODg3MywzODg3NywzODg3OCwzODg4MCwzODg3NSwzODg4MSwzODg4NCwzODg5NSwzODg5NywzODkwMCwzODkwMywzODkwNCwzODkwNiwzODkxOSwzODkyMiwzODkzNywzODkyNSwzODkyNiwzODkzMiwzODkzNCwzODk0MCwzODk0MiwzODk0NCwzODk0NywzODk1MCwzODk1NSwzODk1OCwzODk1OSwzODk2MCwzODk2MiwzODk2MywzODk2NSwzODk0OSwzODk3NCwzODk4MCwzODk4MywzODk4NiwzODk5MywzODk5NCwzODk5NSwzODk5OCwzODk5OSwzOTAwMSwzOTAwMiwzOTAxMCwzOTAxMSwzOTAxMywzOTAxNCwzOTAxOCwzOTAyMCwzOTA4MywzOTA4NSwzOTA4NiwzOTA4OCwzOTA5MiwzOTA5NSwzOTA5NiwzOTA5OCwzOTA5OSwzOTEwMywzOTEwNiwzOTEwOSwzOTExMiwzOTExNiwzOTEzNywzOTEzOSwzOTE0MSwzOTE0MiwzOTE0MywzOTE0NiwzOTE1NSwzOTE1OCwzOTE3MCwzOTE3NSwzOTE3NiwzOTE4NSwzOTE4OSwzOTE5MCwzOTE5MSwzOTE5NCwzOTE5NSwzOTE5NiwzOTE5OSwzOTIwMiwzOTIwNiwzOTIwNywzOTIxMSwzOTIxNywzOTIxOCwzOTIxOSwzOTIyMCwzOTIyMSwzOTIyNSwzOTIyNiwzOTIyNywzOTIyOCwzOTIzMiwzOTIzMywzOTIzOCwzOTIzOSwzOTI0MCwzOTI0NSwzOTI0NiwzOTI1MiwzOTI1NiwzOTI1NywzOTI1OSwzOTI2MCwzOTI2MiwzOTI2MywzOTI2NCwzOTMyMywzOTMyNSwzOTMyNywzOTMzNCwzOTM0NCwzOTM0NSwzOTM0NiwzOTM0OSwzOTM1MywzOTM1NCwzOTM1NywzOTM1OSwzOTM2MywzOTM2OSwzOTM3OSwzOTM4MCwzOTM4NSwzOTM4NiwzOTM4OCwzOTM5MCwzOTM5OSwzOTQwMiwzOTQwMywzOTQwNCwzOTQwOCwzOTQxMiwzOTQxMywzOTQxNywzOTQyMSwzOTQyMiwzOTQyNiwzOTQyNywzOTQyOCwzOTQzNSwzOTQzNiwzOTQ0MCwzOTQ0MSwzOTQ0NiwzOTQ1NCwzOTQ1NiwzOTQ1OCwzOTQ1OSwzOTQ2MCwzOTQ2MywzOTQ2OSwzOTQ3MCwzOTQ3NSwzOTQ3NywzOTQ3OCwzOTQ4MCwzOTQ5NSwzOTQ4OSwzOTQ5MiwzOTQ5OCwzOTQ5OSwzOTUwMCwzOTUwMiwzOTUwNSwzOTUwOCwzOTUxMCwzOTUxNywzOTU5NCwzOTU5NiwzOTU5OCwzOTU5OSwzOTYwMiwzOTYwNCwzOTYwNSwzOTYwNiwzOTYwOSwzOTYxMSwzOTYxNCwzOTYxNSwzOTYxNywzOTYxOSwzOTYyMiwzOTYyNCwzOTYzMCwzOTYzMiwzOTYzNCwzOTYzNywzOTYzOCwzOTYzOSwzOTY0MywzOTY0NCwzOTY0OCwzOTY1MiwzOTY1MywzOTY1NSwzOTY1NywzOTY2MCwzOTY2NiwzOTY2NywzOTY2OSwzOTY3MywzOTY3NCwzOTY3NywzOTY3OSwzOTY4MCwzOTY4MSwzOTY4MiwzOTY4MywzOTY4NCwzOTY4NSwzOTY4OCwzOTY4OSwzOTY5MSwzOTY5MiwzOTY5MywzOTY5NCwzOTY5NiwzOTY5OCwzOTcwMiwzOTcwNSwzOTcwNywzOTcwOCwzOTcxMiwzOTcxOCwzOTcyMywzOTcyNSwzOTczMSwzOTczMiwzOTczMywzOTczNSwzOTczNywzOTczOCwzOTc0MSwzOTc1MiwzOTc1NSwzOTc1NiwzOTc2NSwzOTc2NiwzOTc2NywzOTc3MSwzOTc3NCwzOTc3NywzOTc3OSwzOTc4MSwzOTc4MiwzOTc4NCwzOTc4NiwzOTc4NywzOTc4OCwzOTc4OSwzOTc5MCwzOTc5NSwzOTc5NywzOTc5OSwzOTgwMCwzOTgwMSwzOTgwNywzOTgwOCwzOTgxMiwzOTgxMywzOTgxNCwzOTgxNSwzOTgxNywzOTgxOCwzOTgxOSwzOTgyMSwzOTgyMywzOTgyNCwzOTgyOCwzOTgzNCwzOTgzNywzOTgzOCwzOTg0NiwzOTg0NywzOTg0OSwzOTg1MiwzOTg1NiwzOTg1NywzOTg1OCwzOTg2MywzOTg2NCwzOTg2NywzOTg2OCwzOTg3MCwzOTg3MSwzOTg3MywzOTg3OSwzOTg4MCwzOTg4NiwzOTg4OCwzOTg5NSwzOTg5NiwzOTkwMSwzOTkwMywzOTkwOSwzOTkxMSwzOTkxNCwzOTkxNSwzOTkxOSwzOTkyMywzOTkyNywzOTkyOCwzOTkyOSwzOTkzMCwzOTkzMywzOTkzNSwzOTkzNiwzOTkzOCwzOTk0NywzOTk1MSwzOTk1MywzOTk1OCwzOTk2MCwzOTk2MSwzOTk2MiwzOTk2NCwzOTk2NiwzOTk3MCwzOTk3MSwzOTk3NCwzOTk3NSwzOTk3NiwzOTk3NywzOTk3OCwzOTk4NSwzOTk4OSwzOTk5MCwzOTk5MSwzOTk5Nyw0MDAwMSw0MDAwMyw0MDAwNCw0MDAwNSw0MDAwOSw0MDAxMCw0MDAxNCw0MDAxNSw0MDAxNiw0MDAxOSw0MDAyMCw0MDAyMiw0MDAyNCw0MDAyNyw0MDAyOSw0MDAzMCw0MDAzMSw0MDAzNSw0MDA0MSw0MDA0Miw0MDAyOCw0MDA0Myw0MDA0MCw0MDA0Niw0MDA0OCw0MDA1MCw0MDA1Myw0MDA1NSw0MDA1OSw0MDE2Niw0MDE3OCw0MDE4Myw0MDE4NSw0MDIwMyw0MDE5NCw0MDIwOSw0MDIxNSw0MDIxNiw0MDIyMCw0MDIyMSw0MDIyMiw0MDIzOSw0MDI0MCw0MDI0Miw0MDI0Myw0MDI0NCw0MDI1MCw0MDI1Miw0MDI2MSw0MDI1Myw0MDI1OCw0MDI1OSw0MDI2Myw0MDI2Niw0MDI3NSw0MDI3Niw0MDI4Nyw0MDI5MSw0MDI5MCw0MDI5Myw0MDI5Nyw0MDI5OCw0MDI5OSw0MDMwNCw0MDMxMCw0MDMxMSw0MDMxNSw0MDMxNiw0MDMxOCw0MDMyMyw0MDMyNCw0MDMyNiw0MDMzMCw0MDMzMyw0MDMzNCw0MDMzOCw0MDMzOSw0MDM0MSw0MDM0Miw0MDM0Myw0MDM0NCw0MDM1Myw0MDM2Miw0MDM2NCw0MDM2Niw0MDM2OSw0MDM3Myw0MDM3Nyw0MDM4MCw0MDM4Myw0MDM4Nyw0MDM5MSw0MDM5Myw0MDM5NCw0MDQwNCw0MDQwNSw0MDQwNiw0MDQwNyw0MDQxMCw0MDQxNCw0MDQxNSw0MDQxNiw0MDQyMSw0MDQyMyw0MDQyNSw0MDQyNyw0MDQzMCw0MDQzMiw0MDQzNSw0MDQzNiw0MDQ0Niw0MDQ1OCw0MDQ1MCw0MDQ1NSw0MDQ2Miw0MDQ2NCw0MDQ2NSw0MDQ2Niw0MDQ2OSw0MDQ3MCw0MDQ3Myw0MDQ3Niw0MDQ3Nyw0MDU3MCw0MDU3MSw0MDU3Miw0MDU3Niw0MDU3OCw0MDU3OSw0MDU4MCw0MDU4MSw0MDU4Myw0MDU5MCw0MDU5MSw0MDU5OCw0MDYwMCw0MDYwMyw0MDYwNiw0MDYxMiw0MDYxNiw0MDYyMCw0MDYyMiw0MDYyMyw0MDYyNCw0MDYyNyw0MDYyOCw0MDYyOSw0MDY0Niw0MDY0OCw0MDY1MSw0MDY2MSw0MDY3MSw0MDY3Niw0MDY3OSw0MDY4NCw0MDY4NSw0MDY4Niw0MDY4OCw0MDY4OSw0MDY5MCw0MDY5Myw0MDY5Niw0MDcwMyw0MDcwNiw0MDcwNyw0MDcxMyw0MDcxOSw0MDcyMCw0MDcyMSw0MDcyMiw0MDcyNCw0MDcyNiw0MDcyNyw0MDcyOSw0MDczMCw0MDczMSw0MDczNSw0MDczOCw0MDc0Miw0MDc0Niw0MDc0Nyw0MDc1MSw0MDc1Myw0MDc1NCw0MDc1Niw0MDc1OSw0MDc2MSw0MDc2Miw0MDc2NCw0MDc2NSw0MDc2Nyw0MDc2OSw0MDc3MSw0MDc3Miw0MDc3Myw0MDc3NCw0MDc3NSw0MDc4Nyw0MDc4OSw0MDc5MCw0MDc5MSw0MDc5Miw0MDc5NCw0MDc5Nyw0MDc5OCw0MDgwOCw0MDgwOSw0MDgxMyw0MDgxNCw0MDgxNSw0MDgxNiw0MDgxNyw0MDgxOSw0MDgyMSw0MDgyNiw0MDgyOSw0MDg0Nyw0MDg0OCw0MDg0OSw0MDg1MCw0MDg1Miw0MDg1NCw0MDg1NSw0MDg2Miw0MDg2NSw0MDg2Niw0MDg2Nyw0MDg2OSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLFxuICBcImlibTg2NlwiOlsxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4Nyw5NjE3LDk2MTgsOTYxOSw5NDc0LDk1MDgsOTU2OSw5NTcwLDk1NTgsOTU1Nyw5NTcxLDk1NTMsOTU1OSw5NTY1LDk1NjQsOTU2Myw5NDg4LDk0OTIsOTUyNCw5NTE2LDk1MDAsOTQ3Miw5NTMyLDk1NjYsOTU2Nyw5NTYyLDk1NTYsOTU3Nyw5NTc0LDk1NjgsOTU1Miw5NTgwLDk1NzUsOTU3Niw5NTcyLDk1NzMsOTU2MSw5NTYwLDk1NTQsOTU1NSw5NTc5LDk1NzgsOTQ5Niw5NDg0LDk2MDgsOTYwNCw5NjEyLDk2MTYsOTYwMCwxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDEwMjUsMTEwNSwxMDI4LDExMDgsMTAzMSwxMTExLDEwMzgsMTExOCwxNzYsODcyOSwxODMsODczMCw4NDcwLDE2NCw5NjMyLDE2MF0sXG4gIFwiaXNvLTg4NTktMlwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsNzI4LDMyMSwxNjQsMzE3LDM0NiwxNjcsMTY4LDM1MiwzNTAsMzU2LDM3NywxNzMsMzgxLDM3OSwxNzYsMjYxLDczMSwzMjIsMTgwLDMxOCwzNDcsNzExLDE4NCwzNTMsMzUxLDM1NywzNzgsNzMzLDM4MiwzODAsMzQwLDE5MywxOTQsMjU4LDE5NiwzMTMsMjYyLDE5OSwyNjgsMjAxLDI4MCwyMDMsMjgyLDIwNSwyMDYsMjcwLDI3MiwzMjMsMzI3LDIxMSwyMTIsMzM2LDIxNCwyMTUsMzQ0LDM2NiwyMTgsMzY4LDIyMCwyMjEsMzU0LDIyMywzNDEsMjI1LDIyNiwyNTksMjI4LDMxNCwyNjMsMjMxLDI2OSwyMzMsMjgxLDIzNSwyODMsMjM3LDIzOCwyNzEsMjczLDMyNCwzMjgsMjQzLDI0NCwzMzcsMjQ2LDI0NywzNDUsMzY3LDI1MCwzNjksMjUyLDI1MywzNTUsNzI5XSxcbiAgXCJpc28tODg1OS0zXCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI5NCw3MjgsMTYzLDE2NCxudWxsLDI5MiwxNjcsMTY4LDMwNCwzNTAsMjg2LDMwOCwxNzMsbnVsbCwzNzksMTc2LDI5NSwxNzgsMTc5LDE4MCwxODEsMjkzLDE4MywxODQsMzA1LDM1MSwyODcsMzA5LDE4OSxudWxsLDM4MCwxOTIsMTkzLDE5NCxudWxsLDE5NiwyNjYsMjY0LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LG51bGwsMjA5LDIxMCwyMTEsMjEyLDI4OCwyMTQsMjE1LDI4NCwyMTcsMjE4LDIxOSwyMjAsMzY0LDM0OCwyMjMsMjI0LDIyNSwyMjYsbnVsbCwyMjgsMjY3LDI2NSwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSxudWxsLDI0MSwyNDIsMjQzLDI0NCwyODksMjQ2LDI0NywyODUsMjQ5LDI1MCwyNTEsMjUyLDM2NSwzNDksNzI5XSxcbiAgXCJpc28tODg1OS00XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDI2MCwzMTIsMzQyLDE2NCwyOTYsMzE1LDE2NywxNjgsMzUyLDI3NCwyOTAsMzU4LDE3MywzODEsMTc1LDE3NiwyNjEsNzMxLDM0MywxODAsMjk3LDMxNiw3MTEsMTg0LDM1MywyNzUsMjkxLDM1OSwzMzAsMzgyLDMzMSwyNTYsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMzAyLDI2OCwyMDEsMjgwLDIwMywyNzgsMjA1LDIwNiwyOTgsMjcyLDMyNSwzMzIsMzEwLDIxMiwyMTMsMjE0LDIxNSwyMTYsMzcwLDIxOCwyMTksMjIwLDM2MCwzNjIsMjIzLDI1NywyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwzMDMsMjY5LDIzMywyODEsMjM1LDI3OSwyMzcsMjM4LDI5OSwyNzMsMzI2LDMzMywzMTEsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwzNzEsMjUwLDI1MSwyNTIsMzYxLDM2Myw3MjldLFxuICBcImlzby04ODU5LTVcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTczLDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDg0NzAsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTY3LDExMTgsMTExOV0sXG4gIFwiaXNvLTg4NTktNlwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCxudWxsLG51bGwsbnVsbCwxNjQsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwxNTQ4LDE3MyxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDE1NjMsbnVsbCxudWxsLG51bGwsMTU2NyxudWxsLDE1NjksMTU3MCwxNTcxLDE1NzIsMTU3MywxNTc0LDE1NzUsMTU3NiwxNTc3LDE1NzgsMTU3OSwxNTgwLDE1ODEsMTU4MiwxNTgzLDE1ODQsMTU4NSwxNTg2LDE1ODcsMTU4OCwxNTg5LDE1OTAsMTU5MSwxNTkyLDE1OTMsMTU5NCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTYwMCwxNjAxLDE2MDIsMTYwMywxNjA0LDE2MDUsMTYwNiwxNjA3LDE2MDgsMTYwOSwxNjEwLDE2MTEsMTYxMiwxNjEzLDE2MTQsMTYxNSwxNjE2LDE2MTcsMTYxOCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxcbiAgXCJpc28tODg1OS03XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDgyMTYsODIxNywxNjMsODM2NCw4MzY3LDE2NiwxNjcsMTY4LDE2OSw4OTAsMTcxLDE3MiwxNzMsbnVsbCw4MjEzLDE3NiwxNzcsMTc4LDE3OSw5MDAsOTAxLDkwMiwxODMsOTA0LDkwNSw5MDYsMTg3LDkwOCwxODksOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSxudWxsLDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsbnVsbF0sXG4gIFwiaXNvLTg4NTktOFwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCxudWxsLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMjE1LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDI0NywxODcsMTg4LDE4OSwxOTAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLDgyMTUsMTQ4OCwxNDg5LDE0OTAsMTQ5MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5NywxNDk4LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUwOSwxNTEwLDE1MTEsMTUxMiwxNTEzLDE1MTQsbnVsbCxudWxsLDgyMDYsODIwNyxudWxsXSxcbiAgXCJpc28tODg1OS0xMFwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwyNjAsMjc0LDI5MCwyOTgsMjk2LDMxMCwxNjcsMzE1LDI3MiwzNTIsMzU4LDM4MSwxNzMsMzYyLDMzMCwxNzYsMjYxLDI3NSwyOTEsMjk5LDI5NywzMTEsMTgzLDMxNiwyNzMsMzUzLDM1OSwzODIsODIxMywzNjMsMzMxLDI1NiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwzMDIsMjY4LDIwMSwyODAsMjAzLDI3OCwyMDUsMjA2LDIwNywyMDgsMzI1LDMzMiwyMTEsMjEyLDIxMywyMTQsMzYwLDIxNiwzNzAsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjU3LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDMwMywyNjksMjMzLDI4MSwyMzUsMjc5LDIzNywyMzgsMjM5LDI0MCwzMjYsMzMzLDI0MywyNDQsMjQ1LDI0NiwzNjEsMjQ4LDM3MSwyNTAsMjUxLDI1MiwyNTMsMjU0LDMxMl0sXG4gIFwiaXNvLTg4NTktMTNcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsODIyMSwxNjIsMTYzLDE2NCw4MjIyLDE2NiwxNjcsMjE2LDE2OSwzNDIsMTcxLDE3MiwxNzMsMTc0LDE5OCwxNzYsMTc3LDE3OCwxNzksODIyMCwxODEsMTgyLDE4MywyNDgsMTg1LDM0MywxODcsMTg4LDE4OSwxOTAsMjMwLDI2MCwzMDIsMjU2LDI2MiwxOTYsMTk3LDI4MCwyNzQsMjY4LDIwMSwzNzcsMjc4LDI5MCwzMTAsMjk4LDMxNSwzNTIsMzIzLDMyNSwyMTEsMzMyLDIxMywyMTQsMjE1LDM3MCwzMjEsMzQ2LDM2MiwyMjAsMzc5LDM4MSwyMjMsMjYxLDMwMywyNTcsMjYzLDIyOCwyMjksMjgxLDI3NSwyNjksMjMzLDM3OCwyNzksMjkxLDMxMSwyOTksMzE2LDM1MywzMjQsMzI2LDI0MywzMzMsMjQ1LDI0NiwyNDcsMzcxLDMyMiwzNDcsMzYzLDI1MiwzODAsMzgyLDgyMTddLFxuICBcImlzby04ODU5LTE0XCI6WzEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLDEzNCwxMzUsMTM2LDEzNywxMzgsMTM5LDE0MCwxNDEsMTQyLDE0MywxNDQsMTQ1LDE0NiwxNDcsMTQ4LDE0OSwxNTAsMTUxLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDc2ODIsNzY4MywxNjMsMjY2LDI2Nyw3NjkwLDE2Nyw3ODA4LDE2OSw3ODEwLDc2OTEsNzkyMiwxNzMsMTc0LDM3Niw3NzEwLDc3MTEsMjg4LDI4OSw3NzQ0LDc3NDUsMTgyLDc3NjYsNzgwOSw3NzY3LDc4MTEsNzc3Niw3OTIzLDc4MTIsNzgxMyw3Nzc3LDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywzNzIsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsNzc4NiwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwzNzQsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwzNzMsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsNzc4NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywzNzUsMjU1XSxcbiAgXCJpc28tODg1OS0xNVwiOlsxMjgsMTI5LDEzMCwxMzEsMTMyLDEzMywxMzQsMTM1LDEzNiwxMzcsMTM4LDEzOSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDE0NSwxNDYsMTQ3LDE0OCwxNDksMTUwLDE1MSwxNTIsMTUzLDE1NCwxNTUsMTU2LDE1NywxNTgsMTU5LDE2MCwxNjEsMTYyLDE2Myw4MzY0LDE2NSwzNTIsMTY3LDM1MywxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDM4MSwxODEsMTgyLDE4MywzODIsMTg1LDE4NiwxODcsMzM4LDMzOSwzNzYsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NV0sXG4gIFwiaXNvLTg4NTktMTZcIjpbMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMjYwLDI2MSwzMjEsODM2NCw4MjIyLDM1MiwxNjcsMzUzLDE2OSw1MzYsMTcxLDM3NywxNzMsMzc4LDM3OSwxNzYsMTc3LDI2OCwzMjIsMzgxLDgyMjEsMTgyLDE4MywzODIsMjY5LDUzNywxODcsMzM4LDMzOSwzNzYsMzgwLDE5MiwxOTMsMTk0LDI1OCwxOTYsMjYyLDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyNzIsMzIzLDIxMCwyMTEsMjEyLDMzNiwyMTQsMzQ2LDM2OCwyMTcsMjE4LDIxOSwyMjAsMjgwLDUzOCwyMjMsMjI0LDIyNSwyMjYsMjU5LDIyOCwyNjMsMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI3MywzMjQsMjQyLDI0MywyNDQsMzM3LDI0NiwzNDcsMzY5LDI0OSwyNTAsMjUxLDI1MiwyODEsNTM5LDI1NV0sXG4gIFwia29pOC1yXCI6Wzk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksODk5Miw5NjMyLDg3MjksODczMCw4Nzc2LDg4MDQsODgwNSwxNjAsODk5MywxNzYsMTc4LDE4MywyNDcsOTU1Miw5NTUzLDk1NTQsMTEwNSw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSwxMDI1LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCwxNjksMTEwMiwxMDcyLDEwNzMsMTA5NCwxMDc2LDEwNzcsMTA5MiwxMDc1LDEwOTMsMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDExMDMsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDc4LDEwNzQsMTEwMCwxMDk5LDEwNzksMTA5NiwxMTAxLDEwOTcsMTA5NSwxMDk4LDEwNzAsMTA0MCwxMDQxLDEwNjIsMTA0NCwxMDQ1LDEwNjAsMTA0MywxMDYxLDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDcxLDEwNTYsMTA1NywxMDU4LDEwNTksMTA0NiwxMDQyLDEwNjgsMTA2NywxMDQ3LDEwNjQsMTA2OSwxMDY1LDEwNjMsMTA2Nl0sXG4gIFwia29pOC11XCI6Wzk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksODk5Miw5NjMyLDg3MjksODczMCw4Nzc2LDg4MDQsODgwNSwxNjAsODk5MywxNzYsMTc4LDE4MywyNDcsOTU1Miw5NTUzLDk1NTQsMTEwNSwxMTA4LDk1NTYsMTExMCwxMTExLDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2MywxMTY5LDExMTgsOTU2Niw5NTY3LDk1NjgsOTU2OSwxMDI1LDEwMjgsOTU3MSwxMDMwLDEwMzEsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDExNjgsMTAzOCwxNjksMTEwMiwxMDcyLDEwNzMsMTA5NCwxMDc2LDEwNzcsMTA5MiwxMDc1LDEwOTMsMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDExMDMsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDc4LDEwNzQsMTEwMCwxMDk5LDEwNzksMTA5NiwxMTAxLDEwOTcsMTA5NSwxMDk4LDEwNzAsMTA0MCwxMDQxLDEwNjIsMTA0NCwxMDQ1LDEwNjAsMTA0MywxMDYxLDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDcxLDEwNTYsMTA1NywxMDU4LDEwNTksMTA0NiwxMDQyLDEwNjgsMTA2NywxMDQ3LDEwNjQsMTA2OSwxMDY1LDEwNjMsMTA2Nl0sXG4gIFwibWFjaW50b3NoXCI6WzE5NiwxOTcsMTk5LDIwMSwyMDksMjE0LDIyMCwyMjUsMjI0LDIyNiwyMjgsMjI3LDIyOSwyMzEsMjMzLDIzMiwyMzQsMjM1LDIzNywyMzYsMjM4LDIzOSwyNDEsMjQzLDI0MiwyNDQsMjQ2LDI0NSwyNTAsMjQ5LDI1MSwyNTIsODIyNCwxNzYsMTYyLDE2MywxNjcsODIyNiwxODIsMjIzLDE3NCwxNjksODQ4MiwxODAsMTY4LDg4MDAsMTk4LDIxNiw4NzM0LDE3Nyw4ODA0LDg4MDUsMTY1LDE4MSw4NzA2LDg3MjEsODcxOSw5NjAsODc0NywxNzAsMTg2LDkzNywyMzAsMjQ4LDE5MSwxNjEsMTcyLDg3MzAsNDAyLDg3NzYsODcxMCwxNzEsMTg3LDgyMzAsMTYwLDE5MiwxOTUsMjEzLDMzOCwzMzksODIxMSw4MjEyLDgyMjAsODIyMSw4MjE2LDgyMTcsMjQ3LDk2NzQsMjU1LDM3Niw4MjYwLDgzNjQsODI0OSw4MjUwLDY0MjU3LDY0MjU4LDgyMjUsMTgzLDgyMTgsODIyMiw4MjQwLDE5NCwyMDIsMTkzLDIwMywyMDAsMjA1LDIwNiwyMDcsMjA0LDIxMSwyMTIsNjM3NDMsMjEwLDIxOCwyMTksMjE3LDMwNSw3MTAsNzMyLDE3NSw3MjgsNzI5LDczMCwxODQsNzMzLDczMSw3MTFdLFxuICBcIndpbmRvd3MtODc0XCI6WzgzNjQsMTI5LDEzMCwxMzEsMTMyLDgyMzAsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1MiwxNTMsMTU0LDE1NSwxNTYsMTU3LDE1OCwxNTksMTYwLDM1ODUsMzU4NiwzNTg3LDM1ODgsMzU4OSwzNTkwLDM1OTEsMzU5MiwzNTkzLDM1OTQsMzU5NSwzNTk2LDM1OTcsMzU5OCwzNTk5LDM2MDAsMzYwMSwzNjAyLDM2MDMsMzYwNCwzNjA1LDM2MDYsMzYwNywzNjA4LDM2MDksMzYxMCwzNjExLDM2MTIsMzYxMywzNjE0LDM2MTUsMzYxNiwzNjE3LDM2MTgsMzYxOSwzNjIwLDM2MjEsMzYyMiwzNjIzLDM2MjQsMzYyNSwzNjI2LDM2MjcsMzYyOCwzNjI5LDM2MzAsMzYzMSwzNjMyLDM2MzMsMzYzNCwzNjM1LDM2MzYsMzYzNywzNjM4LDM2MzksMzY0MCwzNjQxLDM2NDIsbnVsbCxudWxsLG51bGwsbnVsbCwzNjQ3LDM2NDgsMzY0OSwzNjUwLDM2NTEsMzY1MiwzNjUzLDM2NTQsMzY1NSwzNjU2LDM2NTcsMzY1OCwzNjU5LDM2NjAsMzY2MSwzNjYyLDM2NjMsMzY2NCwzNjY1LDM2NjYsMzY2NywzNjY4LDM2NjksMzY3MCwzNjcxLDM2NzIsMzY3MywzNjc0LDM2NzUsbnVsbCxudWxsLG51bGwsbnVsbF0sXG4gIFwid2luZG93cy0xMjUwXCI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMzUyLDgyNDksMzQ2LDM1NiwzODEsMzc3LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDM1Myw4MjUwLDM0NywzNTcsMzgyLDM3OCwxNjAsNzExLDcyOCwzMjEsMTY0LDI2MCwxNjYsMTY3LDE2OCwxNjksMzUwLDE3MSwxNzIsMTczLDE3NCwzNzksMTc2LDE3Nyw3MzEsMzIyLDE4MCwxODEsMTgyLDE4MywxODQsMjYxLDM1MSwxODcsMzE3LDczMywzMTgsMzgwLDM0MCwxOTMsMTk0LDI1OCwxOTYsMzEzLDI2MiwxOTksMjY4LDIwMSwyODAsMjAzLDI4MiwyMDUsMjA2LDI3MCwyNzIsMzIzLDMyNywyMTEsMjEyLDMzNiwyMTQsMjE1LDM0NCwzNjYsMjE4LDM2OCwyMjAsMjIxLDM1NCwyMjMsMzQxLDIyNSwyMjYsMjU5LDIyOCwzMTQsMjYzLDIzMSwyNjksMjMzLDI4MSwyMzUsMjgzLDIzNywyMzgsMjcxLDI3MywzMjQsMzI4LDI0MywyNDQsMzM3LDI0NiwyNDcsMzQ1LDM2NywyNTAsMzY5LDI1MiwyNTMsMzU1LDcyOV0sXG4gIFwid2luZG93cy0xMjUxXCI6WzEwMjYsMTAyNyw4MjE4LDExMDcsODIyMiw4MjMwLDgyMjQsODIyNSw4MzY0LDgyNDAsMTAzMyw4MjQ5LDEwMzQsMTAzNiwxMDM1LDEwMzksMTEwNiw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDExMTMsODI1MCwxMTE0LDExMTYsMTExNSwxMTE5LDE2MCwxMDM4LDExMTgsMTAzMiwxNjQsMTE2OCwxNjYsMTY3LDEwMjUsMTY5LDEwMjgsMTcxLDE3MiwxNzMsMTc0LDEwMzEsMTc2LDE3NywxMDMwLDExMTAsMTE2OSwxODEsMTgyLDE4MywxMTA1LDg0NzAsMTEwOCwxODcsMTExMiwxMDI5LDExMDksMTExMSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzXSxcbiAgXCJ3aW5kb3dzLTEyNTJcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwzNTIsODI0OSwzMzgsMTQxLDM4MSwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMzUzLDgyNTAsMzM5LDE1NywzODIsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1XSxcbiAgXCJ3aW5kb3dzLTEyNTNcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSwxMzYsODI0MCwxMzgsODI0OSwxNDAsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTUyLDg0ODIsMTU0LDgyNTAsMTU2LDE1NywxNTgsMTU5LDE2MCw5MDEsOTAyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSxudWxsLDE3MSwxNzIsMTczLDE3NCw4MjEzLDE3NiwxNzcsMTc4LDE3OSw5MDAsMTgxLDE4MiwxODMsOTA0LDkwNSw5MDYsMTg3LDkwOCwxODksOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSxudWxsLDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsbnVsbF0sXG4gIFwid2luZG93cy0xMjU0XCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMzUyLDgyNDksMzM4LDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDM1Myw4MjUwLDMzOSwxNTcsMTU4LDM3NiwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyODYsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMzA0LDM1MCwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI4NywyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwzMDUsMzUxLDI1NV0sXG4gIFwid2luZG93cy0xMjU1XCI6WzgzNjQsMTI5LDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTM4LDgyNDksMTQwLDE0MSwxNDIsMTQzLDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDczMiw4NDgyLDE1NCw4MjUwLDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsODM2MiwxNjUsMTY2LDE2NywxNjgsMTY5LDIxNSwxNzEsMTcyLDE3MywxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwyNDcsMTg3LDE4OCwxODksMTkwLDE5MSwxNDU2LDE0NTcsMTQ1OCwxNDU5LDE0NjAsMTQ2MSwxNDYyLDE0NjMsMTQ2NCwxNDY1LG51bGwsMTQ2NywxNDY4LDE0NjksMTQ3MCwxNDcxLDE0NzIsMTQ3MywxNDc0LDE0NzUsMTUyMCwxNTIxLDE1MjIsMTUyMywxNTI0LG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsMTQ4OCwxNDg5LDE0OTAsMTQ5MSwxNDkyLDE0OTMsMTQ5NCwxNDk1LDE0OTYsMTQ5NywxNDk4LDE0OTksMTUwMCwxNTAxLDE1MDIsMTUwMywxNTA0LDE1MDUsMTUwNiwxNTA3LDE1MDgsMTUwOSwxNTEwLDE1MTEsMTUxMiwxNTEzLDE1MTQsbnVsbCxudWxsLDgyMDYsODIwNyxudWxsXSxcbiAgXCJ3aW5kb3dzLTEyNTZcIjpbODM2NCwxNjYyLDgyMTgsNDAyLDgyMjIsODIzMCw4MjI0LDgyMjUsNzEwLDgyNDAsMTY1Nyw4MjQ5LDMzOCwxNjcwLDE2ODgsMTY3MiwxNzExLDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsMTcwNSw4NDgyLDE2ODEsODI1MCwzMzksODIwNCw4MjA1LDE3MjIsMTYwLDE1NDgsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzI2LDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE1NjMsMTg3LDE4OCwxODksMTkwLDE1NjcsMTcyOSwxNTY5LDE1NzAsMTU3MSwxNTcyLDE1NzMsMTU3NCwxNTc1LDE1NzYsMTU3NywxNTc4LDE1NzksMTU4MCwxNTgxLDE1ODIsMTU4MywxNTg0LDE1ODUsMTU4NiwxNTg3LDE1ODgsMTU4OSwxNTkwLDIxNSwxNTkxLDE1OTIsMTU5MywxNTk0LDE2MDAsMTYwMSwxNjAyLDE2MDMsMjI0LDE2MDQsMjI2LDE2MDUsMTYwNiwxNjA3LDE2MDgsMjMxLDIzMiwyMzMsMjM0LDIzNSwxNjA5LDE2MTAsMjM4LDIzOSwxNjExLDE2MTIsMTYxMywxNjE0LDI0NCwxNjE1LDE2MTYsMjQ3LDE2MTcsMjQ5LDE2MTgsMjUxLDI1Miw4MjA2LDgyMDcsMTc0Nl0sXG4gIFwid2luZG93cy0xMjU3XCI6WzgzNjQsMTI5LDgyMTgsMTMxLDgyMjIsODIzMCw4MjI0LDgyMjUsMTM2LDgyNDAsMTM4LDgyNDksMTQwLDE2OCw3MTEsMTg0LDE0NCw4MjE2LDgyMTcsODIyMCw4MjIxLDgyMjYsODIxMSw4MjEyLDE1Miw4NDgyLDE1NCw4MjUwLDE1NiwxNzUsNzMxLDE1OSwxNjAsbnVsbCwxNjIsMTYzLDE2NCxudWxsLDE2NiwxNjcsMjE2LDE2OSwzNDIsMTcxLDE3MiwxNzMsMTc0LDE5OCwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDI0OCwxODUsMzQzLDE4NywxODgsMTg5LDE5MCwyMzAsMjYwLDMwMiwyNTYsMjYyLDE5NiwxOTcsMjgwLDI3NCwyNjgsMjAxLDM3NywyNzgsMjkwLDMxMCwyOTgsMzE1LDM1MiwzMjMsMzI1LDIxMSwzMzIsMjEzLDIxNCwyMTUsMzcwLDMyMSwzNDYsMzYyLDIyMCwzNzksMzgxLDIyMywyNjEsMzAzLDI1NywyNjMsMjI4LDIyOSwyODEsMjc1LDI2OSwyMzMsMzc4LDI3OSwyOTEsMzExLDI5OSwzMTYsMzUzLDMyNCwzMjYsMjQzLDMzMywyNDUsMjQ2LDI0NywzNzEsMzIyLDM0NywzNjMsMjUyLDM4MCwzODIsNzI5XSxcbiAgXCJ3aW5kb3dzLTEyNThcIjpbODM2NCwxMjksODIxOCw0MDIsODIyMiw4MjMwLDgyMjQsODIyNSw3MTAsODI0MCwxMzgsODI0OSwzMzgsMTQxLDE0MiwxNDMsMTQ0LDgyMTYsODIxNyw4MjIwLDgyMjEsODIyNiw4MjExLDgyMTIsNzMyLDg0ODIsMTU0LDgyNTAsMzM5LDE1NywxNTgsMzc2LDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzMsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMjU4LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsNzY4LDIwNSwyMDYsMjA3LDI3MiwyMDksNzc3LDIxMSwyMTIsNDE2LDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCw0MzEsNzcxLDIyMywyMjQsMjI1LDIyNiwyNTksMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSw3NjksMjM3LDIzOCwyMzksMjczLDI0MSw4MDMsMjQzLDI0NCw0MTcsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDQzMiw4MzYzLDI1NV0sXG4gIFwieC1tYWMtY3lyaWxsaWNcIjpbMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDgyMjQsMTc2LDExNjgsMTYzLDE2Nyw4MjI2LDE4MiwxMDMwLDE3NCwxNjksODQ4MiwxMDI2LDExMDYsODgwMCwxMDI3LDExMDcsODczNCwxNzcsODgwNCw4ODA1LDExMTAsMTgxLDExNjksMTAzMiwxMDI4LDExMDgsMTAzMSwxMTExLDEwMzMsMTExMywxMDM0LDExMTQsMTExMiwxMDI5LDE3Miw4NzMwLDQwMiw4Nzc2LDg3MTAsMTcxLDE4Nyw4MjMwLDE2MCwxMDM1LDExMTUsMTAzNiwxMTE2LDExMDksODIxMSw4MjEyLDgyMjAsODIyMSw4MjE2LDgyMTcsMjQ3LDgyMjIsMTAzOCwxMTE4LDEwMzksMTExOSw4NDcwLDEwMjUsMTEwNSwxMTAzLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsODM2NF1cbn07XG59KHRoaXMpKTtcbiIsIi8vIFRoaXMgaXMgZnJlZSBhbmQgdW5lbmN1bWJlcmVkIHNvZnR3YXJlIHJlbGVhc2VkIGludG8gdGhlIHB1YmxpYyBkb21haW4uXG4vLyBTZWUgTElDRU5TRS5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuLy8gSWYgd2UncmUgaW4gbm9kZSByZXF1aXJlIGVuY29kaW5nLWluZGV4ZXMgYW5kIGF0dGFjaCBpdCB0byB0aGUgZ2xvYmFsLlxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEdsb2JhbCB8dGhpc3wgcmVxdWlyZWQgZm9yIHJlc29sdmluZyBpbmRleGVzIGluIG5vZGUuXG4gKiBAc3VwcHJlc3Mge2dsb2JhbFRoaXN9XG4gKi9cbmlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gIHRoaXNbXCJlbmNvZGluZy1pbmRleGVzXCJdID1cbiAgICByZXF1aXJlKFwiLi9lbmNvZGluZy1pbmRleGVzLmpzXCIpW1wiZW5jb2RpbmctaW5kZXhlc1wiXTtcbn1cblxuKGZ1bmN0aW9uKGdsb2JhbCkge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy9cbiAgLy8gVXRpbGl0aWVzXG4gIC8vXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhIFRoZSBudW1iZXIgdG8gdGVzdC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1pbiBUaGUgbWluaW11bSB2YWx1ZSBpbiB0aGUgcmFuZ2UsIGluY2x1c2l2ZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heCBUaGUgbWF4aW11bSB2YWx1ZSBpbiB0aGUgcmFuZ2UsIGluY2x1c2l2ZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhID49IG1pbiBhbmQgYSA8PSBtYXguXG4gICAqL1xuICBmdW5jdGlvbiBpblJhbmdlKGEsIG1pbiwgbWF4KSB7XG4gICAgcmV0dXJuIG1pbiA8PSBhICYmIGEgPD0gbWF4O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1lcmF0b3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkIFRoZSBkZW5vbWluYXRvci5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgcmVzdWx0IG9mIHRoZSBpbnRlZ2VyIGRpdmlzaW9uIG9mIG4gYnkgZC5cbiAgICovXG4gIGZ1bmN0aW9uIGRpdihuLCBkKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobiAvIGQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Kn0gb1xuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBmdW5jdGlvbiBUb0RpY3Rpb25hcnkobykge1xuICAgIGlmIChvID09PSB1bmRlZmluZWQpIHJldHVybiB7fTtcbiAgICBpZiAobyA9PT0gT2JqZWN0KG8pKSByZXR1cm4gbztcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGFyZ3VtZW50IHRvIGRpY3Rpb25hcnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIElucHV0IHN0cmluZyBvZiBVVEYtMTYgY29kZSB1bml0cy5cbiAgICogQHJldHVybiB7IUFycmF5LjxudW1iZXI+fSBDb2RlIHBvaW50cy5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1RvQ29kZVBvaW50cyhzdHJpbmcpIHtcbiAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNkZm4tb2J0YWluLXVuaWNvZGVcblxuICAgIC8vIDEuIExldCBTIGJlIHRoZSBET01TdHJpbmcgdmFsdWUuXG4gICAgdmFyIHMgPSBTdHJpbmcoc3RyaW5nKTtcblxuICAgIC8vIDIuIExldCBuIGJlIHRoZSBsZW5ndGggb2YgUy5cbiAgICB2YXIgbiA9IHMubGVuZ3RoO1xuXG4gICAgLy8gMy4gSW5pdGlhbGl6ZSBpIHRvIDAuXG4gICAgdmFyIGkgPSAwO1xuXG4gICAgLy8gNC4gSW5pdGlhbGl6ZSBVIHRvIGJlIGFuIGVtcHR5IHNlcXVlbmNlIG9mIFVuaWNvZGUgY2hhcmFjdGVycy5cbiAgICB2YXIgdSA9IFtdO1xuXG4gICAgLy8gNS4gV2hpbGUgaSA8IG46XG4gICAgd2hpbGUgKGkgPCBuKSB7XG5cbiAgICAgIC8vIDEuIExldCBjIGJlIHRoZSBjb2RlIHVuaXQgaW4gUyBhdCBpbmRleCBpLlxuICAgICAgdmFyIGMgPSBzLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgIC8vIDIuIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYzpcblxuICAgICAgLy8gYyA8IDB4RDgwMCBvciBjID4gMHhERkZGXG4gICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID4gMHhERkZGKSB7XG4gICAgICAgIC8vIEFwcGVuZCB0byBVIHRoZSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIGNvZGUgcG9pbnQgYy5cbiAgICAgICAgdS5wdXNoKGMpO1xuICAgICAgfVxuXG4gICAgICAvLyAweERDMDAg4omkIGMg4omkIDB4REZGRlxuICAgICAgZWxzZSBpZiAoMHhEQzAwIDw9IGMgJiYgYyA8PSAweERGRkYpIHtcbiAgICAgICAgLy8gQXBwZW5kIHRvIFUgYSBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSLlxuICAgICAgICB1LnB1c2goMHhGRkZEKTtcbiAgICAgIH1cblxuICAgICAgLy8gMHhEODAwIOKJpCBjIOKJpCAweERCRkZcbiAgICAgIGVsc2UgaWYgKDB4RDgwMCA8PSBjICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIC8vIDEuIElmIGkgPSBu4oiSMSwgdGhlbiBhcHBlbmQgdG8gVSBhIFUrRkZGRCBSRVBMQUNFTUVOVFxuICAgICAgICAvLyBDSEFSQUNURVIuXG4gICAgICAgIGlmIChpID09PSBuIC0gMSkge1xuICAgICAgICAgIHUucHVzaCgweEZGRkQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIDIuIE90aGVyd2lzZSwgaSA8IG7iiJIxOlxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyAxLiBMZXQgZCBiZSB0aGUgY29kZSB1bml0IGluIFMgYXQgaW5kZXggaSsxLlxuICAgICAgICAgIHZhciBkID0gc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpO1xuXG4gICAgICAgICAgLy8gMi4gSWYgMHhEQzAwIOKJpCBkIOKJpCAweERGRkYsIHRoZW46XG4gICAgICAgICAgaWYgKDB4REMwMCA8PSBkICYmIGQgPD0gMHhERkZGKSB7XG4gICAgICAgICAgICAvLyAxLiBMZXQgYSBiZSBjICYgMHgzRkYuXG4gICAgICAgICAgICB2YXIgYSA9IGMgJiAweDNGRjtcblxuICAgICAgICAgICAgLy8gMi4gTGV0IGIgYmUgZCAmIDB4M0ZGLlxuICAgICAgICAgICAgdmFyIGIgPSBkICYgMHgzRkY7XG5cbiAgICAgICAgICAgIC8vIDMuIEFwcGVuZCB0byBVIHRoZSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIGNvZGUgcG9pbnRcbiAgICAgICAgICAgIC8vIDJeMTYrMl4xMCphK2IuXG4gICAgICAgICAgICB1LnB1c2goMHgxMDAwMCArIChhIDw8IDEwKSArIGIpO1xuXG4gICAgICAgICAgICAvLyA0LiBTZXQgaSB0byBpKzEuXG4gICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gMy4gT3RoZXJ3aXNlLCBkIDwgMHhEQzAwIG9yIGQgPiAweERGRkYuIEFwcGVuZCB0byBVIGFcbiAgICAgICAgICAvLyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSLlxuICAgICAgICAgIGVsc2UgIHtcbiAgICAgICAgICAgIHUucHVzaCgweEZGRkQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyAzLiBTZXQgaSB0byBpKzEuXG4gICAgICBpICs9IDE7XG4gICAgfVxuXG4gICAgLy8gNi4gUmV0dXJuIFUuXG4gICAgcmV0dXJuIHU7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHshQXJyYXkuPG51bWJlcj59IGNvZGVfcG9pbnRzIEFycmF5IG9mIGNvZGUgcG9pbnRzLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IHN0cmluZyBTdHJpbmcgb2YgVVRGLTE2IGNvZGUgdW5pdHMuXG4gICAqL1xuICBmdW5jdGlvbiBjb2RlUG9pbnRzVG9TdHJpbmcoY29kZV9wb2ludHMpIHtcbiAgICB2YXIgcyA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZV9wb2ludHMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBjcCA9IGNvZGVfcG9pbnRzW2ldO1xuICAgICAgaWYgKGNwIDw9IDB4RkZGRikge1xuICAgICAgICBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY3ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3AgLT0gMHgxMDAwMDtcbiAgICAgICAgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjcCA+PiAxMCkgKyAweEQ4MDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3AgJiAweDNGRikgKyAweERDMDApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcztcbiAgfVxuXG5cbiAgLy9cbiAgLy8gSW1wbGVtZW50YXRpb24gb2YgRW5jb2Rpbmcgc3BlY2lmaWNhdGlvblxuICAvLyBodHRwczovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy9cbiAgLy9cblxuICAvL1xuICAvLyAzLiBUZXJtaW5vbG9neVxuICAvL1xuXG4gIC8qKlxuICAgKiBFbmQtb2Ytc3RyZWFtIGlzIGEgc3BlY2lhbCB0b2tlbiB0aGF0IHNpZ25pZmllcyBubyBtb3JlIHRva2Vuc1xuICAgKiBhcmUgaW4gdGhlIHN0cmVhbS5cbiAgICogQGNvbnN0XG4gICAqLyB2YXIgZW5kX29mX3N0cmVhbSA9IC0xO1xuXG4gIC8qKlxuICAgKiBBIHN0cmVhbSByZXByZXNlbnRzIGFuIG9yZGVyZWQgc2VxdWVuY2Ugb2YgdG9rZW5zLlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHshKEFycmF5LjxudW1iZXI+fFVpbnQ4QXJyYXkpfSB0b2tlbnMgQXJyYXkgb2YgdG9rZW5zIHRoYXQgcHJvdmlkZSB0aGVcbiAgICogc3RyZWFtLlxuICAgKi9cbiAgZnVuY3Rpb24gU3RyZWFtKHRva2Vucykge1xuICAgIC8qKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fSAqL1xuICAgIHRoaXMudG9rZW5zID0gW10uc2xpY2UuY2FsbCh0b2tlbnMpO1xuICB9XG5cbiAgU3RyZWFtLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGVuZC1vZi1zdHJlYW0gaGFzIGJlZW4gaGl0LlxuICAgICAqL1xuICAgIGVuZE9mU3RyZWFtOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAhdGhpcy50b2tlbnMubGVuZ3RoO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIGEgdG9rZW4gaXMgcmVhZCBmcm9tIGEgc3RyZWFtLCB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlXG4gICAgICogc3RyZWFtIG11c3QgYmUgcmV0dXJuZWQgYW5kIHN1YnNlcXVlbnRseSByZW1vdmVkLCBhbmRcbiAgICAgKiBlbmQtb2Ytc3RyZWFtIG11c3QgYmUgcmV0dXJuZWQgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBHZXQgdGhlIG5leHQgdG9rZW4gZnJvbSB0aGUgc3RyZWFtLCBvclxuICAgICAqIGVuZF9vZl9zdHJlYW0uXG4gICAgICovXG4gICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLnRva2Vucy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBlbmRfb2Zfc3RyZWFtO1xuICAgICAgIHJldHVybiB0aGlzLnRva2Vucy5zaGlmdCgpO1xuICAgICB9LFxuXG4gICAgLyoqXG4gICAgICogV2hlbiBvbmUgb3IgbW9yZSB0b2tlbnMgYXJlIHByZXBlbmRlZCB0byBhIHN0cmVhbSwgdGhvc2UgdG9rZW5zXG4gICAgICogbXVzdCBiZSBpbnNlcnRlZCwgaW4gZ2l2ZW4gb3JkZXIsIGJlZm9yZSB0aGUgZmlyc3QgdG9rZW4gaW4gdGhlXG4gICAgICogc3RyZWFtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IHRva2VuIFRoZSB0b2tlbihzKSB0byBwcmVwZW5kIHRvIHRoZSBzdHJlYW0uXG4gICAgICovXG4gICAgcHJlcGVuZDogZnVuY3Rpb24odG9rZW4pIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRva2VuKSkge1xuICAgICAgICB2YXIgdG9rZW5zID0gLyoqQHR5cGUgeyFBcnJheS48bnVtYmVyPn0qLyh0b2tlbik7XG4gICAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKVxuICAgICAgICAgIHRoaXMudG9rZW5zLnVuc2hpZnQodG9rZW5zLnBvcCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnVuc2hpZnQodG9rZW4pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBXaGVuIG9uZSBvciBtb3JlIHRva2VucyBhcmUgcHVzaGVkIHRvIGEgc3RyZWFtLCB0aG9zZSB0b2tlbnNcbiAgICAgKiBtdXN0IGJlIGluc2VydGVkLCBpbiBnaXZlbiBvcmRlciwgYWZ0ZXIgdGhlIGxhc3QgdG9rZW4gaW4gdGhlXG4gICAgICogc3RyZWFtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IHRva2VuIFRoZSB0b2tlbnMocykgdG8gcHJlcGVuZCB0byB0aGUgc3RyZWFtLlxuICAgICAqL1xuICAgIHB1c2g6IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0b2tlbikpIHtcbiAgICAgICAgdmFyIHRva2VucyA9IC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8odG9rZW4pO1xuICAgICAgICB3aGlsZSAodG9rZW5zLmxlbmd0aClcbiAgICAgICAgICB0aGlzLnRva2Vucy5wdXNoKHRva2Vucy5zaGlmdCgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvL1xuICAvLyA0LiBFbmNvZGluZ3NcbiAgLy9cblxuICAvLyA0LjEgRW5jb2RlcnMgYW5kIGRlY29kZXJzXG5cbiAgLyoqIEBjb25zdCAqL1xuICB2YXIgZmluaXNoZWQgPSAtMTtcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBmYXRhbCBJZiB0cnVlLCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYW4gZXhjZXB0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcj19IG9wdF9jb2RlX3BvaW50IE92ZXJyaWRlIHRoZSBzdGFuZGFyZCBmYWxsYmFjayBjb2RlIHBvaW50LlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBjb2RlIHBvaW50IHRvIGluc2VydCBvbiBhIGRlY29kaW5nIGVycm9yLlxuICAgKi9cbiAgZnVuY3Rpb24gZGVjb2RlckVycm9yKGZhdGFsLCBvcHRfY29kZV9wb2ludCkge1xuICAgIGlmIChmYXRhbClcbiAgICAgIHRocm93IFR5cGVFcnJvcignRGVjb2RlciBlcnJvcicpO1xuICAgIHJldHVybiBvcHRfY29kZV9wb2ludCB8fCAweEZGRkQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIGNvZGUgcG9pbnQgdGhhdCBjb3VsZCBub3QgYmUgZW5jb2RlZC5cbiAgICogQHJldHVybiB7bnVtYmVyfSBBbHdheXMgdGhyb3dzLCBubyB2YWx1ZSBpcyBhY3R1YWxseSByZXR1cm5lZC5cbiAgICovXG4gIGZ1bmN0aW9uIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdUaGUgY29kZSBwb2ludCAnICsgY29kZV9wb2ludCArICcgY291bGQgbm90IGJlIGVuY29kZWQuJyk7XG4gIH1cblxuICAvKiogQGludGVyZmFjZSAqL1xuICBmdW5jdGlvbiBEZWNvZGVyKCkge31cbiAgRGVjb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQsIG9yIHxmaW5pc2hlZHwuXG4gICAgICovXG4gICAgaGFuZGxlcjogZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7fVxuICB9O1xuXG4gIC8qKiBAaW50ZXJmYWNlICovXG4gIGZ1bmN0aW9uIEVuY29kZXIoKSB7fVxuICBFbmNvZGVyLnByb3RvdHlwZSA9IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgY29kZSBwb2ludHMgYmVpbmcgZW5jb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQsIG9yIHxmaW5pc2hlZHwuXG4gICAgICovXG4gICAgaGFuZGxlcjogZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7fVxuICB9O1xuXG4gIC8vIDQuMiBOYW1lcyBhbmQgbGFiZWxzXG5cbiAgLy8gVE9ETzogRGVmaW5lIEB0eXBlZGVmIGZvciBFbmNvZGluZzoge25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn1cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2lzc3Vlcy8yNDdcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsIFRoZSBlbmNvZGluZyBsYWJlbC5cbiAgICogQHJldHVybiB7P3tuYW1lOnN0cmluZyxsYWJlbHM6QXJyYXkuPHN0cmluZz59fVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0RW5jb2RpbmcobGFiZWwpIHtcbiAgICAvLyAxLiBSZW1vdmUgYW55IGxlYWRpbmcgYW5kIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UgZnJvbSBsYWJlbC5cbiAgICBsYWJlbCA9IFN0cmluZyhsYWJlbCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyAyLiBJZiBsYWJlbCBpcyBhbiBBU0NJSSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciBhbnkgb2YgdGhlXG4gICAgLy8gbGFiZWxzIGxpc3RlZCBpbiB0aGUgdGFibGUgYmVsb3csIHJldHVybiB0aGUgY29ycmVzcG9uZGluZ1xuICAgIC8vIGVuY29kaW5nLCBhbmQgZmFpbHVyZSBvdGhlcndpc2UuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYWJlbF90b19lbmNvZGluZywgbGFiZWwpKSB7XG4gICAgICByZXR1cm4gbGFiZWxfdG9fZW5jb2RpbmdbbGFiZWxdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGluZ3MgdGFibGU6IGh0dHBzOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnL2VuY29kaW5ncy5qc29uXG4gICAqIEBjb25zdFxuICAgKiBAdHlwZSB7IUFycmF5Ljx7XG4gICAqICAgICAgICAgIGhlYWRpbmc6IHN0cmluZyxcbiAgICogICAgICAgICAgZW5jb2RpbmdzOiBBcnJheS48e25hbWU6c3RyaW5nLGxhYmVsczpBcnJheS48c3RyaW5nPn0+XG4gICAqICAgICAgICB9Pn1cbiAgICovXG4gIHZhciBlbmNvZGluZ3MgPSBbXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcInVuaWNvZGUtMS0xLXV0Zi04XCIsXG4gICAgICAgICAgXCJ1dGYtOFwiLFxuICAgICAgICAgIFwidXRmOFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInV0Zi04XCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIlRoZSBFbmNvZGluZ1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcIjg2NlwiLFxuICAgICAgICAgIFwiY3A4NjZcIixcbiAgICAgICAgICBcImNzaWJtODY2XCIsXG4gICAgICAgICAgXCJpYm04NjZcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpYm04NjZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjJcIixcbiAgICAgICAgICBcImlzby04ODU5LTJcIixcbiAgICAgICAgICBcImlzby1pci0xMDFcIixcbiAgICAgICAgICBcImlzbzg4NTktMlwiLFxuICAgICAgICAgIFwiaXNvODg1OTJcIixcbiAgICAgICAgICBcImlzb184ODU5LTJcIixcbiAgICAgICAgICBcImlzb184ODU5LTI6MTk4N1wiLFxuICAgICAgICAgIFwibDJcIixcbiAgICAgICAgICBcImxhdGluMlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTJcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjNcIixcbiAgICAgICAgICBcImlzby04ODU5LTNcIixcbiAgICAgICAgICBcImlzby1pci0xMDlcIixcbiAgICAgICAgICBcImlzbzg4NTktM1wiLFxuICAgICAgICAgIFwiaXNvODg1OTNcIixcbiAgICAgICAgICBcImlzb184ODU5LTNcIixcbiAgICAgICAgICBcImlzb184ODU5LTM6MTk4OFwiLFxuICAgICAgICAgIFwibDNcIixcbiAgICAgICAgICBcImxhdGluM1wiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTNcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjRcIixcbiAgICAgICAgICBcImlzby04ODU5LTRcIixcbiAgICAgICAgICBcImlzby1pci0xMTBcIixcbiAgICAgICAgICBcImlzbzg4NTktNFwiLFxuICAgICAgICAgIFwiaXNvODg1OTRcIixcbiAgICAgICAgICBcImlzb184ODU5LTRcIixcbiAgICAgICAgICBcImlzb184ODU5LTQ6MTk4OFwiLFxuICAgICAgICAgIFwibDRcIixcbiAgICAgICAgICBcImxhdGluNFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbmN5cmlsbGljXCIsXG4gICAgICAgICAgXCJjeXJpbGxpY1wiLFxuICAgICAgICAgIFwiaXNvLTg4NTktNVwiLFxuICAgICAgICAgIFwiaXNvLWlyLTE0NFwiLFxuICAgICAgICAgIFwiaXNvODg1OS01XCIsXG4gICAgICAgICAgXCJpc284ODU5NVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNToxOTg4XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktNVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJhcmFiaWNcIixcbiAgICAgICAgICBcImFzbW8tNzA4XCIsXG4gICAgICAgICAgXCJjc2lzbzg4NTk2ZVwiLFxuICAgICAgICAgIFwiY3Npc284ODU5NmlcIixcbiAgICAgICAgICBcImNzaXNvbGF0aW5hcmFiaWNcIixcbiAgICAgICAgICBcImVjbWEtMTE0XCIsXG4gICAgICAgICAgXCJpc28tODg1OS02XCIsXG4gICAgICAgICAgXCJpc28tODg1OS02LWVcIixcbiAgICAgICAgICBcImlzby04ODU5LTYtaVwiLFxuICAgICAgICAgIFwiaXNvLWlyLTEyN1wiLFxuICAgICAgICAgIFwiaXNvODg1OS02XCIsXG4gICAgICAgICAgXCJpc284ODU5NlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNlwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNjoxOTg3XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktNlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzb2xhdGluZ3JlZWtcIixcbiAgICAgICAgICBcImVjbWEtMTE4XCIsXG4gICAgICAgICAgXCJlbG90XzkyOFwiLFxuICAgICAgICAgIFwiZ3JlZWtcIixcbiAgICAgICAgICBcImdyZWVrOFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktN1wiLFxuICAgICAgICAgIFwiaXNvLWlyLTEyNlwiLFxuICAgICAgICAgIFwiaXNvODg1OS03XCIsXG4gICAgICAgICAgXCJpc284ODU5N1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktN1wiLFxuICAgICAgICAgIFwiaXNvXzg4NTktNzoxOTg3XCIsXG4gICAgICAgICAgXCJzdW5fZXVfZ3JlZWtcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS03XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvODg1OThlXCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluaGVicmV3XCIsXG4gICAgICAgICAgXCJoZWJyZXdcIixcbiAgICAgICAgICBcImlzby04ODU5LThcIixcbiAgICAgICAgICBcImlzby04ODU5LTgtZVwiLFxuICAgICAgICAgIFwiaXNvLWlyLTEzOFwiLFxuICAgICAgICAgIFwiaXNvODg1OS04XCIsXG4gICAgICAgICAgXCJpc284ODU5OFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktOFwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktODoxOTg4XCIsXG4gICAgICAgICAgXCJ2aXN1YWxcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS04XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvODg1OThpXCIsXG4gICAgICAgICAgXCJpc28tODg1OS04LWlcIixcbiAgICAgICAgICBcImxvZ2ljYWxcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS04LWlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3Npc29sYXRpbjZcIixcbiAgICAgICAgICBcImlzby04ODU5LTEwXCIsXG4gICAgICAgICAgXCJpc28taXItMTU3XCIsXG4gICAgICAgICAgXCJpc284ODU5LTEwXCIsXG4gICAgICAgICAgXCJpc284ODU5MTBcIixcbiAgICAgICAgICBcImw2XCIsXG4gICAgICAgICAgXCJsYXRpbjZcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xMFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJpc28tODg1OS0xM1wiLFxuICAgICAgICAgIFwiaXNvODg1OS0xM1wiLFxuICAgICAgICAgIFwiaXNvODg1OTEzXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiaXNvLTg4NTktMTNcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiaXNvLTg4NTktMTRcIixcbiAgICAgICAgICBcImlzbzg4NTktMTRcIixcbiAgICAgICAgICBcImlzbzg4NTkxNFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTE0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvbGF0aW45XCIsXG4gICAgICAgICAgXCJpc28tODg1OS0xNVwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xNVwiLFxuICAgICAgICAgIFwiaXNvODg1OTE1XCIsXG4gICAgICAgICAgXCJpc29fODg1OS0xNVwiLFxuICAgICAgICAgIFwibDlcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJpc28tODg1OS0xNVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJpc28tODg1OS0xNlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby04ODU5LTE2XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNza29pOHJcIixcbiAgICAgICAgICBcImtvaVwiLFxuICAgICAgICAgIFwia29pOFwiLFxuICAgICAgICAgIFwia29pOC1yXCIsXG4gICAgICAgICAgXCJrb2k4X3JcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJrb2k4LXJcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwia29pOC1ydVwiLFxuICAgICAgICAgIFwia29pOC11XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwia29pOC11XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzbWFjaW50b3NoXCIsXG4gICAgICAgICAgXCJtYWNcIixcbiAgICAgICAgICBcIm1hY2ludG9zaFwiLFxuICAgICAgICAgIFwieC1tYWMtcm9tYW5cIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJtYWNpbnRvc2hcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiZG9zLTg3NFwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMTFcIixcbiAgICAgICAgICBcImlzbzg4NTktMTFcIixcbiAgICAgICAgICBcImlzbzg4NTkxMVwiLFxuICAgICAgICAgIFwidGlzLTYyMFwiLFxuICAgICAgICAgIFwid2luZG93cy04NzRcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTg3NFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTBcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1MFwiLFxuICAgICAgICAgIFwieC1jcDEyNTBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTBcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjUxXCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTFcIixcbiAgICAgICAgICBcIngtY3AxMjUxXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjUxXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImFuc2lfeDMuNC0xOTY4XCIsXG4gICAgICAgICAgXCJhc2NpaVwiLFxuICAgICAgICAgIFwiY3AxMjUyXCIsXG4gICAgICAgICAgXCJjcDgxOVwiLFxuICAgICAgICAgIFwiY3Npc29sYXRpbjFcIixcbiAgICAgICAgICBcImlibTgxOVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktMVwiLFxuICAgICAgICAgIFwiaXNvLWlyLTEwMFwiLFxuICAgICAgICAgIFwiaXNvODg1OS0xXCIsXG4gICAgICAgICAgXCJpc284ODU5MVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktMToxOTg3XCIsXG4gICAgICAgICAgXCJsMVwiLFxuICAgICAgICAgIFwibGF0aW4xXCIsXG4gICAgICAgICAgXCJ1cy1hc2NpaVwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjUyXCIsXG4gICAgICAgICAgXCJ4LWNwMTI1MlwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1MlwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTNcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1M1wiLFxuICAgICAgICAgIFwieC1jcDEyNTNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTNcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU0XCIsXG4gICAgICAgICAgXCJjc2lzb2xhdGluNVwiLFxuICAgICAgICAgIFwiaXNvLTg4NTktOVwiLFxuICAgICAgICAgIFwiaXNvLWlyLTE0OFwiLFxuICAgICAgICAgIFwiaXNvODg1OS05XCIsXG4gICAgICAgICAgXCJpc284ODU5OVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktOVwiLFxuICAgICAgICAgIFwiaXNvXzg4NTktOToxOTg5XCIsXG4gICAgICAgICAgXCJsNVwiLFxuICAgICAgICAgIFwibGF0aW41XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTRcIixcbiAgICAgICAgICBcIngtY3AxMjU0XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU0XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1NVwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU1XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1NVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1NVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjcDEyNTZcIixcbiAgICAgICAgICBcIndpbmRvd3MtMTI1NlwiLFxuICAgICAgICAgIFwieC1jcDEyNTZcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ3aW5kb3dzLTEyNTZcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3AxMjU3XCIsXG4gICAgICAgICAgXCJ3aW5kb3dzLTEyNTdcIixcbiAgICAgICAgICBcIngtY3AxMjU3XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwid2luZG93cy0xMjU3XCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNwMTI1OFwiLFxuICAgICAgICAgIFwid2luZG93cy0xMjU4XCIsXG4gICAgICAgICAgXCJ4LWNwMTI1OFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIndpbmRvd3MtMTI1OFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ4LW1hYy1jeXJpbGxpY1wiLFxuICAgICAgICAgIFwieC1tYWMtdWtyYWluaWFuXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwieC1tYWMtY3lyaWxsaWNcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IHNpbmdsZS1ieXRlIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNoaW5lc2VcIixcbiAgICAgICAgICBcImNzZ2IyMzEyXCIsXG4gICAgICAgICAgXCJjc2lzbzU4Z2IyMzEyODBcIixcbiAgICAgICAgICBcImdiMjMxMlwiLFxuICAgICAgICAgIFwiZ2JfMjMxMlwiLFxuICAgICAgICAgIFwiZ2JfMjMxMi04MFwiLFxuICAgICAgICAgIFwiZ2JrXCIsXG4gICAgICAgICAgXCJpc28taXItNThcIixcbiAgICAgICAgICBcIngtZ2JrXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiZ2JrXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImdiMTgwMzBcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJnYjE4MDMwXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHNpbXBsaWZpZWQpIGVuY29kaW5nc1wiXG4gIH0sXG4gIHtcbiAgICBcImVuY29kaW5nc1wiOiBbXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImJpZzVcIixcbiAgICAgICAgICBcImJpZzUtaGtzY3NcIixcbiAgICAgICAgICBcImNuLWJpZzVcIixcbiAgICAgICAgICBcImNzYmlnNVwiLFxuICAgICAgICAgIFwieC14LWJpZzVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJiaWc1XCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBtdWx0aS1ieXRlIENoaW5lc2UgKHRyYWRpdGlvbmFsKSBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2V1Y3BrZGZtdGphcGFuZXNlXCIsXG4gICAgICAgICAgXCJldWMtanBcIixcbiAgICAgICAgICBcIngtZXVjLWpwXCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiZXVjLWpwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzaXNvMjAyMmpwXCIsXG4gICAgICAgICAgXCJpc28tMjAyMi1qcFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcImlzby0yMDIyLWpwXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcImNzc2hpZnRqaXNcIixcbiAgICAgICAgICBcIm1zOTMyXCIsXG4gICAgICAgICAgXCJtc19rYW5qaVwiLFxuICAgICAgICAgIFwic2hpZnQtamlzXCIsXG4gICAgICAgICAgXCJzaGlmdF9qaXNcIixcbiAgICAgICAgICBcInNqaXNcIixcbiAgICAgICAgICBcIndpbmRvd3MtMzFqXCIsXG4gICAgICAgICAgXCJ4LXNqaXNcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJzaGlmdF9qaXNcIlxuICAgICAgfVxuICAgIF0sXG4gICAgXCJoZWFkaW5nXCI6IFwiTGVnYWN5IG11bHRpLWJ5dGUgSmFwYW5lc2UgZW5jb2RpbmdzXCJcbiAgfSxcbiAge1xuICAgIFwiZW5jb2RpbmdzXCI6IFtcbiAgICAgIHtcbiAgICAgICAgXCJsYWJlbHNcIjogW1xuICAgICAgICAgIFwiY3NldWNrclwiLFxuICAgICAgICAgIFwiY3Nrc2M1NjAxMTk4N1wiLFxuICAgICAgICAgIFwiZXVjLWtyXCIsXG4gICAgICAgICAgXCJpc28taXItMTQ5XCIsXG4gICAgICAgICAgXCJrb3JlYW5cIixcbiAgICAgICAgICBcImtzX2NfNTYwMS0xOTg3XCIsXG4gICAgICAgICAgXCJrc19jXzU2MDEtMTk4OVwiLFxuICAgICAgICAgIFwia3NjNTYwMVwiLFxuICAgICAgICAgIFwia3NjXzU2MDFcIixcbiAgICAgICAgICBcIndpbmRvd3MtOTQ5XCJcbiAgICAgICAgXSxcbiAgICAgICAgXCJuYW1lXCI6IFwiZXVjLWtyXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBtdWx0aS1ieXRlIEtvcmVhbiBlbmNvZGluZ3NcIlxuICB9LFxuICB7XG4gICAgXCJlbmNvZGluZ3NcIjogW1xuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJjc2lzbzIwMjJrclwiLFxuICAgICAgICAgIFwiaHotZ2ItMjMxMlwiLFxuICAgICAgICAgIFwiaXNvLTIwMjItY25cIixcbiAgICAgICAgICBcImlzby0yMDIyLWNuLWV4dFwiLFxuICAgICAgICAgIFwiaXNvLTIwMjIta3JcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJyZXBsYWNlbWVudFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ1dGYtMTZiZVwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcInV0Zi0xNmJlXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgICBcInV0Zi0xNlwiLFxuICAgICAgICAgIFwidXRmLTE2bGVcIlxuICAgICAgICBdLFxuICAgICAgICBcIm5hbWVcIjogXCJ1dGYtMTZsZVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcImxhYmVsc1wiOiBbXG4gICAgICAgICAgXCJ4LXVzZXItZGVmaW5lZFwiXG4gICAgICAgIF0sXG4gICAgICAgIFwibmFtZVwiOiBcIngtdXNlci1kZWZpbmVkXCJcbiAgICAgIH1cbiAgICBdLFxuICAgIFwiaGVhZGluZ1wiOiBcIkxlZ2FjeSBtaXNjZWxsYW5lb3VzIGVuY29kaW5nc1wiXG4gIH1cbiAgXTtcblxuICAvLyBMYWJlbCB0byBlbmNvZGluZyByZWdpc3RyeS5cbiAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZyx7bmFtZTpzdHJpbmcsbGFiZWxzOkFycmF5LjxzdHJpbmc+fT59ICovXG4gIHZhciBsYWJlbF90b19lbmNvZGluZyA9IHt9O1xuICBlbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgIGNhdGVnb3J5LmVuY29kaW5ncy5mb3JFYWNoKGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICBlbmNvZGluZy5sYWJlbHMuZm9yRWFjaChmdW5jdGlvbihsYWJlbCkge1xuICAgICAgICBsYWJlbF90b19lbmNvZGluZ1tsYWJlbF0gPSBlbmNvZGluZztcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBSZWdpc3RyeSBvZiBvZiBlbmNvZGVyL2RlY29kZXIgZmFjdG9yaWVzLCBieSBlbmNvZGluZyBuYW1lLlxuICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBmdW5jdGlvbih7ZmF0YWw6Ym9vbGVhbn0pOiBFbmNvZGVyPn0gKi9cbiAgdmFyIGVuY29kZXJzID0ge307XG4gIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIGZ1bmN0aW9uKHtmYXRhbDpib29sZWFufSk6IERlY29kZXI+fSAqL1xuICB2YXIgZGVjb2RlcnMgPSB7fTtcblxuICAvL1xuICAvLyA1LiBJbmRleGVzXG4gIC8vXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb2ludGVyIFRoZSB8cG9pbnRlcnwgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHsoIUFycmF5Ljw/bnVtYmVyPnx1bmRlZmluZWQpfSBpbmRleCBUaGUgfGluZGV4fCB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBUaGUgY29kZSBwb2ludCBjb3JyZXNwb25kaW5nIHRvIHxwb2ludGVyfCBpbiB8aW5kZXh8LFxuICAgKiAgICAgb3IgbnVsbCBpZiB8Y29kZSBwb2ludHwgaXMgbm90IGluIHxpbmRleHwuXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCkge1xuICAgIGlmICghaW5kZXgpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBpbmRleFtwb2ludGVyXSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSB8Y29kZSBwb2ludHwgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHshQXJyYXkuPD9udW1iZXI+fSBpbmRleCBUaGUgfGluZGV4fCB0byBzZWFyY2ggd2l0aGluLlxuICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBUaGUgZmlyc3QgcG9pbnRlciBjb3JyZXNwb25kaW5nIHRvIHxjb2RlIHBvaW50fCBpblxuICAgKiAgICAgfGluZGV4fCwgb3IgbnVsbCBpZiB8Y29kZSBwb2ludHwgaXMgbm90IGluIHxpbmRleHwuXG4gICAqL1xuICBmdW5jdGlvbiBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgpIHtcbiAgICB2YXIgcG9pbnRlciA9IGluZGV4LmluZGV4T2YoY29kZV9wb2ludCk7XG4gICAgcmV0dXJuIHBvaW50ZXIgPT09IC0xID8gbnVsbCA6IHBvaW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgaW5kZXguXG4gICAqIEByZXR1cm4geyghQXJyYXkuPG51bWJlcj58IUFycmF5LjxBcnJheS48bnVtYmVyPj4pfVxuICAgKiAgKi9cbiAgZnVuY3Rpb24gaW5kZXgobmFtZSkge1xuICAgIGlmICghKCdlbmNvZGluZy1pbmRleGVzJyBpbiBnbG9iYWwpKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIkluZGV4ZXMgbWlzc2luZy5cIiArXG4gICAgICAgICAgICAgICAgICBcIiBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGVuY29kaW5nLWluZGV4ZXMuanM/XCIpO1xuICAgIH1cbiAgICByZXR1cm4gZ2xvYmFsWydlbmNvZGluZy1pbmRleGVzJ11bbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBvaW50ZXIgVGhlIHxwb2ludGVyfCB0byBzZWFyY2ggZm9yIGluIHRoZSBnYjE4MDMwIGluZGV4LlxuICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBUaGUgY29kZSBwb2ludCBjb3JyZXNwb25kaW5nIHRvIHxwb2ludGVyfCBpbiB8aW5kZXh8LFxuICAgKiAgICAgb3IgbnVsbCBpZiB8Y29kZSBwb2ludHwgaXMgbm90IGluIHRoZSBnYjE4MDMwIGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhHQjE4MDMwUmFuZ2VzQ29kZVBvaW50Rm9yKHBvaW50ZXIpIHtcbiAgICAvLyAxLiBJZiBwb2ludGVyIGlzIGdyZWF0ZXIgdGhhbiAzOTQxOSBhbmQgbGVzcyB0aGFuIDE4OTAwMCwgb3JcbiAgICAvLyBwb2ludGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjM3NTc1LCByZXR1cm4gbnVsbC5cbiAgICBpZiAoKHBvaW50ZXIgPiAzOTQxOSAmJiBwb2ludGVyIDwgMTg5MDAwKSB8fCAocG9pbnRlciA+IDEyMzc1NzUpKVxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAvLyAyLiBMZXQgb2Zmc2V0IGJlIHRoZSBsYXN0IHBvaW50ZXIgaW4gaW5kZXggZ2IxODAzMCByYW5nZXMgdGhhdFxuICAgIC8vIGlzIGVxdWFsIHRvIG9yIGxlc3MgdGhhbiBwb2ludGVyIGFuZCBsZXQgY29kZSBwb2ludCBvZmZzZXQgYmVcbiAgICAvLyBpdHMgY29ycmVzcG9uZGluZyBjb2RlIHBvaW50LlxuICAgIHZhciBvZmZzZXQgPSAwO1xuICAgIHZhciBjb2RlX3BvaW50X29mZnNldCA9IDA7XG4gICAgdmFyIGlkeCA9IGluZGV4KCdnYjE4MDMwJyk7XG4gICAgdmFyIGk7XG4gICAgZm9yIChpID0gMDsgaSA8IGlkeC5sZW5ndGg7ICsraSkge1xuICAgICAgLyoqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59ICovXG4gICAgICB2YXIgZW50cnkgPSBpZHhbaV07XG4gICAgICBpZiAoZW50cnlbMF0gPD0gcG9pbnRlcikge1xuICAgICAgICBvZmZzZXQgPSBlbnRyeVswXTtcbiAgICAgICAgY29kZV9wb2ludF9vZmZzZXQgPSBlbnRyeVsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDMuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludCBvZmZzZXQgK1xuICAgIC8vIHBvaW50ZXIg4oiSIG9mZnNldC5cbiAgICByZXR1cm4gY29kZV9wb2ludF9vZmZzZXQgKyBwb2ludGVyIC0gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IFRoZSB8Y29kZSBwb2ludHwgdG8gbG9jYXRlIGluIHRoZSBnYjE4MDMwIGluZGV4LlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBmaXJzdCBwb2ludGVyIGNvcnJlc3BvbmRpbmcgdG8gfGNvZGUgcG9pbnR8IGluIHRoZVxuICAgKiAgICAgZ2IxODAzMCBpbmRleC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4R0IxODAzMFJhbmdlc1BvaW50ZXJGb3IoY29kZV9wb2ludCkge1xuICAgIC8vIDEuIExldCBvZmZzZXQgYmUgdGhlIGxhc3QgY29kZSBwb2ludCBpbiBpbmRleCBnYjE4MDMwIHJhbmdlc1xuICAgIC8vIHRoYXQgaXMgZXF1YWwgdG8gb3IgbGVzcyB0aGFuIGNvZGUgcG9pbnQgYW5kIGxldCBwb2ludGVyIG9mZnNldFxuICAgIC8vIGJlIGl0cyBjb3JyZXNwb25kaW5nIHBvaW50ZXIuXG4gICAgdmFyIG9mZnNldCA9IDA7XG4gICAgdmFyIHBvaW50ZXJfb2Zmc2V0ID0gMDtcbiAgICB2YXIgaWR4ID0gaW5kZXgoJ2diMTgwMzAnKTtcbiAgICB2YXIgaTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaWR4Lmxlbmd0aDsgKytpKSB7XG4gICAgICAvKiogQHR5cGUgeyFBcnJheS48bnVtYmVyPn0gKi9cbiAgICAgIHZhciBlbnRyeSA9IGlkeFtpXTtcbiAgICAgIGlmIChlbnRyeVsxXSA8PSBjb2RlX3BvaW50KSB7XG4gICAgICAgIG9mZnNldCA9IGVudHJ5WzFdO1xuICAgICAgICBwb2ludGVyX29mZnNldCA9IGVudHJ5WzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMi4gUmV0dXJuIGEgcG9pbnRlciB3aG9zZSB2YWx1ZSBpcyBwb2ludGVyIG9mZnNldCArIGNvZGUgcG9pbnRcbiAgICAvLyDiiJIgb2Zmc2V0LlxuICAgIHJldHVybiBwb2ludGVyX29mZnNldCArIGNvZGVfcG9pbnQgLSBvZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlX3BvaW50fCB0byBzZWFyY2ggZm9yIGluIHRoZSBzaGlmdF9qaXMgaW5kZXguXG4gICAqIEByZXR1cm4gez9udW1iZXJ9IFRoZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gfHBvaW50ZXJ8IGluIHxpbmRleHwsXG4gICAqICAgICBvciBudWxsIGlmIHxjb2RlIHBvaW50fCBpcyBub3QgaW4gdGhlIHNoaWZ0X2ppcyBpbmRleC5cbiAgICovXG4gIGZ1bmN0aW9uIGluZGV4U2hpZnRKSVNQb2ludGVyRm9yKGNvZGVfcG9pbnQpIHtcbiAgICAvLyAxLiBMZXQgaW5kZXggYmUgaW5kZXggamlzMDIwOCBleGNsdWRpbmcgYWxsIHBvaW50ZXJzIGluIHRoZVxuICAgIC8vIHJhbmdlIDgyNzIgdG8gODgzNS5cbiAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnamlzMDIwOCcpKTtcbiAgICBpZiAocG9pbnRlciA9PT0gbnVsbCB8fCBpblJhbmdlKHBvaW50ZXIsIDgyNzIsIDg4MzUpKVxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAvLyAyLiBSZXR1cm4gdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXguXG4gICAgcmV0dXJuIHBvaW50ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgVGhlIHxjb2RlX3BvaW50fCB0byBzZWFyY2ggZm9yIGluIHRoZSBiaWc1IGluZGV4LlxuICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBUaGUgY29kZSBwb2ludCBjb3JyZXNwb25kaW5nIHRvIHxwb2ludGVyfCBpbiB8aW5kZXh8LFxuICAgKiAgICAgb3IgbnVsbCBpZiB8Y29kZSBwb2ludHwgaXMgbm90IGluIHRoZSBiaWc1IGluZGV4LlxuICAgKi9cbiAgZnVuY3Rpb24gaW5kZXhCaWc1UG9pbnRlckZvcihjb2RlX3BvaW50KSB7XG5cbiAgICAvLyAxLiBMZXQgaW5kZXggYmUgaW5kZXggYmlnNS5cbiAgICB2YXIgaW5kZXhfID0gaW5kZXgoJ2JpZzUnKTtcblxuICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgVSsyNTUwLCBVKzI1NUUsIFUrMjU2MSwgVSsyNTZBLCBVKzUzNDEsIG9yXG4gICAgLy8gVSs1MzQ1LCByZXR1cm4gdGhlIGxhc3QgcG9pbnRlciBjb3JyZXNwb25kaW5nIHRvIGNvZGUgcG9pbnQgaW5cbiAgICAvLyBpbmRleC5cbiAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyNTUwIHx8IGNvZGVfcG9pbnQgPT09IDB4MjU1RSB8fFxuICAgICAgICBjb2RlX3BvaW50ID09PSAweDI1NjEgfHwgY29kZV9wb2ludCA9PT0gMHgyNTZBIHx8XG4gICAgICAgIGNvZGVfcG9pbnQgPT09IDB4NTM0MSB8fCBjb2RlX3BvaW50ID09PSAweDUzNDUpIHtcbiAgICAgIHJldHVybiBpbmRleC5sYXN0SW5kZXhPZihjb2RlX3BvaW50KTtcbiAgICB9XG5cbiAgICAvLyAzLiBSZXR1cm4gdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXguXG4gICAgcmV0dXJuIGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleF8pO1xuICB9XG5cbiAgLy9cbiAgLy8gNy4gQVBJXG4gIC8vXG5cbiAgLyoqIEBjb25zdCAqLyB2YXIgREVGQVVMVF9FTkNPRElORyA9ICd1dGYtOCc7XG5cbiAgLy8gNy4xIEludGVyZmFjZSBUZXh0RGVjb2RlclxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmc9fSBlbmNvZGluZyBUaGUgbGFiZWwgb2YgdGhlIGVuY29kaW5nO1xuICAgKiAgICAgZGVmYXVsdHMgdG8gJ3V0Zi04Jy5cbiAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBUZXh0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUZXh0RGVjb2RlcikpIHtcbiAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBlbmNvZGluZyA9IGVuY29kaW5nICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoZW5jb2RpbmcpIDogREVGQVVMVF9FTkNPRElORztcbiAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuX2VuY29kaW5nID0gZ2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICAgIGlmICh0aGlzLl9lbmNvZGluZyA9PT0gbnVsbCB8fCB0aGlzLl9lbmNvZGluZy5uYW1lID09PSAncmVwbGFjZW1lbnQnKVxuICAgICAgdGhyb3cgUmFuZ2VFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcblxuICAgIGlmICghZGVjb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0pIHtcbiAgICAgIHRocm93IEVycm9yKCdEZWNvZGVyIG5vdCBwcmVzZW50LicgK1xuICAgICAgICAgICAgICAgICAgJyBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGVuY29kaW5nLWluZGV4ZXMuanM/Jyk7XG4gICAgfVxuXG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX3N0cmVhbWluZyA9IGZhbHNlO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9CT01zZWVuID0gZmFsc2U7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHs/RGVjb2Rlcn0gKi9cbiAgICB0aGlzLl9kZWNvZGVyID0gbnVsbDtcbiAgICAvKiogQHByaXZhdGUgQHR5cGUge2Jvb2xlYW59ICovXG4gICAgdGhpcy5fZmF0YWwgPSBCb29sZWFuKG9wdGlvbnNbJ2ZhdGFsJ10pO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgICB0aGlzLl9pZ25vcmVCT00gPSBCb29sZWFuKG9wdGlvbnNbJ2lnbm9yZUJPTSddKTtcblxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZW5jb2RpbmcnLCB7dmFsdWU6IHRoaXMuX2VuY29kaW5nLm5hbWV9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZmF0YWwnLCB7dmFsdWU6IHRoaXMuX2ZhdGFsfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2lnbm9yZUJPTScsIHt2YWx1ZTogdGhpcy5faWdub3JlQk9NfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5jb2RpbmcgPSB0aGlzLl9lbmNvZGluZy5uYW1lO1xuICAgICAgdGhpcy5mYXRhbCA9IHRoaXMuX2ZhdGFsO1xuICAgICAgdGhpcy5pZ25vcmVCT00gPSB0aGlzLl9pZ25vcmVCT007XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBUZXh0RGVjb2Rlci5wcm90b3R5cGUgPSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlclZpZXc9fSBpbnB1dCBUaGUgYnVmZmVyIG9mIGJ5dGVzIHRvIGRlY29kZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBkZWNvZGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZShpbnB1dCwgb3B0aW9ucykge1xuICAgICAgdmFyIGJ5dGVzO1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiYgaW5wdXQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KGlucHV0KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiAnYnVmZmVyJyBpbiBpbnB1dCAmJlxuICAgICAgICAgICAgICAgICBpbnB1dC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgICAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KGlucHV0LmJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmJ5dGVMZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheSgwKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucyA9IFRvRGljdGlvbmFyeShvcHRpb25zKTtcblxuICAgICAgaWYgKCF0aGlzLl9zdHJlYW1pbmcpIHtcbiAgICAgICAgdGhpcy5fZGVjb2RlciA9IGRlY29kZXJzW3RoaXMuX2VuY29kaW5nLm5hbWVdKHtmYXRhbDogdGhpcy5fZmF0YWx9KTtcbiAgICAgICAgdGhpcy5fQk9Nc2VlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5fc3RyZWFtaW5nID0gQm9vbGVhbihvcHRpb25zWydzdHJlYW0nXSk7XG5cbiAgICAgIHZhciBpbnB1dF9zdHJlYW0gPSBuZXcgU3RyZWFtKGJ5dGVzKTtcblxuICAgICAgdmFyIGNvZGVfcG9pbnRzID0gW107XG5cbiAgICAgIC8qKiBAdHlwZSB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gKi9cbiAgICAgIHZhciByZXN1bHQ7XG5cbiAgICAgIHdoaWxlICghaW5wdXRfc3RyZWFtLmVuZE9mU3RyZWFtKCkpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZpbmlzaGVkKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKVxuICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2guYXBwbHkoY29kZV9wb2ludHMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX3BvaW50cy5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZykge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2Rlci5oYW5kbGVyKGlucHV0X3N0cmVhbSwgaW5wdXRfc3RyZWFtLnJlYWQoKSk7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gZmluaXNoZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICAgIGNvZGVfcG9pbnRzLnB1c2guYXBwbHkoY29kZV9wb2ludHMsIC8qKkB0eXBlIHshQXJyYXkuPG51bWJlcj59Ki8ocmVzdWx0KSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29kZV9wb2ludHMucHVzaChyZXN1bHQpO1xuICAgICAgICB9IHdoaWxlICghaW5wdXRfc3RyZWFtLmVuZE9mU3RyZWFtKCkpO1xuICAgICAgICB0aGlzLl9kZWNvZGVyID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvZGVfcG9pbnRzLmxlbmd0aCkge1xuICAgICAgICAvLyBJZiBlbmNvZGluZyBpcyBvbmUgb2YgdXRmLTgsIHV0Zi0xNmJlLCBhbmQgdXRmLTE2bGUsIGFuZFxuICAgICAgICAvLyBpZ25vcmUgQk9NIGZsYWcgYW5kIEJPTSBzZWVuIGZsYWcgYXJlIHVuc2V0LCBydW4gdGhlc2VcbiAgICAgICAgLy8gc3Vic3Vic3RlcHM6XG4gICAgICAgIGlmIChbJ3V0Zi04JywgJ3V0Zi0xNmxlJywgJ3V0Zi0xNmJlJ10uaW5kZXhPZih0aGlzLmVuY29kaW5nKSAhPT0gLTEgJiZcbiAgICAgICAgICAgICF0aGlzLl9pZ25vcmVCT00gJiYgIXRoaXMuX0JPTXNlZW4pIHtcbiAgICAgICAgICAvLyBJZiB0b2tlbiBpcyBVK0ZFRkYsIHNldCBCT00gc2VlbiBmbGFnLlxuICAgICAgICAgIGlmIChjb2RlX3BvaW50c1swXSA9PT0gMHhGRUZGKSB7XG4gICAgICAgICAgICB0aGlzLl9CT01zZWVuID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvZGVfcG9pbnRzLnNoaWZ0KCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdG9rZW4gaXMgbm90IGVuZC1vZi1zdHJlYW0sIHNldCBCT00gc2VlblxuICAgICAgICAgICAgLy8gZmxhZyBhbmQgYXBwZW5kIHRva2VuIHRvIG91dHB1dC5cbiAgICAgICAgICAgIHRoaXMuX0JPTXNlZW4gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29kZVBvaW50c1RvU3RyaW5nKGNvZGVfcG9pbnRzKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gNy4yIEludGVyZmFjZSBUZXh0RW5jb2RlclxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmc9fSBlbmNvZGluZyBUaGUgbGFiZWwgb2YgdGhlIGVuY29kaW5nO1xuICAgKiAgICAgZGVmYXVsdHMgdG8gJ3V0Zi04Jy5cbiAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBUZXh0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUZXh0RW5jb2RlcikpXG4gICAgICByZXR1cm4gbmV3IFRleHRFbmNvZGVyKGVuY29kaW5nLCBvcHRpb25zKTtcbiAgICBlbmNvZGluZyA9IGVuY29kaW5nICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoZW5jb2RpbmcpIDogREVGQVVMVF9FTkNPRElORztcbiAgICBvcHRpb25zID0gVG9EaWN0aW9uYXJ5KG9wdGlvbnMpO1xuICAgIC8qKiBAcHJpdmF0ZSAqL1xuICAgIHRoaXMuX2VuY29kaW5nID0gZ2V0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICAgIGlmICh0aGlzLl9lbmNvZGluZyA9PT0gbnVsbCB8fCB0aGlzLl9lbmNvZGluZy5uYW1lID09PSAncmVwbGFjZW1lbnQnKVxuICAgICAgdGhyb3cgUmFuZ2VFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcblxuICAgIHZhciBhbGxvd0xlZ2FjeUVuY29kaW5nID1cbiAgICAgICAgICBCb29sZWFuKG9wdGlvbnNbJ05PTlNUQU5EQVJEX2FsbG93TGVnYWN5RW5jb2RpbmcnXSk7XG4gICAgdmFyIGlzTGVnYWN5RW5jb2RpbmcgPSAodGhpcy5fZW5jb2RpbmcubmFtZSAhPT0gJ3V0Zi04JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuY29kaW5nLm5hbWUgIT09ICd1dGYtMTZsZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbmNvZGluZy5uYW1lICE9PSAndXRmLTE2YmUnKTtcbiAgICBpZiAodGhpcy5fZW5jb2RpbmcgPT09IG51bGwgfHwgKGlzTGVnYWN5RW5jb2RpbmcgJiYgIWFsbG93TGVnYWN5RW5jb2RpbmcpKVxuICAgICAgdGhyb3cgUmFuZ2VFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcblxuICAgIGlmICghZW5jb2RlcnNbdGhpcy5fZW5jb2RpbmcubmFtZV0pIHtcbiAgICAgIHRocm93IEVycm9yKCdFbmNvZGVyIG5vdCBwcmVzZW50LicgK1xuICAgICAgICAgICAgICAgICAgJyBEaWQgeW91IGZvcmdldCB0byBpbmNsdWRlIGVuY29kaW5nLWluZGV4ZXMuanM/Jyk7XG4gICAgfVxuXG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHtib29sZWFufSAqL1xuICAgIHRoaXMuX3N0cmVhbWluZyA9IGZhbHNlO1xuICAgIC8qKiBAcHJpdmF0ZSBAdHlwZSB7P0VuY29kZXJ9ICovXG4gICAgdGhpcy5fZW5jb2RlciA9IG51bGw7XG4gICAgLyoqIEBwcml2YXRlIEB0eXBlIHt7ZmF0YWw6IGJvb2xlYW59fSAqL1xuICAgIHRoaXMuX29wdGlvbnMgPSB7ZmF0YWw6IEJvb2xlYW4ob3B0aW9uc1snZmF0YWwnXSl9O1xuXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSlcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZW5jb2RpbmcnLCB7dmFsdWU6IHRoaXMuX2VuY29kaW5nLm5hbWV9KTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmVuY29kaW5nID0gdGhpcy5fZW5jb2RpbmcubmFtZTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgVGV4dEVuY29kZXIucHJvdG90eXBlID0ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gb3B0X3N0cmluZyBUaGUgc3RyaW5nIHRvIGVuY29kZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnNcbiAgICAgKiBAcmV0dXJuIHtVaW50OEFycmF5fSBFbmNvZGVkIGJ5dGVzLCBhcyBhIFVpbnQ4QXJyYXkuXG4gICAgICovXG4gICAgZW5jb2RlOiBmdW5jdGlvbiBlbmNvZGUob3B0X3N0cmluZywgb3B0aW9ucykge1xuICAgICAgb3B0X3N0cmluZyA9IG9wdF9zdHJpbmcgPyBTdHJpbmcob3B0X3N0cmluZykgOiAnJztcbiAgICAgIG9wdGlvbnMgPSBUb0RpY3Rpb25hcnkob3B0aW9ucyk7XG5cbiAgICAgIC8vIE5PVEU6IFRoaXMgb3B0aW9uIGlzIG5vbnN0YW5kYXJkLiBOb25lIG9mIHRoZSBlbmNvZGluZ3NcbiAgICAgIC8vIHBlcm1pdHRlZCBmb3IgZW5jb2RpbmcgKGkuZS4gVVRGLTgsIFVURi0xNikgYXJlIHN0YXRlZnVsLFxuICAgICAgLy8gc28gc3RyZWFtaW5nIGlzIG5vdCBuZWNlc3NhcnkuXG4gICAgICBpZiAoIXRoaXMuX3N0cmVhbWluZylcbiAgICAgICAgdGhpcy5fZW5jb2RlciA9IGVuY29kZXJzW3RoaXMuX2VuY29kaW5nLm5hbWVdKHRoaXMuX29wdGlvbnMpO1xuICAgICAgdGhpcy5fc3RyZWFtaW5nID0gQm9vbGVhbihvcHRpb25zWydzdHJlYW0nXSk7XG5cbiAgICAgIHZhciBieXRlcyA9IFtdO1xuICAgICAgdmFyIGlucHV0X3N0cmVhbSA9IG5ldyBTdHJlYW0oc3RyaW5nVG9Db2RlUG9pbnRzKG9wdF9zdHJpbmcpKTtcbiAgICAgIC8qKiBAdHlwZSB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gKi9cbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICB3aGlsZSAoIWlucHV0X3N0cmVhbS5lbmRPZlN0cmVhbSgpKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZXIuaGFuZGxlcihpbnB1dF9zdHJlYW0sIGlucHV0X3N0cmVhbS5yZWFkKCkpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSlcbiAgICAgICAgICBieXRlcy5wdXNoLmFwcGx5KGJ5dGVzLCAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHJlc3VsdCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgYnl0ZXMucHVzaChyZXN1bHQpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zdHJlYW1pbmcpIHtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVyLmhhbmRsZXIoaW5wdXRfc3RyZWFtLCBpbnB1dF9zdHJlYW0ucmVhZCgpKTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBmaW5pc2hlZClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpXG4gICAgICAgICAgICBieXRlcy5wdXNoLmFwcGx5KGJ5dGVzLCAvKipAdHlwZSB7IUFycmF5LjxudW1iZXI+fSovKHJlc3VsdCkpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJ5dGVzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbmNvZGVyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShieXRlcyk7XG4gICAgfVxuICB9O1xuXG5cbiAgLy9cbiAgLy8gOC4gVGhlIGVuY29kaW5nXG4gIC8vXG5cbiAgLy8gOC4xIHV0Zi04XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBVVEY4RGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcblxuICAgIC8vIHV0Zi04J3MgZGVjb2RlcidzIGhhcyBhbiBhc3NvY2lhdGVkIHV0Zi04IGNvZGUgcG9pbnQsIHV0Zi04XG4gICAgLy8gYnl0ZXMgc2VlbiwgYW5kIHV0Zi04IGJ5dGVzIG5lZWRlZCAoYWxsIGluaXRpYWxseSAwKSwgYSB1dGYtOFxuICAgIC8vIGxvd2VyIGJvdW5kYXJ5IChpbml0aWFsbHkgMHg4MCksIGFuZCBhIHV0Zi04IHVwcGVyIGJvdW5kYXJ5XG4gICAgLy8gKGluaXRpYWxseSAweEJGKS5cbiAgICB2YXIgLyoqIEB0eXBlIHtudW1iZXJ9ICovIHV0ZjhfY29kZV9wb2ludCA9IDAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X2J5dGVzX3NlZW4gPSAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9ieXRlc19uZWVkZWQgPSAwLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gdXRmOF9sb3dlcl9ib3VuZGFyeSA9IDB4ODAsXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyB1dGY4X3VwcGVyX2JvdW5kYXJ5ID0gMHhCRjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCB1dGYtOCBieXRlcyBuZWVkZWQgaXMgbm90IDAsXG4gICAgICAvLyBzZXQgdXRmLTggYnl0ZXMgbmVlZGVkIHRvIDAgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHV0ZjhfYnl0ZXNfbmVlZGVkICE9PSAwKSB7XG4gICAgICAgIHV0ZjhfYnl0ZXNfbmVlZGVkID0gMDtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgdXRmLTggYnl0ZXMgbmVlZGVkIGlzIDAsIGJhc2VkIG9uIGJ5dGU6XG4gICAgICBpZiAodXRmOF9ieXRlc19uZWVkZWQgPT09IDApIHtcblxuICAgICAgICAvLyAweDAwIHRvIDB4N0ZcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpIHtcbiAgICAgICAgICAvLyBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICAgICAgcmV0dXJuIGJpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweEMyIHRvIDB4REZcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHhDMiwgMHhERikpIHtcbiAgICAgICAgICAvLyBTZXQgdXRmLTggYnl0ZXMgbmVlZGVkIHRvIDEgYW5kIHV0Zi04IGNvZGUgcG9pbnQgdG8gYnl0ZVxuICAgICAgICAgIC8vIOKIkiAweEMwLlxuICAgICAgICAgIHV0ZjhfYnl0ZXNfbmVlZGVkID0gMTtcbiAgICAgICAgICB1dGY4X2NvZGVfcG9pbnQgPSBiaXRlIC0gMHhDMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4RTAgdG8gMHhFRlxuICAgICAgICBlbHNlIGlmIChpblJhbmdlKGJpdGUsIDB4RTAsIDB4RUYpKSB7XG4gICAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyAweEUwLCBzZXQgdXRmLTggbG93ZXIgYm91bmRhcnkgdG8gMHhBMC5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhFMClcbiAgICAgICAgICAgIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweEEwO1xuICAgICAgICAgIC8vIDIuIElmIGJ5dGUgaXMgMHhFRCwgc2V0IHV0Zi04IHVwcGVyIGJvdW5kYXJ5IHRvIDB4OUYuXG4gICAgICAgICAgaWYgKGJpdGUgPT09IDB4RUQpXG4gICAgICAgICAgICB1dGY4X3VwcGVyX2JvdW5kYXJ5ID0gMHg5RjtcbiAgICAgICAgICAvLyAzLiBTZXQgdXRmLTggYnl0ZXMgbmVlZGVkIHRvIDIgYW5kIHV0Zi04IGNvZGUgcG9pbnQgdG9cbiAgICAgICAgICAvLyBieXRlIOKIkiAweEUwLlxuICAgICAgICAgIHV0ZjhfYnl0ZXNfbmVlZGVkID0gMjtcbiAgICAgICAgICB1dGY4X2NvZGVfcG9pbnQgPSBiaXRlIC0gMHhFMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4RjAgdG8gMHhGNFxuICAgICAgICBlbHNlIGlmIChpblJhbmdlKGJpdGUsIDB4RjAsIDB4RjQpKSB7XG4gICAgICAgICAgLy8gMS4gSWYgYnl0ZSBpcyAweEYwLCBzZXQgdXRmLTggbG93ZXIgYm91bmRhcnkgdG8gMHg5MC5cbiAgICAgICAgICBpZiAoYml0ZSA9PT0gMHhGMClcbiAgICAgICAgICAgIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDkwO1xuICAgICAgICAgIC8vIDIuIElmIGJ5dGUgaXMgMHhGNCwgc2V0IHV0Zi04IHVwcGVyIGJvdW5kYXJ5IHRvIDB4OEYuXG4gICAgICAgICAgaWYgKGJpdGUgPT09IDB4RjQpXG4gICAgICAgICAgICB1dGY4X3VwcGVyX2JvdW5kYXJ5ID0gMHg4RjtcbiAgICAgICAgICAvLyAzLiBTZXQgdXRmLTggYnl0ZXMgbmVlZGVkIHRvIDMgYW5kIHV0Zi04IGNvZGUgcG9pbnQgdG9cbiAgICAgICAgICAvLyBieXRlIOKIkiAweEYwLlxuICAgICAgICAgIHV0ZjhfYnl0ZXNfbmVlZGVkID0gMztcbiAgICAgICAgICB1dGY4X2NvZGVfcG9pbnQgPSBiaXRlIC0gMHhGMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBSZXR1cm4gZXJyb3IuXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVuIChieXRlIGlzIGluIHRoZSByYW5nZSAweEMyIHRvIDB4RjQpIHNldCB1dGYtOCBjb2RlXG4gICAgICAgIC8vIHBvaW50IHRvIHV0Zi04IGNvZGUgcG9pbnQgPDwgKDYgw5cgdXRmLTggYnl0ZXMgbmVlZGVkKSBhbmRcbiAgICAgICAgLy8gcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgICB1dGY4X2NvZGVfcG9pbnQgPSB1dGY4X2NvZGVfcG9pbnQgPDwgKDYgKiB1dGY4X2J5dGVzX25lZWRlZCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBieXRlIGlzIG5vdCBpbiB0aGUgcmFuZ2UgdXRmLTggbG93ZXIgYm91bmRhcnkgdG8gdXRmLThcbiAgICAgIC8vIHVwcGVyIGJvdW5kYXJ5LCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoIWluUmFuZ2UoYml0ZSwgdXRmOF9sb3dlcl9ib3VuZGFyeSwgdXRmOF91cHBlcl9ib3VuZGFyeSkpIHtcblxuICAgICAgICAvLyAxLiBTZXQgdXRmLTggY29kZSBwb2ludCwgdXRmLTggYnl0ZXMgbmVlZGVkLCBhbmQgdXRmLThcbiAgICAgICAgLy8gYnl0ZXMgc2VlbiB0byAwLCBzZXQgdXRmLTggbG93ZXIgYm91bmRhcnkgdG8gMHg4MCwgYW5kIHNldFxuICAgICAgICAvLyB1dGYtOCB1cHBlciBib3VuZGFyeSB0byAweEJGLlxuICAgICAgICB1dGY4X2NvZGVfcG9pbnQgPSB1dGY4X2J5dGVzX25lZWRlZCA9IHV0ZjhfYnl0ZXNfc2VlbiA9IDA7XG4gICAgICAgIHV0ZjhfbG93ZXJfYm91bmRhcnkgPSAweDgwO1xuICAgICAgICB1dGY4X3VwcGVyX2JvdW5kYXJ5ID0gMHhCRjtcblxuICAgICAgICAvLyAyLiBQcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyAzLiBSZXR1cm4gZXJyb3IuXG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBTZXQgdXRmLTggbG93ZXIgYm91bmRhcnkgdG8gMHg4MCBhbmQgdXRmLTggdXBwZXIgYm91bmRhcnlcbiAgICAgIC8vIHRvIDB4QkYuXG4gICAgICB1dGY4X2xvd2VyX2JvdW5kYXJ5ID0gMHg4MDtcbiAgICAgIHV0ZjhfdXBwZXJfYm91bmRhcnkgPSAweEJGO1xuXG4gICAgICAvLyA2LiBJbmNyZWFzZSB1dGYtOCBieXRlcyBzZWVuIGJ5IG9uZSBhbmQgc2V0IHV0Zi04IGNvZGUgcG9pbnRcbiAgICAgIC8vIHRvIHV0Zi04IGNvZGUgcG9pbnQgKyAoYnl0ZSDiiJIgMHg4MCkgPDwgKDYgw5cgKHV0Zi04IGJ5dGVzXG4gICAgICAvLyBuZWVkZWQg4oiSIHV0Zi04IGJ5dGVzIHNlZW4pKS5cbiAgICAgIHV0ZjhfYnl0ZXNfc2VlbiArPSAxO1xuICAgICAgdXRmOF9jb2RlX3BvaW50ICs9IChiaXRlIC0gMHg4MCkgPDwgKDYgKiAodXRmOF9ieXRlc19uZWVkZWQgLSB1dGY4X2J5dGVzX3NlZW4pKTtcblxuICAgICAgLy8gNy4gSWYgdXRmLTggYnl0ZXMgc2VlbiBpcyBub3QgZXF1YWwgdG8gdXRmLTggYnl0ZXMgbmVlZGVkLFxuICAgICAgLy8gY29udGludWUuXG4gICAgICBpZiAodXRmOF9ieXRlc19zZWVuICE9PSB1dGY4X2J5dGVzX25lZWRlZClcbiAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIDguIExldCBjb2RlIHBvaW50IGJlIHV0Zi04IGNvZGUgcG9pbnQuXG4gICAgICB2YXIgY29kZV9wb2ludCA9IHV0ZjhfY29kZV9wb2ludDtcblxuICAgICAgLy8gOS4gU2V0IHV0Zi04IGNvZGUgcG9pbnQsIHV0Zi04IGJ5dGVzIG5lZWRlZCwgYW5kIHV0Zi04IGJ5dGVzXG4gICAgICAvLyBzZWVuIHRvIDAuXG4gICAgICB1dGY4X2NvZGVfcG9pbnQgPSB1dGY4X2J5dGVzX25lZWRlZCA9IHV0ZjhfYnl0ZXNfc2VlbiA9IDA7XG5cbiAgICAgIC8vIDEwLiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBVVEY4RW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3ZikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBTZXQgY291bnQgYW5kIG9mZnNldCBiYXNlZCBvbiB0aGUgcmFuZ2UgY29kZSBwb2ludCBpcyBpbjpcbiAgICAgIHZhciBjb3VudCwgb2Zmc2V0O1xuICAgICAgLy8gVSswMDgwIHRvIFUrMDdGRjogICAgMSBhbmQgMHhDMFxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDgwLCAweDA3RkYpKSB7XG4gICAgICAgIGNvdW50ID0gMTtcbiAgICAgICAgb2Zmc2V0ID0gMHhDMDtcbiAgICAgIH1cbiAgICAgIC8vIFUrMDgwMCB0byBVK0ZGRkY6ICAgIDIgYW5kIDB4RTBcbiAgICAgIGVsc2UgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwODAwLCAweEZGRkYpKSB7XG4gICAgICAgIGNvdW50ID0gMjtcbiAgICAgICAgb2Zmc2V0ID0gMHhFMDtcbiAgICAgIH1cbiAgICAgIC8vIFUrMTAwMDAgdG8gVSsxMEZGRkY6IDMgYW5kIDB4RjBcbiAgICAgIGVsc2UgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgxMDAwMCwgMHgxMEZGRkYpKSB7XG4gICAgICAgIGNvdW50ID0gMztcbiAgICAgICAgb2Zmc2V0ID0gMHhGMDtcbiAgICAgIH1cblxuICAgICAgLy8gNC5MZXQgYnl0ZXMgYmUgYSBieXRlIHNlcXVlbmNlIHdob3NlIGZpcnN0IGJ5dGUgaXMgKGNvZGVcbiAgICAgIC8vIHBvaW50ID4+ICg2IMOXIGNvdW50KSkgKyBvZmZzZXQuXG4gICAgICB2YXIgYnl0ZXMgPSBbKGNvZGVfcG9pbnQgPj4gKDYgKiBjb3VudCkpICsgb2Zmc2V0XTtcblxuICAgICAgLy8gNS4gUnVuIHRoZXNlIHN1YnN0ZXBzIHdoaWxlIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwOlxuICAgICAgd2hpbGUgKGNvdW50ID4gMCkge1xuXG4gICAgICAgIC8vIDEuIFNldCB0ZW1wIHRvIGNvZGUgcG9pbnQgPj4gKDYgw5cgKGNvdW50IOKIkiAxKSkuXG4gICAgICAgIHZhciB0ZW1wID0gY29kZV9wb2ludCA+PiAoNiAqIChjb3VudCAtIDEpKTtcblxuICAgICAgICAvLyAyLiBBcHBlbmQgdG8gYnl0ZXMgMHg4MCB8ICh0ZW1wICYgMHgzRikuXG4gICAgICAgIGJ5dGVzLnB1c2goMHg4MCB8ICh0ZW1wICYgMHgzRikpO1xuXG4gICAgICAgIC8vIDMuIERlY3JlYXNlIGNvdW50IGJ5IG9uZS5cbiAgICAgICAgY291bnQgLT0gMTtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gUmV0dXJuIGJ5dGVzIGJ5dGVzLCBpbiBvcmRlci5cbiAgICAgIHJldHVybiBieXRlcztcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1sndXRmLTgnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjhFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd1dGYtOCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGOERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy9cbiAgLy8gOS4gTGVnYWN5IHNpbmdsZS1ieXRlIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDkuMSBzaW5nbGUtYnl0ZSBkZWNvZGVyXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7IUFycmF5LjxudW1iZXI+fSBpbmRleCBUaGUgZW5jb2RpbmcgaW5kZXguXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2luZ2xlQnl0ZURlY29kZXIoaW5kZXgsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4N0YsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDMuIExldCBjb2RlIHBvaW50IGJlIHRoZSBpbmRleCBjb2RlIHBvaW50IGZvciBieXRlIOKIkiAweDgwIGluXG4gICAgICAvLyBpbmRleCBzaW5nbGUtYnl0ZS5cbiAgICAgIHZhciBjb2RlX3BvaW50ID0gaW5kZXhbYml0ZSAtIDB4ODBdO1xuXG4gICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgLy8gNS4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgfTtcbiAgfVxuXG4gIC8vIDkuMiBzaW5nbGUtYnl0ZSBlbmNvZGVyXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7IUFycmF5Ljw/bnVtYmVyPn0gaW5kZXggVGhlIGVuY29kaW5nIGluZGV4LlxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFNpbmdsZUJ5dGVFbmNvZGVyKGluZGV4LCBvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA3RikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gc2luZ2xlLWJ5dGUuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCk7XG5cbiAgICAgIC8vIDQuIElmIHBvaW50ZXIgaXMgbnVsbCwgcmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIGlmIChwb2ludGVyID09PSBudWxsKVxuICAgICAgICBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDUuIFJldHVybiBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgcG9pbnRlciArIDB4ODAuXG4gICAgICByZXR1cm4gcG9pbnRlciArIDB4ODA7XG4gICAgfTtcbiAgfVxuXG4gIChmdW5jdGlvbigpIHtcbiAgICBpZiAoISgnZW5jb2RpbmctaW5kZXhlcycgaW4gZ2xvYmFsKSlcbiAgICAgIHJldHVybjtcbiAgICBlbmNvZGluZ3MuZm9yRWFjaChmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgICAgaWYgKGNhdGVnb3J5LmhlYWRpbmcgIT09ICdMZWdhY3kgc2luZ2xlLWJ5dGUgZW5jb2RpbmdzJylcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2F0ZWdvcnkuZW5jb2RpbmdzLmZvckVhY2goZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBlbmNvZGluZy5uYW1lO1xuICAgICAgICB2YXIgaWR4ID0gaW5kZXgobmFtZSk7XG4gICAgICAgIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgICAgICAgZGVjb2RlcnNbbmFtZV0gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVCeXRlRGVjb2RlcihpZHgsIG9wdGlvbnMpO1xuICAgICAgICB9O1xuICAgICAgICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gICAgICAgIGVuY29kZXJzW25hbWVdID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlQnl0ZUVuY29kZXIoaWR4LCBvcHRpb25zKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KCkpO1xuXG4gIC8vXG4gIC8vIDEwLiBMZWdhY3kgbXVsdGktYnl0ZSBDaGluZXNlIChzaW1wbGlmaWVkKSBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMC4xIGdia1xuXG4gIC8vIDEwLjEuMSBnYmsgZGVjb2RlclxuICAvLyBnYmsncyBkZWNvZGVyIGlzIGdiMTgwMzAncyBkZWNvZGVyLlxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydnYmsnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEdCMTgwMzBEZWNvZGVyKG9wdGlvbnMpO1xuICB9O1xuXG4gIC8vIDEwLjEuMiBnYmsgZW5jb2RlclxuICAvLyBnYmsncyBlbmNvZGVyIGlzIGdiMTgwMzAncyBlbmNvZGVyIHdpdGggaXRzIGdiayBmbGFnIHNldC5cbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBlbmNvZGVyc1snZ2JrJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRW5jb2RlcihvcHRpb25zLCB0cnVlKTtcbiAgfTtcblxuICAvLyAxMC4yIGdiMTgwMzBcblxuICAvLyAxMC4yLjEgZ2IxODAzMCBkZWNvZGVyXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gR0IxODAzMERlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gZ2IxODAzMCdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZ2IxODAzMCBmaXJzdCwgZ2IxODAzMFxuICAgIC8vIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgKGFsbCBpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBnYjE4MDMwX2ZpcnN0ID0gMHgwMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGdiMTgwMzBfc2Vjb25kID0gMHgwMCxcbiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovIGdiMTgwMzBfdGhpcmQgPSAweDAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBnYjE4MDMwIGZpcnN0LCBnYjE4MDMwXG4gICAgICAvLyBzZWNvbmQsIGFuZCBnYjE4MDMwIHRoaXJkIGFyZSAweDAwLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBnYjE4MDMwX2ZpcnN0ID09PSAweDAwICYmXG4gICAgICAgICAgZ2IxODAzMF9zZWNvbmQgPT09IDB4MDAgJiYgZ2IxODAzMF90aGlyZCA9PT0gMHgwMCkge1xuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICB9XG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0sIGFuZCBnYjE4MDMwIGZpcnN0LCBnYjE4MDMwXG4gICAgICAvLyBzZWNvbmQsIG9yIGdiMTgwMzAgdGhpcmQgaXMgbm90IDB4MDAsIHNldCBnYjE4MDMwIGZpcnN0LFxuICAgICAgLy8gZ2IxODAzMCBzZWNvbmQsIGFuZCBnYjE4MDMwIHRoaXJkIHRvIDB4MDAsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJlxuICAgICAgICAgIChnYjE4MDMwX2ZpcnN0ICE9PSAweDAwIHx8IGdiMTgwMzBfc2Vjb25kICE9PSAweDAwIHx8IGdiMTgwMzBfdGhpcmQgIT09IDB4MDApKSB7XG4gICAgICAgIGdiMTgwMzBfZmlyc3QgPSAweDAwO1xuICAgICAgICBnYjE4MDMwX3NlY29uZCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfdGhpcmQgPSAweDAwO1xuICAgICAgICBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuICAgICAgdmFyIGNvZGVfcG9pbnQ7XG4gICAgICAvLyAzLiBJZiBnYjE4MDMwIHRoaXJkIGlzIG5vdCAweDAwLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoZ2IxODAzMF90aGlyZCAhPT0gMHgwMCkge1xuICAgICAgICAvLyAxLiBMZXQgY29kZSBwb2ludCBiZSBudWxsLlxuICAgICAgICBjb2RlX3BvaW50ID0gbnVsbDtcbiAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDM5LCBzZXQgY29kZSBwb2ludCB0b1xuICAgICAgICAvLyB0aGUgaW5kZXggZ2IxODAzMCByYW5nZXMgY29kZSBwb2ludCBmb3IgKCgoZ2IxODAzMCBmaXJzdCDiiJJcbiAgICAgICAgLy8gMHg4MSkgw5cgMTAgKyBnYjE4MDMwIHNlY29uZCDiiJIgMHgzMCkgw5cgMTI2ICsgZ2IxODAzMCB0aGlyZCDiiJJcbiAgICAgICAgLy8gMHg4MSkgw5cgMTAgKyBieXRlIOKIkiAweDMwLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDMwLCAweDM5KSkge1xuICAgICAgICAgIGNvZGVfcG9pbnQgPSBpbmRleEdCMTgwMzBSYW5nZXNDb2RlUG9pbnRGb3IoXG4gICAgICAgICAgICAgICgoKGdiMTgwMzBfZmlyc3QgLSAweDgxKSAqIDEwICsgKGdiMTgwMzBfc2Vjb25kIC0gMHgzMCkpICogMTI2ICtcbiAgICAgICAgICAgICAgIChnYjE4MDMwX3RoaXJkIC0gMHg4MSkpICogMTAgKyBiaXRlIC0gMHgzMCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAzLiBMZXQgYnVmZmVyIGJlIGEgYnl0ZSBzZXF1ZW5jZSBjb25zaXN0aW5nIG9mIGdiMTgwMzBcbiAgICAgICAgLy8gc2Vjb25kLCBnYjE4MDMwIHRoaXJkLCBhbmQgYnl0ZSwgaW4gb3JkZXIuXG4gICAgICAgIHZhciBidWZmZXIgPSBbZ2IxODAzMF9zZWNvbmQsIGdiMTgwMzBfdGhpcmQsIGJpdGVdO1xuXG4gICAgICAgIC8vIDQuIFNldCBnYjE4MDMwIGZpcnN0LCBnYjE4MDMwIHNlY29uZCwgYW5kIGdiMTgwMzAgdGhpcmQgdG9cbiAgICAgICAgLy8gMHgwMC5cbiAgICAgICAgZ2IxODAzMF9maXJzdCA9IDB4MDA7XG4gICAgICAgIGdiMTgwMzBfc2Vjb25kID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF90aGlyZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBudWxsLCBwcmVwZW5kIGJ1ZmZlciB0byBzdHJlYW0gYW5kXG4gICAgICAgIC8vIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpIHtcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChidWZmZXIpO1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNi4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNC4gSWYgZ2IxODAzMCBzZWNvbmQgaXMgbm90IDB4MDAsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChnYjE4MDMwX3NlY29uZCAhPT0gMHgwMCkge1xuXG4gICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHhGRSwgc2V0IGdiMTgwMzAgdGhpcmRcbiAgICAgICAgLy8gdG8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweEZFKSkge1xuICAgICAgICAgIGdiMTgwMzBfdGhpcmQgPSBiaXRlO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gUHJlcGVuZCBnYjE4MDMwIHNlY29uZCBmb2xsb3dlZCBieSBieXRlIHRvIHN0cmVhbSwgc2V0XG4gICAgICAgIC8vIGdiMTgwMzAgZmlyc3QgYW5kIGdiMTgwMzAgc2Vjb25kIHRvIDB4MDAsIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKFtnYjE4MDMwX3NlY29uZCwgYml0ZV0pO1xuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcbiAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSAweDAwO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gSWYgZ2IxODAzMCBmaXJzdCBpcyBub3QgMHgwMCwgcnVuIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKGdiMTgwMzBfZmlyc3QgIT09IDB4MDApIHtcblxuICAgICAgICAvLyAxLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDMwIHRvIDB4MzksIHNldCBnYjE4MDMwIHNlY29uZFxuICAgICAgICAvLyB0byBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MzAsIDB4MzkpKSB7XG4gICAgICAgICAgZ2IxODAzMF9zZWNvbmQgPSBiaXRlO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gTGV0IGxlYWQgYmUgZ2IxODAzMCBmaXJzdCwgbGV0IHBvaW50ZXIgYmUgbnVsbCwgYW5kIHNldFxuICAgICAgICAvLyBnYjE4MDMwIGZpcnN0IHRvIDB4MDAuXG4gICAgICAgIHZhciBsZWFkID0gZ2IxODAzMF9maXJzdDtcbiAgICAgICAgdmFyIHBvaW50ZXIgPSBudWxsO1xuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gMHgwMDtcblxuICAgICAgICAvLyAzLiBMZXQgb2Zmc2V0IGJlIDB4NDAgaWYgYnl0ZSBpcyBsZXNzIHRoYW4gMHg3RiBhbmQgMHg0MVxuICAgICAgICAvLyBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSBiaXRlIDwgMHg3RiA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAgIC8vIDQuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDAgdG8gMHg3RSBvciAweDgwIHRvIDB4RkUsXG4gICAgICAgIC8vIHNldCBwb2ludGVyIHRvIChsZWFkIOKIkiAweDgxKSDDlyAxOTAgKyAoYnl0ZSDiiJIgb2Zmc2V0KS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg0MCwgMHg3RSkgfHwgaW5SYW5nZShiaXRlLCAweDgwLCAweEZFKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSAweDgxKSAqIDE5MCArIChiaXRlIC0gb2Zmc2V0KTtcblxuICAgICAgICAvLyA1LiBMZXQgY29kZSBwb2ludCBiZSBudWxsIGlmIHBvaW50ZXIgaXMgbnVsbCBhbmQgdGhlIGluZGV4XG4gICAgICAgIC8vIGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggZ2IxODAzMCBvdGhlcndpc2UuXG4gICAgICAgIGNvZGVfcG9pbnQgPSBwb2ludGVyID09PSBudWxsID8gbnVsbCA6XG4gICAgICAgICAgICBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnZ2IxODAzMCcpKTtcblxuICAgICAgICAvLyA2LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG9cbiAgICAgICAgLy8gMHg3RiwgcHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgaW5SYW5nZShiaXRlLCAweDAwLCAweDdGKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA3LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gOC4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA3LiBJZiBieXRlIGlzIDB4ODAsIHJldHVybiBjb2RlIHBvaW50IFUrMjBBQy5cbiAgICAgIGlmIChiaXRlID09PSAweDgwKVxuICAgICAgICByZXR1cm4gMHgyMEFDO1xuXG4gICAgICAvLyA4LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDgxIHRvIDB4RkUsIHNldCBnYjE4MDMwIGZpcnN0IHRvXG4gICAgICAvLyBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweEZFKSkge1xuICAgICAgICBnYjE4MDMwX2ZpcnN0ID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDkuIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvLyAxMC4yLjIgZ2IxODAzMCBlbmNvZGVyXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBnYmtfZmxhZ1xuICAgKi9cbiAgZnVuY3Rpb24gR0IxODAzMEVuY29kZXIob3B0aW9ucywgZ2JrX2ZsYWcpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIGdiMTgwMzAncyBkZWNvZGVyIGhhcyBhbiBhc3NvY2lhdGVkIGdiayBmbGFnIChpbml0aWFsbHkgdW5zZXQpLlxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSkge1xuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gMy4gSWYgdGhlIGdiayBmbGFnIGlzIHNldCBhbmQgY29kZSBwb2ludCBpcyBVKzIwQUMsIHJldHVyblxuICAgICAgLy8gYnl0ZSAweDgwLlxuICAgICAgaWYgKGdia19mbGFnICYmIGNvZGVfcG9pbnQgPT09IDB4MjBBQylcbiAgICAgICAgcmV0dXJuIDB4ODA7XG5cbiAgICAgIC8vIDQuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBnYjE4MDMwLlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFBvaW50ZXJGb3IoY29kZV9wb2ludCwgaW5kZXgoJ2diMTgwMzAnKSk7XG5cbiAgICAgIC8vIDUuIElmIHBvaW50ZXIgaXMgbm90IG51bGwsIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChwb2ludGVyICE9PSBudWxsKSB7XG5cbiAgICAgICAgLy8gMS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE5MCArIDB4ODEuXG4gICAgICAgIHZhciBsZWFkID0gZGl2KHBvaW50ZXIsIDE5MCkgKyAweDgxO1xuXG4gICAgICAgIC8vIDIuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTkwLlxuICAgICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgMTkwO1xuXG4gICAgICAgIC8vIDMuIExldCBvZmZzZXQgYmUgMHg0MCBpZiB0cmFpbCBpcyBsZXNzIHRoYW4gMHgzRiBhbmQgMHg0MSBvdGhlcndpc2UuXG4gICAgICAgIHZhciBvZmZzZXQgPSB0cmFpbCA8IDB4M0YgPyAweDQwIDogMHg0MTtcblxuICAgICAgICAvLyA0LiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCBhbmQgdHJhaWwgKyBvZmZzZXQuXG4gICAgICAgIHJldHVybiBbbGVhZCwgdHJhaWwgKyBvZmZzZXRdO1xuICAgICAgfVxuXG4gICAgICAvLyA2LiBJZiBnYmsgZmxhZyBpcyBzZXQsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoZ2JrX2ZsYWcpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDcuIFNldCBwb2ludGVyIHRvIHRoZSBpbmRleCBnYjE4MDMwIHJhbmdlcyBwb2ludGVyIGZvciBjb2RlXG4gICAgICAvLyBwb2ludC5cbiAgICAgIHBvaW50ZXIgPSBpbmRleEdCMTgwMzBSYW5nZXNQb2ludGVyRm9yKGNvZGVfcG9pbnQpO1xuXG4gICAgICAvLyA4LiBMZXQgYnl0ZTEgYmUgcG9pbnRlciAvIDEwIC8gMTI2IC8gMTAuXG4gICAgICB2YXIgYnl0ZTEgPSBkaXYoZGl2KGRpdihwb2ludGVyLCAxMCksIDEyNiksIDEwKTtcblxuICAgICAgLy8gOS4gU2V0IHBvaW50ZXIgdG8gcG9pbnRlciDiiJIgYnl0ZTEgw5cgMTAgw5cgMTI2IMOXIDEwLlxuICAgICAgcG9pbnRlciA9IHBvaW50ZXIgLSBieXRlMSAqIDEwICogMTI2ICogMTA7XG5cbiAgICAgIC8vIDEwLiBMZXQgYnl0ZTIgYmUgcG9pbnRlciAvIDEwIC8gMTI2LlxuICAgICAgdmFyIGJ5dGUyID0gZGl2KGRpdihwb2ludGVyLCAxMCksIDEyNik7XG5cbiAgICAgIC8vIDExLiBTZXQgcG9pbnRlciB0byBwb2ludGVyIOKIkiBieXRlMiDDlyAxMCDDlyAxMjYuXG4gICAgICBwb2ludGVyID0gcG9pbnRlciAtIGJ5dGUyICogMTAgKiAxMjY7XG5cbiAgICAgIC8vIDEyLiBMZXQgYnl0ZTMgYmUgcG9pbnRlciAvIDEwLlxuICAgICAgdmFyIGJ5dGUzID0gZGl2KHBvaW50ZXIsIDEwKTtcblxuICAgICAgLy8gMTMuIExldCBieXRlNCBiZSBwb2ludGVyIOKIkiBieXRlMyDDlyAxMC5cbiAgICAgIHZhciBieXRlNCA9IHBvaW50ZXIgLSBieXRlMyAqIDEwO1xuXG4gICAgICAvLyAxNC4gUmV0dXJuIGZvdXIgYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBieXRlMSArIDB4ODEsIGJ5dGUyICtcbiAgICAgIC8vIDB4MzAsIGJ5dGUzICsgMHg4MSwgYnl0ZTQgKyAweDMwLlxuICAgICAgcmV0dXJuIFtieXRlMSArIDB4ODEsXG4gICAgICAgICAgICAgIGJ5dGUyICsgMHgzMCxcbiAgICAgICAgICAgICAgYnl0ZTMgKyAweDgxLFxuICAgICAgICAgICAgICBieXRlNCArIDB4MzBdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydnYjE4MDMwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBHQjE4MDMwRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snZ2IxODAzMCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgR0IxODAzMERlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cblxuICAvL1xuICAvLyAxMS4gTGVnYWN5IG11bHRpLWJ5dGUgQ2hpbmVzZSAodHJhZGl0aW9uYWwpIGVuY29kaW5nc1xuICAvL1xuXG4gIC8vIDExLjEgYmlnNVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gQmlnNURlY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLy8gYmlnNSdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgYmlnNSBsZWFkIChpbml0aWFsbHkgMHgwMCkuXG4gICAgdmFyIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBiaWc1X2xlYWQgPSAweDAwO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGJpZzUgbGVhZCBpcyBub3QgMHgwMCwgc2V0XG4gICAgICAvLyBiaWc1IGxlYWQgdG8gMHgwMCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgYmlnNV9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIGJpZzVfbGVhZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGJpZzUgbGVhZCBpcyAweDAwLCByZXR1cm5cbiAgICAgIC8vIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgYmlnNV9sZWFkID09PSAweDAwKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIGJpZzUgbGVhZCBpcyBub3QgMHgwMCwgbGV0IGxlYWQgYmUgYmlnNSBsZWFkLCBsZXRcbiAgICAgIC8vIHBvaW50ZXIgYmUgbnVsbCwgc2V0IGJpZzUgbGVhZCB0byAweDAwLCBhbmQgdGhlbiBydW4gdGhlc2VcbiAgICAgIC8vIHN1YnN0ZXBzOlxuICAgICAgaWYgKGJpZzVfbGVhZCAhPT0gMHgwMCkge1xuICAgICAgICB2YXIgbGVhZCA9IGJpZzVfbGVhZDtcbiAgICAgICAgdmFyIHBvaW50ZXIgPSBudWxsO1xuICAgICAgICBiaWc1X2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDEuIExldCBvZmZzZXQgYmUgMHg0MCBpZiBieXRlIGlzIGxlc3MgdGhhbiAweDdGIGFuZCAweDYyXG4gICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgdmFyIG9mZnNldCA9IGJpdGUgPCAweDdGID8gMHg0MCA6IDB4NjI7XG5cbiAgICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg0MCB0byAweDdFIG9yIDB4QTEgdG8gMHhGRSxcbiAgICAgICAgLy8gc2V0IHBvaW50ZXIgdG8gKGxlYWQg4oiSIDB4ODEpIMOXIDE1NyArIChieXRlIOKIkiBvZmZzZXQpLlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDQwLCAweDdFKSB8fCBpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKVxuICAgICAgICAgIHBvaW50ZXIgPSAobGVhZCAtIDB4ODEpICogMTU3ICsgKGJpdGUgLSBvZmZzZXQpO1xuXG4gICAgICAgIC8vIDMuIElmIHRoZXJlIGlzIGEgcm93IGluIHRoZSB0YWJsZSBiZWxvdyB3aG9zZSBmaXJzdCBjb2x1bW5cbiAgICAgICAgLy8gaXMgcG9pbnRlciwgcmV0dXJuIHRoZSB0d28gY29kZSBwb2ludHMgbGlzdGVkIGluIGl0cyBzZWNvbmRcbiAgICAgICAgLy8gY29sdW1uXG4gICAgICAgIC8vIFBvaW50ZXIgfCBDb2RlIHBvaW50c1xuICAgICAgICAvLyAtLS0tLS0tLSstLS0tLS0tLS0tLS0tLVxuICAgICAgICAvLyAxMTMzICAgIHwgVSswMENBIFUrMDMwNFxuICAgICAgICAvLyAxMTM1ICAgIHwgVSswMENBIFUrMDMwQ1xuICAgICAgICAvLyAxMTY0ICAgIHwgVSswMEVBIFUrMDMwNFxuICAgICAgICAvLyAxMTY2ICAgIHwgVSswMEVBIFUrMDMwQ1xuICAgICAgICBzd2l0Y2ggKHBvaW50ZXIpIHtcbiAgICAgICAgICBjYXNlIDExMzM6IHJldHVybiBbMHgwMENBLCAweDAzMDRdO1xuICAgICAgICAgIGNhc2UgMTEzNTogcmV0dXJuIFsweDAwQ0EsIDB4MDMwQ107XG4gICAgICAgICAgY2FzZSAxMTY0OiByZXR1cm4gWzB4MDBFQSwgMHgwMzA0XTtcbiAgICAgICAgICBjYXNlIDExNjY6IHJldHVybiBbMHgwMEVBLCAweDAzMENdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbCBpZiBwb2ludGVyIGlzIG51bGwgYW5kIHRoZSBpbmRleFxuICAgICAgICAvLyBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGJpZzUgb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IChwb2ludGVyID09PSBudWxsKSA/IG51bGwgOlxuICAgICAgICAgICAgaW5kZXhDb2RlUG9pbnRGb3IocG9pbnRlciwgaW5kZXgoJ2JpZzUnKSk7XG5cbiAgICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNi4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDcuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgYmlnNSBsZWFkIHRvXG4gICAgICAvLyBieXRlIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDgxLCAweEZFKSkge1xuICAgICAgICBiaWc1X2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gQmlnNUVuY29kZXIob3B0aW9ucykge1xuICAgIHZhciBmYXRhbCA9IG9wdGlvbnMuZmF0YWw7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBJbnB1dCBzdHJlYW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGNvZGVfcG9pbnQgTmV4dCBjb2RlIHBvaW50IHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4geyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gQnl0ZShzKSB0byBlbWl0LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgY29kZV9wb2ludCkge1xuICAgICAgLy8gMS4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtLCByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gZW5kX29mX3N0cmVhbSlcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuXG4gICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHgwMDAwLCAweDAwN0YpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgLy8gMy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IGJpZzUgcG9pbnRlciBmb3IgY29kZSBwb2ludC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhCaWc1UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnYmlnNScpKTtcblxuICAgICAgLy8gNC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDUuIExldCBsZWFkIGJlIHBvaW50ZXIgLyAxNTcgKyAweDgxLlxuICAgICAgdmFyIGxlYWQgPSBkaXYocG9pbnRlciwgMTU3KSArIDB4ODE7XG5cbiAgICAgIC8vIDYuIElmIGxlYWQgaXMgbGVzcyB0aGFuIDB4QTEsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAobGVhZCA8IDB4QTEpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDcuIExldCB0cmFpbCBiZSBwb2ludGVyICUgMTU3LlxuICAgICAgdmFyIHRyYWlsID0gcG9pbnRlciAlIDE1NztcblxuICAgICAgLy8gOC4gTGV0IG9mZnNldCBiZSAweDQwIGlmIHRyYWlsIGlzIGxlc3MgdGhhbiAweDNGIGFuZCAweDYyXG4gICAgICAvLyBvdGhlcndpc2UuXG4gICAgICB2YXIgb2Zmc2V0ID0gdHJhaWwgPCAweDNGID8gMHg0MCA6IDB4NjI7XG5cbiAgICAgIC8vIFJldHVybiB0d28gYnl0ZXMgd2hvc2UgdmFsdWVzIGFyZSBsZWFkIGFuZCB0cmFpbCArIG9mZnNldC5cbiAgICAgIHJldHVybiBbbGVhZCwgdHJhaWwgKyBvZmZzZXRdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydiaWc1J10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBCaWc1RW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snYmlnNSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQmlnNURlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cblxuICAvL1xuICAvLyAxMi4gTGVnYWN5IG11bHRpLWJ5dGUgSmFwYW5lc2UgZW5jb2RpbmdzXG4gIC8vXG5cbiAgLy8gMTIuMSBldWMtanBcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIEVVQ0pQRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcblxuICAgIC8vIGV1Yy1qcCdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgZXVjLWpwIGppczAyMTIgZmxhZ1xuICAgIC8vIChpbml0aWFsbHkgdW5zZXQpIGFuZCBldWMtanAgbGVhZCAoaW5pdGlhbGx5IDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge2Jvb2xlYW59ICovIGV1Y2pwX2ppczAyMTJfZmxhZyA9IGZhbHNlLFxuICAgICAgICAvKiogQHR5cGUge251bWJlcn0gKi8gZXVjanBfbGVhZCA9IDB4MDA7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgZXVjLWpwIGxlYWQgaXMgbm90IDB4MDAsIHNldFxuICAgICAgLy8gZXVjLWpwIGxlYWQgdG8gMHgwMCwgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2pwX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgZXVjanBfbGVhZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGV1Yy1qcCBsZWFkIGlzIDB4MDAsIHJldHVyblxuICAgICAgLy8gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBldWNqcF9sZWFkID09PSAweDAwKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIGV1Yy1qcCBsZWFkIGlzIDB4OEUgYW5kIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QTEgdG9cbiAgICAgIC8vIDB4REYsIHNldCBldWMtanAgbGVhZCB0byAweDAwIGFuZCByZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlXG4gICAgICAvLyB2YWx1ZSBpcyAweEZGNjEgKyBieXRlIOKIkiAweEExLlxuICAgICAgaWYgKGV1Y2pwX2xlYWQgPT09IDB4OEUgJiYgaW5SYW5nZShiaXRlLCAweEExLCAweERGKSkge1xuICAgICAgICBldWNqcF9sZWFkID0gMHgwMDtcbiAgICAgICAgcmV0dXJuIDB4RkY2MSArIGJpdGUgLSAweEExO1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBldWMtanAgbGVhZCBpcyAweDhGIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweEExIHRvXG4gICAgICAvLyAweEZFLCBzZXQgdGhlIGV1Yy1qcCBqaXMwMjEyIGZsYWcsIHNldCBldWMtanAgbGVhZCB0byBieXRlLFxuICAgICAgLy8gYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChldWNqcF9sZWFkID09PSAweDhGICYmIGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpIHtcbiAgICAgICAgZXVjanBfamlzMDIxMl9mbGFnID0gdHJ1ZTtcbiAgICAgICAgZXVjanBfbGVhZCA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA1LiBJZiBldWMtanAgbGVhZCBpcyBub3QgMHgwMCwgbGV0IGxlYWQgYmUgZXVjLWpwIGxlYWQsIHNldFxuICAgICAgLy8gZXVjLWpwIGxlYWQgdG8gMHgwMCwgYW5kIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmIChldWNqcF9sZWFkICE9PSAweDAwKSB7XG4gICAgICAgIHZhciBsZWFkID0gZXVjanBfbGVhZDtcbiAgICAgICAgZXVjanBfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMS4gTGV0IGNvZGUgcG9pbnQgYmUgbnVsbC5cbiAgICAgICAgdmFyIGNvZGVfcG9pbnQgPSBudWxsO1xuXG4gICAgICAgIC8vIDIuIElmIGxlYWQgYW5kIGJ5dGUgYXJlIGJvdGggaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhGRSwgc2V0XG4gICAgICAgIC8vIGNvZGUgcG9pbnQgdG8gdGhlIGluZGV4IGNvZGUgcG9pbnQgZm9yIChsZWFkIOKIkiAweEExKSDDlyA5NCArXG4gICAgICAgIC8vIGJ5dGUg4oiSIDB4QTEgaW4gaW5kZXggamlzMDIwOCBpZiB0aGUgZXVjLWpwIGppczAyMTIgZmxhZyBpc1xuICAgICAgICAvLyB1bnNldCBhbmQgaW4gaW5kZXggamlzMDIxMiBvdGhlcndpc2UuXG4gICAgICAgIGlmIChpblJhbmdlKGxlYWQsIDB4QTEsIDB4RkUpICYmIGluUmFuZ2UoYml0ZSwgMHhBMSwgMHhGRSkpIHtcbiAgICAgICAgICBjb2RlX3BvaW50ID0gaW5kZXhDb2RlUG9pbnRGb3IoXG4gICAgICAgICAgICAobGVhZCAtIDB4QTEpICogOTQgKyAoYml0ZSAtIDB4QTEpLFxuICAgICAgICAgICAgaW5kZXgoIWV1Y2pwX2ppczAyMTJfZmxhZyA/ICdqaXMwMjA4JyA6ICdqaXMwMjEyJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gVW5zZXQgdGhlIGV1Yy1qcCBqaXMwMjEyIGZsYWcuXG4gICAgICAgIGV1Y2pwX2ppczAyMTJfZmxhZyA9IGZhbHNlO1xuXG4gICAgICAgIC8vIDQuIElmIGJ5dGUgaXMgbm90IGluIHRoZSByYW5nZSAweEExIHRvIDB4RkUsIHByZXBlbmQgYnl0ZVxuICAgICAgICAvLyB0byBzdHJlYW0uXG4gICAgICAgIGlmICghaW5SYW5nZShiaXRlLCAweEExLCAweEZFKSlcbiAgICAgICAgICBzdHJlYW0ucHJlcGVuZChiaXRlKTtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwsIHJldHVybiBlcnJvci5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG5cbiAgICAgICAgLy8gNi4gUmV0dXJuIGEgY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyA3LiBJZiBieXRlIGlzIDB4OEUsIDB4OEYsIG9yIGluIHRoZSByYW5nZSAweEExIHRvIDB4RkUsIHNldFxuICAgICAgLy8gZXVjLWpwIGxlYWQgdG8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGJpdGUgPT09IDB4OEUgfHwgYml0ZSA9PT0gMHg4RiB8fCBpblJhbmdlKGJpdGUsIDB4QTEsIDB4RkUpKSB7XG4gICAgICAgIGV1Y2pwX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gOC4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gRVVDSlBFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgVSswMEE1LCByZXR1cm4gYnl0ZSAweDVDLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MDBBNSlcbiAgICAgICAgcmV0dXJuIDB4NUM7XG5cbiAgICAgIC8vIDQuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDNFLCByZXR1cm4gYnl0ZSAweDdFLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAzRSlcbiAgICAgICAgcmV0dXJuIDB4N0U7XG5cbiAgICAgIC8vIDUuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrRkY2MSB0byBVK0ZGOUYsIHJldHVybiB0d29cbiAgICAgIC8vIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgMHg4RSBhbmQgY29kZSBwb2ludCDiiJIgMHhGRjYxICsgMHhBMS5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4RkY2MSwgMHhGRjlGKSlcbiAgICAgICAgcmV0dXJuIFsweDhFLCBjb2RlX3BvaW50IC0gMHhGRjYxICsgMHhBMV07XG5cbiAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDIyLCBzZXQgaXQgdG8gVStGRjBELlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAyMilcbiAgICAgICAgY29kZV9wb2ludCA9IDB4RkYwRDtcblxuICAgICAgLy8gNy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHBvaW50ZXIgZm9yIGNvZGUgcG9pbnQgaW4gaW5kZXhcbiAgICAgIC8vIGppczAyMDguXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnamlzMDIwOCcpKTtcblxuICAgICAgLy8gOC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDkuIExldCBsZWFkIGJlIHBvaW50ZXIgLyA5NCArIDB4QTEuXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCA5NCkgKyAweEExO1xuXG4gICAgICAvLyAxMC4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSA5NCArIDB4QTEuXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgOTQgKyAweEExO1xuXG4gICAgICAvLyAxMS4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsLlxuICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2V1Yy1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDSlBFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydldWMtanAnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEVVQ0pQRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxMi4yIGlzby0yMDIyLWpwXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RGVjb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBJU08yMDIySlBEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKiBAZW51bSAqL1xuICAgIHZhciBzdGF0ZXMgPSB7XG4gICAgICBBU0NJSTogMCxcbiAgICAgIFJvbWFuOiAxLFxuICAgICAgS2F0YWthbmE6IDIsXG4gICAgICBMZWFkQnl0ZTogMyxcbiAgICAgIFRyYWlsQnl0ZTogNCxcbiAgICAgIEVzY2FwZVN0YXJ0OiA1LFxuICAgICAgRXNjYXBlOiA2XG4gICAgfTtcbiAgICAvLyBpc28tMjAyMi1qcCdzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgaXNvLTIwMjItanAgZGVjb2RlclxuICAgIC8vIHN0YXRlIChpbml0aWFsbHkgQVNDSUkpLCBpc28tMjAyMi1qcCBkZWNvZGVyIG91dHB1dCBzdGF0ZVxuICAgIC8vIChpbml0aWFsbHkgQVNDSUkpLCBpc28tMjAyMi1qcCBsZWFkIChpbml0aWFsbHkgMHgwMCksIGFuZFxuICAgIC8vIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIChpbml0aWFsbHkgdW5zZXQpLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuQVNDSUksXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfZGVjb2Rlcl9vdXRwdXRfc3RhdGUgPSBzdGF0ZXMuQVNDSUksXG4gICAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBpc28yMDIyanBfbGVhZCA9IDB4MDAsXG4gICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyBzd2l0Y2hpbmcgb24gaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZTpcbiAgICAgIHN3aXRjaCAoaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlIHN0YXRlcy5BU0NJSTpcbiAgICAgICAgLy8gQVNDSUlcbiAgICAgICAgLy8gQmFzZWQgb24gYnl0ZTpcblxuICAgICAgICAvLyAweDFCXG4gICAgICAgIGlmIChiaXRlID09PSAweDFCKSB7XG4gICAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlIHN0YXJ0IGFuZCByZXR1cm5cbiAgICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGVTdGFydDtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MDAgdG8gMHg3RiwgZXhjbHVkaW5nIDB4MEUsIDB4MEYsIGFuZCAweDFCXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpICYmIGJpdGUgIT09IDB4MEVcbiAgICAgICAgICAgICYmIGJpdGUgIT09IDB4MEYgJiYgYml0ZSAhPT0gMHgxQikge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGJpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGZpbmlzaGVkLlxuICAgICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5Sb21hbjpcbiAgICAgICAgLy8gUm9tYW5cbiAgICAgICAgLy8gQmFzZWQgb24gYnl0ZTpcblxuICAgICAgICAvLyAweDFCXG4gICAgICAgIGlmIChiaXRlID09PSAweDFCKSB7XG4gICAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlIHN0YXJ0IGFuZCByZXR1cm5cbiAgICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGVTdGFydDtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4NUNcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4NUMpIHtcbiAgICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBjb2RlIHBvaW50XG4gICAgICAgICAgLy8gVSswMEE1LlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiAweDAwQTU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAweDdFXG4gICAgICAgIGlmIChiaXRlID09PSAweDdFKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gY29kZSBwb2ludFxuICAgICAgICAgIC8vIFUrMjAzRS5cbiAgICAgICAgICBpc28yMDIyanBfb3V0cHV0X2ZsYWcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gMHgyMDNFO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgwMCB0byAweDdGLCBleGNsdWRpbmcgMHgwRSwgMHgwRiwgMHgxQiwgMHg1QywgYW5kIDB4N0VcbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikgJiYgYml0ZSAhPT0gMHgwRSAmJiBiaXRlICE9PSAweDBGXG4gICAgICAgICAgICAmJiBiaXRlICE9PSAweDFCICYmIGJpdGUgIT09IDB4NUMgJiYgYml0ZSAhPT0gMHg3RSkge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGJpdGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGZpbmlzaGVkLlxuICAgICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5LYXRha2FuYTpcbiAgICAgICAgLy8gS2F0YWthbmFcbiAgICAgICAgLy8gQmFzZWQgb24gYnl0ZTpcblxuICAgICAgICAvLyAweDFCXG4gICAgICAgIGlmIChiaXRlID09PSAweDFCKSB7XG4gICAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlIHN0YXJ0IGFuZCByZXR1cm5cbiAgICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGVTdGFydDtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MjEgdG8gMHg1RlxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDIxLCAweDVGKSkge1xuICAgICAgICAgIC8vIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZyBhbmQgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgICAgIC8vIHdob3NlIHZhbHVlIGlzIDB4RkY2MSArIGJ5dGUg4oiSIDB4MjEuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIDB4RkY2MSArIGJpdGUgLSAweDIxO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW5kLW9mLXN0cmVhbVxuICAgICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSkge1xuICAgICAgICAgIC8vIFJldHVybiBmaW5pc2hlZC5cbiAgICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuTGVhZEJ5dGU6XG4gICAgICAgIC8vIExlYWQgYnl0ZVxuICAgICAgICAvLyBCYXNlZCBvbiBieXRlOlxuXG4gICAgICAgIC8vIDB4MUJcbiAgICAgICAgaWYgKGJpdGUgPT09IDB4MUIpIHtcbiAgICAgICAgICAvLyBTZXQgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUgc3RhcnQgYW5kIHJldHVyblxuICAgICAgICAgIC8vIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkVzY2FwZVN0YXJ0O1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMHgyMSB0byAweDdFXG4gICAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MjEsIDB4N0UpKSB7XG4gICAgICAgICAgLy8gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLCBzZXQgaXNvLTIwMjItanAgbGVhZFxuICAgICAgICAgIC8vIHRvIGJ5dGUsIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gdHJhaWwgYnl0ZSwgYW5kXG4gICAgICAgICAgLy8gcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgICAgIGlzbzIwMjJqcF9vdXRwdXRfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgIGlzbzIwMjJqcF9sZWFkID0gYml0ZTtcbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5UcmFpbEJ5dGU7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmQtb2Ytc3RyZWFtXG4gICAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGZpbmlzaGVkLlxuICAgICAgICAgIHJldHVybiBmaW5pc2hlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZVxuICAgICAgICAvLyBVbnNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcgYW5kIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICBjYXNlIHN0YXRlcy5UcmFpbEJ5dGU6XG4gICAgICAgIC8vIFRyYWlsIGJ5dGVcbiAgICAgICAgLy8gQmFzZWQgb24gYnl0ZTpcblxuICAgICAgICAvLyAweDFCXG4gICAgICAgIGlmIChiaXRlID09PSAweDFCKSB7XG4gICAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gZXNjYXBlIHN0YXJ0IGFuZCByZXR1cm5cbiAgICAgICAgICAvLyBjb250aW51ZS5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IHN0YXRlcy5Fc2NhcGVTdGFydDtcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDB4MjEgdG8gMHg3RVxuICAgICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDIxLCAweDdFKSkge1xuICAgICAgICAgIC8vIDEuIFNldCB0aGUgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBsZWFkIGJ5dGUuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG5cbiAgICAgICAgICAvLyAyLiBMZXQgcG9pbnRlciBiZSAoaXNvLTIwMjItanAgbGVhZCDiiJIgMHgyMSkgw5cgOTQgKyBieXRlIOKIkiAweDIxLlxuICAgICAgICAgIHZhciBwb2ludGVyID0gKGlzbzIwMjJqcF9sZWFkIC0gMHgyMSkgKiA5NCArIGJpdGUgLSAweDIxO1xuXG4gICAgICAgICAgLy8gMy4gTGV0IGNvZGUgcG9pbnQgYmUgdGhlIGluZGV4IGNvZGUgcG9pbnQgZm9yIHBvaW50ZXIgaW4gaW5kZXggamlzMDIwOC5cbiAgICAgICAgICB2YXIgY29kZV9wb2ludCA9IGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAgIC8vIDUuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuZC1vZi1zdHJlYW1cbiAgICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pIHtcbiAgICAgICAgICAvLyBTZXQgdGhlIGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gbGVhZCBieXRlLCBwcmVwZW5kXG4gICAgICAgICAgLy8gYnl0ZSB0byBzdHJlYW0sIGFuZCByZXR1cm4gZXJyb3IuXG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuTGVhZEJ5dGU7XG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdGhlcndpc2VcbiAgICAgICAgLy8gU2V0IGlzby0yMDIyLWpwIGRlY29kZXIgc3RhdGUgdG8gbGVhZCBieXRlIGFuZCByZXR1cm5cbiAgICAgICAgLy8gZXJyb3IuXG4gICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGVzLkxlYWRCeXRlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuRXNjYXBlU3RhcnQ6XG4gICAgICAgIC8vIEVzY2FwZSBzdGFydFxuXG4gICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZWl0aGVyIDB4MjQgb3IgMHgyOCwgc2V0IGlzby0yMDIyLWpwIGxlYWQgdG9cbiAgICAgICAgLy8gYnl0ZSwgaXNvLTIwMjItanAgZGVjb2RlciBzdGF0ZSB0byBlc2NhcGUsIGFuZCByZXR1cm5cbiAgICAgICAgLy8gY29udGludWUuXG4gICAgICAgIGlmIChiaXRlID09PSAweDI0IHx8IGJpdGUgPT09IDB4MjgpIHtcbiAgICAgICAgICBpc28yMDIyanBfbGVhZCA9IGJpdGU7XG4gICAgICAgICAgaXNvMjAyMmpwX2RlY29kZXJfc3RhdGUgPSBzdGF0ZXMuRXNjYXBlO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gUHJlcGVuZCBieXRlIHRvIHN0cmVhbS5cbiAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gMy4gVW5zZXQgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLCBzZXQgaXNvLTIwMjItanBcbiAgICAgICAgLy8gZGVjb2RlciBzdGF0ZSB0byBpc28tMjAyMi1qcCBkZWNvZGVyIG91dHB1dCBzdGF0ZSwgYW5kXG4gICAgICAgIC8vIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gaXNvMjAyMmpwX2RlY29kZXJfb3V0cHV0X3N0YXRlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgY2FzZSBzdGF0ZXMuRXNjYXBlOlxuICAgICAgICAvLyBFc2NhcGVcblxuICAgICAgICAvLyAxLiBMZXQgbGVhZCBiZSBpc28tMjAyMi1qcCBsZWFkIGFuZCBzZXQgaXNvLTIwMjItanAgbGVhZCB0b1xuICAgICAgICAvLyAweDAwLlxuICAgICAgICB2YXIgbGVhZCA9IGlzbzIwMjJqcF9sZWFkO1xuICAgICAgICBpc28yMDIyanBfbGVhZCA9IDB4MDA7XG5cbiAgICAgICAgLy8gMi4gTGV0IHN0YXRlIGJlIG51bGwuXG4gICAgICAgIHZhciBzdGF0ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gMy4gSWYgbGVhZCBpcyAweDI4IGFuZCBieXRlIGlzIDB4NDIsIHNldCBzdGF0ZSB0byBBU0NJSS5cbiAgICAgICAgaWYgKGxlYWQgPT09IDB4MjggJiYgYml0ZSA9PT0gMHg0MilcbiAgICAgICAgICBzdGF0ZSA9IHN0YXRlcy5BU0NJSTtcblxuICAgICAgICAvLyA0LiBJZiBsZWFkIGlzIDB4MjggYW5kIGJ5dGUgaXMgMHg0QSwgc2V0IHN0YXRlIHRvIFJvbWFuLlxuICAgICAgICBpZiAobGVhZCA9PT0gMHgyOCAmJiBiaXRlID09PSAweDRBKVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLlJvbWFuO1xuXG4gICAgICAgIC8vIDUuIElmIGxlYWQgaXMgMHgyOCBhbmQgYnl0ZSBpcyAweDQ5LCBzZXQgc3RhdGUgdG8gS2F0YWthbmEuXG4gICAgICAgIGlmIChsZWFkID09PSAweDI4ICYmIGJpdGUgPT09IDB4NDkpXG4gICAgICAgICAgc3RhdGUgPSBzdGF0ZXMuS2F0YWthbmE7XG5cbiAgICAgICAgLy8gNi4gSWYgbGVhZCBpcyAweDI0IGFuZCBieXRlIGlzIGVpdGhlciAweDQwIG9yIDB4NDIsIHNldFxuICAgICAgICAvLyBzdGF0ZSB0byBsZWFkIGJ5dGUuXG4gICAgICAgIGlmIChsZWFkID09PSAweDI0ICYmIChiaXRlID09PSAweDQwIHx8IGJpdGUgPT09IDB4NDIpKVxuICAgICAgICAgIHN0YXRlID0gc3RhdGVzLkxlYWRCeXRlO1xuXG4gICAgICAgIC8vIDcuIElmIHN0YXRlIGlzIG5vbi1udWxsLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICAgIGlmIChzdGF0ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIDEuIFNldCBpc28tMjAyMi1qcCBkZWNvZGVyIHN0YXRlIGFuZCBpc28tMjAyMi1qcCBkZWNvZGVyXG4gICAgICAgICAgLy8gb3V0cHV0IHN0YXRlIHRvIHN0YXRlcy5cbiAgICAgICAgICBpc28yMDIyanBfZGVjb2Rlcl9zdGF0ZSA9IGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgICAvLyAyLiBMZXQgb3V0cHV0IGZsYWcgYmUgdGhlIGlzby0yMDIyLWpwIG91dHB1dCBmbGFnLlxuICAgICAgICAgIHZhciBvdXRwdXRfZmxhZyA9IGlzbzIwMjJqcF9vdXRwdXRfZmxhZztcblxuICAgICAgICAgIC8vIDMuIFNldCB0aGUgaXNvLTIwMjItanAgb3V0cHV0IGZsYWcuXG4gICAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gdHJ1ZTtcblxuICAgICAgICAgIC8vIDQuIFJldHVybiBjb250aW51ZSwgaWYgb3V0cHV0IGZsYWcgaXMgdW5zZXQsIGFuZCBlcnJvclxuICAgICAgICAgIC8vIG90aGVyd2lzZS5cbiAgICAgICAgICByZXR1cm4gIW91dHB1dF9mbGFnID8gbnVsbCA6IGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA4LiBQcmVwZW5kIGxlYWQgYW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChbbGVhZCwgYml0ZV0pO1xuXG4gICAgICAgIC8vIDkuIFVuc2V0IHRoZSBpc28tMjAyMi1qcCBvdXRwdXQgZmxhZywgc2V0IGlzby0yMDIyLWpwXG4gICAgICAgIC8vIGRlY29kZXIgc3RhdGUgdG8gaXNvLTIwMjItanAgZGVjb2RlciBvdXRwdXQgc3RhdGUgYW5kXG4gICAgICAgIC8vIHJldHVybiBlcnJvci5cbiAgICAgICAgaXNvMjAyMmpwX291dHB1dF9mbGFnID0gZmFsc2U7XG4gICAgICAgIGlzbzIwMjJqcF9kZWNvZGVyX3N0YXRlID0gaXNvMjAyMmpwX2RlY29kZXJfb3V0cHV0X3N0YXRlO1xuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBJU08yMDIySlBFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIGlzby0yMDIyLWpwJ3MgZW5jb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBpc28tMjAyMi1qcCBlbmNvZGVyXG4gICAgLy8gc3RhdGUgd2hpY2ggaXMgb25lIG9mIEFTQ0lJLCBSb21hbiwgYW5kIGppczAyMDggKGluaXRpYWxseVxuICAgIC8vIEFTQ0lJKS5cbiAgICAvKiogQGVudW0gKi9cbiAgICB2YXIgc3RhdGVzID0ge1xuICAgICAgQVNDSUk6IDAsXG4gICAgICBSb21hbjogMSxcbiAgICAgIGppczAyMDg6IDJcbiAgICB9O1xuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gaXNvMjAyMmpwX3N0YXRlID0gc3RhdGVzLkFTQ0lJO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSBhbmQgaXNvLTIwMjItanAgZW5jb2RlclxuICAgICAgLy8gc3RhdGUgaXMgbm90IEFTQ0lJLCBwcmVwZW5kIGNvZGUgcG9pbnQgdG8gc3RyZWFtLCBzZXRcbiAgICAgIC8vIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgdG8gQVNDSUksIGFuZCByZXR1cm4gdGhyZWUgYnl0ZXNcbiAgICAgIC8vIDB4MUIgMHgyOCAweDQyLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0gJiZcbiAgICAgICAgICBpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5BU0NJSSkge1xuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb2RlX3BvaW50KTtcbiAgICAgICAgcmV0dXJuIFsweDFCLCAweDI4LCAweDQyXTtcbiAgICAgIH1cblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBpc28tMjAyMi1qcCBlbmNvZGVyXG4gICAgICAvLyBzdGF0ZSBpcyBBU0NJSSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0gJiYgaXNvMjAyMmpwX3N0YXRlID09PSBzdGF0ZXMuQVNDSUkpXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMy4gSWYgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSBpcyBBU0NJSSBhbmQgY29kZSBwb2ludCBpcyBpblxuICAgICAgLy8gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwN0YsIHJldHVybiBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZVxuICAgICAgLy8gcG9pbnQuXG4gICAgICBpZiAoaXNvMjAyMmpwX3N0YXRlID09PSBzdGF0ZXMuQVNDSUkgJiZcbiAgICAgICAgICBpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDQuIElmIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgUm9tYW4gYW5kIGNvZGUgcG9pbnQgaXMgaW5cbiAgICAgIC8vIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCBleGNsdWRpbmcgVSswMDVDIGFuZCBVKzAwN0UsIG9yXG4gICAgICAvLyBpcyBVKzAwQTUgb3IgVSsyMDNFLCBydW4gdGhlc2Ugc3Vic3RlcHM6XG4gICAgICBpZiAoaXNvMjAyMmpwX3N0YXRlID09PSBzdGF0ZXMuUm9tYW4gJiZcbiAgICAgICAgICBpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSAmJlxuICAgICAgICAgIGNvZGVfcG9pbnQgIT09IDB4MDA1QyAmJiBjb2RlX3BvaW50ICE9PSAweDAwN0UpIHtcblxuICAgICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVKzAwMDAgdG8gVSswMDdGLCByZXR1cm4gYVxuICAgICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgICByZXR1cm4gY29kZV9wb2ludDtcblxuICAgICAgICAvLyAyLiBJZiBjb2RlIHBvaW50IGlzIFUrMDBBNSwgcmV0dXJuIGJ5dGUgMHg1Qy5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MDBBNSlcbiAgICAgICAgICByZXR1cm4gMHg1QztcblxuICAgICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIFUrMjAzRSwgcmV0dXJuIGJ5dGUgMHg3RS5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAzRSlcbiAgICAgICAgICByZXR1cm4gMHg3RTtcbiAgICAgIH1cblxuICAgICAgLy8gNS4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgYW5kXG4gICAgICAvLyBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIGlzIG5vdCBBU0NJSSwgcHJlcGVuZCBjb2RlIHBvaW50IHRvXG4gICAgICAvLyBzdHJlYW0sIHNldCBpc28tMjAyMi1qcCBlbmNvZGVyIHN0YXRlIHRvIEFTQ0lJLCBhbmQgcmV0dXJuXG4gICAgICAvLyB0aHJlZSBieXRlcyAweDFCIDB4MjggMHg0Mi5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSAmJlxuICAgICAgICAgIGlzbzIwMjJqcF9zdGF0ZSAhPT0gc3RhdGVzLkFTQ0lJKSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuQVNDSUk7XG4gICAgICAgIHJldHVybiBbMHgxQiwgMHgyOCwgMHg0Ml07XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgZWl0aGVyIFUrMDBBNSBvciBVKzIwM0UsIGFuZCBpc28tMjAyMi1qcFxuICAgICAgLy8gZW5jb2RlciBzdGF0ZSBpcyBub3QgUm9tYW4sIHByZXBlbmQgY29kZSBwb2ludCB0byBzdHJlYW0sIHNldFxuICAgICAgLy8gaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBSb21hbiwgYW5kIHJldHVybiB0aHJlZSBieXRlc1xuICAgICAgLy8gMHgxQiAweDI4IDB4NEEuXG4gICAgICBpZiAoKGNvZGVfcG9pbnQgPT09IDB4MDBBNSB8fCBjb2RlX3BvaW50ID09PSAweDIwM0UpICYmXG4gICAgICAgICAgaXNvMjAyMmpwX3N0YXRlICE9PSBzdGF0ZXMuUm9tYW4pIHtcbiAgICAgICAgc3RyZWFtLnByZXBlbmQoY29kZV9wb2ludCk7XG4gICAgICAgIGlzbzIwMjJqcF9zdGF0ZSA9IHN0YXRlcy5Sb21hbjtcbiAgICAgICAgcmV0dXJuIFsweDFCLCAweDI4LCAweDRBXTtcbiAgICAgIH1cblxuICAgICAgLy8gNy4gSWYgY29kZSBwb2ludCBpcyBVKzIwMjIsIHNldCBpdCB0byBVK0ZGMEQuXG4gICAgICBpZiAoY29kZV9wb2ludCA9PT0gMHgyMDIyKVxuICAgICAgICBjb2RlX3BvaW50ID0gMHhGRjBEO1xuXG4gICAgICAvLyA4LiBMZXQgcG9pbnRlciBiZSB0aGUgaW5kZXggcG9pbnRlciBmb3IgY29kZSBwb2ludCBpbiBpbmRleFxuICAgICAgLy8gamlzMDIwOC5cbiAgICAgIHZhciBwb2ludGVyID0gaW5kZXhQb2ludGVyRm9yKGNvZGVfcG9pbnQsIGluZGV4KCdqaXMwMjA4JykpO1xuXG4gICAgICAvLyA5LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gMTAuIElmIGlzby0yMDIyLWpwIGVuY29kZXIgc3RhdGUgaXMgbm90IGppczAyMDgsIHByZXBlbmQgY29kZVxuICAgICAgLy8gcG9pbnQgdG8gc3RyZWFtLCBzZXQgaXNvLTIwMjItanAgZW5jb2RlciBzdGF0ZSB0byBqaXMwMjA4LFxuICAgICAgLy8gYW5kIHJldHVybiB0aHJlZSBieXRlcyAweDFCIDB4MjQgMHg0Mi5cbiAgICAgIGlmIChpc28yMDIyanBfc3RhdGUgIT09IHN0YXRlcy5qaXMwMjA4KSB7XG4gICAgICAgIHN0cmVhbS5wcmVwZW5kKGNvZGVfcG9pbnQpO1xuICAgICAgICBpc28yMDIyanBfc3RhdGUgPSBzdGF0ZXMuamlzMDIwODtcbiAgICAgICAgcmV0dXJuIFsweDFCLCAweDI0LCAweDQyXTtcbiAgICAgIH1cblxuICAgICAgLy8gMTEuIExldCBsZWFkIGJlIHBvaW50ZXIgLyA5NCArIDB4MjEuXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCA5NCkgKyAweDIxO1xuXG4gICAgICAvLyAxMi4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSA5NCArIDB4MjEuXG4gICAgICB2YXIgdHJhaWwgPSBwb2ludGVyICUgOTQgKyAweDIxO1xuXG4gICAgICAvLyAxMy4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsLlxuICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2lzby0yMDIyLWpwJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBJU08yMDIySlBFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydpc28tMjAyMi1qcCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgSVNPMjAyMkpQRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICAvLyAxMi4zIHNoaWZ0X2ppc1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gU2hpZnRKSVNEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8vIHNoaWZ0X2ppcydzIGRlY29kZXIgaGFzIGFuIGFzc29jaWF0ZWQgc2hpZnRfamlzIGxlYWQgKGluaXRpYWxseVxuICAgIC8vIDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gc2hpZnRqaXNfbGVhZCA9IDB4MDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHNoaWZ0X2ppcyBsZWFkIGlzIG5vdCAweDAwLFxuICAgICAgLy8gc2V0IHNoaWZ0X2ppcyBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIHNoaWZ0amlzX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgc2hpZnRqaXNfbGVhZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIHNoaWZ0X2ppcyBsZWFkIGlzIDB4MDAsXG4gICAgICAvLyByZXR1cm4gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBzaGlmdGppc19sZWFkID09PSAweDAwKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIHNoaWZ0X2ppcyBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBzaGlmdF9qaXMgbGVhZCxcbiAgICAgIC8vIGxldCBwb2ludGVyIGJlIG51bGwsIHNldCBzaGlmdF9qaXMgbGVhZCB0byAweDAwLCBhbmQgdGhlbiBydW5cbiAgICAgIC8vIHRoZXNlIHN1YnN0ZXBzOlxuICAgICAgaWYgKHNoaWZ0amlzX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBzaGlmdGppc19sZWFkO1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIHNoaWZ0amlzX2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDEuIExldCBvZmZzZXQgYmUgMHg0MCwgaWYgYnl0ZSBpcyBsZXNzIHRoYW4gMHg3RiwgYW5kIDB4NDFcbiAgICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgb2Zmc2V0ID0gKGJpdGUgPCAweDdGKSA/IDB4NDAgOiAweDQxO1xuXG4gICAgICAgIC8vIDIuIExldCBsZWFkIG9mZnNldCBiZSAweDgxLCBpZiBsZWFkIGlzIGxlc3MgdGhhbiAweEEwLCBhbmRcbiAgICAgICAgLy8gMHhDMSBvdGhlcndpc2UuXG4gICAgICAgIHZhciBsZWFkX29mZnNldCA9IChsZWFkIDwgMHhBMCkgPyAweDgxIDogMHhDMTtcblxuICAgICAgICAvLyAzLiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDQwIHRvIDB4N0Ugb3IgMHg4MCB0byAweEZDLFxuICAgICAgICAvLyBzZXQgcG9pbnRlciB0byAobGVhZCDiiJIgbGVhZCBvZmZzZXQpIMOXIDE4OCArIGJ5dGUg4oiSIG9mZnNldC5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg0MCwgMHg3RSkgfHwgaW5SYW5nZShiaXRlLCAweDgwLCAweEZDKSlcbiAgICAgICAgICBwb2ludGVyID0gKGxlYWQgLSBsZWFkX29mZnNldCkgKiAxODggKyBiaXRlIC0gb2Zmc2V0O1xuXG4gICAgICAgIC8vIDQuIExldCBjb2RlIHBvaW50IGJlIG51bGwsIGlmIHBvaW50ZXIgaXMgbnVsbCwgYW5kIHRoZVxuICAgICAgICAvLyBpbmRleCBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGppczAyMDggb3RoZXJ3aXNlLlxuICAgICAgICB2YXIgY29kZV9wb2ludCA9IChwb2ludGVyID09PSBudWxsKSA/IG51bGwgOlxuICAgICAgICAgICAgICBpbmRleENvZGVQb2ludEZvcihwb2ludGVyLCBpbmRleCgnamlzMDIwOCcpKTtcblxuICAgICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIG51bGwgYW5kIHBvaW50ZXIgaXMgaW4gdGhlIHJhbmdlIDg4MzZcbiAgICAgICAgLy8gdG8gMTA1MjgsIHJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgMHhFMDAwICtcbiAgICAgICAgLy8gcG9pbnRlciDiiJIgODgzNi5cbiAgICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IG51bGwgJiYgcG9pbnRlciAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgaW5SYW5nZShwb2ludGVyLCA4ODM2LCAxMDUyOCkpXG4gICAgICAgICAgcmV0dXJuIDB4RTAwMCArIHBvaW50ZXIgLSA4ODM2O1xuXG4gICAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCBhbmQgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0b1xuICAgICAgICAvLyAweDdGLCBwcmVwZW5kIGJ5dGUgdG8gc3RyZWFtLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbCAmJiBpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICAgIHN0cmVhbS5wcmVwZW5kKGJpdGUpO1xuXG4gICAgICAgIC8vIDcuIElmIGNvZGUgcG9pbnQgaXMgbnVsbCwgcmV0dXJuIGVycm9yLlxuICAgICAgICBpZiAoY29kZV9wb2ludCA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgICAvLyA4LiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBJZiBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvIDB4ODAsIHJldHVybiBhIGNvZGUgcG9pbnRcbiAgICAgIC8vIHdob3NlIHZhbHVlIGlzIGJ5dGUuXG4gICAgICBpZiAoaW5SYW5nZShiaXRlLCAweDAwLCAweDgwKSlcbiAgICAgICAgcmV0dXJuIGJpdGU7XG5cbiAgICAgIC8vIDUuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4QTEgdG8gMHhERiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgMHhGRjYxICsgYnl0ZSDiiJIgMHhBMS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4QTEsIDB4REYpKVxuICAgICAgICByZXR1cm4gMHhGRjYxICsgYml0ZSAtIDB4QTE7XG5cbiAgICAgIC8vIDYuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4ODEgdG8gMHg5RiBvciAweEUwIHRvIDB4RkMsIHNldFxuICAgICAgLy8gc2hpZnRfamlzIGxlYWQgdG8gYnl0ZSBhbmQgcmV0dXJuIGNvbnRpbnVlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg4MSwgMHg5RikgfHwgaW5SYW5nZShiaXRlLCAweEUwLCAweEZDKSkge1xuICAgICAgICBzaGlmdGppc19sZWFkID0gYml0ZTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDcuIFJldHVybiBlcnJvci5cbiAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtFbmNvZGVyfVxuICAgKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnNcbiAgICovXG4gIGZ1bmN0aW9uIFNoaWZ0SklTRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVKzAwODAsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweDAwMDAsIDB4MDA4MCkpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50O1xuXG4gICAgICAvLyAzLiBJZiBjb2RlIHBvaW50IGlzIFUrMDBBNSwgcmV0dXJuIGJ5dGUgMHg1Qy5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDAwQTUpXG4gICAgICAgIHJldHVybiAweDVDO1xuXG4gICAgICAvLyA0LiBJZiBjb2RlIHBvaW50IGlzIFUrMjAzRSwgcmV0dXJuIGJ5dGUgMHg3RS5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSAweDIwM0UpXG4gICAgICAgIHJldHVybiAweDdFO1xuXG4gICAgICAvLyA1LiBJZiBjb2RlIHBvaW50IGlzIGluIHRoZSByYW5nZSBVK0ZGNjEgdG8gVStGRjlGLCByZXR1cm4gYVxuICAgICAgLy8gYnl0ZSB3aG9zZSB2YWx1ZSBpcyBjb2RlIHBvaW50IOKIkiAweEZGNjEgKyAweEExLlxuICAgICAgaWYgKGluUmFuZ2UoY29kZV9wb2ludCwgMHhGRjYxLCAweEZGOUYpKVxuICAgICAgICByZXR1cm4gY29kZV9wb2ludCAtIDB4RkY2MSArIDB4QTE7XG5cbiAgICAgIC8vIDYuIElmIGNvZGUgcG9pbnQgaXMgVSsyMDIyLCBzZXQgaXQgdG8gVStGRjBELlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IDB4MjAyMilcbiAgICAgICAgY29kZV9wb2ludCA9IDB4RkYwRDtcblxuICAgICAgLy8gNy4gTGV0IHBvaW50ZXIgYmUgdGhlIGluZGV4IHNoaWZ0X2ppcyBwb2ludGVyIGZvciBjb2RlIHBvaW50LlxuICAgICAgdmFyIHBvaW50ZXIgPSBpbmRleFNoaWZ0SklTUG9pbnRlckZvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gOC4gSWYgcG9pbnRlciBpcyBudWxsLCByZXR1cm4gZXJyb3Igd2l0aCBjb2RlIHBvaW50LlxuICAgICAgaWYgKHBvaW50ZXIgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG5cbiAgICAgIC8vIDkuIExldCBsZWFkIGJlIHBvaW50ZXIgLyAxODguXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxODgpO1xuXG4gICAgICAvLyAxMC4gTGV0IGxlYWQgb2Zmc2V0IGJlIDB4ODEsIGlmIGxlYWQgaXMgbGVzcyB0aGFuIDB4MUYsIGFuZFxuICAgICAgLy8gMHhDMSBvdGhlcndpc2UuXG4gICAgICB2YXIgbGVhZF9vZmZzZXQgPSAobGVhZCA8IDB4MUYpID8gMHg4MSA6IDB4QzE7XG5cbiAgICAgIC8vIDExLiBMZXQgdHJhaWwgYmUgcG9pbnRlciAlIDE4OC5cbiAgICAgIHZhciB0cmFpbCA9IHBvaW50ZXIgJSAxODg7XG5cbiAgICAgIC8vIDEyLiBMZXQgb2Zmc2V0IGJlIDB4NDAsIGlmIHRyYWlsIGlzIGxlc3MgdGhhbiAweDNGLCBhbmQgMHg0MVxuICAgICAgLy8gb3RoZXJ3aXNlLlxuICAgICAgdmFyIG9mZnNldCA9ICh0cmFpbCA8IDB4M0YpID8gMHg0MCA6IDB4NDE7XG5cbiAgICAgIC8vIDEzLiBSZXR1cm4gdHdvIGJ5dGVzIHdob3NlIHZhbHVlcyBhcmUgbGVhZCArIGxlYWQgb2Zmc2V0IGFuZFxuICAgICAgLy8gdHJhaWwgKyBvZmZzZXQuXG4gICAgICByZXR1cm4gW2xlYWQgKyBsZWFkX29mZnNldCwgdHJhaWwgKyBvZmZzZXRdO1xuICAgIH07XG4gIH1cblxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWydzaGlmdF9qaXMnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFNoaWZ0SklTRW5jb2RlcihvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1snc2hpZnRfamlzJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBTaGlmdEpJU0RlY29kZXIob3B0aW9ucyk7XG4gIH07XG5cbiAgLy9cbiAgLy8gMTMuIExlZ2FjeSBtdWx0aS1ieXRlIEtvcmVhbiBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxMy4xIGV1Yy1rclxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gRVVDS1JEZWNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuXG4gICAgLy8gZXVjLWtyJ3MgZGVjb2RlciBoYXMgYW4gYXNzb2NpYXRlZCBldWMta3IgbGVhZCAoaW5pdGlhbGx5IDB4MDApLlxuICAgIHZhciAvKiogQHR5cGUge251bWJlcn0gKi8gZXVja3JfbGVhZCA9IDB4MDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTdHJlYW19IHN0cmVhbSBUaGUgc3RyZWFtIG9mIGJ5dGVzIGJlaW5nIGRlY29kZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdGUgVGhlIG5leHQgYnl0ZSByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHs/KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBUaGUgbmV4dCBjb2RlIHBvaW50KHMpXG4gICAgICogICAgIGRlY29kZWQsIG9yIG51bGwgaWYgbm90IGVub3VnaCBkYXRhIGV4aXN0cyBpbiB0aGUgaW5wdXRcbiAgICAgKiAgICAgc3RyZWFtIHRvIGRlY29kZSBhIGNvbXBsZXRlIGNvZGUgcG9pbnQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBiaXRlKSB7XG4gICAgICAvLyAxLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGV1Yy1rciBsZWFkIGlzIG5vdCAweDAwLCBzZXRcbiAgICAgIC8vIGV1Yy1rciBsZWFkIHRvIDB4MDAgYW5kIHJldHVybiBlcnJvci5cbiAgICAgIGlmIChiaXRlID09PSBlbmRfb2Zfc3RyZWFtICYmIGV1Y2tyX2xlYWQgIT09IDApIHtcbiAgICAgICAgZXVja3JfbGVhZCA9IDB4MDA7XG4gICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBJZiBieXRlIGlzIGVuZC1vZi1zdHJlYW0gYW5kIGV1Yy1rciBsZWFkIGlzIDB4MDAsIHJldHVyblxuICAgICAgLy8gZmluaXNoZWQuXG4gICAgICBpZiAoYml0ZSA9PT0gZW5kX29mX3N0cmVhbSAmJiBldWNrcl9sZWFkID09PSAwKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDMuIElmIGV1Yy1rciBsZWFkIGlzIG5vdCAweDAwLCBsZXQgbGVhZCBiZSBldWMta3IgbGVhZCwgbGV0XG4gICAgICAvLyBwb2ludGVyIGJlIG51bGwsIHNldCBldWMta3IgbGVhZCB0byAweDAwLCBhbmQgdGhlbiBydW4gdGhlc2VcbiAgICAgIC8vIHN1YnN0ZXBzOlxuICAgICAgaWYgKGV1Y2tyX2xlYWQgIT09IDB4MDApIHtcbiAgICAgICAgdmFyIGxlYWQgPSBldWNrcl9sZWFkO1xuICAgICAgICB2YXIgcG9pbnRlciA9IG51bGw7XG4gICAgICAgIGV1Y2tyX2xlYWQgPSAweDAwO1xuXG4gICAgICAgIC8vIDEuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4NDEgdG8gMHhGRSwgc2V0IHBvaW50ZXIgdG9cbiAgICAgICAgLy8gKGxlYWQg4oiSIDB4ODEpIMOXIDE5MCArIChieXRlIOKIkiAweDQxKS5cbiAgICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHg0MSwgMHhGRSkpXG4gICAgICAgICAgcG9pbnRlciA9IChsZWFkIC0gMHg4MSkgKiAxOTAgKyAoYml0ZSAtIDB4NDEpO1xuXG4gICAgICAgIC8vIDIuIExldCBjb2RlIHBvaW50IGJlIG51bGwsIGlmIHBvaW50ZXIgaXMgbnVsbCwgYW5kIHRoZVxuICAgICAgICAvLyBpbmRleCBjb2RlIHBvaW50IGZvciBwb2ludGVyIGluIGluZGV4IGV1Yy1rciBvdGhlcndpc2UuXG4gICAgICAgIHZhciBjb2RlX3BvaW50ID0gKHBvaW50ZXIgPT09IG51bGwpID8gbnVsbCA6IGluZGV4Q29kZVBvaW50Rm9yKHBvaW50ZXIsIGluZGV4KCdldWMta3InKSk7XG5cbiAgICAgICAgLy8gMy4gSWYgY29kZSBwb2ludCBpcyBudWxsIGFuZCBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIHRvXG4gICAgICAgIC8vIDB4N0YsIHByZXBlbmQgYnl0ZSB0byBzdHJlYW0uXG4gICAgICAgIGlmIChwb2ludGVyID09PSBudWxsICYmIGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgICAgc3RyZWFtLnByZXBlbmQoYml0ZSk7XG5cbiAgICAgICAgLy8gNC4gSWYgY29kZSBwb2ludCBpcyBudWxsLCByZXR1cm4gZXJyb3IuXG4gICAgICAgIGlmIChjb2RlX3BvaW50ID09PSBudWxsKVxuICAgICAgICAgIHJldHVybiBkZWNvZGVyRXJyb3IoZmF0YWwpO1xuXG4gICAgICAgIC8vIDUuIFJldHVybiBhIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIElmIGJ5dGUgaXMgaW4gdGhlIHJhbmdlIDB4MDAgdG8gMHg3RiwgcmV0dXJuIGEgY29kZSBwb2ludFxuICAgICAgLy8gd2hvc2UgdmFsdWUgaXMgYnl0ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4MDAsIDB4N0YpKVxuICAgICAgICByZXR1cm4gYml0ZTtcblxuICAgICAgLy8gNS4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHg4MSB0byAweEZFLCBzZXQgZXVjLWtyIGxlYWQgdG9cbiAgICAgIC8vIGJ5dGUgYW5kIHJldHVybiBjb250aW51ZS5cbiAgICAgIGlmIChpblJhbmdlKGJpdGUsIDB4ODEsIDB4RkUpKSB7XG4gICAgICAgIGV1Y2tyX2xlYWQgPSBiaXRlO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gNi4gUmV0dXJuIGVycm9yLlxuICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gRVVDS1JFbmNvZGVyKG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gSW5wdXQgc3RyZWFtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3BvaW50IE5leHQgY29kZSBwb2ludCByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAgICAgKiBAcmV0dXJuIHsobnVtYmVyfCFBcnJheS48bnVtYmVyPil9IEJ5dGUocykgdG8gZW1pdC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGNvZGVfcG9pbnQpIHtcbiAgICAgIC8vIDEuIElmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIExldCBwb2ludGVyIGJlIHRoZSBpbmRleCBwb2ludGVyIGZvciBjb2RlIHBvaW50IGluIGluZGV4XG4gICAgICAvLyBldWMta3IuXG4gICAgICB2YXIgcG9pbnRlciA9IGluZGV4UG9pbnRlckZvcihjb2RlX3BvaW50LCBpbmRleCgnZXVjLWtyJykpO1xuXG4gICAgICAvLyA0LiBJZiBwb2ludGVyIGlzIG51bGwsIHJldHVybiBlcnJvciB3aXRoIGNvZGUgcG9pbnQuXG4gICAgICBpZiAocG9pbnRlciA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGVuY29kZXJFcnJvcihjb2RlX3BvaW50KTtcblxuICAgICAgLy8gNS4gTGV0IGxlYWQgYmUgcG9pbnRlciAvIDE5MCArIDB4ODEuXG4gICAgICB2YXIgbGVhZCA9IGRpdihwb2ludGVyLCAxOTApICsgMHg4MTtcblxuICAgICAgLy8gNi4gTGV0IHRyYWlsIGJlIHBvaW50ZXIgJSAxOTAgKyAweDQxLlxuICAgICAgdmFyIHRyYWlsID0gKHBvaW50ZXIgJSAxOTApICsgMHg0MTtcblxuICAgICAgLy8gNy4gUmV0dXJuIHR3byBieXRlcyB3aG9zZSB2YWx1ZXMgYXJlIGxlYWQgYW5kIHRyYWlsLlxuICAgICAgcmV0dXJuIFtsZWFkLCB0cmFpbF07XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ2V1Yy1rciddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgRVVDS1JFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWydldWMta3InXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEVVQ0tSRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuXG4gIC8vXG4gIC8vIDE0LiBMZWdhY3kgbWlzY2VsbGFuZW91cyBlbmNvZGluZ3NcbiAgLy9cblxuICAvLyAxNC4xIHJlcGxhY2VtZW50XG5cbiAgLy8gTm90IG5lZWRlZCAtIEFQSSB0aHJvd3MgUmFuZ2VFcnJvclxuXG4gIC8vIDE0LjIgdXRmLTE2XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlX3VuaXRcbiAgICogQHBhcmFtIHtib29sZWFufSB1dGYxNmJlXG4gICAqIEByZXR1cm4geyFBcnJheS48bnVtYmVyPn0gYnl0ZXNcbiAgICovXG4gIGZ1bmN0aW9uIGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoY29kZV91bml0LCB1dGYxNmJlKSB7XG4gICAgLy8gMS4gTGV0IGJ5dGUxIGJlIGNvZGUgdW5pdCA+PiA4LlxuICAgIHZhciBieXRlMSA9IGNvZGVfdW5pdCA+PiA4O1xuXG4gICAgLy8gMi4gTGV0IGJ5dGUyIGJlIGNvZGUgdW5pdCAmIDB4MDBGRi5cbiAgICB2YXIgYnl0ZTIgPSBjb2RlX3VuaXQgJiAweDAwRkY7XG5cbiAgICAvLyAzLiBUaGVuIHJldHVybiB0aGUgYnl0ZXMgaW4gb3JkZXI6XG4gICAgICAgIC8vIHV0Zi0xNmJlIGZsYWcgaXMgc2V0OiBieXRlMSwgdGhlbiBieXRlMi5cbiAgICBpZiAodXRmMTZiZSlcbiAgICAgIHJldHVybiBbYnl0ZTEsIGJ5dGUyXTtcbiAgICAvLyB1dGYtMTZiZSBmbGFnIGlzIHVuc2V0OiBieXRlMiwgdGhlbiBieXRlMS5cbiAgICByZXR1cm4gW2J5dGUyLCBieXRlMV07XG4gIH1cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBpbXBsZW1lbnRzIHtEZWNvZGVyfVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHV0ZjE2X2JlIFRydWUgaWYgYmlnLWVuZGlhbiwgZmFsc2UgaWYgbGl0dGxlLWVuZGlhbi5cbiAgICogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zXG4gICAqL1xuICBmdW5jdGlvbiBVVEYxNkRlY29kZXIodXRmMTZfYmUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZmF0YWwgPSBvcHRpb25zLmZhdGFsO1xuICAgIHZhciAvKiogQHR5cGUgez9udW1iZXJ9ICovIHV0ZjE2X2xlYWRfYnl0ZSA9IG51bGwsXG4gICAgICAgIC8qKiBAdHlwZSB7P251bWJlcn0gKi8gdXRmMTZfbGVhZF9zdXJyb2dhdGUgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3RyZWFtfSBzdHJlYW0gVGhlIHN0cmVhbSBvZiBieXRlcyBiZWluZyBkZWNvZGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRlIFRoZSBuZXh0IGJ5dGUgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7PyhudW1iZXJ8IUFycmF5LjxudW1iZXI+KX0gVGhlIG5leHQgY29kZSBwb2ludChzKVxuICAgICAqICAgICBkZWNvZGVkLCBvciBudWxsIGlmIG5vdCBlbm91Z2ggZGF0YSBleGlzdHMgaW4gdGhlIGlucHV0XG4gICAgICogICAgIHN0cmVhbSB0byBkZWNvZGUgYSBjb21wbGV0ZSBjb2RlIHBvaW50LlxuICAgICAqL1xuICAgIHRoaXMuaGFuZGxlciA9IGZ1bmN0aW9uKHN0cmVhbSwgYml0ZSkge1xuICAgICAgLy8gMS4gSWYgYnl0ZSBpcyBlbmQtb2Ytc3RyZWFtIGFuZCBlaXRoZXIgdXRmLTE2IGxlYWQgYnl0ZSBvclxuICAgICAgLy8gdXRmLTE2IGxlYWQgc3Vycm9nYXRlIGlzIG5vdCBudWxsLCBzZXQgdXRmLTE2IGxlYWQgYnl0ZSBhbmRcbiAgICAgIC8vIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuIGVycm9yLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgKHV0ZjE2X2xlYWRfYnl0ZSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSBhbmQgdXRmLTE2IGxlYWQgYnl0ZSBhbmQgdXRmLTE2XG4gICAgICAvLyBsZWFkIHN1cnJvZ2F0ZSBhcmUgbnVsbCwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0gJiYgdXRmMTZfbGVhZF9ieXRlID09PSBudWxsICYmXG4gICAgICAgICAgdXRmMTZfbGVhZF9zdXJyb2dhdGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZpbmlzaGVkO1xuICAgICAgfVxuXG4gICAgICAvLyAzLiBJZiB1dGYtMTYgbGVhZCBieXRlIGlzIG51bGwsIHNldCB1dGYtMTYgbGVhZCBieXRlIHRvIGJ5dGVcbiAgICAgIC8vIGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAodXRmMTZfbGVhZF9ieXRlID09PSBudWxsKSB7XG4gICAgICAgIHV0ZjE2X2xlYWRfYnl0ZSA9IGJpdGU7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBMZXQgY29kZSB1bml0IGJlIHRoZSByZXN1bHQgb2Y6XG4gICAgICB2YXIgY29kZV91bml0O1xuICAgICAgaWYgKHV0ZjE2X2JlKSB7XG4gICAgICAgIC8vIHV0Zi0xNmJlIGRlY29kZXIgZmxhZyBpcyBzZXRcbiAgICAgICAgLy8gICAodXRmLTE2IGxlYWQgYnl0ZSA8PCA4KSArIGJ5dGUuXG4gICAgICAgIGNvZGVfdW5pdCA9ICh1dGYxNl9sZWFkX2J5dGUgPDwgOCkgKyBiaXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdXRmLTE2YmUgZGVjb2RlciBmbGFnIGlzIHVuc2V0XG4gICAgICAgIC8vICAgKGJ5dGUgPDwgOCkgKyB1dGYtMTYgbGVhZCBieXRlLlxuICAgICAgICBjb2RlX3VuaXQgPSAoYml0ZSA8PCA4KSArIHV0ZjE2X2xlYWRfYnl0ZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZW4gc2V0IHV0Zi0xNiBsZWFkIGJ5dGUgdG8gbnVsbC5cbiAgICAgIHV0ZjE2X2xlYWRfYnl0ZSA9IG51bGw7XG5cbiAgICAgIC8vIDUuIElmIHV0Zi0xNiBsZWFkIHN1cnJvZ2F0ZSBpcyBub3QgbnVsbCwgbGV0IGxlYWQgc3Vycm9nYXRlXG4gICAgICAvLyBiZSB1dGYtMTYgbGVhZCBzdXJyb2dhdGUsIHNldCB1dGYtMTYgbGVhZCBzdXJyb2dhdGUgdG8gbnVsbCxcbiAgICAgIC8vIGFuZCB0aGVuIHJ1biB0aGVzZSBzdWJzdGVwczpcbiAgICAgIGlmICh1dGYxNl9sZWFkX3N1cnJvZ2F0ZSAhPT0gbnVsbCkge1xuICAgICAgICB2YXIgbGVhZF9zdXJyb2dhdGUgPSB1dGYxNl9sZWFkX3N1cnJvZ2F0ZTtcbiAgICAgICAgdXRmMTZfbGVhZF9zdXJyb2dhdGUgPSBudWxsO1xuXG4gICAgICAgIC8vIDEuIElmIGNvZGUgdW5pdCBpcyBpbiB0aGUgcmFuZ2UgVStEQzAwIHRvIFUrREZGRiwgcmV0dXJuIGFcbiAgICAgICAgLy8gY29kZSBwb2ludCB3aG9zZSB2YWx1ZSBpcyAweDEwMDAwICsgKChsZWFkIHN1cnJvZ2F0ZSDiiJJcbiAgICAgICAgLy8gMHhEODAwKSA8PCAxMCkgKyAoY29kZSB1bml0IOKIkiAweERDMDApLlxuICAgICAgICBpZiAoaW5SYW5nZShjb2RlX3VuaXQsIDB4REMwMCwgMHhERkZGKSkge1xuICAgICAgICAgIHJldHVybiAweDEwMDAwICsgKGxlYWRfc3Vycm9nYXRlIC0gMHhEODAwKSAqIDB4NDAwICtcbiAgICAgICAgICAgICAgKGNvZGVfdW5pdCAtIDB4REMwMCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBQcmVwZW5kIHRoZSBzZXF1ZW5jZSByZXN1bHRpbmcgb2YgY29udmVydGluZyBjb2RlIHVuaXRcbiAgICAgICAgLy8gdG8gYnl0ZXMgdXNpbmcgdXRmLTE2YmUgZGVjb2RlciBmbGFnIHRvIHN0cmVhbSBhbmQgcmV0dXJuXG4gICAgICAgIC8vIGVycm9yLlxuICAgICAgICBzdHJlYW0ucHJlcGVuZChjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKGNvZGVfdW5pdCwgdXRmMTZfYmUpKTtcbiAgICAgICAgcmV0dXJuIGRlY29kZXJFcnJvcihmYXRhbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIDYuIElmIGNvZGUgdW5pdCBpcyBpbiB0aGUgcmFuZ2UgVStEODAwIHRvIFUrREJGRiwgc2V0IHV0Zi0xNlxuICAgICAgLy8gbGVhZCBzdXJyb2dhdGUgdG8gY29kZSB1bml0IGFuZCByZXR1cm4gY29udGludWUuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3VuaXQsIDB4RDgwMCwgMHhEQkZGKSkge1xuICAgICAgICB1dGYxNl9sZWFkX3N1cnJvZ2F0ZSA9IGNvZGVfdW5pdDtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIDcuIElmIGNvZGUgdW5pdCBpcyBpbiB0aGUgcmFuZ2UgVStEQzAwIHRvIFUrREZGRiwgcmV0dXJuXG4gICAgICAvLyBlcnJvci5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfdW5pdCwgMHhEQzAwLCAweERGRkYpKVxuICAgICAgICByZXR1cm4gZGVjb2RlckVycm9yKGZhdGFsKTtcblxuICAgICAgLy8gOC4gUmV0dXJuIGNvZGUgcG9pbnQgY29kZSB1bml0LlxuICAgICAgcmV0dXJuIGNvZGVfdW5pdDtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7RW5jb2Rlcn1cbiAgICogQHBhcmFtIHtib29sZWFufSB1dGYxNl9iZSBUcnVlIGlmIGJpZy1lbmRpYW4sIGZhbHNlIGlmIGxpdHRsZS1lbmRpYW4uXG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gVVRGMTZFbmNvZGVyKHV0ZjE2X2JlLCBvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLiBJZiBjb2RlIHBvaW50IGlzIGVuZC1vZi1zdHJlYW0sIHJldHVybiBmaW5pc2hlZC5cbiAgICAgIGlmIChjb2RlX3BvaW50ID09PSBlbmRfb2Zfc3RyZWFtKVxuICAgICAgICByZXR1cm4gZmluaXNoZWQ7XG5cbiAgICAgIC8vIDIuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrMDAwMCB0byBVK0ZGRkYsIHJldHVybiB0aGVcbiAgICAgIC8vIHNlcXVlbmNlIHJlc3VsdGluZyBvZiBjb252ZXJ0aW5nIGNvZGUgcG9pbnQgdG8gYnl0ZXMgdXNpbmdcbiAgICAgIC8vIHV0Zi0xNmJlIGVuY29kZXIgZmxhZy5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHhGRkZGKSlcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoY29kZV9wb2ludCwgdXRmMTZfYmUpO1xuXG4gICAgICAvLyAzLiBMZXQgbGVhZCBiZSAoKGNvZGUgcG9pbnQg4oiSIDB4MTAwMDApID4+IDEwKSArIDB4RDgwMCxcbiAgICAgIC8vIGNvbnZlcnRlZCB0byBieXRlcyB1c2luZyB1dGYtMTZiZSBlbmNvZGVyIGZsYWcuXG4gICAgICB2YXIgbGVhZCA9IGNvbnZlcnRDb2RlVW5pdFRvQnl0ZXMoXG4gICAgICAgICgoY29kZV9wb2ludCAtIDB4MTAwMDApID4+IDEwKSArIDB4RDgwMCwgdXRmMTZfYmUpO1xuXG4gICAgICAvLyA0LiBMZXQgdHJhaWwgYmUgKChjb2RlIHBvaW50IOKIkiAweDEwMDAwKSAmIDB4M0ZGKSArIDB4REMwMCxcbiAgICAgIC8vIGNvbnZlcnRlZCB0byBieXRlcyB1c2luZyB1dGYtMTZiZSBlbmNvZGVyIGZsYWcuXG4gICAgICB2YXIgdHJhaWwgPSBjb252ZXJ0Q29kZVVuaXRUb0J5dGVzKFxuICAgICAgICAoKGNvZGVfcG9pbnQgLSAweDEwMDAwKSAmIDB4M0ZGKSArIDB4REMwMCwgdXRmMTZfYmUpO1xuXG4gICAgICAvLyA1LiBSZXR1cm4gYSBieXRlIHNlcXVlbmNlIG9mIGxlYWQgZm9sbG93ZWQgYnkgdHJhaWwuXG4gICAgICByZXR1cm4gbGVhZC5jb25jYXQodHJhaWwpO1xuICAgIH07XG4gIH1cblxuICAvLyAxNC4zIHV0Zi0xNmJlXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3V0Zi0xNmJlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkVuY29kZXIodHJ1ZSwgb3B0aW9ucyk7XG4gIH07XG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZGVjb2RlcnNbJ3V0Zi0xNmJlJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBVVEYxNkRlY29kZXIodHJ1ZSwgb3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTQuNCB1dGYtMTZsZVxuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGVuY29kZXJzWyd1dGYtMTZsZSddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgVVRGMTZFbmNvZGVyKGZhbHNlLCBvcHRpb25zKTtcbiAgfTtcbiAgLyoqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9ucyAqL1xuICBkZWNvZGVyc1sndXRmLTE2bGUnXSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IFVURjE2RGVjb2RlcihmYWxzZSwgb3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gMTQuNSB4LXVzZXItZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0RlY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gWFVzZXJEZWZpbmVkRGVjb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIFRoZSBzdHJlYW0gb2YgYnl0ZXMgYmVpbmcgZGVjb2RlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0ZSBUaGUgbmV4dCBieXRlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLlxuICAgICAqIEByZXR1cm4gez8obnVtYmVyfCFBcnJheS48bnVtYmVyPil9IFRoZSBuZXh0IGNvZGUgcG9pbnQocylcbiAgICAgKiAgICAgZGVjb2RlZCwgb3IgbnVsbCBpZiBub3QgZW5vdWdoIGRhdGEgZXhpc3RzIGluIHRoZSBpbnB1dFxuICAgICAqICAgICBzdHJlYW0gdG8gZGVjb2RlIGEgY29tcGxldGUgY29kZSBwb2ludC5cbiAgICAgKi9cbiAgICB0aGlzLmhhbmRsZXIgPSBmdW5jdGlvbihzdHJlYW0sIGJpdGUpIHtcbiAgICAgIC8vIDEuIElmIGJ5dGUgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGJpdGUgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgYnl0ZSBpcyBpbiB0aGUgcmFuZ2UgMHgwMCB0byAweDdGLCByZXR1cm4gYSBjb2RlIHBvaW50XG4gICAgICAvLyB3aG9zZSB2YWx1ZSBpcyBieXRlLlxuICAgICAgaWYgKGluUmFuZ2UoYml0ZSwgMHgwMCwgMHg3RikpXG4gICAgICAgIHJldHVybiBiaXRlO1xuXG4gICAgICAvLyAzLiBSZXR1cm4gYSBjb2RlIHBvaW50IHdob3NlIHZhbHVlIGlzIDB4Rjc4MCArIGJ5dGUg4oiSIDB4ODAuXG4gICAgICByZXR1cm4gMHhGNzgwICsgYml0ZSAtIDB4ODA7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge0VuY29kZXJ9XG4gICAqIEBwYXJhbSB7e2ZhdGFsOiBib29sZWFufX0gb3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gWFVzZXJEZWZpbmVkRW5jb2RlcihvcHRpb25zKSB7XG4gICAgdmFyIGZhdGFsID0gb3B0aW9ucy5mYXRhbDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1N0cmVhbX0gc3RyZWFtIElucHV0IHN0cmVhbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29kZV9wb2ludCBOZXh0IGNvZGUgcG9pbnQgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gICAgICogQHJldHVybiB7KG51bWJlcnwhQXJyYXkuPG51bWJlcj4pfSBCeXRlKHMpIHRvIGVtaXQuXG4gICAgICovXG4gICAgdGhpcy5oYW5kbGVyID0gZnVuY3Rpb24oc3RyZWFtLCBjb2RlX3BvaW50KSB7XG4gICAgICAvLyAxLklmIGNvZGUgcG9pbnQgaXMgZW5kLW9mLXN0cmVhbSwgcmV0dXJuIGZpbmlzaGVkLlxuICAgICAgaWYgKGNvZGVfcG9pbnQgPT09IGVuZF9vZl9zdHJlYW0pXG4gICAgICAgIHJldHVybiBmaW5pc2hlZDtcblxuICAgICAgLy8gMi4gSWYgY29kZSBwb2ludCBpcyBpbiB0aGUgcmFuZ2UgVSswMDAwIHRvIFUrMDA3RiwgcmV0dXJuIGFcbiAgICAgIC8vIGJ5dGUgd2hvc2UgdmFsdWUgaXMgY29kZSBwb2ludC5cbiAgICAgIGlmIChpblJhbmdlKGNvZGVfcG9pbnQsIDB4MDAwMCwgMHgwMDdGKSlcbiAgICAgICAgcmV0dXJuIGNvZGVfcG9pbnQ7XG5cbiAgICAgIC8vIDMuIElmIGNvZGUgcG9pbnQgaXMgaW4gdGhlIHJhbmdlIFUrRjc4MCB0byBVK0Y3RkYsIHJldHVybiBhXG4gICAgICAvLyBieXRlIHdob3NlIHZhbHVlIGlzIGNvZGUgcG9pbnQg4oiSIDB4Rjc4MCArIDB4ODAuXG4gICAgICBpZiAoaW5SYW5nZShjb2RlX3BvaW50LCAweEY3ODAsIDB4RjdGRikpXG4gICAgICAgIHJldHVybiBjb2RlX3BvaW50IC0gMHhGNzgwICsgMHg4MDtcblxuICAgICAgLy8gNC4gUmV0dXJuIGVycm9yIHdpdGggY29kZSBwb2ludC5cbiAgICAgIHJldHVybiBlbmNvZGVyRXJyb3IoY29kZV9wb2ludCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tmYXRhbDogYm9vbGVhbn19IG9wdGlvbnMgKi9cbiAgZW5jb2RlcnNbJ3gtdXNlci1kZWZpbmVkJ10gPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBYVXNlckRlZmluZWRFbmNvZGVyKG9wdGlvbnMpO1xuICB9O1xuICAvKiogQHBhcmFtIHt7ZmF0YWw6IGJvb2xlYW59fSBvcHRpb25zICovXG4gIGRlY29kZXJzWyd4LXVzZXItZGVmaW5lZCddID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgWFVzZXJEZWZpbmVkRGVjb2RlcihvcHRpb25zKTtcbiAgfTtcblxuICBpZiAoIWdsb2JhbFsnVGV4dEVuY29kZXInXSlcbiAgICBnbG9iYWxbJ1RleHRFbmNvZGVyJ10gPSBUZXh0RW5jb2RlcjtcbiAgaWYgKCFnbG9iYWxbJ1RleHREZWNvZGVyJ10pXG4gICAgZ2xvYmFsWydUZXh0RGVjb2RlciddID0gVGV4dERlY29kZXI7XG59KHRoaXMpKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuV1JJVEUgPSBleHBvcnRzLlJFQUQgPSBleHBvcnRzLkRyaXZlciA9IHVuZGVmaW5lZDtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJyk7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMik7XG5cbnZhciBfZ2V0MiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9nZXQnKTtcblxudmFyIF9nZXQzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0Mik7XG5cbnZhciBfaW5oZXJpdHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5cbnZhciBfaW5oZXJpdHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5oZXJpdHMyKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfc2Vzc2lvbiA9IHJlcXVpcmUoJy4vc2Vzc2lvbicpO1xuXG52YXIgX3Nlc3Npb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2Vzc2lvbik7XG5cbnZhciBfcG9vbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvcG9vbCcpO1xuXG52YXIgX3Bvb2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcG9vbCk7XG5cbnZhciBfY29ubmVjdG9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9jb25uZWN0b3InKTtcblxudmFyIF9zdHJlYW1PYnNlcnZlciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtLW9ic2VydmVyJyk7XG5cbnZhciBfc3RyZWFtT2JzZXJ2ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyZWFtT2JzZXJ2ZXIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi9lcnJvcicpO1xuXG52YXIgX2Nvbm5lY3Rpb25Qcm92aWRlcnMgPSByZXF1aXJlKCcuL2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUkVBRCA9ICdSRUFEJyxcbiAgICBXUklURSA9ICdXUklURSc7XG4vKipcbiAqIEEgZHJpdmVyIG1haW50YWlucyBvbmUgb3IgbW9yZSB7QGxpbmsgU2Vzc2lvbiBzZXNzaW9uc30gd2l0aCBhIHJlbW90ZVxuICogTmVvNGogaW5zdGFuY2UuIFRocm91Z2ggdGhlIHtAbGluayBTZXNzaW9uIHNlc3Npb25zfSB5b3UgY2FuIHNlbmQgc3RhdGVtZW50c1xuICogYW5kIHJldHJpZXZlIHJlc3VsdHMgZnJvbSB0aGUgZGF0YWJhc2UuXG4gKlxuICogRHJpdmVycyBhcmUgcmVhc29uYWJseSBleHBlbnNpdmUgdG8gY3JlYXRlIC0geW91IHNob3VsZCBzdHJpdmUgdG8ga2VlcCBvbmVcbiAqIGRyaXZlciBpbnN0YW5jZSBhcm91bmQgcGVyIE5lbzRqIEluc3RhbmNlIHlvdSBjb25uZWN0IHRvLlxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cblxudmFyIERyaXZlciA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIFlvdSBzaG91bGQgbm90IGJlIGNhbGxpbmcgdGhpcyBkaXJlY3RseSwgaW5zdGVhZCB1c2Uge0BsaW5rIGRyaXZlcn0uXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyQWdlbnRcbiAgICogQHBhcmFtIHtPYmplY3R9IHRva2VuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWdcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBEcml2ZXIodXJsLCB1c2VyQWdlbnQpIHtcbiAgICB2YXIgdG9rZW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHt9O1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIERyaXZlcik7XG5cbiAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgdGhpcy5fdXNlckFnZW50ID0gdXNlckFnZW50O1xuICAgIHRoaXMuX29wZW5TZXNzaW9ucyA9IHt9O1xuICAgIHRoaXMuX3Nlc3Npb25JZEdlbmVyYXRvciA9IDA7XG4gICAgdGhpcy5fdG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5fcG9vbCA9IG5ldyBfcG9vbDIuZGVmYXVsdCh0aGlzLl9jcmVhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksIHRoaXMuX2Rlc3Ryb3lDb25uZWN0aW9uLmJpbmQodGhpcyksIERyaXZlci5fdmFsaWRhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksIGNvbmZpZy5jb25uZWN0aW9uUG9vbFNpemUpO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlciA9IHRoaXMuX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcih1cmwsIHRoaXMuX3Bvb2wsIHRoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7Q29ubmVjdGlvbn0gbmV3IGNvbm5lY3Rvci1hcGkgc2Vzc2lvbiBpbnN0YW5jZSwgYSBsb3cgbGV2ZWwgc2Vzc2lvbiBBUEkuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKERyaXZlciwgW3tcbiAgICBrZXk6ICdfY3JlYXRlQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVDb25uZWN0aW9uKHVybCwgcmVsZWFzZSkge1xuICAgICAgdmFyIHNlc3Npb25JZCA9IHRoaXMuX3Nlc3Npb25JZEdlbmVyYXRvcisrO1xuICAgICAgdmFyIGNvbm4gPSAoMCwgX2Nvbm5lY3Rvci5jb25uZWN0KSh1cmwsIHRoaXMuX2NvbmZpZyk7XG4gICAgICB2YXIgc3RyZWFtT2JzZXJ2ZXIgPSBuZXcgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzLCBjb25uKTtcbiAgICAgIGNvbm4uaW5pdGlhbGl6ZSh0aGlzLl91c2VyQWdlbnQsIHRoaXMuX3Rva2VuLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgICBjb25uLl9pZCA9IHNlc3Npb25JZDtcbiAgICAgIGNvbm4uX3JlbGVhc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZWxlYXNlKHVybCwgY29ubik7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXSA9IGNvbm47XG4gICAgICByZXR1cm4gY29ubjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayB0aGF0IGEgY29ubmVjdGlvbiBpcyB1c2FibGVcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKiovXG5cbiAgfSwge1xuICAgIGtleTogJ19kZXN0cm95Q29ubmVjdGlvbicsXG5cblxuICAgIC8qKlxuICAgICAqIERpc3Bvc2Ugb2YgYSBsaXZlIHNlc3Npb24sIGNsb3NpbmcgYW55IGFzc29jaWF0ZWQgcmVzb3VyY2VzLlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIHZhbHVlOiBmdW5jdGlvbiBfZGVzdHJveUNvbm5lY3Rpb24oY29ubikge1xuICAgICAgZGVsZXRlIHRoaXMuX29wZW5TZXNzaW9uc1tjb25uLl9pZF07XG4gICAgICBjb25uLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWNxdWlyZSBhIHNlc3Npb24gdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZGF0YWJhc2UuIFRoZSBkcml2ZXIgbWFpbnRhaW5zXG4gICAgICogYSBwb29sIG9mIHNlc3Npb25zLCBzbyBjYWxsaW5nIHRoaXMgbWV0aG9kIGlzIG5vcm1hbGx5IGNoZWFwIGJlY2F1c2UgeW91XG4gICAgICogd2lsbCBiZSBwdWxsaW5nIGEgc2Vzc2lvbiBvdXQgb2YgdGhlIGNvbW1vbiBwb29sLlxuICAgICAqXG4gICAgICogVGhpcyBjb21lcyB3aXRoIHNvbWUgcmVzcG9uc2liaWxpdHkgLSBtYWtlIHN1cmUgeW91IGFsd2F5cyBjYWxsXG4gICAgICoge0BsaW5rIFNlc3Npb24jY2xvc2UoKX0gd2hlbiB5b3UgYXJlIGRvbmUgdXNpbmcgYSBzZXNzaW9uLCBhbmQgbGlrZXdpc2UsXG4gICAgICogbWFrZSBzdXJlIHlvdSBkb24ndCBjbG9zZSB5b3VyIHNlc3Npb24gYmVmb3JlIHlvdSBhcmUgZG9uZSB1c2luZyBpdC4gT25jZVxuICAgICAqIGl0IGlzIHJldHVybmVkIHRvIHRoZSBwb29sLCB0aGUgc2Vzc2lvbiB3aWxsIGJlIHJlc2V0IHRvIGEgY2xlYW4gc3RhdGUgYW5kXG4gICAgICogbWFkZSBhdmFpbGFibGUgZm9yIG90aGVycyB0byB1c2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW21vZGU9V1JJVEVdIHRoZSBhY2Nlc3MgbW9kZSBvZiB0aGlzIHNlc3Npb24sIGFsbG93ZWQgdmFsdWVzIGFyZSB7QGxpbmsgUkVBRH0gYW5kIHtAbGluayBXUklURX0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtib29rbWFyaz1udWxsXSB0aGUgaW5pdGlhbCByZWZlcmVuY2UgdG8gc29tZSBwcmV2aW91cyB0cmFuc2FjdGlvbi4gVmFsdWUgaXMgb3B0aW9uYWwgYW5kXG4gICAgICogYWJzZW5jZSBpbmRpY2F0ZXMgdGhhdCB0aGF0IHRoZSBib29rbWFyayBkb2VzIG5vdCBleGlzdCBvciBpcyB1bmtub3duLlxuICAgICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdzZXNzaW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vzc2lvbihtb2RlLCBib29rbWFyaykge1xuICAgICAgdmFyIHNlc3Npb25Nb2RlID0gRHJpdmVyLl92YWxpZGF0ZVNlc3Npb25Nb2RlKG1vZGUpO1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVNlc3Npb24oc2Vzc2lvbk1vZGUsIHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIHRoaXMuX2NvbmZpZyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcicsXG5cblxuICAgIC8vRXh0ZW5zaW9uIHBvaW50XG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgICAgcmV0dXJuIG5ldyBfY29ubmVjdGlvblByb3ZpZGVycy5EaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLy9FeHRlbnNpb24gcG9pbnRcblxuICB9LCB7XG4gICAga2V5OiAnX2NyZWF0ZVNlc3Npb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlU2Vzc2lvbihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpIHtcbiAgICAgIHJldHVybiBuZXcgX3Nlc3Npb24yLmRlZmF1bHQobW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfZHJpdmVyT25FcnJvckNhbGxiYWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2RyaXZlck9uRXJyb3JDYWxsYmFjayhlcnJvcikge1xuICAgICAgdmFyIHVzZXJEZWZpbmVkT25FcnJvckNhbGxiYWNrID0gdGhpcy5vbkVycm9yO1xuICAgICAgaWYgKHVzZXJEZWZpbmVkT25FcnJvckNhbGxiYWNrICYmIGVycm9yLmNvZGUgPT09IF9lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFKSB7XG4gICAgICAgIHVzZXJEZWZpbmVkT25FcnJvckNhbGxiYWNrKGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gdGVsbCB0aGUgZHJpdmVyIGFib3V0IHRoaXMgZXJyb3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBhbGwgb3BlbiBzZXNzaW9ucyBhbmQgb3RoZXIgYXNzb2NpYXRlZCByZXNvdXJjZXMuIFlvdSBzaG91bGRcbiAgICAgKiBtYWtlIHN1cmUgdG8gdXNlIHRoaXMgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGRyaXZlciBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJuIHVuZGVmaW5lZFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdjbG9zZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgICAgZm9yICh2YXIgc2Vzc2lvbklkIGluIHRoaXMuX29wZW5TZXNzaW9ucykge1xuICAgICAgICBpZiAodGhpcy5fb3BlblNlc3Npb25zLmhhc093blByb3BlcnR5KHNlc3Npb25JZCkpIHtcbiAgICAgICAgICB0aGlzLl9vcGVuU2Vzc2lvbnNbc2Vzc2lvbklkXS5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Bvb2wucHVyZ2VBbGwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogJ192YWxpZGF0ZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdmFsaWRhdGVDb25uZWN0aW9uKGNvbm4pIHtcbiAgICAgIHJldHVybiBjb25uLmlzT3BlbigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ192YWxpZGF0ZVNlc3Npb25Nb2RlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3ZhbGlkYXRlU2Vzc2lvbk1vZGUocmF3TW9kZSkge1xuICAgICAgdmFyIG1vZGUgPSByYXdNb2RlIHx8IFdSSVRFO1xuICAgICAgaWYgKG1vZGUgIT09IFJFQUQgJiYgbW9kZSAhPT0gV1JJVEUpIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ0lsbGVnYWwgc2Vzc2lvbiBtb2RlICcgKyBtb2RlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtb2RlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRHJpdmVyO1xufSgpO1xuXG4vKiogSW50ZXJuYWwgc3RyZWFtIG9ic2VydmVyIHVzZWQgZm9yIGNvbm5lY3Rpb24gc3RhdGUgKi9cblxuXG52YXIgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciA9IGZ1bmN0aW9uIChfU3RyZWFtT2JzZXJ2ZXIpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyKGRyaXZlciwgY29ubikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgdmFyIF90aGlzID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcikpLmNhbGwodGhpcykpO1xuXG4gICAgX3RoaXMuX2RyaXZlciA9IGRyaXZlcjtcbiAgICBfdGhpcy5fY29ubiA9IGNvbm47XG4gICAgX3RoaXMuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiAnb25FcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpIHtcbiAgICAgIGlmICghdGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICAgICgwLCBfZ2V0My5kZWZhdWx0KShfQ29ubmVjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUpLCAnb25FcnJvcicsIHRoaXMpLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICBpZiAodGhpcy5fZHJpdmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLl9kcml2ZXIub25FcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faGFzRmFpbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkNvbXBsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1lc3NhZ2UpIHtcbiAgICAgIGlmICh0aGlzLl9kcml2ZXIub25Db21wbGV0ZWQpIHtcbiAgICAgICAgdGhpcy5fZHJpdmVyLm9uQ29tcGxldGVkKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2Nvbm4gJiYgbWVzc2FnZSAmJiBtZXNzYWdlLnNlcnZlcikge1xuICAgICAgICB0aGlzLl9jb25uLnNldFNlcnZlclZlcnNpb24obWVzc2FnZS5zZXJ2ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlcjtcbn0oX3N0cmVhbU9ic2VydmVyMi5kZWZhdWx0KTtcblxuZXhwb3J0cy5Ecml2ZXIgPSBEcml2ZXI7XG5leHBvcnRzLlJFQUQgPSBSRUFEO1xuZXhwb3J0cy5XUklURSA9IFdSSVRFO1xuZXhwb3J0cy5kZWZhdWx0ID0gRHJpdmVyOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuUFJPVE9DT0xfRVJST1IgPSBleHBvcnRzLlNFU1NJT05fRVhQSVJFRCA9IGV4cG9ydHMuU0VSVklDRV9VTkFWQUlMQUJMRSA9IGV4cG9ydHMuTmVvNGpFcnJvciA9IGV4cG9ydHMubmV3RXJyb3IgPSB1bmRlZmluZWQ7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJyk7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMik7XG5cbnZhciBfaW5oZXJpdHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5cbnZhciBfaW5oZXJpdHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5oZXJpdHMyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEEgY29tbW9uIHBsYWNlIGZvciBjb25zdHJ1Y3RpbmcgZXJyb3Igb2JqZWN0cywgdG8ga2VlcCB0aGVtXG4vLyB1bmlmb3JtIGFjcm9zcyB0aGUgZHJpdmVyIHN1cmZhY2UuXG5cbnZhciBTRVJWSUNFX1VOQVZBSUxBQkxFID0gJ1NlcnZpY2VVbmF2YWlsYWJsZSc7XG52YXIgU0VTU0lPTl9FWFBJUkVEID0gJ1Nlc3Npb25FeHBpcmVkJztcbnZhciBQUk9UT0NPTF9FUlJPUiA9ICdQcm90b2NvbEVycm9yJztcblxuZnVuY3Rpb24gbmV3RXJyb3IobWVzc2FnZSkge1xuICB2YXIgY29kZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogXCJOL0FcIjtcblxuICAvLyBUT0RPOiBJZGVhIGlzIHRoYXQgd2UgY2FuIGNoZWNrIHRoZSBjb2RlIGhlcmUgYW5kIHRocm93IHN1Yi1jbGFzc2VzXG4gIC8vIG9mIE5lbzRqRXJyb3IgYXMgYXBwcm9wcmlhdGVcbiAgcmV0dXJuIG5ldyBOZW80akVycm9yKG1lc3NhZ2UsIGNvZGUpO1xufVxuXG52YXIgTmVvNGpFcnJvciA9IGZ1bmN0aW9uIChfRXJyb3IpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoTmVvNGpFcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBOZW80akVycm9yKG1lc3NhZ2UpIHtcbiAgICB2YXIgY29kZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogXCJOL0FcIjtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBOZW80akVycm9yKTtcblxuICAgIHZhciBfdGhpcyA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKE5lbzRqRXJyb3IuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKE5lbzRqRXJyb3IpKS5jYWxsKHRoaXMsIG1lc3NhZ2UpKTtcblxuICAgIF90aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIF90aGlzLmNvZGUgPSBjb2RlO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBOZW80akVycm9yO1xufShFcnJvcik7XG5cbmV4cG9ydHMubmV3RXJyb3IgPSBuZXdFcnJvcjtcbmV4cG9ydHMuTmVvNGpFcnJvciA9IE5lbzRqRXJyb3I7XG5leHBvcnRzLlNFUlZJQ0VfVU5BVkFJTEFCTEUgPSBTRVJWSUNFX1VOQVZBSUxBQkxFO1xuZXhwb3J0cy5TRVNTSU9OX0VYUElSRUQgPSBTRVNTSU9OX0VYUElSRUQ7XG5leHBvcnRzLlBST1RPQ09MX0VSUk9SID0gUFJPVE9DT0xfRVJST1I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLlBhdGhTZWdtZW50ID0gZXhwb3J0cy5QYXRoID0gZXhwb3J0cy5VbmJvdW5kUmVsYXRpb25zaGlwID0gZXhwb3J0cy5SZWxhdGlvbnNoaXAgPSBleHBvcnRzLk5vZGUgPSB1bmRlZmluZWQ7XG5cbnZhciBfc3RyaW5naWZ5ID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeVwiKTtcblxudmFyIF9zdHJpbmdpZnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyaW5naWZ5KTtcblxudmFyIF9rZXlzID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5c1wiKTtcblxudmFyIF9rZXlzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2tleXMpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIENsYXNzIGZvciBOb2RlIFR5cGUuXG4gKi9cbnZhciBOb2RlID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtBcnJheX0gbGFiZWxzIC0gQXJyYXkgZm9yIGFsbCBsYWJlbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBNYXAgd2l0aCBub2RlIHByb3BlcnRpZXNcbiAgICovXG4gIGZ1bmN0aW9uIE5vZGUoaWRlbnRpdHksIGxhYmVscywgcHJvcGVydGllcykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIE5vZGUpO1xuXG4gICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIHRoaXMubGFiZWxzID0gbGFiZWxzO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShOb2RlLCBbe1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHZhciBzID0gXCIoXCIgKyB0aGlzLmlkZW50aXR5O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxhYmVscy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzICs9IFwiOlwiICsgdGhpcy5sYWJlbHNbaV07XG4gICAgICB9XG4gICAgICB2YXIga2V5cyA9ICgwLCBfa2V5czIuZGVmYXVsdCkodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBrZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIGlmIChfaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgICAgcyArPSBrZXlzW19pXSArIFwiOlwiICsgKDAsIF9zdHJpbmdpZnkyLmRlZmF1bHQpKHRoaXMucHJvcGVydGllc1trZXlzW19pXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiKVwiO1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBOb2RlO1xufSgpO1xuXG4vKipcbiAqIENsYXNzIGZvciBSZWxhdGlvbnNoaXAgVHlwZS5cbiAqL1xuXG5cbnZhciBSZWxhdGlvbnNoaXAgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgTm9kZVxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IGVuZCAtIElkZW50aXR5IG9mIGVuZCBOb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0gUmVsYXRpb25zaGlwIHR5cGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBNYXAgd2l0aCByZWxhdGlvbnNoaXAgcHJvcGVydGllc1xuICAgKi9cbiAgZnVuY3Rpb24gUmVsYXRpb25zaGlwKGlkZW50aXR5LCBzdGFydCwgZW5kLCB0eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUmVsYXRpb25zaGlwKTtcblxuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUmVsYXRpb25zaGlwLCBbe1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHZhciBzID0gXCIoXCIgKyB0aGlzLnN0YXJ0ICsgXCIpLVs6XCIgKyB0aGlzLnR5cGU7XG4gICAgICB2YXIga2V5cyA9ICgwLCBfa2V5czIuZGVmYXVsdCkodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArICgwLCBfc3RyaW5naWZ5Mi5kZWZhdWx0KSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiXS0+KFwiICsgdGhpcy5lbmQgKyBcIilcIjtcbiAgICAgIHJldHVybiBzO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUmVsYXRpb25zaGlwO1xufSgpO1xuXG4vKipcbiAqIENsYXNzIGZvciBVbmJvdW5kUmVsYXRpb25zaGlwIFR5cGUuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG5cbnZhciBVbmJvdW5kUmVsYXRpb25zaGlwID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuICBmdW5jdGlvbiBVbmJvdW5kUmVsYXRpb25zaGlwKGlkZW50aXR5LCB0eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgVW5ib3VuZFJlbGF0aW9uc2hpcCk7XG5cbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgcmVsYXRpb25zaGlwXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gc3RhcnQgLSBJZGVudGl0eSBvZiBzdGFydCBub2RlXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIG5vZGVcbiAgICogQHJldHVybiB7UmVsYXRpb25zaGlwfSAtIENyZWF0ZWQgcmVsYXRpb25zaGlwXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoVW5ib3VuZFJlbGF0aW9uc2hpcCwgW3tcbiAgICBrZXk6IFwiYmluZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBuZXcgUmVsYXRpb25zaGlwKHRoaXMuaWRlbnRpdHksIHN0YXJ0LCBlbmQsIHRoaXMudHlwZSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICB2YXIgcyA9IFwiLVs6XCIgKyB0aGlzLnR5cGU7XG4gICAgICB2YXIga2V5cyA9ICgwLCBfa2V5czIuZGVmYXVsdCkodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcyArPSBcIiB7XCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArICgwLCBfc3RyaW5naWZ5Mi5kZWZhdWx0KSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHMgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBzICs9IFwiXS0+XCI7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFVuYm91bmRSZWxhdGlvbnNoaXA7XG59KCk7XG5cbi8qKlxuICogQ2xhc3MgZm9yIFBhdGhTZWdtZW50IFR5cGUuXG4gKi9cblxuXG52YXIgUGF0aFNlZ21lbnQgPVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7Tm9kZX0gc3RhcnQgLSBzdGFydCBub2RlXG4gKiBAcGFyYW0ge1JlbGF0aW9uc2hpcH0gcmVsIC0gcmVsYXRpb25zaGlwIHRoYXQgY29ubmVjdHMgc3RhcnQgYW5kIGVuZCBub2RlXG4gKiBAcGFyYW0ge05vZGV9IGVuZCAtIGVuZCBub2RlXG4gKi9cbmZ1bmN0aW9uIFBhdGhTZWdtZW50KHN0YXJ0LCByZWwsIGVuZCkge1xuICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBQYXRoU2VnbWVudCk7XG5cbiAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbDtcbiAgdGhpcy5lbmQgPSBlbmQ7XG59O1xuXG4vKipcbiAqIENsYXNzIGZvciBQYXRoIFR5cGUuXG4gKi9cblxuXG52YXIgUGF0aCA9XG4vKipcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtOb2RlfSBzdGFydCAgLSBzdGFydCBub2RlXG4gKiBAcGFyYW0ge05vZGV9IGVuZCAtIGVuZCBub2RlXG4gKiBAcGFyYW0ge0FycmF5fSBzZWdtZW50cyAtIEFycmF5IG9mIFNlZ21lbnRzXG4gKi9cbmZ1bmN0aW9uIFBhdGgoc3RhcnQsIGVuZCwgc2VnbWVudHMpIHtcbiAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUGF0aCk7XG5cbiAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICB0aGlzLmVuZCA9IGVuZDtcbiAgdGhpcy5zZWdtZW50cyA9IHNlZ21lbnRzO1xuICB0aGlzLmxlbmd0aCA9IHNlZ21lbnRzLmxlbmd0aDtcbn07XG5cbmV4cG9ydHMuTm9kZSA9IE5vZGU7XG5leHBvcnRzLlJlbGF0aW9uc2hpcCA9IFJlbGF0aW9uc2hpcDtcbmV4cG9ydHMuVW5ib3VuZFJlbGF0aW9uc2hpcCA9IFVuYm91bmRSZWxhdGlvbnNoaXA7XG5leHBvcnRzLlBhdGggPSBQYXRoO1xuZXhwb3J0cy5QYXRoU2VnbWVudCA9IFBhdGhTZWdtZW50OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZXJyb3IgPSBleHBvcnRzLnNlc3Npb24gPSBleHBvcnRzLnR5cGVzID0gZXhwb3J0cy5hdXRoID0gZXhwb3J0cy5OZW80akVycm9yID0gZXhwb3J0cy5pbnRlZ2VyID0gZXhwb3J0cy5pc0ludCA9IGV4cG9ydHMuaW50ID0gZXhwb3J0cy5kcml2ZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoJy4vaW50ZWdlcicpO1xuXG52YXIgX2dyYXBoVHlwZXMgPSByZXF1aXJlKCcuL2dyYXBoLXR5cGVzJyk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuL2Vycm9yJyk7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxudmFyIF9yZXN1bHRTdW1tYXJ5ID0gcmVxdWlyZSgnLi9yZXN1bHQtc3VtbWFyeScpO1xuXG52YXIgX3Jlc3VsdFN1bW1hcnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0U3VtbWFyeSk7XG5cbnZhciBfcmVjb3JkID0gcmVxdWlyZSgnLi9yZWNvcmQnKTtcblxudmFyIF9yZWNvcmQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVjb3JkKTtcblxudmFyIF9kcml2ZXIgPSByZXF1aXJlKCcuL2RyaXZlcicpO1xuXG52YXIgX3JvdXRpbmdEcml2ZXIgPSByZXF1aXJlKCcuL3JvdXRpbmctZHJpdmVyJyk7XG5cbnZhciBfcm91dGluZ0RyaXZlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yb3V0aW5nRHJpdmVyKTtcblxudmFyIF92ZXJzaW9uID0gcmVxdWlyZSgnLi4vdmVyc2lvbicpO1xuXG52YXIgX3ZlcnNpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdmVyc2lvbik7XG5cbnZhciBfY29ubmVjdG9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9jb25uZWN0b3InKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC91dGlsJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBhdXRoID0ge1xuICBiYXNpYzogZnVuY3Rpb24gYmFzaWModXNlcm5hbWUsIHBhc3N3b3JkKSB7XG4gICAgdmFyIHJlYWxtID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAocmVhbG0pIHtcbiAgICAgIHJldHVybiB7IHNjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IHVzZXJuYW1lLCBjcmVkZW50aWFsczogcGFzc3dvcmQsIHJlYWxtOiByZWFsbSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiB1c2VybmFtZSwgY3JlZGVudGlhbHM6IHBhc3N3b3JkIH07XG4gICAgfVxuICB9LFxuICBjdXN0b206IGZ1bmN0aW9uIGN1c3RvbShwcmluY2lwYWwsIGNyZWRlbnRpYWxzLCByZWFsbSwgc2NoZW1lKSB7XG4gICAgdmFyIHBhcmFtZXRlcnMgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChwYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4geyBzY2hlbWU6IHNjaGVtZSwgcHJpbmNpcGFsOiBwcmluY2lwYWwsIGNyZWRlbnRpYWxzOiBjcmVkZW50aWFscywgcmVhbG06IHJlYWxtLFxuICAgICAgICBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IHNjaGVtZTogc2NoZW1lLCBwcmluY2lwYWw6IHByaW5jaXBhbCwgY3JlZGVudGlhbHM6IGNyZWRlbnRpYWxzLCByZWFsbTogcmVhbG0gfTtcbiAgICB9XG4gIH1cbn07IC8qKlxuICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICAgICpcbiAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICpcbiAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICAqXG4gICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgKlxuICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAqL1xuXG52YXIgVVNFUl9BR0VOVCA9IFwibmVvNGotamF2YXNjcmlwdC9cIiArIF92ZXJzaW9uMi5kZWZhdWx0O1xuXG4vKipcbiAqIENvbnN0cnVjdCBhIG5ldyBOZW80aiBEcml2ZXIuIFRoaXMgaXMgeW91ciBtYWluIGVudHJ5IHBvaW50IGZvciB0aGlzXG4gKiBsaWJyYXJ5LlxuICpcbiAqICMjIENvbmZpZ3VyYXRpb25cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIG9wdGlvbmFsbHkgdGFrZXMgYSBjb25maWd1cmF0aW9uIGFyZ3VtZW50LiBBdmFpbGFibGUgY29uZmlndXJhdGlvblxuICogb3B0aW9ucyBhcmUgYXMgZm9sbG93czpcbiAqXG4gKiAgICAge1xuICogICAgICAgLy8gRW5jcnlwdGlvbiBsZXZlbDogRU5DUllQVElPTl9PTiBvciBFTkNSWVBUSU9OX09GRi5cbiAqICAgICAgIGVuY3J5cHRlZDogRU5DUllQVElPTl9PTnxFTkNSWVBUSU9OX09GRlxuICpcbiAqICAgICAgIC8vIFRydXN0IHN0cmF0ZWd5IHRvIHVzZSBpZiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuIFRoZXJlIGlzIG5vIG1vZGUgdG8gZGlzYWJsZVxuICogICAgICAgLy8gdHJ1c3Qgb3RoZXIgdGhhbiBkaXNhYmxpbmcgZW5jcnlwdGlvbiBhbHRvZ2V0aGVyLiBUaGUgcmVhc29uIGZvclxuICogICAgICAgLy8gdGhpcyBpcyB0aGF0IGlmIHlvdSBkb24ndCBrbm93IHdobyB5b3UgYXJlIHRhbGtpbmcgdG8sIGl0IGlzIGVhc3kgZm9yIGFuXG4gKiAgICAgICAvLyBhdHRhY2tlciB0byBoaWphY2sgeW91ciBlbmNyeXB0ZWQgY29ubmVjdGlvbiwgcmVuZGVyaW5nIGVuY3J5cHRpb24gcG9pbnRsZXNzLlxuICogICAgICAgLy9cbiAqICAgICAgIC8vIFRSVVNUX0FMTF9DRVJUSUZJQ0FURVMgaXMgdGhlIGRlZmF1bHQgY2hvaWNlIGZvciBOb2RlSlMgZGVwbG95bWVudHMuIEl0IG9ubHkgcmVxdWlyZXNcbiAqICAgICAgIC8vIG5ldyBob3N0IHRvIHByb3ZpZGUgYSBjZXJ0aWZpY2F0ZSBhbmQgZG9lcyBubyB2ZXJpZmljYXRpb24gb2YgdGhlIHByb3ZpZGVkIGNlcnRpZmljYXRlLlxuICogICAgICAgLy9cbiAqICAgICAgIC8vIFRSVVNUX09OX0ZJUlNUX1VTRSBpcyBhdmFpbGFibGUgZm9yIG1vZGVybiBOb2RlSlMgZGVwbG95bWVudHMsIGFuZCB3b3Jrc1xuICogICAgICAgLy8gc2ltaWxhcmx5IHRvIGhvdyBgc3NsYCB3b3JrcyAtIHRoZSBmaXJzdCB0aW1lIHdlIGNvbm5lY3QgdG8gYSBuZXcgaG9zdCxcbiAqICAgICAgIC8vIHdlIHJlbWVtYmVyIHRoZSBjZXJ0aWZpY2F0ZSB0aGV5IHVzZS4gSWYgdGhlIGNlcnRpZmljYXRlIGV2ZXIgY2hhbmdlcywgd2VcbiAqICAgICAgIC8vIGFzc3VtZSBpdCBpcyBhbiBhdHRlbXB0IHRvIGhpamFjayB0aGUgY29ubmVjdGlvbiBhbmQgcmVxdWlyZSBtYW51YWwgaW50ZXJ2ZW50aW9uLlxuICogICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IGJ5IGRlZmF1bHQsIGNvbm5lY3Rpb25zIFwianVzdCB3b3JrXCIgd2hpbGUgc3RpbGwgZ2l2aW5nIHlvdVxuICogICAgICAgLy8gZ29vZCBlbmNyeXB0ZWQgcHJvdGVjdGlvbi5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBpcyB0aGUgY2xhc3NpYyBhcHByb2FjaCB0byB0cnVzdCB2ZXJpZmljYXRpb24gLVxuICogICAgICAgLy8gd2hlbmV2ZXIgd2UgZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBjb25uZWN0aW9uLCB3ZSBlbnN1cmUgdGhlIGhvc3QgaXMgdXNpbmdcbiAqICAgICAgIC8vIGFuIGVuY3J5cHRpb24gY2VydGlmaWNhdGUgdGhhdCBpcyBpbiwgb3IgaXMgc2lnbmVkIGJ5LCBhIGNlcnRpZmljYXRlIGxpc3RlZFxuICogICAgICAgLy8gYXMgdHJ1c3RlZC4gSW4gdGhlIHdlYiBidW5kbGUsIHRoaXMgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBpcyBtYWludGFpbmVkXG4gKiAgICAgICAvLyBieSB0aGUgd2ViIGJyb3dzZXIuIEluIE5vZGVKUywgeW91IGNvbmZpZ3VyZSB0aGUgbGlzdCB3aXRoIHRoZSBuZXh0IGNvbmZpZyBvcHRpb24uXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfU1lTVEVNX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgbWVhbmQgdGhhdCB5b3UgdHJ1c3Qgd2hhdGV2ZXIgY2VydGlmaWNhdGVzXG4gKiAgICAgICAvLyBhcmUgaW4gdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUgY2hhaW4gb2YgdGhcbiAqICAgICAgIHRydXN0OiBcIlRSVVNUX0FMTF9DRVJUSUZJQ0FURVNcIiB8IFwiVFJVU1RfT05fRklSU1RfVVNFXCIgfCBcIlRSVVNUX1NJR05FRF9DRVJUSUZJQ0FURVNcIiB8XG4gICogICAgICAgXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiIHwgXCJUUlVTVF9TWVNURU1fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICpcbiAqICAgICAgIC8vIExpc3Qgb2Ygb25lIG9yIG1vcmUgcGF0aHMgdG8gdHJ1c3RlZCBlbmNyeXB0aW9uIGNlcnRpZmljYXRlcy4gVGhpcyBvbmx5XG4gKiAgICAgICAvLyB3b3JrcyBpbiB0aGUgTm9kZUpTIGJ1bmRsZSwgYW5kIG9ubHkgbWF0dGVycyBpZiB5b3UgdXNlIFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIi5cbiAqICAgICAgIC8vIFRoZSBjZXJ0aWZpY2F0ZSBmaWxlcyBzaG91bGQgYmUgaW4gcmVndWxhciBYLjUwOSBQRU0gZm9ybWF0LlxuICogICAgICAgLy8gRm9yIGluc3RhbmNlLCBbJy4vdHJ1c3RlZC5wZW0nXVxuICogICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW10sXG4gKlxuICogICAgICAgLy8gUGF0aCB0byBhIGZpbGUgd2hlcmUgdGhlIGRyaXZlciBzYXZlcyBob3N0cyBpdCBoYXMgc2VlbiBpbiB0aGUgcGFzdCwgdGhpcyBpc1xuICogICAgICAgLy8gdmVyeSBzaW1pbGFyIHRvIHRoZSBzc2wgdG9vbCdzIGtub3duX2hvc3RzIGZpbGUuIEVhY2ggdGltZSB3ZSBjb25uZWN0IHRvIGFcbiAqICAgICAgIC8vIG5ldyBob3N0LCBhIGhhc2ggb2YgdGhlaXIgY2VydGlmaWNhdGUgaXMgc3RvcmVkIGFsb25nIHdpdGggdGhlIGRvbWFpbiBuYW1lIGFuZFxuICogICAgICAgLy8gcG9ydCwgYW5kIHRoaXMgaXMgdGhlbiB1c2VkIHRvIHZlcmlmeSB0aGUgaG9zdCBjZXJ0aWZpY2F0ZSBkb2VzIG5vdCBjaGFuZ2UuXG4gKiAgICAgICAvLyBUaGlzIHNldHRpbmcgaGFzIG5vIGVmZmVjdCB1bmxlc3MgVFJVU1RfT05fRklSU1RfVVNFIGlzIGVuYWJsZWQuXG4gKiAgICAgICBrbm93bkhvc3RzOlwifi8ubmVvNGova25vd25faG9zdHNcIixcbiAqXG4gKiAgICAgICAvLyBUaGUgbWF4IG51bWJlciBvZiBjb25uZWN0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIGlkbGUgaW4gdGhlIHBvb2wgYXQgYW55IHRpbWUuXG4gKiAgICAgICAvLyBDb25uZWN0aW9uIHdpbGwgYmUgZGVzdHJveWVkIGlmIHRoaXMgdGhyZXNob2xkIGlzIGV4Y2VlZGVkLlxuICogICAgICAgY29ubmVjdGlvblBvb2xTaXplOiA1MCxcbiAqXG4gKiAgICAgICAvLyBTcGVjaWZ5IHRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRyYW5zYWN0aW9ucyBhcmUgYWxsb3dlZCB0byByZXRyeSB2aWFcbiAqICAgICAgIC8vIHtAbGluayBTZXNzaW9uI3JlYWRUcmFuc2FjdGlvbigpfSBhbmQge0BsaW5rIFNlc3Npb24jd3JpdGVUcmFuc2FjdGlvbigpfSBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9uc1xuICogICAgICAgLy8gd2lsbCByZXRyeSB0aGUgZ2l2ZW4gdW5pdCBvZiB3b3JrIG9uIGBTZXJ2aWNlVW5hdmFpbGFibGVgLCBgU2Vzc2lvbkV4cGlyZWRgIGFuZCB0cmFuc2llbnQgZXJyb3JzIHdpdGhcbiAqICAgICAgIC8vIGV4cG9uZW50aWFsIGJhY2tvZmYgdXNpbmcgaW5pdGlhbCBkZWxheSBvZiAxIHNlY29uZC4gRGVmYXVsdCB2YWx1ZSBpcyAzMDAwMCB3aGljaCBpcyAzMCBzZWNvbmRzLlxuICogICAgICAgbWF4VHJhbnNhY3Rpb25SZXRyeVRpbWU6IDMwMDAwLFxuICogICAgIH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgZm9yIHRoZSBOZW80aiBkYXRhYmFzZSwgZm9yIGluc3RhbmNlIFwiYm9sdDovL2xvY2FsaG9zdFwiXG4gKiBAcGFyYW0ge01hcDxTdHJpbmcsU3RyaW5nPn0gYXV0aFRva2VuIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLiBTZWUge0BsaW5rIGF1dGh9IGZvciBoZWxwZXJzLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBDb25maWd1cmF0aW9uIG9iamVjdC4gU2VlIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gYWJvdmUgZm9yIGRldGFpbHMuXG4gKiBAcmV0dXJucyB7RHJpdmVyfVxuICovXG5mdW5jdGlvbiBkcml2ZXIodXJsLCBhdXRoVG9rZW4pIHtcbiAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG5cbiAgKDAsIF91dGlsLmFzc2VydFN0cmluZykodXJsLCAnQm9sdCBVUkwnKTtcbiAgdmFyIHNjaGVtZSA9ICgwLCBfY29ubmVjdG9yLnBhcnNlU2NoZW1lKSh1cmwpO1xuICBpZiAoc2NoZW1lID09PSBcImJvbHQrcm91dGluZzovL1wiKSB7XG4gICAgcmV0dXJuIG5ldyBfcm91dGluZ0RyaXZlcjIuZGVmYXVsdCgoMCwgX2Nvbm5lY3Rvci5wYXJzZVVybCkodXJsKSwgVVNFUl9BR0VOVCwgYXV0aFRva2VuLCBjb25maWcpO1xuICB9IGVsc2UgaWYgKHNjaGVtZSA9PT0gXCJib2x0Oi8vXCIpIHtcbiAgICByZXR1cm4gbmV3IF9kcml2ZXIuRHJpdmVyKCgwLCBfY29ubmVjdG9yLnBhcnNlVXJsKSh1cmwpLCBVU0VSX0FHRU5ULCBhdXRoVG9rZW4sIGNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBzY2hlbWU6IFwiICsgc2NoZW1lKTtcbiAgfVxufVxuXG52YXIgdHlwZXMgPSB7XG4gIE5vZGU6IF9ncmFwaFR5cGVzLk5vZGUsXG4gIFJlbGF0aW9uc2hpcDogX2dyYXBoVHlwZXMuUmVsYXRpb25zaGlwLFxuICBVbmJvdW5kUmVsYXRpb25zaGlwOiBfZ3JhcGhUeXBlcy5VbmJvdW5kUmVsYXRpb25zaGlwLFxuICBQYXRoU2VnbWVudDogX2dyYXBoVHlwZXMuUGF0aFNlZ21lbnQsXG4gIFBhdGg6IF9ncmFwaFR5cGVzLlBhdGgsXG4gIFJlc3VsdDogX3Jlc3VsdDIuZGVmYXVsdCxcbiAgUmVzdWx0U3VtbWFyeTogX3Jlc3VsdFN1bW1hcnkyLmRlZmF1bHQsXG4gIFJlY29yZDogX3JlY29yZDIuZGVmYXVsdFxufTtcblxudmFyIHNlc3Npb24gPSB7XG4gIFJFQUQ6IF9kcml2ZXIuUkVBRCxcbiAgV1JJVEU6IF9kcml2ZXIuV1JJVEVcbn07XG52YXIgZXJyb3IgPSB7XG4gIFNFUlZJQ0VfVU5BVkFJTEFCTEU6IF9lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFLFxuICBTRVNTSU9OX0VYUElSRUQ6IF9lcnJvci5TRVNTSU9OX0VYUElSRUQsXG4gIFBST1RPQ09MX0VSUk9SOiBfZXJyb3IuUFJPVE9DT0xfRVJST1Jcbn07XG52YXIgaW50ZWdlciA9IHtcbiAgdG9OdW1iZXI6IF9pbnRlZ2VyLnRvTnVtYmVyLFxuICB0b1N0cmluZzogX2ludGVnZXIudG9TdHJpbmcsXG4gIGluU2FmZVJhbmdlOiBfaW50ZWdlci5pblNhZmVSYW5nZVxufTtcblxudmFyIGZvckV4cG9ydCA9IHtcbiAgZHJpdmVyOiBkcml2ZXIsXG4gIGludDogX2ludGVnZXIuaW50LFxuICBpc0ludDogX2ludGVnZXIuaXNJbnQsXG4gIGludGVnZXI6IGludGVnZXIsXG4gIE5lbzRqRXJyb3I6IF9lcnJvci5OZW80akVycm9yLFxuICBhdXRoOiBhdXRoLFxuICB0eXBlczogdHlwZXMsXG4gIHNlc3Npb246IHNlc3Npb24sXG4gIGVycm9yOiBlcnJvclxufTtcblxuZXhwb3J0cy5kcml2ZXIgPSBkcml2ZXI7XG5leHBvcnRzLmludCA9IF9pbnRlZ2VyLmludDtcbmV4cG9ydHMuaXNJbnQgPSBfaW50ZWdlci5pc0ludDtcbmV4cG9ydHMuaW50ZWdlciA9IGludGVnZXI7XG5leHBvcnRzLk5lbzRqRXJyb3IgPSBfZXJyb3IuTmVvNGpFcnJvcjtcbmV4cG9ydHMuYXV0aCA9IGF1dGg7XG5leHBvcnRzLnR5cGVzID0gdHlwZXM7XG5leHBvcnRzLnNlc3Npb24gPSBzZXNzaW9uO1xuZXhwb3J0cy5lcnJvciA9IGVycm9yO1xuZXhwb3J0cy5kZWZhdWx0ID0gZm9yRXhwb3J0OyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMudG9TdHJpbmcgPSBleHBvcnRzLnRvTnVtYmVyID0gZXhwb3J0cy5pblNhZmVSYW5nZSA9IGV4cG9ydHMuaXNJbnQgPSBleHBvcnRzLmludCA9IHVuZGVmaW5lZDtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuL2Vycm9yJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIDY0IGJpdCB0d28ncy1jb21wbGVtZW50IGludGVnZXIsIGdpdmVuIGl0cyBsb3cgYW5kIGhpZ2ggMzIgYml0IHZhbHVlcyBhcyAqc2lnbmVkKiBpbnRlZ2Vycy5cbiAqICBTZWUgdGhlIGZyb20qIGZ1bmN0aW9ucyBiZWxvdyBmb3IgbW9yZSBjb252ZW5pZW50IHdheXMgb2YgY29uc3RydWN0aW5nIEludGVnZXJzLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBleHBvcnRzIEludGVnZXJcbiAqIEBjbGFzcyBBIEludGVnZXIgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIDY0IGJpdCB0d28ncy1jb21wbGVtZW50IGludGVnZXIgdmFsdWUuXG4gKiBAcGFyYW0ge251bWJlcn0gbG93IFRoZSBsb3cgKHNpZ25lZCkgMzIgYml0cyBvZiB0aGUgbG9uZ1xuICogQHBhcmFtIHtudW1iZXJ9IGhpZ2ggVGhlIGhpZ2ggKHNpZ25lZCkgMzIgYml0cyBvZiB0aGUgbG9uZ1xuICogQGNvbnN0cnVjdG9yXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgb3IgbWFkZSBpbnRlcm5hbCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIuXG4gKi9cbnZhciBJbnRlZ2VyID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBJbnRlZ2VyKGxvdywgaGlnaCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIEludGVnZXIpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGxvdyAzMiBiaXRzIGFzIGEgc2lnbmVkIHZhbHVlLlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuICAgIHRoaXMubG93ID0gbG93IHwgMDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdGhpcy5oaWdoID0gaGlnaCB8IDA7XG4gIH1cblxuICAvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gSW50ZWdlciBpcyB0aGUgdHdvIGdpdmVuIHNpZ25lZCwgMzItYml0IHZhbHVlcy5cbiAgLy8gV2UgdXNlIDMyLWJpdCBwaWVjZXMgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIHNpemUgb2YgaW50ZWdlcnMgb24gd2hpY2hcbiAgLy8gSmF2YXNjcmlwdCBwZXJmb3JtcyBiaXQtb3BlcmF0aW9ucy4gIEZvciBvcGVyYXRpb25zIGxpa2UgYWRkaXRpb24gYW5kXG4gIC8vIG11bHRpcGxpY2F0aW9uLCB3ZSBzcGxpdCBlYWNoIG51bWJlciBpbnRvIDE2IGJpdCBwaWVjZXMsIHdoaWNoIGNhbiBlYXNpbHkgYmVcbiAgLy8gbXVsdGlwbGllZCB3aXRoaW4gSmF2YXNjcmlwdCdzIGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIHdpdGhvdXQgb3ZlcmZsb3dcbiAgLy8gb3IgY2hhbmdlIGluIHNpZ24uXG4gIC8vXG4gIC8vIEluIHRoZSBhbGdvcml0aG1zIGJlbG93LCB3ZSBmcmVxdWVudGx5IHJlZHVjZSB0aGUgbmVnYXRpdmUgY2FzZSB0byB0aGVcbiAgLy8gcG9zaXRpdmUgY2FzZSBieSBuZWdhdGluZyB0aGUgaW5wdXQocykgYW5kIHRoZW4gcG9zdC1wcm9jZXNzaW5nIHRoZSByZXN1bHQuXG4gIC8vIE5vdGUgdGhhdCB3ZSBtdXN0IEFMV0FZUyBjaGVjayBzcGVjaWFsbHkgd2hldGhlciB0aG9zZSB2YWx1ZXMgYXJlIE1JTl9WQUxVRVxuICAvLyAoLTJeNjMpIGJlY2F1c2UgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUUgKHNpbmNlIDJeNjMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzXG4gIC8vIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBvdmVyZmxvd3MgYmFjayBpbnRvIGEgbmVnYXRpdmUpLiAgTm90IGhhbmRsaW5nIHRoaXNcbiAgLy8gY2FzZSB3b3VsZCBvZnRlbiByZXN1bHQgaW4gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAvL1xuICAvLyBDb21tb24gY29uc3RhbnQgdmFsdWVzIFpFUk8sIE9ORSwgTkVHX09ORSwgZXRjLiBhcmUgZGVmaW5lZCBiZWxvdyB0aGUgZnJvbSpcbiAgLy8gbWV0aG9kcyBvbiB3aGljaCB0aGV5IGRlcGVuZC5cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKEludGVnZXIsIFt7XG4gICAga2V5OiAnaW5TYWZlUmFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpblNhZmVSYW5nZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyZWF0ZXJUaGFuT3JFcXVhbChJbnRlZ2VyLk1JTl9TQUZFX1ZBTFVFKSAmJiB0aGlzLmxlc3NUaGFuT3JFcXVhbChJbnRlZ2VyLk1BWF9TQUZFX1ZBTFVFKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIEludGVnZXIgdG8gYW4gZXhhY3QgamF2YXNjcmlwdCBOdW1iZXIsIGFzc3VtaW5nIGl0IGlzIGEgMzIgYml0IGludGVnZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3RvSW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9JbnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb3c7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndG9OdW1iZXInLFxuXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHRoZSBuZWFyZXN0IGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdmFsdWUgKGRvdWJsZSwgNTMgYml0IG1hbnRpc3NhKS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9OdW1iZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoICogVFdPX1BXUl8zMl9EQkwgKyAodGhpcy5sb3cgPj4+IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGEgc3RyaW5nIHdyaXR0ZW4gaW4gdGhlIHNwZWNpZmllZCByYWRpeC5cbiAgICAgKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFJhZGl4ICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGByYWRpeGAgaXMgb3V0IG9mIHJhbmdlXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICd0b1N0cmluZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKHJhZGl4KSB7XG4gICAgICByYWRpeCA9IHJhZGl4IHx8IDEwO1xuICAgICAgaWYgKHJhZGl4IDwgMiB8fCAzNiA8IHJhZGl4KSB0aHJvdyBSYW5nZUVycm9yKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuICcwJztcbiAgICAgIHZhciByZW07XG4gICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgaWYgKHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkge1xuICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBJbnRlZ2VyIHZhbHVlIGJlZm9yZSBpdCBjYW4gYmUgbmVnYXRlZCwgc28gd2UgcmVtb3ZlXG4gICAgICAgICAgLy8gdGhlIGJvdHRvbS1tb3N0IGRpZ2l0IGluIHRoaXMgYmFzZSBhbmQgdGhlbiByZWN1cnNlIHRvIGRvIHRoZSByZXN0LlxuICAgICAgICAgIHZhciByYWRpeEludGVnZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIocmFkaXgpO1xuICAgICAgICAgIHZhciBkaXYgPSB0aGlzLmRpdihyYWRpeEludGVnZXIpO1xuICAgICAgICAgIHJlbSA9IGRpdi5tdWx0aXBseShyYWRpeEludGVnZXIpLnN1YnRyYWN0KHRoaXMpO1xuICAgICAgICAgIHJldHVybiBkaXYudG9TdHJpbmcocmFkaXgpICsgcmVtLnRvSW50KCkudG9TdHJpbmcocmFkaXgpO1xuICAgICAgICB9IGVsc2UgcmV0dXJuICctJyArIHRoaXMubmVnYXRlKCkudG9TdHJpbmcocmFkaXgpO1xuICAgICAgfVxuXG4gICAgICAvLyBEbyBzZXZlcmFsICg2KSBkaWdpdHMgZWFjaCB0aW1lIHRocm91Z2ggdGhlIGxvb3AsIHNvIGFzIHRvXG4gICAgICAvLyBtaW5pbWl6ZSB0aGUgY2FsbHMgdG8gdGhlIHZlcnkgZXhwZW5zaXZlIGVtdWxhdGVkIGRpdi5cbiAgICAgIHZhciByYWRpeFRvUG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIDYpKTtcbiAgICAgIHJlbSA9IHRoaXM7XG4gICAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVtRGl2ID0gcmVtLmRpdihyYWRpeFRvUG93ZXIpLFxuICAgICAgICAgICAgaW50dmFsID0gcmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpID4+PiAwLFxuICAgICAgICAgICAgZGlnaXRzID0gaW50dmFsLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgICAgcmVtID0gcmVtRGl2O1xuICAgICAgICBpZiAocmVtLmlzWmVybygpKSByZXR1cm4gZGlnaXRzICsgcmVzdWx0O2Vsc2Uge1xuICAgICAgICAgIHdoaWxlIChkaWdpdHMubGVuZ3RoIDwgNikge1xuICAgICAgICAgICAgZGlnaXRzID0gJzAnICsgZGlnaXRzO1xuICAgICAgICAgIH1yZXN1bHQgPSAnJyArIGRpZ2l0cyArIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCBpbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBoaWdoIGJpdHNcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2dldEhpZ2hCaXRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SGlnaEJpdHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxvdyAzMiBiaXRzIGFzIGEgc2lnbmVkIGludGVnZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gU2lnbmVkIGxvdyBiaXRzXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdnZXRMb3dCaXRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TG93Qml0cygpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEludGVnZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2dldE51bUJpdHNBYnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXROdW1CaXRzQWJzKCkge1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpID8gNjQgOiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKTtcbiAgICAgIHZhciB2YWwgPSB0aGlzLmhpZ2ggIT0gMCA/IHRoaXMuaGlnaCA6IHRoaXMubG93O1xuICAgICAgZm9yICh2YXIgYml0ID0gMzE7IGJpdCA+IDA7IGJpdC0tKSB7XG4gICAgICAgIGlmICgodmFsICYgMSA8PCBiaXQpICE9IDApIGJyZWFrO1xuICAgICAgfXJldHVybiB0aGlzLmhpZ2ggIT0gMCA/IGJpdCArIDMzIDogYml0ICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgemVyby5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2lzWmVybycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzWmVybygpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggPT09IDAgJiYgdGhpcy5sb3cgPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgbmVnYXRpdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpc05lZ2F0aXZlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNOZWdhdGl2ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZ2ggPCAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIHBvc2l0aXZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNQb3NpdGl2ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzUG9zaXRpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID49IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgb2RkLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNPZGQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc09kZCgpIHtcbiAgICAgIHJldHVybiAodGhpcy5sb3cgJiAxKSA9PT0gMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBldmVuLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNFdmVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNFdmVuKCkge1xuICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2VxdWFscycsXG5cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGVxdWFscyB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB2YWx1ZTogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gdGhpcy5oaWdoID09PSBvdGhlci5oaWdoICYmIHRoaXMubG93ID09PSBvdGhlci5sb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdub3RFcXVhbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub3RFcXVhbHMob3RoZXIpIHtcbiAgICAgICF0aGlzLmVxdWFscyggLyogdmFsaWRhdGVzICovb3RoZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbGVzc1RoYW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsZXNzVGhhbihvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpIDwgMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxlc3NUaGFuT3JFcXVhbChvdGhlcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSggLyogdmFsaWRhdGVzICovb3RoZXIpIDw9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdncmVhdGVyVGhhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdyZWF0ZXJUaGFuKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0aGUgc3BlY2lmaWVkJ3MuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ3JlYXRlclRoYW5PckVxdWFsKG90aGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlKCAvKiB2YWxpZGF0ZXMgKi9vdGhlcikgPj0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0aGlzIEludGVnZXIncyB2YWx1ZSB3aXRoIHRoZSBzcGVjaWZpZWQncy5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgMSBpZiB0aGUgdGhpcyBpcyBncmVhdGVyIGFuZCAtMVxuICAgICAqICBpZiB0aGUgZ2l2ZW4gb25lIGlzIGdyZWF0ZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2NvbXBhcmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wYXJlKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICBpZiAodGhpcy5lcXVhbHMob3RoZXIpKSByZXR1cm4gMDtcbiAgICAgIHZhciB0aGlzTmVnID0gdGhpcy5pc05lZ2F0aXZlKCksXG4gICAgICAgICAgb3RoZXJOZWcgPSBvdGhlci5pc05lZ2F0aXZlKCk7XG4gICAgICBpZiAodGhpc05lZyAmJiAhb3RoZXJOZWcpIHJldHVybiAtMTtcbiAgICAgIGlmICghdGhpc05lZyAmJiBvdGhlck5lZykgcmV0dXJuIDE7XG4gICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBzaWduIGJpdHMgYXJlIHRoZSBzYW1lXG4gICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChvdGhlcikuaXNOZWdhdGl2ZSgpID8gLTEgOiAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5lZ2F0ZXMgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBOZWdhdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ25lZ2F0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5lZ2F0ZSgpIHtcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLk1JTl9WQUxVRTtcbiAgICAgIHJldHVybiB0aGlzLm5vdCgpLmFkZChJbnRlZ2VyLk9ORSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtIG9mIHRoaXMgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZWdlci5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGFkZGVuZCBBZGRlbmRcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFN1bVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnYWRkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKGFkZGVuZCkge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihhZGRlbmQpKSBhZGRlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShhZGRlbmQpO1xuXG4gICAgICAvLyBEaXZpZGUgZWFjaCBudW1iZXIgaW50byA0IGNodW5rcyBvZiAxNiBiaXRzLCBhbmQgdGhlbiBzdW0gdGhlIGNodW5rcy5cblxuICAgICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xuICAgICAgdmFyIGExNiA9IHRoaXMubG93ID4+PiAxNjtcbiAgICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgICAgdmFyIGI0OCA9IGFkZGVuZC5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBiMzIgPSBhZGRlbmQuaGlnaCAmIDB4RkZGRjtcbiAgICAgIHZhciBiMTYgPSBhZGRlbmQubG93ID4+PiAxNjtcbiAgICAgIHZhciBiMDAgPSBhZGRlbmQubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYzQ4ID0gMCxcbiAgICAgICAgICBjMzIgPSAwLFxuICAgICAgICAgIGMxNiA9IDAsXG4gICAgICAgICAgYzAwID0gMDtcbiAgICAgIGMwMCArPSBhMDAgKyBiMDA7XG4gICAgICBjMTYgKz0gYzAwID4+PiAxNjtcbiAgICAgIGMwMCAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTE2ICsgYjE2O1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEzMiArIGIzMjtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGM0OCArPSBhNDggKyBiNDg7XG4gICAgICBjNDggJj0gMHhGRkZGO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoYzE2IDw8IDE2IHwgYzAwLCBjNDggPDwgMTYgfCBjMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBJbnRlZ2VyLlxuICAgICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gc3VidHJhaGVuZCBTdWJ0cmFoZW5kXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBEaWZmZXJlbmNlXG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdzdWJ0cmFjdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YnRyYWN0KHN1YnRyYWhlbmQpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoc3VidHJhaGVuZCkpIHN1YnRyYWhlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShzdWJ0cmFoZW5kKTtcbiAgICAgIHJldHVybiB0aGlzLmFkZChzdWJ0cmFoZW5kLm5lZ2F0ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZWdlci5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG11bHRpcGxpZXIgTXVsdGlwbGllclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUHJvZHVjdFxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbXVsdGlwbHknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtdWx0aXBseShtdWx0aXBsaWVyKSB7XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIobXVsdGlwbGllcikpIG11bHRpcGxpZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShtdWx0aXBsaWVyKTtcbiAgICAgIGlmIChtdWx0aXBsaWVyLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKHRoaXMuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIG11bHRpcGxpZXIuaXNPZGQoKSA/IEludGVnZXIuTUlOX1ZBTFVFIDogSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKG11bHRpcGxpZXIuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSkgcmV0dXJuIHRoaXMuaXNPZGQoKSA/IEludGVnZXIuTUlOX1ZBTFVFIDogSW50ZWdlci5aRVJPO1xuXG4gICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgICAgaWYgKG11bHRpcGxpZXIuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5uZWdhdGUoKS5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKTtlbHNlIHJldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG11bHRpcGxpZXIpLm5lZ2F0ZSgpO1xuICAgICAgfSBlbHNlIGlmIChtdWx0aXBsaWVyLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMubXVsdGlwbHkobXVsdGlwbGllci5uZWdhdGUoKSkubmVnYXRlKCk7XG5cbiAgICAgIC8vIElmIGJvdGggbG9uZ3MgYXJlIHNtYWxsLCB1c2UgZmxvYXQgbXVsdGlwbGljYXRpb25cbiAgICAgIGlmICh0aGlzLmxlc3NUaGFuKFRXT19QV1JfMjQpICYmIG11bHRpcGxpZXIubGVzc1RoYW4oVFdPX1BXUl8yNCkpIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIodGhpcy50b051bWJlcigpICogbXVsdGlwbGllci50b051bWJlcigpKTtcblxuICAgICAgLy8gRGl2aWRlIGVhY2ggbG9uZyBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIGFkZCB1cCA0eDQgcHJvZHVjdHMuXG4gICAgICAvLyBXZSBjYW4gc2tpcCBwcm9kdWN0cyB0aGF0IHdvdWxkIG92ZXJmbG93LlxuXG4gICAgICB2YXIgYTQ4ID0gdGhpcy5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBhMzIgPSB0aGlzLmhpZ2ggJiAweEZGRkY7XG4gICAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGEwMCA9IHRoaXMubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYjQ4ID0gbXVsdGlwbGllci5oaWdoID4+PiAxNjtcbiAgICAgIHZhciBiMzIgPSBtdWx0aXBsaWVyLmhpZ2ggJiAweEZGRkY7XG4gICAgICB2YXIgYjE2ID0gbXVsdGlwbGllci5sb3cgPj4+IDE2O1xuICAgICAgdmFyIGIwMCA9IG11bHRpcGxpZXIubG93ICYgMHhGRkZGO1xuXG4gICAgICB2YXIgYzQ4ID0gMCxcbiAgICAgICAgICBjMzIgPSAwLFxuICAgICAgICAgIGMxNiA9IDAsXG4gICAgICAgICAgYzAwID0gMDtcbiAgICAgIGMwMCArPSBhMDAgKiBiMDA7XG4gICAgICBjMTYgKz0gYzAwID4+PiAxNjtcbiAgICAgIGMwMCAmPSAweEZGRkY7XG4gICAgICBjMTYgKz0gYTE2ICogYjAwO1xuICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgICBjMTYgJj0gMHhGRkZGO1xuICAgICAgYzE2ICs9IGEwMCAqIGIxNjtcbiAgICAgIGMzMiArPSBjMTYgPj4+IDE2O1xuICAgICAgYzE2ICY9IDB4RkZGRjtcbiAgICAgIGMzMiArPSBhMzIgKiBiMDA7XG4gICAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICAgIGMzMiAmPSAweEZGRkY7XG4gICAgICBjMzIgKz0gYTE2ICogYjE2O1xuICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgICBjMzIgJj0gMHhGRkZGO1xuICAgICAgYzMyICs9IGEwMCAqIGIzMjtcbiAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgICAgYzMyICY9IDB4RkZGRjtcbiAgICAgIGM0OCArPSBhNDggKiBiMDAgKyBhMzIgKiBiMTYgKyBhMTYgKiBiMzIgKyBhMDAgKiBiNDg7XG4gICAgICBjNDggJj0gMHhGRkZGO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoYzE2IDw8IDE2IHwgYzAwLCBjNDggPDwgMTYgfCBjMzIpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2RpdicsXG5cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIGRpdmlkZWQgYnkgdGhlIHNwZWNpZmllZC5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxuICAgICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUXVvdGllbnRcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpdihkaXZpc29yKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGRpdmlzb3IpKSBkaXZpc29yID0gSW50ZWdlci5mcm9tVmFsdWUoZGl2aXNvcik7XG4gICAgICBpZiAoZGl2aXNvci5pc1plcm8oKSkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ2RpdmlzaW9uIGJ5IHplcm8nKTtcbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgdmFyIGFwcHJveCwgcmVtLCByZXM7XG4gICAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSB7XG4gICAgICAgIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk9ORSkgfHwgZGl2aXNvci5lcXVhbHMoSW50ZWdlci5ORUdfT05FKSkgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFOyAvLyByZWNhbGwgdGhhdCAtTUlOX1ZBTFVFID09IE1JTl9WQUxVRVxuICAgICAgICBlbHNlIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHJldHVybiBJbnRlZ2VyLk9ORTtlbHNlIHtcbiAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgfG90aGVyfCA+PSAyLCBzbyB8dGhpcy9vdGhlcnwgPCB8TUlOX1ZBTFVFfC5cbiAgICAgICAgICAgIHZhciBoYWxmVGhpcyA9IHRoaXMuc2hpZnRSaWdodCgxKTtcbiAgICAgICAgICAgIGFwcHJveCA9IGhhbGZUaGlzLmRpdihkaXZpc29yKS5zaGlmdExlZnQoMSk7XG4gICAgICAgICAgICBpZiAoYXBwcm94LmVxdWFscyhJbnRlZ2VyLlpFUk8pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkaXZpc29yLmlzTmVnYXRpdmUoKSA/IEludGVnZXIuT05FIDogSW50ZWdlci5ORUdfT05FO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVtID0gdGhpcy5zdWJ0cmFjdChkaXZpc29yLm11bHRpcGx5KGFwcHJveCkpO1xuICAgICAgICAgICAgICByZXMgPSBhcHByb3guYWRkKHJlbS5kaXYoZGl2aXNvcikpO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZGl2aXNvci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XG4gICAgICAgIGlmIChkaXZpc29yLmlzTmVnYXRpdmUoKSkgcmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KGRpdmlzb3IubmVnYXRlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXYoZGl2aXNvcikubmVnYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKSByZXR1cm4gdGhpcy5kaXYoZGl2aXNvci5uZWdhdGUoKSkubmVnYXRlKCk7XG5cbiAgICAgIC8vIFJlcGVhdCB0aGUgZm9sbG93aW5nIHVudGlsIHRoZSByZW1haW5kZXIgaXMgbGVzcyB0aGFuIG90aGVyOiAgZmluZCBhXG4gICAgICAvLyBmbG9hdGluZy1wb2ludCB0aGF0IGFwcHJveGltYXRlcyByZW1haW5kZXIgLyBvdGhlciAqZnJvbSBiZWxvdyosIGFkZCB0aGlzXG4gICAgICAvLyBpbnRvIHRoZSByZXN1bHQsIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSByZW1haW5kZXIuICBJdCBpcyBjcml0aWNhbCB0aGF0XG4gICAgICAvLyB0aGUgYXBwcm94aW1hdGUgdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSByZWFsIHZhbHVlIHNvIHRoYXQgdGhlXG4gICAgICAvLyByZW1haW5kZXIgbmV2ZXIgYmVjb21lcyBuZWdhdGl2ZS5cbiAgICAgIHJlcyA9IEludGVnZXIuWkVSTztcbiAgICAgIHJlbSA9IHRoaXM7XG4gICAgICB3aGlsZSAocmVtLmdyZWF0ZXJUaGFuT3JFcXVhbChkaXZpc29yKSkge1xuICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgcmVzdWx0IG9mIGRpdmlzaW9uLiBUaGlzIG1heSBiZSBhIGxpdHRsZSBncmVhdGVyIG9yXG4gICAgICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgYWN0dWFsIHZhbHVlLlxuICAgICAgICBhcHByb3ggPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHJlbS50b051bWJlcigpIC8gZGl2aXNvci50b051bWJlcigpKSk7XG5cbiAgICAgICAgLy8gV2Ugd2lsbCB0d2VhayB0aGUgYXBwcm94aW1hdGUgcmVzdWx0IGJ5IGNoYW5naW5nIGl0IGluIHRoZSA0OC10aCBkaWdpdCBvclxuICAgICAgICAvLyB0aGUgc21hbGxlc3Qgbm9uLWZyYWN0aW9uYWwgZGlnaXQsIHdoaWNoZXZlciBpcyBsYXJnZXIuXG4gICAgICAgIHZhciBsb2cyID0gTWF0aC5jZWlsKE1hdGgubG9nKGFwcHJveCkgLyBNYXRoLkxOMiksXG4gICAgICAgICAgICBkZWx0YSA9IGxvZzIgPD0gNDggPyAxIDogTWF0aC5wb3coMiwgbG9nMiAtIDQ4KSxcblxuXG4gICAgICAgIC8vIERlY3JlYXNlIHRoZSBhcHByb3hpbWF0aW9uIHVudGlsIGl0IGlzIHNtYWxsZXIgdGhhbiB0aGUgcmVtYWluZGVyLiAgTm90ZVxuICAgICAgICAvLyB0aGF0IGlmIGl0IGlzIHRvbyBsYXJnZSwgdGhlIHByb2R1Y3Qgb3ZlcmZsb3dzIGFuZCBpcyBuZWdhdGl2ZS5cbiAgICAgICAgYXBwcm94UmVzID0gSW50ZWdlci5mcm9tTnVtYmVyKGFwcHJveCksXG4gICAgICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICAgIHdoaWxlIChhcHByb3hSZW0uaXNOZWdhdGl2ZSgpIHx8IGFwcHJveFJlbS5ncmVhdGVyVGhhbihyZW0pKSB7XG4gICAgICAgICAgYXBwcm94IC09IGRlbHRhO1xuICAgICAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpO1xuICAgICAgICAgIGFwcHJveFJlbSA9IGFwcHJveFJlcy5tdWx0aXBseShkaXZpc29yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGtub3cgdGhlIGFuc3dlciBjYW4ndCBiZSB6ZXJvLi4uIGFuZCBhY3R1YWxseSwgemVybyB3b3VsZCBjYXVzZVxuICAgICAgICAvLyBpbmZpbml0ZSByZWN1cnNpb24gc2luY2Ugd2Ugd291bGQgbWFrZSBubyBwcm9ncmVzcy5cbiAgICAgICAgaWYgKGFwcHJveFJlcy5pc1plcm8oKSkgYXBwcm94UmVzID0gSW50ZWdlci5PTkU7XG5cbiAgICAgICAgcmVzID0gcmVzLmFkZChhcHByb3hSZXMpO1xuICAgICAgICByZW0gPSByZW0uc3VidHJhY3QoYXBwcm94UmVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGlzIEludGVnZXIgbW9kdWxvIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBkaXZpc29yIERpdmlzb3JcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFJlbWFpbmRlclxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbW9kdWxvJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbW9kdWxvKGRpdmlzb3IpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIoZGl2aXNvcikpIGRpdmlzb3IgPSBJbnRlZ2VyLmZyb21WYWx1ZShkaXZpc29yKTtcbiAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KHRoaXMuZGl2KGRpdmlzb3IpLm11bHRpcGx5KGRpdmlzb3IpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIE5PVCBvZiB0aGlzIEludGVnZXIuXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbm90JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm90KCkge1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMofnRoaXMubG93LCB+dGhpcy5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBiaXR3aXNlIEFORCBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnYW5kJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYW5kKG90aGVyKSB7XG4gICAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSkgb3RoZXIgPSBJbnRlZ2VyLmZyb21WYWx1ZShvdGhlcik7XG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyAmIG90aGVyLmxvdywgdGhpcy5oaWdoICYgb3RoZXIuaGlnaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBPUiBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvcihvdGhlcikge1xuICAgICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgfCBvdGhlci5sb3csIHRoaXMuaGlnaCB8IG90aGVyLmhpZ2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgWE9SIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIGdpdmVuIG9uZS5cbiAgICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAgICogQGV4cG9zZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICd4b3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB4b3Iob3RoZXIpIHtcbiAgICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIob3RoZXIpKSBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IF4gb3RoZXIubG93LCB0aGlzLmhpZ2ggXiBvdGhlci5oaWdoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFJbnRlZ2VyfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3NoaWZ0TGVmdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNoaWZ0TGVmdChudW1CaXRzKSB7XG4gICAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpIG51bUJpdHMgPSBudW1CaXRzLnRvSW50KCk7XG4gICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKSByZXR1cm4gdGhpcztlbHNlIGlmIChudW1CaXRzIDwgMzIpIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IDw8IG51bUJpdHMsIHRoaXMuaGlnaCA8PCBudW1CaXRzIHwgdGhpcy5sb3cgPj4+IDMyIC0gbnVtQml0cyk7ZWxzZSByZXR1cm4gSW50ZWdlci5mcm9tQml0cygwLCB0aGlzLmxvdyA8PCBudW1CaXRzIC0gMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBhcml0aG1ldGljYWxseSBzaGlmdGVkIHRvIHRoZSByaWdodCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFJbnRlZ2VyfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXG4gICAgICogQHJldHVybnMgeyFJbnRlZ2VyfSBTaGlmdGVkIEludGVnZXJcbiAgICAgKiBAZXhwb3NlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3NoaWZ0UmlnaHQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdFJpZ2h0KG51bUJpdHMpIHtcbiAgICAgIGlmIChJbnRlZ2VyLmlzSW50ZWdlcihudW1CaXRzKSkgbnVtQml0cyA9IG51bUJpdHMudG9JbnQoKTtcbiAgICAgIGlmICgobnVtQml0cyAmPSA2MykgPT09IDApIHJldHVybiB0aGlzO2Vsc2UgaWYgKG51bUJpdHMgPCAzMikgcmV0dXJuIEludGVnZXIuZnJvbUJpdHModGhpcy5sb3cgPj4+IG51bUJpdHMgfCB0aGlzLmhpZ2ggPDwgMzIgLSBudW1CaXRzLCB0aGlzLmhpZ2ggPj4gbnVtQml0cyk7ZWxzZSByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmhpZ2ggPj4gbnVtQml0cyAtIDMyLCB0aGlzLmhpZ2ggPj0gMCA/IDAgOiAtMSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBJbnRlZ2VyO1xufSgpO1xuXG4vKipcbiAqIEFuIGluZGljYXRvciB1c2VkIHRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBJbnRlZ2VyIG9yIG5vdC5cbiAqIEB0eXBlIHtib29sZWFufVxuICogQGNvbnN0XG4gKiBAZXhwb3NlXG4gKiBAcHJpdmF0ZVxuICovXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gNjQtYml0IEludGVnZXIgbGlicmFyeSwgb3JpZ2luYWxseSBmcm9tIExvbmcuanMgYnkgZGNvZGVJT1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vTG9uZy5qc1xuLy8gTGljZW5zZSBBcGFjaGUgMlxuXG5JbnRlZ2VyLl9faXNJbnRlZ2VyX187XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRlZ2VyLnByb3RvdHlwZSwgXCJfX2lzSW50ZWdlcl9fXCIsIHtcbiAgdmFsdWU6IHRydWUsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBjb25maWd1cmFibGU6IGZhbHNlXG59KTtcblxuLyoqXG4gKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBhIEludGVnZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqIE9iamVjdFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuaXNJbnRlZ2VyID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gKG9iaiAmJiBvYmpbXCJfX2lzSW50ZWdlcl9fXCJdKSA9PT0gdHJ1ZTtcbn07XG5cbi8qKlxuICogQSBjYWNoZSBvZiB0aGUgSW50ZWdlciByZXByZXNlbnRhdGlvbnMgb2Ygc21hbGwgaW50ZWdlciB2YWx1ZXMuXG4gKiBAdHlwZSB7IU9iamVjdH1cbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIElOVF9DQUNIRSA9IHt9O1xuXG4vKipcbiAqIFJldHVybnMgYSBJbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gMzIgYml0IGludGVnZXIgdmFsdWUuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgMzIgYml0IGludGVnZXIgaW4gcXVlc3Rpb25cbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21JbnQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIG9iaiwgY2FjaGVkT2JqO1xuICB2YWx1ZSA9IHZhbHVlIHwgMDtcbiAgaWYgKC0xMjggPD0gdmFsdWUgJiYgdmFsdWUgPCAxMjgpIHtcbiAgICBjYWNoZWRPYmogPSBJTlRfQ0FDSEVbdmFsdWVdO1xuICAgIGlmIChjYWNoZWRPYmopIHJldHVybiBjYWNoZWRPYmo7XG4gIH1cbiAgb2JqID0gbmV3IEludGVnZXIodmFsdWUsIHZhbHVlIDwgMCA/IC0xIDogMCwgZmFsc2UpO1xuICBpZiAoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDEyOCkgSU5UX0NBQ0hFW3ZhbHVlXSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiB2YWx1ZSwgcHJvdmlkZWQgdGhhdCBpdCBpcyBhIGZpbml0ZSBudW1iZXIuIE90aGVyd2lzZSwgemVybyBpcyByZXR1cm5lZC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSBudW1iZXIgaW4gcXVlc3Rpb25cbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21OdW1iZXIgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCAhaXNGaW5pdGUodmFsdWUpKSByZXR1cm4gSW50ZWdlci5aRVJPO1xuICBpZiAodmFsdWUgPD0gLVRXT19QV1JfNjNfREJMKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7XG4gIGlmICh2YWx1ZSArIDEgPj0gVFdPX1BXUl82M19EQkwpIHJldHVybiBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgaWYgKHZhbHVlIDwgMCkgcmV0dXJuIEludGVnZXIuZnJvbU51bWJlcigtdmFsdWUpLm5lZ2F0ZSgpO1xuICByZXR1cm4gbmV3IEludGVnZXIodmFsdWUgJSBUV09fUFdSXzMyX0RCTCB8IDAsIHZhbHVlIC8gVFdPX1BXUl8zMl9EQkwgfCAwKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSA2NCBiaXQgaW50ZWdlciB0aGF0IGNvbWVzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIGdpdmVuIGxvdyBhbmQgaGlnaCBiaXRzLiBFYWNoIGlzXG4gKiAgYXNzdW1lZCB0byB1c2UgMzIgYml0cy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxvd0JpdHMgVGhlIGxvdyAzMiBiaXRzXG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaEJpdHMgVGhlIGhpZ2ggMzIgYml0c1xuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbUJpdHMgPSBmdW5jdGlvbiAobG93Qml0cywgaGlnaEJpdHMpIHtcbiAgcmV0dXJuIG5ldyBJbnRlZ2VyKGxvd0JpdHMsIGhpZ2hCaXRzKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHN0cmluZywgd3JpdHRlbiB1c2luZyB0aGUgc3BlY2lmaWVkIHJhZGl4LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBJbnRlZ2VyXG4gKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFRoZSByYWRpeCBpbiB3aGljaCB0aGUgdGV4dCBpcyB3cml0dGVuICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21TdHJpbmcgPSBmdW5jdGlvbiAoc3RyLCByYWRpeCkge1xuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ251bWJlciBmb3JtYXQgZXJyb3I6IGVtcHR5IHN0cmluZycpO1xuICBpZiAoc3RyID09PSBcIk5hTlwiIHx8IHN0ciA9PT0gXCJJbmZpbml0eVwiIHx8IHN0ciA9PT0gXCIrSW5maW5pdHlcIiB8fCBzdHIgPT09IFwiLUluZmluaXR5XCIpIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gIHJhZGl4ID0gcmFkaXggfHwgMTA7XG4gIGlmIChyYWRpeCA8IDIgfHwgMzYgPCByYWRpeCkgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ3JhZGl4IG91dCBvZiByYW5nZTogJyArIHJhZGl4KTtcblxuICB2YXIgcDtcbiAgaWYgKChwID0gc3RyLmluZGV4T2YoJy0nKSkgPiAwKSB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnbnVtYmVyIGZvcm1hdCBlcnJvcjogaW50ZXJpb3IgXCItXCIgY2hhcmFjdGVyOiAnICsgc3RyKTtlbHNlIGlmIChwID09PSAwKSByZXR1cm4gSW50ZWdlci5mcm9tU3RyaW5nKHN0ci5zdWJzdHJpbmcoMSksIHJhZGl4KS5uZWdhdGUoKTtcblxuICAvLyBEbyBzZXZlcmFsICg4KSBkaWdpdHMgZWFjaCB0aW1lIHRocm91Z2ggdGhlIGxvb3AsIHNvIGFzIHRvXG4gIC8vIG1pbmltaXplIHRoZSBjYWxscyB0byB0aGUgdmVyeSBleHBlbnNpdmUgZW11bGF0ZWQgZGl2LlxuICB2YXIgcmFkaXhUb1Bvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCA4KSk7XG5cbiAgdmFyIHJlc3VsdCA9IEludGVnZXIuWkVSTztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpICs9IDgpIHtcbiAgICB2YXIgc2l6ZSA9IE1hdGgubWluKDgsIHN0ci5sZW5ndGggLSBpKTtcbiAgICB2YXIgdmFsdWUgPSBwYXJzZUludChzdHIuc3Vic3RyaW5nKGksIGkgKyBzaXplKSwgcmFkaXgpO1xuICAgIGlmIChzaXplIDwgOCkge1xuICAgICAgdmFyIHBvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCBzaXplKSk7XG4gICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChJbnRlZ2VyLmZyb21OdW1iZXIodmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcik7XG4gICAgICByZXN1bHQgPSByZXN1bHQuYWRkKEludGVnZXIuZnJvbU51bWJlcih2YWx1ZSkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHZhbHVlIHRvIGEgSW50ZWdlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfCF7bG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcn19IHZhbCBWYWx1ZVxuICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21WYWx1ZSA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgaWYgKHZhbCAvKiBpcyBjb21wYXRpYmxlICovIGluc3RhbmNlb2YgSW50ZWdlcikgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKHZhbCk7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykgcmV0dXJuIEludGVnZXIuZnJvbVN0cmluZyh2YWwpO1xuICAvLyBUaHJvd3MgZm9yIG5vbi1vYmplY3RzLCBjb252ZXJ0cyBub24taW5zdGFuY2VvZiBJbnRlZ2VyOlxuICByZXR1cm4gbmV3IEludGVnZXIodmFsLmxvdywgdmFsLmhpZ2gpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHZhbHVlIHRvIGEgbnVtYmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLnRvTnVtYmVyID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gSW50ZWdlci5mcm9tVmFsdWUodmFsKS50b051bWJlcigpO1xufTtcblxuLyoqXG4qIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgdmFsdWUgdG8gYSBzdHJpbmcuXG4qIEBhY2Nlc3MgcHJpdmF0ZVxuKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4qIEBwYXJhbSB7bnVtYmVyfSByYWRpeCBvcHRpb25hbCByYWRpeCBmb3Igc3RyaW5nIGNvbnZlcnNpb24sIGRlZmF1bHRzIHRvIDEwXG4qIEByZXR1cm5zIHtTdHJpbmd9XG4qIEBleHBvc2VcbiovXG5JbnRlZ2VyLnRvU3RyaW5nID0gZnVuY3Rpb24gKHZhbCwgcmFkaXgpIHtcbiAgcmV0dXJuIEludGVnZXIuZnJvbVZhbHVlKHZhbCkudG9TdHJpbmcocmFkaXgpO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGluIHRoZSBzYWZlIHJhbmdlIGluIG9yZGVyIHRvIGJlIGNvbnZlcnRlZCB0byBhIG5hdGl2ZSBudW1iZXJcbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfCF7bG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcn19IHZhbCBWYWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IHJhZGl4IG9wdGlvbmFsIHJhZGl4IGZvciBzdHJpbmcgY29udmVyc2lvbiwgZGVmYXVsdHMgdG8gMTBcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmluU2FmZVJhbmdlID0gZnVuY3Rpb24gKHZhbCkge1xuICByZXR1cm4gSW50ZWdlci5mcm9tVmFsdWUodmFsKS5pblNhZmVSYW5nZSgpO1xufTtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzE2X0RCTCA9IDEgPDwgMTY7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8yNF9EQkwgPSAxIDw8IDI0O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMzJfREJMID0gVFdPX1BXUl8xNl9EQkwgKiBUV09fUFdSXzE2X0RCTDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzY0X0RCTCA9IFRXT19QV1JfMzJfREJMICogVFdPX1BXUl8zMl9EQkw7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl82M19EQkwgPSBUV09fUFdSXzY0X0RCTCAvIDI7XG5cbi8qKlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzI0ID0gSW50ZWdlci5mcm9tSW50KFRXT19QV1JfMjRfREJMKTtcblxuLyoqXG4gKiBTaWduZWQgemVyby5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5aRVJPID0gSW50ZWdlci5mcm9tSW50KDApO1xuXG4vKipcbiAqIFNpZ25lZCBvbmUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuT05FID0gSW50ZWdlci5mcm9tSW50KDEpO1xuXG4vKipcbiAqIFNpZ25lZCBuZWdhdGl2ZSBvbmUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTkVHX09ORSA9IEludGVnZXIuZnJvbUludCgtMSk7XG5cbi8qKlxuICogTWF4aW11bSBzaWduZWQgdmFsdWUuXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuTUFYX1ZBTFVFID0gSW50ZWdlci5mcm9tQml0cygweEZGRkZGRkZGIHwgMCwgMHg3RkZGRkZGRiB8IDAsIGZhbHNlKTtcblxuLyoqXG4gKiBNaW5pbXVtIHNpZ25lZCB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NSU5fVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDAsIDB4ODAwMDAwMDAgfCAwLCBmYWxzZSk7XG5cbi8qKlxuICogTWluaW11bSBzYWZlIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1JTl9TQUZFX1ZBTFVFID0gSW50ZWdlci5mcm9tQml0cygweDEgfCAwLCAweEZGRkZGRkZGRkZFMDAwMDAgfCAwKTtcblxuLyoqXG4qIE1heGltdW0gc2FmZSB2YWx1ZS5cbiogQHR5cGUgeyFJbnRlZ2VyfVxuKiBAZXhwb3NlXG4qL1xuSW50ZWdlci5NQVhfU0FGRV9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMHhGRkZGRkZGRiB8IDAsIDB4MUZGRkZGIHwgMCk7XG5cbi8qKlxuICogQ2FzdCB2YWx1ZSB0byBJbnRlZ2VyIHR5cGUuXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQHBhcmFtIHtNaXhlZH0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdXNlLlxuICogQHJldHVybiB7SW50ZWdlcn0gLSBBbiBvYmplY3Qgb2YgdHlwZSBJbnRlZ2VyLlxuICovXG52YXIgaW50ID0gSW50ZWdlci5mcm9tVmFsdWU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YXJpYWJsZSBpcyBvZiBJbnRlZ2VyIHR5cGUuXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQHBhcmFtIHtNaXhlZH0gdmFsdWUgLSBUaGUgdmFyaWFibGUgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtCb29sZWFufSAtIElzIGl0IG9mIHRoZSBJbnRlZ2VyIHR5cGU/XG4gKi9cbnZhciBpc0ludCA9IEludGVnZXIuaXNJbnRlZ2VyO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFyaWFibGUgY2FuIGJlIHNhZmVseSBjb252ZXJ0ZWQgdG8gYSBudW1iZXJcbiAqIEBhY2Nlc3MgcHVibGljXG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAtIFRoZSB2YXJpYWJsZSB0byBjaGVja1xuICogQHJldHVybiB7Qm9vbGVhbn0gLSB0cnVlIGlmIGl0IGlzIHNhZmUgdG8gY2FsbCB0b051bWJlciBvbiB2YXJpYWJsZSBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGluU2FmZVJhbmdlID0gSW50ZWdlci5pblNhZmVSYW5nZTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHZhcmlhYmxlIHRvIGEgbnVtYmVyXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQHBhcmFtIHtNaXhlZH0gdmFsdWUgLSBUaGUgdmFyaWFibGUgdG8gY29udmVydFxuICogQHJldHVybiB7bnVtYmVyfSAtIHRoZSB2YXJpYWJsZSBhcyBhIG51bWJlclxuICovXG52YXIgdG9OdW1iZXIgPSBJbnRlZ2VyLnRvTnVtYmVyO1xuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQHBhcmFtIHtNaXhlZH0gdmFsdWUgLSBUaGUgdmFyaWFibGUgdG8gY29udmVydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhZGl4IC0gcmFkaXggdG8gdXNlIGluIHN0cmluZyBjb252ZXJzaW9uLCBkZWZhdWx0cyB0byAxMFxuICogQHJldHVybiB7U3RyaW5nfSAtIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVnZXJcbiAqL1xudmFyIHRvU3RyaW5nID0gSW50ZWdlci50b1N0cmluZztcblxuZXhwb3J0cy5pbnQgPSBpbnQ7XG5leHBvcnRzLmlzSW50ID0gaXNJbnQ7XG5leHBvcnRzLmluU2FmZVJhbmdlID0gaW5TYWZlUmFuZ2U7XG5leHBvcnRzLnRvTnVtYmVyID0gdG9OdW1iZXI7XG5leHBvcnRzLnRvU3RyaW5nID0gdG9TdHJpbmc7XG5leHBvcnRzLmRlZmF1bHQgPSBJbnRlZ2VyOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5hbGxvYyA9IGV4cG9ydHMuTm9kZUJ1ZmZlciA9IGV4cG9ydHMuQ29tYmluZWRCdWZmZXIgPSBleHBvcnRzLlNsaWNlQnVmZmVyID0gZXhwb3J0cy5IZWFwQnVmZmVyID0gZXhwb3J0cy5CYXNlQnVmZmVyID0gdW5kZWZpbmVkO1xuXG52YXIgX2dldDIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldFwiKTtcblxudmFyIF9nZXQzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0Mik7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpO1xuXG52YXIgX2luaGVyaXRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luaGVyaXRzMik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY29tbW9uIEFQSSBmb3IgZGVhbGluZyB3aXRoIGJpbmFyeSBkYXRhIHRoYXRcbiAgKiB3b3JrcyBmb3IgYm90aCBicm93c2VycyAodmlhIEFycmF5QnVmZmVyL0RhdGFWaWV3KSBhbmQgZm9yIE5vZGVKU1xuICAqKHZpYSBCdWZmZXIgQVBJKS5cbiAgKi9cblxudmFyIF9ub2RlID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcbi8qKlxuICAqIENvbW1vbiBiYXNlIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgbW9zdCBidWZmZXIgbWV0aG9kcy5cbiAgKiBCdWZmZXJzIGFyZSBzdGF0ZWZ1bCAtIHRoZXkgdHJhY2sgYSBjdXJyZW50IFwicG9zaXRpb25cIiwgdGhpcyBoZWxwcyBncmVhdGx5XG4gICogd2hlbiByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20gdGhlbSBpbmNyZW1lbnRhbGx5LiBZb3UgY2FuIGFsc28gaWdub3JlIHRoZVxuICAqIHN0YXRlZnVsIHJlYWQvd3JpdGUgbWV0aG9kcy5cbiAgKiByZWFkWFhYIGFuZCB3cml0ZVhYWC1tZXRob2RzIG1vdmUgdGhlIGlubmVyIHBvc2l0aW9uIG9mIHRoZSBidWZmZXIuXG4gICogcHV0WFhYIGFuZCBnZXRYWFgtbWV0aG9kcyBkbyBub3QuXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5cbnZhciBCYXNlQnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugd2l0aCB0aGUgaW5qZWN0ZWQgc2l6ZS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gc2l6ZVxuICAgKi9cbiAgZnVuY3Rpb24gQmFzZUJ1ZmZlcihzaXplKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgQmFzZUJ1ZmZlcik7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgICB0aGlzLmxlbmd0aCA9IHNpemU7XG4gICAgLy8gQ2FsbGluZyB0aGVzZSBvdXQgLSB0aGlzIGlzIHRoZSByZXF1aXJlZCBcbiAgICAvLyBtZXRob2RzIGEgc3ViY2xhc3MgbmVlZHMgdG8gaW1wbGVtZW50XG4gICAgdmFyIGdldFVJbnQ4ID0gbnVsbDtcbiAgICB2YXIgZ2V0SW50OCA9IG51bGw7XG4gICAgdmFyIGdldEZsb2F0NjQgPSBudWxsO1xuICAgIHZhciBnZXRTbGljZSA9IG51bGw7XG4gICAgdmFyIHB1dEZsb2F0NjQgPSBudWxsO1xuICAgIHZhciBwdXRVSW50OCA9IG51bGw7XG4gICAgdmFyIHB1dEludDggPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoQmFzZUJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0SW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50MTYocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50MTYocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDgocCkgPDwgOCB8IHRoaXMuZ2V0VUludDgocCArIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnQzMihwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApIDw8IDI0IHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgMTYgfCB0aGlzLmdldFVJbnQ4KHAgKyAyKSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVSW50MzIocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDgocCkgPDwgMjQgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKSA8PCAxNiB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDggfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW50NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50NjQocCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSA8PCA1NiB8IHRoaXMuZ2V0VUludDgocCArIDEpIDw8IDQ4IHwgdGhpcy5nZXRVSW50OChwICsgMikgPDwgNDAgfCB0aGlzLmdldFVJbnQ4KHAgKyAzKSA8PCAzMiB8IHRoaXMuZ2V0VUludDgocCArIDQpIDw8IDI0IHwgdGhpcy5nZXRVSW50OChwICsgNSkgPDwgMTYgfCB0aGlzLmdldFVJbnQ4KHAgKyA2KSA8PCA4IHwgdGhpcy5nZXRVSW50OChwICsgNyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgc2xpY2Ugb2YgdGhpcyBidWZmZXIuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGNvcHkgYW55IGRhdGEsXG4gICAgICogYnV0IHNpbXBseSBwcm92aWRlcyBhIHNsaWNlIHZpZXcgb2YgdGhpcyBidWZmZXJcbiAgICAgKiBAcGFyYW0gc3RhcnRcbiAgICAgKiBAcGFyYW0gbGVuZ3RoXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRTbGljZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTbGljZShzdGFydCwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IFNsaWNlQnVmZmVyKHN0YXJ0LCBsZW5ndGgsIHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50MTYocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dEludDgocCwgdmFsID4+IDgpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50MTZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDE2KHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OChwLCB2YWwgPj4gOCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwdXRJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQzMihwLCB2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OChwLCB2YWwgPj4gMjQpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMSwgdmFsID4+IDE2ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAyLCB2YWwgPj4gOCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMywgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDMyKHAsIHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OChwLCB2YWwgPj4gMjQgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCA+PiAxNiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMiwgdmFsID4+IDggJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDMsIHZhbCAmIDB4RkYpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50NjQocCwgdmFsKSB7XG4gICAgICB0aGlzLnB1dEludDgocCwgdmFsID4+IDQ4KTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDEsIHZhbCA+PiA0MiAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgMiwgdmFsID4+IDM2ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyAzLCB2YWwgPj4gMzAgJiAweEZGKTtcbiAgICAgIHRoaXMucHV0VUludDgocCArIDQsIHZhbCA+PiAyNCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNSwgdmFsID4+IDE2ICYgMHhGRik7XG4gICAgICB0aGlzLnB1dFVJbnQ4KHAgKyA2LCB2YWwgPj4gOCAmIDB4RkYpO1xuICAgICAgdGhpcy5wdXRVSW50OChwICsgNywgdmFsICYgMHhGRik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBvc2l0aW9uXG4gICAgICogQHBhcmFtIG90aGVyXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJwdXRCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRCeXRlcyhwb3NpdGlvbiwgb3RoZXIpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBvdGhlci5yZW1haW5pbmcoKTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgIHRoaXMucHV0VUludDgocG9zaXRpb24gKyBpLCBvdGhlci5yZWFkVUludDgoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRVSW50OCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFVJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEludDgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHRoaXMuX3VwZGF0ZVBvcygxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDE2KCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVUludDMyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VUludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDE2XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQxNigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDE2KHRoaXMuX3VwZGF0ZVBvcygyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDMyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQzMigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDMyKHRoaXMuX3VwZGF0ZVBvcyg0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEludDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWRJbnQ2NCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEludDMyKHRoaXMuX3VwZGF0ZVBvcyg4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZEZsb2F0NjQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGbG9hdDY0KHRoaXMuX3VwZGF0ZVBvcyg4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZVVJbnQ4KHZhbCkge1xuICAgICAgdGhpcy5wdXRVSW50OCh0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlSW50OCh2YWwpIHtcbiAgICAgIHRoaXMucHV0SW50OCh0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQxNlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDE2KHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQxNih0aGlzLl91cGRhdGVQb3MoMiksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQzMlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDMyKHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQzMih0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVVSW50MzJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGVVSW50MzIodmFsKSB7XG4gICAgICB0aGlzLnB1dFVJbnQzMih0aGlzLl91cGRhdGVQb3MoNCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVJbnQ2NFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUludDY0KHZhbCkge1xuICAgICAgdGhpcy5wdXRJbnQ2NCh0aGlzLl91cGRhdGVQb3MoOCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVGbG9hdDY0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlRmxvYXQ2NCh2YWwpIHtcbiAgICAgIHRoaXMucHV0RmxvYXQ2NCh0aGlzLl91cGRhdGVQb3MoOCksIHZhbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHZhbFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVCeXRlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZUJ5dGVzKHZhbCkge1xuICAgICAgdGhpcy5wdXRCeXRlcyh0aGlzLl91cGRhdGVQb3ModmFsLnJlbWFpbmluZygpKSwgdmFsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICAgKiBidXQgc2ltcGx5IHByb3ZpZGVzIGEgc2xpY2UgdmlldyBvZiB0aGlzIGJ1ZmZlclxuICAgICAqIEBwYXJhbSBsZW5ndGhcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInJlYWRTbGljZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkU2xpY2UobGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTbGljZSh0aGlzLl91cGRhdGVQb3MobGVuZ3RoKSwgbGVuZ3RoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX3VwZGF0ZVBvc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfdXBkYXRlUG9zKGxlbmd0aCkge1xuICAgICAgdmFyIHAgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgcmVtYW5pbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInJlbWFpbmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1haW5pbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSB0aGlzLnBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhcyByZW1hbmluZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzUmVtYWluaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1JlbWFpbmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbWFpbmluZygpID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBwb3NpdGlvbiBzdGF0ZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJ1ZmZlciBhbmQgaXQncyBzdGF0ZS5cbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IEJ1ZmZlciBhcyBhIHN0cmluZ1xuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgXCIoIHBvc2l0aW9uPVwiICsgdGhpcy5wb3NpdGlvbiArIFwiIClcXG4gIFwiICsgdGhpcy50b0hleCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYnVmZmVyLlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ0b0hleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0hleCgpIHtcbiAgICAgIC8vIFRPRE8gc29tZXRoaW5nIGxpa2UgU3RyaW5nQnVpbGRlcj9cbiAgICAgIHZhciBvdXQgPSBcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBoZXhCeXRlID0gdGhpcy5nZXRVSW50OChpKS50b1N0cmluZygxNik7XG4gICAgICAgIGlmIChoZXhCeXRlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgaGV4Qnl0ZSA9IFwiMFwiICsgaGV4Qnl0ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXQgKz0gaGV4Qnl0ZSArIFwiIFwiO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEJhc2VCdWZmZXI7XG59KCk7XG5cbi8qKlxuICogQmFzaWMgYnVmZmVyIGltcGxlbWVudGF0aW9uIHRoYXQgc2hvdWxkIHdvcmsgaW4gbW9zdCBhbnkgbW9kZXJuIEpTIGVudi5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cblxudmFyIEhlYXBCdWZmZXIgPSBmdW5jdGlvbiAoX0Jhc2VCdWZmZXIpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoSGVhcEJ1ZmZlciwgX0Jhc2VCdWZmZXIpO1xuXG4gIGZ1bmN0aW9uIEhlYXBCdWZmZXIoYXJnKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgSGVhcEJ1ZmZlcik7XG5cbiAgICB2YXIgYnVmZmVyID0gYXJnIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgPyBhcmcgOiBuZXcgQXJyYXlCdWZmZXIoYXJnKTtcblxuICAgIHZhciBfdGhpcyA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKEhlYXBCdWZmZXIuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKEhlYXBCdWZmZXIpKS5jYWxsKHRoaXMsIGJ1ZmZlci5ieXRlTGVuZ3RoKSk7XG5cbiAgICBfdGhpcy5fYnVmZmVyID0gYnVmZmVyO1xuICAgIF90aGlzLl92aWV3ID0gbmV3IERhdGFWaWV3KF90aGlzLl9idWZmZXIpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKEhlYXBCdWZmZXIsIFt7XG4gICAga2V5OiBcInB1dFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX3ZpZXcuc2V0VWludDgocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRVaW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl92aWV3LnNldEludDgocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0SW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZXcuZ2V0RmxvYXQ2NChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl92aWV3LnNldEZsb2F0NjQocG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLl9idWZmZXIuc2xpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBIZWFwQnVmZmVyKHRoaXMuX2J1ZmZlci5zbGljZShzdGFydCwgc3RhcnQgKyBsZW5ndGgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNvbWUgcGxhdGZvcm1zIChlZy4gcGhhbnRvbWpzKSBkb24ndCBzdXBwb3J0IHNsaWNlLCBzbyBmYWxsIGJhY2sgdG8gYSBjb3B5XG4gICAgICAgIC8vIFdlIGRvIHRoaXMgcmF0aGVyIHRoYW4gcmV0dXJuIGEgU2xpY2VCdWZmZXIsIGJlY2F1c2Ugc2xpY2VCdWZmZXIgY2Fubm90XG4gICAgICAgIC8vIGJlIHBhc3NlZCB0byBuYXRpdmUgbmV0d29yayB3cml0ZSBvcHMgZXRjIC0gd2UgbmVlZCBBcnJheUJ1ZmZlciBmb3IgdGhhdFxuICAgICAgICB2YXIgY29weSA9IG5ldyBIZWFwQnVmZmVyKGxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb3B5LnB1dFVJbnQ4KGksIHRoaXMuZ2V0VUludDgoaSArIHN0YXJ0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmljIHRvIEhlYXBCdWZmZXIsIHRoaXMgZ2V0cyBhIERhdGFWaWV3IGZyb20gdGhlXG4gICAgICogY3VycmVudCBwb3NpdGlvbiBhbmQgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguIFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicmVhZFZpZXdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZFZpZXcobGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGFWaWV3KHRoaXMuX2J1ZmZlciwgdGhpcy5fdXBkYXRlUG9zKGxlbmd0aCksIGxlbmd0aCk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBIZWFwQnVmZmVyO1xufShCYXNlQnVmZmVyKTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdmlldyBhcyBzbGljZSBvZiBhbm90aGVyIGJ1ZmZlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cblxudmFyIFNsaWNlQnVmZmVyID0gZnVuY3Rpb24gKF9CYXNlQnVmZmVyMikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShTbGljZUJ1ZmZlciwgX0Jhc2VCdWZmZXIyKTtcblxuICBmdW5jdGlvbiBTbGljZUJ1ZmZlcihzdGFydCwgbGVuZ3RoLCBpbm5lcikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFNsaWNlQnVmZmVyKTtcblxuICAgIHZhciBfdGhpczIgPSAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChTbGljZUJ1ZmZlci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoU2xpY2VCdWZmZXIpKS5jYWxsKHRoaXMsIGxlbmd0aCkpO1xuXG4gICAgX3RoaXMyLl9zdGFydCA9IHN0YXJ0O1xuICAgIF90aGlzMi5faW5uZXIgPSBpbm5lcjtcbiAgICByZXR1cm4gX3RoaXMyO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoU2xpY2VCdWZmZXIsIFt7XG4gICAga2V5OiBcInB1dFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dFVJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2lubmVyLnB1dFVJbnQ4KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0VUludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9pbm5lci5wdXRJbnQ4KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9pbm5lci5wdXRGbG9hdDY0KHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24sIHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldEludDgodGhpcy5fc3RhcnQgKyBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldEZsb2F0NjQodGhpcy5fc3RhcnQgKyBwb3NpdGlvbik7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTbGljZUJ1ZmZlcjtcbn0oQmFzZUJ1ZmZlcik7XG5cbi8qKlxuICogQnVmZmVyIHRoYXQgY29tYmluZXMgbXVsdGlwbGUgYnVmZmVycywgZXhwb3NpbmcgdGhlbSBhcyBvbmUgc2luZ2xlIGJ1ZmZlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cblxudmFyIENvbWJpbmVkQnVmZmVyID0gZnVuY3Rpb24gKF9CYXNlQnVmZmVyMykge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShDb21iaW5lZEJ1ZmZlciwgX0Jhc2VCdWZmZXIzKTtcblxuICBmdW5jdGlvbiBDb21iaW5lZEJ1ZmZlcihidWZmZXJzKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgQ29tYmluZWRCdWZmZXIpO1xuXG4gICAgdmFyIGxlbmd0aCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZW5ndGggKz0gYnVmZmVyc1tpXS5sZW5ndGg7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzMyA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKENvbWJpbmVkQnVmZmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShDb21iaW5lZEJ1ZmZlcikpLmNhbGwodGhpcywgbGVuZ3RoKSk7XG5cbiAgICBfdGhpczMuX2J1ZmZlcnMgPSBidWZmZXJzO1xuICAgIHJldHVybiBfdGhpczM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShDb21iaW5lZEJ1ZmZlciwgW3tcbiAgICBrZXk6IFwiZ2V0VUludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VUludDgocG9zaXRpb24pIHtcbiAgICAgIC8vIFN1cmVseSB0aGVyZSdzIGEgZmFzdGVyIHdheSB0byBkbyB0aGlzLi4gc29tZSBzb3J0IG9mIGxvb2t1cCB0YWJsZSB0aGluZz9cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5fYnVmZmVyc1tpXTtcbiAgICAgICAgLy8gSWYgdGhlIHBvc2l0aW9uIGlzIG5vdCBpbiB0aGUgY3VycmVudCBidWZmZXIsIHNraXAgdGhlIGN1cnJlbnQgYnVmZmVyXG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgcG9zaXRpb24gLT0gYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYnVmZmVyLmdldFVJbnQ4KHBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEludDgocG9zaXRpb24pIHtcbiAgICAgIC8vIFN1cmVseSB0aGVyZSdzIGEgZmFzdGVyIHdheSB0byBkbyB0aGlzLi4gc29tZSBzb3J0IG9mIGxvb2t1cCB0YWJsZSB0aGluZz9cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5fYnVmZmVyc1tpXTtcbiAgICAgICAgLy8gSWYgdGhlIHBvc2l0aW9uIGlzIG5vdCBpbiB0aGUgY3VycmVudCBidWZmZXIsIHNraXAgdGhlIGN1cnJlbnQgYnVmZmVyXG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgcG9zaXRpb24gLT0gYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYnVmZmVyLmdldEludDgocG9zaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgLy8gQXQgc29tZSBwb2ludCwgYSBtb3JlIGVmZmljaWVudCBpbXBsLiBGb3Igbm93LCB3ZSBjb3B5IHRoZSA4IGJ5dGVzXG4gICAgICAvLyB3ZSB3YW50IHRvIHJlYWQgYW5kIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0gaW1wbCBvZiBJRUVFIDc1NC5cbiAgICAgIHZhciBiID0gYWxsb2MoOCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgICAgICBiLnB1dFVJbnQ4KGksIHRoaXMuZ2V0VUludDgocG9zaXRpb24gKyBpKSk7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGIuZ2V0RmxvYXQ2NCgwKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIENvbWJpbmVkQnVmZmVyO1xufShCYXNlQnVmZmVyKTtcblxuLyoqXG4gKiBCdWZmZXIgdXNlZCBpbiBhIE5vZGUuanMgZW52aXJvbm1lbnRcbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cblxudmFyIE5vZGVCdWZmZXIgPSBmdW5jdGlvbiAoX0Jhc2VCdWZmZXI0KSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKE5vZGVCdWZmZXIsIF9CYXNlQnVmZmVyNCk7XG5cbiAgZnVuY3Rpb24gTm9kZUJ1ZmZlcihhcmcpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBOb2RlQnVmZmVyKTtcblxuICAgIHZhciBidWZmZXIgPSBhcmcgaW5zdGFuY2VvZiBfbm9kZS5CdWZmZXIgPyBhcmcgOiBuZXcgX25vZGUuQnVmZmVyKGFyZyk7XG5cbiAgICB2YXIgX3RoaXM0ID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoTm9kZUJ1ZmZlci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoTm9kZUJ1ZmZlcikpLmNhbGwodGhpcywgYnVmZmVyLmxlbmd0aCkpO1xuXG4gICAgX3RoaXM0Ll9idWZmZXIgPSBidWZmZXI7XG4gICAgcmV0dXJuIF90aGlzNDtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKE5vZGVCdWZmZXIsIFt7XG4gICAga2V5OiBcImdldFVJbnQ4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFVJbnQ4KHBvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWRVSW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEludDhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW50OChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkSW50OChwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmxvYXQ2NChwb3NpdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2J1ZmZlci5yZWFkRG91YmxlQkUocG9zaXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXRVSW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRVSW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0SW50OFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXRJbnQ4KHBvc2l0aW9uLCB2YWwpIHtcbiAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsLCBwb3NpdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1dEZsb2F0NjRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0RmxvYXQ2NChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVEb3VibGVCRSh2YWwsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHV0Qnl0ZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0Qnl0ZXMocG9zaXRpb24sIHZhbCkge1xuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5vZGVCdWZmZXIpIHtcbiAgICAgICAgdmFyIGJ5dGVzVG9Db3B5ID0gTWF0aC5taW4odmFsLmxlbmd0aCAtIHZhbC5wb3NpdGlvbiwgdGhpcy5sZW5ndGggLSBwb3NpdGlvbik7XG4gICAgICAgIHZhbC5fYnVmZmVyLmNvcHkodGhpcy5fYnVmZmVyLCBwb3NpdGlvbiwgdmFsLnBvc2l0aW9uLCB2YWwucG9zaXRpb24gKyBieXRlc1RvQ29weSk7XG4gICAgICAgIHZhbC5wb3NpdGlvbiArPSBieXRlc1RvQ29weTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICgwLCBfZ2V0My5kZWZhdWx0KShOb2RlQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoTm9kZUJ1ZmZlci5wcm90b3R5cGUpLCBcInB1dEJ5dGVzXCIsIHRoaXMpLmNhbGwodGhpcywgcG9zaXRpb24sIHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNsaWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNsaWNlKHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBuZXcgTm9kZUJ1ZmZlcih0aGlzLl9idWZmZXIuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoKSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBOb2RlQnVmZmVyO1xufShCYXNlQnVmZmVyKTtcblxuLy8gVXNlIEhlYXBCdWZmZXIgYnkgZGVmYXVsdCwgdW5sZXNzIEJ1ZmZlciBBUEkgaXMgYXZhaWxhYmxlLCBzZWUgYmVsb3dcblxuXG52YXIgX0RlZmF1bHRCdWZmZXIgPSBIZWFwQnVmZmVyO1xudHJ5IHtcbiAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB3ZSdyZSBub3QgcnVubmluZyBvbiBOb2RlSlMgb3IgZXF1aXZhbGVudFxuICByZXF1aXJlLnJlc29sdmUoXCJidWZmZXJcIik7XG4gIF9EZWZhdWx0QnVmZmVyID0gTm9kZUJ1ZmZlcjtcbn0gY2F0Y2ggKGUpIHt9XG5cbi8qKlxuICogQWxsb2NhdGUgYSBuZXcgYnVmZmVyIHVzaW5nIHdoYXRldmVyIG1lY2hhbmlzbSBpcyBtb3N0IHNlbnNpYmxlIGZvciB0aGVcbiAqIGN1cnJlbnQgcGxhdGZvcm1cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtJbnRlZ2VyfSBzaXplXG4gKiBAcmV0dXJuIG5ldyBidWZmZXJcbiAqL1xuZnVuY3Rpb24gYWxsb2Moc2l6ZSkge1xuICByZXR1cm4gbmV3IF9EZWZhdWx0QnVmZmVyKHNpemUpO1xufVxuXG5leHBvcnRzLkJhc2VCdWZmZXIgPSBCYXNlQnVmZmVyO1xuZXhwb3J0cy5IZWFwQnVmZmVyID0gSGVhcEJ1ZmZlcjtcbmV4cG9ydHMuU2xpY2VCdWZmZXIgPSBTbGljZUJ1ZmZlcjtcbmV4cG9ydHMuQ29tYmluZWRCdWZmZXIgPSBDb21iaW5lZEJ1ZmZlcjtcbmV4cG9ydHMuTm9kZUJ1ZmZlciA9IE5vZGVCdWZmZXI7XG5leHBvcnRzLmFsbG9jID0gYWxsb2M7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLm9ic2VydmVyID0gZXhwb3J0cy5jaGFubmVsID0gdW5kZWZpbmVkO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfYnVmID0gcmVxdWlyZShcIi4vYnVmXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52YXIgb2JzZXJ2ZXIgPSB7XG4gIGluc3RhbmNlOiBudWxsLFxuICB1cGRhdGVJbnN0YW5jZTogZnVuY3Rpb24gdXBkYXRlSW5zdGFuY2UoaW5zdGFuY2UpIHtcbiAgICBvYnNlcnZlci5pbnN0YW5jZSA9IGluc3RhbmNlO1xuICB9XG59OyAvKipcbiAgICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAgICAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAgICAqXG4gICAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAgICAqXG4gICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgKlxuICAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgICpcbiAgICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gICAgKi9cblxudmFyIER1bW15Q2hhbm5lbCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRHVtbXlDaGFubmVsKG9wdHMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBEdW1teUNoYW5uZWwpO1xuXG4gICAgdGhpcy53cml0dGVuID0gW107XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShEdW1teUNoYW5uZWwsIFt7XG4gICAga2V5OiBcImlzRW5jcnlwdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ3cml0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZShidWYpIHtcbiAgICAgIHRoaXMud3JpdHRlbi5wdXNoKGJ1Zik7XG4gICAgICBvYnNlcnZlci51cGRhdGVJbnN0YW5jZSh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidG9IZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9IZXgoKSB7XG4gICAgICB2YXIgb3V0ID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy53cml0dGVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dCArPSB0aGlzLndyaXR0ZW5baV0udG9IZXgoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvQnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvQnVmZmVyKCkge1xuICAgICAgcmV0dXJuIG5ldyBfYnVmLkNvbWJpbmVkQnVmZmVyKHRoaXMud3JpdHRlbik7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEdW1teUNoYW5uZWw7XG59KCk7XG5cbnZhciBjaGFubmVsID0gRHVtbXlDaGFubmVsO1xuXG5leHBvcnRzLmNoYW5uZWwgPSBjaGFubmVsO1xuZXhwb3J0cy5vYnNlcnZlciA9IG9ic2VydmVyOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfbmV0ID0gcmVxdWlyZShcIm5ldFwiKTtcblxudmFyIF9uZXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbmV0KTtcblxudmFyIF90bHMgPSByZXF1aXJlKFwidGxzXCIpO1xuXG52YXIgX3RsczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90bHMpO1xuXG52YXIgX2ZzID0gcmVxdWlyZShcImZzXCIpO1xuXG52YXIgX2ZzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZzKTtcblxudmFyIF9wYXRoID0gcmVxdWlyZShcInBhdGhcIik7XG5cbnZhciBfcGF0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXRoKTtcblxudmFyIF9vcyA9IHJlcXVpcmUoXCJvc1wiKTtcblxudmFyIF9idWYgPSByZXF1aXJlKFwiLi9idWZcIik7XG5cbnZhciBfdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKFwiLi8uLi9lcnJvclwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX0NPTk5FQ1RJT05fSURHRU4gPSAwO1xuXG5mdW5jdGlvbiB1c2VySG9tZSgpIHtcbiAgLy8gRm9yIHNvbWUgcmVhc29uLCBCcm93c2VyaWZ5IGNob2tlcyBvbiBzaGltbWluZyBgcHJvY2Vzc2AuIFRoaXMgY29kZVxuICAvLyB3aWxsIG5ldmVyIGdldCBleGVjdXRlZCBvbiB0aGUgYnJvd3NlciBhbnl3YXksIHRvIGp1c3QgaGFjayBhcm91bmQgaXRcbiAgdmFyIGdldE91dE9mSGVyZUJyb3dzZXJpZnlZb3VyZURydW5rID0gcmVxdWlyZTtcbiAgdmFyIHByb2Nlc3MgPSBnZXRPdXRPZkhlcmVCcm93c2VyaWZ5WW91cmVEcnVuaygncHJvY2VzcycpO1xuXG4gIHJldHVybiBwcm9jZXNzLmVudltwcm9jZXNzLnBsYXRmb3JtID09ICd3aW4zMicgPyAnVVNFUlBST0ZJTEUnIDogJ0hPTUUnXTtcbn1cblxuZnVuY3Rpb24gbWtGdWxsUGF0aChwYXRoVG9DcmVhdGUpIHtcbiAgdHJ5IHtcbiAgICBfZnMyLmRlZmF1bHQubWtkaXJTeW5jKHBhdGhUb0NyZWF0ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgLy8gQ3JlYXRlIHBhcmVudCBkaXJcbiAgICAgIG1rRnVsbFBhdGgoX3BhdGgyLmRlZmF1bHQuZGlybmFtZShwYXRoVG9DcmVhdGUpKTtcbiAgICAgIC8vIEFuZCBub3cgdHJ5IGFnYWluXG4gICAgICBta0Z1bGxQYXRoKHBhdGhUb0NyZWF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlLmNvZGUgPT09ICdFRVhJU1QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZpbmdlcnByaW50KHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgY2IpIHtcbiAgdHJ5IHtcbiAgICBfZnMyLmRlZmF1bHQuYWNjZXNzU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gY2IobnVsbCk7XG4gIH1cbiAgdmFyIGZvdW5kID0gZmFsc2U7XG4gIHJlcXVpcmUoJ3JlYWRsaW5lJykuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogX2ZzMi5kZWZhdWx0LmNyZWF0ZVJlYWRTdHJlYW0oa25vd25Ib3N0c1BhdGgpXG4gIH0pLm9uKCdsaW5lJywgZnVuY3Rpb24gKGxpbmUpIHtcbiAgICBpZiAoIWZvdW5kICYmIGxpbmUuc3RhcnRzV2l0aChzZXJ2ZXJJZCkpIHtcbiAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgIGNiKGxpbmUuc3BsaXQoXCIgXCIpWzFdKTtcbiAgICB9XG4gIH0pLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmcgPSB7fTtcbmZ1bmN0aW9uIHN0b3JlRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBmaW5nZXJwcmludCwgY2IpIHtcbiAgLy8gd2UgY2hlY2sgaWYgdGhlIHNlcnZlcklkIGhhcyBiZWVuIGFwcGVuZGVkXG4gIGlmICghIV9sb2NrRmluZ2VycHJpbnRGcm9tQXBwZW5kaW5nW3NlcnZlcklkXSkge1xuICAgIC8vIGlmIGl0IGhhcywgd2UgaWdub3JlIGl0XG4gICAgcmV0dXJuIGNiKG51bGwpO1xuICB9XG5cbiAgLy8gd2UgbWFrZSB0aGUgbGluZSBhcyBhcHBlbmRlZFxuICAvLyAoIDEgaXMgbW9yZSBlZmZpY2llbnQgdG8gc3RvcmUgdGhhbiB0cnVlIGJlY2F1c2UgdHJ1ZSBpcyBhbiBvZGRiYWxsIClcbiAgX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmdbc2VydmVySWRdID0gMTtcblxuICAvLyBJZiBmaWxlIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZSBmdWxsIHBhdGggdG8gaXRcbiAgdHJ5IHtcbiAgICBfZnMyLmRlZmF1bHQuYWNjZXNzU3luYyhrbm93bkhvc3RzUGF0aCk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBta0Z1bGxQYXRoKF9wYXRoMi5kZWZhdWx0LmRpcm5hbWUoa25vd25Ib3N0c1BhdGgpKTtcbiAgfVxuXG4gIF9mczIuZGVmYXVsdC5hcHBlbmRGaWxlKGtub3duSG9zdHNQYXRoLCBzZXJ2ZXJJZCArIFwiIFwiICsgZmluZ2VycHJpbnQgKyBfb3MuRU9MLCBcInV0ZjhcIiwgZnVuY3Rpb24gKGVycikge1xuICAgIGRlbGV0ZSBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZ1tzZXJ2ZXJJZF07XG4gICAgaWYgKGVycikge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNiKGVycik7XG4gIH0pO1xufVxuXG52YXIgVHJ1c3RTdHJhdGVneSA9IHtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gMS4wLiBXaWxsIGJlIGRlbGV0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4ge0BsaW5rICNUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU30uXG4gICAqL1xuICBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgY29uc29sZS5sb2coXCJgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU2AgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBvcHRpb24gYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFwiICsgXCJ0aGUgZHJpdmVyLiBQbGVhc2UgdXNlIGBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU2AgaW5zdGVhZC5cIik7XG4gICAgcmV0dXJuIFRydXN0U3RyYXRlZ3kuVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpO1xuICB9LFxuICBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUzogZnVuY3Rpb24gVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMob3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUpIHtcbiAgICBpZiAoIW9wdHMudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBvcHRzLnRydXN0ZWRDZXJ0aWZpY2F0ZXMubGVuZ3RoID09IDApIHtcbiAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIllvdSBhcmUgdXNpbmcgVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgYXMgdGhlIG1ldGhvZCBcIiArIFwidG8gdmVyaWZ5IHRydXN0IGZvciBlbmNyeXB0ZWQgIGNvbm5lY3Rpb25zLCBidXQgaGF2ZSBub3QgY29uZmlndXJlZCBhbnkgXCIgKyBcInRydXN0ZWRDZXJ0aWZpY2F0ZXMuIFlvdSAgbXVzdCBzcGVjaWZ5IHRoZSBwYXRoIHRvIGF0IGxlYXN0IG9uZSB0cnVzdGVkIFwiICsgXCJYLjUwOSBjZXJ0aWZpY2F0ZSBmb3IgdGhpcyB0byB3b3JrLiBUd28gb3RoZXIgYWx0ZXJuYXRpdmVzIGlzIHRvIHVzZSBcIiArIFwiVFJVU1RfQUxMX0NFUlRJRklDQVRFUyBvciB0byBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBlbmNyeXB0ZWQ9XFxcIlwiICsgX3V0aWwuRU5DUllQVElPTl9PRkYgKyBcIlxcXCJcIiArIFwiaW4geW91ciBkcml2ZXIgY29uZmlndXJhdGlvbi5cIikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciB0bHNPcHRzID0ge1xuICAgICAgY2E6IG9wdHMudHJ1c3RlZENlcnRpZmljYXRlcy5tYXAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIF9mczIuZGVmYXVsdC5yZWFkRmlsZVN5bmMoZik7XG4gICAgICB9KSxcbiAgICAgIC8vIEJlY2F1c2Ugd2UgbWFudWFsbHkgY2hlY2sgZm9yIHRoaXMgaW4gdGhlIGNvbm5lY3QgY2FsbGJhY2ssIHRvIGdpdmVcbiAgICAgIC8vIGEgbW9yZSBoZWxwZnVsIGVycm9yIHRvIHRoZSB1c2VyXG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHZhciBzb2NrZXQgPSBfdGxzMi5kZWZhdWx0LmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIHRsc09wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghc29ja2V0LmF1dGhvcml6ZWQpIHtcbiAgICAgICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB0cnVzdGVkLiBJZiB5b3UgdHJ1c3QgdGhlIGRhdGFiYXNlIHlvdSBhcmUgY29ubmVjdGluZyB0bywgYWRkXCIgKyBcIiB0aGUgc2lnbmluZyBjZXJ0aWZpY2F0ZSwgb3IgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSwgdG8gdGhlIGxpc3Qgb2YgY2VydGlmaWNhdGVzIHRydXN0ZWQgYnkgdGhpcyBkcml2ZXJcIiArIFwiIHVzaW5nIGBuZW80ai52MS5kcml2ZXIoLi4sIHsgdHJ1c3RlZENlcnRpZmljYXRlczpbJ3BhdGgvdG8vY2VydGlmaWNhdGUuY3J0J119KS4gVGhpcyBcIiArIFwiIGlzIGEgc2VjdXJpdHkgbWVhc3VyZSB0byBwcm90ZWN0IGFnYWluc3QgbWFuLWluLXRoZS1taWRkbGUgYXR0YWNrcy4gSWYgeW91IGFyZSBqdXN0IHRyeWluZyBcIiArIFwiIE5lbzRqIG91dCBhbmQgYXJlIG5vdCBjb25jZXJuZWQgYWJvdXQgZW5jcnlwdGlvbiwgc2ltcGx5IGRpc2FibGUgaXQgdXNpbmcgYGVuY3J5cHRlZD1cXFwiXCIgKyBfdXRpbC5FTkNSWVBUSU9OX09GRiArIFwiXFxcImBcIiArIFwiIGluIHRoZSBkcml2ZXIgb3B0aW9ucy4gU29ja2V0IHJlc3BvbmRlZCB3aXRoOiBcIiArIHNvY2tldC5hdXRob3JpemF0aW9uRXJyb3IpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH0sXG4gIFRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiBUUlVTVF9TWVNURU1fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyhvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuXG4gICAgdmFyIHRsc09wdHMgPSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IGNoZWNrIGZvciB0aGlzIGluIHRoZSBjb25uZWN0IGNhbGxiYWNrLCB0byBnaXZlXG4gICAgICAvLyBhIG1vcmUgaGVscGZ1bCBlcnJvciB0byB0aGUgdXNlclxuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG4gICAgdmFyIHNvY2tldCA9IF90bHMyLmRlZmF1bHQuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzb2NrZXQuYXV0aG9yaXplZCkge1xuICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuIElmIHlvdSB0cnVzdCB0aGUgZGF0YWJhc2UgeW91IGFyZSBjb25uZWN0aW5nIHRvLCB1c2UgXCIgKyBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTIGFuZCBhZGRcIiArIFwiIHRoZSBzaWduaW5nIGNlcnRpZmljYXRlLCBvciB0aGUgc2VydmVyIGNlcnRpZmljYXRlLCB0byB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZXMgdHJ1c3RlZCBieSB0aGlzIGRyaXZlclwiICsgXCIgdXNpbmcgYG5lbzRqLnYxLmRyaXZlciguLiwgeyB0cnVzdGVkQ2VydGlmaWNhdGVzOlsncGF0aC90by9jZXJ0aWZpY2F0ZS5jcnQnXX0pLiBUaGlzIFwiICsgXCIgaXMgYSBzZWN1cml0eSBtZWFzdXJlIHRvIHByb3RlY3QgYWdhaW5zdCBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICsgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBgZW5jcnlwdGVkPVxcXCJcIiArIF91dGlsLkVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYFwiICsgXCIgaW4gdGhlIGRyaXZlciBvcHRpb25zLiBTb2NrZXQgcmVzcG9uZGVkIHdpdGg6IFwiICsgc29ja2V0LmF1dGhvcml6YXRpb25FcnJvcikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfSxcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGluIDEuMSBpbiBmYXZvdXIgb2Yge0BsaW5rICNUUlVTVF9BTExfQ0VSVElGSUNBVEVTfS4gV2lsbCBiZSBkZWxldGVkIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gICAqL1xuICBUUlVTVF9PTl9GSVJTVF9VU0U6IGZ1bmN0aW9uIFRSVVNUX09OX0ZJUlNUX1VTRShvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIGNvbnNvbGUubG9nKFwiYFRSVVNUX09OX0ZJUlNUX1VTRWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBvcHRpb24gYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFwiICsgXCJ0aGUgZHJpdmVyLiBQbGVhc2UgdXNlIGBUUlVTVF9BTExfQ0VSVElGSUNBVEVTYCBpbnN0ZWFkLlwiKTtcblxuICAgIHZhciB0bHNPcHRzID0ge1xuICAgICAgLy8gQmVjYXVzZSB3ZSBtYW51YWxseSB2ZXJpZnkgdGhlIGNlcnRpZmljYXRlIGFnYWluc3Qga25vd25faG9zdHNcbiAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcbiAgICB9O1xuXG4gICAgdmFyIHNvY2tldCA9IF90bHMyLmRlZmF1bHQuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHNlcnZlckNlcnQgPSBzb2NrZXQuZ2V0UGVlckNlcnRpZmljYXRlKCAvKnJhdz0qL3RydWUpO1xuXG4gICAgICBpZiAoIXNlcnZlckNlcnQucmF3KSB7XG4gICAgICAgIC8vIElmIGByYXdgIGlzIG5vdCBhdmFpbGFibGUsIHdlJ3JlIG9uIGFuIG9sZCB2ZXJzaW9uIG9mIE5vZGVKUywgYW5kXG4gICAgICAgIC8vIHRoZSByYXcgY2VydCBjYW5ub3QgYmUgYWNjZXNzZWQgKG9yLCBhdCBsZWFzdCBJIGNvdWxkbid0IGZpbmQgYSB3YXkgdG8pXG4gICAgICAgIC8vIHRoZXJlZm9yZSwgd2UgY2FuJ3QgZ2VuZXJhdGUgYSBTSEE1MTIgZmluZ2VycHJpbnQsIG1lYW5pbmcgd2UgY2FuJ3RcbiAgICAgICAgLy8gZG8gVE9GVSwgYW5kIHRoZSBzYWZlIGFwcHJvYWNoIGlzIHRvIGZhaWwuXG4gICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIllvdSBhcmUgdXNpbmcgYSB2ZXJzaW9uIG9mIE5vZGVKUyB0aGF0IGRvZXMgbm90IFwiICsgXCJzdXBwb3J0IHRydXN0LW9uLWZpcnN0IHVzZSBlbmNyeXB0aW9uLiBZb3UgY2FuIGVpdGhlciB1cGdyYWRlIE5vZGVKUyB0byBcIiArIFwiYSBuZXdlciB2ZXJzaW9uLCB1c2UgYHRydXN0OlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTYCBpbiB5b3VyIGRyaXZlciBcIiArIFwiY29uZmlnIGluc3RlYWQsIG9yIGRpc2FibGUgZW5jcnlwdGlvbiB1c2luZyBgZW5jcnlwdGVkOlxcXCJcIiArIF91dGlsLkVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBzZXJ2ZXJGaW5nZXJwcmludCA9IHJlcXVpcmUoJ2NyeXB0bycpLmNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShzZXJ2ZXJDZXJ0LnJhdykuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgdmFyIGtub3duSG9zdHNQYXRoID0gb3B0cy5rbm93bkhvc3RzIHx8IF9wYXRoMi5kZWZhdWx0LmpvaW4odXNlckhvbWUoKSwgXCIubmVvNGpcIiwgXCJrbm93bl9ob3N0c1wiKTtcbiAgICAgIHZhciBzZXJ2ZXJJZCA9IG9wdHMuaG9zdCArIFwiOlwiICsgb3B0cy5wb3J0O1xuXG4gICAgICBsb2FkRmluZ2VycHJpbnQoc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBmdW5jdGlvbiAoa25vd25GaW5nZXJwcmludCkge1xuICAgICAgICBpZiAoa25vd25GaW5nZXJwcmludCA9PT0gc2VydmVyRmluZ2VycHJpbnQpIHtcbiAgICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrbm93bkZpbmdlcnByaW50ID09IG51bGwpIHtcbiAgICAgICAgICBzdG9yZUZpbmdlcnByaW50KHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgc2VydmVyRmluZ2VycHJpbnQsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9uRmFpbHVyZShlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9uU3VjY2VzcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9uRmFpbHVyZSgoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkRhdGFiYXNlIGVuY3J5cHRpb24gY2VydGlmaWNhdGUgaGFzIGNoYW5nZWQsIGFuZCBubyBsb25nZXIgXCIgKyBcIm1hdGNoZXMgdGhlIGNlcnRpZmljYXRlIHN0b3JlZCBmb3IgXCIgKyBzZXJ2ZXJJZCArIFwiIGluIGBcIiArIGtub3duSG9zdHNQYXRoICsgXCJgLiBBcyBhIHNlY3VyaXR5IHByZWNhdXRpb24sIHRoaXMgZHJpdmVyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgdHJ1c3QgdGhlIG5ldyBcIiArIFwiY2VydGlmaWNhdGUsIGJlY2F1c2UgZG9pbmcgc28gd291bGQgYWxsb3cgYW4gYXR0YWNrZXIgdG8gcHJldGVuZCB0byBiZSB0aGUgTmVvNGogXCIgKyBcImluc3RhbmNlIHdlIHdhbnQgdG8gY29ubmVjdCB0by4gVGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgbG9va3MgbGlrZTogXCIgKyBzZXJ2ZXJDZXJ0ICsgXCIuIElmIHlvdSB0cnVzdCB0aGF0IHRoaXMgY2VydGlmaWNhdGUgaXMgdmFsaWQsIHNpbXBseSByZW1vdmUgdGhlIGxpbmUgXCIgKyBcInN0YXJ0aW5nIHdpdGggXCIgKyBzZXJ2ZXJJZCArIFwiIGluIGBcIiArIGtub3duSG9zdHNQYXRoICsgXCJgLCBhbmQgdGhlIGRyaXZlciB3aWxsIFwiICsgXCJ1cGRhdGUgdGhlIGZpbGUgd2l0aCB0aGUgbmV3IGNlcnRpZmljYXRlLiBZb3UgY2FuIGNvbmZpZ3VyZSB3aGljaCBmaWxlIHRoZSBkcml2ZXIgXCIgKyBcInNob3VsZCB1c2UgdG8gc3RvcmUgdGhpcyBpbmZvcm1hdGlvbiBieSBzZXR0aW5nIGBrbm93bkhvc3RzYCB0byBhbm90aGVyIHBhdGggaW4gXCIgKyBcInlvdXIgZHJpdmVyIGNvbmZpZ3VyYXRpb24gLSBhbmQgeW91IGNhbiBkaXNhYmxlIGVuY3J5cHRpb24gdGhlcmUgYXMgd2VsbCB1c2luZyBcIiArIFwiYGVuY3J5cHRlZDpcXFwiXCIgKyBfdXRpbC5FTkNSWVBUSU9OX09GRiArIFwiXFxcImAuXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfSxcblxuICBUUlVTVF9BTExfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiBUUlVTVF9BTExfQ0VSVElGSUNBVEVTKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKSB7XG4gICAgdmFyIHRsc09wdHMgPSB7XG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlXG4gICAgfTtcbiAgICB2YXIgc29ja2V0ID0gX3RsczIuZGVmYXVsdC5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgY2VydGlmaWNhdGUgPSBzb2NrZXQuZ2V0UGVlckNlcnRpZmljYXRlKCk7XG4gICAgICBpZiAoKDAsIF91dGlsLmlzRW1wdHlPYmplY3RPck51bGwpKGNlcnRpZmljYXRlKSkge1xuICAgICAgICBvbkZhaWx1cmUoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTZWN1cmUgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bCBidXQgc2VydmVyIGRpZCBub3QgcmV0dXJuIGFueSB2YWxpZCBcIiArIFwiY2VydGlmaWNhdGVzLiBTdWNoIGNvbm5lY3Rpb24gY2FuIG5vdCBiZSB0cnVzdGVkLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICsgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBcIiArIFwiYGVuY3J5cHRlZD1cXFwiXCIgKyBfdXRpbC5FTkNSWVBUSU9OX09GRiArIFwiXFxcImAgaW4gdGhlIGRyaXZlciBvcHRpb25zLiBcIiArIFwiU29ja2V0IHJlc3BvbmRlZCB3aXRoOiBcIiArIHNvY2tldC5hdXRob3JpemF0aW9uRXJyb3IpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbm5lY3Qob3B0cywgb25TdWNjZXNzKSB7XG4gIHZhciBvbkZhaWx1cmUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICAvL3N0aWxsIGFsbG93IGJvb2xlYW4gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gIGlmIChvcHRzLmVuY3J5cHRlZCA9PT0gZmFsc2UgfHwgb3B0cy5lbmNyeXB0ZWQgPT09IF91dGlsLkVOQ1JZUFRJT05fT0ZGKSB7XG4gICAgdmFyIGNvbm4gPSBfbmV0Mi5kZWZhdWx0LmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIG9uU3VjY2Vzcyk7XG4gICAgY29ubi5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBjb25uO1xuICB9IGVsc2UgaWYgKFRydXN0U3RyYXRlZ3lbb3B0cy50cnVzdF0pIHtcbiAgICByZXR1cm4gVHJ1c3RTdHJhdGVneVtvcHRzLnRydXN0XShvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7XG4gIH0gZWxzZSB7XG4gICAgb25GYWlsdXJlKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biB0cnVzdCBzdHJhdGVneTogXCIgKyBvcHRzLnRydXN0ICsgXCIuIFBsZWFzZSB1c2UgZWl0aGVyIFwiICsgXCJ0cnVzdDonVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMnIG9yIHRydXN0OidUUlVTVF9BTExfQ0VSVElGSUNBVEVTJyBpbiB5b3VyIGRyaXZlciBcIiArIFwiY29uZmlndXJhdGlvbi4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArIFwiYGVuY3J5cHRlZDpcXFwiXCIgKyBfdXRpbC5FTkNSWVBUSU9OX09GRiArIFwiXFxcImAuIFRoZXJlIGlzIG5vIG1lY2hhbmlzbSB0byB1c2UgZW5jcnlwdGlvbiB3aXRob3V0IHRydXN0IHZlcmlmaWNhdGlvbiwgXCIgKyBcImJlY2F1c2UgdGhpcyBpbmN1cnMgdGhlIG92ZXJoZWFkIG9mIGVuY3J5cHRpb24gd2l0aG91dCBpbXByb3Zpbmcgc2VjdXJpdHkuIElmIFwiICsgXCJ0aGUgZHJpdmVyIGRvZXMgbm90IHZlcmlmeSB0aGF0IHRoZSBwZWVyIGl0IGlzIGNvbm5lY3RlZCB0byBpcyByZWFsbHkgTmVvNGosIGl0IFwiICsgXCJpcyB2ZXJ5IGVhc3kgZm9yIGFuIGF0dGFja2VyIHRvIGJ5cGFzcyB0aGUgZW5jcnlwdGlvbiBieSBwcmV0ZW5kaW5nIHRvIGJlIE5lbzRqLlwiKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbiBhIE5vZGUuanMgZW52aXJvbm1lbnQgdGhlICduZXQnIG1vZHVsZSBpcyB1c2VkXG4gKiBhcyB0cmFuc3BvcnQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuXG52YXIgTm9kZUNoYW5uZWwgPSBmdW5jdGlvbiAoKSB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5ob3N0IC0gVGhlIGhvc3QsIGluY2x1ZGluZyBwcm90b2NvbCB0byBjb25uZWN0IHRvLlxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IG9wdHMucG9ydCAtIFRoZSBwb3J0IHRvIHVzZS5cbiAgICovXG4gIGZ1bmN0aW9uIE5vZGVDaGFubmVsKG9wdHMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBOb2RlQ2hhbm5lbCk7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmlkID0gX0NPTk5FQ1RJT05fSURHRU4rKztcbiAgICB0aGlzLmF2YWlsYWJsZSA9IHRydWU7XG4gICAgdGhpcy5fcGVuZGluZyA9IFtdO1xuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IuYmluZCh0aGlzKTtcbiAgICB0aGlzLl9oYW5kbGVDb25uZWN0aW9uVGVybWluYXRlZCA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9lbmNyeXB0ZWQgPSBvcHRzLmVuY3J5cHRlZDtcbiAgICB0aGlzLl9jb25uID0gY29ubmVjdChvcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNlbGYuX29wZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLl9jb25uLm9uKCdkYXRhJywgZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICBpZiAoc2VsZi5vbm1lc3NhZ2UpIHtcbiAgICAgICAgICBzZWxmLm9ubWVzc2FnZShuZXcgX2J1Zi5Ob2RlQnVmZmVyKGJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2VsZi5fY29ubi5vbignZXJyb3InLCBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuICAgICAgc2VsZi5fY29ubi5vbignZW5kJywgc2VsZi5faGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWQpO1xuXG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZShwZW5kaW5nW2ldKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoTm9kZUNoYW5uZWwsIFt7XG4gICAga2V5OiBcIl9oYW5kbGVDb25uZWN0aW9uRXJyb3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2hhbmRsZUNvbm5lY3Rpb25FcnJvcihlcnIpIHtcbiAgICAgIHZhciBtc2cgPSBlcnIubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyJztcbiAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikobXNnLCBfZXJyb3IuU0VTU0lPTl9FWFBJUkVEKTtcbiAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbmVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVDb25uZWN0aW9uVGVybWluYXRlZCgpIHtcbiAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikoJ0Nvbm5lY3Rpb24gd2FzIGNsb3NlZCBieSBzZXJ2ZXInLCBfZXJyb3IuU0VTU0lPTl9FWFBJUkVEKTtcbiAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbmVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNFbmNyeXB0ZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNFbmNyeXB0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5jcnlwdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHRoZSBwYXNzZWQgaW4gYnVmZmVyIHRvIGNvbm5lY3Rpb25cbiAgICAgKiBAcGFyYW0ge05vZGVCdWZmZXJ9IGJ1ZmZlciAtIEJ1ZmZlciB0byB3cml0ZVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwid3JpdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmZmVyKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgcXVldWUsIHB1c2ggdGhpcyBvbiB0aGF0IHF1ZXVlLiBUaGlzIG1lYW5zXG4gICAgICAvLyB3ZSBhcmUgbm90IHlldCBjb25uZWN0ZWQsIHNvIHdlIHF1ZXVlIHRoaW5ncyBsb2NhbGx5LlxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZy5wdXNoKGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIF9idWYuTm9kZUJ1ZmZlcikge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyggXCJbQ29ubiNcIit0aGlzLmlkK1wiXSBTRU5EOiBcIiwgYnVmZmVyLnRvU3RyaW5nKCkgKTtcbiAgICAgICAgdGhpcy5fY29ubi53cml0ZShidWZmZXIuX2J1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkRvbid0IGtub3cgaG93IHRvIHdyaXRlOiBcIiArIGJ1ZmZlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgdGhlIGNvbm5lY3Rpb25cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiAtIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2xvc2UuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJjbG9zZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLl9jb25uKSB7XG4gICAgICAgIHRoaXMuX2Nvbm4uZW5kKCk7XG4gICAgICAgIHRoaXMuX2Nvbm4ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkKTtcbiAgICAgICAgdGhpcy5fY29ubi5vbignZW5kJywgY2IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE5vZGVDaGFubmVsO1xufSgpO1xuXG52YXIgX25vZGVDaGFubmVsTW9kdWxlID0geyBjaGFubmVsOiBOb2RlQ2hhbm5lbCwgYXZhaWxhYmxlOiB0cnVlIH07XG5cbnRyeSB7XG4gIC8vIE9ubHkgZGVmaW5lIHRoaXMgbW9kdWxlIGlmICduZXQnIGlzIGF2YWlsYWJsZVxuICByZXF1aXJlLnJlc29sdmUoXCJuZXRcIik7XG59IGNhdGNoIChlKSB7XG4gIF9ub2RlQ2hhbm5lbE1vZHVsZSA9IHsgYXZhaWxhYmxlOiBmYWxzZSB9O1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSBfbm9kZUNoYW5uZWxNb2R1bGU7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9idWYgPSByZXF1aXJlKCcuL2J1ZicpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG52YXIgX3V0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgV2ViU29ja2V0Q2hhbm5lbCB0byBiZSB1c2VkIGluIHdlYiBicm93c2Vycy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG52YXIgV2ViU29ja2V0Q2hhbm5lbCA9IGZ1bmN0aW9uICgpIHtcblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmhvc3QgLSBUaGUgaG9zdCwgaW5jbHVkaW5nIHByb3RvY29sIHRvIGNvbm5lY3QgdG8uXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gb3B0cy5wb3J0IC0gVGhlIHBvcnQgdG8gdXNlLlxuICAgKi9cbiAgZnVuY3Rpb24gV2ViU29ja2V0Q2hhbm5lbChvcHRzKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgV2ViU29ja2V0Q2hhbm5lbCk7XG5cblxuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX3BlbmRpbmcgPSBbXTtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9lbmNyeXB0ZWQgPSBvcHRzLmVuY3J5cHRlZDtcblxuICAgIHZhciBzY2hlbWUgPSBcIndzXCI7XG4gICAgLy9BbGxvdyBib29sZWFuIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIGlmIChvcHRzLmVuY3J5cHRlZCA9PT0gdHJ1ZSB8fCBvcHRzLmVuY3J5cHRlZCA9PT0gX3V0aWwuRU5DUllQVElPTl9PTikge1xuICAgICAgaWYgKCFvcHRzLnRydXN0IHx8IG9wdHMudHJ1c3QgPT09IFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIikge1xuICAgICAgICBzY2hlbWUgPSBcIndzc1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZXJyb3IgPSAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlRoZSBicm93c2VyIHZlcnNpb24gb2YgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyBvbmUgdHJ1c3QgXCIgKyBcInN0cmF0ZWd5LCAnVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMnLiBcIiArIG9wdHMudHJ1c3QgKyBcIiBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgXCIgKyBcImVpdGhlciB1c2UgVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgb3IgZGlzYWJsZSBlbmNyeXB0aW9uIGJ5IHNldHRpbmcgXCIgKyBcImBlbmNyeXB0ZWQ6XFxcIlwiICsgX3V0aWwuRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgIGluIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXJsID0gc2NoZW1lICsgXCI6Ly9cIiArIG9wdHMuaG9zdCArIFwiOlwiICsgb3B0cy5wb3J0O1xuICAgIHRoaXMuX3dzID0gbmV3IFdlYlNvY2tldCh0aGlzLl91cmwpO1xuICAgIHRoaXMuX3dzLmJpbmFyeVR5cGUgPSBcImFycmF5YnVmZmVyXCI7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgLy9BbGwgY29ubmVjdGlvbiBlcnJvcnMgYXJlIG5vdCBzZW50IHRvIHRoZSBlcnJvciBoYW5kbGVyXG4gICAgLy93ZSBtdXN0IGFsc28gY2hlY2sgZm9yIGRpcnR5IGNsb3NlIGNhbGxzXG4gICAgdGhpcy5fd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoIWUud2FzQ2xlYW4pIHtcbiAgICAgICAgc2VsZi5faGFuZGxlQ29ubmVjdGlvbkVycm9yKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl93cy5vbm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgdmFyIHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZShwZW5kaW5nW2ldKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHNlbGYub25tZXNzYWdlKSB7XG4gICAgICAgIHZhciBiID0gbmV3IF9idWYuSGVhcEJ1ZmZlcihldmVudC5kYXRhKTtcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UoYik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuX3dzLm9uZXJyb3IgPSB0aGlzLl9oYW5kbGVDb25uZWN0aW9uRXJyb3I7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShXZWJTb2NrZXRDaGFubmVsLCBbe1xuICAgIGtleTogJ19oYW5kbGVDb25uZWN0aW9uRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKCkge1xuICAgICAgLy8gb25lcnJvciB0cmlnZ2VycyBvbiB3ZWJzb2NrZXQgY2xvc2UgYXMgd2VsbC4uIGRvbid0IGdldCBtZSBzdGFydGVkLlxuICAgICAgaWYgKHRoaXMuX29wZW4pIHtcbiAgICAgICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNTc3OTgzMS9ob3ctdG8tY2F0Y2gtd2Vic29ja2V0LWNvbm5lY3Rpb24tdG8td3MteHh4bm4tZmFpbGVkLWNvbm5lY3Rpb24tY2xvc2VkLWJlXG4gICAgICAgIHRoaXMuX2Vycm9yID0gKDAsIF9lcnJvci5uZXdFcnJvcikoXCJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsdXJlLiBEdWUgdG8gc2VjdXJpdHkgXCIgKyBcImNvbnN0cmFpbnRzIGluIHlvdXIgd2ViIGJyb3dzZXIsIHRoZSByZWFzb24gZm9yIHRoZSBmYWlsdXJlIGlzIG5vdCBhdmFpbGFibGUgXCIgKyBcInRvIHRoaXMgTmVvNGogRHJpdmVyLiBQbGVhc2UgdXNlIHlvdXIgYnJvd3NlcnMgZGV2ZWxvcG1lbnQgY29uc29sZSB0byBkZXRlcm1pbmUgXCIgKyBcInRoZSByb290IGNhdXNlIG9mIHRoZSBmYWlsdXJlLiBDb21tb24gcmVhc29ucyBpbmNsdWRlIHRoZSBkYXRhYmFzZSBiZWluZyBcIiArIFwidW5hdmFpbGFibGUsIHVzaW5nIHRoZSB3cm9uZyBjb25uZWN0aW9uIFVSTCBvciB0ZW1wb3JhcnkgbmV0d29yayBwcm9ibGVtcy4gXCIgKyBcIklmIHlvdSBoYXZlIGVuYWJsZWQgZW5jcnlwdGlvbiwgZW5zdXJlIHlvdXIgYnJvd3NlciBpcyBjb25maWd1cmVkIHRvIHRydXN0IHRoZSBcIiArIFwiY2VydGlmaWNhdGUgTmVvNGogaXMgY29uZmlndXJlZCB0byB1c2UuIFdlYlNvY2tldCBgcmVhZHlTdGF0ZWAgaXM6IFwiICsgdGhpcy5fd3MucmVhZHlTdGF0ZSk7XG4gICAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm9uZXJyb3IodGhpcy5fZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaXNFbmNyeXB0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0VuY3J5cHRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmNyeXB0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7SGVhcEJ1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyIHRvIHdyaXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3dyaXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gd3JpdGUoYnVmZmVyKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgcXVldWUsIHB1c2ggdGhpcyBvbiB0aGF0IHF1ZXVlLiBUaGlzIG1lYW5zXG4gICAgICAvLyB3ZSBhcmUgbm90IHlldCBjb25uZWN0ZWQsIHNvIHdlIHF1ZXVlIHRoaW5ncyBsb2NhbGx5LlxuICAgICAgaWYgKHRoaXMuX3BlbmRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZy5wdXNoKGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIF9idWYuSGVhcEJ1ZmZlcikge1xuICAgICAgICB0aGlzLl93cy5zZW5kKGJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gc2VuZCBidWZmZXI6IFwiICsgYnVmZmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgY29ubmVjdGlvblxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBjYiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuX3dzLmNsb3NlKCk7XG4gICAgICB0aGlzLl93cy5vbmNsb3NlID0gY2I7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBXZWJTb2NrZXRDaGFubmVsO1xufSgpOyAvKipcbiAgICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgICAqXG4gICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICAgKlxuICAgICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICAgKlxuICAgICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgICAqXG4gICAgICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAgICovXG5cbnZhciBhdmFpbGFibGUgPSB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJztcbnZhciBfd2Vic29ja2V0Q2hhbm5lbE1vZHVsZSA9IHsgY2hhbm5lbDogV2ViU29ja2V0Q2hhbm5lbCwgYXZhaWxhYmxlOiBhdmFpbGFibGUgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gX3dlYnNvY2tldENoYW5uZWxNb2R1bGU7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5EZWNodW5rZXIgPSBleHBvcnRzLkNodW5rZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRQcm90b3R5cGVPZik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX2J1ZiA9IHJlcXVpcmUoJy4vYnVmJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBfQ0hVTktfSEVBREVSX1NJWkUgPSAyLFxuICAgIF9NRVNTQUdFX0JPVU5EQVJZID0gMHgwMCxcbiAgICBfREVGQVVMVF9CVUZGRVJfU0laRSA9IDE0MDA7IC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjYxMzczNC9tYXhpbXVtLXBhY2tldC1zaXplLWZvci1hLXRjcC1jb25uZWN0aW9uXG5cbi8qKlxuICogTG9va3MgbGlrZSBhIHdyaXRhYmxlIGJ1ZmZlciwgY2h1bmtzIG91dHB1dCB0cmFuc3BhcmVudGx5IGludG8gYSBjaGFubmVsIGJlbG93LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgQ2h1bmtlciA9IGZ1bmN0aW9uIChfQmFzZUJ1ZmZlcikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShDaHVua2VyLCBfQmFzZUJ1ZmZlcik7XG5cbiAgZnVuY3Rpb24gQ2h1bmtlcihjaGFubmVsLCBidWZmZXJTaXplKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgQ2h1bmtlcik7XG5cbiAgICB2YXIgX3RoaXMgPSAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChDaHVua2VyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShDaHVua2VyKSkuY2FsbCh0aGlzLCAwKSk7XG5cbiAgICBfdGhpcy5fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemUgfHwgX0RFRkFVTFRfQlVGRkVSX1NJWkU7XG4gICAgX3RoaXMuX2NoID0gY2hhbm5lbDtcbiAgICBfdGhpcy5fYnVmZmVyID0gKDAsIF9idWYuYWxsb2MpKF90aGlzLl9idWZmZXJTaXplKTtcbiAgICBfdGhpcy5fY3VycmVudENodW5rU3RhcnQgPSAwO1xuICAgIF90aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShDaHVua2VyLCBbe1xuICAgIGtleTogJ3B1dFVJbnQ4JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlVUludDgodmFsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXRJbnQ4JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQ4KHZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncHV0RmxvYXQ2NCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgICAgdGhpcy5fZW5zdXJlKDgpO1xuICAgICAgdGhpcy5fYnVmZmVyLndyaXRlRmxvYXQ2NCh2YWwpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3B1dEJ5dGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHV0Qnl0ZXMocG9zaXRpb24sIGRhdGEpIHtcbiAgICAgIC8vIFRPRE86IElmIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3VyIGNodW5rIHNpemUgb3Igc28sIHdlJ3JlIHZlcnkgbGlrZWx5IGJldHRlciBvZmYganVzdCBwYXNzaW5nIHRoaXMgYnVmZmVyIG9uXG4gICAgICAvLyByYXRoZXIgdGhhbiBkb2luZyB0aGUgY29weSBoZXJlIFRPRE86ICpob3dldmVyKiBub3RlIHRoYXQgd2UgbmVlZCBzb21lIHdheSB0byBmaW5kIG91dCB3aGVuIHRoZSBkYXRhIGhhcyBiZWVuXG4gICAgICAvLyB3cml0dGVuIChhbmQgdGh1cyB0aGUgYnVmZmVyIGNhbiBiZSByZS11c2VkKSBpZiB3ZSB0YWtlIHRoYXQgYXBwcm9hY2hcbiAgICAgIHdoaWxlIChkYXRhLnJlbWFpbmluZygpID4gMCkge1xuICAgICAgICAvLyBFbnN1cmUgdGhlcmUgaXMgYW4gb3BlbiBjaHVuaywgYW5kIHRoYXQgaXQgaGFzIGF0IGxlYXN0IG9uZSBieXRlIG9mIHNwYWNlIGxlZnRcbiAgICAgICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpID4gZGF0YS5yZW1haW5pbmcoKSkge1xuICAgICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEucmVhZFNsaWNlKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdmbHVzaCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgICAgaWYgKHRoaXMuX2J1ZmZlci5wb3NpdGlvbiA+IDApIHtcbiAgICAgICAgdGhpcy5fY2xvc2VDaHVua0lmT3BlbigpO1xuXG4gICAgICAgIC8vIExvY2FsIGNvcHkgYW5kIGNsZWFyIHRoZSBidWZmZXIgZmllbGQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBidWZmZXIgaXMgbm90IHJlLXJlbGVhc2VkIGlmIHRoZSBmbHVzaCBjYWxsIGZhaWxzXG4gICAgICAgIHZhciBvdXQgPSB0aGlzLl9idWZmZXI7XG4gICAgICAgIHRoaXMuX2J1ZmZlciA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5fY2gud3JpdGUob3V0LmdldFNsaWNlKDAsIG91dC5wb3NpdGlvbikpO1xuXG4gICAgICAgIC8vIEFsbG9jIGEgbmV3IG91dHB1dCBidWZmZXIuIFdlIGFzc3VtZSB3ZSdyZSB1c2luZyBOb2RlSlMncyBidWZmZXIgcG9vbGluZyB1bmRlciB0aGUgaG9vZCBoZXJlIVxuICAgICAgICB0aGlzLl9idWZmZXIgPSAoMCwgX2J1Zi5hbGxvYykodGhpcy5fYnVmZmVyU2l6ZSk7XG4gICAgICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQm9sdCBtZXNzYWdlcyBhcmUgZW5jb2RlZCBpbiBvbmUgb3IgbW9yZSBjaHVua3MsIGFuZCB0aGUgYm91bmRhcnkgYmV0d2VlbiB0d28gbWVzc2FnZXNcbiAgICAgKiBpcyBlbmNvZGVkIGFzIGEgMC1sZW5ndGggY2h1bmssIGAwMCAwMGAuIFRoaXMgaW5zZXJ0cyBzdWNoIGEgbWVzc2FnZSBib3VuZGFyeSwgY2xvc2luZ1xuICAgICAqIGFueSBjdXJyZW50bHkgb3BlbiBjaHVuayBhcyBuZWVkZWRcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbWVzc2FnZUJvdW5kYXJ5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbWVzc2FnZUJvdW5kYXJ5KCkge1xuXG4gICAgICB0aGlzLl9jbG9zZUNodW5rSWZPcGVuKCk7XG5cbiAgICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPCBfQ0hVTktfSEVBREVSX1NJWkUpIHtcbiAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBXcml0ZSBtZXNzYWdlIGJvdW5kYXJ5XG4gICAgICB0aGlzLl9idWZmZXIud3JpdGVJbnQxNihfTUVTU0FHRV9CT1VOREFSWSk7XG4gICAgfVxuXG4gICAgLyoqIEVuc3VyZSBhdCBsZWFzdCB0aGUgZ2l2ZW4gc2l6ZSBpcyBhdmFpbGFibGUgZm9yIHdyaXRpbmcgKi9cblxuICB9LCB7XG4gICAga2V5OiAnX2Vuc3VyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lbnN1cmUoc2l6ZSkge1xuICAgICAgdmFyIHRvV3JpdGVTaXplID0gdGhpcy5fY2h1bmtPcGVuID8gc2l6ZSA6IHNpemUgKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpIDwgdG9Xcml0ZVNpemUpIHtcbiAgICAgICAgdGhpcy5mbHVzaCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2NodW5rT3Blbikge1xuICAgICAgICB0aGlzLl9jdXJyZW50Q2h1bmtTdGFydCA9IHRoaXMuX2J1ZmZlci5wb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fYnVmZmVyLnBvc2l0aW9uID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uICsgX0NIVU5LX0hFQURFUl9TSVpFO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jbG9zZUNodW5rSWZPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Nsb3NlQ2h1bmtJZk9wZW4oKSB7XG4gICAgICBpZiAodGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICAgIHZhciBjaHVua1NpemUgPSB0aGlzLl9idWZmZXIucG9zaXRpb24gLSAodGhpcy5fY3VycmVudENodW5rU3RhcnQgKyBfQ0hVTktfSEVBREVSX1NJWkUpO1xuICAgICAgICB0aGlzLl9idWZmZXIucHV0VUludDE2KHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0LCBjaHVua1NpemUpO1xuICAgICAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIENodW5rZXI7XG59KF9idWYuQmFzZUJ1ZmZlcik7XG5cbi8qKlxuICogQ29tYmluZXMgY2h1bmtzIHVudGlsIGEgY29tcGxldGUgbWVzc2FnZSBpcyBnYXRoZXJlZCB1cCwgYW5kIHRoZW4gZm9yd2FyZHMgdGhhdFxuICogbWVzc2FnZSB0byBhbiAnb25tZXNzYWdlJyBsaXN0ZW5lci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cblxudmFyIERlY2h1bmtlciA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRGVjaHVua2VyKCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIERlY2h1bmtlcik7XG5cbiAgICB0aGlzLl9jdXJyZW50TWVzc2FnZSA9IFtdO1xuICAgIHRoaXMuX3BhcnRpYWxDaHVua0hlYWRlciA9IDA7XG4gICAgdGhpcy5fc3RhdGUgPSB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoRGVjaHVua2VyLCBbe1xuICAgIGtleTogJ0FXQUlUSU5HX0NIVU5LJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gQVdBSVRJTkdfQ0hVTksoYnVmKSB7XG4gICAgICBpZiAoYnVmLnJlbWFpbmluZygpID49IDIpIHtcbiAgICAgICAgLy8gV2hvbGUgaGVhZGVyIGF2YWlsYWJsZSwgcmVhZCB0aGF0XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkhlYWRlcihidWYucmVhZFVJbnQxNigpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9ubHkgb25lIGJ5dGUgYXZhaWxhYmxlLCByZWFkIHRoYXQgYW5kIHdhaXQgZm9yIHRoZSBzZWNvbmQgYnl0ZVxuICAgICAgICB0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgPSBidWYucmVhZFVJbnQ4KCkgPDwgODtcbiAgICAgICAgcmV0dXJuIHRoaXMuSU5fSEVBREVSO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ0lOX0hFQURFUicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIElOX0hFQURFUihidWYpIHtcbiAgICAgIC8vIEZpcnN0IGhlYWRlciBieXRlIHJlYWQsIG5vdyB3ZSByZWFkIHRoZSBuZXh0IG9uZVxuICAgICAgcmV0dXJuIHRoaXMuX29uSGVhZGVyKCh0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgfCBidWYucmVhZFVJbnQ4KCkpICYgMHhGRkZGKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdJTl9DSFVOSycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIElOX0NIVU5LKGJ1Zikge1xuICAgICAgaWYgKHRoaXMuX2NodW5rU2l6ZSA8PSBidWYucmVtYWluaW5nKCkpIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgbGFyZ2VyIHRoYW4gY3VycmVudCBjaHVuaywgb3Igc2FtZSBzaXplOlxuICAgICAgICB0aGlzLl9jdXJyZW50TWVzc2FnZS5wdXNoKGJ1Zi5yZWFkU2xpY2UodGhpcy5fY2h1bmtTaXplKSk7XG4gICAgICAgIHJldHVybiB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgc21hbGxlciB0aGFuIHRoZSBjaHVuayB3ZSdyZSByZWFkaW5nLCBzcGxpdCB0aGUgY3VycmVudCBjaHVuayBpdHNlbGYgdXBcbiAgICAgICAgdGhpcy5fY2h1bmtTaXplIC09IGJ1Zi5yZW1haW5pbmcoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5JTl9DSFVOSztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdDTE9TRUQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBDTE9TRUQoYnVmKSB7fVxuICAgIC8vIG5vLW9wXG5cblxuICAgIC8qKiBDYWxsZWQgd2hlbiBhIGNvbXBsZXRlIGNodW5rIGhlYWRlciBoYXMgYmVlbiByZWNpZXZlZCAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdfb25IZWFkZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfb25IZWFkZXIoaGVhZGVyKSB7XG4gICAgICBpZiAoaGVhZGVyID09IDApIHtcbiAgICAgICAgLy8gTWVzc2FnZSBib3VuZGFyeVxuICAgICAgICB2YXIgbWVzc2FnZSA9IHZvaWQgMDtcbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRNZXNzYWdlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IHRoaXMuX2N1cnJlbnRNZXNzYWdlWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1lc3NhZ2UgPSBuZXcgX2J1Zi5Db21iaW5lZEJ1ZmZlcih0aGlzLl9jdXJyZW50TWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UgPSBbXTtcbiAgICAgICAgdGhpcy5vbm1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgIHJldHVybiB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY2h1bmtTaXplID0gaGVhZGVyO1xuICAgICAgICByZXR1cm4gdGhpcy5JTl9DSFVOSztcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd3cml0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHdyaXRlKGJ1Zikge1xuICAgICAgd2hpbGUgKGJ1Zi5oYXNSZW1haW5pbmcoKSkge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuX3N0YXRlKGJ1Zik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBEZWNodW5rZXI7XG59KCk7XG5cbmV4cG9ydHMuQ2h1bmtlciA9IENodW5rZXI7XG5leHBvcnRzLkRlY2h1bmtlciA9IERlY2h1bmtlcjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkVNUFRZX0NPTk5FQ1RJT05fSE9MREVSID0gdW5kZWZpbmVkO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJyk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX3Byb21pc2UgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZScpO1xuXG52YXIgX3Byb21pc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvbWlzZSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi4vZXJyb3InKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBVdGlsaXR5IHRvIGxhemlseSBpbml0aWFsaXplIGNvbm5lY3Rpb25zIGFuZCByZXR1cm4gdGhlbSBiYWNrIHRvIHRoZSBwb29sIHdoZW4gdW51c2VkLlxuICovXG52YXIgQ29ubmVjdGlvbkhvbGRlciA9IGZ1bmN0aW9uICgpIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIC0gdGhlIGFjY2VzcyBtb2RlIGZvciBuZXcgY29ubmVjdGlvbiBob2xkZXIuXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvblByb3ZpZGVyfSBjb25uZWN0aW9uUHJvdmlkZXIgLSB0aGUgY29ubmVjdGlvbiBwcm92aWRlciB0byBhY3F1aXJlIGNvbm5lY3Rpb25zIGZyb20uXG4gICAqL1xuICBmdW5jdGlvbiBDb25uZWN0aW9uSG9sZGVyKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlcikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIENvbm5lY3Rpb25Ib2xkZXIpO1xuXG4gICAgdGhpcy5fbW9kZSA9IG1vZGU7XG4gICAgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyID0gY29ubmVjdGlvblByb3ZpZGVyO1xuICAgIHRoaXMuX3JlZmVyZW5jZUNvdW50ID0gMDtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IF9wcm9taXNlMi5kZWZhdWx0LnJlc29sdmUobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIGhvbGRlciBpbml0aWFsaXplIG5ldyBjb25uZWN0aW9uIGlmIG5vbmUgZXhpc3RzIGFscmVhZHkuXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShDb25uZWN0aW9uSG9sZGVyLCBbe1xuICAgIGtleTogJ2luaXRpYWxpemVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5fcmVmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSB0aGlzLl9jb25uZWN0aW9uUHJvdmlkZXIuYWNxdWlyZUNvbm5lY3Rpb24odGhpcy5fbW9kZSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9yZWZlcmVuY2VDb3VudCsrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCBjb25uZWN0aW9uIHByb21pc2UuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxDb25uZWN0aW9uPn0gcHJvbWlzZSByZXNvbHZlZCB3aXRoIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2dldENvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb25uZWN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdGlmeSB0aGlzIGhvbGRlciB0aGF0IHNpbmdsZSBwYXJ0eSBkb2VzIG5vdCByZXF1aXJlIGN1cnJlbnQgY29ubmVjdGlvbiBhbnkgbW9yZS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlPENvbm5lY3Rpb24+fSBwcm9taXNlIHJlc29sdmVkIHdpdGggdGhlIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncmVsZWFzZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWxlYXNlQ29ubmVjdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlZmVyZW5jZUNvdW50LS07XG4gICAgICBpZiAodGhpcy5fcmVmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgICAgLy8gcmVsZWFzZSBhIGNvbm5lY3Rpb24gd2l0aG91dCBtdXRpbmcgQUNLX0ZBSUxVUkUsIHRoaXMgaXMgdGhlIGxhc3QgYWN0aW9uIG9uIHRoaXMgY29ubmVjdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5fcmVsZWFzZUNvbm5lY3Rpb24odHJ1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoaXMgaG9sZGVyIGFuZCByZWxlYXNlcyBjdXJyZW50IGNvbm5lY3Rpb24gKGlmIGFueSkgZGVzcGl0ZSBhbnkgZXhpc3RpbmcgdXNlcnMuXG4gICAgICogQHJldHVybiB7UHJvbWlzZTxDb25uZWN0aW9uPn0gcHJvbWlzZSByZXNvbHZlZCB3aGVuIGN1cnJlbnQgY29ubmVjdGlvbiBpcyByZWxlYXNlZCB0byB0aGUgcG9vbC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9yZWZlcmVuY2VDb3VudCA9IDA7XG4gICAgICAvLyByZWxlYXNlIGEgY29ubmVjdGlvbiBhbmQgbXV0ZSBBQ0tfRkFJTFVSRSwgdGhpcyBtaWdodCBiZSBjYWxsZWQgY29uY3VycmVudGx5IHdpdGggb3RoZXJcbiAgICAgIC8vIG9wZXJhdGlvbnMgYW5kIHRodXMgc2hvdWxkIGlnbm9yZSBmYWlsdXJlIGhhbmRsaW5nXG4gICAgICByZXR1cm4gdGhpcy5fcmVsZWFzZUNvbm5lY3Rpb24oZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3VycmVudCBwb29sZWQgY29ubmVjdGlvbiBpbnN0YW5jZSB0byB0aGUgY29ubmVjdGlvbiBwb29sLlxuICAgICAqIFdlIGRvbid0IHBvb2wgU2Vzc2lvbiBpbnN0YW5jZXMsIHRvIGF2b2lkIHVzZXJzIHVzaW5nIHRoZSBTZXNzaW9uIGFmdGVyIHRoZXkndmUgY2FsbGVkIGNsb3NlLlxuICAgICAqIFRoZSBgU2Vzc2lvbmAgb2JqZWN0IGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgYXJvdW5kIENvbm5lY3Rpb24gYW55d2F5LCBzbyBpdCBtYWtlcyBsaXR0bGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHByb21pc2UgcmVzb2x2ZWQgdGhlbiBjb25uZWN0aW9uIGlzIHJldHVybmVkIHRvIHRoZSBwb29sLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ19yZWxlYXNlQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWxlYXNlQ29ubmVjdGlvbihzeW5jKSB7XG4gICAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlLnRoZW4oZnVuY3Rpb24gKGNvbm5lY3Rpb24pIHtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb24pIHtcbiAgICAgICAgICBpZiAoc3luYykge1xuICAgICAgICAgICAgY29ubmVjdGlvbi5yZXNldCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25uZWN0aW9uLnJlc2V0QXN5bmMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29ubmVjdGlvbi5zeW5jKCk7XG4gICAgICAgICAgY29ubmVjdGlvbi5fcmVsZWFzZSgpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoaWdub3JlZEVycm9yKSB7fSk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIENvbm5lY3Rpb25Ib2xkZXI7XG59KCk7IC8qKlxuICAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gICAgICAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAgICAgICpcbiAgICAgICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gICAgICAqXG4gICAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgICAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICAgICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgICAqXG4gICAgICAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICAgICpcbiAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICAgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgICAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAgICAgKi9cblxuZXhwb3J0cy5kZWZhdWx0ID0gQ29ubmVjdGlvbkhvbGRlcjtcblxudmFyIEVtcHR5Q29ubmVjdGlvbkhvbGRlciA9IGZ1bmN0aW9uIChfQ29ubmVjdGlvbkhvbGRlcikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShFbXB0eUNvbm5lY3Rpb25Ib2xkZXIsIF9Db25uZWN0aW9uSG9sZGVyKTtcblxuICBmdW5jdGlvbiBFbXB0eUNvbm5lY3Rpb25Ib2xkZXIoKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgRW1wdHlDb25uZWN0aW9uSG9sZGVyKTtcbiAgICByZXR1cm4gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoRW1wdHlDb25uZWN0aW9uSG9sZGVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShFbXB0eUNvbm5lY3Rpb25Ib2xkZXIpKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKEVtcHR5Q29ubmVjdGlvbkhvbGRlciwgW3tcbiAgICBrZXk6ICdpbml0aWFsaXplQ29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRpYWxpemVDb25uZWN0aW9uKCkge1xuICAgICAgLy8gbm90aGluZyB0byBpbml0aWFsaXplXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0Q29ubmVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbm5lY3Rpb24oKSB7XG4gICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVqZWN0KCgwLCBfZXJyb3IubmV3RXJyb3IpKCdUaGlzIGNvbm5lY3Rpb24gaG9sZGVyIGRvZXMgbm90IHNlcnZlIGNvbm5lY3Rpb25zJykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbGVhc2VDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVsZWFzZUNvbm5lY3Rpb24oKSB7XG4gICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoKSB7XG4gICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZSgpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRW1wdHlDb25uZWN0aW9uSG9sZGVyO1xufShDb25uZWN0aW9uSG9sZGVyKTtcblxuLyoqXG4gKiBDb25uZWN0aW9uIGhvbGRlciB0aGF0IGRvZXMgbm90IG1hbmFnZSBhbnkgY29ubmVjdGlvbnMuXG4gKiBAdHlwZSB7Q29ubmVjdGlvbkhvbGRlcn1cbiAqL1xuXG5cbnZhciBFTVBUWV9DT05ORUNUSU9OX0hPTERFUiA9IGV4cG9ydHMuRU1QVFlfQ09OTkVDVElPTl9IT0xERVIgPSBuZXcgRW1wdHlDb25uZWN0aW9uSG9sZGVyKCk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5TaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIgPSBleHBvcnRzLkxvYWRCYWxhbmNlciA9IGV4cG9ydHMuRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyID0gdW5kZWZpbmVkO1xuXG52YXIgX3Byb21pc2UgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZScpO1xuXG52YXIgX3Byb21pc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvbWlzZSk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2YnKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRQcm90b3R5cGVPZik7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybicpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIpO1xuXG52YXIgX2luaGVyaXRzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cycpO1xuXG52YXIgX2luaGVyaXRzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2luaGVyaXRzMik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi4vZXJyb3InKTtcblxudmFyIF9kcml2ZXIgPSByZXF1aXJlKCcuLi9kcml2ZXInKTtcblxudmFyIF9zZXNzaW9uID0gcmVxdWlyZSgnLi4vc2Vzc2lvbicpO1xuXG52YXIgX3Nlc3Npb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2Vzc2lvbik7XG5cbnZhciBfcm91bmRSb2JpbkFycmF5ID0gcmVxdWlyZSgnLi9yb3VuZC1yb2Jpbi1hcnJheScpO1xuXG52YXIgX3JvdW5kUm9iaW5BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yb3VuZFJvYmluQXJyYXkpO1xuXG52YXIgX3JvdXRpbmdUYWJsZSA9IHJlcXVpcmUoJy4vcm91dGluZy10YWJsZScpO1xuXG52YXIgX3JvdXRpbmdUYWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yb3V0aW5nVGFibGUpO1xuXG52YXIgX3JlZGlzY292ZXJ5ID0gcmVxdWlyZSgnLi9yZWRpc2NvdmVyeScpO1xuXG52YXIgX3JlZGlzY292ZXJ5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlZGlzY292ZXJ5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBDb25uZWN0aW9uUHJvdmlkZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbm5lY3Rpb25Qcm92aWRlcigpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBDb25uZWN0aW9uUHJvdmlkZXIpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoQ29ubmVjdGlvblByb3ZpZGVyLCBbe1xuICAgIGtleTogJ2FjcXVpcmVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWNxdWlyZUNvbm5lY3Rpb24obW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBtZXRob2QnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfd2l0aEFkZGl0aW9uYWxPbkVycm9yQ2FsbGJhY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfd2l0aEFkZGl0aW9uYWxPbkVycm9yQ2FsbGJhY2soY29ubmVjdGlvblByb21pc2UsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgICAgLy8gaW5zdGFsbCBlcnJvciBoYW5kbGVyIGZyb20gdGhlIGRyaXZlciBvbiB0aGUgY29ubmVjdGlvbiBwcm9taXNlOyB0aGlzIGNhbGxiYWNrIGlzIGluc3RhbGxlZCBzZXBhcmF0ZWx5XG4gICAgICAvLyBzbyB0aGF0IGl0IGRvZXMgbm90IGhhbmRsZSBlcnJvcnMsIGluc3RlYWQgaXQgaXMganVzdCBhbiBhZGRpdGlvbmFsIGVycm9yIHJlcG9ydGluZyBmYWNpbGl0eS5cbiAgICAgIGNvbm5lY3Rpb25Qcm9taXNlLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBkcml2ZXJPbkVycm9yQ2FsbGJhY2soZXJyb3IpO1xuICAgICAgfSk7XG4gICAgICAvLyByZXR1cm4gdGhlIG9yaWdpbmFsIGNvbm5lY3Rpb24gcHJvbWlzZVxuICAgICAgcmV0dXJuIGNvbm5lY3Rpb25Qcm9taXNlO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQ29ubmVjdGlvblByb3ZpZGVyO1xufSgpO1xuXG52YXIgRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyID0gZXhwb3J0cy5EaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIgPSBmdW5jdGlvbiAoX0Nvbm5lY3Rpb25Qcm92aWRlcikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIsIF9Db25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gIGZ1bmN0aW9uIERpcmVjdENvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIHZhciBfdGhpcyA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKERpcmVjdENvbm5lY3Rpb25Qcm92aWRlci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyKSkuY2FsbCh0aGlzKSk7XG5cbiAgICBfdGhpcy5fYWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgX3RoaXMuX2Nvbm5lY3Rpb25Qb29sID0gY29ubmVjdGlvblBvb2w7XG4gICAgX3RoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjayA9IGRyaXZlck9uRXJyb3JDYWxsYmFjaztcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIsIFt7XG4gICAga2V5OiAnYWNxdWlyZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgICB2YXIgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb25Qb29sLmFjcXVpcmUodGhpcy5fYWRkcmVzcyk7XG4gICAgICB2YXIgY29ubmVjdGlvblByb21pc2UgPSBfcHJvbWlzZTIuZGVmYXVsdC5yZXNvbHZlKGNvbm5lY3Rpb24pO1xuICAgICAgcmV0dXJuIHRoaXMuX3dpdGhBZGRpdGlvbmFsT25FcnJvckNhbGxiYWNrKGNvbm5lY3Rpb25Qcm9taXNlLCB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2spO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyO1xufShDb25uZWN0aW9uUHJvdmlkZXIpO1xuXG52YXIgTG9hZEJhbGFuY2VyID0gZXhwb3J0cy5Mb2FkQmFsYW5jZXIgPSBmdW5jdGlvbiAoX0Nvbm5lY3Rpb25Qcm92aWRlcjIpIHtcbiAgKDAsIF9pbmhlcml0czMuZGVmYXVsdCkoTG9hZEJhbGFuY2VyLCBfQ29ubmVjdGlvblByb3ZpZGVyMik7XG5cbiAgZnVuY3Rpb24gTG9hZEJhbGFuY2VyKGFkZHJlc3MsIGNvbm5lY3Rpb25Qb29sLCBkcml2ZXJPbkVycm9yQ2FsbGJhY2spIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBMb2FkQmFsYW5jZXIpO1xuXG4gICAgdmFyIF90aGlzMiA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKExvYWRCYWxhbmNlci5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoTG9hZEJhbGFuY2VyKSkuY2FsbCh0aGlzKSk7XG5cbiAgICBfdGhpczIuX3JvdXRpbmdUYWJsZSA9IG5ldyBfcm91dGluZ1RhYmxlMi5kZWZhdWx0KG5ldyBfcm91bmRSb2JpbkFycmF5Mi5kZWZhdWx0KFthZGRyZXNzXSkpO1xuICAgIF90aGlzMi5fcmVkaXNjb3ZlcnkgPSBuZXcgX3JlZGlzY292ZXJ5Mi5kZWZhdWx0KCk7XG4gICAgX3RoaXMyLl9jb25uZWN0aW9uUG9vbCA9IGNvbm5lY3Rpb25Qb29sO1xuICAgIF90aGlzMi5fZHJpdmVyT25FcnJvckNhbGxiYWNrID0gZHJpdmVyT25FcnJvckNhbGxiYWNrO1xuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShMb2FkQmFsYW5jZXIsIFt7XG4gICAga2V5OiAnYWNxdWlyZUNvbm5lY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIGNvbm5lY3Rpb25Qcm9taXNlID0gdGhpcy5fZnJlc2hSb3V0aW5nVGFibGUoKS50aGVuKGZ1bmN0aW9uIChyb3V0aW5nVGFibGUpIHtcbiAgICAgICAgaWYgKG1vZGUgPT09IF9kcml2ZXIuUkVBRCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczMuX2FjcXVpcmVDb25uZWN0aW9uVG9TZXJ2ZXIocm91dGluZ1RhYmxlLnJlYWRlcnMsICdyZWFkJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gX2RyaXZlci5XUklURSkge1xuICAgICAgICAgIHJldHVybiBfdGhpczMuX2FjcXVpcmVDb25uZWN0aW9uVG9TZXJ2ZXIocm91dGluZ1RhYmxlLndyaXRlcnMsICd3cml0ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdJbGxlZ2FsIG1vZGUgJyArIG1vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLl93aXRoQWRkaXRpb25hbE9uRXJyb3JDYWxsYmFjayhjb25uZWN0aW9uUHJvbWlzZSwgdGhpcy5fZHJpdmVyT25FcnJvckNhbGxiYWNrKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdmb3JnZXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JnZXQoYWRkcmVzcykge1xuICAgICAgdGhpcy5fcm91dGluZ1RhYmxlLmZvcmdldChhZGRyZXNzKTtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb25Qb29sLnB1cmdlKGFkZHJlc3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZvcmdldFdyaXRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvcmdldFdyaXRlcihhZGRyZXNzKSB7XG4gICAgICB0aGlzLl9yb3V0aW5nVGFibGUuZm9yZ2V0V3JpdGVyKGFkZHJlc3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19hY3F1aXJlQ29ubmVjdGlvblRvU2VydmVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2FjcXVpcmVDb25uZWN0aW9uVG9TZXJ2ZXIoc2VydmVyc1JvdW5kUm9iaW5BcnJheSwgc2VydmVyTmFtZSkge1xuICAgICAgdmFyIGFkZHJlc3MgPSBzZXJ2ZXJzUm91bmRSb2JpbkFycmF5Lm5leHQoKTtcbiAgICAgIGlmICghYWRkcmVzcykge1xuICAgICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVqZWN0KCgwLCBfZXJyb3IubmV3RXJyb3IpKCdObyAnICsgc2VydmVyTmFtZSArICcgc2VydmVycyBhdmFpbGFibGUnLCBfZXJyb3IuU0VTU0lPTl9FWFBJUkVEKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblBvb2wuYWNxdWlyZShhZGRyZXNzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfZnJlc2hSb3V0aW5nVGFibGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZnJlc2hSb3V0aW5nVGFibGUoKSB7XG4gICAgICB2YXIgY3VycmVudFJvdXRpbmdUYWJsZSA9IHRoaXMuX3JvdXRpbmdUYWJsZTtcblxuICAgICAgaWYgKCFjdXJyZW50Um91dGluZ1RhYmxlLmlzU3RhbGUoKSkge1xuICAgICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZShjdXJyZW50Um91dGluZ1RhYmxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9yZWZyZXNoUm91dGluZ1RhYmxlKGN1cnJlbnRSb3V0aW5nVGFibGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19yZWZyZXNoUm91dGluZ1RhYmxlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3JlZnJlc2hSb3V0aW5nVGFibGUoY3VycmVudFJvdXRpbmdUYWJsZSkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHZhciBrbm93blJvdXRlcnMgPSBjdXJyZW50Um91dGluZ1RhYmxlLnJvdXRlcnMudG9BcnJheSgpO1xuXG4gICAgICB2YXIgcmVmcmVzaGVkVGFibGVQcm9taXNlID0ga25vd25Sb3V0ZXJzLnJlZHVjZShmdW5jdGlvbiAocmVmcmVzaGVkVGFibGVQcm9taXNlLCBjdXJyZW50Um91dGVyLCBjdXJyZW50SW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHJlZnJlc2hlZFRhYmxlUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChuZXdSb3V0aW5nVGFibGUpIHtcbiAgICAgICAgICBpZiAobmV3Um91dGluZ1RhYmxlKSB7XG4gICAgICAgICAgICBpZiAoIW5ld1JvdXRpbmdUYWJsZS53cml0ZXJzLmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgICAvLyB2YWxpZCByb3V0aW5nIHRhYmxlIHdhcyBmZXRjaGVkIC0ganVzdCByZXR1cm4gaXQsIHRyeSBuZXh0IHJvdXRlciBvdGhlcndpc2VcbiAgICAgICAgICAgICAgcmV0dXJuIG5ld1JvdXRpbmdUYWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuZWQgcm91dGluZyB0YWJsZSB3YXMgdW5kZWZpbmVkLCB0aGlzIG1lYW5zIGEgY29ubmVjdGlvbiBlcnJvciBoYXBwZW5lZCBhbmQgd2UgbmVlZCB0byBmb3JnZXQgdGhlXG4gICAgICAgICAgICAvLyBwcmV2aW91cyByb3V0ZXIgYW5kIHRyeSB0aGUgbmV4dCBvbmVcbiAgICAgICAgICAgIHZhciBwcmV2aW91c1JvdXRlckluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcbiAgICAgICAgICAgIF90aGlzNC5fZm9yZ2V0Um91dGVyKGN1cnJlbnRSb3V0aW5nVGFibGUsIGtub3duUm91dGVycywgcHJldmlvdXNSb3V0ZXJJbmRleCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdHJ5IG5leHQgcm91dGVyXG4gICAgICAgICAgdmFyIHNlc3Npb24gPSBfdGhpczQuX2NyZWF0ZVNlc3Npb25Gb3JSZWRpc2NvdmVyeShjdXJyZW50Um91dGVyKTtcbiAgICAgICAgICByZXR1cm4gX3RoaXM0Ll9yZWRpc2NvdmVyeS5sb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcihzZXNzaW9uLCBjdXJyZW50Um91dGVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBfcHJvbWlzZTIuZGVmYXVsdC5yZXNvbHZlKG51bGwpKTtcblxuICAgICAgcmV0dXJuIHJlZnJlc2hlZFRhYmxlUHJvbWlzZS50aGVuKGZ1bmN0aW9uIChuZXdSb3V0aW5nVGFibGUpIHtcbiAgICAgICAgaWYgKG5ld1JvdXRpbmdUYWJsZSAmJiAhbmV3Um91dGluZ1RhYmxlLndyaXRlcnMuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgX3RoaXM0Ll91cGRhdGVSb3V0aW5nVGFibGUobmV3Um91dGluZ1RhYmxlKTtcbiAgICAgICAgICByZXR1cm4gbmV3Um91dGluZ1RhYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yZ2V0IHRoZSBsYXN0IGtub3duIHJvdXRlciBiZWNhdXNlIGl0IGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgcm91dGluZyB0YWJsZVxuICAgICAgICB2YXIgbGFzdFJvdXRlckluZGV4ID0ga25vd25Sb3V0ZXJzLmxlbmd0aCAtIDE7XG4gICAgICAgIF90aGlzNC5fZm9yZ2V0Um91dGVyKGN1cnJlbnRSb3V0aW5nVGFibGUsIGtub3duUm91dGVycywgbGFzdFJvdXRlckluZGV4KTtcblxuICAgICAgICAvLyBub25lIG9mIHRoZSBleGlzdGluZyByb3V0ZXJzIHJldHVybmVkIHZhbGlkIHJvdXRpbmcgdGFibGUsIHRocm93IGV4Y2VwdGlvblxuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnQ291bGQgbm90IHBlcmZvcm0gZGlzY292ZXJ5LiBObyByb3V0aW5nIHNlcnZlcnMgYXZhaWxhYmxlLicsIF9lcnJvci5TRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jcmVhdGVTZXNzaW9uRm9yUmVkaXNjb3ZlcnknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlU2Vzc2lvbkZvclJlZGlzY292ZXJ5KHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHZhciBjb25uZWN0aW9uID0gdGhpcy5fY29ubmVjdGlvblBvb2wuYWNxdWlyZShyb3V0ZXJBZGRyZXNzKTtcbiAgICAgIHZhciBjb25uZWN0aW9uUHJvbWlzZSA9IF9wcm9taXNlMi5kZWZhdWx0LnJlc29sdmUoY29ubmVjdGlvbik7XG4gICAgICB2YXIgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3IFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uUHJvbWlzZSk7XG4gICAgICByZXR1cm4gbmV3IF9zZXNzaW9uMi5kZWZhdWx0KF9kcml2ZXIuUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfdXBkYXRlUm91dGluZ1RhYmxlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3VwZGF0ZVJvdXRpbmdUYWJsZShuZXdSb3V0aW5nVGFibGUpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICB2YXIgY3VycmVudFJvdXRpbmdUYWJsZSA9IHRoaXMuX3JvdXRpbmdUYWJsZTtcblxuICAgICAgLy8gY2xvc2Ugb2xkIGNvbm5lY3Rpb25zIHRvIHNlcnZlcnMgbm90IHByZXNlbnQgaW4gdGhlIG5ldyByb3V0aW5nIHRhYmxlXG4gICAgICB2YXIgc3RhbGVTZXJ2ZXJzID0gY3VycmVudFJvdXRpbmdUYWJsZS5zZXJ2ZXJzRGlmZihuZXdSb3V0aW5nVGFibGUpO1xuICAgICAgc3RhbGVTZXJ2ZXJzLmZvckVhY2goZnVuY3Rpb24gKHNlcnZlcikge1xuICAgICAgICByZXR1cm4gX3RoaXM1Ll9jb25uZWN0aW9uUG9vbC5wdXJnZShzZXJ2ZXIpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIG1ha2UgdGhpcyBkcml2ZXIgaW5zdGFuY2UgYXdhcmUgb2YgdGhlIG5ldyB0YWJsZVxuICAgICAgdGhpcy5fcm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19mb3JnZXRSb3V0ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZm9yZ2V0Um91dGVyKHJvdXRpbmdUYWJsZSwgcm91dGVyc0FycmF5LCByb3V0ZXJJbmRleCkge1xuICAgICAgdmFyIGFkZHJlc3MgPSByb3V0ZXJzQXJyYXlbcm91dGVySW5kZXhdO1xuICAgICAgaWYgKGFkZHJlc3MpIHtcbiAgICAgICAgcm91dGluZ1RhYmxlLmZvcmdldFJvdXRlcihhZGRyZXNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIExvYWRCYWxhbmNlcjtcbn0oQ29ubmVjdGlvblByb3ZpZGVyKTtcblxudmFyIFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlciA9IGV4cG9ydHMuU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyID0gZnVuY3Rpb24gKF9Db25uZWN0aW9uUHJvdmlkZXIzKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlciwgX0Nvbm5lY3Rpb25Qcm92aWRlcjMpO1xuXG4gIGZ1bmN0aW9uIFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uUHJvbWlzZSkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgICB2YXIgX3RoaXM2ID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIpKS5jYWxsKHRoaXMpKTtcblxuICAgIF90aGlzNi5fY29ubmVjdGlvblByb21pc2UgPSBjb25uZWN0aW9uUHJvbWlzZTtcbiAgICByZXR1cm4gX3RoaXM2O1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyLCBbe1xuICAgIGtleTogJ2FjcXVpcmVDb25uZWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWNxdWlyZUNvbm5lY3Rpb24obW9kZSkge1xuICAgICAgdmFyIGNvbm5lY3Rpb25Qcm9taXNlID0gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gICAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IG51bGw7XG4gICAgICByZXR1cm4gY29ubmVjdGlvblByb21pc2U7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXI7XG59KENvbm5lY3Rpb25Qcm92aWRlcik7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5Db25uZWN0aW9uID0gZXhwb3J0cy5wYXJzZVVybCA9IGV4cG9ydHMucGFyc2VTY2hlbWUgPSBleHBvcnRzLmNvbm5lY3QgPSB1bmRlZmluZWQ7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3N0cmluZ2lmeSA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeScpO1xuXG52YXIgX3N0cmluZ2lmeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpbmdpZnkpO1xuXG52YXIgX2NoV2Vic29ja2V0ID0gcmVxdWlyZSgnLi9jaC13ZWJzb2NrZXQnKTtcblxudmFyIF9jaFdlYnNvY2tldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jaFdlYnNvY2tldCk7XG5cbnZhciBfY2hOb2RlID0gcmVxdWlyZSgnLi9jaC1ub2RlJyk7XG5cbnZhciBfY2hOb2RlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NoTm9kZSk7XG5cbnZhciBfY2h1bmtpbmcgPSByZXF1aXJlKCcuL2NodW5raW5nJyk7XG5cbnZhciBfZmVhdHVyZXMgPSByZXF1aXJlKCcuL2ZlYXR1cmVzJyk7XG5cbnZhciBfZmVhdHVyZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZmVhdHVyZXMpO1xuXG52YXIgX3BhY2tzdHJlYW0gPSByZXF1aXJlKCcuL3BhY2tzdHJlYW0nKTtcblxudmFyIF9idWYgPSByZXF1aXJlKCcuL2J1ZicpO1xuXG52YXIgX2dyYXBoVHlwZXMgPSByZXF1aXJlKCcuLi9ncmFwaC10eXBlcycpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi8uLi9lcnJvcicpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBDaGFubmVsID0gdm9pZCAwO1xuaWYgKF9jaE5vZGUyLmRlZmF1bHQuYXZhaWxhYmxlKSB7XG4gIENoYW5uZWwgPSBfY2hOb2RlMi5kZWZhdWx0LmNoYW5uZWw7XG59IGVsc2UgaWYgKF9jaFdlYnNvY2tldDIuZGVmYXVsdC5hdmFpbGFibGUpIHtcbiAgQ2hhbm5lbCA9IF9jaFdlYnNvY2tldDIuZGVmYXVsdC5jaGFubmVsO1xufSBlbHNlIHtcbiAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJGYXRhbDogTm8gY29tcGF0aWJsZSB0cmFuc3BvcnQgYXZhaWxhYmxlLiBOZWVkIHRvIHJ1biBvbiBhIHBsYXRmb3JtIHdpdGggdGhlIFdlYlNvY2tldCBBUEkuXCIpO1xufVxuXG52YXJcbi8vIFNpZ25hdHVyZSBieXRlcyBmb3IgZWFjaCBtZXNzYWdlIHR5cGVcbklOSVQgPSAweDAxLFxuICAgIC8vIDAwMDAgMDAwMSAvLyBJTklUIDx1c2VyX2FnZW50PlxuQUNLX0ZBSUxVUkUgPSAweDBFLFxuICAgIC8vIDAwMDAgMTExMCAvLyBBQ0tfRkFJTFVSRVxuUkVTRVQgPSAweDBGLFxuICAgIC8vIDAwMDAgMTExMSAvLyBSRVNFVFxuUlVOID0gMHgxMCxcbiAgICAvLyAwMDAxIDAwMDAgLy8gUlVOIDxzdGF0ZW1lbnQ+IDxwYXJhbWV0ZXJzPlxuRElTQ0FSRF9BTEwgPSAweDJGLFxuICAgIC8vIDAwMTAgMTExMSAvLyBESVNDQVJEICpcblBVTExfQUxMID0gMHgzRixcbiAgICAvLyAwMDExIDExMTEgLy8gUFVMTCAqXG5TVUNDRVNTID0gMHg3MCxcbiAgICAvLyAwMTExIDAwMDAgLy8gU1VDQ0VTUyA8bWV0YWRhdGE+XG5SRUNPUkQgPSAweDcxLFxuICAgIC8vIDAxMTEgMDAwMSAvLyBSRUNPUkQgPHZhbHVlPlxuSUdOT1JFRCA9IDB4N0UsXG4gICAgLy8gMDExMSAxMTEwIC8vIElHTk9SRUQgPG1ldGFkYXRhPlxuRkFJTFVSRSA9IDB4N0YsXG4gICAgLy8gMDExMSAxMTExIC8vIEZBSUxVUkUgPG1ldGFkYXRhPlxuXG4vLyBTaWduYXR1cmUgYnl0ZXMgZm9yIGhpZ2hlci1sZXZlbCBncmFwaCBvYmplY3RzXG5OT0RFID0gMHg0RSxcbiAgICBSRUxBVElPTlNISVAgPSAweDUyLFxuICAgIFVOQk9VTkRfUkVMQVRJT05TSElQID0gMHg3MixcbiAgICBQQVRIID0gMHg1MCxcblxuLy9zZW50IGJlZm9yZSB2ZXJzaW9uIG5lZ290aWF0aW9uXG5NQUdJQ19QUkVBTUJMRSA9IDB4NjA2MEIwMTcsXG4gICAgREVCVUcgPSBmYWxzZTtcblxudmFyIFVSTFJFR0VYID0gbmV3IFJlZ0V4cChbXCIoW14vXSsvLyk/XCIsIC8vIHNjaGVtZVxuXCIoKFteOi8/I10qKVwiLCAvLyBob3N0bmFtZVxuXCIoPzo6KFswLTldKykpPylcIiwgLy8gcG9ydCAob3B0aW9uYWwpXG5cIi4qXCJdLmpvaW4oXCJcIikpOyAvLyBldmVyeXRoaW5nIGVsc2VcblxuZnVuY3Rpb24gcGFyc2VTY2hlbWUodXJsKSB7XG4gIHZhciBzY2hlbWUgPSB1cmwubWF0Y2goVVJMUkVHRVgpWzFdIHx8ICcnO1xuICByZXR1cm4gc2NoZW1lLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVXJsKHVybCkge1xuICByZXR1cm4gdXJsLm1hdGNoKFVSTFJFR0VYKVsyXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIb3N0KHVybCkge1xuICByZXR1cm4gdXJsLm1hdGNoKFVSTFJFR0VYKVszXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VQb3J0KHVybCkge1xuICByZXR1cm4gdXJsLm1hdGNoKFVSTFJFR0VYKVs0XTtcbn1cblxuLyoqXG4gKiBWZXJ5IHJ1ZGltZW50YXJ5IGxvZyBoYW5kbGluZywgc2hvdWxkIHByb2JhYmx5IGJlIHJlcGxhY2VkIGJ5IHNvbWV0aGluZyBwcm9wZXIgYXQgc29tZSBwb2ludC5cbiAqIEBwYXJhbSBhY3RvciB0aGUgcGFydCB0aGF0IHNlbnQgdGhlIG1lc3NhZ2UsICdTJyBmb3Igc2VydmVyIGFuZCAnQycgZm9yIGNsaWVudFxuICogQHBhcmFtIG1zZyB0aGUgYm9sdCBtZXNzYWdlXG4gKi9cbmZ1bmN0aW9uIGxvZyhhY3RvciwgbXNnKSB7XG4gIGlmIChERUJVRykge1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBtc2cgKz0gXCIgXCIgKyAoMCwgX3N0cmluZ2lmeTIuZGVmYXVsdCkoYXJndW1lbnRzW2ldKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYWN0b3IgKyBcIjpcIiArIG1zZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gTk9fT1AoKSB7fVxuXG52YXIgTk9fT1BfT0JTRVJWRVIgPSB7XG4gIG9uTmV4dDogTk9fT1AsXG4gIG9uQ29tcGxldGVkOiBOT19PUCxcbiAgb25FcnJvcjogTk9fT1Bcbn07XG5cbi8qKiBNYXBzIGZyb20gcGFja3N0cmVhbSBzdHJ1Y3R1cmVzIHRvIE5lbzRqIGRvbWFpbiBvYmplY3RzICovXG52YXIgX21hcHBlcnMgPSB7XG4gIG5vZGU6IGZ1bmN0aW9uIG5vZGUodW5wYWNrZXIsIGJ1Zikge1xuICAgIHJldHVybiBuZXcgX2dyYXBoVHlwZXMuTm9kZSh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gTGFiZWxzXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHJlbDogZnVuY3Rpb24gcmVsKHVucGFja2VyLCBidWYpIHtcbiAgICByZXR1cm4gbmV3IF9ncmFwaFR5cGVzLlJlbGF0aW9uc2hpcCh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gU3RhcnQgTm9kZSBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBFbmQgTm9kZSBJZGVudGl0eVxuICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBUeXBlXG4gICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHVuYm91bmRSZWw6IGZ1bmN0aW9uIHVuYm91bmRSZWwodW5wYWNrZXIsIGJ1Zikge1xuICAgIHJldHVybiBuZXcgX2dyYXBoVHlwZXMuVW5ib3VuZFJlbGF0aW9uc2hpcCh1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gVHlwZVxuICAgIHVucGFja2VyLnVucGFjayhidWYpIC8vIFByb3BlcnRpZXNcbiAgICApO1xuICB9LFxuICBwYXRoOiBmdW5jdGlvbiBwYXRoKHVucGFja2VyLCBidWYpIHtcbiAgICB2YXIgbm9kZXMgPSB1bnBhY2tlci51bnBhY2soYnVmKSxcbiAgICAgICAgcmVscyA9IHVucGFja2VyLnVucGFjayhidWYpLFxuICAgICAgICBzZXF1ZW5jZSA9IHVucGFja2VyLnVucGFjayhidWYpO1xuICAgIHZhciBwcmV2Tm9kZSA9IG5vZGVzWzBdLFxuICAgICAgICBzZWdtZW50cyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXF1ZW5jZS5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgdmFyIHJlbEluZGV4ID0gc2VxdWVuY2VbaV0sXG4gICAgICAgICAgbmV4dE5vZGUgPSBub2Rlc1tzZXF1ZW5jZVtpICsgMV1dLFxuICAgICAgICAgIHJlbCA9IHZvaWQgMDtcbiAgICAgIGlmIChyZWxJbmRleCA+IDApIHtcbiAgICAgICAgcmVsID0gcmVsc1tyZWxJbmRleCAtIDFdO1xuICAgICAgICBpZiAocmVsIGluc3RhbmNlb2YgX2dyYXBoVHlwZXMuVW5ib3VuZFJlbGF0aW9uc2hpcCkge1xuICAgICAgICAgIC8vIFRvIGF2b2lkIGR1cGxpY2F0aW9uLCByZWxhdGlvbnNoaXBzIGluIGEgcGF0aCBkbyBub3QgY29udGFpblxuICAgICAgICAgIC8vIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIHN0YXJ0IGFuZCBlbmQgbm9kZXMsIHRoYXQncyBpbnN0ZWFkXG4gICAgICAgICAgLy8gaW5mZXJyZWQgZnJvbSB0aGUgcGF0aCBzZXF1ZW5jZS4gVGhpcyBpcyB1cyBpbmZlcnJpbmcgKGFuZCxcbiAgICAgICAgICAvLyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyByZW1lbWJlcmluZykgdGhlIHN0YXJ0L2VuZCBvZiBhIHJlbC5cbiAgICAgICAgICByZWxzW3JlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChwcmV2Tm9kZS5pZGVudGl0eSwgbmV4dE5vZGUuaWRlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWwgPSByZWxzWy1yZWxJbmRleCAtIDFdO1xuICAgICAgICBpZiAocmVsIGluc3RhbmNlb2YgX2dyYXBoVHlwZXMuVW5ib3VuZFJlbGF0aW9uc2hpcCkge1xuICAgICAgICAgIC8vIFNlZSBhYm92ZVxuICAgICAgICAgIHJlbHNbLXJlbEluZGV4IC0gMV0gPSByZWwgPSByZWwuYmluZChuZXh0Tm9kZS5pZGVudGl0eSwgcHJldk5vZGUuaWRlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBEb25lIGh5ZHJhdGluZyBvbmUgcGF0aCBzZWdtZW50LlxuICAgICAgc2VnbWVudHMucHVzaChuZXcgX2dyYXBoVHlwZXMuUGF0aFNlZ21lbnQocHJldk5vZGUsIHJlbCwgbmV4dE5vZGUpKTtcbiAgICAgIHByZXZOb2RlID0gbmV4dE5vZGU7XG4gICAgfVxuICAgIHJldHVybiBuZXcgX2dyYXBoVHlwZXMuUGF0aChub2Rlc1swXSwgbm9kZXNbbm9kZXMubGVuZ3RoIC0gMV0sIHNlZ21lbnRzKTtcbiAgfVxufTtcblxuLyoqXG4gKiBBIGNvbm5lY3Rpb24gbWFuYWdlcyBzZW5kaW5nIGFuZCByZWNpZXZpbmcgbWVzc2FnZXMgb3ZlciBhIGNoYW5uZWwuIEFcbiAqIGNvbm5lY3RvciBpcyB2ZXJ5IGNsb3NlbHkgdGllZCB0byB0aGUgQm9sdCBwcm90b2NvbCwgaXQgaW1wbGVtZW50cyB0aGVcbiAqIHNhbWUgbWVzc2FnZSBzdHJ1Y3R1cmUgd2l0aCB2ZXJ5IGxpdHRsZSBmcmlsbHMuIFRoaXMgbWVhbnMgQ29ubmVjdG9ycyBhcmVcbiAqIG5hdHVyYWxseSB0aWVkIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wsIGFuZCB3ZSBleHBlY3RcbiAqIGFub3RoZXIgbGF5ZXIgd2lsbCBiZSBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB2ZXJzaW9ucy5cbiAqXG4gKiBUaGUgY29ubmVjdG9yIHRyaWVzIHRvIGJhdGNoIG91dGJvdW5kIG1lc3NhZ2VzIGJ5IHJlcXVpcmluZyBpdHMgdXNlcnNcbiAqIHRvIGNhbGwgJ3N5bmMnIHdoZW4gbWVzc2FnZXMgbmVlZCB0byBiZSBzZW50LCBhbmQgaXQgcm91dGVzIHJlc3BvbnNlXG4gKiBtZXNzYWdlcyBiYWNrIHRvIHRoZSBvcmlnaW5hdG9ycyBvZiB0aGUgcmVxdWVzdHMgdGhhdCBjcmVhdGVkIHRob3NlXG4gKiByZXNwb25zZSBtZXNzYWdlcy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5cbnZhciBDb25uZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGNoYW5uZWwgLSBjaGFubmVsIHdpdGggYSAnd3JpdGUnIGZ1bmN0aW9uIGFuZCBhICdvbm1lc3NhZ2UnXG4gICAqICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgcHJvcGVydHlcbiAgICogQHBhcmFtIHVybCAtIHVybCB0byBjb25uZWN0IHRvXG4gICAqL1xuICBmdW5jdGlvbiBDb25uZWN0aW9uKGNoYW5uZWwsIHVybCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIENvbm5lY3Rpb24pO1xuXG4gICAgLyoqXG4gICAgICogQW4gb3JkZXJlZCBxdWV1ZSBvZiBvYnNlcnZlcnMsIGVhY2ggZXhjaGFuZ2UgcmVzcG9uc2UgKHplcm8gb3IgbW9yZVxuICAgICAqIFJFQ09SRCBtZXNzYWdlcyBmb2xsb3dlZCBieSBhIFNVQ0NFU1MgbWVzc2FnZSkgd2UgcmVjaWV2ZSB3aWxsIGJlIHJvdXRlZFxuICAgICAqIHRvIHRoZSBuZXh0IHBlbmRpbmcgb2JzZXJ2ZXIuXG4gICAgICovXG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy5zZXJ2ZXIgPSB7IGFkZHJlc3M6IHVybCB9O1xuICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMgPSBbXTtcbiAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2RlY2h1bmtlciA9IG5ldyBfY2h1bmtpbmcuRGVjaHVua2VyKCk7XG4gICAgdGhpcy5fY2h1bmtlciA9IG5ldyBfY2h1bmtpbmcuQ2h1bmtlcihjaGFubmVsKTtcbiAgICB0aGlzLl9wYWNrZXIgPSBuZXcgX3BhY2tzdHJlYW0uUGFja2VyKHRoaXMuX2NodW5rZXIpO1xuICAgIHRoaXMuX3VucGFja2VyID0gbmV3IF9wYWNrc3RyZWFtLlVucGFja2VyKCk7XG5cbiAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgIHRoaXMuX2N1cnJlbnRGYWlsdXJlID0gbnVsbDtcblxuICAgIC8vIFNldCB0byB0cnVlIG9uIGZhdGFsIGVycm9ycywgdG8gZ2V0IHRoaXMgb3V0IG9mIHNlc3Npb24gcG9vbC5cbiAgICB0aGlzLl9pc0Jyb2tlbiA9IGZhbHNlO1xuXG4gICAgLy8gRm9yIGRlc2VyaWFsaXphdGlvbiwgZXhwbGFpbiB0byB0aGUgdW5wYWNrZXIgaG93IHRvIHVucGFjayBub2RlcywgcmVscywgcGF0aHM7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tOT0RFXSA9IF9tYXBwZXJzLm5vZGU7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tSRUxBVElPTlNISVBdID0gX21hcHBlcnMucmVsO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbVU5CT1VORF9SRUxBVElPTlNISVBdID0gX21hcHBlcnMudW5ib3VuZFJlbDtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1BBVEhdID0gX21hcHBlcnMucGF0aDtcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAvLyBUT0RPOiBVc2luZyBgb25tZXNzYWdlYCBhbmQgYG9uZXJyb3JgIGNhbWUgZnJvbSB0aGUgV2ViU29ja2V0IEFQSSxcbiAgICAvLyBpdCByZWFkcyBwb29ybHkgYW5kIGhhcyBzZXZlcmFsIGFubm95aW5nIGRyYXdiYWNrcy4gU3dhcCB0byBoYXZpbmdcbiAgICAvLyBDaGFubmVsIGV4dGVuZCBFdmVudEVtaXR0ZXIgaW5zdGVhZCwgdGhlbiB3ZSBjYW4gdXNlIGBvbignZGF0YScsLi4pYFxuICAgIHRoaXMuX2NoLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgICAgIHZhciBwcm9wb3NlZCA9IGJ1Zi5yZWFkSW50MzIoKTtcbiAgICAgIGlmIChwcm9wb3NlZCA9PSAxKSB7XG4gICAgICAgIC8vIE9rLCBwcm90b2NvbCBydW5uaW5nLiBTaW1wbHkgZm9yd2FyZCBhbGwgbWVzc2FnZXMgcGFzdFxuICAgICAgICAvLyB0aGlzIHRvIHRoZSBkZWNodW5rZXJcbiAgICAgICAgc2VsZi5fY2gub25tZXNzYWdlID0gZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgICAgIHNlbGYuX2RlY2h1bmtlci53cml0ZShidWYpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChidWYuaGFzUmVtYWluaW5nKCkpIHtcbiAgICAgICAgICBzZWxmLl9kZWNodW5rZXIud3JpdGUoYnVmLnJlYWRTbGljZShidWYucmVtYWluaW5nKCkpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wb3NlZCA9PSAxMjEzNDg2MTYwKSB7XG4gICAgICAgIC8vc2VydmVyIHJlc3BvbmRlZCAxMjEzNDg2MTYwID09IDB4NDg1NDU0NTAgPT0gXCJIVFRQXCJcbiAgICAgICAgc2VsZi5faGFuZGxlRmF0YWxFcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlNlcnZlciByZXNwb25kZWQgSFRUUC4gTWFrZSBzdXJlIHlvdSBhcmUgbm90IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBodHRwIGVuZHBvaW50IFwiICsgXCIoSFRUUCBkZWZhdWx0cyB0byBwb3J0IDc0NzQgd2hlcmVhcyBCT0xUIGRlZmF1bHRzIHRvIHBvcnQgNzY4NylcIikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZi5faGFuZGxlRmF0YWxFcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVua25vd24gQm9sdCBwcm90b2NvbCB2ZXJzaW9uOiBcIiArIHByb3Bvc2VkKSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIExpc3RlbiB0byBjb25uZWN0aW9uIGVycm9ycy4gSW1wb3J0YW50IG5vdGUgdGhvdWdoO1xuICAgIC8vIEluIHNvbWUgY2FzZXMgd2Ugd2lsbCBnZXQgYSBjaGFubmVsIHRoYXQgaXMgYWxyZWFkeSBicm9rZW4gKGZvciBpbnN0YW5jZSxcbiAgICAvLyBpZiB0aGUgdXNlciBwYXNzZXMgaW52YWxpZCBjb25maWd1cmF0aW9uIG9wdGlvbnMpLiBJbiB0aGlzIGNhc2UsIG9uZXJyb3JcbiAgICAvLyB3aWxsIGhhdmUgXCJhbHJlYWR5IHRyaWdnZXJlZFwiIGJlZm9yZSB3ZSBhZGQgb3V0IGxpc3RlbmVyIGhlcmUuIFNvIHRoZSBsaW5lXG4gICAgLy8gYmVsb3cgYWxzbyBjaGVja3MgdGhhdCB0aGUgY2hhbm5lbCBpcyBub3QgYWxyZWFkeSBmYWlsZWQuIFRoaXMgY291bGQgYmUgbmljZWx5XG4gICAgLy8gZW5jYXBzdWxhdGVkIGludG8gQ2hhbm5lbCBpZiB3ZSB1c2VkIGBvbignZXJyb3InLCAuLilgIHJhdGhlciB0aGFuIGBvbmVycm9yPS4uYFxuICAgIC8vIGFzIG91dGxpbmVkIGluIHRoZSBjb21tZW50IGFib3V0IGBvbm1lc3NhZ2VgIGZ1cnRoZXIgdXAgaW4gdGhpcyBmaWxlLlxuICAgIHRoaXMuX2NoLm9uZXJyb3IgPSB0aGlzLl9oYW5kbGVGYXRhbEVycm9yLmJpbmQodGhpcyk7XG4gICAgaWYgKHRoaXMuX2NoLl9lcnJvcikge1xuICAgICAgdGhpcy5faGFuZGxlRmF0YWxFcnJvcih0aGlzLl9jaC5fZXJyb3IpO1xuICAgIH1cblxuICAgIHRoaXMuX2RlY2h1bmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICBzZWxmLl9oYW5kbGVNZXNzYWdlKHNlbGYuX3VucGFja2VyLnVucGFjayhidWYpKTtcbiAgICB9O1xuXG4gICAgdmFyIGhhbmRzaGFrZSA9ICgwLCBfYnVmLmFsbG9jKSg1ICogNCk7XG4gICAgLy9tYWdpYyBwcmVhbWJsZVxuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKE1BR0lDX1BSRUFNQkxFKTtcbiAgICAvL3Byb3Bvc2VkIHZlcnNpb25zXG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoMSk7XG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoMCk7XG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoMCk7XG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoMCk7XG4gICAgaGFuZHNoYWtlLnJlc2V0KCk7XG4gICAgdGhpcy5fY2gud3JpdGUoaGFuZHNoYWtlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIkZhdGFsXCIgbWVhbnMgdGhlIGNvbm5lY3Rpb24gaXMgZGVhZC4gT25seSBjYWxsIHRoaXMgaWYgc29tZXRoaW5nXG4gICAqIGhhcHBlbnMgdGhhdCBjYW5ub3QgYmUgcmVjb3ZlcmVkIGZyb20uIFRoaXMgd2lsbCBsZWFkIHRvIGFsbCBzdWJzY3JpYmVyc1xuICAgKiBmYWlsaW5nLCBhbmQgdGhlIGNvbm5lY3Rpb24gZ2V0dGluZyBlamVjdGVkIGZyb20gdGhlIHNlc3Npb24gcG9vbC5cbiAgICpcbiAgICogQHBhcmFtIGVyciBhbiBlcnJvciBvYmplY3QsIGZvcndhcmRlZCB0byBhbGwgY3VycmVudCBhbmQgZnV0dXJlIHN1YnNjcmliZXJzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoQ29ubmVjdGlvbiwgW3tcbiAgICBrZXk6ICdfaGFuZGxlRmF0YWxFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVGYXRhbEVycm9yKGVycikge1xuICAgICAgdGhpcy5faXNCcm9rZW4gPSB0cnVlO1xuICAgICAgdGhpcy5fZXJyb3IgPSBlcnI7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE9ic2VydmVyICYmIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICB9XG4gICAgICB3aGlsZSAodGhpcy5fcGVuZGluZ09ic2VydmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICBvYnNlcnZlci5vbkVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfaGFuZGxlTWVzc2FnZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9oYW5kbGVNZXNzYWdlKG1zZykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHBheWxvYWQgPSBtc2cuZmllbGRzWzBdO1xuXG4gICAgICBzd2l0Y2ggKG1zZy5zaWduYXR1cmUpIHtcbiAgICAgICAgY2FzZSBSRUNPUkQ6XG4gICAgICAgICAgbG9nKFwiU1wiLCBcIlJFQ09SRFwiLCBtc2cpO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbk5leHQocGF5bG9hZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgU1VDQ0VTUzpcbiAgICAgICAgICBsb2coXCJTXCIsIFwiU1VDQ0VTU1wiLCBtc2cpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25Db21wbGV0ZWQocGF5bG9hZCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMuc2hpZnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRkFJTFVSRTpcbiAgICAgICAgICBsb2coXCJTXCIsIFwiRkFJTFVSRVwiLCBtc2cpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50RmFpbHVyZSA9ICgwLCBfZXJyb3IubmV3RXJyb3IpKHBheWxvYWQubWVzc2FnZSwgcGF5bG9hZC5jb2RlKTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKHRoaXMuX2N1cnJlbnRGYWlsdXJlKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgICAgLy8gVGhpbmdzIGFyZSBub3cgYnJva2VuLiBQZW5kaW5nIG9ic2VydmVycyB3aWxsIGdldCBGQUlMVVJFIG1lc3NhZ2VzIHJvdXRlZCB1bnRpbFxuICAgICAgICAgICAgLy8gV2UgYXJlIGRvbmUgaGFuZGxpbmcgdGhpcyBmYWlsdXJlLlxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSkge1xuICAgICAgICAgICAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgLy8gaXNIYW5kbGluZ0ZhaWx1cmUgd2FzIGZhbHNlLCBtZWFuaW5nIHRoaXMgaXMgdGhlIGZpcnN0IGZhaWx1cmUgbWVzc2FnZVxuICAgICAgICAgICAgICAvLyB3ZSBzZWUgZnJvbSB0aGlzIGZhaWx1cmUuIFdlIG1heSBzZWUgc2V2ZXJhbCBvdGhlcnMsIG9uZSBmb3IgZWFjaCBtZXNzYWdlXG4gICAgICAgICAgICAgIC8vIHdlIGhhZCBcIm9wdGltaXN0aWNhbGx5XCIgYWxyZWFkeSBzZW50IGFmdGVyIHdoYXRldmVyIGl0IHdhcyB0aGF0IGZhaWxlZC5cbiAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGFuZCBuZWVkIHRvIEFDSyB0aGUgZmlyc3Qgb25lLCB3aGljaCBpcyB3aHkgd2UgYXJlIHRyYWNraW5nXG4gICAgICAgICAgICAgIC8vIHRoaXMgX2lzSGFuZGxpbmdGYWlsdXJlIHRoaW5nLlxuICAgICAgICAgICAgICB0aGlzLl9hY2tGYWlsdXJlKHtcbiAgICAgICAgICAgICAgICBvbk5leHQ6IE5PX09QLFxuICAgICAgICAgICAgICAgIG9uRXJyb3I6IE5PX09QLFxuICAgICAgICAgICAgICAgIG9uQ29tcGxldGVkOiBmdW5jdGlvbiBvbkNvbXBsZXRlZCgpIHtcbiAgICAgICAgICAgICAgICAgIF90aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgX3RoaXMuX2N1cnJlbnRGYWlsdXJlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBJR05PUkVEOlxuICAgICAgICAgIGxvZyhcIlNcIiwgXCJJR05PUkVEXCIsIG1zZyk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50RmFpbHVyZSAmJiB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcikgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IodGhpcy5fY3VycmVudEZhaWx1cmUpO2Vsc2UgaWYgKHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKSB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcihwYXlsb2FkKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiVW5rbm93biBCb2x0IHByb3RvY29sIG1lc3NhZ2U6IFwiICsgbXNnKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGFuIElOSVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdpbml0aWFsaXplJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZShjbGllbnROYW1lLCB0b2tlbiwgb2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBsb2coXCJDXCIsIFwiSU5JVFwiLCBjbGllbnROYW1lLCB0b2tlbik7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KElOSVQsIFt0aGlzLl9wYWNrYWJsZShjbGllbnROYW1lKSwgdGhpcy5fcGFja2FibGUodG9rZW4pXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXMyLl9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgICB0aGlzLnN5bmMoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBSVU4tbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdydW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oc3RhdGVtZW50LCBwYXJhbXMsIG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgbG9nKFwiQ1wiLCBcIlJVTlwiLCBzdGF0ZW1lbnQsIHBhcmFtcyk7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFJVTiwgW3RoaXMuX3BhY2thYmxlKHN0YXRlbWVudCksIHRoaXMuX3BhY2thYmxlKHBhcmFtcyldLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG5cbiAgICAvKiogUXVldWUgYSBQVUxMX0FMTC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG5cbiAgfSwge1xuICAgIGtleTogJ3B1bGxBbGwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdWxsQWxsKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgbG9nKFwiQ1wiLCBcIlBVTExfQUxMXCIpO1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChQVUxMX0FMTCwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNC5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIERJU0NBUkRfQUxMLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cblxuICB9LCB7XG4gICAga2V5OiAnZGlzY2FyZEFsbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpc2NhcmRBbGwob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICBsb2coXCJDXCIsIFwiRElTQ0FSRF9BTExcIik7XG4gICAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KERJU0NBUkRfQUxMLCBbXSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICByZXR1cm4gX3RoaXM1Ll9oYW5kbGVGYXRhbEVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqIFF1ZXVlIGEgUkVTRVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZS4gTXV0ZXMgZmFpbHVyZSBoYW5kbGluZy4gKi9cblxuICB9LCB7XG4gICAga2V5OiAncmVzZXRBc3luYycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0QXN5bmMob2JzZXJ2ZXIpIHtcbiAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICBsb2coXCJDXCIsIFwiUkVTRVRfQVNZTkNcIik7XG4gICAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IHRydWU7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICB2YXIgd3JhcHBlZE9icyA9IHtcbiAgICAgICAgb25OZXh0OiBvYnNlcnZlciA/IG9ic2VydmVyLm9uTmV4dCA6IE5PX09QLFxuICAgICAgICBvbkVycm9yOiBvYnNlcnZlciA/IG9ic2VydmVyLm9uRXJyb3IgOiBOT19PUCxcbiAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKCkge1xuICAgICAgICAgIHNlbGYuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIod3JhcHBlZE9icyk7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSRVNFVCwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNi5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIFJFU0VULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cblxuICB9LCB7XG4gICAga2V5OiAncmVzZXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldChvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIGxvZygnQycsICdSRVNFVCcpO1xuICAgICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdChSRVNFVCwgW10sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzNy5faGFuZGxlRmF0YWxFcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIH1cblxuICAgIC8qKiBRdWV1ZSBhIEFDS19GQUlMVVJFLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cblxuICB9LCB7XG4gICAga2V5OiAnX2Fja0ZhaWx1cmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYWNrRmFpbHVyZShvYnNlcnZlcikge1xuICAgICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICAgIGxvZyhcIkNcIiwgXCJBQ0tfRkFJTFVSRVwiKTtcbiAgICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoQUNLX0ZBSUxVUkUsIFtdLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczguX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfcXVldWVPYnNlcnZlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKSB7XG4gICAgICBpZiAodGhpcy5faXNCcm9rZW4pIHtcbiAgICAgICAgaWYgKG9ic2VydmVyICYmIG9ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICBvYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBvYnNlcnZlciA9IG9ic2VydmVyIHx8IE5PX09QX09CU0VSVkVSO1xuICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQgPSBvYnNlcnZlci5vbkNvbXBsZXRlZCB8fCBOT19PUDtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IgPSBvYnNlcnZlci5vbkVycm9yIHx8IE5PX09QO1xuICAgICAgb2JzZXJ2ZXIub25OZXh0ID0gb2JzZXJ2ZXIub25OZXh0IHx8IE5PX09QO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ09ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTeW5jaHJvbml6ZSAtIGZsdXNoIGFsbCBxdWV1ZWQgb3V0Z29pbmcgbWVzc2FnZXMgYW5kIHJvdXRlIHRoZWlyIHJlc3BvbnNlc1xuICAgICAqIHRvIHRoZWlyIHJlc3BlY3RpdmUgaGFuZGxlcnMuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3N5bmMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzeW5jKCkge1xuICAgICAgdGhpcy5fY2h1bmtlci5mbHVzaCgpO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0aGlzIGNvbm5lY3Rpb24gaXMgaW4gd29ya2luZyBjb25kaXRpb24gKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcGVuKCkge1xuICAgICAgcmV0dXJuICF0aGlzLl9pc0Jyb2tlbiAmJiB0aGlzLl9jaC5fb3BlbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc0VuY3J5cHRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NoLmlzRW5jcnlwdGVkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbCBjbG9zZSBvbiB0aGUgY2hhbm5lbC5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYiAtIEZ1bmN0aW9uIHRvIGNhbGwgb24gY2xvc2UuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2Nsb3NlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2UoY2IpIHtcbiAgICAgIHRoaXMuX2NoLmNsb3NlKGNiKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfcGFja2FibGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcGFja2FibGUodmFsdWUpIHtcbiAgICAgIHZhciBfdGhpczkgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdGhpcy5fcGFja2VyLnBhY2thYmxlKHZhbHVlLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBfdGhpczkuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldFNlcnZlclZlcnNpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTZXJ2ZXJWZXJzaW9uKHZlcnNpb24pIHtcbiAgICAgIHRoaXMuc2VydmVyLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQ29ubmVjdGlvbjtcbn0oKTtcblxuLyoqXG4gKiBDcmV0ZSBuZXcgY29ubmVjdGlvbiB0byB0aGUgcHJvdmlkZWQgdXJsLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gJ25lbzRqJy1wcmVmaXhlZCBVUkwgdG8gTmVvNGogQm9sdCBlbmRwb2ludFxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZ1xuICogQHJldHVybiB7Q29ubmVjdGlvbn0gLSBOZXcgY29ubmVjdGlvblxuICovXG5cblxuZnVuY3Rpb24gY29ubmVjdCh1cmwpIHtcbiAgdmFyIGNvbmZpZyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgdmFyIENoID0gY29uZmlnLmNoYW5uZWwgfHwgQ2hhbm5lbDtcbiAgdmFyIGhvc3QgPSBwYXJzZUhvc3QodXJsKTtcbiAgdmFyIHBvcnQgPSBwYXJzZVBvcnQodXJsKSB8fCA3Njg3O1xuICB2YXIgY29tcGxldGVVcmwgPSBob3N0ICsgJzonICsgcG9ydDtcblxuICByZXR1cm4gbmV3IENvbm5lY3Rpb24obmV3IENoKHtcbiAgICBob3N0OiBwYXJzZUhvc3QodXJsKSxcbiAgICBwb3J0OiBwYXJzZVBvcnQodXJsKSB8fCA3Njg3LFxuICAgIC8vIERlZmF1bHQgdG8gdXNpbmcgZW5jcnlwdGlvbiBpZiB0cnVzdC1vbi1maXJzdC11c2UgaXMgYXZhaWxhYmxlXG4gICAgZW5jcnlwdGVkOiBjb25maWcuZW5jcnlwdGVkID09IG51bGwgPyAoMCwgX2ZlYXR1cmVzMi5kZWZhdWx0KShcInRydXN0X2FsbF9jZXJ0aWZpY2F0ZXNcIikgOiBjb25maWcuZW5jcnlwdGVkLFxuICAgIC8vIERlZmF1bHQgdG8gdXNpbmcgVFJVU1RfQUxMX0NFUlRJRklDQVRFUyBpZiBpdCBpcyBhdmFpbGFibGVcbiAgICB0cnVzdDogY29uZmlnLnRydXN0IHx8ICgoMCwgX2ZlYXR1cmVzMi5kZWZhdWx0KShcInRydXN0X2FsbF9jZXJ0aWZpY2F0ZXNcIikgPyBcIlRSVVNUX0FMTF9DRVJUSUZJQ0FURVNcIiA6IFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIiksXG4gICAgdHJ1c3RlZENlcnRpZmljYXRlczogY29uZmlnLnRydXN0ZWRDZXJ0aWZpY2F0ZXMgfHwgW10sXG4gICAga25vd25Ib3N0czogY29uZmlnLmtub3duSG9zdHNcbiAgfSksIGNvbXBsZXRlVXJsKTtcbn1cblxuZXhwb3J0cy5jb25uZWN0ID0gY29ubmVjdDtcbmV4cG9ydHMucGFyc2VTY2hlbWUgPSBwYXJzZVNjaGVtZTtcbmV4cG9ydHMucGFyc2VVcmwgPSBwYXJzZVVybDtcbmV4cG9ydHMuQ29ubmVjdGlvbiA9IENvbm5lY3Rpb247IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIENlbnRyYWwgcGxhY2UgdG8gZGV0ZWN0IGZlYXR1cmUgc3VwcG9ydCBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0sXG4vLyBleHBhbmQgYXMgbmVlZGVkLlxuXG52YXIgRkVBVFVSRVMgPSB7XG4gIHRydXN0X29uX2ZpcnN0X3VzZTogZnVuY3Rpb24gdHJ1c3Rfb25fZmlyc3RfdXNlKCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGlzIGlzIGluc2FuZS4gV2UgYXJlIHZlcmlmeWluZyB0aGF0IHdlIGhhdmUgYSB2ZXJzaW9uIG9mIGdldFBlZXJDZXJ0aWZpY2F0ZVxuICAgICAgLy8gdGhhdCBzdXBwb3J0cyByZWFkaW5nIHRoZSB3aG9sZSBjZXJ0aWZpY2F0ZSwgZWcgdGhpcyBjb21taXQ6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzM0NWM0MGI2XG4gICAgICB2YXIgZ2V0UGVlckNlcnRpZmljYXRlRnVuY3Rpb24gPSByZXF1aXJlKCd0bHMnKS5UTFNTb2NrZXQucHJvdG90eXBlLmdldFBlZXJDZXJ0aWZpY2F0ZTtcbiAgICAgIHZhciBudW1iZXJPZlBhcmFtZXRlcnMgPSBnZXRQZWVyQ2VydGlmaWNhdGVGdW5jdGlvbi5sZW5ndGg7XG4gICAgICByZXR1cm4gbnVtYmVyT2ZQYXJhbWV0ZXJzID49IDE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgdHJ1c3RfYWxsX2NlcnRpZmljYXRlczogZnVuY3Rpb24gdHJ1c3RfYWxsX2NlcnRpZmljYXRlcygpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIGdldFBlZXJDZXJ0aWZpY2F0ZUZ1bmN0aW9uID0gcmVxdWlyZSgndGxzJykuVExTU29ja2V0LnByb3RvdHlwZS5nZXRQZWVyQ2VydGlmaWNhdGU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBoYXNGZWF0dXJlKG5hbWUpIHtcbiAgcmV0dXJuIEZFQVRVUkVTW25hbWVdICYmIEZFQVRVUkVTW25hbWVdKCk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGhhc0ZlYXR1cmU7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX3N0cmluZ2lmeSA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeScpO1xuXG52YXIgX3N0cmluZ2lmeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJpbmdpZnkpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9yb3VuZFJvYmluQXJyYXkgPSByZXF1aXJlKCcuL3JvdW5kLXJvYmluLWFycmF5Jyk7XG5cbnZhciBfcm91bmRSb2JpbkFycmF5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JvdW5kUm9iaW5BcnJheSk7XG5cbnZhciBfZXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcicpO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlZ2VyJyk7XG5cbnZhciBfaW50ZWdlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbnRlZ2VyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFBST0NFRFVSRV9DQUxMID0gJ0NBTEwgZGJtcy5jbHVzdGVyLnJvdXRpbmcuZ2V0U2VydmVycyc7IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG5cbnZhciBQUk9DRURVUkVfTk9UX0ZPVU5EX0NPREUgPSAnTmVvLkNsaWVudEVycm9yLlByb2NlZHVyZS5Qcm9jZWR1cmVOb3RGb3VuZCc7XG5cbnZhciBHZXRTZXJ2ZXJzVXRpbCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gR2V0U2VydmVyc1V0aWwoKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgR2V0U2VydmVyc1V0aWwpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoR2V0U2VydmVyc1V0aWwsIFt7XG4gICAga2V5OiAnY2FsbEdldFNlcnZlcnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxsR2V0U2VydmVycyhzZXNzaW9uLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gc2Vzc2lvbi5ydW4oUFJPQ0VEVVJFX0NBTEwpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQucmVjb3JkcztcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gUFJPQ0VEVVJFX05PVF9GT1VORF9DT0RFKSB7XG4gICAgICAgICAgLy8gdGhyb3cgd2hlbiBnZXRTZXJ2ZXJzIHByb2NlZHVyZSBub3QgZm91bmQgYmVjYXVzZSB0aGlzIGlzIGNsZWFybHkgYSBjb25maWd1cmF0aW9uIGlzc3VlXG4gICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ1NlcnZlciAnICsgcm91dGVyQWRkcmVzcyArICcgY291bGQgbm90IHBlcmZvcm0gcm91dGluZy4gJyArICdNYWtlIHN1cmUgeW91IGFyZSBjb25uZWN0aW5nIHRvIGEgY2F1c2FsIGNsdXN0ZXInLCBfZXJyb3IuU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmV0dXJuIG5vdGhpbmcgd2hlbiBmYWlsZWQgdG8gY29ubmVjdCBiZWNhdXNlIGNvZGUgaGlnaGVyIGluIHRoZSBjYWxsc3RhY2sgaXMgc3RpbGwgYWJsZSB0byByZXRyeSB3aXRoIGFcbiAgICAgICAgLy8gZGlmZmVyZW50IHNlc3Npb24gdG93YXJkcyBhIGRpZmZlcmVudCByb3V0ZXJcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwYXJzZVR0bCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlVHRsKHJlY29yZCwgcm91dGVyQWRkcmVzcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIG5vdyA9ICgwLCBfaW50ZWdlci5pbnQpKERhdGUubm93KCkpO1xuICAgICAgICB2YXIgZXhwaXJlcyA9IHJlY29yZC5nZXQoJ3R0bCcpLm11bHRpcGx5KDEwMDApLmFkZChub3cpO1xuICAgICAgICAvLyBpZiB0aGUgc2VydmVyIHVzZXMgYSByZWFsbHkgYmlnIGV4cGlyZSB0aW1lIGxpa2UgTG9uZy5NQVhfVkFMVUUgdGhpcyBtYXkgaGF2ZSBvdmVyZmxvd2VkXG4gICAgICAgIGlmIChleHBpcmVzLmxlc3NUaGFuKG5vdykpIHtcbiAgICAgICAgICByZXR1cm4gX2ludGVnZXIyLmRlZmF1bHQuTUFYX1ZBTFVFO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBleHBpcmVzO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ1VuYWJsZSB0byBwYXJzZSBUVEwgZW50cnkgZnJvbSByb3V0ZXIgJyArIHJvdXRlckFkZHJlc3MgKyAnIGZyb20gcmVjb3JkOlxcbicgKyAoMCwgX3N0cmluZ2lmeTIuZGVmYXVsdCkocmVjb3JkKSwgX2Vycm9yLlBST1RPQ09MX0VSUk9SKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwYXJzZVNlcnZlcnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZVNlcnZlcnMocmVjb3JkLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgc2VydmVycyA9IHJlY29yZC5nZXQoJ3NlcnZlcnMnKTtcblxuICAgICAgICB2YXIgcm91dGVycyA9IG5ldyBfcm91bmRSb2JpbkFycmF5Mi5kZWZhdWx0KCk7XG4gICAgICAgIHZhciByZWFkZXJzID0gbmV3IF9yb3VuZFJvYmluQXJyYXkyLmRlZmF1bHQoKTtcbiAgICAgICAgdmFyIHdyaXRlcnMgPSBuZXcgX3JvdW5kUm9iaW5BcnJheTIuZGVmYXVsdCgpO1xuXG4gICAgICAgIHNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAoc2VydmVyKSB7XG4gICAgICAgICAgdmFyIHJvbGUgPSBzZXJ2ZXJbJ3JvbGUnXTtcbiAgICAgICAgICB2YXIgYWRkcmVzc2VzID0gc2VydmVyWydhZGRyZXNzZXMnXTtcblxuICAgICAgICAgIGlmIChyb2xlID09PSAnUk9VVEUnKSB7XG4gICAgICAgICAgICByb3V0ZXJzLnB1c2hBbGwoYWRkcmVzc2VzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJvbGUgPT09ICdXUklURScpIHtcbiAgICAgICAgICAgIHdyaXRlcnMucHVzaEFsbChhZGRyZXNzZXMpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocm9sZSA9PT0gJ1JFQUQnKSB7XG4gICAgICAgICAgICByZWFkZXJzLnB1c2hBbGwoYWRkcmVzc2VzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ1Vua25vd24gc2VydmVyIHJvbGUgXCInICsgcm9sZSArICdcIicsIF9lcnJvci5QUk9UT0NPTF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlcnM6IHJvdXRlcnMsXG4gICAgICAgICAgcmVhZGVyczogcmVhZGVycyxcbiAgICAgICAgICB3cml0ZXJzOiB3cml0ZXJzXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChpZ25vcmUpIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ1VuYWJsZSB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IGZyb20gcm91dGVyICcgKyByb3V0ZXJBZGRyZXNzICsgJyBmcm9tIHJlY29yZDpcXG4nICsgKDAsIF9zdHJpbmdpZnkyLmRlZmF1bHQpKHJlY29yZCksIF9lcnJvci5QUk9UT0NPTF9FUlJPUik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBHZXRTZXJ2ZXJzVXRpbDtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gR2V0U2VydmVyc1V0aWw7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLlN0cnVjdHVyZSA9IGV4cG9ydHMuVW5wYWNrZXIgPSBleHBvcnRzLlBhY2tlciA9IHVuZGVmaW5lZDtcblxudmFyIF9rZXlzID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5c1wiKTtcblxudmFyIF9rZXlzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2tleXMpO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZlwiKTtcblxudmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF91dGYgPSByZXF1aXJlKFwiLi91dGY4XCIpO1xuXG52YXIgX3V0ZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91dGYpO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKFwiLi4vaW50ZWdlclwiKTtcblxudmFyIF9pbnRlZ2VyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ludGVnZXIpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZShcIi4vLi4vZXJyb3JcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBUSU5ZX1NUUklORyA9IDB4ODA7IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuXG52YXIgVElOWV9MSVNUID0gMHg5MDtcbnZhciBUSU5ZX01BUCA9IDB4QTA7XG52YXIgVElOWV9TVFJVQ1QgPSAweEIwO1xudmFyIE5VTEwgPSAweEMwO1xudmFyIEZMT0FUXzY0ID0gMHhDMTtcbnZhciBGQUxTRSA9IDB4QzI7XG52YXIgVFJVRSA9IDB4QzM7XG52YXIgSU5UXzggPSAweEM4O1xudmFyIElOVF8xNiA9IDB4Qzk7XG52YXIgSU5UXzMyID0gMHhDQTtcbnZhciBJTlRfNjQgPSAweENCO1xudmFyIFNUUklOR184ID0gMHhEMDtcbnZhciBTVFJJTkdfMTYgPSAweEQxO1xudmFyIFNUUklOR18zMiA9IDB4RDI7XG52YXIgTElTVF84ID0gMHhENDtcbnZhciBMSVNUXzE2ID0gMHhENTtcbnZhciBMSVNUXzMyID0gMHhENjtcbnZhciBNQVBfOCA9IDB4RDg7XG52YXIgTUFQXzE2ID0gMHhEOTtcbnZhciBNQVBfMzIgPSAweERBO1xudmFyIFNUUlVDVF84ID0gMHhEQztcbnZhciBTVFJVQ1RfMTYgPSAweEREO1xuXG4vKipcbiAgKiBBIFN0cnVjdHVyZSBoYXZlIGEgc2lnbmF0dXJlIGFuZCBmaWVsZHMuXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5cbnZhciBTdHJ1Y3R1cmUgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqL1xuICBmdW5jdGlvbiBTdHJ1Y3R1cmUoc2lnbmF0dXJlLCBmaWVsZHMpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBTdHJ1Y3R1cmUpO1xuXG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShTdHJ1Y3R1cmUsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgdmFyIGZpZWxkU3RyID0gXCJcIjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgZmllbGRTdHIgKz0gXCIsIFwiO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkU3RyICs9IHRoaXMuZmllbGRzW2ldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiU3RydWN0dXJlKFwiICsgdGhpcy5zaWduYXR1cmUgKyBcIiwgW1wiICsgdGhpcy5maWVsZHMgKyBcIl0pXCI7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTdHJ1Y3R1cmU7XG59KCk7XG5cbi8qKlxuICAqIENsYXNzIHRvIHBhY2tcbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cblxuXG52YXIgUGFja2VyID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBQYWNrZXIoY2hhbm5lbCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFBhY2tlcik7XG5cbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBhY2thYmxlIGZ1bmN0aW9uIG91dCBvZiB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgICogQHBhcmFtIHggdGhlIHZhbHVlIHRvIHBhY2tcbiAgICogQHBhcmFtIG9uRXJyb3IgY2FsbGJhY2sgZm9yIHRoZSBjYXNlIHdoZW4gdmFsdWUgY2Fubm90IGJlIHBhY2tlZFxuICAgKiBAcmV0dXJucyBGdW5jdGlvblxuICAgKi9cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFBhY2tlciwgW3tcbiAgICBrZXk6IFwicGFja2FibGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja2FibGUoeCwgb25FcnJvcikge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKHggPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX2NoLndyaXRlVUludDgoTlVMTCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHggPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuX2NoLndyaXRlVUludDgoVFJVRSk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHggPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLl9jaC53cml0ZVVJbnQ4KEZBTFNFKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrRmxvYXQoeCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB4ID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMucGFja1N0cmluZyh4LCBvbkVycm9yKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoKDAsIF9pbnRlZ2VyLmlzSW50KSh4KSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wYWNrSW50ZWdlcih4KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMucGFja0xpc3RIZWFkZXIoeC5sZW5ndGgsIG9uRXJyb3IpO1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB4Lmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgX3RoaXMucGFja2FibGUoeFtfaV0gPT09IHVuZGVmaW5lZCA/IG51bGwgOiB4W19pXSwgb25FcnJvcikoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHggaW5zdGFuY2VvZiBTdHJ1Y3R1cmUpIHtcbiAgICAgICAgdmFyIHBhY2thYmxlRmllbGRzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwYWNrYWJsZUZpZWxkc1tpXSA9IHRoaXMucGFja2FibGUoeC5maWVsZHNbaV0sIG9uRXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLnBhY2tTdHJ1Y3QoeC5zaWduYXR1cmUsIHBhY2thYmxlRmllbGRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoKHR5cGVvZiB4ID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KSh4KSkgPT0gXCJvYmplY3RcIikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBrZXlzID0gKDAsIF9rZXlzMi5kZWZhdWx0KSh4KTtcblxuICAgICAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwga2V5cy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICAgICAgICBpZiAoeFtrZXlzW19pMl1dICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgX3RoaXMucGFja01hcEhlYWRlcihjb3VudCwgb25FcnJvcik7XG4gICAgICAgICAgZm9yICh2YXIgX2kzID0gMDsgX2kzIDwga2V5cy5sZW5ndGg7IF9pMysrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tfaTNdO1xuICAgICAgICAgICAgaWYgKHhba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIF90aGlzLnBhY2tTdHJpbmcoa2V5KTtcbiAgICAgICAgICAgICAgX3RoaXMucGFja2FibGUoeFtrZXldLCBvbkVycm9yKSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgb25FcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkNhbm5vdCBwYWNrIHRoaXMgdmFsdWU6IFwiICsgeCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWNrcyBhIHN0cnVjdFxuICAgICAqIEBwYXJhbSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSBvZiB0aGUgc3RydWN0XG4gICAgICogQHBhcmFtIHBhY2thYmxlRmllbGRzIHRoZSBmaWVsZHMgb2YgdGhlIHN0cnVjdCwgbWFrZSBzdXJlIHlvdSBjYWxsIGBwYWNrYWJsZSBvbiBhbGwgZmllbGRzYFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicGFja1N0cnVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrU3RydWN0KHNpZ25hdHVyZSwgcGFja2FibGVGaWVsZHMsIG9uRXJyb3IpIHtcbiAgICAgIHBhY2thYmxlRmllbGRzID0gcGFja2FibGVGaWVsZHMgfHwgW107XG4gICAgICB0aGlzLnBhY2tTdHJ1Y3RIZWFkZXIocGFja2FibGVGaWVsZHMubGVuZ3RoLCBzaWduYXR1cmUsIG9uRXJyb3IpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWNrYWJsZUZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYWNrYWJsZUZpZWxkc1tpXSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrSW50ZWdlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrSW50ZWdlcih4KSB7XG4gICAgICB2YXIgaGlnaCA9IHguaGlnaCxcbiAgICAgICAgICBsb3cgPSB4LmxvdztcblxuICAgICAgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDEwKSAmJiB4Lmxlc3NUaGFuKDB4ODApKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50OChsb3cpO1xuICAgICAgfSBlbHNlIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHg4MCkgJiYgeC5sZXNzVGhhbigtMHgxMCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlSW50OChsb3cpO1xuICAgICAgfSBlbHNlIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHg4MDAwKSAmJiB4Lmxlc3NUaGFuKDB4ODAwMCkpIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDE2KGxvdyk7XG4gICAgICB9IGVsc2UgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDgwMDAwMDAwKSAmJiB4Lmxlc3NUaGFuKDB4ODAwMDAwMDApKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzMyKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihsb3cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChJTlRfNjQpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDMyKGhpZ2gpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUludDMyKGxvdyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tGbG9hdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrRmxvYXQoeCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChGTE9BVF82NCk7XG4gICAgICB0aGlzLl9jaC53cml0ZUZsb2F0NjQoeCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tTdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFja1N0cmluZyh4LCBvbkVycm9yKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBfdXRmMi5kZWZhdWx0LmVuY29kZSh4KTtcbiAgICAgIHZhciBzaXplID0gYnl0ZXMubGVuZ3RoO1xuICAgICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9TVFJJTkcgfCBzaXplKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR184KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzE2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplIC8gMjU2ID4+IDApO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDAwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzMyKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDE2Nzc3MjE2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDY1NTM2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25FcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVURi04IHN0cmluZ3Mgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhY2tMaXN0SGVhZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tMaXN0SGVhZGVyKHNpemUsIG9uRXJyb3IpIHtcbiAgICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfTElTVCB8IHNpemUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplIC8gMjU2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDAwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF8zMik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAxNjc3NzIxNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyA2NTUzNiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUgLyAyNTYgPj4gMCkgJSAyNTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgJSAyNTYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25FcnJvcigoMCwgX2Vycm9yLm5ld0Vycm9yKShcIkxpc3RzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYWNrTWFwSGVhZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhY2tNYXBIZWFkZXIoc2l6ZSwgb25FcnJvcikge1xuICAgICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9NQVAgfCBzaXplKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTUFQXzgpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF8xNik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAvIDI1NiA+PiAwKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplICUgMjU2KTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDAwMDAwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTUFQXzMyKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDE2Nzc3MjE2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDY1NTM2ID4+IDApICUgMjU2KTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZSAvIDI1NiA+PiAwKSAlIDI1Nik7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiTWFwcyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGFja1N0cnVjdEhlYWRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYWNrU3RydWN0SGVhZGVyKHNpemUsIHNpZ25hdHVyZSwgb25FcnJvcikge1xuICAgICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9TVFJVQ1QgfCBzaXplKTtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaWduYXR1cmUpO1xuICAgICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJVQ1RfOCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2lnbmF0dXJlKTtcbiAgICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJVQ1RfMTYpO1xuICAgICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUgLyAyNTYgPj4gMCk7XG4gICAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSAlIDI1Nik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKCgwLCBfZXJyb3IubmV3RXJyb3IpKFwiU3RydWN0dXJlcyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFBhY2tlcjtcbn0oKTtcblxuLyoqXG4gICogQ2xhc3MgdG8gdW5wYWNrXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5cblxudmFyIFVucGFja2VyID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBVbnBhY2tlcigpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBVbnBhY2tlcik7XG5cbiAgICAvLyBIaWdoZXIgbGV2ZWwgbGF5ZXJzIGNhbiBzcGVjaWZ5IGhvdyB0byBtYXAgc3RydWN0cyB0byBoaWdoZXItbGV2ZWwgb2JqZWN0cy5cbiAgICAvLyBJZiB3ZSByZWNpZXZlIGEgc3RydWN0IHRoYXQgaGFzIGEgc2lnbmF0dXJlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIG1hcHBlcixcbiAgICAvLyB3ZSBzaW1wbHkgcmV0dXJuIGEgU3RydWN0dXJlIG9iamVjdC5cbiAgICB0aGlzLnN0cnVjdE1hcHBlcnMgPSB7fTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFVucGFja2VyLCBbe1xuICAgIGtleTogXCJ1bnBhY2tMaXN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFja0xpc3Qoc2l6ZSwgYnVmZmVyKSB7XG4gICAgICB2YXIgdmFsdWUgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHZhbHVlLnB1c2godGhpcy51bnBhY2soYnVmZmVyKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInVucGFja01hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnBhY2tNYXAoc2l6ZSwgYnVmZmVyKSB7XG4gICAgICB2YXIgdmFsdWUgPSB7fTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHZhciBrZXkgPSB0aGlzLnVucGFjayhidWZmZXIpO1xuICAgICAgICB2YWx1ZVtrZXldID0gdGhpcy51bnBhY2soYnVmZmVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5wYWNrU3RydWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVucGFja1N0cnVjdChzaXplLCBidWZmZXIpIHtcbiAgICAgIHZhciBzaWduYXR1cmUgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgICB2YXIgbWFwcGVyID0gdGhpcy5zdHJ1Y3RNYXBwZXJzW3NpZ25hdHVyZV07XG4gICAgICBpZiAobWFwcGVyKSB7XG4gICAgICAgIHJldHVybiBtYXBwZXIodGhpcywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IG5ldyBTdHJ1Y3R1cmUoc2lnbmF0dXJlLCBbXSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgdmFsdWUuZmllbGRzLnB1c2godGhpcy51bnBhY2soYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnBhY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5wYWNrKGJ1ZmZlcikge1xuICAgICAgdmFyIG1hcmtlciA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICAgIGlmIChtYXJrZXIgPT0gTlVMTCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFRSVUUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBGQUxTRSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBGTE9BVF82NCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnJlYWRGbG9hdDY0KCk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA+PSAwICYmIG1hcmtlciA8IDEyOCkge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkobWFya2VyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID49IDI0MCAmJiBtYXJrZXIgPCAyNTYpIHtcbiAgICAgICAgcmV0dXJuICgwLCBfaW50ZWdlci5pbnQpKG1hcmtlciAtIDI1Nik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfOCkge1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkoYnVmZmVyLnJlYWRJbnQ4KCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzE2KSB7XG4gICAgICAgIHJldHVybiAoMCwgX2ludGVnZXIuaW50KShidWZmZXIucmVhZEludDE2KCkpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzMyKSB7XG4gICAgICAgIHZhciBiID0gYnVmZmVyLnJlYWRJbnQzMigpO1xuICAgICAgICByZXR1cm4gKDAsIF9pbnRlZ2VyLmludCkoYik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfNjQpIHtcbiAgICAgICAgdmFyIGhpZ2ggPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICAgIHZhciBsb3cgPSBidWZmZXIucmVhZEludDMyKCk7XG4gICAgICAgIHJldHVybiBuZXcgX2ludGVnZXIyLmRlZmF1bHQobG93LCBoaWdoKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR184KSB7XG4gICAgICAgIHJldHVybiBfdXRmMi5kZWZhdWx0LmRlY29kZShidWZmZXIsIGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMTYpIHtcbiAgICAgICAgcmV0dXJuIF91dGYyLmRlZmF1bHQuZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MTYoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfMzIpIHtcbiAgICAgICAgcmV0dXJuIF91dGYyLmRlZmF1bHQuZGVjb2RlKGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MzIoKSk7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzE2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IExJU1RfMzIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTGlzdChidWZmZXIucmVhZFVJbnQzMigpLCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKGJ1ZmZlci5yZWFkVUludDgoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8xNikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IE1BUF8zMikge1xuICAgICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MzIoKSwgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUlVDVF84KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJVQ1RfMTYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgICB9XG4gICAgICB2YXIgbWFya2VySGlnaCA9IG1hcmtlciAmIDB4RjA7XG4gICAgICB2YXIgbWFya2VyTG93ID0gbWFya2VyICYgMHgwRjtcbiAgICAgIGlmIChtYXJrZXJIaWdoID09IDB4ODApIHtcbiAgICAgICAgcmV0dXJuIF91dGYyLmRlZmF1bHQuZGVjb2RlKGJ1ZmZlciwgbWFya2VyTG93KTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweDkwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgICAgfSBlbHNlIGlmIChtYXJrZXJIaWdoID09IDB4QTApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5wYWNrTWFwKG1hcmtlckxvdywgYnVmZmVyKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEIwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVucGFja1N0cnVjdChtYXJrZXJMb3csIGJ1ZmZlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlVua25vd24gcGFja2VkIHZhbHVlIHdpdGggbWFya2VyIFwiICsgbWFya2VyLnRvU3RyaW5nKDE2KSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBVbnBhY2tlcjtcbn0oKTtcblxuZXhwb3J0cy5QYWNrZXIgPSBQYWNrZXI7XG5leHBvcnRzLlVucGFja2VyID0gVW5wYWNrZXI7XG5leHBvcnRzLlN0cnVjdHVyZSA9IFN0cnVjdHVyZTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFBvb2wgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAcGFyYW0gY3JlYXRlICBhbiBhbGxvY2F0aW9uIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBhIG5ldyByZXNvdXJjZS4gSXQncyBnaXZlblxuICAgKiAgICAgICAgICAgICAgICBhIHNpbmdsZSBhcmd1bWVudCwgYSBmdW5jdGlvbiB0aGF0IHdpbGwgcmV0dXJuIHRoZSByZXNvdXJjZSB0b1xuICAgKiAgICAgICAgICAgICAgICB0aGUgcG9vbCBpZiBpbnZva2VkLCB3aGljaCBpcyBtZWFudCB0byBiZSBjYWxsZWQgb24gLmRpc3Bvc2VcbiAgICogICAgICAgICAgICAgICAgb3IgLmNsb3NlIG9yIHdoYXRldmVyIG1lY2hhbmlzbSB0aGUgcmVzb3VyY2UgdXNlcyB0byBmaW5hbGl6ZS5cbiAgICogQHBhcmFtIGRlc3Ryb3kgY2FsbGVkIHdpdGggdGhlIHJlc291cmNlIHdoZW4gaXQgaXMgZXZpY3RlZCBmcm9tIHRoaXMgcG9vbFxuICAgKiBAcGFyYW0gdmFsaWRhdGUgY2FsbGVkIGF0IHZhcmlvdXMgdGltZXMgKGxpa2Ugd2hlbiBhbiBpbnN0YW5jZSBpcyBhY3F1aXJlZCBhbmRcbiAgICogICAgICAgICAgICAgICAgIHdoZW4gaXQgaXMgcmV0dXJuZWQpLiBJZiB0aGlzIHJldHVybnMgZmFsc2UsIHRoZSByZXNvdXJjZSB3aWxsXG4gICAqICAgICAgICAgICAgICAgICBiZSBldmljdGVkXG4gICAqIEBwYXJhbSBtYXhJZGxlIHRoZSBtYXggbnVtYmVyIG9mIHJlc291cmNlcyB0aGF0IGFyZSBhbGxvd2VkIGlkbGUgaW4gdGhlIHBvb2wgYXRcbiAgICogICAgICAgICAgICAgICAgYW55IHRpbWUuIElmIHRoaXMgdGhyZXNob2xkIGlzIGV4Y2VlZGVkLCByZXNvdXJjZXMgd2lsbCBiZSBldmljdGVkLlxuICAgKi9cbiAgZnVuY3Rpb24gUG9vbChjcmVhdGUpIHtcbiAgICB2YXIgZGVzdHJveSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICB2YXIgdmFsaWRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgdmFyIG1heElkbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IDUwO1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFBvb2wpO1xuXG4gICAgdGhpcy5fY3JlYXRlID0gY3JlYXRlO1xuICAgIHRoaXMuX2Rlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuX3ZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgdGhpcy5fbWF4SWRsZSA9IG1heElkbGU7XG4gICAgdGhpcy5fcG9vbHMgPSB7fTtcbiAgICB0aGlzLl9yZWxlYXNlID0gdGhpcy5fcmVsZWFzZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUG9vbCwgW3tcbiAgICBrZXk6IFwiYWNxdWlyZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlKGtleSkge1xuICAgICAgdmFyIHJlc291cmNlID0gdm9pZCAwO1xuICAgICAgdmFyIHBvb2wgPSB0aGlzLl9wb29sc1trZXldO1xuICAgICAgaWYgKCFwb29sKSB7XG4gICAgICAgIHBvb2wgPSBbXTtcbiAgICAgICAgdGhpcy5fcG9vbHNba2V5XSA9IHBvb2w7XG4gICAgICB9XG4gICAgICB3aGlsZSAocG9vbC5sZW5ndGgpIHtcbiAgICAgICAgcmVzb3VyY2UgPSBwb29sLnBvcCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl92YWxpZGF0ZShyZXNvdXJjZSkpIHtcbiAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fZGVzdHJveShyZXNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZShrZXksIHRoaXMuX3JlbGVhc2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwdXJnZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXJnZShrZXkpIHtcbiAgICAgIHZhciByZXNvdXJjZSA9IHZvaWQgMDtcbiAgICAgIHZhciBwb29sID0gdGhpcy5fcG9vbHNba2V5XSB8fCBbXTtcbiAgICAgIHdoaWxlIChwb29sLmxlbmd0aCkge1xuICAgICAgICByZXNvdXJjZSA9IHBvb2wucG9wKCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kocmVzb3VyY2UpO1xuICAgICAgfVxuICAgICAgZGVsZXRlIHRoaXMuX3Bvb2xzW2tleV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInB1cmdlQWxsXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1cmdlQWxsKCkge1xuICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX3Bvb2xzLmtleXMpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Bvb2xzLmhhc093blByb3BlcnR5a2V5KSB7XG4gICAgICAgICAgdGhpcy5wdXJnZShrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICByZXR1cm4ga2V5IGluIHRoaXMuX3Bvb2xzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfcmVsZWFzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVsZWFzZShrZXksIHJlc291cmNlKSB7XG4gICAgICB2YXIgcG9vbCA9IHRoaXMuX3Bvb2xzW2tleV07XG4gICAgICBpZiAoIXBvb2wpIHtcbiAgICAgICAgLy9rZXkgaGFzIGJlZW4gcHVyZ2VkLCBkb24ndCBwdXQgaXQgYmFja1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocG9vbC5sZW5ndGggPj0gdGhpcy5fbWF4SWRsZSB8fCAhdGhpcy5fdmFsaWRhdGUocmVzb3VyY2UpKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kocmVzb3VyY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcG9vbC5wdXNoKHJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFBvb2w7XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFBvb2w7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfc3RyaW5naWZ5ID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeVwiKTtcblxudmFyIF9zdHJpbmdpZnkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RyaW5naWZ5KTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2dldFNlcnZlcnNVdGlsID0gcmVxdWlyZShcIi4vZ2V0LXNlcnZlcnMtdXRpbFwiKTtcblxudmFyIF9nZXRTZXJ2ZXJzVXRpbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXRTZXJ2ZXJzVXRpbCk7XG5cbnZhciBfcm91dGluZ1RhYmxlID0gcmVxdWlyZShcIi4vcm91dGluZy10YWJsZVwiKTtcblxudmFyIF9yb3V0aW5nVGFibGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcm91dGluZ1RhYmxlKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuLi9lcnJvclwiKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIFJlZGlzY292ZXJ5ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWRpc2NvdmVyeShnZXRTZXJ2ZXJzVXRpbCkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFJlZGlzY292ZXJ5KTtcblxuICAgIHRoaXMuX2dldFNlcnZlcnNVdGlsID0gZ2V0U2VydmVyc1V0aWwgfHwgbmV3IF9nZXRTZXJ2ZXJzVXRpbDIuZGVmYXVsdCgpO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUmVkaXNjb3ZlcnksIFt7XG4gICAga2V5OiBcImxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHNlc3Npb24sIHJvdXRlckFkZHJlc3MpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLl9nZXRTZXJ2ZXJzVXRpbC5jYWxsR2V0U2VydmVycyhzZXNzaW9uLCByb3V0ZXJBZGRyZXNzKS50aGVuKGZ1bmN0aW9uIChyZWNvcmRzKSB7XG4gICAgICAgIGlmIChyZWNvcmRzID09PSBudWxsKSB7XG4gICAgICAgICAgLy8gY29ubmVjdGlvbiBlcnJvciBoYXBwZW5lZCwgdW5hYmxlIHRvIHJldHJpZXZlIHJvdXRpbmcgdGFibGUgZnJvbSB0aGlzIHJvdXRlciwgbmV4dCBvbmUgc2hvdWxkIGJlIHF1ZXJpZWRcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdJbGxlZ2FsIHJlc3BvbnNlIGZyb20gcm91dGVyIFwiJyArIHJvdXRlckFkZHJlc3MgKyAnXCIuICcgKyAnUmVjZWl2ZWQgJyArIHJlY29yZHMubGVuZ3RoICsgJyByZWNvcmRzIGJ1dCBleHBlY3RlZCBvbmx5IG9uZS5cXG4nICsgKDAsIF9zdHJpbmdpZnkyLmRlZmF1bHQpKHJlY29yZHMpLCBfZXJyb3IuUFJPVE9DT0xfRVJST1IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHJlY29yZHNbMF07XG5cbiAgICAgICAgdmFyIGV4cGlyYXRpb25UaW1lID0gX3RoaXMuX2dldFNlcnZlcnNVdGlsLnBhcnNlVHRsKHJlY29yZCwgcm91dGVyQWRkcmVzcyk7XG5cbiAgICAgICAgdmFyIF9nZXRTZXJ2ZXJzVXRpbCRwYXJzZSA9IF90aGlzLl9nZXRTZXJ2ZXJzVXRpbC5wYXJzZVNlcnZlcnMocmVjb3JkLCByb3V0ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIHJvdXRlcnMgPSBfZ2V0U2VydmVyc1V0aWwkcGFyc2Uucm91dGVycyxcbiAgICAgICAgICAgIHJlYWRlcnMgPSBfZ2V0U2VydmVyc1V0aWwkcGFyc2UucmVhZGVycyxcbiAgICAgICAgICAgIHdyaXRlcnMgPSBfZ2V0U2VydmVyc1V0aWwkcGFyc2Uud3JpdGVycztcblxuICAgICAgICBSZWRpc2NvdmVyeS5fYXNzZXJ0Tm9uRW1wdHkocm91dGVycywgJ3JvdXRlcnMnLCByb3V0ZXJBZGRyZXNzKTtcbiAgICAgICAgUmVkaXNjb3ZlcnkuX2Fzc2VydE5vbkVtcHR5KHJlYWRlcnMsICdyZWFkZXJzJywgcm91dGVyQWRkcmVzcyk7XG4gICAgICAgIC8vIGNhc2Ugd2l0aCBubyB3cml0ZXJzIGlzIHByb2Nlc3NlZCBoaWdoZXIgaW4gdGhlIHByb21pc2UgY2hhaW4gYmVjYXVzZSBvbmx5IFJvdXRpbmdEcml2ZXIga25vd3NcbiAgICAgICAgLy8gaG93IHRvIGRlYWwgd2l0aCBzdWNoIHRhYmxlIGFuZCBob3cgdG8gdHJlYXQgcm91dGVyIHRoYXQgcmV0dXJuZWQgc3VjaCB0YWJsZVxuXG4gICAgICAgIHJldHVybiBuZXcgX3JvdXRpbmdUYWJsZTIuZGVmYXVsdChyb3V0ZXJzLCByZWFkZXJzLCB3cml0ZXJzLCBleHBpcmF0aW9uVGltZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogXCJfYXNzZXJ0Tm9uRW1wdHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2Fzc2VydE5vbkVtcHR5KHNlcnZlcnNSb3VuZFJvYmluQXJyYXksIHNlcnZlcnNOYW1lLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICBpZiAoc2VydmVyc1JvdW5kUm9iaW5BcnJheS5pc0VtcHR5KCkpIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ1JlY2VpdmVkIG5vICcgKyBzZXJ2ZXJzTmFtZSArICcgZnJvbSByb3V0ZXIgJyArIHJvdXRlckFkZHJlc3MsIF9lcnJvci5QUk9UT0NPTF9FUlJPUik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSZWRpc2NvdmVyeTtcbn0oKTsgLyoqXG4gICAgICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAgICAgICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICAgICAgKlxuICAgICAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAgICAgICpcbiAgICAgICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgICAgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICAgICpcbiAgICAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgICAgKlxuICAgICAgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICAgICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgICAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gICAgICAqL1xuXG5leHBvcnRzLmRlZmF1bHQgPSBSZWRpc2NvdmVyeTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBBbiBhcnJheSB0aGF0IGxldHMgeW91IGhvcCB0aHJvdWdoIHRoZSBlbGVtZW50cyBlbmRsZXNzbHkuXG4gKi9cbnZhciBSb3VuZFJvYmluQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJvdW5kUm9iaW5BcnJheShpdGVtcykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFJvdW5kUm9iaW5BcnJheSk7XG5cbiAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zIHx8IFtdO1xuICAgIHRoaXMuX29mZnNldCA9IDA7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShSb3VuZFJvYmluQXJyYXksIFt7XG4gICAga2V5OiAnbmV4dCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSB0aGlzLl9vZmZzZXQgJSB0aGlzLnNpemUoKTtcbiAgICAgIHRoaXMuX29mZnNldCsrO1xuICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2luZGV4XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdwdXNoQWxsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHVzaEFsbChlbGVtcykge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVsZW1zKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheSBleHBlY3RlZCBidXQgZ290OiAnICsgZWxlbXMpO1xuICAgICAgfVxuXG4gICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLl9pdGVtcywgZWxlbXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzRW1wdHknLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzaXplJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAndG9BcnJheScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvQXJyYXkoKSB7XG4gICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVtb3ZlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlKGl0ZW0pIHtcbiAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5faXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50ICE9PSBpdGVtO1xuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSb3VuZFJvYmluQXJyYXk7XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFJvdW5kUm9iaW5BcnJheTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF90b0NvbnN1bWFibGVBcnJheTIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpO1xuXG52YXIgX3RvQ29uc3VtYWJsZUFycmF5MyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvQ29uc3VtYWJsZUFycmF5Mik7XG5cbnZhciBfZnJvbSA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2NvcmUtanMvYXJyYXkvZnJvbVwiKTtcblxudmFyIF9mcm9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zyb20pO1xuXG52YXIgX3NldCA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2NvcmUtanMvc2V0XCIpO1xuXG52YXIgX3NldDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXQpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfaW50ZWdlciA9IHJlcXVpcmUoXCIuLi9pbnRlZ2VyXCIpO1xuXG52YXIgX3JvdW5kUm9iaW5BcnJheSA9IHJlcXVpcmUoXCIuL3JvdW5kLXJvYmluLWFycmF5XCIpO1xuXG52YXIgX3JvdW5kUm9iaW5BcnJheTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yb3VuZFJvYmluQXJyYXkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBNSU5fUk9VVEVSUyA9IDE7XG5cbnZhciBSb3V0aW5nVGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFJvdXRpbmdUYWJsZShyb3V0ZXJzLCByZWFkZXJzLCB3cml0ZXJzLCBleHBpcmF0aW9uVGltZSkge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFJvdXRpbmdUYWJsZSk7XG5cbiAgICB0aGlzLnJvdXRlcnMgPSByb3V0ZXJzIHx8IG5ldyBfcm91bmRSb2JpbkFycmF5Mi5kZWZhdWx0KCk7XG4gICAgdGhpcy5yZWFkZXJzID0gcmVhZGVycyB8fCBuZXcgX3JvdW5kUm9iaW5BcnJheTIuZGVmYXVsdCgpO1xuICAgIHRoaXMud3JpdGVycyA9IHdyaXRlcnMgfHwgbmV3IF9yb3VuZFJvYmluQXJyYXkyLmRlZmF1bHQoKTtcbiAgICB0aGlzLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWUgfHwgKDAsIF9pbnRlZ2VyLmludCkoMCk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShSb3V0aW5nVGFibGUsIFt7XG4gICAga2V5OiBcImZvcmdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JnZXQoYWRkcmVzcykge1xuICAgICAgLy8gRG9uJ3QgcmVtb3ZlIGl0IGZyb20gdGhlIHNldCBvZiByb3V0ZXJzLCBzaW5jZSB0aGF0IG1pZ2h0IG1lYW4gd2UgbG9zZSBvdXIgYWJpbGl0eSB0byByZS1kaXNjb3ZlcixcbiAgICAgIC8vIGp1c3QgcmVtb3ZlIGl0IGZyb20gdGhlIHNldCBvZiByZWFkZXJzIGFuZCB3cml0ZXJzLCBzbyB0aGF0IHdlIGRvbid0IHVzZSBpdCBmb3IgYWN0dWFsIHdvcmsgd2l0aG91dFxuICAgICAgLy8gcGVyZm9ybWluZyBkaXNjb3ZlcnkgZmlyc3QuXG4gICAgICB0aGlzLnJlYWRlcnMucmVtb3ZlKGFkZHJlc3MpO1xuICAgICAgdGhpcy53cml0ZXJzLnJlbW92ZShhZGRyZXNzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9yZ2V0Um91dGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvcmdldFJvdXRlcihhZGRyZXNzKSB7XG4gICAgICB0aGlzLnJvdXRlcnMucmVtb3ZlKGFkZHJlc3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JnZXRXcml0ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yZ2V0V3JpdGVyKGFkZHJlc3MpIHtcbiAgICAgIHRoaXMud3JpdGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlcnZlcnNEaWZmXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlcnZlcnNEaWZmKG90aGVyUm91dGluZ1RhYmxlKSB7XG4gICAgICB2YXIgb2xkU2VydmVycyA9IG5ldyBfc2V0Mi5kZWZhdWx0KHRoaXMuX2FsbFNlcnZlcnMoKSk7XG4gICAgICB2YXIgbmV3U2VydmVycyA9IG90aGVyUm91dGluZ1RhYmxlLl9hbGxTZXJ2ZXJzKCk7XG4gICAgICBuZXdTZXJ2ZXJzLmZvckVhY2goZnVuY3Rpb24gKG5ld1NlcnZlcikge1xuICAgICAgICByZXR1cm4gb2xkU2VydmVycy5kZWxldGUobmV3U2VydmVyKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICgwLCBfZnJvbTIuZGVmYXVsdCkob2xkU2VydmVycyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzU3RhbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNTdGFsZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4cGlyYXRpb25UaW1lLmxlc3NUaGFuKERhdGUubm93KCkpIHx8IHRoaXMucm91dGVycy5zaXplKCkgPD0gTUlOX1JPVVRFUlMgfHwgdGhpcy5yZWFkZXJzLmlzRW1wdHkoKSB8fCB0aGlzLndyaXRlcnMuaXNFbXB0eSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJfYWxsU2VydmVyc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYWxsU2VydmVycygpIHtcbiAgICAgIHJldHVybiBbXS5jb25jYXQoKDAsIF90b0NvbnN1bWFibGVBcnJheTMuZGVmYXVsdCkodGhpcy5yb3V0ZXJzLnRvQXJyYXkoKSksICgwLCBfdG9Db25zdW1hYmxlQXJyYXkzLmRlZmF1bHQpKHRoaXMucmVhZGVycy50b0FycmF5KCkpLCAoMCwgX3RvQ29uc3VtYWJsZUFycmF5My5kZWZhdWx0KSh0aGlzLndyaXRlcnMudG9BcnJheSgpKSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSb3V0aW5nVGFibGU7XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFJvdXRpbmdUYWJsZTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3JlY29yZCA9IHJlcXVpcmUoXCIuLi9yZWNvcmRcIik7XG5cbnZhciBfcmVjb3JkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlY29yZCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogSGFuZGxlcyBhIFJVTi9QVUxMX0FMTCwgb3IgUlVOL0RJU0NBUkRfQUxMIHJlcXVlc3RzLCBtYXBzIHRoZSByZXNwb25zZXNcbiAqIGluIGEgd2F5IHRoYXQgYSB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGNhbiBzZWUgdGhlc2UgYXMgYSBjbGVhbiBTdHJlYW1cbiAqIG9mIHJlY29yZHMuXG4gKiBUaGlzIGNsYXNzIHdpbGwgcXVldWUgdXAgaW5jb21pbmcgbWVzc2FnZXMgdW50aWwgYSB1c2VyLXByb3ZpZGVkIG9ic2VydmVyXG4gKiBmb3IgdGhlIGluY29taW5nIHN0cmVhbSBpcyByZWdpc3RlcmVkLiBUaHVzLCB3ZSBrZWVwIGZpZWxkcyBhcm91bmRcbiAqIGZvciB0cmFja2luZyBoZWFkL3JlY29yZHMvdGFpbC4gVGhlc2UgYXJlIG9ubHkgdXNlZCBpZiB0aGVyZSBpcyBub1xuICogb2JzZXJ2ZXIgcmVnaXN0ZXJlZC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG52YXIgU3RyZWFtT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGVycm9yVHJhbnNmb3JtZXIgb3B0aW9uYWwgY2FsbGJhY2sgdG8gYmUgdXNlZCBmb3IgYWRkaW5nIGFkZGl0aW9uYWwgbG9naWMgb24gZXJyb3JcbiAgICovXG4gIGZ1bmN0aW9uIFN0cmVhbU9ic2VydmVyKCkge1xuICAgIHZhciBlcnJvclRyYW5zZm9ybWVyID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gZXJyO1xuICAgIH07XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgdGhpcy5fZmllbGRLZXlzID0gbnVsbDtcbiAgICB0aGlzLl9maWVsZExvb2t1cCA9IG51bGw7XG4gICAgdGhpcy5fcXVldWVkUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuX3RhaWwgPSBudWxsO1xuICAgIHRoaXMuX2Vycm9yID0gbnVsbDtcbiAgICB0aGlzLl9oYXNGYWlsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9lcnJvclRyYW5zZm9ybWVyID0gZXJyb3JUcmFuc2Zvcm1lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGJlIGNhbGxlZCBvbiBldmVyeSByZWNvcmQgdGhhdCBjb21lcyBpbiBhbmQgdHJhbnNmb3JtIGEgcmF3IHJlY29yZFxuICAgKiB0byBhIE9iamVjdC4gSWYgdXNlci1wcm92aWRlZCBvYnNlcnZlciBpcyBwcmVzZW50LCBwYXNzIHRyYW5zZm9ybWVkIHJlY29yZFxuICAgKiB0byBpdCdzIG9uTmV4dCBtZXRob2QsIG90aGVyd2lzZSwgcHVzaCB0byByZWNvcmQgcXVlLlxuICAgKiBAcGFyYW0ge0FycmF5fSByYXdSZWNvcmQgLSBBbiBhcnJheSB3aXRoIHRoZSByYXcgcmVjb3JkXG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoU3RyZWFtT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiBcIm9uTmV4dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbk5leHQocmF3UmVjb3JkKSB7XG4gICAgICB2YXIgcmVjb3JkID0gbmV3IF9yZWNvcmQyLmRlZmF1bHQodGhpcy5fZmllbGRLZXlzLCByYXdSZWNvcmQsIHRoaXMuX2ZpZWxkTG9va3VwKTtcbiAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICB0aGlzLl9vYnNlcnZlci5vbk5leHQocmVjb3JkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3F1ZXVlZFJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvbkNvbXBsZXRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgICBpZiAodGhpcy5fZmllbGRLZXlzID09PSBudWxsKSB7XG4gICAgICAgIC8vIFN0cmVhbSBoZWFkZXIsIGJ1aWxkIGEgbmFtZS0+aW5kZXggZmllbGQgbG9va3VwIHRhYmxlXG4gICAgICAgIC8vIHRvIGJlIHVzZWQgYnkgcmVjb3Jkcy4gVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdG8gbWFrZSBpdFxuICAgICAgICAvLyBmYXN0ZXIgdG8gbG9vayB1cCBmaWVsZHMgaW4gYSByZWNvcmQgYnkgbmFtZSwgcmF0aGVyIHRoYW4gYnkgaW5kZXguXG4gICAgICAgIC8vIFNpbmNlIHRoZSByZWNvcmRzIHdlIGdldCBiYWNrIHZpYSBCb2x0IGFyZSBqdXN0IGFycmF5cyBvZiB2YWx1ZXMuXG4gICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IFtdO1xuICAgICAgICB0aGlzLl9maWVsZExvb2t1cCA9IHt9O1xuICAgICAgICBpZiAobWV0YS5maWVsZHMgJiYgbWV0YS5maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuX2ZpZWxkS2V5cyA9IG1ldGEuZmllbGRzO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0YS5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpZWxkTG9va3VwW21ldGEuZmllbGRzW2ldXSA9IGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBFbmQgb2Ygc3RyZWFtXG4gICAgICAgIGlmICh0aGlzLl9vYnNlcnZlcikge1xuICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9uQ29tcGxldGVkKG1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3RhaWwgPSBtZXRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlc29sdmVDb25uZWN0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc29sdmVDb25uZWN0aW9uKGNvbm4pIHtcbiAgICAgIHRoaXMuX2Nvbm4gPSBjb25uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdpbGwgYmUgY2FsbGVkIG9uIGVycm9ycy5cbiAgICAgKiBJZiB1c2VyLXByb3ZpZGVkIG9ic2VydmVyIGlzIHByZXNlbnQsIHBhc3MgdGhlIGVycm9yXG4gICAgICogdG8gaXQncyBvbkVycm9yIG1ldGhvZCwgb3RoZXJ3aXNlIHNldCBpbnN0YW5jZSB2YXJpYWJsZSBfZXJyb3IuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGVycm9yIC0gQW4gZXJyb3Igb2JqZWN0XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJvbkVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uRXJyb3IoZXJyb3IpIHtcbiAgICAgIHZhciB0cmFuc2Zvcm1lZEVycm9yID0gdGhpcy5fZXJyb3JUcmFuc2Zvcm1lcihlcnJvciwgdGhpcy5fY29ubik7XG4gICAgICBpZiAodGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2hhc0ZhaWxlZCA9IHRydWU7XG4gICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX29ic2VydmVyLm9uRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLl9vYnNlcnZlci5vbkVycm9yKHRyYW5zZm9ybWVkRXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHRyYW5zZm9ybWVkRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9IHRyYW5zZm9ybWVkRXJyb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlIHRvIGV2ZW50cyB3aXRoIHByb3ZpZGVkIG9ic2VydmVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciAtIE9ic2VydmVyIG9iamVjdFxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVjb3JkOiBPYmplY3QpfSBvYnNlcnZlci5vbk5leHQgLSBIYW5kbGUgcmVjb3Jkcywgb25lIGJ5IG9uZS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1ldGFkYXRhOiBPYmplY3QpfSBvYnNlcnZlci5vbkNvbXBsZXRlIC0gSGFuZGxlIHN0cmVhbSB0YWlsLCB0aGUgbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjogT2JqZWN0KX0gb2JzZXJ2ZXIub25FcnJvciAtIEhhbmRsZSBlcnJvcnMuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJzdWJzY3JpYmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICBpZiAodGhpcy5fZXJyb3IpIHtcbiAgICAgICAgb2JzZXJ2ZXIub25FcnJvcih0aGlzLl9lcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9xdWV1ZWRSZWNvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfcXVldWVkUmVjb3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG9ic2VydmVyLm9uTmV4dChfcXVldWVkUmVjb3Jkc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl90YWlsKSB7XG4gICAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKHRoaXMuX3RhaWwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFN0cmVhbU9ic2VydmVyO1xufSgpOyAvKipcbiAgICAgICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICAgICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgICAqXG4gICAgICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICAgICAgKlxuICAgICAgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgICAgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICAgKlxuICAgICAgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgICAqXG4gICAgICAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICAgICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAgICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgICAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgICAgICovXG5cbmV4cG9ydHMuZGVmYXVsdCA9IFN0cmVhbU9ic2VydmVyOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9wcm9taXNlID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UnKTtcblxudmFyIF9wcm9taXNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb21pc2UpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4uL2Vycm9yJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBERUZBVUxUX01BWF9SRVRSWV9USU1FX01TID0gMzAgKiAxMDAwOyAvLyAzMCBzZWNvbmRzXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIERFRkFVTFRfSU5JVElBTF9SRVRSWV9ERUxBWV9NUyA9IDEwMDA7IC8vIDEgc2Vjb25kc1xudmFyIERFRkFVTFRfUkVUUllfREVMQVlfTVVMVElQTElFUiA9IDIuMDtcbnZhciBERUZBVUxUX1JFVFJZX0RFTEFZX0pJVFRFUl9GQUNUT1IgPSAwLjI7XG5cbnZhciBUcmFuc2FjdGlvbkV4ZWN1dG9yID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBUcmFuc2FjdGlvbkV4ZWN1dG9yKG1heFJldHJ5VGltZU1zLCBpbml0aWFsUmV0cnlEZWxheU1zLCBtdWx0aXBsaWVyLCBqaXR0ZXJGYWN0b3IpIHtcbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBUcmFuc2FjdGlvbkV4ZWN1dG9yKTtcblxuICAgIHRoaXMuX21heFJldHJ5VGltZU1zID0gX3ZhbHVlT3JEZWZhdWx0KG1heFJldHJ5VGltZU1zLCBERUZBVUxUX01BWF9SRVRSWV9USU1FX01TKTtcbiAgICB0aGlzLl9pbml0aWFsUmV0cnlEZWxheU1zID0gX3ZhbHVlT3JEZWZhdWx0KGluaXRpYWxSZXRyeURlbGF5TXMsIERFRkFVTFRfSU5JVElBTF9SRVRSWV9ERUxBWV9NUyk7XG4gICAgdGhpcy5fbXVsdGlwbGllciA9IF92YWx1ZU9yRGVmYXVsdChtdWx0aXBsaWVyLCBERUZBVUxUX1JFVFJZX0RFTEFZX01VTFRJUExJRVIpO1xuICAgIHRoaXMuX2ppdHRlckZhY3RvciA9IF92YWx1ZU9yRGVmYXVsdChqaXR0ZXJGYWN0b3IsIERFRkFVTFRfUkVUUllfREVMQVlfSklUVEVSX0ZBQ1RPUik7XG5cbiAgICB0aGlzLl9pbkZsaWdodFRpbWVvdXRJZHMgPSBbXTtcblxuICAgIHRoaXMuX3ZlcmlmeUFmdGVyQ29uc3RydWN0aW9uKCk7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShUcmFuc2FjdGlvbkV4ZWN1dG9yLCBbe1xuICAgIGtleTogJ2V4ZWN1dGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleGVjdXRlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IF9wcm9taXNlMi5kZWZhdWx0KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgX3RoaXMuX2V4ZWN1dGVUcmFuc2FjdGlvbkluc2lkZVByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdmFyIHJldHJ5U3RhcnRUaW1lTXMgPSBEYXRlLm5vdygpO1xuICAgICAgICB2YXIgcmV0cnlEZWxheU1zID0gX3RoaXMuX2luaXRpYWxSZXRyeURlbGF5TXM7XG4gICAgICAgIHJldHVybiBfdGhpcy5fcmV0cnlUcmFuc2FjdGlvblByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIGVycm9yLCByZXRyeVN0YXJ0VGltZU1zLCByZXRyeURlbGF5TXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIC8vIGNhbmNlbCBhbGwgZXhpc3RpbmcgdGltZW91dHMgdG8gcHJldmVudCBmdXJ0aGVyIHJldHJpZXNcbiAgICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcy5mb3JFYWNoKGZ1bmN0aW9uICh0aW1lb3V0SWQpIHtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9pbkZsaWdodFRpbWVvdXRJZHMgPSBbXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfcmV0cnlUcmFuc2FjdGlvblByb21pc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmV0cnlUcmFuc2FjdGlvblByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIGVycm9yLCByZXRyeVN0YXJ0VGltZSwgcmV0cnlEZWxheU1zKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGVsYXBzZWRUaW1lTXMgPSBEYXRlLm5vdygpIC0gcmV0cnlTdGFydFRpbWU7XG5cbiAgICAgIGlmIChlbGFwc2VkVGltZU1zID4gdGhpcy5fbWF4UmV0cnlUaW1lTXMgfHwgIVRyYW5zYWN0aW9uRXhlY3V0b3IuX2NhblJldHJ5T24oZXJyb3IpKSB7XG4gICAgICAgIHJldHVybiBfcHJvbWlzZTIuZGVmYXVsdC5yZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IF9wcm9taXNlMi5kZWZhdWx0KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIG5leHRSZXRyeVRpbWUgPSBfdGhpczIuX2NvbXB1dGVEZWxheVdpdGhKaXR0ZXIocmV0cnlEZWxheU1zKTtcbiAgICAgICAgdmFyIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIGZpbHRlciBvdXQgdGhpcyB0aW1lb3V0SWQgd2hlbiB0aW1lIGhhcyBjb21lIGFuZCBmdW5jdGlvbiBpcyBiZWluZyBleGVjdXRlZFxuICAgICAgICAgIF90aGlzMi5faW5GbGlnaHRUaW1lb3V0SWRzID0gX3RoaXMyLl9pbkZsaWdodFRpbWVvdXRJZHMuZmlsdGVyKGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgICAgcmV0dXJuIGlkICE9PSB0aW1lb3V0SWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX3RoaXMyLl9leGVjdXRlVHJhbnNhY3Rpb25JbnNpZGVQcm9taXNlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9LCBuZXh0UmV0cnlUaW1lKTtcbiAgICAgICAgLy8gYWRkIG5ld2x5IGNyZWF0ZWQgdGltZW91dElkIHRvIHRoZSBsaXN0IG9mIGFsbCBpbi1mbGlnaHQgdGltZW91dHNcbiAgICAgICAgX3RoaXMyLl9pbkZsaWdodFRpbWVvdXRJZHMucHVzaCh0aW1lb3V0SWQpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIHZhciBuZXh0UmV0cnlEZWxheU1zID0gcmV0cnlEZWxheU1zICogX3RoaXMyLl9tdWx0aXBsaWVyO1xuICAgICAgICByZXR1cm4gX3RoaXMyLl9yZXRyeVRyYW5zYWN0aW9uUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgZXJyb3IsIHJldHJ5U3RhcnRUaW1lLCBuZXh0UmV0cnlEZWxheU1zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19leGVjdXRlVHJhbnNhY3Rpb25JbnNpZGVQcm9taXNlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2V4ZWN1dGVUcmFuc2FjdGlvbkluc2lkZVByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHR4ID0gdHJhbnNhY3Rpb25DcmVhdG9yKCk7XG4gICAgICAgIHZhciB0cmFuc2FjdGlvbldvcmtSZXN1bHQgPSB0cmFuc2FjdGlvbldvcmsodHgpO1xuXG4gICAgICAgIC8vIHVzZXIgZGVmaW5lZCBjYWxsYmFjayBpcyBzdXBwb3NlZCB0byByZXR1cm4gYSBwcm9taXNlLCBidXQgaXQgbWlnaHQgbm90OyBzbyB0byBwcm90ZWN0IGFnYWluc3QgYW5cbiAgICAgICAgLy8gaW5jb3JyZWN0IEFQSSB1c2FnZSB3ZSB3cmFwIHRoZSByZXR1cm5lZCB2YWx1ZSB3aXRoIGEgcmVzb2x2ZWQgcHJvbWlzZTsgdGhpcyBpcyBlZmZlY3RpdmVseSBhXG4gICAgICAgIC8vIHZhbGlkYXRpb24gc3RlcCB3aXRob3V0IHR5cGUgY2hlY2tzXG4gICAgICAgIHZhciByZXN1bHRQcm9taXNlID0gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZSh0cmFuc2FjdGlvbldvcmtSZXN1bHQpO1xuXG4gICAgICAgIHJlc3VsdFByb21pc2UudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKHR4LmlzT3BlbigpKSB7XG4gICAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3b3JrIHJldHVybmVkIHJlc29sdmVkIHByb21pc2UgYW5kIHRyYW5zYWN0aW9uIGhhcyBub3QgYmVlbiBjb21taXR0ZWQvcm9sbGVkIGJhY2tcbiAgICAgICAgICAgIC8vIHRyeSB0byBjb21taXQgdGhlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICB0eC5jb21taXQoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCwgcmV0dXJuIHJlc3VsdCB0byB0aGUgdXNlclxuICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGNvbW1pdCwgcHJvcGFnYXRlIHRoZSBmYWlsdXJlXG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24gd29yayByZXR1cm5lZCByZXNvbHZlZCBwcm9taXNlIGFuZCB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IGNvbW1pdHRlZC9yb2xsZWQgYmFja1xuICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgZ2l2ZW4gdHJhbnNhY3Rpb24gd29ya1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgLy8gdHJhbnNhY3Rpb24gd29yayByZXR1cm5lZCByZWplY3RlZCBwcm9taXNlLCBwcm9wYWdhdGUgdGhlIGZhaWx1cmVcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NvbXB1dGVEZWxheVdpdGhKaXR0ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY29tcHV0ZURlbGF5V2l0aEppdHRlcihkZWxheU1zKSB7XG4gICAgICB2YXIgaml0dGVyID0gZGVsYXlNcyAqIHRoaXMuX2ppdHRlckZhY3RvcjtcbiAgICAgIHZhciBtaW4gPSBkZWxheU1zIC0gaml0dGVyO1xuICAgICAgdmFyIG1heCA9IGRlbGF5TXMgKyBqaXR0ZXI7XG4gICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ192ZXJpZnlBZnRlckNvbnN0cnVjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF92ZXJpZnlBZnRlckNvbnN0cnVjdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLl9tYXhSZXRyeVRpbWVNcyA8IDApIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ01heCByZXRyeSB0aW1lIHNob3VsZCBiZSA+PSAwOiAnICsgdGhpcy5fbWF4UmV0cnlUaW1lTXMpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2luaXRpYWxSZXRyeURlbGF5TXMgPCAwKSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdJbml0aWFsIHJldHJ5IGRlbGF5IHNob3VsZCA+PSAwOiAnICsgdGhpcy5faW5pdGlhbFJldHJ5RGVsYXlNcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fbXVsdGlwbGllciA8IDEuMCkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnTXVsdGlwbGllciBzaG91bGQgYmUgPj0gMS4wOiAnICsgdGhpcy5fbXVsdGlwbGllcik7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5faml0dGVyRmFjdG9yIDwgMCB8fCB0aGlzLl9qaXR0ZXJGYWN0b3IgPiAxKSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKCdKaXR0ZXIgZmFjdG9yIHNob3VsZCBiZSBpbiBbMC4wLCAxLjBdOiAnICsgdGhpcy5faml0dGVyRmFjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogJ19jYW5SZXRyeU9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NhblJldHJ5T24oZXJyb3IpIHtcbiAgICAgIHJldHVybiBlcnJvciAmJiBlcnJvci5jb2RlICYmIChlcnJvci5jb2RlID09PSBfZXJyb3IuU0VSVklDRV9VTkFWQUlMQUJMRSB8fCBlcnJvci5jb2RlID09PSBfZXJyb3IuU0VTU0lPTl9FWFBJUkVEIHx8IGVycm9yLmNvZGUuaW5kZXhPZignVHJhbnNpZW50RXJyb3InKSA+PSAwKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFRyYW5zYWN0aW9uRXhlY3V0b3I7XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFRyYW5zYWN0aW9uRXhlY3V0b3I7XG47XG5cbmZ1bmN0aW9uIF92YWx1ZU9yRGVmYXVsdCh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9idWYgPSByZXF1aXJlKCcuL2J1ZicpO1xuXG52YXIgX3N0cmluZ19kZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXInKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vLi4vZXJyb3InKTtcblxudmFyIHBsYXRmb3JtT2JqID0ge307IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgICAgICAgICAgICAgICAgICAgICAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgICAgICAgICAgICAgICAgICAgICAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICAgICAgICAgICAgICAgICAgICAgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICAgICAgICAgICAgICAgICAgICAgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICovXG5cbi8vIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjcm9zcy1wbGF0Zm9ybSBVVEYtOCBlbmNvZGVyIGFuZCBkZWNvZGVyIHRoYXQgd29ya3Ncbi8vIHdpdGggdGhlIEJ1ZmZlciBBUEkgZGVmaW5lZCBpbiBidWYuanNcblxudHJ5IHtcbiAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpcyAnYnVmZmVyJyBpcyBub3QgYXZhaWxhYmxlXG4gIHJlcXVpcmUucmVzb2x2ZShcImJ1ZmZlclwiKTtcbiAgdmFyIGRlY29kZXIgPSBuZXcgX3N0cmluZ19kZWNvZGVyLlN0cmluZ0RlY29kZXIoJ3V0ZjgnKTtcbiAgdmFyIG5vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuXG4gIHBsYXRmb3JtT2JqID0ge1xuICAgIFwiZW5jb2RlXCI6IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAgIHJldHVybiBuZXcgX2J1Zi5Ob2RlQnVmZmVyKG5ldyBub2RlLkJ1ZmZlcihzdHIsIFwiVVRGLThcIikpO1xuICAgIH0sXG4gICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gZGVjb2RlKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5Ob2RlQnVmZmVyKSB7XG4gICAgICAgIHZhciBzdGFydCA9IGJ1ZmZlci5wb3NpdGlvbixcbiAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgbGVuZ3RoO1xuICAgICAgICBidWZmZXIucG9zaXRpb24gPSBNYXRoLm1pbihlbmQsIGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gYnVmZmVyLl9idWZmZXIudG9TdHJpbmcoJ3V0ZjgnLCBzdGFydCwgZW5kKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5Db21iaW5lZEJ1ZmZlcikge1xuICAgICAgICB2YXIgb3V0ID0gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoYnVmZmVyLCBsZW5ndGgsIGZ1bmN0aW9uIChwYXJ0QnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZXIud3JpdGUocGFydEJ1ZmZlci5fYnVmZmVyKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBkZWNvZGVyLmVuZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93ICgwLCBfZXJyb3IubmV3RXJyb3IpKFwiRG9uJ3Qga25vdyBob3cgdG8gZGVjb2RlIHN0cmluZ3MgZnJvbSBgXCIgKyBidWZmZXIgKyBcImAuXCIpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn0gY2F0Y2ggKGUpIHtcblxuICAvLyBOb3Qgb24gTm9kZUpTLCBhZGQgc2hpbSBmb3IgV2ViQVBJIFRleHRFbmNvZGVyL1RleHREZWNvZGVyXG4gIHZhciB0ZXh0RW5jb2RpbmcgPSByZXF1aXJlKCcuLi8uLi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2luZGV4Jyk7XG4gIHZhciBlbmNvZGVyID0gbmV3IHRleHRFbmNvZGluZy5UZXh0RW5jb2RlcihcInV0Zi04XCIpO1xuICB2YXIgX2RlY29kZXIgPSBuZXcgdGV4dEVuY29kaW5nLlRleHREZWNvZGVyKFwidXRmLThcIik7XG5cbiAgcGxhdGZvcm1PYmogPSB7XG4gICAgXCJlbmNvZGVcIjogZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICAgICAgcmV0dXJuIG5ldyBfYnVmLkhlYXBCdWZmZXIoZW5jb2Rlci5lbmNvZGUoc3RyKS5idWZmZXIpO1xuICAgIH0sXG4gICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gZGVjb2RlKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgX2J1Zi5IZWFwQnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBfZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnJlYWRWaWV3KE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmxlbmd0aCAtIGJ1ZmZlci5wb3NpdGlvbikpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlY29kaW5nIGNvbWJpbmVkIGJ1ZmZlciBpcyBjb21wbGljYXRlZC4gRm9yIHNpbXBsaWNpdHksIGZvciBub3csIFxuICAgICAgICAvLyB3ZSBzaW1wbHkgY29weSB0aGUgY29tYmluZWQgYnVmZmVyIGludG8gYSByZWd1bGFyIGJ1ZmZlciBhbmQgZGVjb2RlIHRoYXQuXG4gICAgICAgIHZhciB0bXBCdWYgPSAoMCwgX2J1Zi5hbGxvYykobGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRtcEJ1Zi53cml0ZVVJbnQ4KGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdG1wQnVmLnJlc2V0KCk7XG4gICAgICAgIHJldHVybiBfZGVjb2Rlci5kZWNvZGUodG1wQnVmLnJlYWRWaWV3KGxlbmd0aCkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxudmFyIHN0cmVhbURlY29kZUNvbWJpbmVkQnVmZmVyID0gZnVuY3Rpb24gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoY29tYmluZWRCdWZmZXJzLCBsZW5ndGgsIGRlY29kZUZuLCBlbmRGbikge1xuICB2YXIgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBsZW5ndGg7XG4gIHZhciBwb3NpdGlvbiA9IGNvbWJpbmVkQnVmZmVycy5wb3NpdGlvbjtcbiAgY29tYmluZWRCdWZmZXJzLl91cGRhdGVQb3MoTWF0aC5taW4obGVuZ3RoLCBjb21iaW5lZEJ1ZmZlcnMubGVuZ3RoIC0gcG9zaXRpb24pKTtcbiAgLy8gUmVkdWNlIENvbWJpbmVkQnVmZmVycyB0byBhIGRlY29kZWQgc3RyaW5nXG4gIHZhciBvdXQgPSBjb21iaW5lZEJ1ZmZlcnMuX2J1ZmZlcnMucmVkdWNlKGZ1bmN0aW9uIChsYXN0LCBwYXJ0QnVmZmVyKSB7XG4gICAgaWYgKHJlbWFpbmluZ0J5dGVzVG9SZWFkIDw9IDApIHtcbiAgICAgIHJldHVybiBsYXN0O1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPj0gcGFydEJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHBvc2l0aW9uIC09IHBhcnRCdWZmZXIubGVuZ3RoO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MocG9zaXRpb24gLSBwYXJ0QnVmZmVyLnBvc2l0aW9uKTtcbiAgICAgIHZhciBieXRlc1RvUmVhZCA9IE1hdGgubWluKHBhcnRCdWZmZXIubGVuZ3RoIC0gcG9zaXRpb24sIHJlbWFpbmluZ0J5dGVzVG9SZWFkKTtcbiAgICAgIHZhciBsYXN0U2xpY2UgPSBwYXJ0QnVmZmVyLnJlYWRTbGljZShieXRlc1RvUmVhZCk7XG4gICAgICBwYXJ0QnVmZmVyLl91cGRhdGVQb3MoYnl0ZXNUb1JlYWQpO1xuICAgICAgcmVtYWluaW5nQnl0ZXNUb1JlYWQgPSBNYXRoLm1heChyZW1haW5pbmdCeXRlc1RvUmVhZCAtIGxhc3RTbGljZS5sZW5ndGgsIDApO1xuICAgICAgcG9zaXRpb24gPSAwO1xuICAgICAgcmV0dXJuIGxhc3QgKyBkZWNvZGVGbihsYXN0U2xpY2UpO1xuICAgIH1cbiAgfSwgJycpO1xuICByZXR1cm4gb3V0ICsgZW5kRm4oKTtcbn07XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHBsYXRmb3JtT2JqOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5FTkNSWVBUSU9OX09GRiA9IGV4cG9ydHMuRU5DUllQVElPTl9PTiA9IGV4cG9ydHMuYXNzZXJ0U3RyaW5nID0gZXhwb3J0cy5pc0VtcHR5T2JqZWN0T3JOdWxsID0gdW5kZWZpbmVkO1xuXG52YXIgX3N0cmluZ2lmeSA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2NvcmUtanMvanNvbi9zdHJpbmdpZnlcIik7XG5cbnZhciBfc3RyaW5naWZ5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0cmluZ2lmeSk7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBFTkNSWVBUSU9OX09OID0gXCJFTkNSWVBUSU9OX09OXCI7XG52YXIgRU5DUllQVElPTl9PRkYgPSBcIkVOQ1JZUFRJT05fT0ZGXCI7XG5cbmZ1bmN0aW9uIGlzRW1wdHlPYmplY3RPck51bGwob2JqKSB7XG4gIGlmIChpc051bGwob2JqKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFpc09iamVjdChvYmopKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChvYmopIHtcbiAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkob2JqKTtcbiAgcmV0dXJuIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgdHlwZSA9PT0gJ29iamVjdCcgJiYgQm9vbGVhbihvYmopO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRTdHJpbmcob2JqLCBvYmpOYW1lKSB7XG4gIGlmICghaXNTdHJpbmcob2JqKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3Iob2JqTmFtZSArICcgZXhwZWN0ZWQgdG8gYmUgc3RyaW5nIGJ1dCB3YXM6ICcgKyAoMCwgX3N0cmluZ2lmeTIuZGVmYXVsdCkob2JqKSk7XG4gIH1cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcoc3RyKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3RyKSA9PT0gJ1tvYmplY3QgU3RyaW5nXSc7XG59XG5cbmV4cG9ydHMuaXNFbXB0eU9iamVjdE9yTnVsbCA9IGlzRW1wdHlPYmplY3RPck51bGw7XG5leHBvcnRzLmFzc2VydFN0cmluZyA9IGFzc2VydFN0cmluZztcbmV4cG9ydHMuRU5DUllQVElPTl9PTiA9IEVOQ1JZUFRJT05fT047XG5leHBvcnRzLkVOQ1JZUFRJT05fT0ZGID0gRU5DUllQVElPTl9PRkY7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZShcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVja1wiKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoXCIuL2Vycm9yXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpZWxkTG9va3VwKGtleXMpIHtcbiAgdmFyIGxvb2t1cCA9IHt9O1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGlkeCkge1xuICAgIGxvb2t1cFtuYW1lXSA9IGlkeDtcbiAgfSk7XG4gIHJldHVybiBsb29rdXA7XG59XG5cbi8qKlxuICogUmVjb3JkcyBtYWtlIHVwIHRoZSBjb250ZW50cyBvZiB0aGUge0BsaW5rIFJlc3VsdH0sIGFuZCBpcyBob3cgeW91IGFjY2Vzc1xuICogdGhlIG91dHB1dCBvZiBhIHN0YXRlbWVudC4gQSBzaW1wbGUgc3RhdGVtZW50IG1pZ2h0IHlpZWxkIGEgcmVzdWx0IHN0cmVhbVxuICogd2l0aCBhIHNpbmdsZSByZWNvcmQsIGZvciBpbnN0YW5jZTpcbiAqXG4gKiAgICAgTUFUQ0ggKHU6VXNlcikgUkVUVVJOIHUubmFtZSwgdS5hZ2VcbiAqXG4gKiBUaGlzIHJldHVybnMgYSBzdHJlYW0gb2YgcmVjb3JkcyB3aXRoIHR3byBmaWVsZHMsIG5hbWVkIGB1Lm5hbWVgIGFuZCBgdS5hZ2VgLFxuICogZWFjaCByZWNvcmQgcmVwcmVzZW50cyBvbmUgdXNlciBmb3VuZCBieSB0aGUgc3RhdGVtZW50IGFib3ZlLiBZb3UgY2FuIGFjY2Vzc1xuICogdGhlIHZhbHVlcyBvZiBlYWNoIGZpZWxkIGVpdGhlciBieSBuYW1lOlxuICpcbiAqICAgICByZWNvcmQuZ2V0KFwidS5uYW1lXCIpXG4gKlxuICogT3IgYnkgaXQncyBwb3NpdGlvbjpcbiAqXG4gKiAgICAgcmVjb3JkLmdldCgwKVxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUmVjb3JkID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJlY29yZCBvYmplY3QuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGtleXMgQW4gYXJyYXkgb2YgZmllbGQga2V5cywgaW4gdGhlIG9yZGVyIHRoZSBmaWVsZHMgYXBwZWFyXG4gICAqICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSByZWNvcmRcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpZWxkcyBBbiBhcnJheSBvZiBmaWVsZCB2YWx1ZXNcbiAgICogQHBhcmFtIHtPYmplY3R9IGZpZWxkTG9va3VwIEFuIG9iamVjdCBvZiBmaWVsZE5hbWUgLT4gdmFsdWUgaW5kZXgsIHVzZWQgdG8gbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkIG5hbWVzIHRvIHZhbHVlcy4gSWYgdGhpcyBpcyBudWxsLCBvbmUgd2lsbCBiZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQuXG4gICAqL1xuICBmdW5jdGlvbiBSZWNvcmQoa2V5cywgZmllbGRzKSB7XG4gICAgdmFyIGZpZWxkTG9va3VwID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBudWxsO1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFJlY29yZCk7XG5cbiAgICB0aGlzLmtleXMgPSBrZXlzO1xuICAgIHRoaXMubGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdGhpcy5fZmllbGRzID0gZmllbGRzO1xuICAgIHRoaXMuX2ZpZWxkTG9va3VwID0gZmllbGRMb29rdXAgfHwgZ2VuZXJhdGVGaWVsZExvb2t1cChrZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIGZvciBlYWNoIGZpZWxkIGluIHRoaXMgcmVjb3JkLiBUaGUgZnVuY3Rpb25cbiAgICogd2lsbCBnZXQgdGhyZWUgYXJndW1lbnRzIC0gdGhlIHZhbHVlLCB0aGUga2V5IGFuZCB0aGlzIHJlY29yZCwgaW4gdGhhdFxuICAgKiBvcmRlci5cbiAgICpcbiAgICogQHBhcmFtIHZpc2l0b3JcbiAgICovXG5cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShSZWNvcmQsIFt7XG4gICAga2V5OiBcImZvckVhY2hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yRWFjaCh2aXNpdG9yKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMua2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2aXNpdG9yKHRoaXMuX2ZpZWxkc1tpXSwgdGhpcy5rZXlzW2ldLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYW4gb2JqZWN0IG91dCBvZiB0aGUgY3VycmVudCBSZWNvcmRcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ0b09iamVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b09iamVjdCgpIHtcbiAgICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGEgdmFsdWUgZnJvbSB0aGlzIHJlY29yZCwgZWl0aGVyIGJ5IGluZGV4IG9yIGJ5IGZpZWxkIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfE51bWJlcn0ga2V5IEZpZWxkIGtleSwgb3IgdGhlIGluZGV4IG9mIHRoZSBmaWVsZC5cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImdldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgICB2YXIgaW5kZXggPSB2b2lkIDA7XG4gICAgICBpZiAoISh0eXBlb2Yga2V5ID09PSBcIm51bWJlclwiKSkge1xuICAgICAgICBpbmRleCA9IHRoaXMuX2ZpZWxkTG9va3VwW2tleV07XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBrZXkgJ1wiICsga2V5ICsgXCInLCBhdmFpbGFibGUga2V5IGFyZTogW1wiICsgdGhpcy5rZXlzICsgXCJdLlwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZXggPSBrZXk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmRleCA+IHRoaXMuX2ZpZWxkcy5sZW5ndGggLSAxIHx8IGluZGV4IDwgMCkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKShcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGluZGV4ICdcIiArIGluZGV4ICsgXCInLiBSZW1lbWJlciB0aGF0IGluZGV4ZXMgc3RhcnQgYXQgYDBgLCBcIiArIFwiYW5kIG1ha2Ugc3VyZSB5b3VyIHN0YXRlbWVudCByZXR1cm5zIHJlY29yZHMgaW4gdGhlIHNoYXBlIHlvdSBtZWFudCBpdCB0by5cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHNbaW5kZXhdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGEgdmFsdWUgZnJvbSB0aGlzIHJlY29yZCwgZWl0aGVyIGJ5IGluZGV4IG9yIGJ5IGZpZWxkIGtleSwgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd8TnVtYmVyfSBrZXkgRmllbGQga2V5LCBvciB0aGUgaW5kZXggb2YgdGhlIGZpZWxkLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgIC8vIGlmIGtleSBpcyBhIG51bWJlciwgd2UgY2hlY2sgaWYgaXQgaXMgaW4gdGhlIF9maWVsZHMgYXJyYXlcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIHJldHVybiBrZXkgPj0gMCAmJiBrZXkgPCB0aGlzLl9maWVsZHMubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBpdCdzIG5vdCBhIG51bWJlciwgd2UgY2hlY2sgX2ZpZWxkTG9va3VwIGRpY3Rpb25hcnkgZGlyZWN0bHlcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZExvb2t1cFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSZWNvcmQ7XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFJlY29yZDsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnN0YXRlbWVudFR5cGUgPSB1bmRlZmluZWQ7XG5cbnZhciBfa2V5cyA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qva2V5cycpO1xuXG52YXIgX2tleXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfa2V5cyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX2ludGVnZXIgPSByZXF1aXJlKCcuL2ludGVnZXInKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gICogQSBSZXN1bHRTdW1tYXJ5IGluc3RhbmNlIGNvbnRhaW5zIHN0cnVjdHVyZWQgbWV0YWRhdGEgZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbnZhciBSZXN1bHRTdW1tYXJ5ID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZW1lbnQgLSBUaGUgc3RhdGVtZW50IHRoaXMgc3VtbWFyeSBpcyBmb3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtZXRhZGF0YSAtIFN0YXRlbWVudCBtZXRhZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gUmVzdWx0U3VtbWFyeShzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIG1ldGFkYXRhKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUmVzdWx0U3VtbWFyeSk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHsgdGV4dDogc3RhdGVtZW50LCBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIH07XG4gICAgdGhpcy5zdGF0ZW1lbnRUeXBlID0gbWV0YWRhdGEudHlwZTtcbiAgICB2YXIgY291bnRlcnMgPSBuZXcgU3RhdGVtZW50U3RhdGlzdGljcyhtZXRhZGF0YS5zdGF0cyB8fCB7fSk7XG4gICAgdGhpcy5jb3VudGVycyA9IGNvdW50ZXJzO1xuICAgIC8vZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCByZW1vdmUgaW4gZnV0dXJlIHZlcnNpb25cbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MgPSBjb3VudGVycztcbiAgICB0aGlzLnBsYW4gPSBtZXRhZGF0YS5wbGFuIHx8IG1ldGFkYXRhLnByb2ZpbGUgPyBuZXcgUGxhbihtZXRhZGF0YS5wbGFuIHx8IG1ldGFkYXRhLnByb2ZpbGUpIDogZmFsc2U7XG4gICAgdGhpcy5wcm9maWxlID0gbWV0YWRhdGEucHJvZmlsZSA/IG5ldyBQcm9maWxlZFBsYW4obWV0YWRhdGEucHJvZmlsZSkgOiBmYWxzZTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLl9idWlsZE5vdGlmaWNhdGlvbnMobWV0YWRhdGEubm90aWZpY2F0aW9ucyk7XG4gICAgdGhpcy5zZXJ2ZXIgPSBuZXcgU2VydmVySW5mbyhtZXRhZGF0YS5zZXJ2ZXIpO1xuICAgIHRoaXMucmVzdWx0Q29uc3VtZWRBZnRlciA9IG1ldGFkYXRhLnJlc3VsdF9jb25zdW1lZF9hZnRlcjtcbiAgICB0aGlzLnJlc3VsdEF2YWlsYWJsZUFmdGVyID0gbWV0YWRhdGEucmVzdWx0X2F2YWlsYWJsZV9hZnRlcjtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFJlc3VsdFN1bW1hcnksIFt7XG4gICAga2V5OiAnX2J1aWxkTm90aWZpY2F0aW9ucycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9idWlsZE5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9ucykge1xuICAgICAgaWYgKCFub3RpZmljYXRpb25zKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub3RpZmljYXRpb25zLm1hcChmdW5jdGlvbiAobikge1xuICAgICAgICByZXR1cm4gbmV3IE5vdGlmaWNhdGlvbihuKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSByZXN1bHQgc3VtbWFyeSBoYXMgYSBwbGFuXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn1cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaGFzUGxhbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc1BsYW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGFuIGluc3RhbmNlb2YgUGxhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcHJvZmlsZVxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2hhc1Byb2ZpbGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNQcm9maWxlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZSBpbnN0YW5jZW9mIFByb2ZpbGVkUGxhbjtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFJlc3VsdFN1bW1hcnk7XG59KCk7XG5cbi8qKlxuICAqIENsYXNzIGZvciBleGVjdXRpb24gcGxhbiByZWNlaXZlZCBieSBwcmVwZW5kaW5nIEN5cGhlciB3aXRoIEVYUExBSU4uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUGxhbiA9XG4vKipcbiAqIENyZWF0ZSBhIFBsYW4gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHBsYW4gLSBPYmplY3Qgd2l0aCBwbGFuIGRhdGFcbiAqL1xuZnVuY3Rpb24gUGxhbihwbGFuKSB7XG4gICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFBsYW4pO1xuXG4gIHRoaXMub3BlcmF0b3JUeXBlID0gcGxhbi5vcGVyYXRvclR5cGU7XG4gIHRoaXMuaWRlbnRpZmllcnMgPSBwbGFuLmlkZW50aWZpZXJzO1xuICB0aGlzLmFyZ3VtZW50cyA9IHBsYW4uYXJncztcbiAgdGhpcy5jaGlsZHJlbiA9IHBsYW4uY2hpbGRyZW4gPyBwbGFuLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gbmV3IFBsYW4oY2hpbGQpO1xuICB9KSA6IFtdO1xufTtcblxuLyoqXG4gICogQ2xhc3MgZm9yIGV4ZWN1dGlvbiBwbGFuIHJlY2VpdmVkIGJ5IHByZXBlbmRpbmcgQ3lwaGVyIHdpdGggUFJPRklMRS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG5cbnZhciBQcm9maWxlZFBsYW4gPVxuLyoqXG4gKiBDcmVhdGUgYSBQcm9maWxlZFBsYW4gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHByb2ZpbGUgLSBPYmplY3Qgd2l0aCBwcm9maWxlIGRhdGFcbiAqL1xuZnVuY3Rpb24gUHJvZmlsZWRQbGFuKHByb2ZpbGUpIHtcbiAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUHJvZmlsZWRQbGFuKTtcblxuICB0aGlzLm9wZXJhdG9yVHlwZSA9IHByb2ZpbGUub3BlcmF0b3JUeXBlO1xuICB0aGlzLmlkZW50aWZpZXJzID0gcHJvZmlsZS5pZGVudGlmaWVycztcbiAgdGhpcy5hcmd1bWVudHMgPSBwcm9maWxlLmFyZ3M7XG4gIHRoaXMuZGJIaXRzID0gcHJvZmlsZS5hcmdzLkRiSGl0cy50b0ludCgpO1xuICB0aGlzLnJvd3MgPSBwcm9maWxlLmFyZ3MuUm93cy50b0ludCgpO1xuICB0aGlzLmNoaWxkcmVuID0gcHJvZmlsZS5jaGlsZHJlbiA/IHByb2ZpbGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBuZXcgUHJvZmlsZWRQbGFuKGNoaWxkKTtcbiAgfSkgOiBbXTtcbn07XG5cbi8qKlxuICAqIEdldCBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBmb3IgYSB7UmVzdWx0fS5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG5cbnZhciBTdGF0ZW1lbnRTdGF0aXN0aWNzID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogU3RydWN0dXJpemUgdGhlIHN0YXRpc3RpY3NcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aXN0aWNzIC0gUmVzdWx0IHN0YXRpc3RpY3NcbiAgICovXG4gIGZ1bmN0aW9uIFN0YXRlbWVudFN0YXRpc3RpY3Moc3RhdGlzdGljcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAoMCwgX2NsYXNzQ2FsbENoZWNrMy5kZWZhdWx0KSh0aGlzLCBTdGF0ZW1lbnRTdGF0aXN0aWNzKTtcblxuICAgIHRoaXMuX3N0YXRzID0ge1xuICAgICAgbm9kZXNDcmVhdGVkOiAwLFxuICAgICAgbm9kZXNEZWxldGVkOiAwLFxuICAgICAgcmVsYXRpb25zaGlwc0NyZWF0ZWQ6IDAsXG4gICAgICByZWxhdGlvbnNoaXBzRGVsZXRlZDogMCxcbiAgICAgIHByb3BlcnRpZXNTZXQ6IDAsXG4gICAgICBsYWJlbHNBZGRlZDogMCxcbiAgICAgIGxhYmVsc1JlbW92ZWQ6IDAsXG4gICAgICBpbmRleGVzQWRkZWQ6IDAsXG4gICAgICBpbmRleGVzUmVtb3ZlZDogMCxcbiAgICAgIGNvbnN0cmFpbnRzQWRkZWQ6IDAsXG4gICAgICBjb25zdHJhaW50c1JlbW92ZWQ6IDBcbiAgICB9O1xuICAgICgwLCBfa2V5czIuZGVmYXVsdCkoc3RhdGlzdGljcykuZm9yRWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgIC8vVG8gY2FtZWxDYXNlXG4gICAgICBfdGhpcy5fc3RhdHNbaW5kZXgucmVwbGFjZSgvKFxcLVxcdykvZywgZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgcmV0dXJuIG1bMV0udG9VcHBlckNhc2UoKTtcbiAgICAgIH0pXSA9ICgwLCBfaW50ZWdlci5pc0ludCkoc3RhdGlzdGljc1tpbmRleF0pID8gc3RhdGlzdGljc1tpbmRleF0udG9JbnQoKSA6IHN0YXRpc3RpY3NbaW5kZXhdO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERpZCB0aGUgZGF0YWJhc2UgZ2V0IHVwZGF0ZWQ/XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoU3RhdGVtZW50U3RhdGlzdGljcywgW3tcbiAgICBrZXk6ICdjb250YWluc1VwZGF0ZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb250YWluc1VwZGF0ZXMoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgcmV0dXJuICgwLCBfa2V5czIuZGVmYXVsdCkodGhpcy5fc3RhdHMpLnJlZHVjZShmdW5jdGlvbiAobGFzdCwgY3VycmVudCkge1xuICAgICAgICByZXR1cm4gbGFzdCArIF90aGlzMi5fc3RhdHNbY3VycmVudF07XG4gICAgICB9LCAwKSA+IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBub2RlcyBjcmVhdGVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdub2Rlc0NyZWF0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBub2Rlc0NyZWF0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMubm9kZXNDcmVhdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2Ygbm9kZXMgZGVsZXRlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbm9kZXNEZWxldGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbm9kZXNEZWxldGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLm5vZGVzRGVsZXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIHJlbGF0aW9uc2hpcHMgY3JlYXRlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncmVsYXRpb25zaGlwc0NyZWF0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWxhdGlvbnNoaXBzQ3JlYXRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5yZWxhdGlvbnNoaXBzQ3JlYXRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3JlbGF0aW9uc2hpcHNEZWxldGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVsYXRpb25zaGlwc0RlbGV0ZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMucmVsYXRpb25zaGlwc0RlbGV0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBwcm9wZXJ0aWVzIHNldC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncHJvcGVydGllc1NldCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHByb3BlcnRpZXNTZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdHMucHJvcGVydGllc1NldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGxhYmVscyBhZGRlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnbGFiZWxzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsYWJlbHNBZGRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNBZGRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGxhYmVscyByZW1vdmVkLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdsYWJlbHNSZW1vdmVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gbGFiZWxzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5sYWJlbHNSZW1vdmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge051bWJlcn0gLSBOdW1iZXIgb2YgaW5kZXhlcyBhZGRlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaW5kZXhlc0FkZGVkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5kZXhlc0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmluZGV4ZXNBZGRlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGluZGV4ZXMgcmVtb3ZlZC5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaW5kZXhlc1JlbW92ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbmRleGVzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5pbmRleGVzUmVtb3ZlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGNvbnRyYWludHMgYWRkZWQuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2NvbnN0cmFpbnRzQWRkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25zdHJhaW50c0FkZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRzLmNvbnN0cmFpbnRzQWRkZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBjb250cmFpbnRzIHJlbW92ZWQuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2NvbnN0cmFpbnRzUmVtb3ZlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnN0cmFpbnRzUmVtb3ZlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0cy5jb25zdHJhaW50c1JlbW92ZWQ7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBTdGF0ZW1lbnRTdGF0aXN0aWNzO1xufSgpO1xuXG4vKipcbiAgKiBDbGFzcyBmb3IgQ3lwaGVyIG5vdGlmaWNhdGlvbnNcbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG5cbnZhciBOb3RpZmljYXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBOb3RpZmljYXRpb24gaW5zdGFuY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBub3RpZmljYXRpb24gLSBPYmplY3Qgd2l0aCBub3RpZmljYXRpb24gZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIE5vdGlmaWNhdGlvbik7XG5cbiAgICB0aGlzLmNvZGUgPSBub3RpZmljYXRpb24uY29kZTtcbiAgICB0aGlzLnRpdGxlID0gbm90aWZpY2F0aW9uLnRpdGxlO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBub3RpZmljYXRpb24uZGVzY3JpcHRpb247XG4gICAgdGhpcy5zZXZlcml0eSA9IG5vdGlmaWNhdGlvbi5zZXZlcml0eTtcbiAgICB0aGlzLnBvc2l0aW9uID0gTm90aWZpY2F0aW9uLl9jb25zdHJ1Y3RQb3NpdGlvbihub3RpZmljYXRpb24ucG9zaXRpb24pO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoTm90aWZpY2F0aW9uLCBudWxsLCBbe1xuICAgIGtleTogJ19jb25zdHJ1Y3RQb3NpdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jb25zdHJ1Y3RQb3NpdGlvbihwb3MpIHtcbiAgICAgIGlmICghcG9zKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9mZnNldDogcG9zLm9mZnNldC50b0ludCgpLFxuICAgICAgICBsaW5lOiBwb3MubGluZS50b0ludCgpLFxuICAgICAgICBjb2x1bW46IHBvcy5jb2x1bW4udG9JbnQoKVxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIE5vdGlmaWNhdGlvbjtcbn0oKTtcblxuLyoqXG4gICogQ2xhc3MgZm9yIGV4cG9zaW5nIHNlcnZlciBpbmZvIGZyb20gYSByZXN1bHQuXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxuXG52YXIgU2VydmVySW5mbyA9XG4vKipcbiAqIENyZWF0ZSBhIFNlcnZlckluZm8gaW5zdGFuY2VcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IHNlcnZlck1ldGEgLSBPYmplY3Qgd2l0aCBzZXJ2ZXJNZXRhIGRhdGFcbiAqL1xuZnVuY3Rpb24gU2VydmVySW5mbyhzZXJ2ZXJNZXRhKSB7XG4gICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFNlcnZlckluZm8pO1xuXG4gIGlmIChzZXJ2ZXJNZXRhKSB7XG4gICAgdGhpcy5hZGRyZXNzID0gc2VydmVyTWV0YS5hZGRyZXNzO1xuICAgIHRoaXMudmVyc2lvbiA9IHNlcnZlck1ldGEudmVyc2lvbjtcbiAgfVxufTtcblxudmFyIHN0YXRlbWVudFR5cGUgPSB7XG4gIFJFQURfT05MWTogJ3InLFxuICBSRUFEX1dSSVRFOiAncncnLFxuICBXUklURV9PTkxZOiAndycsXG4gIFNDSEVNQV9XUklURTogJ3MnXG59O1xuXG5leHBvcnRzLnN0YXRlbWVudFR5cGUgPSBzdGF0ZW1lbnRUeXBlO1xuZXhwb3J0cy5kZWZhdWx0ID0gUmVzdWx0U3VtbWFyeTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcHJvbWlzZSA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlJyk7XG5cbnZhciBfcHJvbWlzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9taXNlKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfcmVzdWx0U3VtbWFyeSA9IHJlcXVpcmUoJy4vcmVzdWx0LXN1bW1hcnknKTtcblxudmFyIF9yZXN1bHRTdW1tYXJ5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Jlc3VsdFN1bW1hcnkpO1xuXG52YXIgX2Nvbm5lY3Rpb25Ib2xkZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL2Nvbm5lY3Rpb24taG9sZGVyJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICAqIEEgc3RyZWFtIG9mIHtAbGluayBSZWNvcmR9IHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIGEgc3RhdGVtZW50LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFJlc3VsdCA9IGZ1bmN0aW9uICgpIHtcbiAgLyoqXG4gICAqIEluamVjdCB0aGUgb2JzZXJ2ZXIgdG8gYmUgdXNlZC5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBzdHJlYW1PYnNlcnZlclxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIG1ldGFTdXBwbGllciBmdW5jdGlvbiwgd2hlbiBjYWxsZWQgcHJvdmlkZXMgbWV0YWRhdGFcbiAgICogQHBhcmFtIHtDb25uZWN0aW9uSG9sZGVyfSBjb25uZWN0aW9uSG9sZGVyIC0gdG8gYmUgbm90aWZpZWQgd2hlbiByZXN1bHQgaXMgZWl0aGVyIGZ1bGx5IGNvbnN1bWVkIG9yIGVycm9yIGhhcHBlbmVkLlxuICAgKi9cbiAgZnVuY3Rpb24gUmVzdWx0KHN0cmVhbU9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIG1ldGFTdXBwbGllciwgY29ubmVjdGlvbkhvbGRlcikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFJlc3VsdCk7XG5cbiAgICB0aGlzLl9zdHJlYW1PYnNlcnZlciA9IHN0cmVhbU9ic2VydmVyO1xuICAgIHRoaXMuX3AgPSBudWxsO1xuICAgIHRoaXMuX3N0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcbiAgICB0aGlzLl9tZXRhU3VwcGxpZXIgPSBtZXRhU3VwcGxpZXIgfHwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH07XG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlciA9IGNvbm5lY3Rpb25Ib2xkZXIgfHwgX2Nvbm5lY3Rpb25Ib2xkZXIuRU1QVFlfQ09OTkVDVElPTl9IT0xERVI7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuZCByZXR1cm4gbmV3IFByb21pc2VcbiAgICogQHJldHVybiB7UHJvbWlzZX0gbmV3IFByb21pc2UuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFJlc3VsdCwgW3tcbiAgICBrZXk6ICdfY3JlYXRlUHJvbWlzZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVQcm9taXNlKCkge1xuICAgICAgaWYgKHRoaXMuX3ApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdGhpcy5fcCA9IG5ldyBfcHJvbWlzZTIuZGVmYXVsdChmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciByZWNvcmRzID0gW107XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHtcbiAgICAgICAgICBvbk5leHQ6IGZ1bmN0aW9uIG9uTmV4dChyZWNvcmQpIHtcbiAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZWQ6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKHN1bW1hcnkpIHtcbiAgICAgICAgICAgIHJlc29sdmUoeyByZWNvcmRzOiByZWNvcmRzLCBzdW1tYXJ5OiBzdW1tYXJ5IH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHNlbGYuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdhaXRzIGZvciBhbGwgcmVzdWx0cyBhbmQgY2FsbHMgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aXRoIHRoZSByZXN1bHRzLlxuICAgICAqIENhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHRoZSB7QGxpbmsgI3N1YnNjcmliZX0gZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlc3VsdDoge3JlY29yZHM6QXJyYXk8UmVjb3JkPn0pfSBvbkZ1bGZpbGxlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGZpbmlzaGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICd0aGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3AudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2F0Y2ggZXJyb3JzIHdoZW4gdXNpbmcgcHJvbWlzZXMuXG4gICAgICogQ2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgc3Vic2NyaWJlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBwcm9taXNlLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdjYXRjaCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jYXRjaChvblJlamVjdGVkKSB7XG4gICAgICB0aGlzLl9jcmVhdGVQcm9taXNlKCk7XG4gICAgICByZXR1cm4gdGhpcy5fcC5jYXRjaChvblJlamVjdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gcmVjb3JkcyB0byBvYnNlcnZlciBhcyB0aGV5IGNvbWUgaW4sIHRoaXMgaXMgYSBtb3JlIGVmZmljaWVudCBtZXRob2RcbiAgICAgKiBvZiBoYW5kbGluZyB0aGUgcmVzdWx0cywgYW5kIGFsbG93cyB5b3UgdG8gaGFuZGxlIGFyYml0cmFyaWx5IGxhcmdlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JzZXJ2ZXIgLSBPYnNlcnZlciBvYmplY3RcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlY29yZDogUmVjb3JkKX0gb2JzZXJ2ZXIub25OZXh0IC0gSGFuZGxlIHJlY29yZHMsIG9uZSBieSBvbmUuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihtZXRhZGF0YTogT2JqZWN0KX0gb2JzZXJ2ZXIub25Db21wbGV0ZWQgLSBIYW5kbGUgc3RyZWFtIHRhaWwsIHRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiB7bWVzc2FnZTpzdHJpbmcsIGNvZGU6c3RyaW5nfSl9IG9ic2VydmVyLm9uRXJyb3IgLSBIYW5kbGUgZXJyb3JzLlxuICAgICAqIEByZXR1cm5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnc3Vic2NyaWJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgb25Db21wbGV0ZWRPcmlnaW5hbCA9IG9ic2VydmVyLm9uQ29tcGxldGVkO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgdmFyIG9uQ29tcGxldGVkV3JhcHBlciA9IGZ1bmN0aW9uIG9uQ29tcGxldGVkV3JhcHBlcihtZXRhZGF0YSkge1xuXG4gICAgICAgIHZhciBhZGRpdGlvbmFsTWV0YSA9IHNlbGYuX21ldGFTdXBwbGllcigpO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gYWRkaXRpb25hbE1ldGEpIHtcbiAgICAgICAgICBpZiAoYWRkaXRpb25hbE1ldGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgbWV0YWRhdGFba2V5XSA9IGFkZGl0aW9uYWxNZXRhW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBzdW0gPSBuZXcgX3Jlc3VsdFN1bW1hcnkyLmRlZmF1bHQoX3RoaXMuX3N0YXRlbWVudCwgX3RoaXMuX3BhcmFtZXRlcnMsIG1ldGFkYXRhKTtcblxuICAgICAgICAvLyBub3RpZnkgY29ubmVjdGlvbiBob2xkZXIgdGhhdCB0aGUgdXNlZCBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW55IG1vcmUgYmVjYXVzZSByZXN1bHQgaGFzXG4gICAgICAgIC8vIGJlZW4gZnVsbHkgY29uc3VtZWQ7IGNhbGwgdGhlIG9yaWdpbmFsIG9uQ29tcGxldGVkIGNhbGxiYWNrIGFmdGVyIHRoYXRcbiAgICAgICAgc2VsZi5fY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIG9uQ29tcGxldGVkT3JpZ2luYWwuY2FsbChvYnNlcnZlciwgc3VtKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQgPSBvbkNvbXBsZXRlZFdyYXBwZXI7XG5cbiAgICAgIHZhciBvbkVycm9yT3JpZ2luYWwgPSBvYnNlcnZlci5vbkVycm9yIHx8IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlVuY2F1Z2h0IGVycm9yIHdoZW4gcHJvY2Vzc2luZyByZXN1bHQ6IFwiICsgZXJyb3IpO1xuICAgICAgfTtcblxuICAgICAgdmFyIG9uRXJyb3JXcmFwcGVyID0gZnVuY3Rpb24gb25FcnJvcldyYXBwZXIoZXJyb3IpIHtcbiAgICAgICAgLy8gbm90aWZ5IGNvbm5lY3Rpb24gaG9sZGVyIHRoYXQgdGhlIHVzZWQgY29ubmVjdGlvbiBpcyBub3QgbmVlZGVkIGFueSBtb3JlIGJlY2F1c2UgZXJyb3IgaGFwcGVuZWRcbiAgICAgICAgLy8gYW5kIHJlc3VsdCBjYW4ndCBiZWUgY29uc3VtZWQgYW55IGZ1cnRoZXI7IGNhbGwgdGhlIG9yaWdpbmFsIG9uRXJyb3IgY2FsbGJhY2sgYWZ0ZXIgdGhhdFxuICAgICAgICBzZWxmLl9jb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgb25FcnJvck9yaWdpbmFsLmNhbGwob2JzZXJ2ZXIsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgb2JzZXJ2ZXIub25FcnJvciA9IG9uRXJyb3JXcmFwcGVyO1xuXG4gICAgICB0aGlzLl9zdHJlYW1PYnNlcnZlci5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUmVzdWx0O1xufSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBSZXN1bHQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJyk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjaycpO1xuXG52YXIgX2NsYXNzQ2FsbENoZWNrMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzQ2FsbENoZWNrMik7XG5cbnZhciBfY3JlYXRlQ2xhc3MyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzJyk7XG5cbnZhciBfY3JlYXRlQ2xhc3MzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlQ2xhc3MyKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJyk7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMik7XG5cbnZhciBfaW5oZXJpdHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5cbnZhciBfaW5oZXJpdHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5oZXJpdHMyKTtcblxudmFyIF9zZXNzaW9uID0gcmVxdWlyZSgnLi9zZXNzaW9uJyk7XG5cbnZhciBfc2Vzc2lvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXNzaW9uKTtcblxudmFyIF9kcml2ZXIgPSByZXF1aXJlKCcuL2RyaXZlcicpO1xuXG52YXIgX2Vycm9yID0gcmVxdWlyZSgnLi9lcnJvcicpO1xuXG52YXIgX2Nvbm5lY3Rpb25Qcm92aWRlcnMgPSByZXF1aXJlKCcuL2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbi8qKlxuICogQSBkcml2ZXIgdGhhdCBzdXBwb3J0cyByb3V0aW5nIGluIGEgY29yZS1lZGdlIGNsdXN0ZXIuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG52YXIgUm91dGluZ0RyaXZlciA9IGZ1bmN0aW9uIChfRHJpdmVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKFJvdXRpbmdEcml2ZXIsIF9Ecml2ZXIpO1xuXG4gIGZ1bmN0aW9uIFJvdXRpbmdEcml2ZXIodXJsLCB1c2VyQWdlbnQpIHtcbiAgICB2YXIgdG9rZW4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHt9O1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFJvdXRpbmdEcml2ZXIpO1xuICAgIHJldHVybiAoMCwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4zLmRlZmF1bHQpKHRoaXMsIChSb3V0aW5nRHJpdmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShSb3V0aW5nRHJpdmVyKSkuY2FsbCh0aGlzLCB1cmwsIHVzZXJBZ2VudCwgdG9rZW4sIFJvdXRpbmdEcml2ZXIuX3ZhbGlkYXRlQ29uZmlnKGNvbmZpZykpKTtcbiAgfVxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFJvdXRpbmdEcml2ZXIsIFt7XG4gICAga2V5OiAnX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgICAgcmV0dXJuIG5ldyBfY29ubmVjdGlvblByb3ZpZGVycy5Mb2FkQmFsYW5jZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2NyZWF0ZVNlc3Npb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY3JlYXRlU2Vzc2lvbihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IFJvdXRpbmdTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZywgZnVuY3Rpb24gKGVycm9yLCBjb25uKSB7XG4gICAgICAgIGlmIChlcnJvci5jb2RlID09PSBfZXJyb3IuU0VSVklDRV9VTkFWQUlMQUJMRSB8fCBlcnJvci5jb2RlID09PSBfZXJyb3IuU0VTU0lPTl9FWFBJUkVEKSB7XG4gICAgICAgICAgLy8gY29ubmVjdGlvbiBpcyB1bmRlZmluZWQgaWYgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGNvbm5lY3Rpb24gd2FzIGFjcXVpcmVkXG4gICAgICAgICAgaWYgKGNvbm4pIHtcbiAgICAgICAgICAgIF90aGlzMi5fY29ubmVjdGlvblByb3ZpZGVyLmZvcmdldChjb25uLnVybCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5jb2RlID09PSAnTmVvLkNsaWVudEVycm9yLkNsdXN0ZXIuTm90QUxlYWRlcicpIHtcbiAgICAgICAgICB2YXIgdXJsID0gJ1VOS05PV04nO1xuICAgICAgICAgIC8vIGNvbm5lY3Rpb24gaXMgdW5kZWZpbmVkIGlmIGVycm9yIGhhcHBlbmVkIGJlZm9yZSBjb25uZWN0aW9uIHdhcyBhY3F1aXJlZFxuICAgICAgICAgIGlmIChjb25uKSB7XG4gICAgICAgICAgICB1cmwgPSBjb25uLnVybDtcbiAgICAgICAgICAgIF90aGlzMi5fY29ubmVjdGlvblByb3ZpZGVyLmZvcmdldFdyaXRlcihjb25uLnVybCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnTm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHdyaXRlIHRvIHNlcnZlciBhdCAnICsgdXJsLCBfZXJyb3IuU0VTU0lPTl9FWFBJUkVEKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiAnX3ZhbGlkYXRlQ29uZmlnJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3ZhbGlkYXRlQ29uZmlnKGNvbmZpZykge1xuICAgICAgaWYgKGNvbmZpZy50cnVzdCA9PT0gJ1RSVVNUX09OX0ZJUlNUX1VTRScpIHtcbiAgICAgICAgdGhyb3cgKDAsIF9lcnJvci5uZXdFcnJvcikoJ1RoZSBjaG9zZW4gdHJ1c3QgbW9kZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGEgcm91dGluZyBkcml2ZXInKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBSb3V0aW5nRHJpdmVyO1xufShfZHJpdmVyLkRyaXZlcik7XG5cbnZhciBSb3V0aW5nU2Vzc2lvbiA9IGZ1bmN0aW9uIChfU2Vzc2lvbikge1xuICAoMCwgX2luaGVyaXRzMy5kZWZhdWx0KShSb3V0aW5nU2Vzc2lvbiwgX1Nlc3Npb24pO1xuXG4gIGZ1bmN0aW9uIFJvdXRpbmdTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZywgb25GYWlsZWRDb25uZWN0aW9uKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgUm91dGluZ1Nlc3Npb24pO1xuXG4gICAgdmFyIF90aGlzMyA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKFJvdXRpbmdTZXNzaW9uLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShSb3V0aW5nU2Vzc2lvbikpLmNhbGwodGhpcywgbW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnKSk7XG5cbiAgICBfdGhpczMuX29uRmFpbGVkQ29ubmVjdGlvbiA9IG9uRmFpbGVkQ29ubmVjdGlvbjtcbiAgICByZXR1cm4gX3RoaXMzO1xuICB9XG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoUm91dGluZ1Nlc3Npb24sIFt7XG4gICAga2V5OiAnX29uUnVuRmFpbHVyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9vblJ1bkZhaWx1cmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fb25GYWlsZWRDb25uZWN0aW9uO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gUm91dGluZ1Nlc3Npb247XG59KF9zZXNzaW9uMi5kZWZhdWx0KTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gUm91dGluZ0RyaXZlcjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24nKTtcblxudmFyIF9hc3NpZ24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzaWduKTtcblxudmFyIF9nZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZicpO1xuXG52YXIgX2dldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldFByb3RvdHlwZU9mKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuJyk7XG5cbnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMik7XG5cbnZhciBfZ2V0MiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9nZXQnKTtcblxudmFyIF9nZXQzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0Mik7XG5cbnZhciBfaW5oZXJpdHMyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2luaGVyaXRzJyk7XG5cbnZhciBfaW5oZXJpdHMzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW5oZXJpdHMyKTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZicpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2snKTtcblxudmFyIF9jbGFzc0NhbGxDaGVjazMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc0NhbGxDaGVjazIpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcycpO1xuXG52YXIgX2NyZWF0ZUNsYXNzMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUNsYXNzMik7XG5cbnZhciBfc3RyZWFtT2JzZXJ2ZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcicpO1xuXG52YXIgX3N0cmVhbU9ic2VydmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0cmVhbU9ic2VydmVyKTtcblxudmFyIF9yZXN1bHQgPSByZXF1aXJlKCcuL3Jlc3VsdCcpO1xuXG52YXIgX3Jlc3VsdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZXN1bHQpO1xuXG52YXIgX3RyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi90cmFuc2FjdGlvbicpO1xuXG52YXIgX3RyYW5zYWN0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RyYW5zYWN0aW9uKTtcblxudmFyIF9lcnJvciA9IHJlcXVpcmUoJy4vZXJyb3InKTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC91dGlsJyk7XG5cbnZhciBfY29ubmVjdGlvbkhvbGRlciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXInKTtcblxudmFyIF9jb25uZWN0aW9uSG9sZGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nvbm5lY3Rpb25Ib2xkZXIpO1xuXG52YXIgX2RyaXZlciA9IHJlcXVpcmUoJy4vZHJpdmVyJyk7XG5cbnZhciBfZHJpdmVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RyaXZlcik7XG5cbnZhciBfdHJhbnNhY3Rpb25FeGVjdXRvciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvdHJhbnNhY3Rpb24tZXhlY3V0b3InKTtcblxudmFyIF90cmFuc2FjdGlvbkV4ZWN1dG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RyYW5zYWN0aW9uRXhlY3V0b3IpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAgKiBBIFNlc3Npb24gaW5zdGFuY2UgaXMgdXNlZCBmb3IgaGFuZGxpbmcgdGhlIGNvbm5lY3Rpb24gYW5kXG4gICogc2VuZGluZyBzdGF0ZW1lbnRzIHRocm91Z2ggdGhlIGNvbm5lY3Rpb24uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgU2Vzc2lvbiA9IGZ1bmN0aW9uICgpIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIHRoZSBkZWZhdWx0IGFjY2VzcyBtb2RlIGZvciB0aGlzIHNlc3Npb24uXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvblByb3ZpZGVyfSBjb25uZWN0aW9uUHJvdmlkZXIgLSB0aGUgY29ubmVjdGlvbiBwcm92aWRlciB0byBhY3F1aXJlIGNvbm5lY3Rpb25zIGZyb20uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYm9va21hcms9dW5kZWZpbmVkXSAtIHRoZSBpbml0aWFsIGJvb2ttYXJrIGZvciB0aGlzIHNlc3Npb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbY29uZmlnPXt9XSAtIHRoaXMgZHJpdmVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBmdW5jdGlvbiBTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZykge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIFNlc3Npb24pO1xuXG4gICAgdGhpcy5fbW9kZSA9IG1vZGU7XG4gICAgdGhpcy5fcmVhZENvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgX2Nvbm5lY3Rpb25Ib2xkZXIyLmRlZmF1bHQoX2RyaXZlci5SRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuICAgIHRoaXMuX3dyaXRlQ29ubmVjdGlvbkhvbGRlciA9IG5ldyBfY29ubmVjdGlvbkhvbGRlcjIuZGVmYXVsdChfZHJpdmVyLldSSVRFLCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX2hhc1R4ID0gZmFsc2U7XG4gICAgdGhpcy5fbGFzdEJvb2ttYXJrID0gYm9va21hcms7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb25FeGVjdXRvciA9IF9jcmVhdGVUcmFuc2FjdGlvbkV4ZWN1dG9yKGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbWVudCBhbmQgcGFyYW1ldGVycyBhcyBzZXBhcmF0ZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IC0gTmV3IFJlc3VsdFxuICAgKi9cblxuXG4gICgwLCBfY3JlYXRlQ2xhc3MzLmRlZmF1bHQpKFNlc3Npb24sIFt7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCkge1xuICAgICAgdmFyIHBhcmFtZXRlcnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICBpZiAoKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3RhdGVtZW50KSkgPT09ICdvYmplY3QnICYmIHN0YXRlbWVudC50ZXh0KSB7XG4gICAgICAgIHBhcmFtZXRlcnMgPSBzdGF0ZW1lbnQucGFyYW1ldGVycyB8fCB7fTtcbiAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnRleHQ7XG4gICAgICB9XG4gICAgICAoMCwgX3V0aWwuYXNzZXJ0U3RyaW5nKShzdGF0ZW1lbnQsIFwiQ3lwaGVyIHN0YXRlbWVudFwiKTtcblxuICAgICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9SdW5PYnNlcnZlcih0aGlzLl9vblJ1bkZhaWx1cmUoKSk7XG4gICAgICB2YXIgY29ubmVjdGlvbkhvbGRlciA9IHRoaXMuX2Nvbm5lY3Rpb25Ib2xkZXJXaXRoTW9kZSh0aGlzLl9tb2RlKTtcbiAgICAgIGlmICghdGhpcy5faGFzVHgpIHtcbiAgICAgICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgICAgICBjb25uZWN0aW9uSG9sZGVyLmdldENvbm5lY3Rpb24oKS50aGVuKGZ1bmN0aW9uIChjb25uZWN0aW9uKSB7XG4gICAgICAgICAgc3RyZWFtT2JzZXJ2ZXIucmVzb2x2ZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7XG4gICAgICAgICAgY29ubmVjdGlvbi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgICAgY29ubmVjdGlvbi5wdWxsQWxsKHN0cmVhbU9ic2VydmVyKTtcbiAgICAgICAgICBjb25uZWN0aW9uLnN5bmMoKTtcbiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIHN0cmVhbU9ic2VydmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmVhbU9ic2VydmVyLm9uRXJyb3IoKDAsIF9lcnJvci5uZXdFcnJvcikoXCJTdGF0ZW1lbnRzIGNhbm5vdCBiZSBydW4gZGlyZWN0bHkgb24gYSBcIiArIFwic2Vzc2lvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb247IGVpdGhlciBydW4gZnJvbSB3aXRoaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBvciB1c2UgYSBkaWZmZXJlbnQgc2Vzc2lvbi5cIikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBfcmVzdWx0Mi5kZWZhdWx0KHN0cmVhbU9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmVhbU9ic2VydmVyLm1ldGEoKTtcbiAgICAgIH0sIGNvbm5lY3Rpb25Ib2xkZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJlZ2luIGEgbmV3IHRyYW5zYWN0aW9uIGluIHRoaXMgc2Vzc2lvbi4gQSBzZXNzaW9uIGNhbiBoYXZlIGF0IG1vc3Qgb25lIHRyYW5zYWN0aW9uIHJ1bm5pbmcgYXQgYSB0aW1lLCBpZiB5b3VcbiAgICAgKiB3YW50IHRvIHJ1biBtdWx0aXBsZSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucywgeW91IHNob3VsZCB1c2UgbXVsdGlwbGUgY29uY3VycmVudCBzZXNzaW9ucy5cbiAgICAgKlxuICAgICAqIFdoaWxlIGEgdHJhbnNhY3Rpb24gaXMgb3BlbiB0aGUgc2Vzc2lvbiBjYW5ub3QgYmUgdXNlZCB0byBydW4gc3RhdGVtZW50cyBvdXRzaWRlIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBib29rbWFyayAtIGEgcmVmZXJlbmNlIHRvIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uIERFUFJFQ0FURUQ6IFRoaXMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgaW5cbiAgICAgKiBmYXZvdXIgb2Yge0BsaW5rIERyaXZlciNzZXNzaW9uKHN0cmluZyl9IHRoYXQgYWNjZXB0cyBhbiBpbml0aWFsIGJvb2ttYXJrLiBTZXNzaW9uIHdpbGwgZW5zdXJlIHRoYXQgYWxsIG5lc3RlZFxuICAgICAqIHRyYW5zYWN0aW9ucyBhcmUgY2hhaW5lZCB3aXRoIGJvb2ttYXJrcyB0byBndWFyYW50ZWUgY2F1c2FsIGNvbnNpc3RlbmN5LlxuICAgICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gLSBOZXcgVHJhbnNhY3Rpb25cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnYmVnaW5UcmFuc2FjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJlZ2luVHJhbnNhY3Rpb24oYm9va21hcmspIHtcbiAgICAgIHJldHVybiB0aGlzLl9iZWdpblRyYW5zYWN0aW9uKHRoaXMuX21vZGUsIGJvb2ttYXJrKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfYmVnaW5UcmFuc2FjdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9iZWdpblRyYW5zYWN0aW9uKGFjY2Vzc01vZGUsIGJvb2ttYXJrKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoYm9va21hcmspIHtcbiAgICAgICAgKDAsIF91dGlsLmFzc2VydFN0cmluZykoYm9va21hcmssICdCb29rbWFyaycpO1xuICAgICAgICB0aGlzLl91cGRhdGVCb29rbWFyayhib29rbWFyayk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9oYXNUeCkge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnWW91IGNhbm5vdCBiZWdpbiBhIHRyYW5zYWN0aW9uIG9uIGEgc2Vzc2lvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb247ICcgKyAnZWl0aGVyIHJ1biBmcm9tIHdpdGhpbiB0aGUgdHJhbnNhY3Rpb24gb3IgdXNlIGEgZGlmZmVyZW50IHNlc3Npb24uJyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBtb2RlID0gX2RyaXZlcjIuZGVmYXVsdC5fdmFsaWRhdGVTZXNzaW9uTW9kZShhY2Nlc3NNb2RlKTtcbiAgICAgIHZhciBjb25uZWN0aW9uSG9sZGVyID0gdGhpcy5fY29ubmVjdGlvbkhvbGRlcldpdGhNb2RlKG1vZGUpO1xuICAgICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgICAgdGhpcy5faGFzVHggPSB0cnVlO1xuXG4gICAgICByZXR1cm4gbmV3IF90cmFuc2FjdGlvbjIuZGVmYXVsdChjb25uZWN0aW9uSG9sZGVyLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLl9oYXNUeCA9IGZhbHNlO1xuICAgICAgfSwgdGhpcy5fb25SdW5GYWlsdXJlKCksIHRoaXMuX2xhc3RCb29rbWFyaywgdGhpcy5fdXBkYXRlQm9va21hcmsuYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIHRoZSBib29rbWFyayByZWNlaXZlZCBmb2xsb3dpbmcgdGhlIGxhc3QgY29tcGxldGVkIHtAbGluayBUcmFuc2FjdGlvbn0uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgcHJldmlvdXMgdHJhbnNhYyd0aW9uXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2xhc3RCb29rbWFyaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxhc3RCb29rbWFyaygpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sYXN0Qm9va21hcms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZSBnaXZlbiB1bml0IG9mIHdvcmsgaW4gYSB7QGxpbmsgRHJpdmVyI1JFQUR9IHRyYW5zYWN0aW9uLlxuICAgICAqXG4gICAgICogVHJhbnNhY3Rpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNvbW1pdHRlZCB1bmxlc3MgdGhlIGdpdmVuIGZ1bmN0aW9uIHRocm93cyBvciByZXR1cm5zIGEgcmVqZWN0ZWQgcHJvbWlzZS5cbiAgICAgKiBTb21lIGZhaWx1cmVzIG9mIHRoZSBnaXZlbiBmdW5jdGlvbiBvciB0aGUgY29tbWl0IGl0c2VsZiB3aWxsIGJlIHJldHJpZWQgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmIHdpdGggaW5pdGlhbFxuICAgICAqIGRlbGF5IG9mIDEgc2Vjb25kIGFuZCBtYXhpbXVtIHJldHJ5IHRpbWUgb2YgMzAgc2Vjb25kcy4gTWF4aW11bSByZXRyeSB0aW1lIGlzIGNvbmZpZ3VyYWJsZSB2aWEgZHJpdmVyIGNvbmZpZydzXG4gICAgICogPGNvZGU+bWF4VHJhbnNhY3Rpb25SZXRyeVRpbWU8L2NvZGU+IHByb3BlcnR5IGluIG1pbGxpc2Vjb25kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24odHg6IFRyYW5zYWN0aW9uKTogUHJvbWlzZX0gdHJhbnNhY3Rpb25Xb3JrIC0gY2FsbGJhY2sgdGhhdCBleGVjdXRlcyBvcGVyYXRpb25zIGFnYWluc3RcbiAgICAgKiBhIGdpdmVuIHtAbGluayBUcmFuc2FjdGlvbn0uXG4gICAgICogQHJldHVybiB7UHJvbWlzZX0gcmVzb2x2ZWQgcHJvbWlzZSBhcyByZXR1cm5lZCBieSB0aGUgZ2l2ZW4gZnVuY3Rpb24gb3IgcmVqZWN0ZWQgcHJvbWlzZSB3aGVuIGdpdmVuXG4gICAgICogZnVuY3Rpb24gb3IgY29tbWl0IGZhaWxzLlxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6ICdyZWFkVHJhbnNhY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWFkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25Xb3JrKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcnVuVHJhbnNhY3Rpb24oX2RyaXZlci5SRUFELCB0cmFuc2FjdGlvbldvcmspO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGUgZ2l2ZW4gdW5pdCBvZiB3b3JrIGluIGEge0BsaW5rIERyaXZlciNXUklURX0gdHJhbnNhY3Rpb24uXG4gICAgICpcbiAgICAgKiBUcmFuc2FjdGlvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY29tbWl0dGVkIHVubGVzcyB0aGUgZ2l2ZW4gZnVuY3Rpb24gdGhyb3dzIG9yIHJldHVybnMgYSByZWplY3RlZCBwcm9taXNlLlxuICAgICAqIFNvbWUgZmFpbHVyZXMgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHRoZSBjb21taXQgaXRzZWxmIHdpbGwgYmUgcmV0cmllZCB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBpbml0aWFsXG4gICAgICogZGVsYXkgb2YgMSBzZWNvbmQgYW5kIG1heGltdW0gcmV0cnkgdGltZSBvZiAzMCBzZWNvbmRzLiBNYXhpbXVtIHJldHJ5IHRpbWUgaXMgY29uZmlndXJhYmxlIHZpYSBkcml2ZXIgY29uZmlnJ3NcbiAgICAgKiA8Y29kZT5tYXhUcmFuc2FjdGlvblJldHJ5VGltZTwvY29kZT4gcHJvcGVydHkgaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbih0eDogVHJhbnNhY3Rpb24pOiBQcm9taXNlfSB0cmFuc2FjdGlvbldvcmsgLSBjYWxsYmFjayB0aGF0IGV4ZWN1dGVzIG9wZXJhdGlvbnMgYWdhaW5zdFxuICAgICAqIGEgZ2l2ZW4ge0BsaW5rIFRyYW5zYWN0aW9ufS5cbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSByZXNvbHZlZCBwcm9taXNlIGFzIHJldHVybmVkIGJ5IHRoZSBnaXZlbiBmdW5jdGlvbiBvciByZWplY3RlZCBwcm9taXNlIHdoZW4gZ2l2ZW5cbiAgICAgKiBmdW5jdGlvbiBvciBjb21taXQgZmFpbHMuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ3dyaXRlVHJhbnNhY3Rpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB3cml0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uV29yaykge1xuICAgICAgcmV0dXJuIHRoaXMuX3J1blRyYW5zYWN0aW9uKF9kcml2ZXIuV1JJVEUsIHRyYW5zYWN0aW9uV29yayk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3J1blRyYW5zYWN0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3J1blRyYW5zYWN0aW9uKGFjY2Vzc01vZGUsIHRyYW5zYWN0aW9uV29yaykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbkV4ZWN1dG9yLmV4ZWN1dGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLl9iZWdpblRyYW5zYWN0aW9uKGFjY2Vzc01vZGUsIF90aGlzMi5sYXN0Qm9va21hcmsoKSk7XG4gICAgICB9LCB0cmFuc2FjdGlvbldvcmspO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ191cGRhdGVCb29rbWFyaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF91cGRhdGVCb29rbWFyayhuZXdCb29rbWFyaykge1xuICAgICAgaWYgKG5ld0Jvb2ttYXJrKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCb29rbWFyayA9IG5ld0Jvb2ttYXJrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIHRoaXMgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBzZXNzaW9uIGhhcyBiZWVuIGNsb3NlZFxuICAgICAqIEByZXR1cm5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY2xvc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZSgpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5fb3Blbikge1xuICAgICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uRXhlY3V0b3IuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fcmVhZENvbm5lY3Rpb25Ib2xkZXIuY2xvc2UoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMuX3dyaXRlQ29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vQ2FuIGJlIG92ZXJyaWRkZW4gdG8gYWRkIGVycm9yIGNhbGxiYWNrIG9uIFJVTlxuXG4gIH0sIHtcbiAgICBrZXk6ICdfb25SdW5GYWlsdXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uUnVuRmFpbHVyZSgpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jb25uZWN0aW9uSG9sZGVyV2l0aE1vZGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfY29ubmVjdGlvbkhvbGRlcldpdGhNb2RlKG1vZGUpIHtcbiAgICAgIGlmIChtb2RlID09PSBfZHJpdmVyLlJFQUQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRDb25uZWN0aW9uSG9sZGVyO1xuICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBfZHJpdmVyLldSSVRFKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93cml0ZUNvbm5lY3Rpb25Ib2xkZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyAoMCwgX2Vycm9yLm5ld0Vycm9yKSgnVW5rbm93biBhY2Nlc3MgbW9kZTogJyArIG1vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gU2Vzc2lvbjtcbn0oKTtcblxuLyoqIEludGVybmFsIHN0cmVhbSBvYnNlcnZlciB1c2VkIGZvciB0cmFuc2FjdGlvbmFsIHJlc3VsdHMqL1xuXG5cbnZhciBfUnVuT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoX1N0cmVhbU9ic2VydmVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKF9SdW5PYnNlcnZlciwgX1N0cmVhbU9ic2VydmVyKTtcblxuICBmdW5jdGlvbiBfUnVuT2JzZXJ2ZXIob25FcnJvcikge1xuICAgICgwLCBfY2xhc3NDYWxsQ2hlY2szLmRlZmF1bHQpKHRoaXMsIF9SdW5PYnNlcnZlcik7XG5cbiAgICB2YXIgX3RoaXM0ID0gKDAsIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMy5kZWZhdWx0KSh0aGlzLCAoX1J1bk9ic2VydmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShfUnVuT2JzZXJ2ZXIpKS5jYWxsKHRoaXMsIG9uRXJyb3IpKTtcblxuICAgIF90aGlzNC5fbWV0YSA9IHt9O1xuICAgIHJldHVybiBfdGhpczQ7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShfUnVuT2JzZXJ2ZXIsIFt7XG4gICAga2V5OiAnb25Db21wbGV0ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgICAoMCwgX2dldDMuZGVmYXVsdCkoX1J1bk9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoX1J1bk9ic2VydmVyLnByb3RvdHlwZSksICdvbkNvbXBsZXRlZCcsIHRoaXMpLmNhbGwodGhpcywgbWV0YSk7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gbWV0YSkge1xuICAgICAgICBpZiAobWV0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdGhpcy5fbWV0YVtrZXldID0gbWV0YVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnbWV0YScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1ldGEoKSB7XG4gICAgICB2YXIgc2VydmVyTWV0YSA9IHsgc2VydmVyOiB0aGlzLl9jb25uLnNlcnZlciB9O1xuICAgICAgcmV0dXJuICgwLCBfYXNzaWduMi5kZWZhdWx0KSh7fSwgdGhpcy5fbWV0YSwgc2VydmVyTWV0YSk7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBfUnVuT2JzZXJ2ZXI7XG59KF9zdHJlYW1PYnNlcnZlcjIuZGVmYXVsdCk7XG5cbmZ1bmN0aW9uIF9jcmVhdGVUcmFuc2FjdGlvbkV4ZWN1dG9yKGNvbmZpZykge1xuICB2YXIgbWF4UmV0cnlUaW1lTXMgPSBjb25maWcgJiYgY29uZmlnLm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lID8gY29uZmlnLm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lIDogbnVsbDtcbiAgcmV0dXJuIG5ldyBfdHJhbnNhY3Rpb25FeGVjdXRvcjIuZGVmYXVsdChtYXhSZXRyeVRpbWVNcyk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFNlc3Npb247IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mJyk7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nKTtcblxudmFyIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yKTtcblxudmFyIF9nZXQyID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2dldCcpO1xuXG52YXIgX2dldDMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9nZXQyKTtcblxudmFyIF9pbmhlcml0czIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHMnKTtcblxudmFyIF9pbmhlcml0czMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbmhlcml0czIpO1xuXG52YXIgX3Byb21pc2UgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZScpO1xuXG52YXIgX3Byb21pc2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvbWlzZSk7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YnKTtcblxudmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2syID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrJyk7XG5cbnZhciBfY2xhc3NDYWxsQ2hlY2szID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NDYWxsQ2hlY2syKTtcblxudmFyIF9jcmVhdGVDbGFzczIgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MnKTtcblxudmFyIF9jcmVhdGVDbGFzczMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVDbGFzczIpO1xuXG52YXIgX3N0cmVhbU9ic2VydmVyID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInKTtcblxudmFyIF9zdHJlYW1PYnNlcnZlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdHJlYW1PYnNlcnZlcik7XG5cbnZhciBfcmVzdWx0ID0gcmVxdWlyZSgnLi9yZXN1bHQnKTtcblxudmFyIF9yZXN1bHQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVzdWx0KTtcblxudmFyIF91dGlsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC91dGlsJyk7XG5cbnZhciBfY29ubmVjdGlvbkhvbGRlciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXInKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHJhbnNhY3Rpb24gaW4gdGhlIE5lbzRqIGRhdGFiYXNlLlxuICpcbiAqIEBhY2Nlc3MgcHVibGljXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIFRyYW5zYWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvbkhvbGRlcn0gY29ubmVjdGlvbkhvbGRlciAtIHRoZSBjb25uZWN0aW9uIGhvbGRlciB0byBnZXQgY29ubmVjdGlvbiBmcm9tLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb3Igcm9sbGVkIGJhY2suXG4gICAqIEBwYXJhbSBlcnJvclRyYW5zZm9ybWVyIGNhbGxiYWNrIHVzZSB0byB0cmFuc2Zvcm0gZXJyb3JcbiAgICogQHBhcmFtIGJvb2ttYXJrIG9wdGlvbmFsIGJvb2ttYXJrXG4gICAqIEBwYXJhbSBvbkJvb2ttYXJrIGNhbGxiYWNrIGludm9rZWQgd2hlbiBuZXcgYm9va21hcmsgaXMgcHJvZHVjZWRcbiAgICovXG4gIGZ1bmN0aW9uIFRyYW5zYWN0aW9uKGNvbm5lY3Rpb25Ib2xkZXIsIG9uQ2xvc2UsIGVycm9yVHJhbnNmb3JtZXIsIGJvb2ttYXJrLCBvbkJvb2ttYXJrKSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgVHJhbnNhY3Rpb24pO1xuXG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlciA9IGNvbm5lY3Rpb25Ib2xkZXI7XG4gICAgdmFyIHN0cmVhbU9ic2VydmVyID0gbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpO1xuICAgIHZhciBwYXJhbXMgPSB7fTtcbiAgICBpZiAoYm9va21hcmspIHtcbiAgICAgIHBhcmFtcyA9IHsgYm9va21hcms6IGJvb2ttYXJrIH07XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihmdW5jdGlvbiAoY29ubikge1xuICAgICAgc3RyZWFtT2JzZXJ2ZXIucmVzb2x2ZUNvbm5lY3Rpb24oY29ubik7XG4gICAgICBjb25uLnJ1bignQkVHSU4nLCBwYXJhbXMsIHN0cmVhbU9ic2VydmVyKTtcbiAgICAgIGNvbm4ucHVsbEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICByZXR1cm4gc3RyZWFtT2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9IF9zdGF0ZXMuQUNUSVZFO1xuICAgIHRoaXMuX29uQ2xvc2UgPSBvbkNsb3NlO1xuICAgIHRoaXMuX2Vycm9yVHJhbnNmb3JtZXIgPSBlcnJvclRyYW5zZm9ybWVyO1xuICAgIHRoaXMuX29uQm9va21hcmsgPSBvbkJvb2ttYXJrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBDeXBoZXIgc3RhdGVtZW50XG4gICAqIENvdWxkIGJlIGNhbGxlZCB3aXRoIGEgc3RhdGVtZW50IG9iamVjdCBpLmUuOiB7c3RhdGVtZW50OiBcIk1BVENIIC4uLlwiLCBwYXJhbWV0ZXJzOiB7cGFyYW06IDF9fVxuICAgKiBvciB3aXRoIHRoZSBzdGF0ZW1lbnQgYW5kIHBhcmFtZXRlcnMgYXMgc2VwYXJhdGUgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge21peGVkfSBzdGF0ZW1lbnQgLSBDeXBoZXIgc3RhdGVtZW50IHRvIGV4ZWN1dGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBNYXAgd2l0aCBwYXJhbWV0ZXJzIHRvIHVzZSBpbiBzdGF0ZW1lbnRcbiAgICogQHJldHVybiB7UmVzdWx0fSBOZXcgUmVzdWx0XG4gICAqL1xuXG5cbiAgKDAsIF9jcmVhdGVDbGFzczMuZGVmYXVsdCkoVHJhbnNhY3Rpb24sIFt7XG4gICAga2V5OiAncnVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcnVuKHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgaWYgKCh0eXBlb2Ygc3RhdGVtZW50ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogKDAsIF90eXBlb2YzLmRlZmF1bHQpKHN0YXRlbWVudCkpID09PSAnb2JqZWN0JyAmJiBzdGF0ZW1lbnQudGV4dCkge1xuICAgICAgICBwYXJhbWV0ZXJzID0gc3RhdGVtZW50LnBhcmFtZXRlcnMgfHwge307XG4gICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC50ZXh0O1xuICAgICAgfVxuICAgICAgKDAsIF91dGlsLmFzc2VydFN0cmluZykoc3RhdGVtZW50LCBcIkN5cGhlciBzdGF0ZW1lbnRcIik7XG5cbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZS5ydW4odGhpcy5fY29ubmVjdGlvbkhvbGRlciwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1pdHMgdGhlIHRyYW5zYWN0aW9uIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAgICpcbiAgICAgKiBBZnRlciBjb21taXR0aW5nIHRoZSB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UmVzdWx0fSBOZXcgUmVzdWx0XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogJ2NvbW1pdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbW1pdCgpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5jb21taXQodGhpcy5fY29ubmVjdGlvbkhvbGRlciwgbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpKTtcbiAgICAgIHRoaXMuX3N0YXRlID0gY29tbWl0dGVkLnN0YXRlO1xuICAgICAgLy9jbGVhbiB1cFxuICAgICAgdGhpcy5fb25DbG9zZSgpO1xuICAgICAgcmV0dXJuIGNvbW1pdHRlZC5yZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUm9sbGJhY2tzIHRoZSB0cmFuc2FjdGlvbi5cbiAgICAgKlxuICAgICAqIEFmdGVyIHJvbGxpbmcgYmFjaywgdGhlIHRyYW5zYWN0aW9uIGNhbiBubyBsb25nZXIgYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSZXN1bHR9IE5ldyBSZXN1bHRcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAncm9sbGJhY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByb2xsYmFjaygpIHtcbiAgICAgIHZhciBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5yb2xsYmFjayh0aGlzLl9jb25uZWN0aW9uSG9sZGVyLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgICAvL2NsZWFuIHVwXG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGlzIHRyYW5zYWN0aW9uIGlzIGFjdGl2ZSwgd2hpY2ggbWVhbnMgY29tbWl0IGFuZCByb2xsYmFjayBkaWQgbm90IGhhcHBlbi5cbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSA8Y29kZT50cnVlPC9jb2RlPiB3aGVuIG5vdCBjb21taXR0ZWQgYW5kIG5vdCByb2xsZWQgYmFjaywgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS5cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnaXNPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNPcGVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlID09IF9zdGF0ZXMuQUNUSVZFO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19vbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX29uRXJyb3IoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgICAvLyBhdHRlbXB0IHRvIHJvbGxiYWNrLCB1c2VmdWwgd2hlbiBUcmFuc2FjdGlvbiNydW4oKSBmYWlsZWRcbiAgICAgICAgcmV0dXJuIHRoaXMucm9sbGJhY2soKS5jYXRjaChmdW5jdGlvbiAoaWdub3JlZEVycm9yKSB7XG4gICAgICAgICAgLy8gaWdub3JlIGFsbCBlcnJvcnMgYmVjYXVzZSBpdCBpcyBiZXN0IGVmZm9ydCBhbmQgdHJhbnNhY3Rpb24gbWlnaHQgYWxyZWFkeSBiZSByb2xsZWQgYmFja1xuICAgICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBhZnRlciByb2xsYmFjayBhdHRlbXB0IGNoYW5nZSB0aGlzIHRyYW5zYWN0aW9uJ3Mgc3RhdGUgdG8gRkFJTEVEXG4gICAgICAgICAgX3RoaXMuX3N0YXRlID0gX3N0YXRlcy5GQUlMRUQ7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXJyb3IgaGFwcGVuZWQgaW4gaW4tYWN0aXZlIHRyYW5zYWN0aW9uLCBqdXN0IHRvIHRoZSBjbGVhbnVwIGFuZCBjaGFuZ2Ugc3RhdGUgdG8gRkFJTEVEXG4gICAgICAgIHRoaXMuX3N0YXRlID0gX3N0YXRlcy5GQUlMRUQ7XG4gICAgICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICAgICAgLy8gbm8gYXN5bmMgYWN0aW9ucyBuZWVkZWQgLSByZXR1cm4gcmVzb2x2ZWQgcHJvbWlzZVxuICAgICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVHJhbnNhY3Rpb247XG59KCk7XG5cbi8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgdHJhbnNhY3Rpb25hbCByZXN1bHRzKi9cblxuXG52YXIgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIgPSBmdW5jdGlvbiAoX1N0cmVhbU9ic2VydmVyKSB7XG4gICgwLCBfaW5oZXJpdHMzLmRlZmF1bHQpKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLCBfU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gIGZ1bmN0aW9uIF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHR4KSB7XG4gICAgKDAsIF9jbGFzc0NhbGxDaGVjazMuZGVmYXVsdCkodGhpcywgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIpO1xuXG4gICAgdmFyIF90aGlzMiA9ICgwLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjMuZGVmYXVsdCkodGhpcywgKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLl9fcHJvdG9fXyB8fCAoMCwgX2dldFByb3RvdHlwZU9mMi5kZWZhdWx0KShfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcikpLmNhbGwodGhpcywgdHguX2Vycm9yVHJhbnNmb3JtZXIgfHwgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KSk7XG5cbiAgICBfdGhpczIuX3R4ID0gdHg7XG4gICAgLy90aGlzIGlzIHRvIHRvIGF2b2lkIG11bHRpcGxlIGNhbGxzIHRvIG9uRXJyb3IgY2F1c2VkIGJ5IElHTk9SRURcbiAgICBfdGhpczIuX2hhc0ZhaWxlZCA9IGZhbHNlO1xuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICAoMCwgX2NyZWF0ZUNsYXNzMy5kZWZhdWx0KShfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlciwgW3tcbiAgICBrZXk6ICdvbkVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIGlmICghdGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICAgIHRoaXMuX3R4Ll9vbkVycm9yKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKDAsIF9nZXQzLmRlZmF1bHQpKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gfHwgKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkoX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIucHJvdG90eXBlKSwgJ29uRXJyb3InLCBfdGhpczMpLmNhbGwoX3RoaXMzLCBlcnJvcik7XG4gICAgICAgICAgX3RoaXMzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkNvbXBsZXRlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29tcGxldGVkKG1ldGEpIHtcbiAgICAgICgwLCBfZ2V0My5kZWZhdWx0KShfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fIHx8ICgwLCBfZ2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyLnByb3RvdHlwZSksICdvbkNvbXBsZXRlZCcsIHRoaXMpLmNhbGwodGhpcywgbWV0YSk7XG4gICAgICB2YXIgYm9va21hcmsgPSBtZXRhLmJvb2ttYXJrO1xuICAgICAgdGhpcy5fdHguX29uQm9va21hcmsoYm9va21hcmspO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NlcnZlck1ldGEnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXJ2ZXJNZXRhKCkge1xuICAgICAgdmFyIHNlcnZlck1ldGEgPSB7IHNlcnZlcjogdGhpcy5fY29ubi5zZXJ2ZXIgfTtcbiAgICAgIHJldHVybiBzZXJ2ZXJNZXRhO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXI7XG59KF9zdHJlYW1PYnNlcnZlcjIuZGVmYXVsdCk7XG5cbi8qKiBpbnRlcm5hbCBzdGF0ZSBtYWNoaW5lIG9mIHRoZSB0cmFuc2FjdGlvbiovXG5cblxudmFyIF9zdGF0ZXMgPSB7XG4gIC8vVGhlIHRyYW5zYWN0aW9uIGlzIHJ1bm5pbmcgd2l0aCBubyBleHBsaWNpdCBzdWNjZXNzIG9yIGZhaWx1cmUgbWFya2VkXG4gIEFDVElWRToge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IF9ydW5QdWxsQWxsKFwiQ09NTUlUXCIsIGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSxcbiAgICAgICAgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpIHtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogX3J1blB1bGxBbGwoXCJST0xMQkFDS1wiLCBjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmdldENvbm5lY3Rpb24oKS50aGVuKGZ1bmN0aW9uIChjb25uKSB7XG4gICAgICAgIG9ic2VydmVyLnJlc29sdmVDb25uZWN0aW9uKGNvbm4pO1xuICAgICAgICBjb25uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMgfHwge30sIG9ic2VydmVyKTtcbiAgICAgICAgY29ubi5wdWxsQWxsKG9ic2VydmVyKTtcbiAgICAgICAgY29ubi5zeW5jKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXdSdW5SZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuc2VydmVyTWV0YSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vQW4gZXJyb3IgaGFzIG9jY3VycmVkLCB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgYW5kIG5vIG1vcmUgbWVzc2FnZXMgd2lsbFxuICAvLyBiZSBzZW50IGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICBGQUlMRUQ6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgc3RhdGVtZW50cyBpbiB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2suIFBsZWFzZSBzdGFydCBhIG5ld1wiICsgXCIgdHJhbnNhY3Rpb24gdG8gcnVuIGFub3RoZXIgc3RhdGVtZW50LlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuRkFJTEVEIH07XG4gICAgfSxcbiAgICByb2xsYmFjazogZnVuY3Rpb24gcm9sbGJhY2soY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpIHtcbiAgICAgIG9ic2VydmVyLm9uRXJyb3IoeyBlcnJvcjogXCJDYW5ub3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb24sIGJlY2F1c2UgcHJldmlvdXMgc3RhdGVtZW50cyBpbiB0aGUgXCIgKyBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLkZBSUxFRCB9O1xuICAgIH0sXG4gICAgcnVuOiBmdW5jdGlvbiBydW4oY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCBydW4gc3RhdGVtZW50LCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICsgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9UaGlzIHRyYW5zYWN0aW9uIGhhcyBzdWNjZXNzZnVsbHkgY29tbWl0dGVkXG4gIFNVQ0NFRURFRDoge1xuICAgIGNvbW1pdDogZnVuY3Rpb24gY29tbWl0KGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgY29tbWl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbGxlZCBvbiB0aGUgdHJhbnNhY3Rpb24gYW5kIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgKyBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUQgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBjbG9zZWQuXCIgfSk7XG4gICAgICByZXR1cm4geyByZXN1bHQ6IG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2xvc2VkLlwiIH0pO1xuICAgICAgcmV0dXJuIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2tcbiAgUk9MTEVEX0JBQ0s6IHtcbiAgICBjb21taXQ6IGZ1bmN0aW9uIGNvbW1pdChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IHJlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiQ09NTUlUXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0sgfTtcbiAgICB9LFxuICAgIHJvbGxiYWNrOiBmdW5jdGlvbiByb2xsYmFjayhjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7IGVycm9yOiBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiIH0pO1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJST0xMQkFDS1wiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlJPTExFRF9CQUNLIH07XG4gICAgfSxcbiAgICBydW46IGZ1bmN0aW9uIHJ1bihjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHsgZXJyb3I6IFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIiB9KTtcbiAgICAgIHJldHVybiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ydW5QdWxsQWxsKG1zZywgY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpIHtcbiAgY29ubmVjdGlvbkhvbGRlci5nZXRDb25uZWN0aW9uKCkudGhlbihmdW5jdGlvbiAoY29ubikge1xuICAgIG9ic2VydmVyLnJlc29sdmVDb25uZWN0aW9uKGNvbm4pO1xuICAgIGNvbm4ucnVuKG1zZywge30sIG9ic2VydmVyKTtcbiAgICBjb25uLnB1bGxBbGwob2JzZXJ2ZXIpO1xuICAgIGNvbm4uc3luYygpO1xuICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICByZXR1cm4gb2JzZXJ2ZXIub25FcnJvcihlcnJvcik7XG4gIH0pO1xuXG4gIC8vIGZvciBjb21taXQgJiByb2xsYmFjayB3ZSBuZWVkIHJlc3VsdCB0aGF0IHVzZXMgcmVhbCBjb25uZWN0aW9uIGhvbGRlciBhbmQgbm90aWZpZXMgaXQgd2hlblxuICAvLyBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW5kIGNhbiBiZSBzYWZlbHkgcmVsZWFzZWQgdG8gdGhlIHBvb2xcbiAgcmV0dXJuIG5ldyBfcmVzdWx0Mi5kZWZhdWx0KG9ic2VydmVyLCBtc2csIHt9LCBlbXB0eU1ldGFkYXRhU3VwcGxpZXIsIGNvbm5lY3Rpb25Ib2xkZXIpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgUmVzdWx0fSB3aXRoIGVtcHR5IGNvbm5lY3Rpb24gaG9sZGVyLlxuICogU2hvdWxkIGJlIHVzZWQgYXMgYSByZXN1bHQgZm9yIHJ1bm5pbmcgY3lwaGVyIHN0YXRlbWVudHMuIFRoZXkgY2FuIHJlc3VsdCBpbiBtZXRhZGF0YSBidXQgc2hvdWxkIG5vdFxuICogaW5mbHVlbmNlIHJlYWwgY29ubmVjdGlvbiBob2xkZXIgdG8gcmVsZWFzZSBjb25uZWN0aW9ucyBiZWNhdXNlIHNpbmdsZSB0cmFuc2FjdGlvbiBjYW4gaGF2ZVxuICoge0BsaW5rIFRyYW5zYWN0aW9uI3J1bn0gY2FsbGVkIG11bHRpcGxlIHRpbWVzLlxuICogQHBhcmFtIHtTdHJlYW1PYnNlcnZlcn0gb2JzZXJ2ZXIgLSBhbiBvYnNlcnZlciBmb3IgdGhlIGNyZWF0ZWQgcmVzdWx0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlbWVudCAtIHRoZSBjeXBoZXIgc3RhdGVtZW50IHRoYXQgcHJvZHVjZWQgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzIC0gdGhlIHBhcmFtZXRlcnMgZm9yIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0YWRhdGFTdXBwbGllciAtIHRoZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBtZXRhZGF0YSBvYmplY3QuXG4gKiBAcmV0dXJuIHtSZXN1bHR9IG5ldyByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIG5ld1J1blJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhZGF0YVN1cHBsaWVyKSB7XG4gIHJldHVybiBuZXcgX3Jlc3VsdDIuZGVmYXVsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhZGF0YVN1cHBsaWVyLCBfY29ubmVjdGlvbkhvbGRlci5FTVBUWV9DT05ORUNUSU9OX0hPTERFUik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBSZXN1bHR9IHdpdGhvdXQgbWV0YWRhdGEgc3VwcGxpZXIgYW5kIHdpdGggZW1wdHkgY29ubmVjdGlvbiBob2xkZXIuXG4gKiBGb3IgY2FzZXMgd2hlbiByZXN1bHQgcmVwcmVzZW50cyBhbiBpbnRlcm1lZGlhdGUgb3IgZmFpbGVkIGFjdGlvbiwgZG9lcyBub3QgcmVxdWlyZSBhbnkgbWV0YWRhdGEgYW5kIGRvZXMgbm90XG4gKiBuZWVkIHRvIGluZmx1ZW5jZSByZWFsIGNvbm5lY3Rpb24gaG9sZGVyIHRvIHJlbGVhc2UgY29ubmVjdGlvbnMuXG4gKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBvYnNlcnZlciAtIGFuIG9ic2VydmVyIGZvciB0aGUgY3JlYXRlZCByZXN1bHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gdGhlIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSB0aGUgcGFyYW1ldGVycyBmb3IgY3lwaGVyIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VkIHRoZSByZXN1bHQuXG4gKiBAcmV0dXJuIHtSZXN1bHR9IG5ldyByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgcmV0dXJuIG5ldyBfcmVzdWx0Mi5kZWZhdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIGVtcHR5TWV0YWRhdGFTdXBwbGllciwgX2Nvbm5lY3Rpb25Ib2xkZXIuRU1QVFlfQ09OTkVDVElPTl9IT0xERVIpO1xufVxuXG5mdW5jdGlvbiBlbXB0eU1ldGFkYXRhU3VwcGxpZXIoKSB7XG4gIHJldHVybiB7fTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gVHJhbnNhY3Rpb247IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gRE8gTk9UIENIQU5HRSBUSEUgVkVSU0lPTiBCRUxPVyBIRVJFXG4vLyBUaGlzIGlzIHNldCBieSB0aGUgYnVpbGQgc3lzdGVtIGF0IHJlbGVhc2UgdGltZSwgdXNpbmdcbi8vICAgZ3VscCBzZXQgLS12ZXJzaW9uIDxyZWxlYXNldmVyc2lvbj5cbi8vXG4vLyBUaGlzIGlzIHNldCB1cCB0aGlzIHdheSB0byBrZWVwIHRoZSB2ZXJzaW9uIGluIHRoZSBjb2RlIGluXG4vLyBzeW5jIHdpdGggdGhlIG5wbSBwYWNrYWdlIHZlcnNpb24sIGFuZCB0byBhbGxvdyB0aGUgYnVpbGRcbi8vIHN5c3RlbSB0byBjb250cm9sIHZlcnNpb24gbmFtZXMgYXQgcGFja2FnaW5nIHRpbWUuXG5leHBvcnRzLmRlZmF1bHQgPSBcIjAuMC4wLWRldlwiOyIsInZhciBhc24xID0gZXhwb3J0cztcblxuYXNuMS5iaWdudW0gPSByZXF1aXJlKCdibi5qcycpO1xuXG5hc24xLmRlZmluZSA9IHJlcXVpcmUoJy4vYXNuMS9hcGknKS5kZWZpbmU7XG5hc24xLmJhc2UgPSByZXF1aXJlKCcuL2FzbjEvYmFzZScpO1xuYXNuMS5jb25zdGFudHMgPSByZXF1aXJlKCcuL2FzbjEvY29uc3RhbnRzJyk7XG5hc24xLmRlY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2RlY29kZXJzJyk7XG5hc24xLmVuY29kZXJzID0gcmVxdWlyZSgnLi9hc24xL2VuY29kZXJzJyk7XG4iLCJ2YXIgYXNuMSA9IHJlcXVpcmUoJy4uL2FzbjEnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBhcGkgPSBleHBvcnRzO1xuXG5hcGkuZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKG5hbWUsIGJvZHkpIHtcbiAgcmV0dXJuIG5ldyBFbnRpdHkobmFtZSwgYm9keSk7XG59O1xuXG5mdW5jdGlvbiBFbnRpdHkobmFtZSwgYm9keSkge1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gIHRoaXMuZGVjb2RlcnMgPSB7fTtcbiAgdGhpcy5lbmNvZGVycyA9IHt9O1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fY3JlYXRlTmFtZWQgPSBmdW5jdGlvbiBjcmVhdGVOYW1lZChiYXNlKSB7XG4gIHZhciBuYW1lZDtcbiAgdHJ5IHtcbiAgICBuYW1lZCA9IHJlcXVpcmUoJ3ZtJykucnVuSW5UaGlzQ29udGV4dChcbiAgICAgICcoZnVuY3Rpb24gJyArIHRoaXMubmFtZSArICcoZW50aXR5KSB7XFxuJyArXG4gICAgICAnICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcXG4nICtcbiAgICAgICd9KSdcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbmFtZWQgPSBmdW5jdGlvbiAoZW50aXR5KSB7XG4gICAgICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcbiAgICB9O1xuICB9XG4gIGluaGVyaXRzKG5hbWVkLCBiYXNlKTtcbiAgbmFtZWQucHJvdG90eXBlLl9pbml0TmFtZWQgPSBmdW5jdGlvbiBpbml0bmFtZWQoZW50aXR5KSB7XG4gICAgYmFzZS5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBuYW1lZCh0aGlzKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldERlY29kZXIgPSBmdW5jdGlvbiBfZ2V0RGVjb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGRlY29kZXJcbiAgaWYgKCF0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5kZWNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5kZWNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZGVjb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIGVuYywgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5fZ2V0RGVjb2RlcihlbmMpLmRlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldEVuY29kZXIgPSBmdW5jdGlvbiBfZ2V0RW5jb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGVuY29kZXJcbiAgaWYgKCF0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5lbmNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoYXNuMS5lbmNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIGVuYywgLyogaW50ZXJuYWwgKi8gcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZW5jKS5lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG5mdW5jdGlvbiBEZWNvZGVyQnVmZmVyKGJhc2UsIG9wdGlvbnMpIHtcbiAgUmVwb3J0ZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYmFzZSkpIHtcbiAgICB0aGlzLmVycm9yKCdJbnB1dCBub3QgQnVmZmVyJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5iYXNlID0gYmFzZTtcbiAgdGhpcy5vZmZzZXQgPSAwO1xuICB0aGlzLmxlbmd0aCA9IGJhc2UubGVuZ3RoO1xufVxuaW5oZXJpdHMoRGVjb2RlckJ1ZmZlciwgUmVwb3J0ZXIpO1xuZXhwb3J0cy5EZWNvZGVyQnVmZmVyID0gRGVjb2RlckJ1ZmZlcjtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgdmFyIHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIEVuY29kZXJCdWZmZXIodmFsdWUsIHJlcG9ydGVyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGlmICghKGl0ZW0gaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihvdXQsIG9mZnNldCkge1xuICBpZiAoIW91dClcbiAgICBvdXQgPSBuZXcgQnVmZmVyKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcbiIsInZhciBiYXNlID0gZXhwb3J0cztcblxuYmFzZS5SZXBvcnRlciA9IHJlcXVpcmUoJy4vcmVwb3J0ZXInKS5SZXBvcnRlcjtcbmJhc2UuRGVjb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRGVjb2RlckJ1ZmZlcjtcbmJhc2UuRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4vYnVmZmVyJykuRW5jb2RlckJ1ZmZlcjtcbmJhc2UuTm9kZSA9IHJlcXVpcmUoJy4vbm9kZScpO1xuIiwidmFyIFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZScpLlJlcG9ydGVyO1xudmFyIEVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRW5jb2RlckJ1ZmZlcjtcbnZhciBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZScpLkRlY29kZXJCdWZmZXI7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG4vLyBTdXBwb3J0ZWQgdGFnc1xudmFyIHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JywgJ29iakRlc2MnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxudmFyIG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG52YXIgb3ZlcnJpZGVkID0gW1xuICAnX3BlZWtUYWcnLCAnX2RlY29kZVRhZycsICdfdXNlJyxcbiAgJ19kZWNvZGVTdHInLCAnX2RlY29kZU9iamlkJywgJ19kZWNvZGVUaW1lJyxcbiAgJ19kZWNvZGVOdWxsJywgJ19kZWNvZGVJbnQnLCAnX2RlY29kZUJvb2wnLCAnX2RlY29kZUxpc3QnLFxuXG4gICdfZW5jb2RlQ29tcG9zaXRlJywgJ19lbmNvZGVTdHInLCAnX2VuY29kZU9iamlkJywgJ19lbmNvZGVUaW1lJyxcbiAgJ19lbmNvZGVOdWxsJywgJ19lbmNvZGVJbnQnLCAnX2VuY29kZUJvb2wnXG5dO1xuXG5mdW5jdGlvbiBOb2RlKGVuYywgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5lbmMgPSBlbmM7XG5cbiAgc3RhdGUucGFyZW50ID0gcGFyZW50IHx8IG51bGw7XG4gIHN0YXRlLmNoaWxkcmVuID0gbnVsbDtcblxuICAvLyBTdGF0ZVxuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5hcmdzID0gbnVsbDtcbiAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBudWxsO1xuICBzdGF0ZS5jaG9pY2UgPSBudWxsO1xuICBzdGF0ZS5vcHRpb25hbCA9IGZhbHNlO1xuICBzdGF0ZS5hbnkgPSBmYWxzZTtcbiAgc3RhdGUub2JqID0gZmFsc2U7XG4gIHN0YXRlLnVzZSA9IG51bGw7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBudWxsO1xuICBzdGF0ZS5rZXkgPSBudWxsO1xuICBzdGF0ZVsnZGVmYXVsdCddID0gbnVsbDtcbiAgc3RhdGUuZXhwbGljaXQgPSBudWxsO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmNvbnRhaW5zID0gbnVsbDtcblxuICAvLyBTaG91bGQgY3JlYXRlIG5ldyBpbnN0YW5jZSBvbiBlYWNoIG1ldGhvZFxuICBpZiAoIXN0YXRlLnBhcmVudCkge1xuICAgIHN0YXRlLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5fd3JhcCgpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IE5vZGU7XG5cbnZhciBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCcsICdjb250YWlucydcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGNzdGF0ZSA9IHt9O1xuICBzdGF0ZVByb3BzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgIGNzdGF0ZVtwcm9wXSA9IHN0YXRlW3Byb3BdO1xuICB9KTtcbiAgdmFyIHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICB2YXIgY2xvbmUgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzKTtcbiAgICAgIHN0YXRlLmNoaWxkcmVuLnB1c2goY2xvbmUpO1xuICAgICAgcmV0dXJuIGNsb25lW21ldGhvZF0uYXBwbHkoY2xvbmUsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfSwgdGhpcyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoYm9keSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIHZhciBjaGlsZHJlbiA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yO1xuICB9LCB0aGlzKTtcbiAgYXJncyA9IGFyZ3MuZmlsdGVyKGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiAhKGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpO1xuICB9LCB0aGlzKTtcblxuICBpZiAoY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmNoaWxkcmVuID09PSBudWxsKTtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAgLy8gUmVwbGFjZSBwYXJlbnQgdG8gbWFpbnRhaW4gYmFja3dhcmQgbGlua1xuICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID0gdGhpcztcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBpZiAoYXJncy5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuYXJncyA9PT0gbnVsbCk7XG4gICAgc3RhdGUuYXJncyA9IGFyZ3M7XG4gICAgc3RhdGUucmV2ZXJzZUFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbihhcmcpIHtcbiAgICAgIGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0JyB8fCBhcmcuY29uc3RydWN0b3IgIT09IE9iamVjdClcbiAgICAgICAgcmV0dXJuIGFyZztcblxuICAgICAgdmFyIHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWV0aG9kICsgJyBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiAnICsgc3RhdGUuZW5jKTtcbiAgfTtcbn0pO1xuXG4vL1xuLy8gUHVibGljIG1ldGhvZHNcbi8vXG5cbnRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHtcbiAgTm9kZS5wcm90b3R5cGVbdGFnXSA9IGZ1bmN0aW9uIF90YWdNZXRob2QoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICBhc3NlcnQoaXRlbSk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUudXNlID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9wdGlvbmFsID0gZnVuY3Rpb24gb3B0aW9uYWwoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5kZWYgPSBmdW5jdGlvbiBkZWYodmFsKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbCk7XG4gIHN0YXRlWydkZWZhdWx0J10gPSB2YWw7XG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmV4cGxpY2l0ID0gZnVuY3Rpb24gZXhwbGljaXQobnVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmltcGxpY2l0ID0gZnVuY3Rpb24gaW1wbGljaXQobnVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9iaiA9IGZ1bmN0aW9uIG9iaigpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgc3RhdGUub2JqID0gdHJ1ZTtcblxuICBpZiAoYXJncy5sZW5ndGggIT09IDApXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmtleSA9IGZ1bmN0aW9uIGtleShuZXdLZXkpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5rZXkgPT09IG51bGwpO1xuICBzdGF0ZS5rZXkgPSBuZXdLZXk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5hbnkgPSBmdW5jdGlvbiBhbnkoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5hbnkgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY2hvaWNlID0gZnVuY3Rpb24gY2hvaWNlKG9iaikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmNob2ljZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNob2ljZSA9IG9iajtcbiAgdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqW2tleV07XG4gIH0pKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gY29udGFpbnMoaXRlbSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNvbnRhaW5zID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vXG4vLyBEZWNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBpbnB1dC53cmFwUmVzdWx0KHN0YXRlLmNoaWxkcmVuWzBdLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpKTtcblxuICB2YXIgcmVzdWx0ID0gc3RhdGVbJ2RlZmF1bHQnXTtcbiAgdmFyIHByZXNlbnQgPSB0cnVlO1xuXG4gIHZhciBwcmV2S2V5ID0gbnVsbDtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKVxuICAgICAgICAgIHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBwcmVzZW50ID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJlc2VudCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlc2VudCA9IHRoaXMuX3BlZWtUYWcoaW5wdXQsIHRhZywgc3RhdGUuYW55KTtcblxuICAgICAgaWYgKGlucHV0LmlzRXJyb3IocHJlc2VudCkpXG4gICAgICAgIHJldHVybiBwcmVzZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIFB1c2ggb2JqZWN0IG9uIHN0YWNrXG4gIHZhciBwcmV2T2JqO1xuICBpZiAoc3RhdGUub2JqICYmIHByZXNlbnQpXG4gICAgcHJldk9iaiA9IGlucHV0LmVudGVyT2JqZWN0KCk7XG5cbiAgaWYgKHByZXNlbnQpIHtcbiAgICAvLyBVbndyYXAgZXhwbGljaXQgdmFsdWVzXG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKSB7XG4gICAgICB2YXIgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICB2YXIgc3RhcnQgPSBpbnB1dC5vZmZzZXQ7XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgdmFyIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICB2YXIgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgc3RhcnQsIGlucHV0Lmxlbmd0aCwgJ3RhZ2dlZCcpO1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgaW5wdXQub2Zmc2V0LCBpbnB1dC5sZW5ndGgsICdjb250ZW50Jyk7XG5cbiAgICAvLyBTZWxlY3QgcHJvcGVyIG1ldGhvZCBmb3IgdGFnXG4gICAgaWYgKHN0YXRlLmFueSlcbiAgICAgIHJlc3VsdCA9IHJlc3VsdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgIGVsc2VcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoaW5wdXQuaXNFcnJvcihyZXN1bHQpKVxuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIC8vIERlY29kZSBjaGlsZHJlblxuICAgIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCAmJiBzdGF0ZS5jaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiBkZWNvZGVDaGlsZHJlbihjaGlsZCkge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgaWdub3JpbmcgZXJyb3JzIGhlcmUsIHRvIGxldCBwYXJzZXIgY29udGludWUgd2l0aCBvdGhlclxuICAgICAgICAvLyBwYXJ0cyBvZiBlbmNvZGVkIGRhdGFcbiAgICAgICAgY2hpbGQuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEZWNvZGUgY29udGFpbmVkL2VuY29kZWQgYnkgc2NoZW1hLCBvbmx5IGluIGJpdCBvciBvY3RldCBzdHJpbmdzXG4gICAgaWYgKHN0YXRlLmNvbnRhaW5zICYmIChzdGF0ZS50YWcgPT09ICdvY3RzdHInIHx8IHN0YXRlLnRhZyA9PT0gJ2JpdHN0cicpKSB7XG4gICAgICB2YXIgZGF0YSA9IG5ldyBEZWNvZGVyQnVmZmVyKHJlc3VsdCk7XG4gICAgICByZXN1bHQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUuY29udGFpbnMsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgICAuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBQb3Agb2JqZWN0XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICByZXN1bHQgPSBpbnB1dC5sZWF2ZU9iamVjdChwcmV2T2JqKTtcblxuICAvLyBTZXQga2V5XG4gIGlmIChzdGF0ZS5rZXkgIT09IG51bGwgJiYgKHJlc3VsdCAhPT0gbnVsbCB8fCBwcmVzZW50ID09PSB0cnVlKSlcbiAgICBpbnB1dC5sZWF2ZUtleShwcmV2S2V5LCBzdGF0ZS5rZXksIHJlc3VsdCk7XG4gIGVsc2UgaWYgKHByZXZLZXkgIT09IG51bGwpXG4gICAgaW5wdXQuZXhpdEtleShwcmV2S2V5KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWMgPSBmdW5jdGlvbiBkZWNvZGVHZW5lcmljKHRhZywgaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICh0YWcgPT09ICdzZXEnIHx8IHRhZyA9PT0gJ3NldCcpXG4gICAgcmV0dXJuIG51bGw7XG4gIGlmICh0YWcgPT09ICdzZXFvZicgfHwgdGFnID09PSAnc2V0b2YnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVMaXN0KGlucHV0LCB0YWcsIHN0YXRlLmFyZ3NbMF0sIG9wdGlvbnMpO1xuICBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgc3RhdGUuYXJnc1swXSwgc3RhdGUuYXJnc1sxXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlT2JqaWQoaW5wdXQsIG51bGwsIG51bGwsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdnZW50aW1lJyB8fCB0YWcgPT09ICd1dGN0aW1lJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlVGltZShpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVOdWxsKGlucHV0LCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUJvb2woaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlU3RyKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVJbnQoaW5wdXQsIHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG5cbiAgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopXG4gICAgICAgIC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ3Vua25vd24gdGFnOiAnICsgdGFnKTtcbiAgfVxufTtcblxuTm9kZS5wcm90b3R5cGUuX2dldFVzZSA9IGZ1bmN0aW9uIF9nZXRVc2UoZW50aXR5LCBvYmopIHtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIC8vIENyZWF0ZSBhbHRlcmVkIHVzZSBkZWNvZGVyIGlmIGltcGxpY2l0IGlzIHNldFxuICBzdGF0ZS51c2VEZWNvZGVyID0gdGhpcy5fdXNlKGVudGl0eSwgb2JqKTtcbiAgYXNzZXJ0KHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmNoaWxkcmVuWzBdO1xuICBpZiAoc3RhdGUuaW1wbGljaXQgIT09IHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCkge1xuICAgIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLmNsb25lKCk7XG4gICAgc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0ID0gc3RhdGUuaW1wbGljaXQ7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLnVzZURlY29kZXI7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlQ2hvaWNlID0gZnVuY3Rpb24gZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIHJlc3VsdCA9IG51bGw7XG4gIHZhciBtYXRjaCA9IGZhbHNlO1xuXG4gIE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkuc29tZShmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICB2YXIgbm9kZSA9IHN0YXRlLmNob2ljZVtrZXldO1xuICAgIHRyeSB7XG4gICAgICB2YXIgdmFsdWUgPSBub2RlLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IodmFsdWUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJlc3VsdCA9IHsgdHlwZToga2V5LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKCFtYXRjaClcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ0Nob2ljZSBub3QgbWF0Y2hlZCcpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vL1xuLy8gRW5jb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgRW5jb2RlckJ1ZmZlcihkYXRhLCB0aGlzLnJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsICYmIHN0YXRlWydkZWZhdWx0J10gPT09IGRhdGEpXG4gICAgcmV0dXJuO1xuXG4gIHZhciByZXN1bHQgPSB0aGlzLl9lbmNvZGVWYWx1ZShkYXRhLCByZXBvcnRlciwgcGFyZW50KTtcbiAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybjtcblxuICBpZiAodGhpcy5fc2tpcERlZmF1bHQocmVzdWx0LCByZXBvcnRlciwgcGFyZW50KSlcbiAgICByZXR1cm47XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVWYWx1ZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuWzBdLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIgfHwgbmV3IFJlcG9ydGVyKCkpO1xuXG4gIHZhciByZXN1bHQgPSBudWxsO1xuXG4gIC8vIFNldCByZXBvcnRlciB0byBzaGFyZSBpdCB3aXRoIGEgY2hpbGQgY2xhc3NcbiAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyO1xuXG4gIC8vIENoZWNrIGlmIGRhdGEgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsICYmIGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsKVxuICAgICAgZGF0YSA9IHN0YXRlWydkZWZhdWx0J11cbiAgICBlbHNlXG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbmNvZGUgY2hpbGRyZW4gZmlyc3RcbiAgdmFyIGNvbnRlbnQgPSBudWxsO1xuICB2YXIgcHJpbWl0aXZlID0gZmFsc2U7XG4gIGlmIChzdGF0ZS5hbnkpIHtcbiAgICAvLyBBbnl0aGluZyB0aGF0IHdhcyBnaXZlbiBpcyB0cmFuc2xhdGVkIHRvIGJ1ZmZlclxuICAgIHJlc3VsdCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY2hvaWNlKSB7XG4gICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ2hvaWNlKGRhdGEsIHJlcG9ydGVyKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jb250YWlucykge1xuICAgIGNvbnRlbnQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUuY29udGFpbnMsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaGlsZHJlbikge1xuICAgIGNvbnRlbnQgPSBzdGF0ZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLnRhZyA9PT0gJ251bGxfJylcbiAgICAgICAgcmV0dXJuIGNoaWxkLl9lbmNvZGUobnVsbCwgcmVwb3J0ZXIsIGRhdGEpO1xuXG4gICAgICBpZiAoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkgPT09IG51bGwpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgc2hvdWxkIGhhdmUgYSBrZXknKTtcbiAgICAgIHZhciBwcmV2S2V5ID0gcmVwb3J0ZXIuZW50ZXJLZXkoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkpO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCcpO1xuXG4gICAgICB2YXIgcmVzID0gY2hpbGQuX2VuY29kZShkYXRhW2NoaWxkLl9iYXNlU3RhdGUua2V5XSwgcmVwb3J0ZXIsIGRhdGEpO1xuICAgICAgcmVwb3J0ZXIubGVhdmVLZXkocHJldktleSk7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgdGhpcykuZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSk7XG4gICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJ3NlcW9mJyB8fCBzdGF0ZS50YWcgPT09ICdzZXRvZicpIHtcbiAgICAgIC8vIFRPRE8oaW5kdXRueSk6IHRoaXMgc2hvdWxkIGJlIHRocm93biBvbiBEU0wgbGV2ZWxcbiAgICAgIGlmICghKHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJncy5sZW5ndGggPT09IDEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1RvbyBtYW55IGFyZ3MgZm9yIDogJyArIHN0YXRlLnRhZyk7XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSlcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Jyk7XG5cbiAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGNoaWxkLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICAgICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS5hcmdzWzBdLCBkYXRhKS5fZW5jb2RlKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIH0sIGNoaWxkKSk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9lbmNvZGVQcmltaXRpdmUoc3RhdGUudGFnLCBkYXRhKTtcbiAgICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5jb2RlIGRhdGEgaXRzZWxmXG4gIHZhciByZXN1bHQ7XG4gIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgIHZhciB0YWcgPSBzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbCA/IHN0YXRlLmltcGxpY2l0IDogc3RhdGUudGFnO1xuICAgIHZhciBjbHMgPSBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCA/ICd1bml2ZXJzYWwnIDogJ2NvbnRleHQnO1xuXG4gICAgaWYgKHRhZyA9PT0gbnVsbCkge1xuICAgICAgaWYgKHN0YXRlLnVzZSA9PT0gbnVsbClcbiAgICAgICAgcmVwb3J0ZXIuZXJyb3IoJ1RhZyBjb3VsZCBiZSBvbW1pdGVkIG9ubHkgZm9yIC51c2UoKScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUodGFnLCBwcmltaXRpdmUsIGNscywgY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gV3JhcCBpbiBleHBsaWNpdFxuICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ29tcG9zaXRlKHN0YXRlLmV4cGxpY2l0LCBmYWxzZSwgJ2NvbnRleHQnLCByZXN1bHQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlID0gZnVuY3Rpb24gZW5jb2RlQ2hvaWNlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICB2YXIgbm9kZSA9IHN0YXRlLmNob2ljZVtkYXRhLnR5cGVdO1xuICBpZiAoIW5vZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBkYXRhLnR5cGUgKyAnIG5vdCBmb3VuZCBpbiAnICtcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkpKTtcbiAgfVxuICByZXR1cm4gbm9kZS5fZW5jb2RlKGRhdGEudmFsdWUsIHJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVQcmltaXRpdmUgPSBmdW5jdGlvbiBlbmNvZGVQcmltaXRpdmUodGFnLCBkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBzdGF0ZS5yZXZlcnNlQXJnc1swXSwgc3RhdGUuYXJnc1sxXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVUaW1lKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVJbnQoZGF0YSwgc3RhdGUuYXJncyAmJiBzdGF0ZS5yZXZlcnNlQXJnc1swXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVCb29sKGRhdGEpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHN0cik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICByZXR1cm4geyBvYmo6IHN0YXRlLm9iaiwgcGF0aExlbjogc3RhdGUucGF0aC5sZW5ndGggfTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShkYXRhKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXhpdEtleSA9IGZ1bmN0aW9uIGV4aXRLZXkoaW5kZXgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBpbmRleCAtIDEpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5ID0gZnVuY3Rpb24gbGVhdmVLZXkoaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB0aGlzLmV4aXRLZXkoaW5kZXgpO1xuICBpZiAoc3RhdGUub2JqICE9PSBudWxsKVxuICAgIHN0YXRlLm9ialtrZXldID0gdmFsdWU7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbignLycpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyT2JqZWN0ID0gZnVuY3Rpb24gZW50ZXJPYmplY3QoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIHByZXYgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHt9O1xuICByZXR1cm4gcHJldjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdCA9IGZ1bmN0aW9uIGxlYXZlT2JqZWN0KHByZXYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgbm93ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSBwcmV2O1xuICByZXR1cm4gbm93O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gIHZhciBlcnI7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdmFyIGluaGVyaXRlZCA9IG1zZyBpbnN0YW5jZW9mIFJlcG9ydGVyRXJyb3I7XG4gIGlmIChpbmhlcml0ZWQpIHtcbiAgICBlcnIgPSBtc2c7XG4gIH0gZWxzZSB7XG4gICAgZXJyID0gbmV3IFJlcG9ydGVyRXJyb3Ioc3RhdGUucGF0aC5tYXAoZnVuY3Rpb24oZWxlbSkge1xuICAgICAgcmV0dXJuICdbJyArIEpTT04uc3RyaW5naWZ5KGVsZW0pICsgJ10nO1xuICAgIH0pLmpvaW4oJycpLCBtc2cubWVzc2FnZSB8fCBtc2csIG1zZy5zdGFjayk7XG4gIH1cblxuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICB0aHJvdyBlcnI7XG5cbiAgaWYgKCFpbmhlcml0ZWQpXG4gICAgc3RhdGUuZXJyb3JzLnB1c2goZXJyKTtcblxuICByZXR1cm4gZXJyO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLndyYXBSZXN1bHQgPSBmdW5jdGlvbiB3cmFwUmVzdWx0KHJlc3VsdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiB0aGlzLmlzRXJyb3IocmVzdWx0KSA/IG51bGwgOiByZXN1bHQsXG4gICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnNcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIFJlcG9ydGVyRXJyb3IocGF0aCwgbXNnKSB7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucmV0aHJvdyhtc2cpO1xufTtcbmluaGVyaXRzKFJlcG9ydGVyRXJyb3IsIEVycm9yKTtcblxuUmVwb3J0ZXJFcnJvci5wcm90b3R5cGUucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3cobXNnKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1zZyArICcgYXQ6ICcgKyAodGhpcy5wYXRoIHx8ICcoc2hhbGxvdyknKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcG9ydGVyRXJyb3IpO1xuXG4gIGlmICghdGhpcy5zdGFjaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBJRSBvbmx5IGFkZHMgc3RhY2sgd2hlbiB0aHJvd25cbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG4iLCJ2YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzJyk7XG5cbmV4cG9ydHMudGFnQ2xhc3MgPSB7XG4gIDA6ICd1bml2ZXJzYWwnLFxuICAxOiAnYXBwbGljYXRpb24nLFxuICAyOiAnY29udGV4dCcsXG4gIDM6ICdwcml2YXRlJ1xufTtcbmV4cG9ydHMudGFnQ2xhc3NCeU5hbWUgPSBjb25zdGFudHMuX3JldmVyc2UoZXhwb3J0cy50YWdDbGFzcyk7XG5cbmV4cG9ydHMudGFnID0ge1xuICAweDAwOiAnZW5kJyxcbiAgMHgwMTogJ2Jvb2wnLFxuICAweDAyOiAnaW50JyxcbiAgMHgwMzogJ2JpdHN0cicsXG4gIDB4MDQ6ICdvY3RzdHInLFxuICAweDA1OiAnbnVsbF8nLFxuICAweDA2OiAnb2JqaWQnLFxuICAweDA3OiAnb2JqRGVzYycsXG4gIDB4MDg6ICdleHRlcm5hbCcsXG4gIDB4MDk6ICdyZWFsJyxcbiAgMHgwYTogJ2VudW0nLFxuICAweDBiOiAnZW1iZWQnLFxuICAweDBjOiAndXRmOHN0cicsXG4gIDB4MGQ6ICdyZWxhdGl2ZU9pZCcsXG4gIDB4MTA6ICdzZXEnLFxuICAweDExOiAnc2V0JyxcbiAgMHgxMjogJ251bXN0cicsXG4gIDB4MTM6ICdwcmludHN0cicsXG4gIDB4MTQ6ICd0NjFzdHInLFxuICAweDE1OiAndmlkZW9zdHInLFxuICAweDE2OiAnaWE1c3RyJyxcbiAgMHgxNzogJ3V0Y3RpbWUnLFxuICAweDE4OiAnZ2VudGltZScsXG4gIDB4MTk6ICdncmFwaHN0cicsXG4gIDB4MWE6ICdpc282NDZzdHInLFxuICAweDFiOiAnZ2Vuc3RyJyxcbiAgMHgxYzogJ3VuaXN0cicsXG4gIDB4MWQ6ICdjaGFyc3RyJyxcbiAgMHgxZTogJ2JtcHN0cidcbn07XG5leHBvcnRzLnRhZ0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZyk7XG4iLCJ2YXIgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICB2YXIgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICB2YXIgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xudmFyIGJpZ251bSA9IGFzbjEuYmlnbnVtO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRGVjb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBiYXNlLkRlY29kZXJCdWZmZXIpKVxuICAgIGRhdGEgPSBuZXcgYmFzZS5EZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLnRyZWUuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsICdGYWlsZWQgdG8gcGVlayB0YWc6IFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgYnVmZmVyLnJlc3RvcmUoc3RhdGUpO1xuXG4gIHJldHVybiBkZWNvZGVkVGFnLnRhZyA9PT0gdGFnIHx8IGRlY29kZWRUYWcudGFnU3RyID09PSB0YWcgfHxcbiAgICAoZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnKSA9PT0gdGFnIHx8IGFueTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUYWcgPSBmdW5jdGlvbiBkZWNvZGVUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICB2YXIgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIHZhciBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgICBidWZmZXIsXG4gICAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKVxuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIHZhciByZXMgPSBkZWNvZGVyLmRlY29kZShidWZmZXIsICdkZXInLCBvcHRpb25zKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSAmJiBwb3NzaWJsZUVuZClcbiAgICAgIGJyZWFrO1xuICAgIHJlc3VsdC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVTdHIgPSBmdW5jdGlvbiBkZWNvZGVTdHIoYnVmZmVyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICB2YXIgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIHZhciByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIHZhciBzdHIgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgdmFyIG51bXN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKG51bXN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBudW1zdHI7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2N0c3RyJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIHZhciBwcmludHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzUHJpbnRzdHIocHJpbnRzdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBwcmludHN0cjtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICsgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQgPSBmdW5jdGlvbiBkZWNvZGVPYmppZChidWZmZXIsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgdmFyIHJlc3VsdDtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG4gIHZhciBpZGVudCA9IDA7XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHZhciBzdWJpZGVudCA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBpZGVudCA8PD0gNztcbiAgICBpZGVudCB8PSBzdWJpZGVudCAmIDB4N2Y7XG4gICAgaWYgKChzdWJpZGVudCAmIDB4ODApID09PSAwKSB7XG4gICAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50KTtcbiAgICAgIGlkZW50ID0gMDtcbiAgICB9XG4gIH1cbiAgaWYgKHN1YmlkZW50ICYgMHg4MClcbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50KTtcblxuICB2YXIgZmlyc3QgPSAoaWRlbnRpZmllcnNbMF0gLyA0MCkgfCAwO1xuICB2YXIgc2Vjb25kID0gaWRlbnRpZmllcnNbMF0gJSA0MDtcblxuICBpZiAocmVsYXRpdmUpXG4gICAgcmVzdWx0ID0gaWRlbnRpZmllcnM7XG4gIGVsc2VcbiAgICByZXN1bHQgPSBbZmlyc3QsIHNlY29uZF0uY29uY2F0KGlkZW50aWZpZXJzLnNsaWNlKDEpKTtcblxuICBpZiAodmFsdWVzKSB7XG4gICAgdmFyIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignICcpXTtcbiAgICBpZiAodG1wID09PSB1bmRlZmluZWQpXG4gICAgICB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJy4nKV07XG4gICAgaWYgKHRtcCAhPT0gdW5kZWZpbmVkKVxuICAgICAgcmVzdWx0ID0gdG1wO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUaW1lID0gZnVuY3Rpb24gZGVjb2RlVGltZShidWZmZXIsIHRhZykge1xuICB2YXIgc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHZhciB5ZWFyID0gc3RyLnNsaWNlKDAsIDQpIHwgMDtcbiAgICB2YXIgbW9uID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICB2YXIgZGF5ID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgaG91ciA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHZhciBtaW4gPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMiwgMTQpIHwgMDtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHZhciB5ZWFyID0gc3RyLnNsaWNlKDAsIDIpIHwgMDtcbiAgICB2YXIgbW9uID0gc3RyLnNsaWNlKDIsIDQpIHwgMDtcbiAgICB2YXIgZGF5ID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICB2YXIgaG91ciA9IHN0ci5zbGljZSg2LCA4KSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHZhciBzZWMgPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgaWYgKHllYXIgPCA3MClcbiAgICAgIHllYXIgPSAyMDAwICsgeWVhcjtcbiAgICBlbHNlXG4gICAgICB5ZWFyID0gMTkwMCArIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIERhdGUuVVRDKHllYXIsIG1vbiAtIDEsIGRheSwgaG91ciwgbWluLCBzZWMsIDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU51bGwgPSBmdW5jdGlvbiBkZWNvZGVOdWxsKGJ1ZmZlcikge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVCb29sID0gZnVuY3Rpb24gZGVjb2RlQm9vbChidWZmZXIpIHtcbiAgdmFyIHJlcyA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcbiAgZWxzZVxuICAgIHJldHVybiByZXMgIT09IDA7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ1ZmZlciwgdmFsdWVzKSB7XG4gIC8vIEJpZ2ludCwgcmV0dXJuIGFzIGl0IGlzIChhc3N1bWUgYmlnIGVuZGlhbilcbiAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgdmFyIHJlcyA9IG5ldyBiaWdudW0ocmF3KTtcblxuICBpZiAodmFsdWVzKVxuICAgIHJlcyA9IHZhbHVlc1tyZXMudG9TdHJpbmcoMTApXSB8fCByZXM7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldERlY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZGVyRGVjb2RlVGFnKGJ1ZiwgZmFpbCkge1xuICB2YXIgdGFnID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKHRhZykpXG4gICAgcmV0dXJuIHRhZztcblxuICB2YXIgY2xzID0gZGVyLnRhZ0NsYXNzW3RhZyA+PiA2XTtcbiAgdmFyIHByaW1pdGl2ZSA9ICh0YWcgJiAweDIwKSA9PT0gMDtcblxuICAvLyBNdWx0aS1vY3RldCB0YWcgLSBsb2FkXG4gIGlmICgodGFnICYgMHgxZikgPT09IDB4MWYpIHtcbiAgICB2YXIgb2N0ID0gdGFnO1xuICAgIHRhZyA9IDA7XG4gICAgd2hpbGUgKChvY3QgJiAweDgwKSA9PT0gMHg4MCkge1xuICAgICAgb2N0ID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICAgIGlmIChidWYuaXNFcnJvcihvY3QpKVxuICAgICAgICByZXR1cm4gb2N0O1xuXG4gICAgICB0YWcgPDw9IDc7XG4gICAgICB0YWcgfD0gb2N0ICYgMHg3ZjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGFnICY9IDB4MWY7XG4gIH1cbiAgdmFyIHRhZ1N0ciA9IGRlci50YWdbdGFnXTtcblxuICByZXR1cm4ge1xuICAgIGNsczogY2xzLFxuICAgIHByaW1pdGl2ZTogcHJpbWl0aXZlLFxuICAgIHRhZzogdGFnLFxuICAgIHRhZ1N0cjogdGFnU3RyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlckRlY29kZUxlbihidWYsIHByaW1pdGl2ZSwgZmFpbCkge1xuICB2YXIgbGVuID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICAvLyBJbmRlZmluaXRlIGZvcm1cbiAgaWYgKCFwcmltaXRpdmUgJiYgbGVuID09PSAweDgwKVxuICAgIHJldHVybiBudWxsO1xuXG4gIC8vIERlZmluaXRlIGZvcm1cbiAgaWYgKChsZW4gJiAweDgwKSA9PT0gMCkge1xuICAgIC8vIFNob3J0IGZvcm1cbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIHZhciBudW0gPSBsZW4gJiAweDdmO1xuICBpZiAobnVtID4gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICB2YXIgaiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgaWYgKGJ1Zi5pc0Vycm9yKGopKVxuICAgICAgcmV0dXJuIGo7XG4gICAgbGVuIHw9IGo7XG4gIH1cblxuICByZXR1cm4gbGVuO1xufVxuIiwidmFyIGRlY29kZXJzID0gZXhwb3J0cztcblxuZGVjb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmRlY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIERFUkRlY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1EZWNvZGVyKGVudGl0eSkge1xuICBERVJEZWNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1EZWNvZGVyLCBERVJEZWNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRGVjb2RlcjtcblxuUEVNRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGxpbmVzID0gZGF0YS50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyk7XG5cbiAgdmFyIGxhYmVsID0gb3B0aW9ucy5sYWJlbC50b1VwcGVyQ2FzZSgpO1xuXG4gIHZhciByZSA9IC9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztcbiAgdmFyIHN0YXJ0ID0gLTE7XG4gIHZhciBlbmQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtYXRjaCA9IGxpbmVzW2ldLm1hdGNoKHJlKTtcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChtYXRjaFsyXSAhPT0gbGFiZWwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChzdGFydCA9PT0gLTEpIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0JFR0lOJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0VORCcpXG4gICAgICAgIGJyZWFrO1xuICAgICAgZW5kID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAnICsgbGFiZWwpO1xuXG4gIHZhciBiYXNlNjQgPSBsaW5lcy5zbGljZShzdGFydCArIDEsIGVuZCkuam9pbignJyk7XG4gIC8vIFJlbW92ZSBleGNlc3NpdmUgc3ltYm9sc1xuICBiYXNlNjQucmVwbGFjZSgvW15hLXowLTlcXCtcXC89XSsvZ2ksICcnKTtcblxuICB2YXIgaW5wdXQgPSBuZXcgQnVmZmVyKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcywgaW5wdXQsIG9wdGlvbnMpO1xufTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJy4uLy4uL2FzbjEnKTtcbnZhciBiYXNlID0gYXNuMS5iYXNlO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xudmFyIGRlciA9IGFzbjEuY29uc3RhbnRzLmRlcjtcblxuZnVuY3Rpb24gREVSRW5jb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn07XG5tb2R1bGUuZXhwb3J0cyA9IERFUkVuY29kZXI7XG5cbkRFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpLmpvaW4oKTtcbn07XG5cbi8vIFRyZWUgbWV0aG9kc1xuXG5mdW5jdGlvbiBERVJOb2RlKHBhcmVudCkge1xuICBiYXNlLk5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIGJhc2UuTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGUgPSBmdW5jdGlvbiBlbmNvZGVDb21wb3NpdGUodGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkge1xuICB2YXIgZW5jb2RlZFRhZyA9IGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCB0aGlzLnJlcG9ydGVyKTtcblxuICAvLyBTaG9ydCBmb3JtXG4gIGlmIChjb250ZW50Lmxlbmd0aCA8IDB4ODApIHtcbiAgICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigyKTtcbiAgICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICAgIGhlYWRlclsxXSA9IGNvbnRlbnQubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIC8vIENvdW50IG9jdGV0cyByZXF1aXJlZCB0byBzdG9yZSBsZW5ndGhcbiAgdmFyIGxlbk9jdGV0cyA9IDE7XG4gIGZvciAodmFyIGkgPSBjb250ZW50Lmxlbmd0aDsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBsZW5PY3RldHMrKztcblxuICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcigxICsgMSArIGxlbk9jdGV0cyk7XG4gIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gIGhlYWRlclsxXSA9IDB4ODAgfCBsZW5PY3RldHM7XG5cbiAgZm9yICh2YXIgaSA9IDEgKyBsZW5PY3RldHMsIGogPSBjb250ZW50Lmxlbmd0aDsgaiA+IDA7IGktLSwgaiA+Pj0gOClcbiAgICBoZWFkZXJbaV0gPSBqICYgMHhmZjtcblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVTdHIgPSBmdW5jdGlvbiBlbmNvZGVTdHIoc3RyLCB0YWcpIHtcbiAgaWYgKHRhZyA9PT0gJ2JpdHN0cicpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIHN0ci51bnVzZWQgfCAwLCBzdHIuZGF0YSBdKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCAqIDIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidWYud3JpdGVVSW50MTZCRShzdHIuY2hhckNvZGVBdChpKSwgaSAqIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihidWYpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgZGlnaXRzIGFuZCBzcGFjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXN0aW9uIG1hcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVPYmppZCA9IGZ1bmN0aW9uIGVuY29kZU9iamlkKGlkLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignc3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KGlkKSlcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCcpO1xuICAgIGlkID0gdmFsdWVzW2lkXS5zcGxpdCgvW1xcc1xcLl0rL2cpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgaWQgPSBpZC5zbGljZSgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ290OiAnICsgSlNPTi5zdHJpbmdpZnkoaWQpKTtcbiAgfVxuXG4gIGlmICghcmVsYXRpdmUpIHtcbiAgICBpZiAoaWRbMV0gPj0gNDApXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CJyk7XG4gICAgaWQuc3BsaWNlKDAsIDIsIGlkWzBdICogNDAgKyBpZFsxXSk7XG4gIH1cblxuICAvLyBDb3VudCBudW1iZXIgb2Ygb2N0ZXRzXG4gIHZhciBzaXplID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpZGVudCA9IGlkW2ldO1xuICAgIGZvciAoc2l6ZSsrOyBpZGVudCA+PSAweDgwOyBpZGVudCA+Pj0gNylcbiAgICAgIHNpemUrKztcbiAgfVxuXG4gIHZhciBvYmppZCA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIHZhciBvZmZzZXQgPSBvYmppZC5sZW5ndGggLSAxO1xuICBmb3IgKHZhciBpID0gaWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgaWRlbnQgPSBpZFtpXTtcbiAgICBvYmppZFtvZmZzZXQtLV0gPSBpZGVudCAmIDB4N2Y7XG4gICAgd2hpbGUgKChpZGVudCA+Pj0gNykgPiAwKVxuICAgICAgb2JqaWRbb2Zmc2V0LS1dID0gMHg4MCB8IChpZGVudCAmIDB4N2YpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIob2JqaWQpO1xufTtcblxuZnVuY3Rpb24gdHdvKG51bSkge1xuICBpZiAobnVtIDwgMTApXG4gICAgcmV0dXJuICcwJyArIG51bTtcbiAgZWxzZVxuICAgIHJldHVybiBudW07XG59XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVUaW1lID0gZnVuY3Rpb24gZW5jb2RlVGltZSh0aW1lLCB0YWcpIHtcbiAgdmFyIHN0cjtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcblxuICBpZiAodGFnID09PSAnZ2VudGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRGdWxsWWVhcigpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldEZ1bGxZZWFyKCkgJSAxMDApLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nICcgKyB0YWcgKyAnIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoc3RyLCAnb2N0c3RyJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlTnVsbCA9IGZ1bmN0aW9uIGVuY29kZU51bGwoKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCcnKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtLCB2YWx1ZXMpIHtcbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KG51bSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdWYWx1ZXMgbWFwIGRvZXNuXFwndCBjb250YWluOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG51bSkpO1xuICAgIH1cbiAgICBudW0gPSB2YWx1ZXNbbnVtXTtcbiAgfVxuXG4gIC8vIEJpZ251bSwgYXNzdW1lIGJpZyBlbmRpYW5cbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmICFCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIHZhciBudW1BcnJheSA9IG51bS50b0FycmF5KCk7XG4gICAgaWYgKCFudW0uc2lnbiAmJiBudW1BcnJheVswXSAmIDB4ODApIHtcbiAgICAgIG51bUFycmF5LnVuc2hpZnQoMCk7XG4gICAgfVxuICAgIG51bSA9IG5ldyBCdWZmZXIobnVtQXJyYXkpO1xuICB9XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgdmFyIHNpemUgPSBudW0ubGVuZ3RoO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgc2l6ZSsrO1xuXG4gICAgdmFyIG91dCA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gICAgbnVtLmNvcHkob3V0KTtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIG91dFswXSA9IDBcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvdXQpO1xuICB9XG5cbiAgaWYgKG51bSA8IDB4ODApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobnVtKTtcblxuICBpZiAobnVtIDwgMHgxMDApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsIG51bV0pO1xuXG4gIHZhciBzaXplID0gMTtcbiAgZm9yICh2YXIgaSA9IG51bTsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBzaXplKys7XG5cbiAgdmFyIG91dCA9IG5ldyBBcnJheShzaXplKTtcbiAgZm9yICh2YXIgaSA9IG91dC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIG91dFtpXSA9IG51bSAmIDB4ZmY7XG4gICAgbnVtID4+PSA4O1xuICB9XG4gIGlmKG91dFswXSAmIDB4ODApIHtcbiAgICBvdXQudW5zaGlmdCgwKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG5ldyBCdWZmZXIob3V0KSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQm9vbCA9IGZ1bmN0aW9uIGVuY29kZUJvb2wodmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodmFsdWUgPyAweGZmIDogMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXRFbmNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3NraXBEZWZhdWx0ID0gZnVuY3Rpb24gc2tpcERlZmF1bHQoZGF0YUJ1ZmZlciwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBpO1xuICBpZiAoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGRhdGEgPSBkYXRhQnVmZmVyLmpvaW4oKTtcbiAgaWYgKHN0YXRlLmRlZmF1bHRCdWZmZXIgPT09IHVuZGVmaW5lZClcbiAgICBzdGF0ZS5kZWZhdWx0QnVmZmVyID0gdGhpcy5fZW5jb2RlVmFsdWUoc3RhdGVbJ2RlZmF1bHQnXSwgcmVwb3J0ZXIsIHBhcmVudCkuam9pbigpO1xuXG4gIGlmIChkYXRhLmxlbmd0aCAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoaT0wOyBpIDwgZGF0YS5sZW5ndGg7IGkrKylcbiAgICBpZiAoZGF0YVtpXSAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlcltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBlbmNvZGVUYWcodGFnLCBwcmltaXRpdmUsIGNscywgcmVwb3J0ZXIpIHtcbiAgdmFyIHJlcztcblxuICBpZiAodGFnID09PSAnc2Vxb2YnKVxuICAgIHRhZyA9ICdzZXEnO1xuICBlbHNlIGlmICh0YWcgPT09ICdzZXRvZicpXG4gICAgdGFnID0gJ3NldCc7XG5cbiAgaWYgKGRlci50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkodGFnKSlcbiAgICByZXMgPSBkZXIudGFnQnlOYW1lW3RhZ107XG4gIGVsc2UgaWYgKHR5cGVvZiB0YWcgPT09ICdudW1iZXInICYmICh0YWcgfCAwKSA9PT0gdGFnKVxuICAgIHJlcyA9IHRhZztcbiAgZWxzZVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5rbm93biB0YWc6ICcgKyB0YWcpO1xuXG4gIGlmIChyZXMgPj0gMHgxZilcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ011bHRpLW9jdGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRlZCcpO1xuXG4gIGlmICghcHJpbWl0aXZlKVxuICAgIHJlcyB8PSAweDIwO1xuXG4gIHJlcyB8PSAoZGVyLnRhZ0NsYXNzQnlOYW1lW2NscyB8fCAndW5pdmVyc2FsJ10gPDwgNik7XG5cbiAgcmV0dXJuIHJlcztcbn1cbiIsInZhciBlbmNvZGVycyA9IGV4cG9ydHM7XG5cbmVuY29kZXJzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5lbmNvZGVycy5wZW0gPSByZXF1aXJlKCcuL3BlbScpO1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIERFUkVuY29kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuXG5mdW5jdGlvbiBQRU1FbmNvZGVyKGVudGl0eSkge1xuICBERVJFbmNvZGVyLmNhbGwodGhpcywgZW50aXR5KTtcbiAgdGhpcy5lbmMgPSAncGVtJztcbn07XG5pbmhlcml0cyhQRU1FbmNvZGVyLCBERVJFbmNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRW5jb2RlcjtcblxuUEVNRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGJ1ZiA9IERFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gIHZhciBwID0gYnVmLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgdmFyIG91dCA9IFsgJy0tLS0tQkVHSU4gJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nIF07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkgKz0gNjQpXG4gICAgb3V0LnB1c2gocC5zbGljZShpLCBpICsgNjQpKTtcbiAgb3V0LnB1c2goJy0tLS0tRU5EICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyk7XG4gIHJldHVybiBvdXQuam9pbignXFxuJyk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2FycmF5L2Zyb21cIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnblwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2dldC1vd24tcHJvcGVydHktZGVzY3JpcHRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3NldFwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2RlZmluZVByb3BlcnR5ID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZpbmVQcm9wZXJ0eSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTtcbiAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2dldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2dldC1wcm90b3R5cGUtb2ZcIik7XG5cbnZhciBfZ2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX2dldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3JcIik7XG5cbnZhciBfZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldE93blByb3BlcnR5RGVzY3JpcHRvcik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIGdldChvYmplY3QsIHByb3BlcnR5LCByZWNlaXZlcikge1xuICBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIHZhciBkZXNjID0gKDAsIF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IyLmRlZmF1bHQpKG9iamVjdCwgcHJvcGVydHkpO1xuXG4gIGlmIChkZXNjID09PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgcGFyZW50ID0gKDAsIF9nZXRQcm90b3R5cGVPZjIuZGVmYXVsdCkob2JqZWN0KTtcblxuICAgIGlmIChwYXJlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXQocGFyZW50LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChcInZhbHVlXCIgaW4gZGVzYykge1xuICAgIHJldHVybiBkZXNjLnZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBnZXR0ZXIgPSBkZXNjLmdldDtcblxuICAgIGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3NldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L3NldC1wcm90b3R5cGUtb2ZcIik7XG5cbnZhciBfc2V0UHJvdG90eXBlT2YyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2V0UHJvdG90eXBlT2YpO1xuXG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9jcmVhdGVcIik7XG5cbnZhciBfY3JlYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZSk7XG5cbnZhciBfdHlwZW9mMiA9IHJlcXVpcmUoXCIuLi9oZWxwZXJzL3R5cGVvZlwiKTtcblxudmFyIF90eXBlb2YzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdHlwZW9mMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyAodHlwZW9mIHN1cGVyQ2xhc3MgPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogKDAsIF90eXBlb2YzLmRlZmF1bHQpKHN1cGVyQ2xhc3MpKSk7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSAoMCwgX2NyZWF0ZTIuZGVmYXVsdCkoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCA/ICgwLCBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKFwiLi4vaGVscGVycy90eXBlb2ZcIik7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc2VsZiwgY2FsbCkge1xuICBpZiAoIXNlbGYpIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gY2FsbCAmJiAoKHR5cGVvZiBjYWxsID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShjYWxsKSkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZnJvbSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2FycmF5L2Zyb21cIik7XG5cbnZhciBfZnJvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mcm9tKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMltpXSA9IGFycltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKDAsIF9mcm9tMi5kZWZhdWx0KShhcnIpO1xuICB9XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2l0ZXJhdG9yID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sL2l0ZXJhdG9yXCIpO1xuXG52YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTtcblxudmFyIF9zeW1ib2wgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2xcIik7XG5cbnZhciBfc3ltYm9sMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N5bWJvbCk7XG5cbnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgX2l0ZXJhdG9yMi5kZWZhdWx0ID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgX3R5cGVvZihfaXRlcmF0b3IyLmRlZmF1bHQpID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiBfdHlwZW9mKG9iaik7XG59OyIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIHBsYWNlSG9sZGVyc0NvdW50IChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpXG4gIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcbiAgLy8gcmVwcmVzZW50IG9uZSBieXRlXG4gIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlc1xuICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG4gIHJldHVybiBiNjRbbGVuIC0gMl0gPT09ICc9JyA/IDIgOiBiNjRbbGVuIC0gMV0gPT09ICc9JyA/IDEgOiAwXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICAvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAgcmV0dXJuIGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVyc0NvdW50KGI2NClcbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFyclxuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuICBwbGFjZUhvbGRlcnMgPSBwbGFjZUhvbGRlcnNDb3VudChiNjQpXG5cbiAgYXJyID0gbmV3IEFycihsZW4gKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlblxuXG4gIHZhciBMID0gMFxuXG4gIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmJyArICdmZXInKS5CdWZmZXI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXggKHN0ciwgc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByIDw8PSA0O1xuXG4gICAgICAvLyAnYScgLSAnZidcbiAgICAgIGlmIChjID49IDQ5ICYmIGMgPD0gNTQpIHtcbiAgICAgICAgciB8PSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJyAtICdGJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3ICYmIGMgPD0gMjIpIHtcbiAgICAgICAgciB8PSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciB8PSBjICYgMHhmO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQpIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICAvLyBTY2FuIDI0LWJpdCBjaHVua3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBudW1iZXJcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gNiwgaiA9IDA7IGkgPj0gc3RhcnQ7IGkgLT0gNikge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgaSwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgLy8gTk9URTogYDB4M2ZmZmZmYCBpcyBpbnRlbnRpb25hbCBoZXJlLCAyNmJpdHMgbWF4IHNoaWZ0ICsgMjRiaXQgaGV4IGxpbWJcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICAgIG9mZiArPSAyNDtcbiAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICBqKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpICsgNiAhPT0gc3RhcnQpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIHN0YXJ0LCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgfVxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbi8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIGlmICh0aGlzLnJhbmQuZ2V0Qnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhuKTtcblxuICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKVxuICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gIHJldHVybiByZXM7XG59O1xuXG5pZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG4gIGlmIChzZWxmLmNyeXB0byAmJiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBNb2Rlcm4gYnJvd3NlcnNcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnIpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9O1xuICB9IGVsc2UgaWYgKHNlbGYubXNDcnlwdG8gJiYgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBJRVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAvLyBTYWZhcmkncyBXZWJXb3JrZXJzIGRvIG5vdCBoYXZlIGBjcnlwdG9gXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBPbGQganVua1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICB9O1xuICB9XG59IGVsc2Uge1xuICAvLyBOb2RlLmpzIG9yIFdlYiB3b3JrZXIgd2l0aCBubyBjcnlwdG8gc3VwcG9ydFxuICB0cnkge1xuICAgIHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKG4pO1xuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuIiwiIiwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJ1JTQS1TSEEyMjQnXSA9IGV4cG9ydHMuc2hhMjI0V2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMjU2J10gPSBleHBvcnRzLnNoYTI1NldpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTI1NicsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMCcsICdoZXgnKVxufVxuZXhwb3J0c1snUlNBLVNIQTM4NCddID0gZXhwb3J0cy5zaGEzODRXaXRoUlNBRW5jcnlwdGlvbiA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdzaGEzODQnLFxuICBpZDogbmV3IEJ1ZmZlcignMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzAnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1TSEE1MTInXSA9IGV4cG9ydHMuc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24gPSB7XG4gIHNpZ246ICdyc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJzMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwJywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtU0hBMSddID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydlY2RzYS13aXRoLVNIQTEnXSA9IHtcbiAgc2lnbjogJ2VjZHNhJyxcbiAgaGFzaDogJ3NoYTEnLFxuICBpZDogbmV3IEJ1ZmZlcignJywgJ2hleCcpXG59XG5cbmV4cG9ydHMuRFNBID0gZXhwb3J0c1snRFNBLVNIQTEnXSA9IGV4cG9ydHNbJ0RTQS1TSEEnXSA9IHtcbiAgc2lnbjogJ2RzYScsXG4gIGhhc2g6ICdzaGExJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTIyNCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjI0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjI0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTI1NiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMjU2J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMjU2JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTM4NCddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBMzg0J10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhMzg0JyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVNIQTUxMiddID0gZXhwb3J0c1snRFNBLVdJVEgtU0hBNTEyJ10gPSB7XG4gIHNpZ246ICdkc2EnLFxuICBoYXNoOiAnc2hhNTEyJyxcbiAgaWQ6IG5ldyBCdWZmZXIoJycsICdoZXgnKVxufVxuZXhwb3J0c1snRFNBLVJJUEVNRDE2MCddID0ge1xuICBzaWduOiAnZHNhJyxcbiAgaGFzaDogJ3JtZDE2MCcsXG4gIGlkOiBuZXcgQnVmZmVyKCcnLCAnaGV4Jylcbn1cbmV4cG9ydHNbJ1JTQS1SSVBFTUQxNjAnXSA9IGV4cG9ydHMucmlwZW1kMTYwV2l0aFJTQSA9IHtcbiAgc2lnbjogJ3JzYScsXG4gIGhhc2g6ICdybWQxNjAnLFxuICBpZDogbmV3IEJ1ZmZlcignMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0JywgJ2hleCcpXG59XG5leHBvcnRzWydSU0EtTUQ1J10gPSBleHBvcnRzLm1kNVdpdGhSU0FFbmNyeXB0aW9uID0ge1xuICBzaWduOiAncnNhJyxcbiAgaGFzaDogJ21kNScsXG4gIGlkOiBuZXcgQnVmZmVyKCczMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTAnLCAnaGV4Jylcbn1cbiIsInZhciBfYWxnb3MgPSByZXF1aXJlKCcuL2FsZ29zJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3MgPSB7fVxuT2JqZWN0LmtleXMoX2FsZ29zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3Nba2V5XSA9IGFsZ29zW2tleS50b0xvd2VyQ2FzZSgpXSA9IF9hbGdvc1trZXldXG59KVxuXG5mdW5jdGlvbiBTaWduIChhbGdvcml0aG0pIHtcbiAgc3RyZWFtLldyaXRhYmxlLmNhbGwodGhpcylcblxuICB2YXIgZGF0YSA9IGFsZ29zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcbiAgfVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5TaWduLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbk1ldGhvZCAoa2V5LCBlbmMpIHtcbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgdmFyIHNpZyA9IHNpZ24oQnVmZmVyLmNvbmNhdChbdGhpcy5fdGFnLCBoYXNoXSksIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3NbYWxnb3JpdGhtXVxuICBpZiAoIWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuICB9XG5cbiAgdGhpcy5faGFzaCA9IGNyZWF0ZUhhc2goZGF0YS5oYXNoKVxuICB0aGlzLl90YWcgPSBkYXRhLmlkXG4gIHRoaXMuX3NpZ25UeXBlID0gZGF0YS5zaWduXG59XG5pbmhlcml0cyhWZXJpZnksIHN0cmVhbS5Xcml0YWJsZSlcblxuVmVyaWZ5LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcblxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jKVxuICB9XG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSB7XG4gICAgc2lnID0gbmV3IEJ1ZmZlcihzaWcsIGVuYylcbiAgfVxuXG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG5cbiAgcmV0dXJuIHZlcmlmeShzaWcsIEJ1ZmZlci5jb25jYXQoW3RoaXMuX3RhZywgaGFzaF0pLCBrZXksIHRoaXMuX3NpZ25UeXBlKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIndXNlIHN0cmljdCdcbmV4cG9ydHNbJzEuMy4xMzIuMC4xMCddID0gJ3NlY3AyNTZrMSdcblxuZXhwb3J0c1snMS4zLjEzMi4wLjMzJ10gPSAncDIyNCdcblxuZXhwb3J0c1snMS4yLjg0MC4xMDA0NS4zLjEuMSddID0gJ3AxOTInXG5cbmV4cG9ydHNbJzEuMi44NDAuMTAwNDUuMy4xLjcnXSA9ICdwMjU2J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzQnXSA9ICdwMzg0J1xuXG5leHBvcnRzWycxLjMuMTMyLjAuMzUnXSA9ICdwNTIxJ1xuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzJylcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJ2VsbGlwdGljJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gZWxsaXB0aWMuZWNcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcblxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICB9XG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5nZW5LZXlQYWlyKClcblxuICBrZXkuX2ltcG9ydFByaXZhdGUocHJpdi5wcml2YXRlS2V5KVxuICB2YXIgb3V0ID0ga2V5LnNpZ24oaGFzaClcblxuICByZXR1cm4gbmV3IEJ1ZmZlcihvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmICghcy5jbXBuKDApKSB7XG4gICAgICBzID0gZmFsc2VcbiAgICAgIHIgPSBuZXcgQk4oMClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvREVSKHIsIHMpXG59XG5cbmZ1bmN0aW9uIHRvREVSIChyLCBzKSB7XG4gIHIgPSByLnRvQXJyYXkoKVxuICBzID0gcy50b0FycmF5KClcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MCkge1xuICAgIHIgPSBbIDAgXS5jb25jYXQocilcbiAgfVxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MCkge1xuICAgIHMgPSBbMF0uY29uY2F0KHMpXG4gIH1cblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWyAweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGggXVxuICByZXMgPSByZXMuY29uY2F0KHIsIFsgMHgwMiwgcy5sZW5ndGggXSwgcylcbiAgcmV0dXJuIG5ldyBCdWZmZXIocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IG5ldyBCdWZmZXIoeC50b0FycmF5KCkpXG4gIGlmICh4Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgIC51cGRhdGUoeClcbiAgICAudXBkYXRlKGhiaXRzKVxuICAgIC5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaylcbiAgICAudXBkYXRlKHYpXG4gICAgLnVwZGF0ZShuZXcgQnVmZmVyKFsxXSkpXG4gICAgLnVwZGF0ZSh4KVxuICAgIC51cGRhdGUoaGJpdHMpXG4gICAgLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC5kaWdlc3QoKVxuICByZXR1cm4ge1xuICAgIGs6IGssXG4gICAgdjogdlxuICB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkge1xuICAgIGJpdHMuaXNocm4oc2hpZnQpXG4gIH1cbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0LCBrXG5cbiAgZG8ge1xuICAgIHQgPSBuZXcgQnVmZmVyKCcnKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspXG4gICAgICAgIC51cGRhdGUoa3YudilcbiAgICAgICAgLmRpZ2VzdCgpXG4gICAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwga3Yudl0pXG4gICAgfVxuXG4gICAgayA9IGJpdHMyaW50KHQsIHEpXG4gICAga3YuayA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC51cGRhdGUobmV3IEJ1ZmZlcihbMF0pKVxuICAgICAgLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaylcbiAgICAgIC51cGRhdGUoa3YudilcbiAgICAgIC5kaWdlc3QoKVxuICB9IHdoaWxlIChrLmNtcChxKSAhPT0gLTEpXG5cbiAgcmV0dXJuIGtcbn1cblxuZnVuY3Rpb24gbWFrZVIgKGcsIGssIHAsIHEpIHtcbiAgcmV0dXJuIGcudG9SZWQoQk4ubW9udChwKSkucmVkUG93KGspLmZyb21SZWQoKS5tb2QocSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzaWduXG5tb2R1bGUuZXhwb3J0cy5nZXRLZXkgPSBnZXRLZXlcbm1vZHVsZS5leHBvcnRzLm1ha2VLZXkgPSBtYWtlS2V5XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMnKVxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSBlbGxpcHRpYy5lY1xuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSkge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgfVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDEgXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gbmV3IEJ1ZmZlcihwYWQpXG4gIHZhciByZWQgPSBCTi5tb250KHB1Yi5tb2R1bHVzKVxuICBzaWcgPSBuZXcgQk4oc2lnKS50b1JlZChyZWQpXG5cbiAgc2lnID0gc2lnLnJlZFBvdyhuZXcgQk4ocHViLnB1YmxpY0V4cG9uZW50KSlcblxuICBzaWcgPSBuZXcgQnVmZmVyKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gMFxuICBpZiAocGFkTnVtIDwgOCkge1xuICAgIG91dCA9IDFcbiAgfVxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkge1xuICAgIG91dCA9IDFcbiAgfVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0IHw9IChzaWdbaV0gXiBwYWRbaV0pXG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bChcbiAgICAgIHkudG9SZWQobW9udHApXG4gICAgICAgIC5yZWRQb3coci5tdWwodykubW9kKHEpKVxuICAgICAgICAuZnJvbVJlZCgpXG4gICkubW9kKHApLm1vZChxKVxuICByZXR1cm4gIXYuY21wKHIpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIH1cbiAgaWYgKGIuY21wKHEpID49IHEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJyk7XG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlcjtcbnZhciBTbG93QnVmZmVyID0gYnVmZmVyLlNsb3dCdWZmZXI7XG52YXIgTUFYX0xFTiA9IGJ1ZmZlci5rTWF4TGVuZ3RoIHx8IDIxNDc0ODM2NDc7XG5leHBvcnRzLmFsbG9jID0gZnVuY3Rpb24gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICB2YXIgZW5jID0gZW5jb2Rpbmc7XG4gIHZhciBfZmlsbCA9IGZpbGw7XG4gIGlmIChfZmlsbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jID0gdW5kZWZpbmVkO1xuICAgIF9maWxsID0gMDtcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgaWYgKHR5cGVvZiBfZmlsbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgZmlsbEJ1ZiA9IG5ldyBCdWZmZXIoX2ZpbGwsIGVuYyk7XG4gICAgdmFyIGZsZW4gPSBmaWxsQnVmLmxlbmd0aDtcbiAgICB2YXIgaSA9IC0xO1xuICAgIHdoaWxlICgrK2kgPCBzaXplKSB7XG4gICAgICBidWZbaV0gPSBmaWxsQnVmW2kgJSBmbGVuXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoX2ZpbGwpO1xuICB9XG4gIHJldHVybiBidWY7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gYWxsb2NVbnNhZmUoc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplID4gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgQnVmZmVyKHNpemUpO1xufVxuZXhwb3J0cy5mcm9tID0gZnVuY3Rpb24gZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmZyb20gPT09ICdmdW5jdGlvbicgJiYgKCFnbG9iYWwuVWludDhBcnJheSB8fCBVaW50OEFycmF5LmZyb20gIT09IEJ1ZmZlci5mcm9tKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgb2Zmc2V0ID0gZW5jb2RpbmdPck9mZnNldDtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgfVxuICAgIHZhciBsZW4gPSBsZW5ndGg7XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZW4gPSB2YWx1ZS5ieXRlTGVuZ3RoIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBpZiAob2Zmc2V0ID49IHZhbHVlLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICBpZiAobGVuID4gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuKSk7XG4gIH1cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcih2YWx1ZS5sZW5ndGgpO1xuICAgIHZhbHVlLmNvcHkob3V0LCAwLCAwLCB2YWx1ZS5sZW5ndGgpO1xuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8ICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZS5kYXRhKSkge1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsdWUuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCAnICsgJ0FycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJyk7XG59XG5leHBvcnRzLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlU2xvdyhzaXplKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+PSBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBTbG93QnVmZmVyKHNpemUpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxudmFyIGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgVXNlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogRHVlIHRvIHZhcmlvdXMgYnJvd3NlciBidWdzLCBzb21ldGltZXMgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIHVzZWQgZXZlblxuICogd2hlbiB0aGUgYnJvd3NlciBzdXBwb3J0cyB0eXBlZCBhcnJheXMuXG4gKlxuICogTm90ZTpcbiAqXG4gKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLFxuICogICAgIFNlZTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NDM4LlxuICpcbiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLlxuICpcbiAqICAgLSBJRTEwIGhhcyBhIGJyb2tlbiBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYXJyYXlzIG9mXG4gKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuXG5cbiAqIFdlIGRldGVjdCB0aGVzZSBidWdneSBicm93c2VycyBhbmQgc2V0IGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGAgdG8gYGZhbHNlYCBzbyB0aGV5XG4gKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVCAhPT0gdW5kZWZpbmVkXG4gID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgOiB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbi8qXG4gKiBFeHBvcnQga01heExlbmd0aCBhZnRlciB0eXBlZCBhcnJheSBzdXBwb3J0IGlzIGRldGVybWluZWQuXG4gKi9cbmV4cG9ydHMua01heExlbmd0aCA9IGtNYXhMZW5ndGgoKVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIHRyeSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgYXJyLl9fcHJvdG9fXyA9IHtfX3Byb3RvX186IFVpbnQ4QXJyYXkucHJvdG90eXBlLCBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH19XG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWRcbiAgICAgICAgdHlwZW9mIGFyci5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJyAmJiAvLyBjaHJvbWUgOS0xMCBsYWNrIGBzdWJhcnJheWBcbiAgICAgICAgYXJyLnN1YmFycmF5KDEsIDEpLmJ5dGVMZW5ndGggPT09IDAgLy8gaWUxMCBoYXMgYnJva2VuIGBzdWJhcnJheWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmZ1bmN0aW9uIGtNYXhMZW5ndGggKCkge1xuICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRcbiAgICA/IDB4N2ZmZmZmZmZcbiAgICA6IDB4M2ZmZmZmZmZcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyICh0aGF0LCBsZW5ndGgpIHtcbiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCcpXG4gIH1cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgaWYgKHRoYXQgPT09IG51bGwpIHtcbiAgICAgIHRoYXQgPSBuZXcgQnVmZmVyKGxlbmd0aClcbiAgICB9XG4gICAgdGhhdC5sZW5ndGggPSBsZW5ndGhcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmICEodGhpcyBpbnN0YW5jZW9mIEJ1ZmZlcikpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIENvbW1vbiBjYXNlLlxuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nT3JPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZydcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKHRoaXMsIGFyZylcbiAgfVxuICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbi8vIFRPRE86IExlZ2FjeSwgbm90IG5lZWRlZCBhbnltb3JlLiBSZW1vdmUgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLlxuQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikge1xuICBhcnIuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYXJyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICByZXR1cm4gZnJvbU9iamVjdCh0aGF0LCB2YWx1ZSlcbn1cblxuLyoqXG4gKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvclxuICogaWYgdmFsdWUgaXMgYSBudW1iZXIuXG4gKiBCdWZmZXIuZnJvbShzdHJbLCBlbmNvZGluZ10pXG4gKiBCdWZmZXIuZnJvbShhcnJheSlcbiAqIEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAqIEJ1ZmZlci5mcm9tKGFycmF5QnVmZmVyWywgYnl0ZU9mZnNldFssIGxlbmd0aF1dKVxuICoqL1xuQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gZnJvbShudWxsLCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5pZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZVxuICBCdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikge1xuICAgIC8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkge1xuICAgICAgdGhhdFtpXSA9IDBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJylcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcblxuICB2YXIgYWN0dWFsID0gdGhhdC53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgdGhhdCA9IHRoYXQuc2xpY2UoMCwgYWN0dWFsKVxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAodGhhdCwgYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAodGhhdCwgYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXJcblxuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2UsIGZvciBiZXN0IHBlcmZvcm1hbmNlXG4gICAgdGhhdCA9IGFycmF5XG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIHRoYXQgPSBmcm9tQXJyYXlMaWtlKHRoYXQsIGFycmF5KVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG9iaikpIHtcbiAgICB2YXIgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbilcblxuICAgIGlmICh0aGF0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoYXRcbiAgICB9XG5cbiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIHRoYXRcbiAgfVxuXG4gIGlmIChvYmopIHtcbiAgICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgb2JqLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgaXNuYW4ob2JqLmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCAwKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqKVxuICAgIH1cblxuICAgIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iai5kYXRhKVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwga01heExlbmd0aCgpYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBrTWF4TGVuZ3RoKCkudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpXG59XG5cbkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycycpXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFpc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICAgIH1cbiAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSAnJyArIHN0cmluZ1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGUgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCBhbmQgYGlzLWJ1ZmZlcmAgKGluIFNhZmFyaSA1LTcpIHRvIGRldGVjdFxuLy8gQnVmZmVyIGluc3RhbmNlcy5cbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGggfCAwXG4gIGlmIChsZW5ndGggPT09IDApIHJldHVybiAnJ1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpXG4gIHJldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyAoYikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZVxuICByZXR1cm4gQnVmZmVyLmNvbXBhcmUodGhpcywgYikgPT09IDBcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gIHZhciBzdHIgPSAnJ1xuICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5tYXRjaCgvLnsyfS9nKS5qb2luKCcgJylcbiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIH1cbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgdmFyIHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIHZhciB5ID0gZW5kIC0gc3RhcnRcbiAgdmFyIGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpXG4gIHZhciB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiZcbiAgICAgICAgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgdmFyIGluZGV4U2l6ZSA9IDFcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGRpcikge1xuICAgIHZhciBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgdmFyIHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3QgYmUgYW4gZXZlbiBudW1iZXIgb2YgZGlnaXRzXG4gIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChzdHJMZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGhleCBzdHJpbmcnKVxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggfCAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgLy8gbGVnYWN5IHdyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKSAtIHJlbW92ZSBpbiB2MC4xM1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nXG5cbiAgaWYgKChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSkgfHwgb2Zmc2V0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICAvLyBXYXJuaW5nOiBtYXhMZW5ndGggbm90IHRha2VuIGludG8gYWNjb3VudCBpbiBiYXNlNjRXcml0ZVxuICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCdWZmZXInLFxuICAgIGRhdGE6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2FyciB8fCB0aGlzLCAwKVxuICB9XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSlcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGY4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG4gIHZhciByZXMgPSBbXVxuXG4gIHZhciBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICB2YXIgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgdmFyIGNvZGVQb2ludCA9IG51bGxcbiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpID8gM1xuICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRikgPyAyXG4gICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbnZhciBNQVhfQVJHVU1FTlRTX0xFTkdUSCA9IDB4MTAwMFxuXG5mdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkgKGNvZGVQb2ludHMpIHtcbiAgdmFyIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgdmFyIHJlcyA9ICcnXG4gIHZhciBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICB2YXIgb3V0ID0gJydcbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gdG9IZXgoYnVmW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHZhciByZXMgPSAnJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyBieXRlc1tpICsgMV0gKiAyNTYpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZlxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2xpY2VMZW4gPSBlbmQgLSBzdGFydFxuICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWNlTGVuOyArK2kpIHtcbiAgICAgIG5ld0J1ZltpXSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIHZhciBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQxNiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCAyKTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSAmICgweGZmIDw8ICg4ICogKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkpKSkgPj4+XG4gICAgICAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSAqIDhcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5mdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQzMiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHtcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgNCk7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgPj4+IChsaXR0bGVFbmRpYW4gPyBpIDogMyAtIGkpICogOCkgJiAweGZmXG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEUgPSBmdW5jdGlvbiB3cml0ZUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gMFxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG4gIHZhciBpXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yIChpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2UgaWYgKGxlbiA8IDEwMDAgfHwgIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgLy8gYXNjZW5kaW5nIGNvcHkgZnJvbSBzdGFydFxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksXG4gICAgICB0YXJnZXRTdGFydFxuICAgIClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuLy8gVXNhZ2U6XG4vLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKGJ1ZmZlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoc3RyaW5nWywgb2Zmc2V0WywgZW5kXV1bLCBlbmNvZGluZ10pXG5CdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7XG4gIC8vIEhhbmRsZSBzdHJpbmcgY2FzZXM6XG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IHN0YXJ0XG4gICAgICBzdGFydCA9IDBcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gICAgfVxuICAgIGlmICh2YWwubGVuZ3RoID09PSAxKSB7XG4gICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoY29kZSA8IDI1Nikge1xuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgdmFyIGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogdXRmOFRvQnl0ZXMobmV3IEJ1ZmZlcih2YWwsIGVuY29kaW5nKS50b1N0cmluZygpKVxuICAgIHZhciBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXitcXC8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gc3RyaW5ndHJpbSAoc3RyKSB7XG4gIGlmIChzdHIudHJpbSkgcmV0dXJuIHN0ci50cmltKClcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcbn1cblxuZnVuY3Rpb24gdG9IZXggKG4pIHtcbiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpXG4gIHJldHVybiBuLnRvU3RyaW5nKDE2KVxufVxuXG5mdW5jdGlvbiB1dGY4VG9CeXRlcyAoc3RyaW5nLCB1bml0cykge1xuICB1bml0cyA9IHVuaXRzIHx8IEluZmluaXR5XG4gIHZhciBjb2RlUG9pbnRcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIHZhciBieXRlcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLlxuICAgIGJ5dGVBcnJheS5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7XG4gIHZhciBjLCBoaSwgbG9cbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiBpc25hbiAodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IHZhbCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuIiwidmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyQmFzZVxuaW5oZXJpdHMoQ2lwaGVyQmFzZSwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gQ2lwaGVyQmFzZSAoaGFzaE1vZGUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5oYXNoTW9kZSA9IHR5cGVvZiBoYXNoTW9kZSA9PT0gJ3N0cmluZydcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICB0aGlzW2hhc2hNb2RlXSA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpbmFsID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9XG4gIHRoaXMuX2RlY29kZXIgPSBudWxsXG4gIHRoaXMuX2VuY29kaW5nID0gbnVsbFxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGlucHV0RW5jKVxuICB9XG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYylcbiAgfVxuICByZXR1cm4gb3V0RGF0YVxufVxuXG5DaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZyA9IGZ1bmN0aW9uICgpIHt9XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5fdXBkYXRlKGRhdGEpKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfSBmaW5hbGx5IHtcbiAgICBuZXh0KGVycilcbiAgfVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLl9maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIGRvbmUoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9maW5hbCgpIHx8IG5ldyBCdWZmZXIoJycpXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jLCB0cnVlKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90b1N0cmluZyA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jLCBmaW4pIHtcbiAgaWYgKCF0aGlzLl9kZWNvZGVyKSB7XG4gICAgdGhpcy5fZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYylcbiAgICB0aGlzLl9lbmNvZGluZyA9IGVuY1xuICB9XG4gIGlmICh0aGlzLl9lbmNvZGluZyAhPT0gZW5jKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5cXCd0IHN3aXRjaCBlbmNvZGluZ3MnKVxuICB9XG4gIHZhciBvdXQgPSB0aGlzLl9kZWNvZGVyLndyaXRlKHZhbHVlKVxuICBpZiAoZmluKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmZyb207IiwidmFyIGNvcmUgID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpXG4gICwgJEpTT04gPSBjb3JlLkpTT04gfHwgKGNvcmUuSlNPTiA9IHtzdHJpbmdpZnk6IEpTT04uc3RyaW5naWZ5fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCl7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuICRKU09OLnN0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJndW1lbnRzKTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmFzc2lnbjsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlJyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKXtcbiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpO1xufTsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgJE9iamVjdCA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2Mpe1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSl7XG4gIHJldHVybiAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5nZXRQcm90b3R5cGVPZjsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmtleXM7IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5zZXRQcm90b3R5cGVPZjsiLCJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTsiLCJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc2V0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5zZXQudG8tanNvbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuU2V0OyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sOyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICBpZih0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJyl0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpe1xuICBpZighKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSl7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59OyIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59OyIsInZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXIsIElURVJBVE9SKXtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3JPZihpdGVyLCBmYWxzZSwgcmVzdWx0LnB1c2gsIHJlc3VsdCwgSVRFUkFUT1IpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgdG9MZW5ndGggID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCB0b0luZGV4ICAgPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihJU19JTkNMVURFUyl7XG4gIHJldHVybiBmdW5jdGlvbigkdGhpcywgZWwsIGZyb21JbmRleCl7XG4gICAgdmFyIE8gICAgICA9IHRvSU9iamVjdCgkdGhpcylcbiAgICAgICwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpXG4gICAgICAsIGluZGV4ICA9IHRvSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpXG4gICAgICAsIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICBpZihJU19JTkNMVURFUyAmJiBlbCAhPSBlbCl3aGlsZShsZW5ndGggPiBpbmRleCl7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICBpZih2YWx1ZSAhPSB2YWx1ZSlyZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSN0b0luZGV4IGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvcig7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspaWYoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTyl7XG4gICAgICBpZihPW2luZGV4XSA9PT0gZWwpcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTsiLCIvLyAwIC0+IEFycmF5I2ZvckVhY2hcbi8vIDEgLT4gQXJyYXkjbWFwXG4vLyAyIC0+IEFycmF5I2ZpbHRlclxuLy8gMyAtPiBBcnJheSNzb21lXG4vLyA0IC0+IEFycmF5I2V2ZXJ5XG4vLyA1IC0+IEFycmF5I2ZpbmRcbi8vIDYgLT4gQXJyYXkjZmluZEluZGV4XG52YXIgY3R4ICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIElPYmplY3QgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCBhc2MgICAgICA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRZUEUsICRjcmVhdGUpe1xuICB2YXIgSVNfTUFQICAgICAgICA9IFRZUEUgPT0gMVxuICAgICwgSVNfRklMVEVSICAgICA9IFRZUEUgPT0gMlxuICAgICwgSVNfU09NRSAgICAgICA9IFRZUEUgPT0gM1xuICAgICwgSVNfRVZFUlkgICAgICA9IFRZUEUgPT0gNFxuICAgICwgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNlxuICAgICwgTk9fSE9MRVMgICAgICA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYXG4gICAgLCBjcmVhdGUgICAgICAgID0gJGNyZWF0ZSB8fCBhc2M7XG4gIHJldHVybiBmdW5jdGlvbigkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCl7XG4gICAgdmFyIE8gICAgICA9IHRvT2JqZWN0KCR0aGlzKVxuICAgICAgLCBzZWxmICAgPSBJT2JqZWN0KE8pXG4gICAgICAsIGYgICAgICA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKVxuICAgICAgLCBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aClcbiAgICAgICwgaW5kZXggID0gMFxuICAgICAgLCByZXN1bHQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkXG4gICAgICAsIHZhbCwgcmVzO1xuICAgIGZvcig7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspaWYoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZil7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZihUWVBFKXtcbiAgICAgICAgaWYoSVNfTUFQKXJlc3VsdFtpbmRleF0gPSByZXM7ICAgICAgICAgICAgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYocmVzKXN3aXRjaChUWVBFKXtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbDsgICAgICAgICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcmVzdWx0LnB1c2godmFsKTsgICAgICAgICAgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmKElTX0VWRVJZKXJldHVybiBmYWxzZTsgICAgICAgICAgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07IiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBpc0FycmF5ICA9IHJlcXVpcmUoJy4vX2lzLWFycmF5JylcbiAgLCBTUEVDSUVTICA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3JpZ2luYWwpe1xuICB2YXIgQztcbiAgaWYoaXNBcnJheShvcmlnaW5hbCkpe1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSlDID0gdW5kZWZpbmVkO1xuICAgIGlmKGlzT2JqZWN0KEMpKXtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYoQyA9PT0gbnVsbClDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTsiLCIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9yaWdpbmFsLCBsZW5ndGgpe1xuICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWwpKShsZW5ndGgpO1xufTsiLCIvLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpXG4gICwgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJylcbiAgLy8gRVMzIHdyb25nIGhlcmVcbiAgLCBBUkcgPSBjb2YoZnVuY3Rpb24oKXsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbihpdCwga2V5KXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59OyIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGNyZWF0ZSAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKVxuICAsIGN0eCAgICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgLCBhbkluc3RhbmNlICA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJylcbiAgLCBkZWZpbmVkICAgICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKVxuICAsIGZvck9mICAgICAgID0gcmVxdWlyZSgnLi9fZm9yLW9mJylcbiAgLCAkaXRlckRlZmluZSA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJylcbiAgLCBzdGVwICAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpXG4gICwgc2V0U3BlY2llcyAgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpXG4gICwgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpXG4gICwgZmFzdEtleSAgICAgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleVxuICAsIFNJWkUgICAgICAgID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbih0aGF0LCBrZXkpe1xuICAvLyBmYXN0IGNhc2VcbiAgdmFyIGluZGV4ID0gZmFzdEtleShrZXkpLCBlbnRyeTtcbiAgaWYoaW5kZXggIT09ICdGJylyZXR1cm4gdGhhdC5faVtpbmRleF07XG4gIC8vIGZyb3plbiBvYmplY3QgY2FzZVxuICBmb3IoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKXtcbiAgICBpZihlbnRyeS5rID09IGtleSlyZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24od3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUil7XG4gICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRoYXQsIGl0ZXJhYmxlKXtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgQywgTkFNRSwgJ19pJyk7XG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmKGl0ZXJhYmxlICE9IHVuZGVmaW5lZClmb3JPZihpdGVyYWJsZSwgSVNfTUFQLCB0aGF0W0FEREVSXSwgdGhhdCk7XG4gICAgfSk7XG4gICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHtcbiAgICAgIC8vIDIzLjEuMy4xIE1hcC5wcm90b3R5cGUuY2xlYXIoKVxuICAgICAgLy8gMjMuMi4zLjIgU2V0LnByb3RvdHlwZS5jbGVhcigpXG4gICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKXtcbiAgICAgICAgZm9yKHZhciB0aGF0ID0gdGhpcywgZGF0YSA9IHRoYXQuX2ksIGVudHJ5ID0gdGhhdC5fZjsgZW50cnk7IGVudHJ5ID0gZW50cnkubil7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYoZW50cnkucCllbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhW2VudHJ5LmldO1xuICAgICAgICB9XG4gICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGF0W1NJWkVdID0gMDtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpXG4gICAgICAvLyAyMy4yLjMuNCBTZXQucHJvdG90eXBlLmRlbGV0ZSh2YWx1ZSlcbiAgICAgICdkZWxldGUnOiBmdW5jdGlvbihrZXkpe1xuICAgICAgICB2YXIgdGhhdCAgPSB0aGlzXG4gICAgICAgICAgLCBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSk7XG4gICAgICAgIGlmKGVudHJ5KXtcbiAgICAgICAgICB2YXIgbmV4dCA9IGVudHJ5Lm5cbiAgICAgICAgICAgICwgcHJldiA9IGVudHJ5LnA7XG4gICAgICAgICAgZGVsZXRlIHRoYXQuX2lbZW50cnkuaV07XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYocHJldilwcmV2Lm4gPSBuZXh0O1xuICAgICAgICAgIGlmKG5leHQpbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZih0aGF0Ll9mID09IGVudHJ5KXRoYXQuX2YgPSBuZXh0O1xuICAgICAgICAgIGlmKHRoYXQuX2wgPT0gZW50cnkpdGhhdC5fbCA9IHByZXY7XG4gICAgICAgICAgdGhhdFtTSVpFXS0tO1xuICAgICAgICB9IHJldHVybiAhIWVudHJ5O1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgLy8gMjMuMS4zLjUgTWFwLnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyosIHRoYXQgPSB1bmRlZmluZWQgKi8pe1xuICAgICAgICBhbkluc3RhbmNlKHRoaXMsIEMsICdmb3JFYWNoJyk7XG4gICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKVxuICAgICAgICAgICwgZW50cnk7XG4gICAgICAgIHdoaWxlKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZil7XG4gICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTtcbiAgICAgICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgICAgICB3aGlsZShlbnRyeSAmJiBlbnRyeS5yKWVudHJ5ID0gZW50cnkucDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjIuMy43IFNldC5wcm90b3R5cGUuaGFzKHZhbHVlKVxuICAgICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KXtcbiAgICAgICAgcmV0dXJuICEhZ2V0RW50cnkodGhpcywga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZihERVNDUklQVE9SUylkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiBkZWZpbmVkKHRoaXNbU0laRV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBDO1xuICB9LFxuICBkZWY6IGZ1bmN0aW9uKHRoYXQsIGtleSwgdmFsdWUpe1xuICAgIHZhciBlbnRyeSA9IGdldEVudHJ5KHRoYXQsIGtleSlcbiAgICAgICwgcHJldiwgaW5kZXg7XG4gICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5XG4gICAgaWYoZW50cnkpe1xuICAgICAgZW50cnkudiA9IHZhbHVlO1xuICAgIC8vIGNyZWF0ZSBuZXcgZW50cnlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhhdC5fbCA9IGVudHJ5ID0ge1xuICAgICAgICBpOiBpbmRleCA9IGZhc3RLZXkoa2V5LCB0cnVlKSwgLy8gPC0gaW5kZXhcbiAgICAgICAgazoga2V5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIGtleVxuICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWVcbiAgICAgICAgcDogcHJldiA9IHRoYXQuX2wsICAgICAgICAgICAgIC8vIDwtIHByZXZpb3VzIGVudHJ5XG4gICAgICAgIG46IHVuZGVmaW5lZCwgICAgICAgICAgICAgICAgICAvLyA8LSBuZXh0IGVudHJ5XG4gICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkXG4gICAgICB9O1xuICAgICAgaWYoIXRoYXQuX2YpdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYocHJldilwcmV2Lm4gPSBlbnRyeTtcbiAgICAgIHRoYXRbU0laRV0rKztcbiAgICAgIC8vIGFkZCB0byBpbmRleFxuICAgICAgaWYoaW5kZXggIT09ICdGJyl0aGF0Ll9pW2luZGV4XSA9IGVudHJ5O1xuICAgIH0gcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIGdldEVudHJ5OiBnZXRFbnRyeSxcbiAgc2V0U3Ryb25nOiBmdW5jdGlvbihDLCBOQU1FLCBJU19NQVApe1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbihpdGVyYXRlZCwga2luZCl7XG4gICAgICB0aGlzLl90ID0gaXRlcmF0ZWQ7ICAvLyB0YXJnZXRcbiAgICAgIHRoaXMuX2sgPSBraW5kOyAgICAgIC8vIGtpbmRcbiAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7IC8vIHByZXZpb3VzXG4gICAgfSwgZnVuY3Rpb24oKXtcbiAgICAgIHZhciB0aGF0ICA9IHRoaXNcbiAgICAgICAgLCBraW5kICA9IHRoYXQuX2tcbiAgICAgICAgLCBlbnRyeSA9IHRoYXQuX2w7XG4gICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnlcbiAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpe1xuICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvblxuICAgICAgICB0aGF0Ll90ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gc3RlcCgxKTtcbiAgICAgIH1cbiAgICAgIC8vIHJldHVybiBzdGVwIGJ5IGtpbmRcbiAgICAgIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgZW50cnkuayk7XG4gICAgICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIGVudHJ5LnYpO1xuICAgICAgcmV0dXJuIHN0ZXAoMCwgW2VudHJ5LmssIGVudHJ5LnZdKTtcbiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJyAsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59OyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpXG4gICwgZnJvbSAgICA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTkFNRSl7XG4gIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKXtcbiAgICBpZihjbGFzc29mKHRoaXMpICE9IE5BTUUpdGhyb3cgVHlwZUVycm9yKE5BTUUgKyBcIiN0b0pTT04gaXNuJ3QgZ2VuZXJpY1wiKTtcbiAgICByZXR1cm4gZnJvbSh0aGlzKTtcbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCAgICAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCAkZXhwb3J0ICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgbWV0YSAgICAgICAgICAgPSByZXF1aXJlKCcuL19tZXRhJylcbiAgLCBmYWlscyAgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBoaWRlICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIHJlZGVmaW5lQWxsICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJylcbiAgLCBmb3JPZiAgICAgICAgICA9IHJlcXVpcmUoJy4vX2Zvci1vZicpXG4gICwgYW5JbnN0YW5jZSAgICAgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpXG4gICwgaXNPYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKVxuICAsIGRQICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGVhY2ggICAgICAgICAgID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApXG4gICwgREVTQ1JJUFRPUlMgICAgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKXtcbiAgdmFyIEJhc2UgID0gZ2xvYmFsW05BTUVdXG4gICAgLCBDICAgICA9IEJhc2VcbiAgICAsIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJ1xuICAgICwgcHJvdG8gPSBDICYmIEMucHJvdG90eXBlXG4gICAgLCBPICAgICA9IHt9O1xuICBpZighREVTQ1JJUFRPUlMgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24oKXtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSl7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIEMgPSB3cmFwcGVyKGZ1bmN0aW9uKHRhcmdldCwgaXRlcmFibGUpe1xuICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUsICdfYycpO1xuICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2U7XG4gICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGFyZ2V0W0FEREVSXSwgdGFyZ2V0KTtcbiAgICB9KTtcbiAgICBlYWNoKCdhZGQsY2xlYXIsZGVsZXRlLGZvckVhY2gsZ2V0LGhhcyxzZXQsa2V5cyx2YWx1ZXMsZW50cmllcyx0b0pTT04nLnNwbGl0KCcsJyksZnVuY3Rpb24oS0VZKXtcbiAgICAgIHZhciBJU19BRERFUiA9IEtFWSA9PSAnYWRkJyB8fCBLRVkgPT0gJ3NldCc7XG4gICAgICBpZihLRVkgaW4gcHJvdG8gJiYgIShJU19XRUFLICYmIEtFWSA9PSAnY2xlYXInKSloaWRlKEMucHJvdG90eXBlLCBLRVksIGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgICBhbkluc3RhbmNlKHRoaXMsIEMsIEtFWSk7XG4gICAgICAgIGlmKCFJU19BRERFUiAmJiBJU19XRUFLICYmICFpc09iamVjdChhKSlyZXR1cm4gS0VZID09ICdnZXQnID8gdW5kZWZpbmVkIDogZmFsc2U7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9jW0tFWV0oYSA9PT0gMCA/IDAgOiBhLCBiKTtcbiAgICAgICAgcmV0dXJuIElTX0FEREVSID8gdGhpcyA6IHJlc3VsdDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmKCdzaXplJyBpbiBwcm90bylkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRUb1N0cmluZ1RhZyhDLCBOQU1FKTtcblxuICBPW05BTUVdID0gQztcbiAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYsIE8pO1xuXG4gIGlmKCFJU19XRUFLKWNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07IiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMi40LjAnfTtcbmlmKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIGNyZWF0ZURlc2MgICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIGluZGV4LCB2YWx1ZSl7XG4gIGlmKGluZGV4IGluIG9iamVjdCkkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7XG4gIGVsc2Ugb2JqZWN0W2luZGV4XSA9IHZhbHVlO1xufTsiLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0LCBsZW5ndGgpe1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZih0aGF0ID09PSB1bmRlZmluZWQpcmV0dXJuIGZuO1xuICBzd2l0Y2gobGVuZ3RoKXtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59OyIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoaXQgPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTsiLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIDc7IH19KS5hICE9IDc7XG59KTsiLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnRcbiAgLy8gaW4gb2xkIElFIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnXG4gICwgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07IiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7IiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKVxuICAsIGdPUFMgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpXG4gICwgcElFICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICB2YXIgcmVzdWx0ICAgICA9IGdldEtleXMoaXQpXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZihnZXRTeW1ib2xzKXtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpXG4gICAgICAsIGlzRW51bSAgPSBwSUUuZlxuICAgICAgLCBpICAgICAgID0gMFxuICAgICAgLCBrZXk7XG4gICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKXJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgID0gcmVxdWlyZSgnLi9fY29yZScpXG4gICwgY3R4ICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgLCBoaWRlICAgICAgPSByZXF1aXJlKCcuL19oaWRlJylcbiAgLCBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxudmFyICRleHBvcnQgPSBmdW5jdGlvbih0eXBlLCBuYW1lLCBzb3VyY2Upe1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRlxuICAgICwgSVNfR0xPQkFMID0gdHlwZSAmICRleHBvcnQuR1xuICAgICwgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuU1xuICAgICwgSVNfUFJPVE8gID0gdHlwZSAmICRleHBvcnQuUFxuICAgICwgSVNfQklORCAgID0gdHlwZSAmICRleHBvcnQuQlxuICAgICwgSVNfV1JBUCAgID0gdHlwZSAmICRleHBvcnQuV1xuICAgICwgZXhwb3J0cyAgID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSlcbiAgICAsIGV4cFByb3RvICA9IGV4cG9ydHNbUFJPVE9UWVBFXVxuICAgICwgdGFyZ2V0ICAgID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXVxuICAgICwga2V5LCBvd24sIG91dDtcbiAgaWYoSVNfR0xPQkFMKXNvdXJjZSA9IG5hbWU7XG4gIGZvcihrZXkgaW4gc291cmNlKXtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmKG93biAmJiBrZXkgaW4gZXhwb3J0cyljb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uKEMpe1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbihhLCBiLCBjKXtcbiAgICAgICAgaWYodGhpcyBpbnN0YW5jZW9mIEMpe1xuICAgICAgICAgIHN3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZihJU19QUk9UTyl7XG4gICAgICAoZXhwb3J0cy52aXJ0dWFsIHx8IChleHBvcnRzLnZpcnR1YWwgPSB7fSkpW2tleV0gPSBvdXQ7XG4gICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJVxuICAgICAgaWYodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSloaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YCBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaChlKXtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTsiLCJ2YXIgY3R4ICAgICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIGNhbGwgICAgICAgID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJylcbiAgLCBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKVxuICAsIGFuT2JqZWN0ICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b0xlbmd0aCAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgZ2V0SXRlckZuICAgPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpXG4gICwgQlJFQUsgICAgICAgPSB7fVxuICAsIFJFVFVSTiAgICAgID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUil7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSlcbiAgICAsIGYgICAgICA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKVxuICAgICwgaW5kZXggID0gMFxuICAgICwgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZihpc0FycmF5SXRlcihpdGVyRm4pKWZvcihsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyApe1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07IiwidmFyIGRQICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OyIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xufSk7IiwiLy8gZmFzdCBhcHBseSwgaHR0cDovL2pzcGVyZi5sbmtpdC5jb20vZmFzdC1hcHBseS81XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCBhcmdzLCB0aGF0KXtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2goYXJncy5sZW5ndGgpe1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiAgICAgICAgICAgICAgZm4uYXBwbHkodGhhdCwgYXJncyk7XG59OyIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59OyIsIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCBJVEVSQVRPUiAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJylcbiAgLCBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07IiwiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZyl7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07IiwiLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpe1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2goZSl7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZihyZXQgIT09IHVuZGVmaW5lZClhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpO1xuICAgIHRocm93IGU7XG4gIH1cbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgZGVzY3JpcHRvciAgICAgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJylcbiAgLCBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJylcbiAgLCBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KXtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7bmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KX0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgICAgICAgID0gcmVxdWlyZSgnLi9fbGlicmFyeScpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHJlZGVmaW5lICAgICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKVxuICAsIGhpZGUgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICwgaGFzICAgICAgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIEl0ZXJhdG9ycyAgICAgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCAkaXRlckNyZWF0ZSAgICA9IHJlcXVpcmUoJy4vX2l0ZXItY3JlYXRlJylcbiAgLCBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJylcbiAgLCBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKVxuICAsIElURVJBVE9SICAgICAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJylcbiAgLCBCVUdHWSAgICAgICAgICA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKSAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gICwgRkZfSVRFUkFUT1IgICAgPSAnQEBpdGVyYXRvcidcbiAgLCBLRVlTICAgICAgICAgICA9ICdrZXlzJ1xuICAsIFZBTFVFUyAgICAgICAgID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKXtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24oa2luZCl7XG4gICAgaWYoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaChraW5kKXtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHICAgICAgICA9IE5BTUUgKyAnIEl0ZXJhdG9yJ1xuICAgICwgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTXG4gICAgLCBWQUxVRVNfQlVHID0gZmFsc2VcbiAgICAsIHByb3RvICAgICAgPSBCYXNlLnByb3RvdHlwZVxuICAgICwgJG5hdGl2ZSAgICA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXVxuICAgICwgJGRlZmF1bHQgICA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpXG4gICAgLCAkZW50cmllcyAgID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZFxuICAgICwgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmVcbiAgICAsIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYoJGFueU5hdGl2ZSl7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UpKTtcbiAgICBpZihJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSl7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYoIUxJQlJBUlkgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKWhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZihERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpe1xuICAgIFZBTFVFU19CVUcgPSB0cnVlO1xuICAgICRkZWZhdWx0ID0gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKXtcbiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpO1xuICB9XG4gIC8vIFBsdWcgZm9yIGxpYnJhcnlcbiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7XG4gIEl0ZXJhdG9yc1tUQUddICA9IHJldHVyblRoaXM7XG4gIGlmKERFRkFVTFQpe1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6ICBERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZihGT1JDRUQpZm9yKGtleSBpbiBtZXRob2RzKXtcbiAgICAgIGlmKCEoa2V5IGluIHByb3RvKSlyZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59OyIsInZhciBJVEVSQVRPUiAgICAgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKVxuICAsIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uKCl7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07XG4gIEFycmF5LmZyb20ocml0ZXIsIGZ1bmN0aW9uKCl7IHRocm93IDI7IH0pO1xufSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMsIHNraXBDbG9zaW5nKXtcbiAgaWYoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgID0gWzddXG4gICAgICAsIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24oKXsgcmV0dXJuIHtkb25lOiBzYWZlID0gdHJ1ZX07IH07XG4gICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaChlKXsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkb25lLCB2YWx1ZSl7XG4gIHJldHVybiB7dmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmV9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHt9OyIsInZhciBnZXRLZXlzICAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpXG4gICwgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIGVsKXtcbiAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG4gICAgLCBrZXlzICAgPSBnZXRLZXlzKE8pXG4gICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuICAgICwgaW5kZXggID0gMFxuICAgICwga2V5O1xuICB3aGlsZShsZW5ndGggPiBpbmRleClpZihPW2tleSA9IGtleXNbaW5kZXgrK11dID09PSBlbClyZXR1cm4ga2V5O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHRydWU7IiwidmFyIE1FVEEgICAgID0gcmVxdWlyZSgnLi9fdWlkJykoJ21ldGEnKVxuICAsIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBoYXMgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgc2V0RGVzYyAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mXG4gICwgaWQgICAgICAgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIEZSRUVaRSA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24oaXQpe1xuICBzZXREZXNjKGl0LCBNRVRBLCB7dmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9fSk7XG59O1xudmFyIGZhc3RLZXkgPSBmdW5jdGlvbihpdCwgY3JlYXRlKXtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZighaXNPYmplY3QoaXQpKXJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmKCFoYXMoaXQsIE1FVEEpKXtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZighY3JlYXRlKXJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG4gIGlmKCFoYXMoaXQsIE1FVEEpKXtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYoIWNyZWF0ZSlyZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIGhhc2ggd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQV0udztcbn07XG4vLyBhZGQgbWV0YWRhdGEgb24gZnJlZXplLWZhbWlseSBtZXRob2RzIGNhbGxpbmdcbnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoRlJFRVpFICYmIG1ldGEuTkVFRCAmJiBpc0V4dGVuc2libGUoaXQpICYmICFoYXMoaXQsIE1FVEEpKXNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiAgICAgIE1FVEEsXG4gIE5FRUQ6ICAgICBmYWxzZSxcbiAgZmFzdEtleTogIGZhc3RLZXksXG4gIGdldFdlYWs6ICBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07IiwidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldFxuICAsIE9ic2VydmVyICA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyXG4gICwgcHJvY2VzcyAgID0gZ2xvYmFsLnByb2Nlc3NcbiAgLCBQcm9taXNlICAgPSBnbG9iYWwuUHJvbWlzZVxuICAsIGlzTm9kZSAgICA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpe1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZShoZWFkKXtcbiAgICAgIGZuICAgPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoKGUpe1xuICAgICAgICBpZihoZWFkKW5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmKHBhcmVudClwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmKGlzTm9kZSl7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlclxuICB9IGVsc2UgaWYoT2JzZXJ2ZXIpe1xuICAgIHZhciB0b2dnbGUgPSB0cnVlXG4gICAgICAsIG5vZGUgICA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbigpe1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpe1xuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGZuKXtcbiAgICB2YXIgdGFzayA9IHtmbjogZm4sIG5leHQ6IHVuZGVmaW5lZH07XG4gICAgaWYobGFzdClsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmKCFoZWFkKXtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKVxuICAsIGdPUFMgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKVxuICAsIHBJRSAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIElPYmplY3QgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgJGFzc2lnbiAgPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICB2YXIgQSA9IHt9XG4gICAgLCBCID0ge31cbiAgICAsIFMgPSBTeW1ib2woKVxuICAgICwgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUICAgICA9IHRvT2JqZWN0KHRhcmdldClcbiAgICAsIGFMZW4gID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICwgaW5kZXggPSAxXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mXG4gICAgLCBpc0VudW0gICAgID0gcElFLmY7XG4gIHdoaWxlKGFMZW4gPiBpbmRleCl7XG4gICAgdmFyIFMgICAgICA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKVxuICAgICAgLCBrZXlzICAgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpXG4gICAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgICAsIGogICAgICA9IDBcbiAgICAgICwga2V5O1xuICAgIHdoaWxlKGxlbmd0aCA+IGopaWYoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSlUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjsiLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgZFBzICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJylcbiAgLCBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKVxuICAsIElFX1BST1RPICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpXG4gICwgRW1wdHkgICAgICAgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9XG4gICwgUFJPVE9UWVBFICAgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbigpe1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKVxuICAgICwgaSAgICAgID0gZW51bUJ1Z0tleXMubGVuZ3RoXG4gICAgLCBsdCAgICAgPSAnPCdcbiAgICAsIGd0ICAgICA9ICc+J1xuICAgICwgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUoaS0tKWRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKXtcbiAgdmFyIHJlc3VsdDtcbiAgaWYoTyAhPT0gbnVsbCl7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBkUCAgICAgICAgICAgICA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpe1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYoSUU4X0RPTV9ERUZJTkUpdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cbiAgaWYoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKXRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmKCd2YWx1ZScgaW4gQXR0cmlidXRlcylPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59OyIsInZhciBkUCAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICwgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGdldEtleXMgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpe1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgICA9IGdldEtleXMoUHJvcGVydGllcylcbiAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgLCBpID0gMFxuICAgICwgUDtcbiAgd2hpbGUobGVuZ3RoID4gaSlkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07IiwidmFyIHBJRSAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpXG4gICwgY3JlYXRlRGVzYyAgICAgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJylcbiAgLCB0b0lPYmplY3QgICAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBoYXMgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpXG4gICwgZ09QRCAgICAgICAgICAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QRCA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKXtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZihJRThfRE9NX0RFRklORSl0cnkge1xuICAgIHJldHVybiBnT1BEKE8sIFApO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG4gIGlmKGhhcyhPLCBQKSlyZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59OyIsIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0JylcbiAgLCBnT1BOICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmZcbiAgLCB0b1N0cmluZyAgPSB7fS50b1N0cmluZztcblxudmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uKGl0KXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2goZSl7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG4iLCIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJylcbiAgLCBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pe1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59OyIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7IiwiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgdG9PYmplY3QgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIElFX1BST1RPICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpXG4gICwgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbihPKXtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZihoYXMoTywgSUVfUFJPVE8pKXJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcil7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTsiLCJ2YXIgaGFzICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCB0b0lPYmplY3QgICAgPSByZXF1aXJlKCcuL190by1pb2JqZWN0JylcbiAgLCBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKVxuICAsIElFX1BST1RPICAgICA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIG5hbWVzKXtcbiAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwga2V5O1xuICBmb3Ioa2V5IGluIE8paWYoa2V5ICE9IElFX1BST1RPKWhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZihoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpe1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07IiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpXG4gICwgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKXtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07IiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7IiwiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgY29yZSAgICA9IHJlcXVpcmUoJy4vX2NvcmUnKVxuICAsIGZhaWxzICAgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihLRVksIGV4ZWMpe1xuICB2YXIgZm4gID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldXG4gICAgLCBleHAgPSB7fTtcbiAgZXhwW0tFWV0gPSBleGVjKGZuKTtcbiAgJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbigpeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcCwgdmFsdWUpe1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGUgIDogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGUgICAgOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlICAgICAgIDogdmFsdWVcbiAgfTtcbn07IiwidmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHRhcmdldCwgc3JjLCBzYWZlKXtcbiAgZm9yKHZhciBrZXkgaW4gc3JjKXtcbiAgICBpZihzYWZlICYmIHRhcmdldFtrZXldKXRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgZWxzZSBoaWRlKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH0gcmV0dXJuIHRhcmdldDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7IiwiLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24oTywgcHJvdG8pe1xuICBhbk9iamVjdChPKTtcbiAgaWYoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCl0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbih0ZXN0LCBidWdneSwgc2V0KXtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoKGUpeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90byl7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYoYnVnZ3kpTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgICAgPSByZXF1aXJlKCcuL19jb3JlJylcbiAgLCBkUCAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICwgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpXG4gICwgU1BFQ0lFUyAgICAgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSl7XG4gIHZhciBDID0gdHlwZW9mIGNvcmVbS0VZXSA9PSAnZnVuY3Rpb24nID8gY29yZVtLRVldIDogZ2xvYmFsW0tFWV07XG4gIGlmKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pZFAuZihDLCBTUEVDSUVTLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59OyIsInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mXG4gICwgaGFzID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgdGFnLCBzdGF0KXtcbiAgaWYoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSlkZWYoaXQsIFRBRywge2NvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZ30pO1xufTsiLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKVxuICAsIHVpZCAgICA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTsiLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJ1xuICAsIHN0b3JlICA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB7fSk7XG59OyIsIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgU1BFQ0lFUyAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oTywgRCl7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3IsIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gRCA6IGFGdW5jdGlvbihTKTtcbn07IiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKVxuICAsIGRlZmluZWQgICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRPX1NUUklORyl7XG4gIHJldHVybiBmdW5jdGlvbih0aGF0LCBwb3Mpe1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpXG4gICAgICAsIGkgPSB0b0ludGVnZXIocG9zKVxuICAgICAgLCBsID0gcy5sZW5ndGhcbiAgICAgICwgYSwgYjtcbiAgICBpZihpIDwgMCB8fCBpID49IGwpcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07IiwidmFyIGN0eCAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgaW52b2tlICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faW52b2tlJylcbiAgLCBodG1sICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19odG1sJylcbiAgLCBjZWwgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJylcbiAgLCBnbG9iYWwgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19nbG9iYWwnKVxuICAsIHByb2Nlc3MgICAgICAgICAgICA9IGdsb2JhbC5wcm9jZXNzXG4gICwgc2V0VGFzayAgICAgICAgICAgID0gZ2xvYmFsLnNldEltbWVkaWF0ZVxuICAsIGNsZWFyVGFzayAgICAgICAgICA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZVxuICAsIE1lc3NhZ2VDaGFubmVsICAgICA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbFxuICAsIGNvdW50ZXIgICAgICAgICAgICA9IDBcbiAgLCBxdWV1ZSAgICAgICAgICAgICAgPSB7fVxuICAsIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnXG4gICwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG52YXIgcnVuID0gZnVuY3Rpb24oKXtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIGlmKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSl7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50KXtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYoIXNldFRhc2sgfHwgIWNsZWFyVGFzayl7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pe1xuICAgIHZhciBhcmdzID0gW10sIGkgPSAxO1xuICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uKCl7XG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpe1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZihyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcycpe1xuICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmKE1lc3NhZ2VDaGFubmVsKXtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsO1xuICAgIHBvcnQgICAgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKXtcbiAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZihPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSl7XG4gICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbigpe1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG4gICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG4gICAgfTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogICBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59OyIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJylcbiAgLCBtYXggICAgICAgPSBNYXRoLm1heFxuICAsIG1pbiAgICAgICA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpbmRleCwgbGVuZ3RoKXtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07IiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCAgPSBNYXRoLmNlaWxcbiAgLCBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59OyIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0JylcbiAgLCBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07IiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpXG4gICwgbWluICAgICAgID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07IiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59OyIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIFMpe1xuICBpZighaXNPYmplY3QoaXQpKXJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpcmV0dXJuIHZhbDtcbiAgaWYodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICBpZighUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59OyIsInZhciBpZCA9IDBcbiAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59OyIsInZhciBnbG9iYWwgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgICAgICAgPSByZXF1aXJlKCcuL19jb3JlJylcbiAgLCBMSUJSQVJZICAgICAgICA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKVxuICAsIHdrc0V4dCAgICAgICAgID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpXG4gICwgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihuYW1lKXtcbiAgdmFyICRTeW1ib2wgPSBjb3JlLlN5bWJvbCB8fCAoY29yZS5TeW1ib2wgPSBMSUJSQVJZID8ge30gOiBnbG9iYWwuU3ltYm9sIHx8IHt9KTtcbiAgaWYobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSlkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7dmFsdWU6IHdrc0V4dC5mKG5hbWUpfSk7XG59OyIsImV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX3drcycpOyIsInZhciBzdG9yZSAgICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpXG4gICwgdWlkICAgICAgICA9IHJlcXVpcmUoJy4vX3VpZCcpXG4gICwgU3ltYm9sICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbFxuICAsIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlOyIsInZhciBjbGFzc29mICAgPSByZXF1aXJlKCcuL19jbGFzc29mJylcbiAgLCBJVEVSQVRPUiAgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKVxuICAsIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbihpdCl7XG4gIGlmKGl0ICE9IHVuZGVmaW5lZClyZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHRvT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCBjYWxsICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpXG4gICwgaXNBcnJheUl0ZXIgICAgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJylcbiAgLCB0b0xlbmd0aCAgICAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKVxuICAsIGdldEl0ZXJGbiAgICAgID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbihpdGVyKXsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCovKXtcbiAgICB2YXIgTyAgICAgICA9IHRvT2JqZWN0KGFycmF5TGlrZSlcbiAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcbiAgICAgICwgYUxlbiAgICA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgbWFwZm4gICA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkXG4gICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICAsIGluZGV4ICAgPSAwXG4gICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcbiAgICAgICwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmKG1hcHBpbmcpbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG4gICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEM7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKyl7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJylcbiAgLCBzdGVwICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJylcbiAgLCBJdGVyYXRvcnMgICAgICAgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCB0b0lPYmplY3QgICAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbigpe1xuICB2YXIgTyAgICAgPSB0aGlzLl90XG4gICAgLCBraW5kICA9IHRoaXMuX2tcbiAgICAsIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZighTyB8fCBpbmRleCA+PSBPLmxlbmd0aCl7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZihraW5kID09ICdrZXlzJyAgKXJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYoa2luZCA9PSAndmFsdWVzJylyZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7IiwiLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSlcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0Jywge2Fzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpfSk7IiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKX0pOyIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHtkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZn0pOyIsIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbigpe1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTsiLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCAgICAgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uKCl7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCl7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7IiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsICRrZXlzICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpe1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7IiwiLy8gMTkuMS4zLjE5IE9iamVjdC5zZXRQcm90b3R5cGVPZihPLCBwcm90bylcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0fSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKVxuICAsIGdsb2JhbCAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY3R4ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgLCBjbGFzc29mICAgICAgICAgICAgPSByZXF1aXJlKCcuL19jbGFzc29mJylcbiAgLCAkZXhwb3J0ICAgICAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGlzT2JqZWN0ICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpXG4gICwgYUZ1bmN0aW9uICAgICAgICAgID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgYW5JbnN0YW5jZSAgICAgICAgID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKVxuICAsIGZvck9mICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2Zvci1vZicpXG4gICwgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpXG4gICwgdGFzayAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldFxuICAsIG1pY3JvdGFzayAgICAgICAgICA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKClcbiAgLCBQUk9NSVNFICAgICAgICAgICAgPSAnUHJvbWlzZSdcbiAgLCBUeXBlRXJyb3IgICAgICAgICAgPSBnbG9iYWwuVHlwZUVycm9yXG4gICwgcHJvY2VzcyAgICAgICAgICAgID0gZ2xvYmFsLnByb2Nlc3NcbiAgLCAkUHJvbWlzZSAgICAgICAgICAgPSBnbG9iYWxbUFJPTUlTRV1cbiAgLCBwcm9jZXNzICAgICAgICAgICAgPSBnbG9iYWwucHJvY2Vzc1xuICAsIGlzTm9kZSAgICAgICAgICAgICA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnXG4gICwgZW1wdHkgICAgICAgICAgICAgID0gZnVuY3Rpb24oKXsgLyogZW1wdHkgKi8gfVxuICAsIEludGVybmFsLCBHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIFdyYXBwZXI7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbigpe1xuICB0cnkge1xuICAgIC8vIGNvcnJlY3Qgc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlICAgICA9ICRQcm9taXNlLnJlc29sdmUoMSlcbiAgICAgICwgRmFrZVByb21pc2UgPSAocHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9KVtyZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpXSA9IGZ1bmN0aW9uKGV4ZWMpeyBleGVjKGVtcHR5LCBlbXB0eSk7IH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJykgJiYgcHJvbWlzZS50aGVuKGVtcHR5KSBpbnN0YW5jZW9mIEZha2VQcm9taXNlO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG59KCk7XG5cbi8vIGhlbHBlcnNcbnZhciBzYW1lQ29uc3RydWN0b3IgPSBmdW5jdGlvbihhLCBiKXtcbiAgLy8gd2l0aCBsaWJyYXJ5IHdyYXBwZXIgc3BlY2lhbCBjYXNlXG4gIHJldHVybiBhID09PSBiIHx8IGEgPT09ICRQcm9taXNlICYmIGIgPT09IFdyYXBwZXI7XG59O1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbihpdCl7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIHR5cGVvZiAodGhlbiA9IGl0LnRoZW4pID09ICdmdW5jdGlvbicgPyB0aGVuIDogZmFsc2U7XG59O1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24oQyl7XG4gIHJldHVybiBzYW1lQ29uc3RydWN0b3IoJFByb21pc2UsIEMpXG4gICAgPyBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICA6IG5ldyBHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gR2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24oQyl7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uKCQkcmVzb2x2ZSwgJCRyZWplY3Qpe1xuICAgIGlmKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCl0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ICA9IGFGdW5jdGlvbihyZWplY3QpO1xufTtcbnZhciBwZXJmb3JtID0gZnVuY3Rpb24oZXhlYyl7XG4gIHRyeSB7XG4gICAgZXhlYygpO1xuICB9IGNhdGNoKGUpe1xuICAgIHJldHVybiB7ZXJyb3I6IGV9O1xuICB9XG59O1xudmFyIG5vdGlmeSA9IGZ1bmN0aW9uKHByb21pc2UsIGlzUmVqZWN0KXtcbiAgaWYocHJvbWlzZS5fbilyZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24oKXtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92XG4gICAgICAsIG9rICAgID0gcHJvbWlzZS5fcyA9PSAxXG4gICAgICAsIGkgICAgID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24ocmVhY3Rpb24pe1xuICAgICAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbFxuICAgICAgICAsIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlXG4gICAgICAgICwgcmVqZWN0ICA9IHJlYWN0aW9uLnJlamVjdFxuICAgICAgICAsIGRvbWFpbiAgPSByZWFjdGlvbi5kb21haW5cbiAgICAgICAgLCByZXN1bHQsIHRoZW47XG4gICAgICB0cnkge1xuICAgICAgICBpZihoYW5kbGVyKXtcbiAgICAgICAgICBpZighb2spe1xuICAgICAgICAgICAgaWYocHJvbWlzZS5faCA9PSAyKW9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGhhbmRsZXIgPT09IHRydWUpcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZihkb21haW4pZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTtcbiAgICAgICAgICAgIGlmKGRvbWFpbilkb21haW4uZXhpdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZihyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2Upe1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSl7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSlydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZihpc1JlamVjdCAmJiAhcHJvbWlzZS5faClvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uKCl7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdlxuICAgICAgLCBhYnJ1cHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYoaXNVbmhhbmRsZWQocHJvbWlzZSkpe1xuICAgICAgYWJydXB0ID0gcGVyZm9ybShmdW5jdGlvbigpe1xuICAgICAgICBpZihpc05vZGUpe1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYoaGFuZGxlciA9IGdsb2JhbC5vbnVuaGFuZGxlZHJlamVjdGlvbil7XG4gICAgICAgICAgaGFuZGxlcih7cHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZX0pO1xuICAgICAgICB9IGVsc2UgaWYoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcil7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmKGFicnVwdCl0aHJvdyBhYnJ1cHQuZXJyb3I7XG4gIH0pO1xufTtcbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uKHByb21pc2Upe1xuICBpZihwcm9taXNlLl9oID09IDEpcmV0dXJuIGZhbHNlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9hIHx8IHByb21pc2UuX2NcbiAgICAsIGkgICAgID0gMFxuICAgICwgcmVhY3Rpb247XG4gIHdoaWxlKGNoYWluLmxlbmd0aCA+IGkpe1xuICAgIHJlYWN0aW9uID0gY2hhaW5baSsrXTtcbiAgICBpZihyZWFjdGlvbi5mYWlsIHx8ICFpc1VuaGFuZGxlZChyZWFjdGlvbi5wcm9taXNlKSlyZXR1cm4gZmFsc2U7XG4gIH0gcmV0dXJuIHRydWU7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uKCl7XG4gICAgdmFyIGhhbmRsZXI7XG4gICAgaWYoaXNOb2RlKXtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZihoYW5kbGVyID0gZ2xvYmFsLm9ucmVqZWN0aW9uaGFuZGxlZCl7XG4gICAgICBoYW5kbGVyKHtwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3Z9KTtcbiAgICB9XG4gIH0pO1xufTtcbnZhciAkcmVqZWN0ID0gZnVuY3Rpb24odmFsdWUpe1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmKHByb21pc2UuX2QpcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmKCFwcm9taXNlLl9hKXByb21pc2UuX2EgPSBwcm9taXNlLl9jLnNsaWNlKCk7XG4gIG5vdGlmeShwcm9taXNlLCB0cnVlKTtcbn07XG52YXIgJHJlc29sdmUgPSBmdW5jdGlvbih2YWx1ZSl7XG4gIHZhciBwcm9taXNlID0gdGhpc1xuICAgICwgdGhlbjtcbiAgaWYocHJvbWlzZS5fZClyZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZihwcm9taXNlID09PSB2YWx1ZSl0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZih0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpe1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciB3cmFwcGVyID0ge193OiBwcm9taXNlLCBfZDogZmFsc2V9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICRyZWplY3QuY2FsbCh3cmFwcGVyLCBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgICAgIHByb21pc2UuX3MgPSAxO1xuICAgICAgbm90aWZ5KHByb21pc2UsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2goZSl7XG4gICAgJHJlamVjdC5jYWxsKHtfdzogcHJvbWlzZSwgX2Q6IGZhbHNlfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmKCFVU0VfTkFUSVZFKXtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgJFByb21pc2UgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKXtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaChlcnIpe1xuICAgICAgJHJlamVjdC5jYWxsKHRoaXMsIGVycik7XG4gICAgfVxuICB9O1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3Ipe1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCl7XG4gICAgICB2YXIgcmVhY3Rpb24gICAgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgJFByb21pc2UpKTtcbiAgICAgIHJlYWN0aW9uLm9rICAgICA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCAgID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT0gJ2Z1bmN0aW9uJyAmJiBvblJlamVjdGVkO1xuICAgICAgcmVhY3Rpb24uZG9tYWluID0gaXNOb2RlID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9jLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYodGhpcy5fYSl0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYodGhpcy5fcylub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uKG9uUmVqZWN0ZWQpe1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24oKXtcbiAgICB2YXIgcHJvbWlzZSAgPSBuZXcgSW50ZXJuYWw7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBjdHgoJHJlc29sdmUsIHByb21pc2UsIDEpO1xuICAgIHRoaXMucmVqZWN0ICA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwge1Byb21pc2U6ICRQcm9taXNlfSk7XG5yZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpKCRQcm9taXNlLCBQUk9NSVNFKTtcbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoUFJPTUlTRSk7XG5XcmFwcGVyID0gcmVxdWlyZSgnLi9fY29yZScpW1BST01JU0VdO1xuXG4vLyBzdGF0aWNzXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC41IFByb21pc2UucmVqZWN0KHIpXG4gIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpe1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcylcbiAgICAgICwgJCRyZWplY3QgICA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgICQkcmVqZWN0KHIpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTElCUkFSWSB8fCAhVVNFX05BVElWRSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjYgUHJvbWlzZS5yZXNvbHZlKHgpXG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCl7XG4gICAgLy8gaW5zdGFuY2VvZiBpbnN0ZWFkIG9mIGludGVybmFsIHNsb3QgY2hlY2sgYmVjYXVzZSB3ZSBzaG91bGQgZml4IGl0IHdpdGhvdXQgcmVwbGFjZW1lbnQgbmF0aXZlIFByb21pc2UgY29yZVxuICAgIGlmKHggaW5zdGFuY2VvZiAkUHJvbWlzZSAmJiBzYW1lQ29uc3RydWN0b3IoeC5jb25zdHJ1Y3RvciwgdGhpcykpcmV0dXJuIHg7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKVxuICAgICAgLCAkJHJlc29sdmUgID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgICQkcmVzb2x2ZSh4KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIShVU0VfTkFUSVZFICYmIHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24oaXRlcil7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKXtcbiAgICB2YXIgQyAgICAgICAgICA9IHRoaXNcbiAgICAgICwgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICAsIHJlc29sdmUgICAgPSBjYXBhYmlsaXR5LnJlc29sdmVcbiAgICAgICwgcmVqZWN0ICAgICA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciBhYnJ1cHQgPSBwZXJmb3JtKGZ1bmN0aW9uKCl7XG4gICAgICB2YXIgdmFsdWVzICAgID0gW11cbiAgICAgICAgLCBpbmRleCAgICAgPSAwXG4gICAgICAgICwgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24ocHJvbWlzZSl7XG4gICAgICAgIHZhciAkaW5kZXggICAgICAgID0gaW5kZXgrK1xuICAgICAgICAgICwgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24odmFsdWUpe1xuICAgICAgICAgIGlmKGFscmVhZHlDYWxsZWQpcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmKGFicnVwdClyZWplY3QoYWJydXB0LmVycm9yKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpe1xuICAgIHZhciBDICAgICAgICAgID0gdGhpc1xuICAgICAgLCBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgICwgcmVqZWN0ICAgICA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciBhYnJ1cHQgPSBwZXJmb3JtKGZ1bmN0aW9uKCl7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uKHByb21pc2Upe1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZihhYnJ1cHQpcmVqZWN0KGFicnVwdC5lcnJvcik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIHN0cm9uZyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tc3Ryb25nJyk7XG5cbi8vIDIzLjIgU2V0IE9iamVjdHNcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbicpKCdTZXQnLCBmdW5jdGlvbihnZXQpe1xuICByZXR1cm4gZnVuY3Rpb24gU2V0KCl7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9O1xufSwge1xuICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSlcbiAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpe1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHRoaXMsIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nKTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ICA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uKGl0ZXJhdGVkKXtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24oKXtcbiAgdmFyIE8gICAgID0gdGhpcy5fdFxuICAgICwgaW5kZXggPSB0aGlzLl9pXG4gICAgLCBwb2ludDtcbiAgaWYoaW5kZXggPj0gTy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHt2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlfTtcbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgaGFzICAgICAgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIERFU0NSSVBUT1JTICAgID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKVxuICAsICRleHBvcnQgICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCByZWRlZmluZSAgICAgICA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJylcbiAgLCBNRVRBICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVlcbiAgLCAkZmFpbHMgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBzaGFyZWQgICAgICAgICA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpXG4gICwgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpXG4gICwgdWlkICAgICAgICAgICAgPSByZXF1aXJlKCcuL191aWQnKVxuICAsIHdrcyAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fd2tzJylcbiAgLCB3a3NFeHQgICAgICAgICA9IHJlcXVpcmUoJy4vX3drcy1leHQnKVxuICAsIHdrc0RlZmluZSAgICAgID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpXG4gICwga2V5T2YgICAgICAgICAgPSByZXF1aXJlKCcuL19rZXlvZicpXG4gICwgZW51bUtleXMgICAgICAgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKVxuICAsIGlzQXJyYXkgICAgICAgID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKVxuICAsIGFuT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b0lPYmplY3QgICAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBjcmVhdGVEZXNjICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKVxuICAsIF9jcmVhdGUgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgZ09QTkV4dCAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKVxuICAsICRHT1BEICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKVxuICAsICREUCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJylcbiAgLCAka2V5cyAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJylcbiAgLCBnT1BEICAgICAgICAgICA9ICRHT1BELmZcbiAgLCBkUCAgICAgICAgICAgICA9ICREUC5mXG4gICwgZ09QTiAgICAgICAgICAgPSBnT1BORXh0LmZcbiAgLCAkU3ltYm9sICAgICAgICA9IGdsb2JhbC5TeW1ib2xcbiAgLCAkSlNPTiAgICAgICAgICA9IGdsb2JhbC5KU09OXG4gICwgX3N0cmluZ2lmeSAgICAgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnlcbiAgLCBQUk9UT1RZUEUgICAgICA9ICdwcm90b3R5cGUnXG4gICwgSElEREVOICAgICAgICAgPSB3a3MoJ19oaWRkZW4nKVxuICAsIFRPX1BSSU1JVElWRSAgID0gd2tzKCd0b1ByaW1pdGl2ZScpXG4gICwgaXNFbnVtICAgICAgICAgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZVxuICAsIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKVxuICAsIEFsbFN5bWJvbHMgICAgID0gc2hhcmVkKCdzeW1ib2xzJylcbiAgLCBPUFN5bWJvbHMgICAgICA9IHNoYXJlZCgnb3Atc3ltYm9scycpXG4gICwgT2JqZWN0UHJvdG8gICAgPSBPYmplY3RbUFJPVE9UWVBFXVxuICAsIFVTRV9OQVRJVkUgICAgID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJ1xuICAsIFFPYmplY3QgICAgICAgID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBkUCh0aGlzLCAnYScsIHt2YWx1ZTogN30pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZihwcm90b0Rlc2MpZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZihwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKWRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24odGFnKXtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCl7XG4gIGlmKGl0ID09PSBPYmplY3RQcm90bykkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZihoYXMoQWxsU3ltYm9scywga2V5KSl7XG4gICAgaWYoIUQuZW51bWVyYWJsZSl7XG4gICAgICBpZighaGFzKGl0LCBISURERU4pKWRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0paXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKXtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpXG4gICAgLCBpICAgID0gMFxuICAgICwgbCA9IGtleXMubGVuZ3RoXG4gICAgLCBrZXk7XG4gIHdoaWxlKGwgPiBpKSRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApe1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSl7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKXJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICBpdCAgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZihpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSlELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcbiAgdmFyIG5hbWVzICA9IGdPUE4odG9JT2JqZWN0KGl0KSlcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpe1xuICAgIGlmKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSlyZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpe1xuICB2YXIgSVNfT1AgID0gaXQgPT09IE9iamVjdFByb3RvXG4gICAgLCBuYW1lcyAgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSlcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpe1xuICAgIGlmKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSlyZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmKCFVU0VfTkFUSVZFKXtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuICAgIGlmKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKXRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24odmFsdWUpe1xuICAgICAgaWYodGhpcyA9PT0gT2JqZWN0UHJvdG8pJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSl0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmKERFU0NSSVBUT1JTICYmIHNldHRlcilzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHtjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mICAgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiAgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSl7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uKG5hbWUpe1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH1cbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwge1N5bWJvbDogJFN5bWJvbH0pO1xuXG5mb3IodmFyIHN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaSA9IDA7IHN5bWJvbHMubGVuZ3RoID4gaTsgKXdrcyhzeW1ib2xzW2krK10pO1xuXG5mb3IodmFyIHN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBpID0gMDsgc3ltYm9scy5sZW5ndGggPiBpOyApd2tzRGVmaW5lKHN5bWJvbHNbaSsrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG4gICAgaWYoaXNTeW1ib2woa2V5KSlyZXR1cm4ga2V5T2YoU3ltYm9sUmVnaXN0cnksIGtleSk7XG4gICAgdGhyb3cgVHlwZUVycm9yKGtleSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uKCl7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24oKXsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24oKXtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoe2E6IFN9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpe1xuICAgIGlmKGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKXJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIHZhciBhcmdzID0gW2l0XVxuICAgICAgLCBpICAgID0gMVxuICAgICAgLCByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmKHR5cGVvZiByZXBsYWNlciA9PSAnZnVuY3Rpb24nKSRyZXBsYWNlciA9IHJlcGxhY2VyO1xuICAgIGlmKCRyZXBsYWNlciB8fCAhaXNBcnJheShyZXBsYWNlcikpcmVwbGFjZXIgPSBmdW5jdGlvbihrZXksIHZhbHVlKXtcbiAgICAgIGlmKCRyZXBsYWNlcil2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYoIWlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpOyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT05cbnZhciAkZXhwb3J0ICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHt0b0pTT046IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24tdG8tanNvbicpKCdTZXQnKX0pOyIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpOyIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpOyIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgaGlkZSAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIEl0ZXJhdG9ycyAgICAgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKVxuICAsIFRPX1NUUklOR19UQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxuZm9yKHZhciBjb2xsZWN0aW9ucyA9IFsnTm9kZUxpc3QnLCAnRE9NVG9rZW5MaXN0JywgJ01lZGlhTGlzdCcsICdTdHlsZVNoZWV0TGlzdCcsICdDU1NSdWxlTGlzdCddLCBpID0gMDsgaSA8IDU7IGkrKyl7XG4gIHZhciBOQU1FICAgICAgID0gY29sbGVjdGlvbnNbaV1cbiAgICAsIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV1cbiAgICAsIHByb3RvICAgICAgPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZihwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10paGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cblxuZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpO1xuICB9XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJztcbn1cbmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDtcblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5leHBvcnRzLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhkKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7XG5cbmZ1bmN0aW9uIGlzRXJyb3IoZSkge1xuICByZXR1cm4gKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gQnVmZmVyLmlzQnVmZmVyO1xuXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobyk7XG59XG4iLCJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFQ0RIKGN1cnZlKSB7XG5cdHJldHVybiBuZXcgRUNESChjdXJ2ZSk7XG59O1xuXG52YXIgYWxpYXNlcyA9IHtcblx0c2VjcDI1NmsxOiB7XG5cdFx0bmFtZTogJ3NlY3AyNTZrMScsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0c2VjcDIyNHIxOiB7XG5cdFx0bmFtZTogJ3AyMjQnLFxuXHRcdGJ5dGVMZW5ndGg6IDI4XG5cdH0sXG5cdHByaW1lMjU2djE6IHtcblx0XHRuYW1lOiAncDI1NicsXG5cdFx0Ynl0ZUxlbmd0aDogMzJcblx0fSxcblx0cHJpbWUxOTJ2MToge1xuXHRcdG5hbWU6ICdwMTkyJyxcblx0XHRieXRlTGVuZ3RoOiAyNFxuXHR9LFxuXHRlZDI1NTE5OiB7XG5cdFx0bmFtZTogJ2VkMjU1MTknLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AzODRyMToge1xuXHRcdG5hbWU6ICdwMzg0Jyxcblx0XHRieXRlTGVuZ3RoOiA0OFxuXHR9LFxuXHRzZWNwNTIxcjE6IHtcblx0XHRuYW1lOiAncDUyMScsXG5cdFx0Ynl0ZUxlbmd0aDogNjZcblx0fVxufTtcblxuYWxpYXNlcy5wMjI0ID0gYWxpYXNlcy5zZWNwMjI0cjE7XG5hbGlhc2VzLnAyNTYgPSBhbGlhc2VzLnNlY3AyNTZyMSA9IGFsaWFzZXMucHJpbWUyNTZ2MTtcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxO1xuYWxpYXNlcy5wMzg0ID0gYWxpYXNlcy5zZWNwMzg0cjE7XG5hbGlhc2VzLnA1MjEgPSBhbGlhc2VzLnNlY3A1MjFyMTtcblxuZnVuY3Rpb24gRUNESChjdXJ2ZSkge1xuXHR0aGlzLmN1cnZlVHlwZSA9IGFsaWFzZXNbY3VydmVdO1xuXHRpZiAoIXRoaXMuY3VydmVUeXBlICkge1xuXHRcdHRoaXMuY3VydmVUeXBlID0ge1xuXHRcdFx0bmFtZTogY3VydmVcblx0XHR9O1xuXHR9XG5cdHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuZWModGhpcy5jdXJ2ZVR5cGUubmFtZSk7XG5cdHRoaXMua2V5cyA9IHZvaWQgMDtcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpO1xuXHRyZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoZW5jLCBmb3JtYXQpO1xufTtcblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuXHRpbmVuYyA9IGluZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIob3RoZXIpKSB7XG5cdFx0b3RoZXIgPSBuZXcgQnVmZmVyKG90aGVyLCBpbmVuYyk7XG5cdH1cblx0dmFyIG90aGVyUHViID0gdGhpcy5jdXJ2ZS5rZXlGcm9tUHVibGljKG90aGVyKS5nZXRQdWJsaWMoKTtcblx0dmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKCk7XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShvdXQsIGVuYywgdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aCk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcblx0dmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpO1xuXHRpZiAoZm9ybWF0ID09PSAnaHlicmlkJykge1xuXHRcdGlmIChrZXlba2V5Lmxlbmd0aCAtIDFdICUgMikge1xuXHRcdFx0a2V5WzBdID0gNztcblx0XHR9IGVsc2Uge1xuXHRcdFx0a2V5IFswXSA9IDY7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShrZXksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKTtcbn07XG5cbkVDREgucHJvdG90eXBlLnNldFB1YmxpY0tleSA9IGZ1bmN0aW9uIChwdWIsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG5cdFx0cHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG5cdH1cblx0dGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMocHViKTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKHByaXYsIGVuYykge1xuXHRlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuXHRpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuXHRcdHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG5cdH1cblx0dmFyIF9wcml2ID0gbmV3IEJOKHByaXYpO1xuXHRfcHJpdiA9IF9wcml2LnRvU3RyaW5nKDE2KTtcblx0dGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jLCBsZW4pIHtcblx0aWYgKCFBcnJheS5pc0FycmF5KGJuKSkge1xuXHRcdGJuID0gYm4udG9BcnJheSgpO1xuXHR9XG5cdHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKTtcblx0aWYgKGxlbiAmJiBidWYubGVuZ3RoIDwgbGVuKSB7XG5cdFx0dmFyIHplcm9zID0gbmV3IEJ1ZmZlcihsZW4gLSBidWYubGVuZ3RoKTtcblx0XHR6ZXJvcy5maWxsKDApO1xuXHRcdGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKTtcblx0fVxuXHRpZiAoIWVuYykge1xuXHRcdHJldHVybiBidWY7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuXHR9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgbWQ1ID0gcmVxdWlyZSgnLi9tZDUnKVxudmFyIHJtZDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2hOb0NvbnN0cnVjdG9yKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG4gIHRoaXMuYnVmZmVycyA9IFtdXG59XG5cbmluaGVyaXRzKEhhc2hOb0NvbnN0cnVjdG9yLCBCYXNlKVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuYnVmZmVycy5wdXNoKGRhdGEpXG59XG5cbkhhc2hOb0NvbnN0cnVjdG9yLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuYnVmZmVycylcbiAgdmFyIHIgPSB0aGlzLl9oYXNoKGJ1ZilcbiAgdGhpcy5idWZmZXJzID0gbnVsbFxuXG4gIHJldHVybiByXG59XG5cbmZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG5cbiAgdGhpcy5faGFzaCA9IGhhc2hcbn1cblxuaW5oZXJpdHMoSGFzaCwgQmFzZSlcblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhhc2gucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIYXNoIChhbGcpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKCdtZDUnID09PSBhbGcpIHJldHVybiBuZXcgSGFzaE5vQ29uc3RydWN0b3IobWQ1KVxuICBpZiAoJ3JtZDE2MCcgPT09IGFsZyB8fCAncmlwZW1kMTYwJyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKHJtZDE2MClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW50U2l6ZSA9IDQ7XG52YXIgemVyb0J1ZmZlciA9IG5ldyBCdWZmZXIoaW50U2l6ZSk7IHplcm9CdWZmZXIuZmlsbCgwKTtcbnZhciBjaHJzeiA9IDg7XG5cbmZ1bmN0aW9uIHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pIHtcbiAgaWYgKChidWYubGVuZ3RoICUgaW50U2l6ZSkgIT09IDApIHtcbiAgICB2YXIgbGVuID0gYnVmLmxlbmd0aCArIChpbnRTaXplIC0gKGJ1Zi5sZW5ndGggJSBpbnRTaXplKSk7XG4gICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCB6ZXJvQnVmZmVyXSwgbGVuKTtcbiAgfVxuXG4gIHZhciBhcnIgPSBbXTtcbiAgdmFyIGZuID0gYmlnRW5kaWFuID8gYnVmLnJlYWRJbnQzMkJFIDogYnVmLnJlYWRJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkgKz0gaW50U2l6ZSkge1xuICAgIGFyci5wdXNoKGZuLmNhbGwoYnVmLCBpKSk7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXIoYXJyLCBzaXplLCBiaWdFbmRpYW4pIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi53cml0ZUludDMyQkUgOiBidWYud3JpdGVJbnQzMkxFO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGZuLmNhbGwoYnVmLCBhcnJbaV0sIGkgKiA0LCB0cnVlKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuXG5mdW5jdGlvbiBoYXNoKGJ1ZiwgZm4sIGhhc2hTaXplLCBiaWdFbmRpYW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gbmV3IEJ1ZmZlcihidWYpO1xuICB2YXIgYXJyID0gZm4odG9BcnJheShidWYsIGJpZ0VuZGlhbiksIGJ1Zi5sZW5ndGggKiBjaHJzeik7XG4gIHJldHVybiB0b0J1ZmZlcihhcnIsIGhhc2hTaXplLCBiaWdFbmRpYW4pO1xufVxuZXhwb3J0cy5oYXNoID0gaGFzaDsiLCIndXNlIHN0cmljdCc7XG4vKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZVxuICogRGlnZXN0IEFsZ29yaXRobSwgYXMgZGVmaW5lZCBpbiBSRkMgMTMyMS5cbiAqIFZlcnNpb24gMi4xIENvcHlyaWdodCAoQykgUGF1bCBKb2huc3RvbiAxOTk5IC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cbiAqL1xuXG52YXIgaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG4vKlxuICogQ2FsY3VsYXRlIHRoZSBNRDUgb2YgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcywgYW5kIGEgYml0IGxlbmd0aFxuICovXG5mdW5jdGlvbiBjb3JlX21kNSh4LCBsZW4pXG57XG4gIC8qIGFwcGVuZCBwYWRkaW5nICovXG4gIHhbbGVuID4+IDVdIHw9IDB4ODAgPDwgKChsZW4pICUgMzIpO1xuICB4WygoKGxlbiArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSBsZW47XG5cbiAgdmFyIGEgPSAgMTczMjU4NDE5MztcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xuICB2YXIgYyA9IC0xNzMyNTg0MTk0O1xuICB2YXIgZCA9ICAyNzE3MzM4Nzg7XG5cbiAgZm9yKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDE2KVxuICB7XG4gICAgdmFyIG9sZGEgPSBhO1xuICAgIHZhciBvbGRiID0gYjtcbiAgICB2YXIgb2xkYyA9IGM7XG4gICAgdmFyIG9sZGQgPSBkO1xuXG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDBdLCA3ICwgLTY4MDg3NjkzNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDFdLCAxMiwgLTM4OTU2NDU4Nik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDJdLCAxNywgIDYwNjEwNTgxOSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDNdLCAyMiwgLTEwNDQ1MjUzMzApO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyA0XSwgNyAsIC0xNzY0MTg4OTcpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA1XSwgMTIsICAxMjAwMDgwNDI2KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsgNl0sIDE3LCAtMTQ3MzIzMTM0MSk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krIDddLCAyMiwgLTQ1NzA1OTgzKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgOF0sIDcgLCAgMTc3MDAzNTQxNik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krIDldLCAxMiwgLTE5NTg0MTQ0MTcpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTcsIC00MjA2Myk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTFdLCAyMiwgLTE5OTA0MDQxNjIpO1xuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKzEyXSwgNyAsICAxODA0NjAzNjgyKTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsxM10sIDEyLCAtNDAzNDExMDEpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKzE0XSwgMTcsIC0xNTAyMDAyMjkwKTtcbiAgICBiID0gbWQ1X2ZmKGIsIGMsIGQsIGEsIHhbaSsxNV0sIDIyLCAgMTIzNjUzNTMyOSk7XG5cbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgMV0sIDUgLCAtMTY1Nzk2NTEwKTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgNl0sIDkgLCAtMTA2OTUwMTYzMik7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTFdLCAxNCwgIDY0MzcxNzcxMyk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDBdLCAyMCwgLTM3Mzg5NzMwMik7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDVdLCA1ICwgLTcwMTU1ODY5MSk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTBdLCA5ICwgIDM4MDE2MDgzKTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE0LCAtNjYwNDc4MzM1KTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsgNF0sIDIwLCAtNDA1NTM3ODQ4KTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDUgLCAgNTY4NDQ2NDM4KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsxNF0sIDkgLCAtMTAxOTgwMzY5MCk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krIDNdLCAxNCwgLTE4NzM2Mzk2MSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDhdLCAyMCwgIDExNjM1MzE1MDEpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKzEzXSwgNSAsIC0xNDQ0NjgxNDY3KTtcbiAgICBkID0gbWQ1X2dnKGQsIGEsIGIsIGMsIHhbaSsgMl0sIDkgLCAtNTE0MDM3ODQpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyA3XSwgMTQsICAxNzM1MzI4NDczKTtcbiAgICBiID0gbWQ1X2dnKGIsIGMsIGQsIGEsIHhbaSsxMl0sIDIwLCAtMTkyNjYwNzczNCk7XG5cbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgNV0sIDQgLCAtMzc4NTU4KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgOF0sIDExLCAtMjAyMjU3NDQ2Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTFdLCAxNiwgIDE4MzkwMzA1NjIpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKzE0XSwgMjMsIC0zNTMwOTU1Nik7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDFdLCA0ICwgLTE1MzA5OTIwNjApO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyA0XSwgMTEsICAxMjcyODkzMzUzKTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE2LCAtMTU1NDk3NjMyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxMF0sIDIzLCAtMTA5NDczMDY0MCk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krMTNdLCA0ICwgIDY4MTI3OTE3NCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDBdLCAxMSwgLTM1ODUzNzIyMik7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDNdLCAxNiwgLTcyMjUyMTk3OSk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDZdLCAyMywgIDc2MDI5MTg5KTtcbiAgICBhID0gbWQ1X2hoKGEsIGIsIGMsIGQsIHhbaSsgOV0sIDQgLCAtNjQwMzY0NDg3KTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsxMl0sIDExLCAtNDIxODE1ODM1KTtcbiAgICBjID0gbWQ1X2hoKGMsIGQsIGEsIGIsIHhbaSsxNV0sIDE2LCAgNTMwNzQyNTIwKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsgMl0sIDIzLCAtOTk1MzM4NjUxKTtcblxuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyAwXSwgNiAsIC0xOTg2MzA4NDQpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyA3XSwgMTAsICAxMTI2ODkxNDE1KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE1LCAtMTQxNjM1NDkwNSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDVdLCAyMSwgLTU3NDM0MDU1KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDYgLCAgMTcwMDQ4NTU3MSk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krIDNdLCAxMCwgLTE4OTQ5ODY2MDYpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKzEwXSwgMTUsIC0xMDUxNTIzKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsgMV0sIDIxLCAtMjA1NDkyMjc5OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDhdLCA2ICwgIDE4NzMzMTMzNTkpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKzE1XSwgMTAsIC0zMDYxMTc0NCk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDZdLCAxNSwgLTE1NjAxOTgzODApO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKzEzXSwgMjEsICAxMzA5MTUxNjQ5KTtcbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDYgLCAtMTQ1NTIzMDcwKTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krIDJdLCAxNSwgIDcxODc4NzI1OSk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDldLCAyMSwgLTM0MzQ4NTU1MSk7XG5cbiAgICBhID0gc2FmZV9hZGQoYSwgb2xkYSk7XG4gICAgYiA9IHNhZmVfYWRkKGIsIG9sZGIpO1xuICAgIGMgPSBzYWZlX2FkZChjLCBvbGRjKTtcbiAgICBkID0gc2FmZV9hZGQoZCwgb2xkZCk7XG4gIH1cbiAgcmV0dXJuIEFycmF5KGEsIGIsIGMsIGQpO1xuXG59XG5cbi8qXG4gKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBmb3VyIGJhc2ljIG9wZXJhdGlvbnMgdGhlIGFsZ29yaXRobSB1c2VzLlxuICovXG5mdW5jdGlvbiBtZDVfY21uKHEsIGEsIGIsIHgsIHMsIHQpXG57XG4gIHJldHVybiBzYWZlX2FkZChiaXRfcm9sKHNhZmVfYWRkKHNhZmVfYWRkKGEsIHEpLCBzYWZlX2FkZCh4LCB0KSksIHMpLGIpO1xufVxuZnVuY3Rpb24gbWQ1X2ZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKChiICYgYykgfCAoKH5iKSAmIGQpLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9nZyhhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGQpIHwgKGMgJiAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaGgoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYiBeIGMgXiBkLCBhLCBiLCB4LCBzLCB0KTtcbn1cbmZ1bmN0aW9uIG1kNV9paShhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbihjIF4gKGIgfCAofmQpKSwgYSwgYiwgeCwgcywgdCk7XG59XG5cbi8qXG4gKiBBZGQgaW50ZWdlcnMsIHdyYXBwaW5nIGF0IDJeMzIuIFRoaXMgdXNlcyAxNi1iaXQgb3BlcmF0aW9ucyBpbnRlcm5hbGx5XG4gKiB0byB3b3JrIGFyb3VuZCBidWdzIGluIHNvbWUgSlMgaW50ZXJwcmV0ZXJzLlxuICovXG5mdW5jdGlvbiBzYWZlX2FkZCh4LCB5KVxue1xuICB2YXIgbHN3ID0gKHggJiAweEZGRkYpICsgKHkgJiAweEZGRkYpO1xuICB2YXIgbXN3ID0gKHggPj4gMTYpICsgKHkgPj4gMTYpICsgKGxzdyA+PiAxNik7XG4gIHJldHVybiAobXN3IDw8IDE2KSB8IChsc3cgJiAweEZGRkYpO1xufVxuXG4vKlxuICogQml0d2lzZSByb3RhdGUgYSAzMi1iaXQgbnVtYmVyIHRvIHRoZSBsZWZ0LlxuICovXG5mdW5jdGlvbiBiaXRfcm9sKG51bSwgY250KVxue1xuICByZXR1cm4gKG51bSA8PCBjbnQpIHwgKG51bSA+Pj4gKDMyIC0gY250KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWQ1KGJ1Zikge1xuICByZXR1cm4gaGVscGVycy5oYXNoKGJ1ZiwgY29yZV9tZDUsIDE2KTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9icm93c2VyJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cblxudmFyIFpFUk9TID0gbmV3IEJ1ZmZlcigxMjgpXG5aRVJPUy5maWxsKDApXG5cbmZ1bmN0aW9uIEhtYWMoYWxnLCBrZXkpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5ID0gbmV3IEJ1ZmZlcihrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGNyZWF0ZUhhc2goYWxnKS51cGRhdGUoa2V5KS5kaWdlc3QoKVxuXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IHRoaXMuX2lwYWQgPSBuZXcgQnVmZmVyKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIFRyYW5zZm9ybSlcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhLCBlbmMpXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSG1hYy5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG5cbiAgbmV4dCgpXG59XG5cbkhtYWMucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChuZXh0KSB7XG4gIHRoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuXG4gIHJldHVybiBjcmVhdGVIYXNoKHRoaXMuX2FsZykudXBkYXRlKHRoaXMuX29wYWQpLnVwZGF0ZShoKS5kaWdlc3QoZW5jKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUhtYWMoYWxnLCBrZXkpIHtcbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoT2JqZWN0LmtleXMocmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduL2FsZ29zJykpKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG47W1xuICAnQ2lwaGVyJyxcbiAgJ2NyZWF0ZUNpcGhlcicsXG4gICdDaXBoZXJpdicsXG4gICdjcmVhdGVDaXBoZXJpdicsXG4gICdEZWNpcGhlcicsXG4gICdjcmVhdGVEZWNpcGhlcicsXG4gICdEZWNpcGhlcml2JyxcbiAgJ2NyZWF0ZURlY2lwaGVyaXYnLFxuICAnZ2V0Q2lwaGVycycsXG4gICdsaXN0Q2lwaGVycydcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGFlc1trZXldXG59KVxuXG52YXIgZGggPSByZXF1aXJlKCdkaWZmaWUtaGVsbG1hbicpXG47W1xuICAnRGlmZmllSGVsbG1hbkdyb3VwJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdnZXREaWZmaWVIZWxsbWFuJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW4nLFxuICAnRGlmZmllSGVsbG1hbidcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGRoW2tleV1cbn0pXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcbjtbXG4gICdjcmVhdGVTaWduJyxcbiAgJ1NpZ24nLFxuICAnY3JlYXRlVmVyaWZ5JyxcbiAgJ1ZlcmlmeSdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHNpZ25ba2V5XVxufSlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuO1tcbiAgJ3B1YmxpY0VuY3J5cHQnLFxuICAncHJpdmF0ZUVuY3J5cHQnLFxuICAncHVibGljRGVjcnlwdCcsXG4gICdwcml2YXRlRGVjcnlwdCdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHB1YmxpY0VuY3J5cHRba2V5XVxufSlcblxuLy8gdGhlIGxlYXN0IEkgY2FuIGRvIGlzIG1ha2UgZXJyb3IgbWVzc2FnZXMgZm9yIHRoZSByZXN0IG9mIHRoZSBub2RlLmpzL2NyeXB0byBhcGkuXG47W1xuICAnY3JlYXRlQ3JlZGVudGlhbHMnXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgZXhwb3J0c1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgJ3NvcnJ5LCAnICsgbmFtZSArICcgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgICAnd2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMnLFxuICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgICBdLmpvaW4oJ1xcbicpKVxuICB9XG59KVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnV0aWxzID0gcmVxdWlyZSgnLi9kZXMvdXRpbHMnKTtcbmV4cG9ydHMuQ2lwaGVyID0gcmVxdWlyZSgnLi9kZXMvY2lwaGVyJyk7XG5leHBvcnRzLkRFUyA9IHJlcXVpcmUoJy4vZGVzL2RlcycpO1xuZXhwb3J0cy5DQkMgPSByZXF1aXJlKCcuL2Rlcy9jYmMnKTtcbmV4cG9ydHMuRURFID0gcmVxdWlyZSgnLi9kZXMvZWRlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgcHJvdG8gPSB7fTtcblxuZnVuY3Rpb24gQ0JDU3RhdGUoaXYpIHtcbiAgYXNzZXJ0LmVxdWFsKGl2Lmxlbmd0aCwgOCwgJ0ludmFsaWQgSVYgbGVuZ3RoJyk7XG5cbiAgdGhpcy5pdiA9IG5ldyBBcnJheSg4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml2Lmxlbmd0aDsgaSsrKVxuICAgIHRoaXMuaXZbaV0gPSBpdltpXTtcbn1cblxuZnVuY3Rpb24gaW5zdGFudGlhdGUoQmFzZSkge1xuICBmdW5jdGlvbiBDQkMob3B0aW9ucykge1xuICAgIEJhc2UuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLl9jYmNJbml0KCk7XG4gIH1cbiAgaW5oZXJpdHMoQ0JDLCBCYXNlKTtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHByb3RvKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgQ0JDLnByb3RvdHlwZVtrZXldID0gcHJvdG9ba2V5XTtcbiAgfVxuXG4gIENCQy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgQ0JDKG9wdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBDQkM7XG59XG5cbmV4cG9ydHMuaW5zdGFudGlhdGUgPSBpbnN0YW50aWF0ZTtcblxucHJvdG8uX2NiY0luaXQgPSBmdW5jdGlvbiBfY2JjSW5pdCgpIHtcbiAgdmFyIHN0YXRlID0gbmV3IENCQ1N0YXRlKHRoaXMub3B0aW9ucy5pdik7XG4gIHRoaXMuX2NiY1N0YXRlID0gc3RhdGU7XG59O1xuXG5wcm90by5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9jYmNTdGF0ZTtcbiAgdmFyIHN1cGVyUHJvdG8gPSB0aGlzLmNvbnN0cnVjdG9yLnN1cGVyXy5wcm90b3R5cGU7XG5cbiAgdmFyIGl2ID0gc3RhdGUuaXY7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldIF49IGlucFtpbk9mZiArIGldO1xuXG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaXYsIDAsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gb3V0W291dE9mZiArIGldO1xuICB9IGVsc2Uge1xuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIG91dFtvdXRPZmYgKyBpXSBePSBpdltpXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICAgIGl2W2ldID0gaW5wW2luT2ZmICsgaV07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIENpcGhlcihvcHRpb25zKSB7XG4gIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgdGhpcy50eXBlID0gdGhpcy5vcHRpb25zLnR5cGU7XG4gIHRoaXMuYmxvY2tTaXplID0gODtcbiAgdGhpcy5faW5pdCgpO1xuXG4gIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXI7XG5cbkNpcGhlci5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBfaW5pdCgpIHtcbiAgLy8gTWlnaHQgYmUgb3ZlcnJpZGVkXG59O1xuXG5DaXBoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShkYXRhKSB7XG4gIGlmIChkYXRhLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2RlY3J5cHQnKVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVEZWNyeXB0KGRhdGEpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUVuY3J5cHQoZGF0YSk7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9idWZmZXIgPSBmdW5jdGlvbiBfYnVmZmVyKGRhdGEsIG9mZikge1xuICAvLyBBcHBlbmQgZGF0YSB0byBidWZmZXJcbiAgdmFyIG1pbiA9IE1hdGgubWluKHRoaXMuYnVmZmVyLmxlbmd0aCAtIHRoaXMuYnVmZmVyT2ZmLCBkYXRhLmxlbmd0aCAtIG9mZik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluOyBpKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYgKyBpXSA9IGRhdGFbb2ZmICsgaV07XG4gIHRoaXMuYnVmZmVyT2ZmICs9IG1pbjtcblxuICAvLyBTaGlmdCBuZXh0XG4gIHJldHVybiBtaW47XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9mbHVzaEJ1ZmZlciA9IGZ1bmN0aW9uIF9mbHVzaEJ1ZmZlcihvdXQsIG9mZikge1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgb2ZmKTtcbiAgdGhpcy5idWZmZXJPZmYgPSAwO1xuICByZXR1cm4gdGhpcy5ibG9ja1NpemU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVFbmNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZUVuY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSAoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIHwgMDtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICBpZiAodGhpcy5idWZmZXJPZmYgIT09IDApIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gICAgaWYgKHRoaXMuYnVmZmVyT2ZmID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gV3JpdGUgYmxvY2tzXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCAtICgoZGF0YS5sZW5ndGggLSBpbnB1dE9mZikgJSB0aGlzLmJsb2NrU2l6ZSk7XG4gIGZvciAoOyBpbnB1dE9mZiA8IG1heDsgaW5wdXRPZmYgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICB0aGlzLl91cGRhdGUoZGF0YSwgaW5wdXRPZmYsIG91dCwgb3V0cHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5ibG9ja1NpemU7XG4gIH1cblxuICAvLyBRdWV1ZSByZXN0XG4gIGZvciAoOyBpbnB1dE9mZiA8IGRhdGEubGVuZ3RoOyBpbnB1dE9mZisrLCB0aGlzLmJ1ZmZlck9mZisrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXSA9IGRhdGFbaW5wdXRPZmZdO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGVEZWNyeXB0ID0gZnVuY3Rpb24gX3VwZGF0ZURlY3J5cHQoZGF0YSkge1xuICB2YXIgaW5wdXRPZmYgPSAwO1xuICB2YXIgb3V0cHV0T2ZmID0gMDtcblxuICB2YXIgY291bnQgPSBNYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmICsgZGF0YS5sZW5ndGgpIC8gdGhpcy5ibG9ja1NpemUpIC0gMTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheShjb3VudCAqIHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBUT0RPKGluZHV0bnkpOiBvcHRpbWl6ZSBpdCwgdGhpcyBpcyBmYXIgZnJvbSBvcHRpbWFsXG4gIGZvciAoOyBjb3VudCA+IDA7IGNvdW50LS0pIHtcbiAgICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBCdWZmZXIgcmVzdCBvZiB0aGUgaW5wdXRcbiAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIGZpbmFsKGJ1ZmZlcikge1xuICB2YXIgZmlyc3Q7XG4gIGlmIChidWZmZXIpXG4gICAgZmlyc3QgPSB0aGlzLnVwZGF0ZShidWZmZXIpO1xuXG4gIHZhciBsYXN0O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRW5jcnlwdCgpO1xuICBlbHNlXG4gICAgbGFzdCA9IHRoaXMuX2ZpbmFsRGVjcnlwdCgpO1xuXG4gIGlmIChmaXJzdClcbiAgICByZXR1cm4gZmlyc3QuY29uY2F0KGxhc3QpO1xuICBlbHNlXG4gICAgcmV0dXJuIGxhc3Q7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIGlmIChvZmYgPT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHdoaWxlIChvZmYgPCBidWZmZXIubGVuZ3RoKVxuICAgIGJ1ZmZlcltvZmYrK10gPSAwO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRW5jcnlwdCgpIHtcbiAgaWYgKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsIHRoaXMuYnVmZmVyT2ZmKSlcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCAwKTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0ID0gZnVuY3Rpb24gX2ZpbmFsRGVjcnlwdCgpIHtcbiAgYXNzZXJ0LmVxdWFsKHRoaXMuYnVmZmVyT2ZmLCB0aGlzLmJsb2NrU2l6ZSwgJ05vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0Jyk7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIDApO1xuXG4gIHJldHVybiB0aGlzLl91bnBhZChvdXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciB1dGlscyA9IGRlcy51dGlscztcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xuXG5mdW5jdGlvbiBERVNTdGF0ZSgpIHtcbiAgdGhpcy50bXAgPSBuZXcgQXJyYXkoMik7XG4gIHRoaXMua2V5cyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIERFUyhvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBERVNTdGF0ZSgpO1xuICB0aGlzLl9kZXNTdGF0ZSA9IHN0YXRlO1xuXG4gIHRoaXMuZGVyaXZlS2V5cyhzdGF0ZSwgb3B0aW9ucy5rZXkpO1xufVxuaW5oZXJpdHMoREVTLCBDaXBoZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBERVM7XG5cbkRFUy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IERFUyhvcHRpb25zKTtcbn07XG5cbnZhciBzaGlmdFRhYmxlID0gW1xuICAxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLFxuICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxXG5dO1xuXG5ERVMucHJvdG90eXBlLmRlcml2ZUtleXMgPSBmdW5jdGlvbiBkZXJpdmVLZXlzKHN0YXRlLCBrZXkpIHtcbiAgc3RhdGUua2V5cyA9IG5ldyBBcnJheSgxNiAqIDIpO1xuXG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCB0aGlzLmJsb2NrU2l6ZSwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrTCA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDApO1xuICB2YXIga1IgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCA0KTtcblxuICB1dGlscy5wYzEoa0wsIGtSLCBzdGF0ZS50bXAsIDApO1xuICBrTCA9IHN0YXRlLnRtcFswXTtcbiAga1IgPSBzdGF0ZS50bXBbMV07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBzaGlmdCA9IHNoaWZ0VGFibGVbaSA+Pj4gMV07XG4gICAga0wgPSB1dGlscy5yMjhzaGwoa0wsIHNoaWZ0KTtcbiAgICBrUiA9IHV0aWxzLnIyOHNobChrUiwgc2hpZnQpO1xuICAgIHV0aWxzLnBjMihrTCwga1IsIHN0YXRlLmtleXMsIGkpO1xuICB9XG59O1xuXG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Rlc1N0YXRlO1xuXG4gIHZhciBsID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYpO1xuICB2YXIgciA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmICsgNCk7XG5cbiAgLy8gSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5pcChsLCByLCBzdGF0ZS50bXAsIDApO1xuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICB0aGlzLl9lbmNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuICBlbHNlXG4gICAgdGhpcy5fZGVjcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcblxuICBsID0gc3RhdGUudG1wWzBdO1xuICByID0gc3RhdGUudG1wWzFdO1xuXG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCBsLCBvdXRPZmYpO1xuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgciwgb3V0T2ZmICsgNCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBfcGFkKGJ1ZmZlciwgb2ZmKSB7XG4gIHZhciB2YWx1ZSA9IGJ1ZmZlci5sZW5ndGggLSBvZmY7XG4gIGZvciAodmFyIGkgPSBvZmY7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYnVmZmVyW2ldID0gdmFsdWU7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5ERVMucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgdmFyIHBhZCA9IGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gIGZvciAodmFyIGkgPSBidWZmZXIubGVuZ3RoIC0gcGFkOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGFzc2VydC5lcXVhbChidWZmZXJbaV0sIHBhZCk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5zbGljZSgwLCBidWZmZXIubGVuZ3RoIC0gcGFkKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2VuY3J5cHQgPSBmdW5jdGlvbiBfZW5jcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gbFN0YXJ0O1xuICB2YXIgciA9IHJTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGUua2V5cy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChyLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gcjtcbiAgICByID0gKGwgXiBmKSA+Pj4gMDtcbiAgICBsID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAociwgbCwgb3V0LCBvZmYpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZGVjcnlwdCA9IGZ1bmN0aW9uIF9kZWNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSByU3RhcnQ7XG4gIHZhciByID0gbFN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IHN0YXRlLmtleXMubGVuZ3RoIC0gMjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQobCwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IGw7XG4gICAgbCA9IChyIF4gZikgPj4+IDA7XG4gICAgciA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKGwsIHIsIG91dCwgb2ZmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgZGVzID0gcmVxdWlyZSgnLi4vZGVzJyk7XG52YXIgQ2lwaGVyID0gZGVzLkNpcGhlcjtcbnZhciBERVMgPSBkZXMuREVTO1xuXG5mdW5jdGlvbiBFREVTdGF0ZSh0eXBlLCBrZXkpIHtcbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIDI0LCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGsxID0ga2V5LnNsaWNlKDAsIDgpO1xuICB2YXIgazIgPSBrZXkuc2xpY2UoOCwgMTYpO1xuICB2YXIgazMgPSBrZXkuc2xpY2UoMTYsIDI0KTtcblxuICBpZiAodHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMSB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGszIH0pXG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGszIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazEgfSlcbiAgICBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIEVERShvcHRpb25zKSB7XG4gIENpcGhlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHZhciBzdGF0ZSA9IG5ldyBFREVTdGF0ZSh0aGlzLnR5cGUsIHRoaXMub3B0aW9ucy5rZXkpO1xuICB0aGlzLl9lZGVTdGF0ZSA9IHN0YXRlO1xufVxuaW5oZXJpdHMoRURFLCBDaXBoZXIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVERTtcblxuRURFLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgRURFKG9wdGlvbnMpO1xufTtcblxuRURFLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9lZGVTdGF0ZTtcblxuICBzdGF0ZS5jaXBoZXJzWzBdLl91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzFdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1syXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG59O1xuXG5FREUucHJvdG90eXBlLl9wYWQgPSBERVMucHJvdG90eXBlLl9wYWQ7XG5FREUucHJvdG90eXBlLl91bnBhZCA9IERFUy5wcm90b3R5cGUuX3VucGFkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRShieXRlcywgb2ZmKSB7XG4gIHZhciByZXMgPSAgKGJ5dGVzWzAgKyBvZmZdIDw8IDI0KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzEgKyBvZmZdIDw8IDE2KSB8XG4gICAgICAgICAgICAgKGJ5dGVzWzIgKyBvZmZdIDw8IDgpIHxcbiAgICAgICAgICAgICBieXRlc1szICsgb2ZmXTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn07XG5cbmV4cG9ydHMud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUoYnl0ZXMsIHZhbHVlLCBvZmYpIHtcbiAgYnl0ZXNbMCArIG9mZl0gPSB2YWx1ZSA+Pj4gMjQ7XG4gIGJ5dGVzWzEgKyBvZmZdID0gKHZhbHVlID4+PiAxNikgJiAweGZmO1xuICBieXRlc1syICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gOCkgJiAweGZmO1xuICBieXRlc1szICsgb2ZmXSA9IHZhbHVlICYgMHhmZjtcbn07XG5cbmV4cG9ydHMuaXAgPSBmdW5jdGlvbiBpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDY7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucmlwID0gZnVuY3Rpb24gcmlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaSA9IDQ7IGkgPCA4OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGMxID0gZnVuY3Rpb24gcGMxKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICAvLyA3LCAxNSwgMjMsIDMxLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA2LCAxNCwgMjIsIDMwLCAzOSwgNDcsIDU1LCA2M1xuICAvLyA1LCAxMywgMjEsIDI5LCAzOSwgNDcsIDU1LCA2M1xuICAvLyA0LCAxMiwgMjAsIDI4XG4gIGZvciAodmFyIGkgPSA3OyBpID49IDU7IGktLSkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIC8vIDEsIDksIDE3LCAyNSwgMzMsIDQxLCA0OSwgNTdcbiAgLy8gMiwgMTAsIDE4LCAyNiwgMzQsIDQyLCA1MCwgNThcbiAgLy8gMywgMTEsIDE5LCAyNywgMzUsIDQzLCA1MSwgNTlcbiAgLy8gMzYsIDQ0LCA1MiwgNjBcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMzsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucjI4c2hsID0gZnVuY3Rpb24gcjI4c2hsKG51bSwgc2hpZnQpIHtcbiAgcmV0dXJuICgobnVtIDw8IHNoaWZ0KSAmIDB4ZmZmZmZmZikgfCAobnVtID4+PiAoMjggLSBzaGlmdCkpO1xufTtcblxudmFyIHBjMnRhYmxlID0gW1xuICAvLyBpbkwgPT4gb3V0TFxuICAxNCwgMTEsIDE3LCA0LCAyNywgMjMsIDI1LCAwLFxuICAxMywgMjIsIDcsIDE4LCA1LCA5LCAxNiwgMjQsXG4gIDIsIDIwLCAxMiwgMjEsIDEsIDgsIDE1LCAyNixcblxuICAvLyBpblIgPT4gb3V0UlxuICAxNSwgNCwgMjUsIDE5LCA5LCAxLCAyNiwgMTYsXG4gIDUsIDExLCAyMywgOCwgMTIsIDcsIDE3LCAwLFxuICAyMiwgMywgMTAsIDE0LCA2LCAyMCwgMjcsIDI0XG5dO1xuXG5leHBvcnRzLnBjMiA9IGZ1bmN0aW9uIHBjMihpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgdmFyIGxlbiA9IHBjMnRhYmxlLmxlbmd0aCA+Pj4gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dEwgPDw9IDE7XG4gICAgb3V0TCB8PSAoaW5MID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IHBjMnRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0UiA8PD0gMTtcbiAgICBvdXRSIHw9IChpblIgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLmV4cGFuZCA9IGZ1bmN0aW9uIGV4cGFuZChyLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBvdXRMID0gKChyICYgMSkgPDwgNSkgfCAociA+Pj4gMjcpO1xuICBmb3IgKHZhciBpID0gMjM7IGkgPj0gMTU7IGkgLT0gNCkge1xuICAgIG91dEwgPDw9IDY7XG4gICAgb3V0TCB8PSAociA+Pj4gaSkgJiAweDNmO1xuICB9XG4gIGZvciAodmFyIGkgPSAxMTsgaSA+PSAzOyBpIC09IDQpIHtcbiAgICBvdXRSIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gICAgb3V0UiA8PD0gNjtcbiAgfVxuICBvdXRSIHw9ICgociAmIDB4MWYpIDw8IDEpIHwgKHIgPj4+IDMxKTtcblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxudmFyIHNUYWJsZSA9IFtcbiAgMTQsIDAsIDQsIDE1LCAxMywgNywgMSwgNCwgMiwgMTQsIDE1LCAyLCAxMSwgMTMsIDgsIDEsXG4gIDMsIDEwLCAxMCwgNiwgNiwgMTIsIDEyLCAxMSwgNSwgOSwgOSwgNSwgMCwgMywgNywgOCxcbiAgNCwgMTUsIDEsIDEyLCAxNCwgOCwgOCwgMiwgMTMsIDQsIDYsIDksIDIsIDEsIDExLCA3LFxuICAxNSwgNSwgMTIsIDExLCA5LCAzLCA3LCAxNCwgMywgMTAsIDEwLCAwLCA1LCA2LCAwLCAxMyxcblxuICAxNSwgMywgMSwgMTMsIDgsIDQsIDE0LCA3LCA2LCAxNSwgMTEsIDIsIDMsIDgsIDQsIDE0LFxuICA5LCAxMiwgNywgMCwgMiwgMSwgMTMsIDEwLCAxMiwgNiwgMCwgOSwgNSwgMTEsIDEwLCA1LFxuICAwLCAxMywgMTQsIDgsIDcsIDEwLCAxMSwgMSwgMTAsIDMsIDQsIDE1LCAxMywgNCwgMSwgMixcbiAgNSwgMTEsIDgsIDYsIDEyLCA3LCA2LCAxMiwgOSwgMCwgMywgNSwgMiwgMTQsIDE1LCA5LFxuXG4gIDEwLCAxMywgMCwgNywgOSwgMCwgMTQsIDksIDYsIDMsIDMsIDQsIDE1LCA2LCA1LCAxMCxcbiAgMSwgMiwgMTMsIDgsIDEyLCA1LCA3LCAxNCwgMTEsIDEyLCA0LCAxMSwgMiwgMTUsIDgsIDEsXG4gIDEzLCAxLCA2LCAxMCwgNCwgMTMsIDksIDAsIDgsIDYsIDE1LCA5LCAzLCA4LCAwLCA3LFxuICAxMSwgNCwgMSwgMTUsIDIsIDE0LCAxMiwgMywgNSwgMTEsIDEwLCA1LCAxNCwgMiwgNywgMTIsXG5cbiAgNywgMTMsIDEzLCA4LCAxNCwgMTEsIDMsIDUsIDAsIDYsIDYsIDE1LCA5LCAwLCAxMCwgMyxcbiAgMSwgNCwgMiwgNywgOCwgMiwgNSwgMTIsIDExLCAxLCAxMiwgMTAsIDQsIDE0LCAxNSwgOSxcbiAgMTAsIDMsIDYsIDE1LCA5LCAwLCAwLCA2LCAxMiwgMTAsIDExLCAxLCA3LCAxMywgMTMsIDgsXG4gIDE1LCA5LCAxLCA0LCAzLCA1LCAxNCwgMTEsIDUsIDEyLCAyLCA3LCA4LCAyLCA0LCAxNCxcblxuICAyLCAxNCwgMTIsIDExLCA0LCAyLCAxLCAxMiwgNywgNCwgMTAsIDcsIDExLCAxMywgNiwgMSxcbiAgOCwgNSwgNSwgMCwgMywgMTUsIDE1LCAxMCwgMTMsIDMsIDAsIDksIDE0LCA4LCA5LCA2LFxuICA0LCAxMSwgMiwgOCwgMSwgMTIsIDExLCA3LCAxMCwgMSwgMTMsIDE0LCA3LCAyLCA4LCAxMyxcbiAgMTUsIDYsIDksIDE1LCAxMiwgMCwgNSwgOSwgNiwgMTAsIDMsIDQsIDAsIDUsIDE0LCAzLFxuXG4gIDEyLCAxMCwgMSwgMTUsIDEwLCA0LCAxNSwgMiwgOSwgNywgMiwgMTIsIDYsIDksIDgsIDUsXG4gIDAsIDYsIDEzLCAxLCAzLCAxMywgNCwgMTQsIDE0LCAwLCA3LCAxMSwgNSwgMywgMTEsIDgsXG4gIDksIDQsIDE0LCAzLCAxNSwgMiwgNSwgMTIsIDIsIDksIDgsIDUsIDEyLCAxNSwgMywgMTAsXG4gIDcsIDExLCAwLCAxNCwgNCwgMSwgMTAsIDcsIDEsIDYsIDEzLCAwLCAxMSwgOCwgNiwgMTMsXG5cbiAgNCwgMTMsIDExLCAwLCAyLCAxMSwgMTQsIDcsIDE1LCA0LCAwLCA5LCA4LCAxLCAxMywgMTAsXG4gIDMsIDE0LCAxMiwgMywgOSwgNSwgNywgMTIsIDUsIDIsIDEwLCAxNSwgNiwgOCwgMSwgNixcbiAgMSwgNiwgNCwgMTEsIDExLCAxMywgMTMsIDgsIDEyLCAxLCAzLCA0LCA3LCAxMCwgMTQsIDcsXG4gIDEwLCA5LCAxNSwgNSwgNiwgMCwgOCwgMTUsIDAsIDE0LCA1LCAyLCA5LCAzLCAyLCAxMixcblxuICAxMywgMSwgMiwgMTUsIDgsIDEzLCA0LCA4LCA2LCAxMCwgMTUsIDMsIDExLCA3LCAxLCA0LFxuICAxMCwgMTIsIDksIDUsIDMsIDYsIDE0LCAxMSwgNSwgMCwgMCwgMTQsIDEyLCA5LCA3LCAyLFxuICA3LCAyLCAxMSwgMSwgNCwgMTQsIDEsIDcsIDksIDQsIDEyLCAxMCwgMTQsIDgsIDIsIDEzLFxuICAwLCAxNSwgNiwgMTIsIDEwLCA5LCAxMywgMCwgMTUsIDMsIDMsIDUsIDUsIDYsIDgsIDExXG5dO1xuXG5leHBvcnRzLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGluTCwgaW5SKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluTCA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlW2kgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5SID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbNCAqIDB4NDAgKyBpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxudmFyIHBlcm11dGVUYWJsZSA9IFtcbiAgMTYsIDI1LCAxMiwgMTEsIDMsIDIwLCA0LCAxNSwgMzEsIDE3LCA5LCA2LCAyNywgMTQsIDEsIDIyLFxuICAzMCwgMjQsIDgsIDE4LCAwLCA1LCAyOSwgMjMsIDEzLCAxOSwgMiwgMjYsIDEwLCAyMSwgMjgsIDdcbl07XG5cbmV4cG9ydHMucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUobnVtKSB7XG4gIHZhciBvdXQgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBlcm11dGVUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dCA8PD0gMTtcbiAgICBvdXQgfD0gKG51bSA+Pj4gcGVybXV0ZVRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICByZXR1cm4gb3V0ID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYWRTcGxpdCA9IGZ1bmN0aW9uIHBhZFNwbGl0KG51bSwgc2l6ZSwgZ3JvdXApIHtcbiAgdmFyIHN0ciA9IG51bS50b1N0cmluZygyKTtcbiAgd2hpbGUgKHN0ci5sZW5ndGggPCBzaXplKVxuICAgIHN0ciA9ICcwJyArIHN0cjtcblxuICB2YXIgb3V0ID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBncm91cClcbiAgICBvdXQucHVzaChzdHIuc2xpY2UoaSwgaSArIGdyb3VwKSk7XG4gIHJldHVybiBvdXQuam9pbignICcpO1xufTtcbiIsInZhciBnZW5lcmF0ZVByaW1lID0gcmVxdWlyZSgnLi9saWIvZ2VuZXJhdGVQcmltZScpXG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9saWIvcHJpbWVzLmpzb24nKVxuXG52YXIgREggPSByZXF1aXJlKCcuL2xpYi9kaCcpXG5cbmZ1bmN0aW9uIGdldERpZmZpZUhlbGxtYW4gKG1vZCkge1xuICB2YXIgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLnByaW1lLCAnaGV4JylcbiAgdmFyIGdlbiA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0uZ2VuLCAnaGV4JylcblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW4pXG59XG5cbnZhciBFTkNPRElOR1MgPSB7XG4gICdiaW5hcnknOiB0cnVlLCAnaGV4JzogdHJ1ZSwgJ2Jhc2U2NCc6IHRydWVcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGlmZmllSGVsbG1hbiAocHJpbWUsIGVuYywgZ2VuZXJhdG9yLCBnZW5jKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoZW5jKSB8fCBFTkNPRElOR1NbZW5jXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNyZWF0ZURpZmZpZUhlbGxtYW4ocHJpbWUsICdiaW5hcnknLCBlbmMsIGdlbmVyYXRvcilcbiAgfVxuXG4gIGVuYyA9IGVuYyB8fCAnYmluYXJ5J1xuICBnZW5jID0gZ2VuYyB8fCAnYmluYXJ5J1xuICBnZW5lcmF0b3IgPSBnZW5lcmF0b3IgfHwgbmV3IEJ1ZmZlcihbMl0pXG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuZXJhdG9yKSkge1xuICAgIGdlbmVyYXRvciA9IG5ldyBCdWZmZXIoZ2VuZXJhdG9yLCBnZW5jKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBwcmltZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbmV3IERIKGdlbmVyYXRlUHJpbWUocHJpbWUsIGdlbmVyYXRvciksIGdlbmVyYXRvciwgdHJ1ZSlcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaW1lKSkge1xuICAgIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZSwgZW5jKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuZXJhdG9yLCB0cnVlKVxufVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5nZXREaWZmaWVIZWxsbWFuID0gZ2V0RGlmZmllSGVsbG1hblxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuID0gZXhwb3J0cy5EaWZmaWVIZWxsbWFuID0gY3JlYXRlRGlmZmllSGVsbG1hblxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vZ2VuZXJhdGVQcmltZScpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gREg7XG5cbmZ1bmN0aW9uIHNldFB1YmxpY0tleShwdWIsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHViID0gbmV3IEJOKHB1Yik7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzZXRQcml2YXRlS2V5KHByaXYsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcml2KSkge1xuICAgIHByaXYgPSBuZXcgQnVmZmVyKHByaXYsIGVuYyk7XG4gIH1cbiAgdGhpcy5fcHJpdiA9IG5ldyBCTihwcml2KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbnZhciBwcmltZUNhY2hlID0ge307XG5mdW5jdGlvbiBjaGVja1ByaW1lKHByaW1lLCBnZW5lcmF0b3IpIHtcbiAgdmFyIGdlbiA9IGdlbmVyYXRvci50b1N0cmluZygnaGV4Jyk7XG4gIHZhciBoZXggPSBbZ2VuLCBwcmltZS50b1N0cmluZygxNildLmpvaW4oJ18nKTtcbiAgaWYgKGhleCBpbiBwcmltZUNhY2hlKSB7XG4gICAgcmV0dXJuIHByaW1lQ2FjaGVbaGV4XTtcbiAgfVxuICB2YXIgZXJyb3IgPSAwO1xuXG4gIGlmIChwcmltZS5pc0V2ZW4oKSB8fFxuICAgICFwcmltZXMuc2ltcGxlU2lldmUgfHxcbiAgICAhcHJpbWVzLmZlcm1hdFRlc3QocHJpbWUpIHx8XG4gICAgIW1pbGxlclJhYmluLnRlc3QocHJpbWUpKSB7XG4gICAgLy9ub3QgYSBwcmltZSBzbyArMVxuICAgIGVycm9yICs9IDE7XG5cbiAgICBpZiAoZ2VuID09PSAnMDInIHx8IGdlbiA9PT0gJzA1Jykge1xuICAgICAgLy8gd2UnZCBiZSBhYmxlIHRvIGNoZWNrIHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIGl0IHdvdWxkIGZhaWwgc28gKzhcbiAgICAgIGVycm9yICs9IDg7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vd2Ugd291bGRuJ3QgYmUgYWJsZSB0byB0ZXN0IHRoZSBnZW5lcmF0b3JcbiAgICAgIC8vIHNvICs0XG4gICAgICBlcnJvciArPSA0O1xuICAgIH1cbiAgICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cbiAgaWYgKCFtaWxsZXJSYWJpbi50ZXN0KHByaW1lLnNocm4oMSkpKSB7XG4gICAgLy9ub3QgYSBzYWZlIHByaW1lXG4gICAgZXJyb3IgKz0gMjtcbiAgfVxuICB2YXIgcmVtO1xuICBzd2l0Y2ggKGdlbikge1xuICAgIGNhc2UgJzAyJzpcbiAgICAgIGlmIChwcmltZS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgLy8gdW5zdWlkYWJsZSBnZW5lcmF0b3JcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzA1JzpcbiAgICAgIHJlbSA9IHByaW1lLm1vZChURU4pO1xuICAgICAgaWYgKHJlbS5jbXAoVEhSRUUpICYmIHJlbS5jbXAoU0VWRU4pKSB7XG4gICAgICAgIC8vIHByaW1lIG1vZCAxMCBuZWVkcyB0byBlcXVhbCAzIG9yIDdcbiAgICAgICAgZXJyb3IgKz0gODtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBlcnJvciArPSA0O1xuICB9XG4gIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICByZXR1cm4gZXJyb3I7XG59XG5cbmZ1bmN0aW9uIERIKHByaW1lLCBnZW5lcmF0b3IsIG1hbGxlYWJsZSkge1xuICB0aGlzLnNldEdlbmVyYXRvcihnZW5lcmF0b3IpO1xuICB0aGlzLl9fcHJpbWUgPSBuZXcgQk4ocHJpbWUpO1xuICB0aGlzLl9wcmltZSA9IEJOLm1vbnQodGhpcy5fX3ByaW1lKTtcbiAgdGhpcy5fcHJpbWVMZW4gPSBwcmltZS5sZW5ndGg7XG4gIHRoaXMuX3B1YiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpdiA9IHVuZGVmaW5lZDtcbiAgdGhpcy5fcHJpbWVDb2RlID0gdW5kZWZpbmVkO1xuICBpZiAobWFsbGVhYmxlKSB7XG4gICAgdGhpcy5zZXRQdWJsaWNLZXkgPSBzZXRQdWJsaWNLZXk7XG4gICAgdGhpcy5zZXRQcml2YXRlS2V5ID0gc2V0UHJpdmF0ZUtleTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9wcmltZUNvZGUgPSA4O1xuICB9XG59XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoREgucHJvdG90eXBlLCAndmVyaWZ5RXJyb3InLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fcHJpbWVDb2RlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5fcHJpbWVDb2RlID0gY2hlY2tQcmltZSh0aGlzLl9fcHJpbWUsIHRoaXMuX19nZW4pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJpbWVDb2RlO1xuICB9XG59KTtcbkRILnByb3RvdHlwZS5nZW5lcmF0ZUtleXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5fcHJpdikge1xuICAgIHRoaXMuX3ByaXYgPSBuZXcgQk4ocmFuZG9tQnl0ZXModGhpcy5fcHJpbWVMZW4pKTtcbiAgfVxuICB0aGlzLl9wdWIgPSB0aGlzLl9nZW4udG9SZWQodGhpcy5fcHJpbWUpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleSgpO1xufTtcblxuREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgb3RoZXIgPSBuZXcgQk4ob3RoZXIpO1xuICBvdGhlciA9IG90aGVyLnRvUmVkKHRoaXMuX3ByaW1lKTtcbiAgdmFyIHNlY3JldCA9IG90aGVyLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCk7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKHNlY3JldC50b0FycmF5KCkpO1xuICB2YXIgcHJpbWUgPSB0aGlzLmdldFByaW1lKCk7XG4gIGlmIChvdXQubGVuZ3RoIDwgcHJpbWUubGVuZ3RoKSB7XG4gICAgdmFyIGZyb250ID0gbmV3IEJ1ZmZlcihwcmltZS5sZW5ndGggLSBvdXQubGVuZ3RoKTtcbiAgICBmcm9udC5maWxsKDApO1xuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW2Zyb250LCBvdXRdKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuREgucHJvdG90eXBlLmdldFB1YmxpY0tleSA9IGZ1bmN0aW9uIGdldFB1YmxpY0tleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3B1YiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZUtleShlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3ByaXYsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpbWUgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9fcHJpbWUsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fZ2VuLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLnNldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChnZW4sIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW4pKSB7XG4gICAgZ2VuID0gbmV3IEJ1ZmZlcihnZW4sIGVuYyk7XG4gIH1cbiAgdGhpcy5fX2dlbiA9IGdlbjtcbiAgdGhpcy5fZ2VuID0gbmV3IEJOKGdlbik7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYykge1xuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihibi50b0FycmF5KCkpO1xuICBpZiAoIWVuYykge1xuICAgIHJldHVybiBidWY7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1Zi50b1N0cmluZyhlbmMpO1xuICB9XG59XG4iLCJ2YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kUHJpbWU7XG5maW5kUHJpbWUuc2ltcGxlU2lldmUgPSBzaW1wbGVTaWV2ZTtcbmZpbmRQcmltZS5mZXJtYXRUZXN0ID0gZmVybWF0VGVzdDtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgVFdFTlRZRk9VUiA9IG5ldyBCTigyNCk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIE9ORSA9IG5ldyBCTigxKTtcbnZhciBUV08gPSBuZXcgQk4oMik7XG52YXIgRklWRSA9IG5ldyBCTig1KTtcbnZhciBTSVhURUVOID0gbmV3IEJOKDE2KTtcbnZhciBFSUdIVCA9IG5ldyBCTig4KTtcbnZhciBURU4gPSBuZXcgQk4oMTApO1xudmFyIFRIUkVFID0gbmV3IEJOKDMpO1xudmFyIFNFVkVOID0gbmV3IEJOKDcpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgRk9VUiA9IG5ldyBCTig0KTtcbnZhciBUV0VMVkUgPSBuZXcgQk4oMTIpO1xudmFyIHByaW1lcyA9IG51bGw7XG5cbmZ1bmN0aW9uIF9nZXRQcmltZXMoKSB7XG4gIGlmIChwcmltZXMgIT09IG51bGwpXG4gICAgcmV0dXJuIHByaW1lcztcblxuICB2YXIgbGltaXQgPSAweDEwMDAwMDtcbiAgdmFyIHJlcyA9IFtdO1xuICByZXNbMF0gPSAyO1xuICBmb3IgKHZhciBpID0gMSwgayA9IDM7IGsgPCBsaW1pdDsgayArPSAyKSB7XG4gICAgdmFyIHNxcnQgPSBNYXRoLmNlaWwoTWF0aC5zcXJ0KGspKTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGkgJiYgcmVzW2pdIDw9IHNxcnQ7IGorKylcbiAgICAgIGlmIChrICUgcmVzW2pdID09PSAwKVxuICAgICAgICBicmVhaztcblxuICAgIGlmIChpICE9PSBqICYmIHJlc1tqXSA8PSBzcXJ0KVxuICAgICAgY29udGludWU7XG5cbiAgICByZXNbaSsrXSA9IGs7XG4gIH1cbiAgcHJpbWVzID0gcmVzO1xuICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVTaWV2ZShwKSB7XG4gIHZhciBwcmltZXMgPSBfZ2V0UHJpbWVzKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmltZXMubGVuZ3RoOyBpKyspXG4gICAgaWYgKHAubW9kbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICBpZiAocC5jbXBuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmZXJtYXRUZXN0KHApIHtcbiAgdmFyIHJlZCA9IEJOLm1vbnQocCk7XG4gIHJldHVybiBUV08udG9SZWQocmVkKS5yZWRQb3cocC5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gZmluZFByaW1lKGJpdHMsIGdlbikge1xuICBpZiAoYml0cyA8IDE2KSB7XG4gICAgLy8gdGhpcyBpcyB3aGF0IG9wZW5zc2wgZG9lc1xuICAgIGlmIChnZW4gPT09IDIgfHwgZ2VuID09PSA1KSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDdiXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4MjddKTtcbiAgICB9XG4gIH1cbiAgZ2VuID0gbmV3IEJOKGdlbik7XG5cbiAgdmFyIG51bSwgbjI7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBudW0gPSBuZXcgQk4ocmFuZG9tQnl0ZXMoTWF0aC5jZWlsKGJpdHMgLyA4KSkpO1xuICAgIHdoaWxlIChudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7XG4gICAgICBudW0uaXNocm4oMSk7XG4gICAgfVxuICAgIGlmIChudW0uaXNFdmVuKCkpIHtcbiAgICAgIG51bS5pYWRkKE9ORSk7XG4gICAgfVxuICAgIGlmICghbnVtLnRlc3RuKDEpKSB7XG4gICAgICBudW0uaWFkZChUV08pO1xuICAgIH1cbiAgICBpZiAoIWdlbi5jbXAoVFdPKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVFdFTlRZRk9VUikuY21wKEVMRVZFTikpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghZ2VuLmNtcChGSVZFKSkge1xuICAgICAgd2hpbGUgKG51bS5tb2QoVEVOKS5jbXAoVEhSRUUpKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH1cbiAgICBuMiA9IG51bS5zaHJuKDEpO1xuICAgIGlmIChzaW1wbGVTaWV2ZShuMikgJiYgc2ltcGxlU2lldmUobnVtKSAmJlxuICAgICAgZmVybWF0VGVzdChuMikgJiYgZmVybWF0VGVzdChudW0pICYmXG4gICAgICBtaWxsZXJSYWJpbi50ZXN0KG4yKSAmJiBtaWxsZXJSYWJpbi50ZXN0KG51bSkpIHtcbiAgICAgIHJldHVybiBudW07XG4gICAgfVxuICB9XG5cbn1cbiIsIm1vZHVsZS5leHBvcnRzPXtcbiAgICBcIm1vZHAxXCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDJcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNjUzODFmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDVcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTIzNzMyN2ZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTRcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5M2FkMmNhZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNlwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDA2MzE5OWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMTdcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMThcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfVxufSIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gZXhwb3J0cztcblxuZWxsaXB0aWMudmVyc2lvbiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5lbGxpcHRpYy51dGlscyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvdXRpbHMnKTtcbmVsbGlwdGljLnJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG5lbGxpcHRpYy5jdXJ2ZSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmUnKTtcbmVsbGlwdGljLmN1cnZlcyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmVzJyk7XG5cbi8vIFByb3RvY29sc1xuZWxsaXB0aWMuZWMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VjJyk7XG5lbGxpcHRpYy5lZGRzYSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWRkc2EnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgLy8gR2VuZXJhbGl6ZWQgR3JlZyBNYXh3ZWxsJ3MgdHJpY2tcbiAgdmFyIGFkanVzdENvdW50ID0gdGhpcy5uICYmIHRoaXMucC5kaXYodGhpcy5uKTtcbiAgaWYgKCFhZGp1c3RDb3VudCB8fCBhZGp1c3RDb3VudC5jbXBuKDEwMCkgPiAwKSB7XG4gICAgdGhpcy5yZWROID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9tYXh3ZWxsVHJpY2sgPSB0cnVlO1xuICAgIHRoaXMucmVkTiA9IHRoaXMubi50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gQmFzZUN1cnZlO1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl9maXhlZE5hZk11bCA9IGZ1bmN0aW9uIF9maXhlZE5hZk11bChwLCBrKSB7XG4gIGFzc2VydChwLnByZWNvbXB1dGVkKTtcbiAgdmFyIGRvdWJsZXMgPSBwLl9nZXREb3VibGVzKCk7XG5cbiAgdmFyIG5hZiA9IGdldE5BRihrLCAxKTtcbiAgdmFyIEkgPSAoMSA8PCAoZG91Ymxlcy5zdGVwICsgMSkpIC0gKGRvdWJsZXMuc3RlcCAlIDIgPT09IDAgPyAyIDogMSk7XG4gIEkgLz0gMztcblxuICAvLyBUcmFuc2xhdGUgaW50byBtb3JlIHdpbmRvd2VkIGZvcm1cbiAgdmFyIHJlcHIgPSBbXTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBuYWYubGVuZ3RoOyBqICs9IGRvdWJsZXMuc3RlcCkge1xuICAgIHZhciBuYWZXID0gMDtcbiAgICBmb3IgKHZhciBrID0gaiArIGRvdWJsZXMuc3RlcCAtIDE7IGsgPj0gajsgay0tKVxuICAgICAgbmFmVyA9IChuYWZXIDw8IDEpICsgbmFmW2tdO1xuICAgIHJlcHIucHVzaChuYWZXKTtcbiAgfVxuXG4gIHZhciBhID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciBiID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBJOyBpID4gMDsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgbmFmVyA9IHJlcHJbal07XG4gICAgICBpZiAobmFmVyA9PT0gaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0pO1xuICAgICAgZWxzZSBpZiAobmFmVyA9PT0gLWkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdLm5lZygpKTtcbiAgICB9XG4gICAgYSA9IGEuYWRkKGIpO1xuICB9XG4gIHJldHVybiBhLnRvUCgpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bCA9IGZ1bmN0aW9uIF93bmFmTXVsKHAsIGspIHtcbiAgdmFyIHcgPSA0O1xuXG4gIC8vIFByZWNvbXB1dGUgd2luZG93XG4gIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHModyk7XG4gIHcgPSBuYWZQb2ludHMud25kO1xuICB2YXIgd25kID0gbmFmUG9pbnRzLnBvaW50cztcblxuICAvLyBHZXQgTkFGIGZvcm1cbiAgdmFyIG5hZiA9IGdldE5BRihrLCB3KTtcblxuICAvLyBBZGQgYHRoaXNgKihOKzEpIGZvciBldmVyeSB3LU5BRiBpbmRleFxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIGZvciAodmFyIGkgPSBuYWYubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAvLyBDb3VudCB6ZXJvZXNcbiAgICBmb3IgKHZhciBrID0gMDsgaSA+PSAwICYmIG5hZltpXSA9PT0gMDsgaS0tKVxuICAgICAgaysrO1xuICAgIGlmIChpID49IDApXG4gICAgICBrKys7XG4gICAgYWNjID0gYWNjLmRibHAoayk7XG5cbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcbiAgICB2YXIgeiA9IG5hZltpXTtcbiAgICBhc3NlcnQoeiAhPT0gMCk7XG4gICAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpIHtcbiAgICAgIC8vIEogKy0gUFxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSiArLSBKXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWyh6IC0gMSkgPj4gMV0pO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwLnR5cGUgPT09ICdhZmZpbmUnID8gYWNjLnRvUCgpIDogYWNjO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bEFkZCA9IGZ1bmN0aW9uIF93bmFmTXVsQWRkKGRlZlcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZWZmcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIHduZFdpZHRoID0gdGhpcy5fd25hZlQxO1xuICB2YXIgd25kID0gdGhpcy5fd25hZlQyO1xuICB2YXIgbmFmID0gdGhpcy5fd25hZlQzO1xuXG4gIC8vIEZpbGwgYWxsIGFycmF5c1xuICB2YXIgbWF4ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDE7IGkgLT0gMikge1xuICAgIHZhciBhID0gaSAtIDE7XG4gICAgdmFyIGIgPSBpO1xuICAgIGlmICh3bmRXaWR0aFthXSAhPT0gMSB8fCB3bmRXaWR0aFtiXSAhPT0gMSkge1xuICAgICAgbmFmW2FdID0gZ2V0TkFGKGNvZWZmc1thXSwgd25kV2lkdGhbYV0pO1xuICAgICAgbmFmW2JdID0gZ2V0TkFGKGNvZWZmc1tiXSwgd25kV2lkdGhbYl0pO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdIC8qIDcgKi9cbiAgICBdO1xuXG4gICAgLy8gVHJ5IHRvIGF2b2lkIFByb2plY3RpdmUgcG9pbnRzLCBpZiBwb3NzaWJsZVxuICAgIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55LnJlZE5lZygpKSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0pO1xuICAgICAgY29tYlsyXSA9IHBvaW50c1thXS50b0ooKS5taXhlZEFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IFtcbiAgICAgIC0zLCAvKiAtMSAtMSAqL1xuICAgICAgLTEsIC8qIC0xIDAgKi9cbiAgICAgIC01LCAvKiAtMSAxICovXG4gICAgICAtNywgLyogMCAtMSAqL1xuICAgICAgMCwgLyogMCAwICovXG4gICAgICA3LCAvKiAwIDEgKi9cbiAgICAgIDUsIC8qIDEgLTEgKi9cbiAgICAgIDEsIC8qIDEgMCAqL1xuICAgICAgMyAgLyogMSAxICovXG4gICAgXTtcblxuICAgIHZhciBqc2YgPSBnZXRKU0YoY29lZmZzW2FdLCBjb2VmZnNbYl0pO1xuICAgIG1heCA9IE1hdGgubWF4KGpzZlswXS5sZW5ndGgsIG1heCk7XG4gICAgbmFmW2FdID0gbmV3IEFycmF5KG1heCk7XG4gICAgbmFmW2JdID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXg7IGorKykge1xuICAgICAgdmFyIGphID0ganNmWzBdW2pdIHwgMDtcbiAgICAgIHZhciBqYiA9IGpzZlsxXVtqXSB8IDA7XG5cbiAgICAgIG5hZlthXVtqXSA9IGluZGV4WyhqYSArIDEpICogMyArIChqYiArIDEpXTtcbiAgICAgIG5hZltiXVtqXSA9IDA7XG4gICAgICB3bmRbYV0gPSBjb21iO1xuICAgIH1cbiAgfVxuXG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIHRtcCA9IHRoaXMuX3duYWZUNDtcbiAgZm9yICh2YXIgaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHRtcFtqXSA9IG5hZltqXVtpXSB8IDA7XG4gICAgICAgIGlmICh0bXBbal0gIT09IDApXG4gICAgICAgICAgemVybyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF6ZXJvKVxuICAgICAgICBicmVhaztcbiAgICAgIGsrKztcbiAgICAgIGktLTtcbiAgICB9XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIHZhciB6ID0gdG1wW2pdO1xuICAgICAgdmFyIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgIHduZFtpXSA9IG51bGw7XG5cbiAgaWYgKGphY29iaWFuUmVzdWx0KVxuICAgIHJldHVybiBhY2M7XG4gIGVsc2VcbiAgICByZXR1cm4gYWNjLnRvUCgpO1xufTtcblxuZnVuY3Rpb24gQmFzZVBvaW50KGN1cnZlLCB0eXBlKSB7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IG51bGw7XG59XG5CYXNlQ3VydmUuQmFzZVBvaW50ID0gQmFzZVBvaW50O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEoLypvdGhlciovKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgYnl0ZXMgPSB1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpO1xuXG4gIHZhciBsZW4gPSB0aGlzLnAuYnl0ZUxlbmd0aCgpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCwgaHlicmlkLW9kZCwgaHlicmlkLWV2ZW5cbiAgaWYgKChieXRlc1swXSA9PT0gMHgwNCB8fCBieXRlc1swXSA9PT0gMHgwNiB8fCBieXRlc1swXSA9PT0gMHgwNykgJiZcbiAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IDIgKiBsZW4pIHtcbiAgICBpZiAoYnl0ZXNbMF0gPT09IDB4MDYpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAwKTtcbiAgICBlbHNlIGlmIChieXRlc1swXSA9PT0gMHgwNylcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDEpO1xuXG4gICAgdmFyIHJlcyA9ICB0aGlzLnBvaW50KGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSkgO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZW5jLCBjb21wYWN0KSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5fZW5jb2RlKGNvbXBhY3QpLCBlbmMpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZShwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcHJlY29tcHV0ZWQgPSB7XG4gICAgZG91YmxlczogbnVsbCxcbiAgICBuYWY6IG51bGwsXG4gICAgYmV0YTogbnVsbFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91Ymxlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzID0gZnVuY3Rpb24gX2dldE5BRlBvaW50cyh3bmQpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5uYWYpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO1xuXG4gIHZhciByZXMgPSBbIHRoaXMgXTtcbiAgdmFyIG1heCA9ICgxIDw8IHduZCkgLSAxO1xuICB2YXIgZGJsID0gbWF4ID09PSAxID8gbnVsbCA6IHRoaXMuZGJsKCk7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbWF4OyBpKyspXG4gICAgcmVzW2ldID0gcmVzW2kgLSAxXS5hZGQoZGJsKTtcbiAgcmV0dXJuIHtcbiAgICB3bmQ6IHduZCxcbiAgICBwb2ludHM6IHJlc1xuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAoaykge1xuICB2YXIgciA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKVxuICAgIHIgPSByLmRibCgpO1xuICByZXR1cm4gcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IHJlcXVpcmUoJy4uL2N1cnZlJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEVkd2FyZHNDdXJ2ZShjb25mKSB7XG4gIC8vIE5PVEU6IEltcG9ydGFudCBhcyB3ZSBhcmUgY3JlYXRpbmcgcG9pbnQgaW4gQmFzZS5jYWxsKClcbiAgdGhpcy50d2lzdGVkID0gKGNvbmYuYSB8IDApICE9PSAxO1xuICB0aGlzLm1PbmVBID0gdGhpcy50d2lzdGVkICYmIChjb25mLmEgfCAwKSA9PT0gLTE7XG4gIHRoaXMuZXh0ZW5kZWQgPSB0aGlzLm1PbmVBO1xuXG4gIEJhc2UuY2FsbCh0aGlzLCAnZWR3YXJkcycsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS51bW9kKHRoaXMucmVkLm0pO1xuICB0aGlzLmEgPSB0aGlzLmEudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMgPSBuZXcgQk4oY29uZi5jLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMyID0gdGhpcy5jLnJlZFNxcigpO1xuICB0aGlzLmQgPSBuZXcgQk4oY29uZi5kLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmRkID0gdGhpcy5kLnJlZEFkZCh0aGlzLmQpO1xuXG4gIGFzc2VydCghdGhpcy50d2lzdGVkIHx8IHRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSA9PT0gMCk7XG4gIHRoaXMub25lQyA9IChjb25mLmMgfCAwKSA9PT0gMTtcbn1cbmluaGVyaXRzKEVkd2FyZHNDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IEVkd2FyZHNDdXJ2ZTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQSA9IGZ1bmN0aW9uIF9tdWxBKG51bSkge1xuICBpZiAodGhpcy5tT25lQSlcbiAgICByZXR1cm4gbnVtLnJlZE5lZygpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYS5yZWRNdWwobnVtKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEMgPSBmdW5jdGlvbiBfbXVsQyhudW0pIHtcbiAgaWYgKHRoaXMub25lQylcbiAgICByZXR1cm4gbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYy5yZWRNdWwobnVtKTtcbn07XG5cbi8vIEp1c3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTaG9ydCBjdXJ2ZVxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5LCB6LCB0KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bCh4MikpO1xuICB2YXIgbGhzID0gdGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHgyKSk7XG5cbiAgdmFyIHkyID0gcmhzLnJlZE11bChsaHMucmVkSW52bSgpKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWSA9IGZ1bmN0aW9uIHBvaW50RnJvbVkoeSwgb2RkKSB7XG4gIHkgPSBuZXcgQk4oeSwgMTYpO1xuICBpZiAoIXkucmVkKVxuICAgIHkgPSB5LnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyB4XjIgPSAoeV4yIC0gMSkgLyAoZCB5XjIgKyAxKVxuICB2YXIgeTIgPSB5LnJlZFNxcigpO1xuICB2YXIgbGhzID0geTIucmVkU3ViKHRoaXMub25lKTtcbiAgdmFyIHJocyA9IHkyLnJlZE11bCh0aGlzLmQpLnJlZEFkZCh0aGlzLm9uZSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5pc09kZCgpICE9PSBvZGQpXG4gICAgeCA9IHgucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyBDdXJ2ZTogQSAqIFheMiArIFleMiA9IENeMiAqICgxICsgRCAqIFheMiAqIFleMilcbiAgcG9pbnQubm9ybWFsaXplKCk7XG5cbiAgdmFyIHgyID0gcG9pbnQueC5yZWRTcXIoKTtcbiAgdmFyIHkyID0gcG9pbnQueS5yZWRTcXIoKTtcbiAgdmFyIGxocyA9IHgyLnJlZE11bCh0aGlzLmEpLnJlZEFkZCh5Mik7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bCh4MikucmVkTXVsKHkyKSkpO1xuXG4gIHJldHVybiBsaHMuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeSwgeiwgdCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMuek9uZSA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIHRoaXMueiA9IHogPyBuZXcgQk4oeiwgMTYpIDogdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy50ID0gdCAmJiBuZXcgQk4odCwgMTYpO1xuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICh0aGlzLnQgJiYgIXRoaXMudC5yZWQpXG4gICAgICB0aGlzLnQgPSB0aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG5cbiAgICAvLyBVc2UgZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZCAmJiAhdGhpcy50KSB7XG4gICAgICB0aGlzLnQgPSB0aGlzLngucmVkTXVsKHRoaXMueSk7XG4gICAgICBpZiAoIXRoaXMuek9uZSlcbiAgICAgICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTtcbiAgICB9XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIHosIHQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCB6LCB0KTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSwgb2JqWzJdKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMueC5jbXBuKDApID09PSAwICYmXG4gICAgICAgICB0aGlzLnkuY21wKHRoaXMueikgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dERibCA9IGZ1bmN0aW9uIF9leHREYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWh3Y2RcbiAgLy8gNE0gKyA0U1xuXG4gIC8vIEEgPSBYMV4yXG4gIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBCID0gWTFeMlxuICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gQyA9IDIgKiBaMV4yXG4gIHZhciBjID0gdGhpcy56LnJlZFNxcigpO1xuICBjID0gYy5yZWRJQWRkKGMpO1xuICAvLyBEID0gYSAqIEFcbiAgdmFyIGQgPSB0aGlzLmN1cnZlLl9tdWxBKGEpO1xuICAvLyBFID0gKFgxICsgWTEpXjIgLSBBIC0gQlxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYik7XG4gIC8vIEcgPSBEICsgQlxuICB2YXIgZyA9IGQucmVkQWRkKGIpO1xuICAvLyBGID0gRyAtIENcbiAgdmFyIGYgPSBnLnJlZFN1YihjKTtcbiAgLy8gSCA9IEQgLSBCXG4gIHZhciBoID0gZC5yZWRTdWIoYik7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakRibCA9IGZ1bmN0aW9uIF9wcm9qRGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1iYmpscFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA3LWJsXG4gIC8vIGFuZCBvdGhlcnNcbiAgLy8gR2VuZXJhbGx5IDNNICsgNFMgb3IgMk0gKyA0U1xuXG4gIC8vIEIgPSAoWDEgKyBZMSleMlxuICB2YXIgYiA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxXjJcbiAgdmFyIGMgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEQgPSBZMV4yXG4gIHZhciBkID0gdGhpcy55LnJlZFNxcigpO1xuXG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBFID0gYSAqIENcbiAgICB2YXIgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgdmFyIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICB2YXIgaiA9IGYucmVkU3ViKGgpLnJlZElTdWIoaCk7XG4gICAgICAvLyBYMyA9IChCLUMtRCkqSlxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRJU3ViKGQpLnJlZE11bChqKTtcbiAgICAgIC8vIFkzID0gRiAqIChFIC0gRClcbiAgICAgIG55ID0gZi5yZWRNdWwoZS5yZWRTdWIoZCkpO1xuICAgICAgLy8gWjMgPSBGICogSlxuICAgICAgbnogPSBmLnJlZE11bChqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gRSA9IEMgKyBEXG4gICAgdmFyIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIHZhciBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLmMucmVkTXVsKHRoaXMueikpLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICB2YXIgaiA9IGUucmVkU3ViKGgpLnJlZFN1YihoKTtcbiAgICAvLyBYMyA9IGMgKiAoQiAtIEUpICogSlxuICAgIG54ID0gdGhpcy5jdXJ2ZS5fbXVsQyhiLnJlZElTdWIoZSkpLnJlZE11bChqKTtcbiAgICAvLyBZMyA9IGMgKiBFICogKEMgLSBEKVxuICAgIG55ID0gdGhpcy5jdXJ2ZS5fbXVsQyhlKS5yZWRNdWwoYy5yZWRJU3ViKGQpKTtcbiAgICAvLyBaMyA9IEUgKiBKXG4gICAgbnogPSBlLnJlZE11bChqKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBEb3VibGUgaW4gZXh0ZW5kZWQgY29vcmRpbmF0ZXNcbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dERibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pEYmwoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0QWRkID0gZnVuY3Rpb24gX2V4dEFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLWV4dGVuZGVkLTEuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWh3Y2QtM1xuICAvLyA4TVxuXG4gIC8vIEEgPSAoWTEgLSBYMSkgKiAoWTIgLSBYMilcbiAgdmFyIGEgPSB0aGlzLnkucmVkU3ViKHRoaXMueCkucmVkTXVsKHAueS5yZWRTdWIocC54KSk7XG4gIC8vIEIgPSAoWTEgKyBYMSkgKiAoWTIgKyBYMilcbiAgdmFyIGIgPSB0aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKHAueS5yZWRBZGQocC54KSk7XG4gIC8vIEMgPSBUMSAqIGsgKiBUMlxuICB2YXIgYyA9IHRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKHAudCk7XG4gIC8vIEQgPSBaMSAqIDIgKiBaMlxuICB2YXIgZCA9IHRoaXMuei5yZWRNdWwocC56LnJlZEFkZChwLnopKTtcbiAgLy8gRSA9IEIgLSBBXG4gIHZhciBlID0gYi5yZWRTdWIoYSk7XG4gIC8vIEYgPSBEIC0gQ1xuICB2YXIgZiA9IGQucmVkU3ViKGMpO1xuICAvLyBHID0gRCArIENcbiAgdmFyIGcgPSBkLnJlZEFkZChjKTtcbiAgLy8gSCA9IEIgKyBBXG4gIHZhciBoID0gYi5yZWRBZGQoYSk7XG4gIC8vIFgzID0gRSAqIEZcbiAgdmFyIG54ID0gZS5yZWRNdWwoZik7XG4gIC8vIFkzID0gRyAqIEhcbiAgdmFyIG55ID0gZy5yZWRNdWwoaCk7XG4gIC8vIFQzID0gRSAqIEhcbiAgdmFyIG50ID0gZS5yZWRNdWwoaCk7XG4gIC8vIFozID0gRiAqIEdcbiAgdmFyIG56ID0gZi5yZWRNdWwoZyk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnosIG50KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fcHJvakFkZCA9IGZ1bmN0aW9uIF9wcm9qQWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtYmJqbHBcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwNy1ibFxuICAvLyAxME0gKyAxU1xuXG4gIC8vIEEgPSBaMSAqIFoyXG4gIHZhciBhID0gdGhpcy56LnJlZE11bChwLnopO1xuICAvLyBCID0gQV4yXG4gIHZhciBiID0gYS5yZWRTcXIoKTtcbiAgLy8gQyA9IFgxICogWDJcbiAgdmFyIGMgPSB0aGlzLngucmVkTXVsKHAueCk7XG4gIC8vIEQgPSBZMSAqIFkyXG4gIHZhciBkID0gdGhpcy55LnJlZE11bChwLnkpO1xuICAvLyBFID0gZCAqIEMgKiBEXG4gIHZhciBlID0gdGhpcy5jdXJ2ZS5kLnJlZE11bChjKS5yZWRNdWwoZCk7XG4gIC8vIEYgPSBCIC0gRVxuICB2YXIgZiA9IGIucmVkU3ViKGUpO1xuICAvLyBHID0gQiArIEVcbiAgdmFyIGcgPSBiLnJlZEFkZChlKTtcbiAgLy8gWDMgPSBBICogRiAqICgoWDEgKyBZMSkgKiAoWDIgKyBZMikgLSBDIC0gRClcbiAgdmFyIHRtcCA9IHRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwocC54LnJlZEFkZChwLnkpKS5yZWRJU3ViKGMpLnJlZElTdWIoZCk7XG4gIHZhciBueCA9IGEucmVkTXVsKGYpLnJlZE11bCh0bXApO1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIGEgKiBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKHRoaXMuY3VydmUuX211bEEoYykpKTtcbiAgICAvLyBaMyA9IEYgKiBHXG4gICAgbnogPSBmLnJlZE11bChnKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBDKVxuICAgIG55ID0gYS5yZWRNdWwoZykucmVkTXVsKGQucmVkU3ViKGMpKTtcbiAgICAvLyBaMyA9IGMgKiBGICogR1xuICAgIG56ID0gdGhpcy5jdXJ2ZS5fbXVsQyhmKS5yZWRNdWwoZyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQpXG4gICAgcmV0dXJuIHRoaXMuX2V4dEFkZChwKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qQWRkKHApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGlmICh0aGlzLl9oYXNEb3VibGVzKGspKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLCBrKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIGZhbHNlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qbXVsQWRkID0gZnVuY3Rpb24gam11bEFkZChrMSwgcCwgazIpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgWyB0aGlzLCBwIF0sIFsgazEsIGsyIF0sIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgaWYgKHRoaXMuek9uZSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgdmFyIHppID0gdGhpcy56LnJlZEludm0oKTtcbiAgdGhpcy54ID0gdGhpcy54LnJlZE11bCh6aSk7XG4gIHRoaXMueSA9IHRoaXMueS5yZWRNdWwoemkpO1xuICBpZiAodGhpcy50KVxuICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwoemkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgdGhpcy56T25lID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnKCkge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnQgJiYgdGhpcy50LnJlZE5lZygpKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEob3RoZXIpIHtcbiAgcmV0dXJuIHRoaXMgPT09IG90aGVyIHx8XG4gICAgICAgICB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMCAmJlxuICAgICAgICAgdGhpcy5nZXRZKCkuY21wKG90aGVyLmdldFkoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBDb21wYXRpYmlsaXR5IHdpdGggQmFzZUN1cnZlXG5Qb2ludC5wcm90b3R5cGUudG9QID0gUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZTtcblBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IFBvaW50LnByb3RvdHlwZS5hZGQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IGV4cG9ydHM7XG5cbmN1cnZlLmJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbmN1cnZlLnNob3J0ID0gcmVxdWlyZSgnLi9zaG9ydCcpO1xuY3VydmUubW9udCA9IHJlcXVpcmUoJy4vbW9udCcpO1xuY3VydmUuZWR3YXJkcyA9IHJlcXVpcmUoJy4vZWR3YXJkcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmUgPSByZXF1aXJlKCcuLi9jdXJ2ZScpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSBjdXJ2ZS5iYXNlO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNilcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgYmFzaXMgPSB0aGlzLl9nZXRFbmRvQmFzaXMobGFtYmRhKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmV0YTogYmV0YSxcbiAgICBsYW1iZGE6IGxhbWJkYSxcbiAgICBiYXNpczogYmFzaXNcbiAgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHMgPSBmdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSkge1xuICAvLyBGaW5kIHJvb3RzIG9mIGZvciB4XjIgKyB4ICsgMSBpbiBGXG4gIC8vIFJvb3QgPSAoLTEgKy0gU3FydCgtMykpIC8gMlxuICAvL1xuICB2YXIgcmVkID0gbnVtID09PSB0aGlzLnAgPyB0aGlzLnJlZCA6IEJOLm1vbnQobnVtKTtcbiAgdmFyIHRpbnYgPSBuZXcgQk4oMikudG9SZWQocmVkKS5yZWRJbnZtKCk7XG4gIHZhciBudGludiA9IHRpbnYucmVkTmVnKCk7XG5cbiAgdmFyIHMgPSBuZXcgQk4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO1xuXG4gIHZhciBsMSA9IG50aW52LnJlZEFkZChzKS5mcm9tUmVkKCk7XG4gIHZhciBsMiA9IG50aW52LnJlZFN1YihzKS5mcm9tUmVkKCk7XG4gIHJldHVybiBbIGwxLCBsMiBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcyA9IGZ1bmN0aW9uIF9nZXRFbmRvQmFzaXMobGFtYmRhKSB7XG4gIC8vIGFwcnhTcXJ0ID49IHNxcnQodGhpcy5uKVxuICB2YXIgYXByeFNxcnQgPSB0aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkgLyAyKSk7XG5cbiAgLy8gMy43NFxuICAvLyBSdW4gRUdDRCwgdW50aWwgcihMICsgMSkgPCBhcHJ4U3FydFxuICB2YXIgdSA9IGxhbWJkYTtcbiAgdmFyIHYgPSB0aGlzLm4uY2xvbmUoKTtcbiAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICB2YXIgeTEgPSBuZXcgQk4oMCk7XG4gIHZhciB4MiA9IG5ldyBCTigwKTtcbiAgdmFyIHkyID0gbmV3IEJOKDEpO1xuXG4gIC8vIE5PVEU6IGFsbCB2ZWN0b3JzIGFyZSByb290cyBvZjogYSArIGIgKiBsYW1iZGEgPSAwIChtb2QgbilcbiAgdmFyIGEwO1xuICB2YXIgYjA7XG4gIC8vIEZpcnN0IHZlY3RvclxuICB2YXIgYTE7XG4gIHZhciBiMTtcbiAgLy8gU2Vjb25kIHZlY3RvclxuICB2YXIgYTI7XG4gIHZhciBiMjtcblxuICB2YXIgcHJldlI7XG4gIHZhciBpID0gMDtcbiAgdmFyIHI7XG4gIHZhciB4O1xuICB3aGlsZSAodS5jbXBuKDApICE9PSAwKSB7XG4gICAgdmFyIHEgPSB2LmRpdih1KTtcbiAgICByID0gdi5zdWIocS5tdWwodSkpO1xuICAgIHggPSB4Mi5zdWIocS5tdWwoeDEpKTtcbiAgICB2YXIgeSA9IHkyLnN1YihxLm11bCh5MSkpO1xuXG4gICAgaWYgKCFhMSAmJiByLmNtcChhcHJ4U3FydCkgPCAwKSB7XG4gICAgICBhMCA9IHByZXZSLm5lZygpO1xuICAgICAgYjAgPSB4MTtcbiAgICAgIGExID0gci5uZWcoKTtcbiAgICAgIGIxID0geDtcbiAgICB9IGVsc2UgaWYgKGExICYmICsraSA9PT0gMikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZXZSID0gcjtcblxuICAgIHYgPSB1O1xuICAgIHUgPSByO1xuICAgIHgyID0geDE7XG4gICAgeDEgPSB4O1xuICAgIHkyID0geTE7XG4gICAgeTEgPSB5O1xuICB9XG4gIGEyID0gci5uZWcoKTtcbiAgYjIgPSB4O1xuXG4gIHZhciBsZW4xID0gYTEuc3FyKCkuYWRkKGIxLnNxcigpKTtcbiAgdmFyIGxlbjIgPSBhMi5zcXIoKS5hZGQoYjIuc3FyKCkpO1xuICBpZiAobGVuMi5jbXAobGVuMSkgPj0gMCkge1xuICAgIGEyID0gYTA7XG4gICAgYjIgPSBiMDtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBzaWduc1xuICBpZiAoYTEubmVnYXRpdmUpIHtcbiAgICBhMSA9IGExLm5lZygpO1xuICAgIGIxID0gYjEubmVnKCk7XG4gIH1cbiAgaWYgKGEyLm5lZ2F0aXZlKSB7XG4gICAgYTIgPSBhMi5uZWcoKTtcbiAgICBiMiA9IGIyLm5lZygpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IGE6IGExLCBiOiBiMSB9LFxuICAgIHsgYTogYTIsIGI6IGIyIH1cbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgbnBvaW50cyA9IHRoaXMuX2VuZG9XbmFmVDE7XG4gIHZhciBuY29lZmZzID0gdGhpcy5fZW5kb1duYWZUMjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BsaXQgPSB0aGlzLl9lbmRvU3BsaXQoY29lZmZzW2ldKTtcbiAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgIGlmIChzcGxpdC5rMS5uZWdhdGl2ZSkge1xuICAgICAgc3BsaXQuazEuaW5lZygpO1xuICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgIH1cbiAgICBpZiAoc3BsaXQuazIubmVnYXRpdmUpIHtcbiAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgIGJldGEgPSBiZXRhLm5lZyh0cnVlKTtcbiAgICB9XG5cbiAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgbnBvaW50c1tpICogMiArIDFdID0gYmV0YTtcbiAgICBuY29lZmZzW2kgKiAyXSA9IHNwbGl0LmsxO1xuICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICB9XG4gIHZhciByZXMgPSB0aGlzLl93bmFmTXVsQWRkKDEsIG5wb2ludHMsIG5jb2VmZnMsIGkgKiAyLCBqYWNvYmlhblJlc3VsdCk7XG5cbiAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHtcbiAgICBucG9pbnRzW2pdID0gbnVsbDtcbiAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKVxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKGVuZG9NdWwpXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSlcbiAgICB9LFxuICAgIG5hZjogdGhpcy5wcmVjb21wdXRlZC5uYWYgJiYge1xuICAgICAgd25kOiB0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKVxuICAgIH1cbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfSxcbiAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLm5hZi5wb2ludHMubWFwKG9iajJwb2ludCkpXG4gICAgfVxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG5cbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFsgdGhpcyBdLCBbIGsgXSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgcmV0dXJuIHRoaXMgPT09IHAgfHxcbiAgICAgICAgIHRoaXMuaW5mID09PSBwLmluZiAmJlxuICAgICAgICAgICAgICh0aGlzLmluZiB8fCB0aGlzLnguY21wKHAueCkgPT09IDAgJiYgdGhpcy55LmNtcChwLnkpID09PSAwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpKTtcbiAgaWYgKF9wcmVjb21wdXRlICYmIHRoaXMucHJlY29tcHV0ZWQpIHtcbiAgICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgICB2YXIgbmVnYXRlID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIHAubmVnKCk7XG4gICAgfTtcbiAgICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0ogPSBmdW5jdGlvbiB0b0ooKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLmN1cnZlLm9uZSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBKUG9pbnQoY3VydmUsIHgsIHksIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2phY29iaWFuJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IG5ldyBCTigwKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgfVxuICBpZiAoIXRoaXMueC5yZWQpXG4gICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnkucmVkKVxuICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy56LnJlZClcbiAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuXG4gIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG59XG5pbmhlcml0cyhKUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHopIHtcbiAgcmV0dXJuIG5ldyBKUG9pbnQodGhpcywgeCwgeSwgeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRvUCA9IGZ1bmN0aW9uIHRvUCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciB6aW52ID0gdGhpcy56LnJlZEludm0oKTtcbiAgdmFyIHppbnYyID0gemludi5yZWRTcXIoKTtcbiAgdmFyIGF4ID0gdGhpcy54LnJlZE11bCh6aW52Mik7XG4gIHZhciBheSA9IHRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCwgYXkpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSwgdGhpcy56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDEyTSArIDRTICsgN0FcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLngucmVkTXVsKHB6Mik7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBmdW5jdGlvbiBtaXhlZEFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHAudG9KKCk7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyA4TSArIDNTICsgN0FcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLng7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIpLnJlZE11bCh0aGlzLnopO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAocG93KSB7XG4gIGlmIChwb3cgPT09IDApXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKCFwb3cpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3c7IGkrKylcbiAgICAgIHIgPSByLmRibCgpO1xuICAgIHJldHVybiByO1xuICB9XG5cbiAgLy8gMU0gKyAyUyArIDFBICsgTiAqICg0UyArIDVNICsgOEEpXG4gIC8vIE4gPSAxID0+IDZNICsgNlMgKyA5QVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcbiAgdmFyIHRpbnYgPSB0aGlzLmN1cnZlLnRpbnY7XG5cbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIC8vIFJldXNlIHJlc3VsdHNcbiAgdmFyIGp5ZCA9IGp5LnJlZEFkZChqeSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93OyBpKyspIHtcbiAgICB2YXIgangyID0gangucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDIgPSBqeWQucmVkU3FyKCk7XG4gICAgdmFyIGp5ZDQgPSBqeWQyLnJlZFNxcigpO1xuICAgIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gICAgdmFyIHQxID0gangucmVkTXVsKGp5ZDIpO1xuICAgIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcbiAgICB2YXIgZG55ID0gYy5yZWRNdWwodDIpO1xuICAgIGRueSA9IGRueS5yZWRJQWRkKGRueSkucmVkSVN1YihqeWQ0KTtcbiAgICB2YXIgbnogPSBqeWQucmVkTXVsKGp6KTtcbiAgICBpZiAoaSArIDEgPCBwb3cpXG4gICAgICBqejQgPSBqejQucmVkTXVsKGp5ZDQpO1xuXG4gICAganggPSBueDtcbiAgICBqeiA9IG56O1xuICAgIGp5ZCA9IGRueTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChqeCwganlkLnJlZE11bCh0aW52KSwganopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5femVyb0RibCgpO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLnRocmVlQSlcbiAgICByZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9kYmwoKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3plcm9EYmwgPSBmdW5jdGlvbiBfemVyb0RibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTRBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYTsgYSA9IDBcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gICAgLy8gVCA9IE0gXiAyIC0gMipTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcblxuICAgIC8vIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcblxuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyKlkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA5LWxcbiAgICAvLyAyTSArIDVTICsgMTNBXG5cbiAgICAvLyBBID0gWDFeMlxuICAgIHZhciBhID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIEIgPSBZMV4yXG4gICAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gQyA9IEJeMlxuICAgIHZhciBjID0gYi5yZWRTcXIoKTtcbiAgICAvLyBEID0gMiAqICgoWDEgKyBCKV4yIC0gQSAtIEMpXG4gICAgdmFyIGQgPSB0aGlzLngucmVkQWRkKGIpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihjKTtcbiAgICBkID0gZC5yZWRJQWRkKGQpO1xuICAgIC8vIEUgPSAzICogQVxuICAgIHZhciBlID0gYS5yZWRBZGQoYSkucmVkSUFkZChhKTtcbiAgICAvLyBGID0gRV4yXG4gICAgdmFyIGYgPSBlLnJlZFNxcigpO1xuXG4gICAgLy8gOCAqIENcbiAgICB2YXIgYzggPSBjLnJlZElBZGQoYyk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuXG4gICAgLy8gWDMgPSBGIC0gMiAqIERcbiAgICBueCA9IGYucmVkSVN1YihkKS5yZWRJU3ViKGQpO1xuICAgIC8vIFkzID0gRSAqIChEIC0gWDMpIC0gOCAqIENcbiAgICBueSA9IGUucmVkTXVsKGQucmVkSVN1YihueCkpLnJlZElTdWIoYzgpO1xuICAgIC8vIFozID0gMiAqIFkxICogWjFcbiAgICBueiA9IHRoaXMueS5yZWRNdWwodGhpcy56KTtcbiAgICBueiA9IG56LnJlZElBZGQobnopO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fdGhyZWVEYmwgPSBmdW5jdGlvbiBfdGhyZWVEYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE1QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGFcbiAgICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCkucmVkSUFkZCh0aGlzLmN1cnZlLmEpO1xuICAgIC8vIFQgPSBNXjIgLSAyICogU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMiAqIFkxXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWwjZG91YmxpbmctZGJsLTIwMDEtYlxuICAgIC8vIDNNICsgNVNcblxuICAgIC8vIGRlbHRhID0gWjFeMlxuICAgIHZhciBkZWx0YSA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAvLyBnYW1tYSA9IFkxXjJcbiAgICB2YXIgZ2FtbWEgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gYmV0YSA9IFgxICogZ2FtbWFcbiAgICB2YXIgYmV0YSA9IHRoaXMueC5yZWRNdWwoZ2FtbWEpO1xuICAgIC8vIGFscGhhID0gMyAqIChYMSAtIGRlbHRhKSAqIChYMSArIGRlbHRhKVxuICAgIHZhciBhbHBoYSA9IHRoaXMueC5yZWRTdWIoZGVsdGEpLnJlZE11bCh0aGlzLngucmVkQWRkKGRlbHRhKSk7XG4gICAgYWxwaGEgPSBhbHBoYS5yZWRBZGQoYWxwaGEpLnJlZElBZGQoYWxwaGEpO1xuICAgIC8vIFgzID0gYWxwaGFeMiAtIDggKiBiZXRhXG4gICAgdmFyIGJldGE0ID0gYmV0YS5yZWRJQWRkKGJldGEpO1xuICAgIGJldGE0ID0gYmV0YTQucmVkSUFkZChiZXRhNCk7XG4gICAgdmFyIGJldGE4ID0gYmV0YTQucmVkQWRkKGJldGE0KTtcbiAgICBueCA9IGFscGhhLnJlZFNxcigpLnJlZElTdWIoYmV0YTgpO1xuICAgIC8vIFozID0gKFkxICsgWjEpXjIgLSBnYW1tYSAtIGRlbHRhXG4gICAgbnogPSB0aGlzLnkucmVkQWRkKHRoaXMueikucmVkU3FyKCkucmVkSVN1YihnYW1tYSkucmVkSVN1YihkZWx0YSk7XG4gICAgLy8gWTMgPSBhbHBoYSAqICg0ICogYmV0YSAtIFgzKSAtIDggKiBnYW1tYV4yXG4gICAgdmFyIGdnYW1tYTggPSBnYW1tYS5yZWRTcXIoKTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBueSA9IGFscGhhLnJlZE11bChiZXRhNC5yZWRJU3ViKG54KSkucmVkSVN1YihnZ2FtbWE4KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX2RibCA9IGZ1bmN0aW9uIF9kYmwoKSB7XG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIC8vIDRNICsgNlMgKyAxMEFcbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgdmFyIGp5MiA9IGp5LnJlZFNxcigpO1xuXG4gIHZhciBjID0gangyLnJlZEFkZChqeDIpLnJlZElBZGQoangyKS5yZWRJQWRkKGEucmVkTXVsKGp6NCkpO1xuXG4gIHZhciBqeGQ0ID0gangucmVkQWRkKGp4KTtcbiAganhkNCA9IGp4ZDQucmVkSUFkZChqeGQ0KTtcbiAgdmFyIHQxID0ganhkNC5yZWRNdWwoankyKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICB2YXIgdDIgPSB0MS5yZWRJU3ViKG54KTtcblxuICB2YXIganlkOCA9IGp5Mi5yZWRTcXIoKTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAganlkOCA9IGp5ZDgucmVkSUFkZChqeWQ4KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodDIpLnJlZElTdWIoanlkOCk7XG4gIHZhciBueiA9IGp5LnJlZEFkZChqeSkucmVkTXVsKGp6KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRycGwgPSBmdW5jdGlvbiB0cnBsKCkge1xuICBpZiAoIXRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCkuYWRkKHRoaXMpO1xuXG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sI3RyaXBsaW5nLXRwbC0yMDA3LWJsXG4gIC8vIDVNICsgMTBTICsgLi4uXG5cbiAgLy8gWFggPSBYMV4yXG4gIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gWVkgPSBZMV4yXG4gIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgLy8gWlogPSBaMV4yXG4gIHZhciB6eiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgLy8gWVlZWSA9IFlZXjJcbiAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgLy8gTSA9IDMgKiBYWCArIGEgKiBaWjI7IGEgPSAwXG4gIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgLy8gTU0gPSBNXjJcbiAgdmFyIG1tID0gbS5yZWRTcXIoKTtcbiAgLy8gRSA9IDYgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpIC0gTU1cbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICBlID0gZS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRBZGQoZSkucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkSVN1YihtbSk7XG4gIC8vIEVFID0gRV4yXG4gIHZhciBlZSA9IGUucmVkU3FyKCk7XG4gIC8vIFQgPSAxNipZWVlZXG4gIHZhciB0ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICB0ID0gdC5yZWRJQWRkKHQpO1xuICAvLyBVID0gKE0gKyBFKV4yIC0gTU0gLSBFRSAtIFRcbiAgdmFyIHUgPSBtLnJlZElBZGQoZSkucmVkU3FyKCkucmVkSVN1YihtbSkucmVkSVN1YihlZSkucmVkSVN1Yih0KTtcbiAgLy8gWDMgPSA0ICogKFgxICogRUUgLSA0ICogWVkgKiBVKVxuICB2YXIgeXl1NCA9IHl5LnJlZE11bCh1KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgeXl1NCA9IHl5dTQucmVkSUFkZCh5eXU0KTtcbiAgdmFyIG54ID0gdGhpcy54LnJlZE11bChlZSkucmVkSVN1Yih5eXU0KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgbnggPSBueC5yZWRJQWRkKG54KTtcbiAgLy8gWTMgPSA4ICogWTEgKiAoVSAqIChUIC0gVSkgLSBFICogRUUpXG4gIHZhciBueSA9IHRoaXMueS5yZWRNdWwodS5yZWRNdWwodC5yZWRJU3ViKHUpKS5yZWRJU3ViKGUucmVkTXVsKGVlKSkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICBueSA9IG55LnJlZElBZGQobnkpO1xuICAvLyBaMyA9IChaMSArIEUpXjIgLSBaWiAtIEVFXG4gIHZhciBueiA9IHRoaXMuei5yZWRBZGQoZSkucmVkU3FyKCkucmVkSVN1Yih6eikucmVkSVN1YihlZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaywga2Jhc2UpIHtcbiAgayA9IG5ldyBCTihrLCBrYmFzZSk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICByZXR1cm4gdGhpcy5lcShwLnRvSigpKTtcblxuICBpZiAodGhpcyA9PT0gcClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICAvLyB4MSAqIHoyXjIgPT0geDIgKiB6MV4yXG4gIHZhciB6MiA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgaWYgKHRoaXMueC5yZWRNdWwocHoyKS5yZWRJU3ViKHAueC5yZWRNdWwoejIpKS5jbXBuKDApICE9PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyB5MSAqIHoyXjMgPT0geTIgKiB6MV4zXG4gIHZhciB6MyA9IHoyLnJlZE11bCh0aGlzLnopO1xuICB2YXIgcHozID0gcHoyLnJlZE11bChwLnopO1xuICByZXR1cm4gdGhpcy55LnJlZE11bChwejMpLnJlZElTdWIocC55LnJlZE11bCh6MykpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciB6cyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgdmFyIHJ4ID0geC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHpzKTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHpzKTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIEpQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBKUG9pbnQgeDogJyArIHRoaXMueC50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnoudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlcyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vZWxsaXB0aWMnKTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gUHJlc2V0Q3VydmUob3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlID09PSAnc2hvcnQnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuc2hvcnQob3B0aW9ucyk7XG4gIGVsc2UgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ2Vkd2FyZHMnKVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUuZWR3YXJkcyhvcHRpb25zKTtcbiAgZWxzZVxuICAgIHRoaXMuY3VydmUgPSBuZXcgZWxsaXB0aWMuY3VydmUubW9udChvcHRpb25zKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaDtcblxuICBhc3NlcnQodGhpcy5nLnZhbGlkYXRlKCksICdJbnZhbGlkIGN1cnZlJyk7XG4gIGFzc2VydCh0aGlzLmcubXVsKHRoaXMubikuaXNJbmZpbml0eSgpLCAnSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8nKTtcbn1cbmN1cnZlcy5QcmVzZXRDdXJ2ZSA9IFByZXNldEN1cnZlO1xuXG5mdW5jdGlvbiBkZWZpbmVDdXJ2ZShuYW1lLCBvcHRpb25zKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGN1cnZlID0gbmV3IFByZXNldEN1cnZlKG9wdGlvbnMpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBjdXJ2ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3VydmU7XG4gICAgfVxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyMjQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDIyNCcsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZScsXG4gIGI6ICdiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCcsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMScsXG4gICAgJ2JkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0J1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyNTYnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNWFjNjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGInLFxuICBuOiAnZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYnLFxuICAgICc0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3A1MjEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICcwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiAnICtcbiAgICAgJzk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICcgK1xuICAgICAnM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAnLFxuICBuOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAnICtcbiAgICAgJ2Y3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5JyxcbiAgaGFzaDogaGFzaC5zaGE1MTIsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICcgK1xuICAgICcwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyAnICtcbiAgICAnYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYnLFxuICAgICcwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAnICtcbiAgICAnNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgJyArXG4gICAgJzNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwJ1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ2N1cnZlMjU1MTknLCB7XG4gIHR5cGU6ICdtb250JyxcbiAgcHJpbWU6ICdwMjU1MTknLFxuICBwOiAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcsXG4gIGE6ICc3NmQwNicsXG4gIGI6ICcxJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnOSdcbiAgXVxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4J1xuICBdXG59KTtcblxudmFyIHByZTtcbnRyeSB7XG4gIHByZSA9IHJlcXVpcmUoJy4vcHJlY29tcHV0ZWQvc2VjcDI1NmsxJyk7XG59IGNhdGNoIChlKSB7XG4gIHByZSA9IHVuZGVmaW5lZDtcbn1cblxuZGVmaW5lQ3VydmUoJ3NlY3AyNTZrMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdrMjU2JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyxcbiAgYTogJzAnLFxuICBiOiAnNycsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MScsXG4gIGg6ICcxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG5cbiAgLy8gUHJlY29tcHV0ZWQgZW5kb21vcnBoaXNtXG4gIGJldGE6ICc3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlJyxcbiAgbGFtYmRhOiAnNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MicsXG4gIGJhc2lzOiBbXG4gICAge1xuICAgICAgYTogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1JyxcbiAgICAgIGI6ICctZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMnXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSdcbiAgICB9XG4gIF0sXG5cbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCcsXG4gICAgJzQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgnLFxuICAgIHByZVxuICBdXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBIbWFjRFJCRyA9IHJlcXVpcmUoJ2htYWMtZHJiZycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxudmFyIEtleVBhaXIgPSByZXF1aXJlKCcuL2tleScpO1xudmFyIFNpZ25hdHVyZSA9IHJlcXVpcmUoJy4vc2lnbmF0dXJlJyk7XG5cbmZ1bmN0aW9uIEVDKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVDKSlcbiAgICByZXR1cm4gbmV3IEVDKG9wdGlvbnMpO1xuXG4gIC8vIFNob3J0Y3V0IGBlbGxpcHRpYy5lYyhjdXJ2ZS1uYW1lKWBcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIGFzc2VydChlbGxpcHRpYy5jdXJ2ZXMuaGFzT3duUHJvcGVydHkob3B0aW9ucyksICdVbmtub3duIGN1cnZlICcgKyBvcHRpb25zKTtcblxuICAgIG9wdGlvbnMgPSBlbGxpcHRpYy5jdXJ2ZXNbb3B0aW9uc107XG4gIH1cblxuICAvLyBTaG9ydGN1dCBmb3IgYGVsbGlwdGljLmVjKGVsbGlwdGljLmN1cnZlcy5jdXJ2ZU5hbWUpYFxuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIGVsbGlwdGljLmN1cnZlcy5QcmVzZXRDdXJ2ZSlcbiAgICBvcHRpb25zID0geyBjdXJ2ZTogb3B0aW9ucyB9O1xuXG4gIHRoaXMuY3VydmUgPSBvcHRpb25zLmN1cnZlLmN1cnZlO1xuICB0aGlzLm4gPSB0aGlzLmN1cnZlLm47XG4gIHRoaXMubmggPSB0aGlzLm4udXNocm4oMSk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcblxuICAvLyBQb2ludCBvbiBjdXJ2ZVxuICB0aGlzLmcgPSBvcHRpb25zLmN1cnZlLmc7XG4gIHRoaXMuZy5wcmVjb21wdXRlKG9wdGlvbnMuY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIC8vIEhhc2ggZm9yIGZ1bmN0aW9uIGZvciBEUkJHXG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaCB8fCBvcHRpb25zLmN1cnZlLmhhc2g7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEVDO1xuXG5FQy5wcm90b3R5cGUua2V5UGFpciA9IGZ1bmN0aW9uIGtleVBhaXIob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEtleVBhaXIodGhpcywgb3B0aW9ucyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVByaXZhdGUgPSBmdW5jdGlvbiBrZXlGcm9tUHJpdmF0ZShwcml2LCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVByaXZhdGUodGhpcywgcHJpdiwgZW5jKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1YiwgZW5jKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZW5LZXlQYWlyID0gZnVuY3Rpb24gZ2VuS2V5UGFpcihvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IEhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuYyB8fCAndXRmOCcsXG4gICAgZW50cm9weTogb3B0aW9ucy5lbnRyb3B5IHx8IGVsbGlwdGljLnJhbmQodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksXG4gICAgZW50cm9weUVuYzogb3B0aW9ucy5lbnRyb3B5ICYmIG9wdGlvbnMuZW50cm9weUVuYyB8fCAndXRmOCcsXG4gICAgbm9uY2U6IHRoaXMubi50b0FycmF5KClcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZG8ge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH0gd2hpbGUgKHRydWUpO1xufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIHRydW5jYXRlVG9OKG1zZywgdHJ1bmNPbmx5KSB7XG4gIHZhciBkZWx0YSA9IG1zZy5ieXRlTGVuZ3RoKCkgKiA4IC0gdGhpcy5uLmJpdExlbmd0aCgpO1xuICBpZiAoZGVsdGEgPiAwKVxuICAgIG1zZyA9IG1zZy51c2hybihkZWx0YSk7XG4gIGlmICghdHJ1bmNPbmx5ICYmIG1zZy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBtc2cuc3ViKHRoaXMubik7XG4gIGVsc2VcbiAgICByZXR1cm4gbXNnO1xufTtcblxuRUMucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywga2V5LCBlbmMsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBlbmMgPT09ICdvYmplY3QnKSB7XG4gICAgb3B0aW9ucyA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG4gIGlmICghb3B0aW9ucylcbiAgICBvcHRpb25zID0ge307XG5cbiAga2V5ID0gdGhpcy5rZXlGcm9tUHJpdmF0ZShrZXksIGVuYyk7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG5cbiAgLy8gWmVyby1leHRlbmQga2V5IHRvIHByb3ZpZGUgZW5vdWdoIGVudHJvcHlcbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIGJrZXkgPSBrZXkuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIG5vbmNlIHRvIGhhdmUgdGhlIHNhbWUgYnl0ZSBzaXplIGFzIE5cbiAgdmFyIG5vbmNlID0gbXNnLnRvQXJyYXkoJ2JlJywgYnl0ZXMpO1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBIbWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIGVudHJvcHk6IGJrZXksXG4gICAgbm9uY2U6IG5vbmNlLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmMgfHwgJ3V0ZjgnXG4gIH0pO1xuXG4gIC8vIE51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZVxuICB2YXIgbnMxID0gdGhpcy5uLnN1YihuZXcgQk4oMSkpO1xuXG4gIGZvciAodmFyIGl0ZXIgPSAwOyB0cnVlOyBpdGVyKyspIHtcbiAgICB2YXIgayA9IG9wdGlvbnMuayA/XG4gICAgICAgIG9wdGlvbnMuayhpdGVyKSA6XG4gICAgICAgIG5ldyBCTihkcmJnLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtcbiAgICBrID0gdGhpcy5fdHJ1bmNhdGVUb04oaywgdHJ1ZSk7XG4gICAgaWYgKGsuY21wbigxKSA8PSAwIHx8IGsuY21wKG5zMSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwID0gdGhpcy5nLm11bChrKTtcbiAgICBpZiAoa3AuaXNJbmZpbml0eSgpKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3BYID0ga3AuZ2V0WCgpO1xuICAgIHZhciByID0ga3BYLnVtb2QodGhpcy5uKTtcbiAgICBpZiAoci5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcyA9IGsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO1xuICAgIHMgPSBzLnVtb2QodGhpcy5uKTtcbiAgICBpZiAocy5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcmVjb3ZlcnlQYXJhbSA9IChrcC5nZXRZKCkuaXNPZGQoKSA/IDEgOiAwKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoa3BYLmNtcChyKSAhPT0gMCA/IDIgOiAwKTtcblxuICAgIC8vIFVzZSBjb21wbGVtZW50IG9mIGBzYCwgaWYgaXQgaXMgPiBgbiAvIDJgXG4gICAgaWYgKG9wdGlvbnMuY2Fub25pY2FsICYmIHMuY21wKHRoaXMubmgpID4gMCkge1xuICAgICAgcyA9IHRoaXMubi5zdWIocyk7XG4gICAgICByZWNvdmVyeVBhcmFtIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoeyByOiByLCBzOiBzLCByZWNvdmVyeVBhcmFtOiByZWNvdmVyeVBhcmFtIH0pO1xuICB9XG59O1xuXG5FQy5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlLCBrZXksIGVuYykge1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuICBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMoa2V5LCBlbmMpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgJ2hleCcpO1xuXG4gIC8vIFBlcmZvcm0gcHJpbWl0aXZlIHZhbHVlcyB2YWxpZGF0aW9uXG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG4gIGlmIChyLmNtcG4oMSkgPCAwIHx8IHIuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzLmNtcG4oMSkgPCAwIHx8IHMuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGUgc2lnbmF0dXJlXG4gIHZhciBzaW52ID0gcy5pbnZtKHRoaXMubik7XG4gIHZhciB1MSA9IHNpbnYubXVsKG1zZykudW1vZCh0aGlzLm4pO1xuICB2YXIgdTIgPSBzaW52Lm11bChyKS51bW9kKHRoaXMubik7XG5cbiAgaWYgKCF0aGlzLmN1cnZlLl9tYXh3ZWxsVHJpY2spIHtcbiAgICB2YXIgcCA9IHRoaXMuZy5tdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICAgIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBwLmdldFgoKS51bW9kKHRoaXMubikuY21wKHIpID09PSAwO1xuICB9XG5cbiAgLy8gTk9URTogR3JlZyBNYXh3ZWxsJ3MgdHJpY2ssIGluc3BpcmVkIGJ5OlxuICAvLyBodHRwczovL2dpdC5pby92YWQzS1xuXG4gIHZhciBwID0gdGhpcy5nLmptdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIENvbXBhcmUgYHAueGAgb2YgSmFjb2JpYW4gcG9pbnQgd2l0aCBgcmAsXG4gIC8vIHRoaXMgd2lsbCBkbyBgcC54ID09IHIgKiBwLnpeMmAgaW5zdGVhZCBvZiBtdWx0aXBseWluZyBgcC54YCBieSB0aGVcbiAgLy8gaW52ZXJzZSBvZiBgcC56XjJgXG4gIHJldHVybiBwLmVxWFRvUChyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5ID0gZnVuY3Rpb24obXNnLCBzaWduYXR1cmUsIGosIGVuYykge1xuICBhc3NlcnQoKDMgJiBqKSA9PT0gaiwgJ1RoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMnKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG5cbiAgdmFyIG4gPSB0aGlzLm47XG4gIHZhciBlID0gbmV3IEJOKG1zZyk7XG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG5cbiAgLy8gQSBzZXQgTFNCIHNpZ25pZmllcyB0aGF0IHRoZSB5LWNvb3JkaW5hdGUgaXMgb2RkXG4gIHZhciBpc1lPZGQgPSBqICYgMTtcbiAgdmFyIGlzU2Vjb25kS2V5ID0gaiA+PiAxO1xuICBpZiAoci5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSkgPj0gMCAmJiBpc1NlY29uZEtleSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZScpO1xuXG4gIC8vIDEuMS4gTGV0IHggPSByICsgam4uXG4gIGlmIChpc1NlY29uZEtleSlcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIuYWRkKHRoaXMuY3VydmUubiksIGlzWU9kZCk7XG4gIGVsc2VcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIsIGlzWU9kZCk7XG5cbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICB2YXIgczEgPSBuLnN1YihlKS5tdWwockludikudW1vZChuKTtcbiAgdmFyIHMyID0gcy5tdWwockludikudW1vZChuKTtcblxuICAvLyAxLjYuMSBDb21wdXRlIFEgPSByXi0xIChzUiAtICBlRylcbiAgLy8gICAgICAgICAgICAgICBRID0gcl4tMSAoc1IgKyAtZUcpXG4gIHJldHVybiB0aGlzLmcubXVsQWRkKHMxLCByLCBzMik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gS2V5UGFpcihlYywgb3B0aW9ucykge1xuICB0aGlzLmVjID0gZWM7XG4gIHRoaXMucHJpdiA9IG51bGw7XG4gIHRoaXMucHViID0gbnVsbDtcblxuICAvLyBLZXlQYWlyKGVjLCB7IHByaXY6IC4uLiwgcHViOiAuLi4gfSlcbiAgaWYgKG9wdGlvbnMucHJpdilcbiAgICB0aGlzLl9pbXBvcnRQcml2YXRlKG9wdGlvbnMucHJpdiwgb3B0aW9ucy5wcml2RW5jKTtcbiAgaWYgKG9wdGlvbnMucHViKVxuICAgIHRoaXMuX2ltcG9ydFB1YmxpYyhvcHRpb25zLnB1Yiwgb3B0aW9ucy5wdWJFbmMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVjLCBwdWIsIGVuYykge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHB1YjogcHViLFxuICAgIHB1YkVuYzogZW5jXG4gIH0pO1xufTtcblxuS2V5UGFpci5mcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGZyb21Qcml2YXRlKGVjLCBwcml2LCBlbmMpIHtcbiAgaWYgKHByaXYgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwcml2O1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHByaXY6IHByaXYsXG4gICAgcHJpdkVuYzogZW5jXG4gIH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdmFyIHB1YiA9IHRoaXMuZ2V0UHVibGljKCk7XG5cbiAgaWYgKHB1Yi5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnSW52YWxpZCBwdWJsaWMga2V5JyB9O1xuICBpZiAoIXB1Yi52YWxpZGF0ZSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQnIH07XG4gIGlmICghcHViLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdQdWJsaWMga2V5ICogTiAhPSBPJyB9O1xuXG4gIHJldHVybiB7IHJlc3VsdDogdHJ1ZSwgcmVhc29uOiBudWxsIH07XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoY29tcGFjdCwgZW5jKSB7XG4gIC8vIGNvbXBhY3QgaXMgb3B0aW9uYWwgYXJndW1lbnRcbiAgaWYgKHR5cGVvZiBjb21wYWN0ID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGNvbXBhY3Q7XG4gICAgY29tcGFjdCA9IG51bGw7XG4gIH1cblxuICBpZiAoIXRoaXMucHViKVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5nLm11bCh0aGlzLnByaXYpO1xuXG4gIGlmICghZW5jKVxuICAgIHJldHVybiB0aGlzLnB1YjtcblxuICByZXR1cm4gdGhpcy5wdWIuZW5jb2RlKGVuYywgY29tcGFjdCk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQcml2YXRlID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZShlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHRoaXMucHJpdi50b1N0cmluZygxNiwgMik7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5wcml2O1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGUgPSBmdW5jdGlvbiBfaW1wb3J0UHJpdmF0ZShrZXksIGVuYykge1xuICB0aGlzLnByaXYgPSBuZXcgQk4oa2V5LCBlbmMgfHwgMTYpO1xuXG4gIC8vIEVuc3VyZSB0aGF0IHRoZSBwcml2IHdvbid0IGJlIGJpZ2dlciB0aGFuIG4sIG90aGVyd2lzZSB3ZSBtYXkgZmFpbFxuICAvLyBpbiBmaXhlZCBtdWx0aXBsaWNhdGlvbiBtZXRob2RcbiAgdGhpcy5wcml2ID0gdGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQdWJsaWMgPSBmdW5jdGlvbiBfaW1wb3J0UHVibGljKGtleSwgZW5jKSB7XG4gIGlmIChrZXkueCB8fCBrZXkueSkge1xuICAgIC8vIE1vbnRnb21lcnkgcG9pbnRzIG9ubHkgaGF2ZSBhbiBgeGAgY29vcmRpbmF0ZS5cbiAgICAvLyBXZWllcnN0cmFzcy9FZHdhcmRzIHBvaW50cyBvbiB0aGUgb3RoZXIgaGFuZCBoYXZlIGJvdGggYHhgIGFuZFxuICAgIC8vIGB5YCBjb29yZGluYXRlcy5cbiAgICBpZiAodGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnbW9udCcpIHtcbiAgICAgIGFzc2VydChrZXkueCwgJ05lZWQgeCBjb29yZGluYXRlJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdzaG9ydCcgfHxcbiAgICAgICAgICAgICAgIHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ2Vkd2FyZHMnKSB7XG4gICAgICBhc3NlcnQoa2V5LnggJiYga2V5LnksICdOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlJyk7XG4gICAgfVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5wb2ludChrZXkueCwga2V5LnkpO1xuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLnB1YiA9IHRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoa2V5LCBlbmMpO1xufTtcblxuLy8gRUNESFxuS2V5UGFpci5wcm90b3R5cGUuZGVyaXZlID0gZnVuY3Rpb24gZGVyaXZlKHB1Yikge1xuICByZXR1cm4gcHViLm11bCh0aGlzLnByaXYpLmdldFgoKTtcbn07XG5cbi8vIEVDRFNBXG5LZXlQYWlyLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtc2csIGVuYywgb3B0aW9ucykge1xuICByZXR1cm4gdGhpcy5lYy5zaWduKG1zZywgdGhpcywgZW5jLCBvcHRpb25zKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtc2csIHNpZ25hdHVyZSkge1xuICByZXR1cm4gdGhpcy5lYy52ZXJpZnkobXNnLCBzaWduYXR1cmUsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIHJldHVybiAnPEtleSBwcml2OiAnICsgKHRoaXMucHJpdiAmJiB0aGlzLnByaXYudG9TdHJpbmcoMTYsIDIpKSArXG4gICAgICAgICAnIHB1YjogJyArICh0aGlzLnB1YiAmJiB0aGlzLnB1Yi5pbnNwZWN0KCkpICsgJyA+Jztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFNpZ25hdHVyZShvcHRpb25zLCBlbmMpIHtcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX2ltcG9ydERFUihvcHRpb25zLCBlbmMpKVxuICAgIHJldHVybjtcblxuICBhc3NlcnQob3B0aW9ucy5yICYmIG9wdGlvbnMucywgJ1NpZ25hdHVyZSB3aXRob3V0IHIgb3IgcycpO1xuICB0aGlzLnIgPSBuZXcgQk4ob3B0aW9ucy5yLCAxNik7XG4gIHRoaXMucyA9IG5ldyBCTihvcHRpb25zLnMsIDE2KTtcbiAgaWYgKG9wdGlvbnMucmVjb3ZlcnlQYXJhbSA9PT0gdW5kZWZpbmVkKVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG4gIGVsc2VcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBvcHRpb25zLnJlY292ZXJ5UGFyYW07XG59XG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcblxuZnVuY3Rpb24gUG9zaXRpb24oKSB7XG4gIHRoaXMucGxhY2UgPSAwO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGgoYnVmLCBwKSB7XG4gIHZhciBpbml0aWFsID0gYnVmW3AucGxhY2UrK107XG4gIGlmICghKGluaXRpYWwgJiAweDgwKSkge1xuICAgIHJldHVybiBpbml0aWFsO1xuICB9XG4gIHZhciBvY3RldExlbiA9IGluaXRpYWwgJiAweGY7XG4gIHZhciB2YWwgPSAwO1xuICBmb3IgKHZhciBpID0gMCwgb2ZmID0gcC5wbGFjZTsgaSA8IG9jdGV0TGVuOyBpKyssIG9mZisrKSB7XG4gICAgdmFsIDw8PSA4O1xuICAgIHZhbCB8PSBidWZbb2ZmXTtcbiAgfVxuICBwLnBsYWNlID0gb2ZmO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBybVBhZGRpbmcoYnVmKSB7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICB3aGlsZSAoIWJ1ZltpXSAmJiAhKGJ1ZltpICsgMV0gJiAweDgwKSAmJiBpIDwgbGVuKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLl9pbXBvcnRERVIgPSBmdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsIGVuYykge1xuICBkYXRhID0gdXRpbHMudG9BcnJheShkYXRhLCBlbmMpO1xuICB2YXIgcCA9IG5ldyBQb3NpdGlvbigpO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDMwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmICgobGVuICsgcC5wbGFjZSkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHJsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIHZhciByID0gZGF0YS5zbGljZShwLnBsYWNlLCBybGVuICsgcC5wbGFjZSk7XG4gIHAucGxhY2UgKz0gcmxlbjtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgwMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgc2xlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzbGVuICsgcC5wbGFjZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcyA9IGRhdGEuc2xpY2UocC5wbGFjZSwgc2xlbiArIHAucGxhY2UpO1xuICBpZiAoclswXSA9PT0gMCAmJiAoclsxXSAmIDB4ODApKSB7XG4gICAgciA9IHIuc2xpY2UoMSk7XG4gIH1cbiAgaWYgKHNbMF0gPT09IDAgJiYgKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG5cbiAgdGhpcy5yID0gbmV3IEJOKHIpO1xuICB0aGlzLnMgPSBuZXcgQk4ocyk7XG4gIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA8IDB4ODApIHtcbiAgICBhcnIucHVzaChsZW4pO1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgb2N0ZXRzID0gMSArIChNYXRoLmxvZyhsZW4pIC8gTWF0aC5MTjIgPj4+IDMpO1xuICBhcnIucHVzaChvY3RldHMgfCAweDgwKTtcbiAgd2hpbGUgKC0tb2N0ZXRzKSB7XG4gICAgYXJyLnB1c2goKGxlbiA+Pj4gKG9jdGV0cyA8PCAzKSkgJiAweGZmKTtcbiAgfVxuICBhcnIucHVzaChsZW4pO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvREVSID0gZnVuY3Rpb24gdG9ERVIoZW5jKSB7XG4gIHZhciByID0gdGhpcy5yLnRvQXJyYXkoKTtcbiAgdmFyIHMgPSB0aGlzLnMudG9BcnJheSgpO1xuXG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHJbMF0gJiAweDgwKVxuICAgIHIgPSBbIDAgXS5jb25jYXQocik7XG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHNbMF0gJiAweDgwKVxuICAgIHMgPSBbIDAgXS5jb25jYXQocyk7XG5cbiAgciA9IHJtUGFkZGluZyhyKTtcbiAgcyA9IHJtUGFkZGluZyhzKTtcblxuICB3aGlsZSAoIXNbMF0gJiYgIShzWzFdICYgMHg4MCkpIHtcbiAgICBzID0gcy5zbGljZSgxKTtcbiAgfVxuICB2YXIgYXJyID0gWyAweDAyIF07XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHIubGVuZ3RoKTtcbiAgYXJyID0gYXJyLmNvbmNhdChyKTtcbiAgYXJyLnB1c2goMHgwMik7XG4gIGNvbnN0cnVjdExlbmd0aChhcnIsIHMubGVuZ3RoKTtcbiAgdmFyIGJhY2tIYWxmID0gYXJyLmNvbmNhdChzKTtcbiAgdmFyIHJlcyA9IFsgMHgzMCBdO1xuICBjb25zdHJ1Y3RMZW5ndGgocmVzLCBiYWNrSGFsZi5sZW5ndGgpO1xuICByZXMgPSByZXMuY29uY2F0KGJhY2tIYWxmKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUREU0EoY3VydmUpIHtcbiAgYXNzZXJ0KGN1cnZlID09PSAnZWQyNTUxOScsICdvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyJyk7XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVERFNBKSlcbiAgICByZXR1cm4gbmV3IEVERFNBKGN1cnZlKTtcblxuICB2YXIgY3VydmUgPSBlbGxpcHRpYy5jdXJ2ZXNbY3VydmVdLmN1cnZlO1xuICB0aGlzLmN1cnZlID0gY3VydmU7XG4gIHRoaXMuZyA9IGN1cnZlLmc7XG4gIHRoaXMuZy5wcmVjb21wdXRlKGN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICB0aGlzLnBvaW50Q2xhc3MgPSBjdXJ2ZS5wb2ludCgpLmNvbnN0cnVjdG9yO1xuICB0aGlzLmVuY29kaW5nTGVuZ3RoID0gTWF0aC5jZWlsKGN1cnZlLm4uYml0TGVuZ3RoKCkgLyA4KTtcbiAgdGhpcy5oYXNoID0gaGFzaC5zaGE1MTI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRUREU0E7XG5cbi8qKlxuKiBAcGFyYW0ge0FycmF5fFN0cmluZ30gbWVzc2FnZSAtIG1lc3NhZ2UgYnl0ZXNcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd8S2V5UGFpcn0gc2VjcmV0IC0gc2VjcmV0IGJ5dGVzIG9yIGEga2V5cGFpclxuKiBAcmV0dXJucyB7U2lnbmF0dXJlfSAtIHNpZ25hdHVyZVxuKi9cbkVERFNBLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtZXNzYWdlLCBzZWNyZXQpIHtcbiAgbWVzc2FnZSA9IHBhcnNlQnl0ZXMobWVzc2FnZSk7XG4gIHZhciBrZXkgPSB0aGlzLmtleUZyb21TZWNyZXQoc2VjcmV0KTtcbiAgdmFyIHIgPSB0aGlzLmhhc2hJbnQoa2V5Lm1lc3NhZ2VQcmVmaXgoKSwgbWVzc2FnZSk7XG4gIHZhciBSID0gdGhpcy5nLm11bChyKTtcbiAgdmFyIFJlbmNvZGVkID0gdGhpcy5lbmNvZGVQb2ludChSKTtcbiAgdmFyIHNfID0gdGhpcy5oYXNoSW50KFJlbmNvZGVkLCBrZXkucHViQnl0ZXMoKSwgbWVzc2FnZSlcbiAgICAgICAgICAgICAgIC5tdWwoa2V5LnByaXYoKSk7XG4gIHZhciBTID0gci5hZGQoc18pLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbiAgcmV0dXJuIHRoaXMubWFrZVNpZ25hdHVyZSh7IFI6IFIsIFM6IFMsIFJlbmNvZGVkOiBSZW5jb2RlZCB9KTtcbn07XG5cbi8qKlxuKiBAcGFyYW0ge0FycmF5fSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xTaWduYXR1cmV9IHNpZyAtIHNpZyBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xQb2ludHxLZXlQYWlyfSBwdWIgLSBwdWJsaWMga2V5XG4qIEByZXR1cm5zIHtCb29sZWFufSAtIHRydWUgaWYgcHVibGljIGtleSBtYXRjaGVzIHNpZyBvZiBtZXNzYWdlXG4qL1xuRUREU0EucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcsIHB1Yikge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgc2lnID0gdGhpcy5tYWtlU2lnbmF0dXJlKHNpZyk7XG4gIHZhciBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMocHViKTtcbiAgdmFyIGggPSB0aGlzLmhhc2hJbnQoc2lnLlJlbmNvZGVkKCksIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKTtcbiAgdmFyIFNHID0gdGhpcy5nLm11bChzaWcuUygpKTtcbiAgdmFyIFJwbHVzQWggPSBzaWcuUigpLmFkZChrZXkucHViKCkubXVsKGgpKTtcbiAgcmV0dXJuIFJwbHVzQWguZXEoU0cpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KCkge1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICBoYXNoLnVwZGF0ZShhcmd1bWVudHNbaV0pO1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGhhc2guZGlnZXN0KCkpLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21TZWNyZXQgPSBmdW5jdGlvbiBrZXlGcm9tU2VjcmV0KHNlY3JldCkge1xuICByZXR1cm4gS2V5UGFpci5mcm9tU2VjcmV0KHRoaXMsIHNlY3JldCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUubWFrZVNpZ25hdHVyZSA9IGZ1bmN0aW9uIG1ha2VTaWduYXR1cmUoc2lnKSB7XG4gIGlmIChzaWcgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIHNpZztcbiAgcmV0dXJuIG5ldyBTaWduYXR1cmUodGhpcywgc2lnKTtcbn07XG5cbi8qKlxuKiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1qb3NlZnNzb24tZWRkc2EtZWQyNTUxOS0wMyNzZWN0aW9uLTUuMlxuKlxuKiBFRERTQSBkZWZpbmVzIG1ldGhvZHMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBwb2ludHMgYW5kIGludGVnZXJzLiBUaGVzZSBhcmVcbiogaGVscGVyIGNvbnZlbmllbmNlIG1ldGhvZHMsIHRoYXQgcGFzcyBhbG9uZyB0byB1dGlsaXR5IGZ1bmN0aW9ucyBpbXBsaWVkXG4qIHBhcmFtZXRlcnMuXG4qXG4qL1xuRUREU0EucHJvdG90eXBlLmVuY29kZVBvaW50ID0gZnVuY3Rpb24gZW5jb2RlUG9pbnQocG9pbnQpIHtcbiAgdmFyIGVuYyA9IHBvaW50LmdldFkoKS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xuICBlbmNbdGhpcy5lbmNvZGluZ0xlbmd0aCAtIDFdIHw9IHBvaW50LmdldFgoKS5pc09kZCgpID8gMHg4MCA6IDA7XG4gIHJldHVybiBlbmM7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcykge1xuICBieXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXMoYnl0ZXMpO1xuXG4gIHZhciBsYXN0SXggPSBieXRlcy5sZW5ndGggLSAxO1xuICB2YXIgbm9ybWVkID0gYnl0ZXMuc2xpY2UoMCwgbGFzdEl4KS5jb25jYXQoYnl0ZXNbbGFzdEl4XSAmIH4weDgwKTtcbiAgdmFyIHhJc09kZCA9IChieXRlc1tsYXN0SXhdICYgMHg4MCkgIT09IDA7XG5cbiAgdmFyIHkgPSB1dGlscy5pbnRGcm9tTEUobm9ybWVkKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnRGcm9tWSh5LCB4SXNPZGQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmVuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0pIHtcbiAgcmV0dXJuIG51bS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChieXRlcykge1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGJ5dGVzKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5pc1BvaW50ID0gZnVuY3Rpb24gaXNQb2ludCh2YWwpIHtcbiAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgdXRpbHMgPSBlbGxpcHRpYy51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gaW5zdGFuY2VcbiogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHB1YmxpYy9wcml2YXRlIGtleSBwYXJhbWV0ZXJzXG4qXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMuc2VjcmV0XSAtIHNlY3JldCBzZWVkIGJ5dGVzXG4qIEBwYXJhbSB7UG9pbnR9IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgKGFrYSBgQWAgaW4gZWRkc2EgdGVybXMpXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgZW5jb2RlZCBhcyBieXRlc1xuKlxuKi9cbmZ1bmN0aW9uIEtleVBhaXIoZWRkc2EsIHBhcmFtcykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG4gIHRoaXMuX3NlY3JldCA9IHBhcnNlQnl0ZXMocGFyYW1zLnNlY3JldCk7XG4gIGlmIChlZGRzYS5pc1BvaW50KHBhcmFtcy5wdWIpKVxuICAgIHRoaXMuX3B1YiA9IHBhcmFtcy5wdWI7XG4gIGVsc2VcbiAgICB0aGlzLl9wdWJCeXRlcyA9IHBhcnNlQnl0ZXMocGFyYW1zLnB1Yik7XG59XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWRkc2EsIHB1Yikge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgcHViOiBwdWIgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21TZWNyZXQgPSBmdW5jdGlvbiBmcm9tU2VjcmV0KGVkZHNhLCBzZWNyZXQpIHtcbiAgaWYgKHNlY3JldCBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHNlY3JldDtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHNlY3JldDogc2VjcmV0IH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2VjcmV0ID0gZnVuY3Rpb24gc2VjcmV0KCkge1xuICByZXR1cm4gdGhpcy5fc2VjcmV0O1xufTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YkJ5dGVzJywgZnVuY3Rpb24gcHViQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWInLCBmdW5jdGlvbiBwdWIoKSB7XG4gIGlmICh0aGlzLl9wdWJCeXRlcylcbiAgICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdkJ5dGVzJywgZnVuY3Rpb24gcHJpdkJ5dGVzKCkge1xuICB2YXIgZWRkc2EgPSB0aGlzLmVkZHNhO1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICB2YXIgbGFzdEl4ID0gZWRkc2EuZW5jb2RpbmdMZW5ndGggLSAxO1xuXG4gIHZhciBhID0gaGFzaC5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG4gIGFbMF0gJj0gMjQ4O1xuICBhW2xhc3RJeF0gJj0gMTI3O1xuICBhW2xhc3RJeF0gfD0gNjQ7XG5cbiAgcmV0dXJuIGE7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXYnLCBmdW5jdGlvbiBwcml2KCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ2hhc2gnLCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdtZXNzYWdlUHJlZml4JywgZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpIHtcbiAgcmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xufSk7XG5cbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgY2FuIG9ubHkgdmVyaWZ5Jyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLnNpZ24obWVzc2FnZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLnZlcmlmeShtZXNzYWdlLCBzaWcsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0U2VjcmV0ID0gZnVuY3Rpb24gZ2V0U2VjcmV0KGVuYykge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBpcyBwdWJsaWMgb25seScpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuc2VjcmV0KCksIGVuYyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoZW5jKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5wdWJCeXRlcygpLCBlbmMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBjYWNoZWRQcm9wZXJ0eSA9IHV0aWxzLmNhY2hlZFByb3BlcnR5O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xuXG4vKipcbiogQHBhcmFtIHtFRERTQX0gZWRkc2EgLSBlZGRzYSBpbnN0YW5jZVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxPYmplY3R9IHNpZyAtXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fFBvaW50fSBbc2lnLlJdIC0gUiBwb2ludCBhcyBQb2ludCBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxibn0gW3NpZy5TXSAtIFMgc2NhbGFyIGFzIGJuIG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlJlbmNvZGVkXSAtIFIgcG9pbnQgZW5jb2RlZFxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5TZW5jb2RlZF0gLSBTIHNjYWxhciBlbmNvZGVkXG4qL1xuZnVuY3Rpb24gU2lnbmF0dXJlKGVkZHNhLCBzaWcpIHtcbiAgdGhpcy5lZGRzYSA9IGVkZHNhO1xuXG4gIGlmICh0eXBlb2Ygc2lnICE9PSAnb2JqZWN0JylcbiAgICBzaWcgPSBwYXJzZUJ5dGVzKHNpZyk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc2lnKSkge1xuICAgIHNpZyA9IHtcbiAgICAgIFI6IHNpZy5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCksXG4gICAgICBTOiBzaWcuc2xpY2UoZWRkc2EuZW5jb2RpbmdMZW5ndGgpXG4gICAgfTtcbiAgfVxuXG4gIGFzc2VydChzaWcuUiAmJiBzaWcuUywgJ1NpZ25hdHVyZSB3aXRob3V0IFIgb3IgUycpO1xuXG4gIGlmIChlZGRzYS5pc1BvaW50KHNpZy5SKSlcbiAgICB0aGlzLl9SID0gc2lnLlI7XG4gIGlmIChzaWcuUyBpbnN0YW5jZW9mIEJOKVxuICAgIHRoaXMuX1MgPSBzaWcuUztcblxuICB0aGlzLl9SZW5jb2RlZCA9IEFycmF5LmlzQXJyYXkoc2lnLlIpID8gc2lnLlIgOiBzaWcuUmVuY29kZWQ7XG4gIHRoaXMuX1NlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUykgPyBzaWcuUyA6IHNpZy5TZW5jb2RlZDtcbn1cblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUycsIGZ1bmN0aW9uIFMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1InLCBmdW5jdGlvbiBSKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLlJlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1JlbmNvZGVkJywgZnVuY3Rpb24gUmVuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTZW5jb2RlZCcsIGZ1bmN0aW9uIFNlbmNvZGVkKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpO1xufSk7XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9CeXRlcyA9IGZ1bmN0aW9uIHRvQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSk7XG59O1xuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24gdG9IZXgoKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy50b0J5dGVzKCksICdoZXgnKS50b1VwcGVyQ2FzZSgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaWduYXR1cmU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzknLFxuICAgICAgICAnZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVmYTZmZmVlOWZlZDY5NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYScsXG4gICAgICAgICc5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZCcsXG4gICAgICAgICc5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZhMDBkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMCcsXG4gICAgICAgICc1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3JyxcbiAgICAgICAgJzdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGEnLFxuICAgICAgICAnNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjUnLFxuICAgICAgICAnN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjYnLFxuICAgICAgICAnNmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGInLFxuICAgICAgICAnZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzAnLFxuICAgICAgICAnNzM3MGY5MWNmYjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMScsXG4gICAgICAgICcxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZicsXG4gICAgICAgICc2N2M4NzZkMDZmM2UwNmRlMWRhZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2JyxcbiAgICAgICAgJzM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NicsXG4gICAgICAgICc0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxJyxcbiAgICAgICAgJzFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzJyxcbiAgICAgICAgJ2JlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlJyxcbiAgICAgICAgJ2IzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzJyxcbiAgICAgICAgJzdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdjNzMxMTFmNGNjMGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxJyxcbiAgICAgICAgJ2U4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiJyxcbiAgICAgICAgJzY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNjMjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMCcsXG4gICAgICAgICc2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInXG4gICAgICBdXG4gICAgXVxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCcsXG4gICAgICAgICdkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYicsXG4gICAgICAgICdkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0JyxcbiAgICAgICAgJzQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmJyxcbiAgICAgICAgJzJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGInLFxuICAgICAgICAnMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzknLFxuICAgICAgICAnMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYicsXG4gICAgICAgICdkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQnLFxuICAgICAgICAnOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDcnLFxuICAgICAgICAnY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUnLFxuICAgICAgICAnOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViJyxcbiAgICAgICAgJzNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhJyxcbiAgICAgICAgJ2UzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlJyxcbiAgICAgICAgJ2M1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5JyxcbiAgICAgICAgJ2U0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmJyxcbiAgICAgICAgJzhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjJyxcbiAgICAgICAgJ2Q1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMnLFxuICAgICAgICAnNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCcsXG4gICAgICAgICdmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNicsXG4gICAgICAgICc4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxJyxcbiAgICAgICAgJ2YzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3JyxcbiAgICAgICAgJzRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NicsXG4gICAgICAgICdkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0JyxcbiAgICAgICAgJzYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MicsXG4gICAgICAgICdhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0JyxcbiAgICAgICAgJzMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NicsXG4gICAgICAgICdiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCcsXG4gICAgICAgICdiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmJyxcbiAgICAgICAgJzIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEnLFxuICAgICAgICAnNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYnLFxuICAgICAgICAnOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQnLFxuICAgICAgICAnMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYnLFxuICAgICAgICAnZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEnLFxuICAgICAgICAnMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEnLFxuICAgICAgICAnY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MycsXG4gICAgICAgICdjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3JyxcbiAgICAgICAgJ2QzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkJyxcbiAgICAgICAgJ2NkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYnLFxuICAgICAgICAnNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMnLFxuICAgICAgICAnYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUnLFxuICAgICAgICAnYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMnLFxuICAgICAgICAnNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCcsXG4gICAgICAgICc5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknXG4gICAgICBdXG4gICAgXVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSBleHBvcnRzO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBtaW5Bc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgbWluVXRpbHMgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzJyk7XG5cbnV0aWxzLmFzc2VydCA9IG1pbkFzc2VydDtcbnV0aWxzLnRvQXJyYXkgPSBtaW5VdGlscy50b0FycmF5O1xudXRpbHMuemVybzIgPSBtaW5VdGlscy56ZXJvMjtcbnV0aWxzLnRvSGV4ID0gbWluVXRpbHMudG9IZXg7XG51dGlscy5lbmNvZGUgPSBtaW5VdGlscy5lbmNvZGU7XG5cbi8vIFJlcHJlc2VudCBudW0gaW4gYSB3LU5BRiBmb3JtXG5mdW5jdGlvbiBnZXROQUYobnVtLCB3KSB7XG4gIHZhciBuYWYgPSBbXTtcbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuICB3aGlsZSAoay5jbXBuKDEpID49IDApIHtcbiAgICB2YXIgejtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICB2YXIgbW9kID0gay5hbmRsbih3cyAtIDEpO1xuICAgICAgaWYgKG1vZCA+ICh3cyA+PiAxKSAtIDEpXG4gICAgICAgIHogPSAod3MgPj4gMSkgLSBtb2Q7XG4gICAgICBlbHNlXG4gICAgICAgIHogPSBtb2Q7XG4gICAgICBrLmlzdWJuKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG4gICAgbmFmLnB1c2goeik7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24sIHNoaWZ0IGJ5IHdvcmQgaWYgcG9zc2libGVcbiAgICB2YXIgc2hpZnQgPSAoay5jbXBuKDApICE9PSAwICYmIGsuYW5kbG4od3MgLSAxKSA9PT0gMCkgPyAodyArIDEpIDogMTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHNoaWZ0OyBpKyspXG4gICAgICBuYWYucHVzaCgwKTtcbiAgICBrLml1c2hybihzaGlmdCk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXVxuICBdO1xuXG4gIGsxID0gazEuY2xvbmUoKTtcbiAgazIgPSBrMi5jbG9uZSgpO1xuICB2YXIgZDEgPSAwO1xuICB2YXIgZDIgPSAwO1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG5cbiAgICAvLyBGaXJzdCBwaGFzZVxuICAgIHZhciBtMTQgPSAoazEuYW5kbG4oMykgKyBkMSkgJiAzO1xuICAgIHZhciBtMjQgPSAoazIuYW5kbG4oMykgKyBkMikgJiAzO1xuICAgIGlmIChtMTQgPT09IDMpXG4gICAgICBtMTQgPSAtMTtcbiAgICBpZiAobTI0ID09PSAzKVxuICAgICAgbTI0ID0gLTE7XG4gICAgdmFyIHUxO1xuICAgIGlmICgobTE0ICYgMSkgPT09IDApIHtcbiAgICAgIHUxID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG04ID0gKGsyLmFuZGxuKDcpICsgZDIpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0xNCA9PT0gMilcbiAgICAgICAgdTIgPSAtbTI0O1xuICAgICAgZWxzZVxuICAgICAgICB1MiA9IG0yNDtcbiAgICB9XG4gICAganNmWzFdLnB1c2godTIpO1xuXG4gICAgLy8gU2Vjb25kIHBoYXNlXG4gICAgaWYgKDIgKiBkMSA9PT0gdTEgKyAxKVxuICAgICAgZDEgPSAxIC0gZDE7XG4gICAgaWYgKDIgKiBkMiA9PT0gdTIgKyAxKVxuICAgICAgZDIgPSAxIC0gZDI7XG4gICAgazEuaXVzaHJuKDEpO1xuICAgIGsyLml1c2hybigxKTtcbiAgfVxuXG4gIHJldHVybiBqc2Y7XG59XG51dGlscy5nZXRKU0YgPSBnZXRKU0Y7XG5cbmZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaiwgbmFtZSwgY29tcHV0ZXIpIHtcbiAgdmFyIGtleSA9ICdfJyArIG5hbWU7XG4gIG9iai5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB1bmRlZmluZWQgPyB0aGlzW2tleV0gOlxuICAgICAgICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIl9hcmdzXCI6IFtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgICAgIFwic2NvcGVcIjogbnVsbCxcbiAgICAgICAgXCJlc2NhcGVkTmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgICAgIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgICAgICBcInNwZWNcIjogXCI+PTYuMC4wIDw3LjAuMFwiLFxuICAgICAgICBcInR5cGVcIjogXCJyYW5nZVwiXG4gICAgICB9LFxuICAgICAgXCIvVXNlcnMvbHV0b3ZpY2gvUHJvamVjdHMvbmVvNGotamF2YXNjcmlwdC1kcml2ZXIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnblwiXG4gICAgXVxuICBdLFxuICBcIl9mcm9tXCI6IFwiZWxsaXB0aWNAPj02LjAuMCA8Ny4wLjBcIixcbiAgXCJfaWRcIjogXCJlbGxpcHRpY0A2LjQuMFwiLFxuICBcIl9pbkNhY2hlXCI6IHRydWUsXG4gIFwiX2luc3RhbGxhYmxlXCI6IHRydWUsXG4gIFwiX2xvY2F0aW9uXCI6IFwiL2VsbGlwdGljXCIsXG4gIFwiX25vZGVWZXJzaW9uXCI6IFwiNy4wLjBcIixcbiAgXCJfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbFwiOiB7XG4gICAgXCJob3N0XCI6IFwicGFja2FnZXMtMTgtZWFzdC5pbnRlcm5hbC5ucG1qcy5jb21cIixcbiAgICBcInRtcFwiOiBcInRtcC9lbGxpcHRpYy02LjQuMC50Z3pfMTQ4Nzc5ODg2NjQyOF8wLjMwNTEwNjIwMTkwNzYxOTgzXCJcbiAgfSxcbiAgXCJfbnBtVXNlclwiOiB7XG4gICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiLFxuICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiXG4gIH0sXG4gIFwiX25wbVZlcnNpb25cIjogXCIzLjEwLjhcIixcbiAgXCJfcGhhbnRvbUNoaWxkcmVuXCI6IHt9LFxuICBcIl9yZXF1ZXN0ZWRcIjoge1xuICAgIFwicmF3XCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gICAgXCJzY29wZVwiOiBudWxsLFxuICAgIFwiZXNjYXBlZE5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICAgIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gICAgXCJyYXdTcGVjXCI6IFwiXjYuMC4wXCIsXG4gICAgXCJzcGVjXCI6IFwiPj02LjAuMCA8Ny4wLjBcIixcbiAgICBcInR5cGVcIjogXCJyYW5nZVwiXG4gIH0sXG4gIFwiX3JlcXVpcmVkQnlcIjogW1xuICAgIFwiL2Jyb3dzZXJpZnktc2lnblwiLFxuICAgIFwiL2NyZWF0ZS1lY2RoXCJcbiAgXSxcbiAgXCJfcmVzb2x2ZWRcIjogXCJodHRwOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi40LjAudGd6XCIsXG4gIFwiX3NoYXN1bVwiOiBcImNhYzlhZjg3NjJjODU4MzYxODcwMDNjOGRmZTE5M2U1ZTJlYWU1ZGZcIixcbiAgXCJfc2hyaW5rd3JhcFwiOiBudWxsLFxuICBcIl9zcGVjXCI6IFwiZWxsaXB0aWNAXjYuMC4wXCIsXG4gIFwiX3doZXJlXCI6IFwiL1VzZXJzL2x1dG92aWNoL1Byb2plY3RzL25lbzRqLWphdmFzY3JpcHQtZHJpdmVyL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ25cIixcbiAgXCJhdXRob3JcIjoge1xuICAgIFwibmFtZVwiOiBcIkZlZG9yIEluZHV0bnlcIixcbiAgICBcImVtYWlsXCI6IFwiZmVkb3JAaW5kdXRueS5jb21cIlxuICB9LFxuICBcImJ1Z3NcIjoge1xuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWMvaXNzdWVzXCJcbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiYm4uanNcIjogXCJeNC40LjBcIixcbiAgICBcImJyb3JhbmRcIjogXCJeMS4wLjFcIixcbiAgICBcImhhc2guanNcIjogXCJeMS4wLjBcIixcbiAgICBcImhtYWMtZHJiZ1wiOiBcIl4xLjAuMFwiLFxuICAgIFwiaW5oZXJpdHNcIjogXCJeMi4wLjFcIixcbiAgICBcIm1pbmltYWxpc3RpYy1hc3NlcnRcIjogXCJeMS4wLjBcIixcbiAgICBcIm1pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHNcIjogXCJeMS4wLjBcIlxuICB9LFxuICBcImRlc2NyaXB0aW9uXCI6IFwiRUMgY3J5cHRvZ3JhcGh5XCIsXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJyZnNcIjogXCJeMS40LjNcIixcbiAgICBcImNvdmVyYWxsc1wiOiBcIl4yLjExLjNcIixcbiAgICBcImdydW50XCI6IFwiXjAuNC41XCIsXG4gICAgXCJncnVudC1icm93c2VyaWZ5XCI6IFwiXjUuMC4wXCIsXG4gICAgXCJncnVudC1jbGlcIjogXCJeMS4yLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29ubmVjdFwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi1jb3B5XCI6IFwiXjEuMC4wXCIsXG4gICAgXCJncnVudC1jb250cmliLXVnbGlmeVwiOiBcIl4xLjAuMVwiLFxuICAgIFwiZ3J1bnQtbW9jaGEtaXN0YW5idWxcIjogXCJeMy4wLjFcIixcbiAgICBcImdydW50LXNhdWNlbGFic1wiOiBcIl44LjYuMlwiLFxuICAgIFwiaXN0YW5idWxcIjogXCJeMC40LjJcIixcbiAgICBcImpzY3NcIjogXCJeMi45LjBcIixcbiAgICBcImpzaGludFwiOiBcIl4yLjYuMFwiLFxuICAgIFwibW9jaGFcIjogXCJeMi4xLjBcIlxuICB9LFxuICBcImRpcmVjdG9yaWVzXCI6IHt9LFxuICBcImRpc3RcIjoge1xuICAgIFwic2hhc3VtXCI6IFwiY2FjOWFmODc2MmM4NTgzNjE4NzAwM2M4ZGZlMTkzZTVlMmVhZTVkZlwiLFxuICAgIFwidGFyYmFsbFwiOiBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi40LjAudGd6XCJcbiAgfSxcbiAgXCJmaWxlc1wiOiBbXG4gICAgXCJsaWJcIlxuICBdLFxuICBcImdpdEhlYWRcIjogXCI2YjBkMmI3NmNhYWU5MTQ3MTY0OWM4ZTIxZjBiMWQzYmEwZjk2MDkwXCIsXG4gIFwiaG9tZXBhZ2VcIjogXCJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpY1wiLFxuICBcImtleXdvcmRzXCI6IFtcbiAgICBcIkVDXCIsXG4gICAgXCJFbGxpcHRpY1wiLFxuICAgIFwiY3VydmVcIixcbiAgICBcIkNyeXB0b2dyYXBoeVwiXG4gIF0sXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcIm1haW5cIjogXCJsaWIvZWxsaXB0aWMuanNcIixcbiAgXCJtYWludGFpbmVyc1wiOiBbXG4gICAge1xuICAgICAgXCJuYW1lXCI6IFwiaW5kdXRueVwiLFxuICAgICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCJcbiAgICB9XG4gIF0sXG4gIFwibmFtZVwiOiBcImVsbGlwdGljXCIsXG4gIFwib3B0aW9uYWxEZXBlbmRlbmNpZXNcIjoge30sXG4gIFwicmVhZG1lXCI6IFwiRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kIVwiLFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiZ2l0K3NzaDovL2dpdEBnaXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWMuZ2l0XCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImpzY3NcIjogXCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsXG4gICAgXCJqc2hpbnRcIjogXCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsXG4gICAgXCJsaW50XCI6IFwibnBtIHJ1biBqc2NzICYmIG5wbSBydW4ganNoaW50XCIsXG4gICAgXCJ0ZXN0XCI6IFwibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdW5pdFwiLFxuICAgIFwidW5pdFwiOiBcImlzdGFuYnVsIHRlc3QgX21vY2hhIC0tcmVwb3J0ZXI9c3BlYyB0ZXN0L2luZGV4LmpzXCIsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiZ3J1bnQgZGlzdCAmJiBnaXQgYWRkIGRpc3QvXCJcbiAgfSxcbiAgXCJ2ZXJzaW9uXCI6IFwiNi40LjBcIlxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzIHx8IHt9O1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG5FdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbihuKSB7XG4gIGlmICghaXNOdW1iZXIobikgfHwgbiA8IDAgfHwgaXNOYU4obikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIGlmICghdGhpcy5fZXZlbnRzLmVycm9yIHx8XG4gICAgICAgIChpc09iamVjdCh0aGlzLl9ldmVudHMuZXJyb3IpICYmICF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSkge1xuICAgICAgZXIgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkIFwiZXJyb3JcIiBldmVudC4gKCcgKyBlciArICcpJyk7XG4gICAgICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChpc1VuZGVmaW5lZChoYW5kbGVyKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHNsb3dlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgbGlzdGVuZXJzID0gaGFuZGxlci5zbGljZSgpO1xuICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG07XG5cbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgaWYgKHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lcilcbiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgaXNGdW5jdGlvbihsaXN0ZW5lci5saXN0ZW5lcikgP1xuICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgZWxzZSBpZiAoaXNPYmplY3QodGhpcy5fZXZlbnRzW3R5cGVdKSlcbiAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuICBlbHNlXG4gICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdO1xuXG4gIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9tYXhMaXN0ZW5lcnMpKSB7XG4gICAgICBtID0gdGhpcy5fbWF4TGlzdGVuZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfVxuXG4gICAgaWYgKG0gJiYgbSA+IDAgJiYgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCA+IG0pIHtcbiAgICAgIHRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArXG4gICAgICAgICAgICAgICAgICAgICdsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAnVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUudHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBpbiBJRSAxMFxuICAgICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIHZhciBmaXJlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGcoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBnKTtcblxuICAgIGlmICghZmlyZWQpIHtcbiAgICAgIGZpcmVkID0gdHJ1ZTtcbiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgZy5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICB0aGlzLm9uKHR5cGUsIGcpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWRcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXR1cm4gdGhpcztcblxuICBsaXN0ID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuICBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgcG9zaXRpb24gPSAtMTtcblxuICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHxcbiAgICAgIChpc0Z1bmN0aW9uKGxpc3QubGlzdGVuZXIpICYmIGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG5cbiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkge1xuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tID4gMDspIHtcbiAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fFxuICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbGlzdC5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdC5zcGxpY2UocG9zaXRpb24sIDEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGtleSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBmb3IgKGtleSBpbiB0aGlzLl9ldmVudHMpIHtcbiAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgfSBlbHNlIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAvLyBMSUZPIG9yZGVyXG4gICAgd2hpbGUgKGxpc3RlbmVycy5sZW5ndGgpXG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tsaXN0ZW5lcnMubGVuZ3RoIC0gMV0pO1xuICB9XG4gIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIHJldDtcbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXQgPSBbXTtcbiAgZWxzZSBpZiAoaXNGdW5jdGlvbih0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIHJldCA9IFt0aGlzLl9ldmVudHNbdHlwZV1dO1xuICBlbHNlXG4gICAgcmV0ID0gdGhpcy5fZXZlbnRzW3R5cGVdLnNsaWNlKCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIGlmICh0aGlzLl9ldmVudHMpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKVxuICAgICAgcmV0dXJuIDE7XG4gICAgZWxzZSBpZiAoZXZsaXN0ZW5lcilcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xufTtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuIiwidmFyIG1kNSA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoL21kNScpXG5tb2R1bGUuZXhwb3J0cyA9IEVWUF9CeXRlc1RvS2V5XG5mdW5jdGlvbiBFVlBfQnl0ZXNUb0tleSAocGFzc3dvcmQsIHNhbHQsIGtleUxlbiwgaXZMZW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSB7XG4gICAgcGFzc3dvcmQgPSBuZXcgQnVmZmVyKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgfVxuICBpZiAoc2FsdCAmJiAhQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSB7XG4gICAgc2FsdCA9IG5ldyBCdWZmZXIoc2FsdCwgJ2JpbmFyeScpXG4gIH1cbiAga2V5TGVuID0ga2V5TGVuIC8gOFxuICBpdkxlbiA9IGl2TGVuIHx8IDBcbiAgdmFyIGtpID0gMFxuICB2YXIgaWkgPSAwXG4gIHZhciBrZXkgPSBuZXcgQnVmZmVyKGtleUxlbilcbiAgdmFyIGl2ID0gbmV3IEJ1ZmZlcihpdkxlbilcbiAgdmFyIGFkZG1kID0gMFxuICB2YXIgbWRfYnVmXG4gIHZhciBpXG4gIHZhciBidWZzID0gW11cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoYWRkbWQrKyA+IDApIHtcbiAgICAgIGJ1ZnMucHVzaChtZF9idWYpXG4gICAgfVxuICAgIGJ1ZnMucHVzaChwYXNzd29yZClcbiAgICBpZiAoc2FsdCkge1xuICAgICAgYnVmcy5wdXNoKHNhbHQpXG4gICAgfVxuICAgIG1kX2J1ZiA9IG1kNShCdWZmZXIuY29uY2F0KGJ1ZnMpKVxuICAgIGJ1ZnMgPSBbXVxuICAgIGkgPSAwXG4gICAgaWYgKGtleUxlbiA+IDApIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChrZXlMZW4gPT09IDApIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID09PSBtZF9idWYubGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBrZXlba2krK10gPSBtZF9idWZbaV1cbiAgICAgICAga2V5TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdkxlbiA+IDAgJiYgaSAhPT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgaWYgKGl2TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaXZbaWkrK10gPSBtZF9idWZbaV1cbiAgICAgICAgaXZMZW4tLVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleUxlbiA9PT0gMCAmJiBpdkxlbiA9PT0gMCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG1kX2J1Zi5sZW5ndGg7IGkrKykge1xuICAgIG1kX2J1ZltpXSA9IDBcbiAgfVxuICByZXR1cm4ge1xuICAgIGtleToga2V5LFxuICAgIGl2OiBpdlxuICB9XG59XG4iLCJ2YXIgaGFzaCA9IGV4cG9ydHM7XG5cbmhhc2gudXRpbHMgPSByZXF1aXJlKCcuL2hhc2gvdXRpbHMnKTtcbmhhc2guY29tbW9uID0gcmVxdWlyZSgnLi9oYXNoL2NvbW1vbicpO1xuaGFzaC5zaGEgPSByZXF1aXJlKCcuL2hhc2gvc2hhJyk7XG5oYXNoLnJpcGVtZCA9IHJlcXVpcmUoJy4vaGFzaC9yaXBlbWQnKTtcbmhhc2guaG1hYyA9IHJlcXVpcmUoJy4vaGFzaC9obWFjJyk7XG5cbi8vIFByb3h5IGhhc2ggZnVuY3Rpb25zIHRvIHRoZSBtYWluIG9iamVjdFxuaGFzaC5zaGExID0gaGFzaC5zaGEuc2hhMTtcbmhhc2guc2hhMjU2ID0gaGFzaC5zaGEuc2hhMjU2O1xuaGFzaC5zaGEyMjQgPSBoYXNoLnNoYS5zaGEyMjQ7XG5oYXNoLnNoYTM4NCA9IGhhc2guc2hhLnNoYTM4NDtcbmhhc2guc2hhNTEyID0gaGFzaC5zaGEuc2hhNTEyO1xuaGFzaC5yaXBlbWQxNjAgPSBoYXNoLnJpcGVtZC5yaXBlbWQxNjA7XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBCbG9ja0hhc2goKSB7XG4gIHRoaXMucGVuZGluZyA9IG51bGw7XG4gIHRoaXMucGVuZGluZ1RvdGFsID0gMDtcbiAgdGhpcy5ibG9ja1NpemUgPSB0aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZTtcbiAgdGhpcy5vdXRTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplO1xuICB0aGlzLmhtYWNTdHJlbmd0aCA9IHRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoO1xuICB0aGlzLnBhZExlbmd0aCA9IHRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoIC8gODtcbiAgdGhpcy5lbmRpYW4gPSAnYmlnJztcblxuICB0aGlzLl9kZWx0YTggPSB0aGlzLmJsb2NrU2l6ZSAvIDg7XG4gIHRoaXMuX2RlbHRhMzIgPSB0aGlzLmJsb2NrU2l6ZSAvIDMyO1xufVxuZXhwb3J0cy5CbG9ja0hhc2ggPSBCbG9ja0hhc2g7XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIC8vIENvbnZlcnQgbWVzc2FnZSB0byBhcnJheSwgcGFkIGl0LCBhbmQgam9pbiBpbnRvIDMyYml0IGJsb2Nrc1xuICBtc2cgPSB1dGlscy50b0FycmF5KG1zZywgZW5jKTtcbiAgaWYgKCF0aGlzLnBlbmRpbmcpXG4gICAgdGhpcy5wZW5kaW5nID0gbXNnO1xuICBlbHNlXG4gICAgdGhpcy5wZW5kaW5nID0gdGhpcy5wZW5kaW5nLmNvbmNhdChtc2cpO1xuICB0aGlzLnBlbmRpbmdUb3RhbCArPSBtc2cubGVuZ3RoO1xuXG4gIC8vIEVub3VnaCBkYXRhLCB0cnkgdXBkYXRpbmdcbiAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPj0gdGhpcy5fZGVsdGE4KSB7XG4gICAgbXNnID0gdGhpcy5wZW5kaW5nO1xuXG4gICAgLy8gUHJvY2VzcyBwZW5kaW5nIGRhdGEgaW4gYmxvY2tzXG4gICAgdmFyIHIgPSBtc2cubGVuZ3RoICUgdGhpcy5fZGVsdGE4O1xuICAgIHRoaXMucGVuZGluZyA9IG1zZy5zbGljZShtc2cubGVuZ3RoIC0gciwgbXNnLmxlbmd0aCk7XG4gICAgaWYgKHRoaXMucGVuZGluZy5sZW5ndGggPT09IDApXG4gICAgICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuXG4gICAgbXNnID0gdXRpbHMuam9pbjMyKG1zZywgMCwgbXNnLmxlbmd0aCAtIHIsIHRoaXMuZW5kaWFuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gdGhpcy5fZGVsdGEzMilcbiAgICAgIHRoaXMuX3VwZGF0ZShtc2csIGksIGkgKyB0aGlzLl9kZWx0YTMyKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMudXBkYXRlKHRoaXMuX3BhZCgpKTtcbiAgYXNzZXJ0KHRoaXMucGVuZGluZyA9PT0gbnVsbCk7XG5cbiAgcmV0dXJuIHRoaXMuX2RpZ2VzdChlbmMpO1xufTtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gcGFkKCkge1xuICB2YXIgbGVuID0gdGhpcy5wZW5kaW5nVG90YWw7XG4gIHZhciBieXRlcyA9IHRoaXMuX2RlbHRhODtcbiAgdmFyIGsgPSBieXRlcyAtICgobGVuICsgdGhpcy5wYWRMZW5ndGgpICUgYnl0ZXMpO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGsgKyB0aGlzLnBhZExlbmd0aCk7XG4gIHJlc1swXSA9IDB4ODA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgazsgaSsrKVxuICAgIHJlc1tpXSA9IDA7XG5cbiAgLy8gQXBwZW5kIGxlbmd0aFxuICBsZW4gPDw9IDM7XG4gIGlmICh0aGlzLmVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICBmb3IgKHZhciB0ID0gODsgdCA8IHRoaXMucGFkTGVuZ3RoOyB0KyspXG4gICAgICByZXNbaSsrXSA9IDA7XG5cbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMTYpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gIH0gZWxzZSB7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMTYpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuXG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG4iLCJ2YXIgaG1hYyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnLi4vaGFzaCcpO1xudmFyIHV0aWxzID0gaGFzaC51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEhtYWMoaGFzaCwga2V5LCBlbmMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWMpKVxuICAgIHJldHVybiBuZXcgSG1hYyhoYXNoLCBrZXksIGVuYyk7XG4gIHRoaXMuSGFzaCA9IGhhc2g7XG4gIHRoaXMuYmxvY2tTaXplID0gaGFzaC5ibG9ja1NpemUgLyA4O1xuICB0aGlzLm91dFNpemUgPSBoYXNoLm91dFNpemUgLyA4O1xuICB0aGlzLmlubmVyID0gbnVsbDtcbiAgdGhpcy5vdXRlciA9IG51bGw7XG5cbiAgdGhpcy5faW5pdCh1dGlscy50b0FycmF5KGtleSwgZW5jKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWM7XG5cbkhtYWMucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChrZXkpIHtcbiAgLy8gU2hvcnRlbiBrZXksIGlmIG5lZWRlZFxuICBpZiAoa2V5Lmxlbmd0aCA+IHRoaXMuYmxvY2tTaXplKVxuICAgIGtleSA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KS5kaWdlc3QoKTtcbiAgYXNzZXJ0KGtleS5sZW5ndGggPD0gdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIEFkZCBwYWRkaW5nIHRvIGtleVxuICBmb3IgKHZhciBpID0ga2V5Lmxlbmd0aDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAga2V5LnB1c2goMCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4MzY7XG4gIHRoaXMuaW5uZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG5cbiAgLy8gMHgzNiBeIDB4NWMgPSAweDZhXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKVxuICAgIGtleVtpXSBePSAweDZhO1xuICB0aGlzLm91dGVyID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpO1xufTtcblxuSG1hYy5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgZW5jKSB7XG4gIHRoaXMuaW5uZXIudXBkYXRlKG1zZywgZW5jKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5IbWFjLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpO1xuICByZXR1cm4gdGhpcy5vdXRlci5kaWdlc3QoZW5jKTtcbn07XG4iLCJ2YXIgaGFzaCA9IHJlcXVpcmUoJy4uL2hhc2gnKTtcbnZhciB1dGlscyA9IGhhc2gudXRpbHM7XG5cbnZhciByb3RsMzIgPSB1dGlscy5yb3RsMzI7XG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl8zID0gdXRpbHMuc3VtMzJfMztcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBCbG9ja0hhc2ggPSBoYXNoLmNvbW1vbi5CbG9ja0hhc2g7XG5cbmZ1bmN0aW9uIFJJUEVNRDE2MCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJJUEVNRDE2MCkpXG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcblxuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5lbmRpYW4gPSAnbGl0dGxlJztcbn1cbnV0aWxzLmluaGVyaXRzKFJJUEVNRDE2MCwgQmxvY2tIYXNoKTtcbmV4cG9ydHMucmlwZW1kMTYwID0gUklQRU1EMTYwO1xuXG5SSVBFTUQxNjAuYmxvY2tTaXplID0gNTEyO1xuUklQRU1EMTYwLm91dFNpemUgPSAxNjA7XG5SSVBFTUQxNjAuaG1hY1N0cmVuZ3RoID0gMTkyO1xuUklQRU1EMTYwLnBhZExlbmd0aCA9IDY0O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgQSA9IHRoaXMuaFswXTtcbiAgdmFyIEIgPSB0aGlzLmhbMV07XG4gIHZhciBDID0gdGhpcy5oWzJdO1xuICB2YXIgRCA9IHRoaXMuaFszXTtcbiAgdmFyIEUgPSB0aGlzLmhbNF07XG4gIHZhciBBaCA9IEE7XG4gIHZhciBCaCA9IEI7XG4gIHZhciBDaCA9IEM7XG4gIHZhciBEaCA9IEQ7XG4gIHZhciBFaCA9IEU7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7IGorKykge1xuICAgIHZhciBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQSwgZihqLCBCLCBDLCBEKSwgbXNnW3Jbal0gKyBzdGFydF0sIEsoaikpLFxuICAgICAgICBzW2pdKSxcbiAgICAgIEUpO1xuICAgIEEgPSBFO1xuICAgIEUgPSBEO1xuICAgIEQgPSByb3RsMzIoQywgMTApO1xuICAgIEMgPSBCO1xuICAgIEIgPSBUO1xuICAgIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBaCwgZig3OSAtIGosIEJoLCBDaCwgRGgpLCBtc2dbcmhbal0gKyBzdGFydF0sIEtoKGopKSxcbiAgICAgICAgc2hbal0pLFxuICAgICAgRWgpO1xuICAgIEFoID0gRWg7XG4gICAgRWggPSBEaDtcbiAgICBEaCA9IHJvdGwzMihDaCwgMTApO1xuICAgIENoID0gQmg7XG4gICAgQmggPSBUO1xuICB9XG4gIFQgPSBzdW0zMl8zKHRoaXMuaFsxXSwgQywgRGgpO1xuICB0aGlzLmhbMV0gPSBzdW0zMl8zKHRoaXMuaFsyXSwgRCwgRWgpO1xuICB0aGlzLmhbMl0gPSBzdW0zMl8zKHRoaXMuaFszXSwgRSwgQWgpO1xuICB0aGlzLmhbM10gPSBzdW0zMl8zKHRoaXMuaFs0XSwgQSwgQmgpO1xuICB0aGlzLmhbNF0gPSBzdW0zMl8zKHRoaXMuaFswXSwgQiwgQ2gpO1xuICB0aGlzLmhbMF0gPSBUO1xufTtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdsaXR0bGUnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xufTtcblxuZnVuY3Rpb24gZihqLCB4LCB5LCB6KSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiB4IF4geSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuICh4ICYgeSkgfCAoKH54KSAmIHopO1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAoeCB8ICh+eSkpIF4gejtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gKHggJiB6KSB8ICh5ICYgKH56KSk7XG4gIGVsc2VcbiAgICByZXR1cm4geCBeICh5IHwgKH56KSk7XG59XG5cbmZ1bmN0aW9uIEsoaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YTgyNzk5OTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZWQ5ZWJhMTtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg4ZjFiYmNkYztcbiAgZWxzZVxuICAgIHJldHVybiAweGE5NTNmZDRlO1xufVxuXG5mdW5jdGlvbiBLaChqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDUwYTI4YmU2O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVjNGRkMTI0O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZkNzAzZWYzO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDdhNmQ3NmU5O1xuICBlbHNlXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG59XG5cbnZhciByID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dO1xuXG52YXIgcmggPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl07XG5cbnZhciBzID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXTtcblxudmFyIHNoID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXTtcbiIsInZhciBoYXNoID0gcmVxdWlyZSgnLi4vaGFzaCcpO1xudmFyIHV0aWxzID0gaGFzaC51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciByb3RyMzIgPSB1dGlscy5yb3RyMzI7XG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfNCA9IHV0aWxzLnN1bTMyXzQ7XG52YXIgc3VtMzJfNSA9IHV0aWxzLnN1bTMyXzU7XG52YXIgcm90cjY0X2hpID0gdXRpbHMucm90cjY0X2hpO1xudmFyIHJvdHI2NF9sbyA9IHV0aWxzLnJvdHI2NF9sbztcbnZhciBzaHI2NF9oaSA9IHV0aWxzLnNocjY0X2hpO1xudmFyIHNocjY0X2xvID0gdXRpbHMuc2hyNjRfbG87XG52YXIgc3VtNjQgPSB1dGlscy5zdW02NDtcbnZhciBzdW02NF9oaSA9IHV0aWxzLnN1bTY0X2hpO1xudmFyIHN1bTY0X2xvID0gdXRpbHMuc3VtNjRfbG87XG52YXIgc3VtNjRfNF9oaSA9IHV0aWxzLnN1bTY0XzRfaGk7XG52YXIgc3VtNjRfNF9sbyA9IHV0aWxzLnN1bTY0XzRfbG87XG52YXIgc3VtNjRfNV9oaSA9IHV0aWxzLnN1bTY0XzVfaGk7XG52YXIgc3VtNjRfNV9sbyA9IHV0aWxzLnN1bTY0XzVfbG87XG52YXIgQmxvY2tIYXNoID0gaGFzaC5jb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhMjU2X0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4NzEzNzQ0OTEsIDB4YjVjMGZiY2YsIDB4ZTliNWRiYTUsXG4gIDB4Mzk1NmMyNWIsIDB4NTlmMTExZjEsIDB4OTIzZjgyYTQsIDB4YWIxYzVlZDUsXG4gIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsXG4gIDB4NzJiZTVkNzQsIDB4ODBkZWIxZmUsIDB4OWJkYzA2YTcsIDB4YzE5YmYxNzQsXG4gIDB4ZTQ5YjY5YzEsIDB4ZWZiZTQ3ODYsIDB4MGZjMTlkYzYsIDB4MjQwY2ExY2MsXG4gIDB4MmRlOTJjNmYsIDB4NGE3NDg0YWEsIDB4NWNiMGE5ZGMsIDB4NzZmOTg4ZGEsXG4gIDB4OTgzZTUxNTIsIDB4YTgzMWM2NmQsIDB4YjAwMzI3YzgsIDB4YmY1OTdmYzcsXG4gIDB4YzZlMDBiZjMsIDB4ZDVhNzkxNDcsIDB4MDZjYTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsXG4gIDB4NjUwYTczNTQsIDB4NzY2YTBhYmIsIDB4ODFjMmM5MmUsIDB4OTI3MjJjODUsXG4gIDB4YTJiZmU4YTEsIDB4YTgxYTY2NGIsIDB4YzI0YjhiNzAsIDB4Yzc2YzUxYTMsXG4gIDB4ZDE5MmU4MTksIDB4ZDY5OTA2MjQsIDB4ZjQwZTM1ODUsIDB4MTA2YWEwNzAsXG4gIDB4MTlhNGMxMTYsIDB4MWUzNzZjMDgsIDB4Mjc0ODc3NGMsIDB4MzRiMGJjYjUsXG4gIDB4MzkxYzBjYjMsIDB4NGVkOGFhNGEsIDB4NWI5Y2NhNGYsIDB4NjgyZTZmZjMsXG4gIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsXG4gIDB4OTBiZWZmZmEsIDB4YTQ1MDZjZWIsIDB4YmVmOWEzZjcsIDB4YzY3MTc4ZjJcbl07XG5cbnZhciBzaGE1MTJfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXTtcblxudmFyIHNoYTFfSyA9IFtcbiAgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSxcbiAgMHg4RjFCQkNEQywgMHhDQTYyQzFENlxuXTtcblxuZnVuY3Rpb24gU0hBMjU2KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlcbiAgICByZXR1cm4gbmV3IFNIQTI1NigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4NmEwOWU2NjcsIDB4YmI2N2FlODUsIDB4M2M2ZWYzNzIsIDB4YTU0ZmY1M2EsXG4gICAgICAgICAgICAgMHg1MTBlNTI3ZiwgMHg5YjA1Njg4YywgMHgxZjgzZDlhYiwgMHg1YmUwY2QxOSBdO1xuICB0aGlzLmsgPSBzaGEyNTZfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDY0KTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTI1NiwgQmxvY2tIYXNoKTtcbmV4cG9ydHMuc2hhMjU2ID0gU0hBMjU2O1xuXG5TSEEyNTYuYmxvY2tTaXplID0gNTEyO1xuU0hBMjU2Lm91dFNpemUgPSAyNTY7XG5TSEEyNTYuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjU2LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSBzdW0zMl80KGcxXzI1NihXW2kgLSAyXSksIFdbaSAtIDddLCBnMF8yNTYoV1tpIC0gMTVdKSwgV1tpIC0gMTZdKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG4gIHZhciBmID0gdGhpcy5oWzVdO1xuICB2YXIgZyA9IHRoaXMuaFs2XTtcbiAgdmFyIGggPSB0aGlzLmhbN107XG5cbiAgYXNzZXJ0KHRoaXMuay5sZW5ndGggPT09IFcubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIFQxID0gc3VtMzJfNShoLCBzMV8yNTYoZSksIGNoMzIoZSwgZiwgZyksIHRoaXMua1tpXSwgV1tpXSk7XG4gICAgdmFyIFQyID0gc3VtMzIoczBfMjU2KGEpLCBtYWozMihhLCBiLCBjKSk7XG4gICAgaCA9IGc7XG4gICAgZyA9IGY7XG4gICAgZiA9IGU7XG4gICAgZSA9IHN1bTMyKGQsIFQxKTtcbiAgICBkID0gYztcbiAgICBjID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gc3VtMzIoVDEsIFQyKTtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG4gIHRoaXMuaFs1XSA9IHN1bTMyKHRoaXMuaFs1XSwgZik7XG4gIHRoaXMuaFs2XSA9IHN1bTMyKHRoaXMuaFs2XSwgZyk7XG4gIHRoaXMuaFs3XSA9IHN1bTMyKHRoaXMuaFs3XSwgaCk7XG59O1xuXG5TSEEyNTYucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBTSEEyMjQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKVxuICAgIHJldHVybiBuZXcgU0hBMjI0KCk7XG5cbiAgU0hBMjU2LmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHhjMTA1OWVkOCwgMHgzNjdjZDUwNywgMHgzMDcwZGQxNywgMHhmNzBlNTkzOSxcbiAgICAgICAgICAgICAweGZmYzAwYjMxLCAweDY4NTgxNTExLCAweDY0Zjk4ZmE3LCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEyMjQsIFNIQTI1Nik7XG5leHBvcnRzLnNoYTIyNCA9IFNIQTIyNDtcblxuU0hBMjI0LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTIyNC5vdXRTaXplID0gMjI0O1xuU0hBMjI0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTIyNC5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjI0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICAvLyBKdXN0IHRydW5jYXRlIG91dHB1dFxuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBNTEyKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBNTEyKSlcbiAgICByZXR1cm4gbmV3IFNIQTUxMigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4NmEwOWU2NjcsIDB4ZjNiY2M5MDgsXG4gICAgICAgICAgICAgMHhiYjY3YWU4NSwgMHg4NGNhYTczYixcbiAgICAgICAgICAgICAweDNjNmVmMzcyLCAweGZlOTRmODJiLFxuICAgICAgICAgICAgIDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEsXG4gICAgICAgICAgICAgMHg1MTBlNTI3ZiwgMHhhZGU2ODJkMSxcbiAgICAgICAgICAgICAweDliMDU2ODhjLCAweDJiM2U2YzFmLFxuICAgICAgICAgICAgIDB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmIsXG4gICAgICAgICAgICAgMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSBdO1xuICB0aGlzLmsgPSBzaGE1MTJfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDE2MCk7XG59XG51dGlscy5pbmhlcml0cyhTSEE1MTIsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTUxMiA9IFNIQTUxMjtcblxuU0hBNTEyLmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEE1MTIub3V0U2l6ZSA9IDUxMjtcblNIQTUxMi5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEE1MTIucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEE1MTIucHJvdG90eXBlLl9wcmVwYXJlQmxvY2sgPSBmdW5jdGlvbiBfcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgLy8gMzIgeCAzMmJpdCB3b3Jkc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBnMV81MTJfaGkoV1tpIC0gNF0sIFdbaSAtIDNdKTsgIC8vIGkgLSAyXG4gICAgdmFyIGMwX2xvID0gZzFfNTEyX2xvKFdbaSAtIDRdLCBXW2kgLSAzXSk7XG4gICAgdmFyIGMxX2hpID0gV1tpIC0gMTRdOyAgLy8gaSAtIDdcbiAgICB2YXIgYzFfbG8gPSBXW2kgLSAxM107XG4gICAgdmFyIGMyX2hpID0gZzBfNTEyX2hpKFdbaSAtIDMwXSwgV1tpIC0gMjldKTsgIC8vIGkgLSAxNVxuICAgIHZhciBjMl9sbyA9IGcwXzUxMl9sbyhXW2kgLSAzMF0sIFdbaSAtIDI5XSk7XG4gICAgdmFyIGMzX2hpID0gV1tpIC0gMzJdOyAgLy8gaSAtIDE2XG4gICAgdmFyIGMzX2xvID0gV1tpIC0gMzFdO1xuXG4gICAgV1tpXSA9IHN1bTY0XzRfaGkoYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvKTtcbiAgICBXW2kgKyAxXSA9IHN1bTY0XzRfbG8oYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvKTtcbiAgfVxufTtcblxuU0hBNTEyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHRoaXMuX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KTtcblxuICB2YXIgVyA9IHRoaXMuVztcblxuICB2YXIgYWggPSB0aGlzLmhbMF07XG4gIHZhciBhbCA9IHRoaXMuaFsxXTtcbiAgdmFyIGJoID0gdGhpcy5oWzJdO1xuICB2YXIgYmwgPSB0aGlzLmhbM107XG4gIHZhciBjaCA9IHRoaXMuaFs0XTtcbiAgdmFyIGNsID0gdGhpcy5oWzVdO1xuICB2YXIgZGggPSB0aGlzLmhbNl07XG4gIHZhciBkbCA9IHRoaXMuaFs3XTtcbiAgdmFyIGVoID0gdGhpcy5oWzhdO1xuICB2YXIgZWwgPSB0aGlzLmhbOV07XG4gIHZhciBmaCA9IHRoaXMuaFsxMF07XG4gIHZhciBmbCA9IHRoaXMuaFsxMV07XG4gIHZhciBnaCA9IHRoaXMuaFsxMl07XG4gIHZhciBnbCA9IHRoaXMuaFsxM107XG4gIHZhciBoaCA9IHRoaXMuaFsxNF07XG4gIHZhciBobCA9IHRoaXMuaFsxNV07XG5cbiAgYXNzZXJ0KHRoaXMuay5sZW5ndGggPT09IFcubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gaGg7XG4gICAgdmFyIGMwX2xvID0gaGw7XG4gICAgdmFyIGMxX2hpID0gczFfNTEyX2hpKGVoLCBlbCk7XG4gICAgdmFyIGMxX2xvID0gczFfNTEyX2xvKGVoLCBlbCk7XG4gICAgdmFyIGMyX2hpID0gY2g2NF9oaShlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzJfbG8gPSBjaDY0X2xvKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjM19oaSA9IHRoaXMua1tpXTtcbiAgICB2YXIgYzNfbG8gPSB0aGlzLmtbaSArIDFdO1xuICAgIHZhciBjNF9oaSA9IFdbaV07XG4gICAgdmFyIGM0X2xvID0gV1tpICsgMV07XG5cbiAgICB2YXIgVDFfaGkgPSBzdW02NF81X2hpKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0X2hpLCBjNF9sbyk7XG4gICAgdmFyIFQxX2xvID0gc3VtNjRfNV9sbyhjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjNF9oaSwgYzRfbG8pO1xuXG4gICAgdmFyIGMwX2hpID0gczBfNTEyX2hpKGFoLCBhbCk7XG4gICAgdmFyIGMwX2xvID0gczBfNTEyX2xvKGFoLCBhbCk7XG4gICAgdmFyIGMxX2hpID0gbWFqNjRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG4gICAgdmFyIGMxX2xvID0gbWFqNjRfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG5cbiAgICB2YXIgVDJfaGkgPSBzdW02NF9oaShjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG4gICAgdmFyIFQyX2xvID0gc3VtNjRfbG8oYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuXG4gICAgaGggPSBnaDtcbiAgICBobCA9IGdsO1xuXG4gICAgZ2ggPSBmaDtcbiAgICBnbCA9IGZsO1xuXG4gICAgZmggPSBlaDtcbiAgICBmbCA9IGVsO1xuXG4gICAgZWggPSBzdW02NF9oaShkaCwgZGwsIFQxX2hpLCBUMV9sbyk7XG4gICAgZWwgPSBzdW02NF9sbyhkbCwgZGwsIFQxX2hpLCBUMV9sbyk7XG5cbiAgICBkaCA9IGNoO1xuICAgIGRsID0gY2w7XG5cbiAgICBjaCA9IGJoO1xuICAgIGNsID0gYmw7XG5cbiAgICBiaCA9IGFoO1xuICAgIGJsID0gYWw7XG5cbiAgICBhaCA9IHN1bTY0X2hpKFQxX2hpLCBUMV9sbywgVDJfaGksIFQyX2xvKTtcbiAgICBhbCA9IHN1bTY0X2xvKFQxX2hpLCBUMV9sbywgVDJfaGksIFQyX2xvKTtcbiAgfVxuXG4gIHN1bTY0KHRoaXMuaCwgMCwgYWgsIGFsKTtcbiAgc3VtNjQodGhpcy5oLCAyLCBiaCwgYmwpO1xuICBzdW02NCh0aGlzLmgsIDQsIGNoLCBjbCk7XG4gIHN1bTY0KHRoaXMuaCwgNiwgZGgsIGRsKTtcbiAgc3VtNjQodGhpcy5oLCA4LCBlaCwgZWwpO1xuICBzdW02NCh0aGlzLmgsIDEwLCBmaCwgZmwpO1xuICBzdW02NCh0aGlzLmgsIDEyLCBnaCwgZ2wpO1xuICBzdW02NCh0aGlzLmgsIDE0LCBoaCwgaGwpO1xufTtcblxuU0hBNTEyLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gU0hBMzg0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMzg0KSlcbiAgICByZXR1cm4gbmV3IFNIQTM4NCgpO1xuXG4gIFNIQTUxMi5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbIDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgsXG4gICAgICAgICAgICAgMHg2MjlhMjkyYSwgMHgzNjdjZDUwNyxcbiAgICAgICAgICAgICAweDkxNTkwMTVhLCAweDMwNzBkZDE3LFxuICAgICAgICAgICAgIDB4MTUyZmVjZDgsIDB4ZjcwZTU5MzksXG4gICAgICAgICAgICAgMHg2NzMzMjY2NywgMHhmZmMwMGIzMSxcbiAgICAgICAgICAgICAweDhlYjQ0YTg3LCAweDY4NTgxNTExLFxuICAgICAgICAgICAgIDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcsXG4gICAgICAgICAgICAgMHg0N2I1NDgxZCwgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMzg0LCBTSEE1MTIpO1xuZXhwb3J0cy5zaGEzODQgPSBTSEEzODQ7XG5cblNIQTM4NC5ibG9ja1NpemUgPSAxMDI0O1xuU0hBMzg0Lm91dFNpemUgPSAzODQ7XG5TSEEzODQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMzg0LnBhZExlbmd0aCA9IDEyODtcblxuU0hBMzg0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBTSEExKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMSkpXG4gICAgcmV0dXJuIG5ldyBTSEExKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSwgMHg5OGJhZGNmZSxcbiAgICAgICAgICAgICAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg4MCk7XG59XG5cbnV0aWxzLmluaGVyaXRzKFNIQTEsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnNoYTEgPSBTSEExO1xuXG5TSEExLmJsb2NrU2l6ZSA9IDUxMjtcblNIQTEub3V0U2l6ZSA9IDE2MDtcblNIQTEuaG1hY1N0cmVuZ3RoID0gODA7XG5TSEExLnBhZExlbmd0aCA9IDY0O1xuXG5TSEExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG5cbiAgZm9yKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHJvdGwzMihXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdLCAxKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHMgPSB+fihpIC8gMjApO1xuICAgIHZhciB0ID0gc3VtMzJfNShyb3RsMzIoYSwgNSksIGZ0XzEocywgYiwgYywgZCksIGUsIFdbaV0sIHNoYTFfS1tzXSk7XG4gICAgZSA9IGQ7XG4gICAgZCA9IGM7XG4gICAgYyA9IHJvdGwzMihiLCAzMCk7XG4gICAgYiA9IGE7XG4gICAgYSA9IHQ7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xufTtcblxuU0hBMS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIGNoMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICgofngpICYgeik7XG59XG5cbmZ1bmN0aW9uIG1hajMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoeCAmIHopIF4gKHkgJiB6KTtcbn1cblxuZnVuY3Rpb24gcDMyKHgsIHksIHopIHtcbiAgcmV0dXJuIHggXiB5IF4gejtcbn1cblxuZnVuY3Rpb24gczBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAyKSBeIHJvdHIzMih4LCAxMykgXiByb3RyMzIoeCwgMjIpO1xufVxuXG5mdW5jdGlvbiBzMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDYpIF4gcm90cjMyKHgsIDExKSBeIHJvdHIzMih4LCAyNSk7XG59XG5cbmZ1bmN0aW9uIGcwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNykgXiByb3RyMzIoeCwgMTgpIF4gKHggPj4+IDMpO1xufVxuXG5mdW5jdGlvbiBnMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDE3KSBeIHJvdHIzMih4LCAxOSkgXiAoeCA+Pj4gMTApO1xufVxuXG5mdW5jdGlvbiBmdF8xKHMsIHgsIHksIHopIHtcbiAgaWYgKHMgPT09IDApXG4gICAgcmV0dXJuIGNoMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAxIHx8IHMgPT09IDMpXG4gICAgcmV0dXJuIHAzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDIpXG4gICAgcmV0dXJuIG1hajMyKHgsIHksIHopO1xufVxuXG5mdW5jdGlvbiBjaDY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoKH54aCkgJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY2g2NF9sbyh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhsICYgeWwpIF4gKCh+eGwpICYgemwpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoeGggJiB6aCkgXiAoeWggJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICh4bCAmIHpsKSBeICh5bCAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMF81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDI4KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgMik7ICAvLyAzNFxuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA3KTsgIC8vIDM5XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTQpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOCk7XG4gIHZhciBjMl9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDkpOyAgLy8gNDFcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cbiIsInZhciB1dGlscyA9IGV4cG9ydHM7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5mdW5jdGlvbiB0b0FycmF5KG1zZywgZW5jKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1zZykpXG4gICAgcmV0dXJuIG1zZy5zbGljZSgpO1xuICBpZiAoIW1zZylcbiAgICByZXR1cm4gW107XG4gIHZhciByZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCFlbmMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjID0gbXNnLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgICAgdmFyIGxvID0gYyAmIDB4ZmY7XG4gICAgICAgIGlmIChoaSlcbiAgICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmVzLnB1c2gobG8pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgICAgbXNnID0gbXNnLnJlcGxhY2UoL1teYS16MC05XSsvaWcsICcnKTtcbiAgICAgIGlmIChtc2cubGVuZ3RoICUgMiAhPT0gMClcbiAgICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgICAgcmVzW2ldID0gbXNnW2ldIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9BcnJheSA9IHRvQXJyYXk7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbmZ1bmN0aW9uIGh0b25sKHcpIHtcbiAgdmFyIHJlcyA9ICh3ID4+PiAyNCkgfFxuICAgICAgICAgICAgKCh3ID4+PiA4KSAmIDB4ZmYwMCkgfFxuICAgICAgICAgICAgKCh3IDw8IDgpICYgMHhmZjAwMDApIHxcbiAgICAgICAgICAgICgodyAmIDB4ZmYpIDw8IDI0KTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn1cbnV0aWxzLmh0b25sID0gaHRvbmw7XG5cbmZ1bmN0aW9uIHRvSGV4MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB3ID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdsaXR0bGUnKVxuICAgICAgdyA9IGh0b25sKHcpO1xuICAgIHJlcyArPSB6ZXJvOCh3LnRvU3RyaW5nKDE2KSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4MzIgPSB0b0hleDMyO1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gemVybzgod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDcpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA2KVxuICAgIHJldHVybiAnMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDUpXG4gICAgcmV0dXJuICcwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDQpXG4gICAgcmV0dXJuICcwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAzKVxuICAgIHJldHVybiAnMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDIpXG4gICAgcmV0dXJuICcwMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm84ID0gemVybzg7XG5cbmZ1bmN0aW9uIGpvaW4zMihtc2csIHN0YXJ0LCBlbmQsIGVuZGlhbikge1xuICB2YXIgbGVuID0gZW5kIC0gc3RhcnQ7XG4gIGFzc2VydChsZW4gJSA0ID09PSAwKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4gLyA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSBzdGFydDsgaSA8IHJlcy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpXG4gICAgICB3ID0gKG1zZ1trXSA8PCAyNCkgfCAobXNnW2sgKyAxXSA8PCAxNikgfCAobXNnW2sgKyAyXSA8PCA4KSB8IG1zZ1trICsgM107XG4gICAgZWxzZVxuICAgICAgdyA9IChtc2dbayArIDNdIDw8IDI0KSB8IChtc2dbayArIDJdIDw8IDE2KSB8IChtc2dbayArIDFdIDw8IDgpIHwgbXNnW2tdO1xuICAgIHJlc1tpXSA9IHcgPj4+IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLmpvaW4zMiA9IGpvaW4zMjtcblxuZnVuY3Rpb24gc3BsaXQzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gbmV3IEFycmF5KG1zZy5sZW5ndGggKiA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgbSA9IG1zZ1tpXTtcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJykge1xuICAgICAgcmVzW2tdID0gbSA+Pj4gMjQ7XG4gICAgICByZXNbayArIDFdID0gKG0gPj4+IDE2KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDJdID0gKG0gPj4+IDgpICYgMHhmZjtcbiAgICAgIHJlc1trICsgM10gPSBtICYgMHhmZjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzW2sgKyAzXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNba10gPSBtICYgMHhmZjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnNwbGl0MzIgPSBzcGxpdDMyO1xuXG5mdW5jdGlvbiByb3RyMzIodywgYikge1xuICByZXR1cm4gKHcgPj4+IGIpIHwgKHcgPDwgKDMyIC0gYikpO1xufVxudXRpbHMucm90cjMyID0gcm90cjMyO1xuXG5mdW5jdGlvbiByb3RsMzIodywgYikge1xuICByZXR1cm4gKHcgPDwgYikgfCAodyA+Pj4gKDMyIC0gYikpO1xufVxudXRpbHMucm90bDMyID0gcm90bDMyO1xuXG5mdW5jdGlvbiBzdW0zMihhLCBiKSB7XG4gIHJldHVybiAoYSArIGIpID4+PiAwO1xufVxudXRpbHMuc3VtMzIgPSBzdW0zMjtcblxuZnVuY3Rpb24gc3VtMzJfMyhhLCBiLCBjKSB7XG4gIHJldHVybiAoYSArIGIgKyBjKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyXzMgPSBzdW0zMl8zO1xuXG5mdW5jdGlvbiBzdW0zMl80KGEsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyXzQgPSBzdW0zMl80O1xuXG5mdW5jdGlvbiBzdW0zMl81KGEsIGIsIGMsIGQsIGUpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkICsgZSkgPj4+IDA7XG59XG51dGlscy5zdW0zMl81ID0gc3VtMzJfNTtcblxuZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZykge1xuICBpZiAoIWNvbmQpXG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xufVxudXRpbHMuYXNzZXJ0ID0gYXNzZXJ0O1xuXG51dGlscy5pbmhlcml0cyA9IGluaGVyaXRzO1xuXG5mdW5jdGlvbiBzdW02NChidWYsIHBvcywgYWgsIGFsKSB7XG4gIHZhciBiaCA9IGJ1Zltwb3NdO1xuICB2YXIgYmwgPSBidWZbcG9zICsgMV07XG5cbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIGJ1Zltwb3NdID0gaGkgPj4+IDA7XG4gIGJ1Zltwb3MgKyAxXSA9IGxvO1xufVxuZXhwb3J0cy5zdW02NCA9IHN1bTY0O1xuXG5mdW5jdGlvbiBzdW02NF9oaShhaCwgYWwsIGJoLCBibCkge1xuICB2YXIgbG8gPSAoYWwgKyBibCkgPj4+IDA7XG4gIHZhciBoaSA9IChsbyA8IGFsID8gMSA6IDApICsgYWggKyBiaDtcbiAgcmV0dXJuIGhpID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfaGkgPSBzdW02NF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfbG8oYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gYWwgKyBibDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfbG8gPSBzdW02NF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBjYXJyeTtcbiAgcmV0dXJuIGhpID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNF9oaSA9IHN1bTY0XzRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzRfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsO1xuICByZXR1cm4gbG8gPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF80X2xvID0gc3VtNjRfNF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNV9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBlbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZWwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGVoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzVfaGkgPSBzdW02NF81X2hpO1xuXG5mdW5jdGlvbiBzdW02NF81X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCwgZWgsIGVsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsICsgZWw7XG5cbiAgcmV0dXJuIGxvID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNV9sbyA9IHN1bTY0XzVfbG87XG5cbmZ1bmN0aW9uIHJvdHI2NF9oaShhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhbCA8PCAoMzIgLSBudW0pKSB8IChhaCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59O1xuZXhwb3J0cy5yb3RyNjRfaGkgPSByb3RyNjRfaGk7XG5cbmZ1bmN0aW9uIHJvdHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59O1xuZXhwb3J0cy5yb3RyNjRfbG8gPSByb3RyNjRfbG87XG5cbmZ1bmN0aW9uIHNocjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHJldHVybiBhaCA+Pj4gbnVtO1xufTtcbmV4cG9ydHMuc2hyNjRfaGkgPSBzaHI2NF9oaTtcblxuZnVuY3Rpb24gc2hyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufTtcbmV4cG9ydHMuc2hyNjRfbG8gPSBzaHI2NF9sbztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpXG4gICAgcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuICB0aGlzLnByZWRSZXNpc3QgPSAhIW9wdGlvbnMucHJlZFJlc2lzdDtcblxuICB0aGlzLm91dExlbiA9IHRoaXMuaGFzaC5vdXRTaXplO1xuICB0aGlzLm1pbkVudHJvcHkgPSBvcHRpb25zLm1pbkVudHJvcHkgfHwgdGhpcy5oYXNoLmhtYWNTdHJlbmd0aDtcblxuICB0aGlzLnJlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyB8fCAnaGV4Jyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5yZXNlZWQgPSAxO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gMHgxMDAwMDAwMDAwMDAwOyAgLy8gMl40OFxufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl9obWFjID0gZnVuY3Rpb24gaG1hYygpIHtcbiAgcmV0dXJuIG5ldyBoYXNoLmhtYWModGhpcy5oYXNoLCB0aGlzLkspO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoc2VlZCkge1xuICB2YXIga21hYyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDAgXSk7XG4gIGlmIChzZWVkKVxuICAgIGttYWMgPSBrbWFjLnVwZGF0ZShzZWVkKTtcbiAgdGhpcy5LID0ga21hYy5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICBpZiAoIXNlZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuSyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMSBdKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShzZWVkKVxuICAgICAgICAgICAgICAgLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUucmVzZWVkID0gZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksIGVudHJvcHlFbmMsIGFkZCwgYWRkRW5jKSB7XG4gIC8vIE9wdGlvbmFsIGVudHJvcHkgZW5jXG4gIGlmICh0eXBlb2YgZW50cm9weUVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW50cm9weUVuYztcbiAgICBlbnRyb3B5RW5jID0gbnVsbDtcbiAgfVxuXG4gIGVudHJvcHkgPSB1dGlscy50b0FycmF5KGVudHJvcHksIGVudHJvcHlFbmMpO1xuICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jKTtcblxuICBhc3NlcnQoZW50cm9weS5sZW5ndGggPj0gKHRoaXMubWluRW50cm9weSAvIDgpLFxuICAgICAgICAgJ05vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogJyArIHRoaXMubWluRW50cm9weSArICcgYml0cycpO1xuXG4gIHRoaXMuX3VwZGF0ZShlbnRyb3B5LmNvbmNhdChhZGQgfHwgW10pKTtcbiAgdGhpcy5yZXNlZWQgPSAxO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuLCBlbmMsIGFkZCwgYWRkRW5jKSB7XG4gIGlmICh0aGlzLnJlc2VlZCA+IHRoaXMucmVzZWVkSW50ZXJ2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZXNlZWQgaXMgcmVxdWlyZWQnKTtcblxuICAvLyBPcHRpb25hbCBlbmNvZGluZ1xuICBpZiAodHlwZW9mIGVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cblxuICAvLyBPcHRpb25hbCBhZGRpdGlvbmFsIGRhdGFcbiAgaWYgKGFkZCkge1xuICAgIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMgfHwgJ2hleCcpO1xuICAgIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB9XG5cbiAgdmFyIHRlbXAgPSBbXTtcbiAgd2hpbGUgKHRlbXAubGVuZ3RoIDwgbGVuKSB7XG4gICAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICAgIHRlbXAgPSB0ZW1wLmNvbmNhdCh0aGlzLlYpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHRlbXAuc2xpY2UoMCwgbGVuKTtcbiAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIHRoaXMucmVzZWVkKys7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsImV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge31cblxuICBtID0gZSAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBlID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBtTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKHZhbHVlICogYyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSBlICsgZUJpYXNcbiAgICB9IGVsc2Uge1xuICAgICAgbSA9IHZhbHVlICogTWF0aC5wb3coMiwgZUJpYXMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gMFxuICAgIH1cbiAgfVxuXG4gIGZvciAoOyBtTGVuID49IDg7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IG0gJiAweGZmLCBpICs9IGQsIG0gLz0gMjU2LCBtTGVuIC09IDgpIHt9XG5cbiAgZSA9IChlIDw8IG1MZW4pIHwgbVxuICBlTGVuICs9IG1MZW5cbiAgZm9yICg7IGVMZW4gPiAwOyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBlICYgMHhmZiwgaSArPSBkLCBlIC89IDI1NiwgZUxlbiAtPSA4KSB7fVxuXG4gIGJ1ZmZlcltvZmZzZXQgKyBpIC0gZF0gfD0gcyAqIDEyOFxufVxuIiwiXG52YXIgaW5kZXhPZiA9IFtdLmluZGV4T2Y7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYXJyLCBvYmope1xuICBpZiAoaW5kZXhPZikgcmV0dXJuIGFyci5pbmRleE9mKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGFycltpXSA9PT0gb2JqKSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59OyIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgfVxufVxuIiwiLyohXG4gKiBEZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIGEgQnVmZmVyXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxuLy8gVGhlIF9pc0J1ZmZlciBjaGVjayBpcyBmb3IgU2FmYXJpIDUtNyBzdXBwb3J0LCBiZWNhdXNlIGl0J3MgbWlzc2luZ1xuLy8gT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvci4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogIT0gbnVsbCAmJiAoaXNCdWZmZXIob2JqKSB8fCBpc1Nsb3dCdWZmZXIob2JqKSB8fCAhIW9iai5faXNCdWZmZXIpXG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyIChvYmopIHtcbiAgcmV0dXJuICEhb2JqLmNvbnN0cnVjdG9yICYmIHR5cGVvZiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iailcbn1cblxuLy8gRm9yIE5vZGUgdjAuMTAgc3VwcG9ydC4gUmVtb3ZlIHRoaXMgZXZlbnR1YWxseS5cbmZ1bmN0aW9uIGlzU2xvd0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqLnJlYWRGbG9hdExFID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmouc2xpY2UgPT09ICdmdW5jdGlvbicgJiYgaXNCdWZmZXIob2JqLnNsaWNlKDAsIDApKVxufVxuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoYXJyKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHVzZXJBZ2VudCA9IGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ7XG52YXIgaXNSdW5uaW5nSW5JRSA9IHVzZXJBZ2VudCAmJiB1c2VyQWdlbnQuaW5kZXhPZihcIk1TSUUgXCIpID4gLTE7XG5cbi8vIE1ha2UgcHJvcGVydGllcyB3cml0YWJsZSBpbiBJRSwgYXMgcGVyXG4vLyBodHRwOi8vd3d3LmFkZXF1YXRlbHlnb29kLmNvbS9SZXBsYWNpbmctc2V0VGltZW91dC1HbG9iYWxseS5odG1sXG5pZiAoaXNSdW5uaW5nSW5JRSkge1xuICAgIGdsb2JhbC5zZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQ7XG4gICAgZ2xvYmFsLmNsZWFyVGltZW91dCA9IGdsb2JhbC5jbGVhclRpbWVvdXQ7XG4gICAgZ2xvYmFsLnNldEludGVydmFsID0gZ2xvYmFsLnNldEludGVydmFsO1xuICAgIGdsb2JhbC5jbGVhckludGVydmFsID0gZ2xvYmFsLmNsZWFySW50ZXJ2YWw7XG4gICAgZ2xvYmFsLkRhdGUgPSBnbG9iYWwuRGF0ZTtcbn1cblxuLy8gc2V0SW1tZWRpYXRlIGlzIG5vdCBhIHN0YW5kYXJkIGZ1bmN0aW9uXG4vLyBhdm9pZCBhZGRpbmcgdGhlIHByb3AgdG8gdGhlIHdpbmRvdyBvYmplY3QgaWYgbm90IHByZXNlbnRcbmlmIChnbG9iYWwuc2V0SW1tZWRpYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICBnbG9iYWwuc2V0SW1tZWRpYXRlID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbiAgICBnbG9iYWwuY2xlYXJJbW1lZGlhdGUgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG59XG5cbi8vIG5vZGUgZXhwZWN0cyBzZXRUaW1lb3V0L3NldEludGVydmFsIHRvIHJldHVybiBhIGZuIG9iamVjdCB3LyAucmVmKCkvLnVucmVmKClcbi8vIGJyb3dzZXJzLCBhIG51bWJlci5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2pvaGFuc2VuL1Npbm9uLkpTL3B1bGwvNDM2XG5cbnZhciBOT09QID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9O1xudmFyIHRpbWVvdXRSZXN1bHQgPSBzZXRUaW1lb3V0KE5PT1AsIDApO1xudmFyIGFkZFRpbWVyUmV0dXJuc09iamVjdCA9IHR5cGVvZiB0aW1lb3V0UmVzdWx0ID09PSBcIm9iamVjdFwiO1xudmFyIGhydGltZVByZXNlbnQgPSAoZ2xvYmFsLnByb2Nlc3MgJiYgdHlwZW9mIGdsb2JhbC5wcm9jZXNzLmhydGltZSA9PT0gXCJmdW5jdGlvblwiKTtcbmNsZWFyVGltZW91dCh0aW1lb3V0UmVzdWx0KTtcblxudmFyIE5hdGl2ZURhdGUgPSBEYXRlO1xudmFyIHVuaXF1ZVRpbWVySWQgPSAxO1xuXG4vKipcbiAqIFBhcnNlIHN0cmluZ3MgbGlrZSBcIjAxOjEwOjAwXCIgKG1lYW5pbmcgMSBob3VyLCAxMCBtaW51dGVzLCAwIHNlY29uZHMpIGludG9cbiAqIG51bWJlciBvZiBtaWxsaXNlY29uZHMuIFRoaXMgaXMgdXNlZCB0byBzdXBwb3J0IGh1bWFuLXJlYWRhYmxlIHN0cmluZ3MgcGFzc2VkXG4gKiB0byBjbG9jay50aWNrKClcbiAqL1xuZnVuY3Rpb24gcGFyc2VUaW1lKHN0cikge1xuICAgIGlmICghc3RyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHZhciBzdHJpbmdzID0gc3RyLnNwbGl0KFwiOlwiKTtcbiAgICB2YXIgbCA9IHN0cmluZ3MubGVuZ3RoO1xuICAgIHZhciBpID0gbDtcbiAgICB2YXIgbXMgPSAwO1xuICAgIHZhciBwYXJzZWQ7XG5cbiAgICBpZiAobCA+IDMgfHwgIS9eKFxcZFxcZDopezAsMn1cXGRcXGQ/JC8udGVzdChzdHIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRpY2sgb25seSB1bmRlcnN0YW5kcyBudW1iZXJzLCAnbTpzJyBhbmQgJ2g6bTpzJy4gRWFjaCBwYXJ0IG11c3QgYmUgdHdvIGRpZ2l0c1wiKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZ3NbaV0sIDEwKTtcblxuICAgICAgICBpZiAocGFyc2VkID49IDYwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRpbWUgXCIgKyBzdHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbXMgKz0gcGFyc2VkICogTWF0aC5wb3coNjAsIChsIC0gaSAtIDEpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXMgKiAxMDAwO1xufVxuXG4vKipcbiAqIEZsb29yIGZ1bmN0aW9uIHRoYXQgYWxzbyB3b3JrcyBmb3IgbmVnYXRpdmUgbnVtYmVyc1xuICovXG5mdW5jdGlvbiBmaXhlZEZsb29yKG4pIHtcbiAgICByZXR1cm4gKG4gPj0gMCA/IE1hdGguZmxvb3IobikgOiBNYXRoLmNlaWwobikpO1xufVxuXG4vKipcbiAqICUgb3BlcmF0b3IgdGhhdCBhbHNvIHdvcmtzIGZvciBuZWdhdGl2ZSBudW1iZXJzXG4gKi9cbmZ1bmN0aW9uIGZpeGVkTW9kdWxvKG4sIG0pIHtcbiAgICByZXR1cm4gKChuICUgbSkgKyBtKSAlIG07XG59XG5cbi8qKlxuICogVXNlZCB0byBncm9rIHRoZSBgbm93YCBwYXJhbWV0ZXIgdG8gY3JlYXRlQ2xvY2suXG4gKi9cbmZ1bmN0aW9uIGdldEVwb2NoKGVwb2NoKSB7XG4gICAgaWYgKCFlcG9jaCkgeyByZXR1cm4gMDsgfVxuICAgIGlmICh0eXBlb2YgZXBvY2guZ2V0VGltZSA9PT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiBlcG9jaC5nZXRUaW1lKCk7IH1cbiAgICBpZiAodHlwZW9mIGVwb2NoID09PSBcIm51bWJlclwiKSB7IHJldHVybiBlcG9jaDsgfVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJub3cgc2hvdWxkIGJlIG1pbGxpc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoXCIpO1xufVxuXG5mdW5jdGlvbiBpblJhbmdlKGZyb20sIHRvLCB0aW1lcikge1xuICAgIHJldHVybiB0aW1lciAmJiB0aW1lci5jYWxsQXQgPj0gZnJvbSAmJiB0aW1lci5jYWxsQXQgPD0gdG87XG59XG5cbmZ1bmN0aW9uIG1pcnJvckRhdGVQcm9wZXJ0aWVzKHRhcmdldCwgc291cmNlKSB7XG4gICAgdmFyIHByb3A7XG4gICAgZm9yIChwcm9wIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzZXQgc3BlY2lhbCBub3cgaW1wbGVtZW50YXRpb25cbiAgICBpZiAoc291cmNlLm5vdykge1xuICAgICAgICB0YXJnZXQubm93ID0gZnVuY3Rpb24gbm93KCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5jbG9jay5ub3c7XG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIHRhcmdldC5ub3c7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNwZWNpYWwgdG9Tb3VyY2UgaW1wbGVtZW50YXRpb25cbiAgICBpZiAoc291cmNlLnRvU291cmNlKSB7XG4gICAgICAgIHRhcmdldC50b1NvdXJjZSA9IGZ1bmN0aW9uIHRvU291cmNlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS50b1NvdXJjZSgpO1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSB0YXJnZXQudG9Tb3VyY2U7XG4gICAgfVxuXG4gICAgLy8gc2V0IHNwZWNpYWwgdG9TdHJpbmcgaW1wbGVtZW50YXRpb25cbiAgICB0YXJnZXQudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZS50b1N0cmluZygpO1xuICAgIH07XG5cbiAgICB0YXJnZXQucHJvdG90eXBlID0gc291cmNlLnByb3RvdHlwZTtcbiAgICB0YXJnZXQucGFyc2UgPSBzb3VyY2UucGFyc2U7XG4gICAgdGFyZ2V0LlVUQyA9IHNvdXJjZS5VVEM7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS50b1VUQ1N0cmluZyA9IHNvdXJjZS5wcm90b3R5cGUudG9VVENTdHJpbmc7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRlKCkge1xuICAgIGZ1bmN0aW9uIENsb2NrRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1zKSB7XG4gICAgICAgIC8vIERlZmVuc2l2ZSBhbmQgdmVyYm9zZSB0byBhdm9pZCBwb3RlbnRpYWwgaGFybSBpbiBwYXNzaW5nXG4gICAgICAgIC8vIGV4cGxpY2l0IHVuZGVmaW5lZCB3aGVuIHVzZXIgZG9lcyBub3QgcGFzcyBhcmd1bWVudFxuICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoQ2xvY2tEYXRlLmNsb2NrLm5vdyk7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIpO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRGF0ZSh5ZWFyLCBtb250aCk7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXIpO1xuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlKTtcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZURhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCwgbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pcnJvckRhdGVQcm9wZXJ0aWVzKENsb2NrRGF0ZSwgTmF0aXZlRGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGFkZFRpbWVyKGNsb2NrLCB0aW1lcikge1xuICAgIGlmICh0aW1lci5mdW5jID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGJhY2sgbXVzdCBiZSBwcm92aWRlZCB0byB0aW1lciBjYWxsc1wiKTtcbiAgICB9XG5cbiAgICBpZiAoIWNsb2NrLnRpbWVycykge1xuICAgICAgICBjbG9jay50aW1lcnMgPSB7fTtcbiAgICB9XG5cbiAgICB0aW1lci5pZCA9IHVuaXF1ZVRpbWVySWQrKztcbiAgICB0aW1lci5jcmVhdGVkQXQgPSBjbG9jay5ub3c7XG4gICAgdGltZXIuY2FsbEF0ID0gY2xvY2subm93ICsgKHBhcnNlSW50KHRpbWVyLmRlbGF5KSB8fCAoY2xvY2suZHVyaW5nVGljayA/IDEgOiAwKSk7XG5cbiAgICBjbG9jay50aW1lcnNbdGltZXIuaWRdID0gdGltZXI7XG5cbiAgICBpZiAoYWRkVGltZXJSZXR1cm5zT2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogdGltZXIuaWQsXG4gICAgICAgICAgICByZWY6IE5PT1AsXG4gICAgICAgICAgICB1bnJlZjogTk9PUFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aW1lci5pZDtcbn1cblxuXG4vKiBlc2xpbnQgY29uc2lzdGVudC1yZXR1cm46IFwib2ZmXCIgKi9cbmZ1bmN0aW9uIGNvbXBhcmVUaW1lcnMoYSwgYikge1xuICAgIC8vIFNvcnQgZmlyc3QgYnkgYWJzb2x1dGUgdGltaW5nXG4gICAgaWYgKGEuY2FsbEF0IDwgYi5jYWxsQXQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoYS5jYWxsQXQgPiBiLmNhbGxBdCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICAvLyBTb3J0IG5leHQgYnkgaW1tZWRpYXRlLCBpbW1lZGlhdGUgdGltZXJzIHRha2UgcHJlY2VkZW5jZVxuICAgIGlmIChhLmltbWVkaWF0ZSAmJiAhYi5pbW1lZGlhdGUpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoIWEuaW1tZWRpYXRlICYmIGIuaW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8vIFNvcnQgbmV4dCBieSBjcmVhdGlvbiB0aW1lLCBlYXJsaWVyLWNyZWF0ZWQgdGltZXJzIHRha2UgcHJlY2VkZW5jZVxuICAgIGlmIChhLmNyZWF0ZWRBdCA8IGIuY3JlYXRlZEF0KSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGEuY3JlYXRlZEF0ID4gYi5jcmVhdGVkQXQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgLy8gU29ydCBuZXh0IGJ5IGlkLCBsb3dlci1pZCB0aW1lcnMgdGFrZSBwcmVjZWRlbmNlXG4gICAgaWYgKGEuaWQgPCBiLmlkKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGEuaWQgPiBiLmlkKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8vIEFzIHRpbWVyIGlkcyBhcmUgdW5pcXVlLCBubyBmYWxsYmFjayBgMGAgaXMgbmVjZXNzYXJ5XG59XG5cbmZ1bmN0aW9uIGZpcnN0VGltZXJJblJhbmdlKGNsb2NrLCBmcm9tLCB0bykge1xuICAgIHZhciB0aW1lcnMgPSBjbG9jay50aW1lcnM7XG4gICAgdmFyIHRpbWVyID0gbnVsbDtcbiAgICB2YXIgaWQsIGlzSW5SYW5nZTtcblxuICAgIGZvciAoaWQgaW4gdGltZXJzKSB7XG4gICAgICAgIGlmICh0aW1lcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICBpc0luUmFuZ2UgPSBpblJhbmdlKGZyb20sIHRvLCB0aW1lcnNbaWRdKTtcblxuICAgICAgICAgICAgaWYgKGlzSW5SYW5nZSAmJiAoIXRpbWVyIHx8IGNvbXBhcmVUaW1lcnModGltZXIsIHRpbWVyc1tpZF0pID09PSAxKSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gdGltZXJzW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aW1lcjtcbn1cblxuZnVuY3Rpb24gZmlyc3RUaW1lcihjbG9jaykge1xuICAgIHZhciB0aW1lcnMgPSBjbG9jay50aW1lcnM7XG4gICAgdmFyIHRpbWVyID0gbnVsbDtcbiAgICB2YXIgaWQ7XG5cbiAgICBmb3IgKGlkIGluIHRpbWVycykge1xuICAgICAgICBpZiAodGltZXJzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aW1lciB8fCBjb21wYXJlVGltZXJzKHRpbWVyLCB0aW1lcnNbaWRdKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gdGltZXJzW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aW1lcjtcbn1cblxuZnVuY3Rpb24gbGFzdFRpbWVyKGNsb2NrKSB7XG4gICAgdmFyIHRpbWVycyA9IGNsb2NrLnRpbWVycztcbiAgICB2YXIgdGltZXIgPSBudWxsO1xuICAgIHZhciBpZDtcblxuICAgIGZvciAoaWQgaW4gdGltZXJzKSB7XG4gICAgICAgIGlmICh0aW1lcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICBpZiAoIXRpbWVyIHx8IGNvbXBhcmVUaW1lcnModGltZXIsIHRpbWVyc1tpZF0pID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gdGltZXJzW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aW1lcjtcbn1cblxuZnVuY3Rpb24gY2FsbFRpbWVyKGNsb2NrLCB0aW1lcikge1xuICAgIHZhciBleGNlcHRpb247XG5cbiAgICBpZiAodHlwZW9mIHRpbWVyLmludGVydmFsID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGNsb2NrLnRpbWVyc1t0aW1lci5pZF0uY2FsbEF0ICs9IHRpbWVyLmludGVydmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBjbG9jay50aW1lcnNbdGltZXIuaWRdO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGltZXIuZnVuYyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aW1lci5mdW5jLmFwcGx5KG51bGwsIHRpbWVyLmFyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogZXNsaW50IG5vLWV2YWw6IFwib2ZmXCIgKi9cbiAgICAgICAgICAgIGV2YWwodGltZXIuZnVuYyk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGV4Y2VwdGlvbiA9IGU7XG4gICAgfVxuXG4gICAgaWYgKCFjbG9jay50aW1lcnNbdGltZXIuaWRdKSB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0aW1lclR5cGUodGltZXIpIHtcbiAgICBpZiAodGltZXIuaW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybiBcIkltbWVkaWF0ZVwiO1xuICAgIH1cbiAgICBpZiAodGltZXIuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gXCJJbnRlcnZhbFwiO1xuICAgIH1cbiAgICByZXR1cm4gXCJUaW1lb3V0XCI7XG59XG5cbmZ1bmN0aW9uIGNsZWFyVGltZXIoY2xvY2ssIHRpbWVySWQsIHR0eXBlKSB7XG4gICAgaWYgKCF0aW1lcklkKSB7XG4gICAgICAgIC8vIG51bGwgYXBwZWFycyB0byBiZSBhbGxvd2VkIGluIG1vc3QgYnJvd3NlcnMsIGFuZCBhcHBlYXJzIHRvIGJlXG4gICAgICAgIC8vIHJlbGllZCB1cG9uIGJ5IHNvbWUgbGlicmFyaWVzLCBsaWtlIEJvb3RzdHJhcCBjYXJvdXNlbFxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFjbG9jay50aW1lcnMpIHtcbiAgICAgICAgY2xvY2sudGltZXJzID0gW107XG4gICAgfVxuXG4gICAgLy8gaW4gTm9kZSwgdGltZXJJZCBpcyBhbiBvYmplY3Qgd2l0aCAucmVmKCkvLnVucmVmKCksIGFuZFxuICAgIC8vIGl0cyAuaWQgZmllbGQgaXMgdGhlIGFjdHVhbCB0aW1lciBpZC5cbiAgICBpZiAodHlwZW9mIHRpbWVySWQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgdGltZXJJZCA9IHRpbWVySWQuaWQ7XG4gICAgfVxuXG4gICAgaWYgKGNsb2NrLnRpbWVycy5oYXNPd25Qcm9wZXJ0eSh0aW1lcklkKSkge1xuICAgICAgICAvLyBjaGVjayB0aGF0IHRoZSBJRCBtYXRjaGVzIGEgdGltZXIgb2YgdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgICB2YXIgdGltZXIgPSBjbG9jay50aW1lcnNbdGltZXJJZF07XG4gICAgICAgIGlmICh0aW1lclR5cGUodGltZXIpID09PSB0dHlwZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNsb2NrLnRpbWVyc1t0aW1lcklkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjbGVhciB0aW1lcjogdGltZXIgY3JlYXRlZCB3aXRoIHNldFwiICsgdGltZXJUeXBlKHRpbWVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgXCIoKSBidXQgY2xlYXJlZCB3aXRoIGNsZWFyXCIgKyB0dHlwZSArIFwiKClcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuaW5zdGFsbChjbG9jaywgdGFyZ2V0KSB7XG4gICAgdmFyIG1ldGhvZCxcbiAgICAgICAgaSxcbiAgICAgICAgbDtcbiAgICB2YXIgaW5zdGFsbGVkSHJUaW1lID0gXCJfaHJ0aW1lXCI7XG5cbiAgICBmb3IgKGkgPSAwLCBsID0gY2xvY2subWV0aG9kcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgbWV0aG9kID0gY2xvY2subWV0aG9kc1tpXTtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJocnRpbWVcIiAmJiB0YXJnZXQucHJvY2Vzcykge1xuICAgICAgICAgICAgdGFyZ2V0LnByb2Nlc3MuaHJ0aW1lID0gY2xvY2tbaW5zdGFsbGVkSHJUaW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0YXJnZXRbbWV0aG9kXSAmJiB0YXJnZXRbbWV0aG9kXS5oYWRPd25Qcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFttZXRob2RdID0gY2xvY2tbXCJfXCIgKyBtZXRob2RdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0W21ldGhvZF07XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlKSB7IC8qIGVzbGludCBlbXB0eS1ibG9jazogXCJvZmZcIiAqLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcmV2ZW50IG11bHRpcGxlIGV4ZWN1dGlvbnMgd2hpY2ggd2lsbCBjb21wbGV0ZWx5IHJlbW92ZSB0aGVzZSBwcm9wc1xuICAgIGNsb2NrLm1ldGhvZHMgPSBbXTtcbn1cblxuZnVuY3Rpb24gaGlqYWNrTWV0aG9kKHRhcmdldCwgbWV0aG9kLCBjbG9jaykge1xuICAgIHZhciBwcm9wO1xuXG4gICAgY2xvY2tbbWV0aG9kXS5oYWRPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIG1ldGhvZCk7XG4gICAgY2xvY2tbXCJfXCIgKyBtZXRob2RdID0gdGFyZ2V0W21ldGhvZF07XG5cbiAgICBpZiAobWV0aG9kID09PSBcIkRhdGVcIikge1xuICAgICAgICB2YXIgZGF0ZSA9IG1pcnJvckRhdGVQcm9wZXJ0aWVzKGNsb2NrW21ldGhvZF0sIHRhcmdldFttZXRob2RdKTtcbiAgICAgICAgdGFyZ2V0W21ldGhvZF0gPSBkYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFttZXRob2RdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNsb2NrW21ldGhvZF0uYXBwbHkoY2xvY2ssIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChwcm9wIGluIGNsb2NrW21ldGhvZF0pIHtcbiAgICAgICAgICAgIGlmIChjbG9ja1ttZXRob2RdLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W21ldGhvZF1bcHJvcF0gPSBjbG9ja1ttZXRob2RdW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0W21ldGhvZF0uY2xvY2sgPSBjbG9jaztcbn1cblxudmFyIHRpbWVycyA9IHtcbiAgICBzZXRUaW1lb3V0OiBzZXRUaW1lb3V0LFxuICAgIGNsZWFyVGltZW91dDogY2xlYXJUaW1lb3V0LFxuICAgIHNldEltbWVkaWF0ZTogZ2xvYmFsLnNldEltbWVkaWF0ZSxcbiAgICBjbGVhckltbWVkaWF0ZTogZ2xvYmFsLmNsZWFySW1tZWRpYXRlLFxuICAgIHNldEludGVydmFsOiBzZXRJbnRlcnZhbCxcbiAgICBjbGVhckludGVydmFsOiBjbGVhckludGVydmFsLFxuICAgIERhdGU6IERhdGVcbn07XG5cbmlmIChocnRpbWVQcmVzZW50KSB7XG4gICAgdGltZXJzLmhydGltZSA9IGdsb2JhbC5wcm9jZXNzLmhydGltZTtcbn1cblxudmFyIGtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIGtzID0gW107XG4gICAgdmFyIGtleTtcblxuICAgIGZvciAoa2V5IGluIG9iaikge1xuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGtzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBrcztcbn07XG5cbmV4cG9ydHMudGltZXJzID0gdGltZXJzO1xuXG5mdW5jdGlvbiBjcmVhdGVDbG9jayhub3csIGxvb3BMaW1pdCkge1xuICAgIGxvb3BMaW1pdCA9IGxvb3BMaW1pdCB8fCAxMDAwO1xuXG4gICAgdmFyIGNsb2NrID0ge1xuICAgICAgICBub3c6IGdldEVwb2NoKG5vdyksXG4gICAgICAgIGhyTm93OiAwLFxuICAgICAgICB0aW1lb3V0czoge30sXG4gICAgICAgIERhdGU6IGNyZWF0ZURhdGUoKSxcbiAgICAgICAgbG9vcExpbWl0OiBsb29wTGltaXRcbiAgICB9O1xuXG4gICAgY2xvY2suRGF0ZS5jbG9jayA9IGNsb2NrO1xuXG4gICAgY2xvY2suc2V0VGltZW91dCA9IGZ1bmN0aW9uIHNldFRpbWVvdXQoZnVuYywgdGltZW91dCkge1xuICAgICAgICByZXR1cm4gYWRkVGltZXIoY2xvY2ssIHtcbiAgICAgICAgICAgIGZ1bmM6IGZ1bmMsXG4gICAgICAgICAgICBhcmdzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgICAgICAgZGVsYXk6IHRpbWVvdXRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNsb2NrLmNsZWFyVGltZW91dCA9IGZ1bmN0aW9uIGNsZWFyVGltZW91dCh0aW1lcklkKSB7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVyKGNsb2NrLCB0aW1lcklkLCBcIlRpbWVvdXRcIik7XG4gICAgfTtcblxuICAgIGNsb2NrLnNldEludGVydmFsID0gZnVuY3Rpb24gc2V0SW50ZXJ2YWwoZnVuYywgdGltZW91dCkge1xuICAgICAgICByZXR1cm4gYWRkVGltZXIoY2xvY2ssIHtcbiAgICAgICAgICAgIGZ1bmM6IGZ1bmMsXG4gICAgICAgICAgICBhcmdzOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgICAgICAgZGVsYXk6IHRpbWVvdXQsXG4gICAgICAgICAgICBpbnRlcnZhbDogdGltZW91dFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY2xvY2suY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uIGNsZWFySW50ZXJ2YWwodGltZXJJZCkge1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lcihjbG9jaywgdGltZXJJZCwgXCJJbnRlcnZhbFwiKTtcbiAgICB9O1xuXG4gICAgY2xvY2suc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZ1bmMpIHtcbiAgICAgICAgcmV0dXJuIGFkZFRpbWVyKGNsb2NrLCB7XG4gICAgICAgICAgICBmdW5jOiBmdW5jLFxuICAgICAgICAgICAgYXJnczogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSxcbiAgICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY2xvY2suY2xlYXJJbW1lZGlhdGUgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZSh0aW1lcklkKSB7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVyKGNsb2NrLCB0aW1lcklkLCBcIkltbWVkaWF0ZVwiKTtcbiAgICB9O1xuXG4gICAgY2xvY2sudGljayA9IGZ1bmN0aW9uIHRpY2sobXMpIHtcbiAgICAgICAgbXMgPSB0eXBlb2YgbXMgPT09IFwibnVtYmVyXCIgPyBtcyA6IHBhcnNlVGltZShtcyk7XG4gICAgICAgIHZhciB0aWNrRnJvbSA9IGNsb2NrLm5vdztcbiAgICAgICAgdmFyIHRpY2tUbyA9IGNsb2NrLm5vdyArIG1zO1xuICAgICAgICB2YXIgcHJldmlvdXMgPSBjbG9jay5ub3c7XG4gICAgICAgIHZhciB0aW1lciA9IGZpcnN0VGltZXJJblJhbmdlKGNsb2NrLCB0aWNrRnJvbSwgdGlja1RvKTtcbiAgICAgICAgdmFyIG9sZE5vdywgZmlyc3RFeGNlcHRpb247XG5cbiAgICAgICAgY2xvY2suZHVyaW5nVGljayA9IHRydWU7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlSHJUaW1lKG5ld05vdykge1xuICAgICAgICAgICAgY2xvY2suaHJOb3cgKz0gKG5ld05vdyAtIGNsb2NrLm5vdyk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodGltZXIgJiYgdGlja0Zyb20gPD0gdGlja1RvKSB7XG4gICAgICAgICAgICBpZiAoY2xvY2sudGltZXJzW3RpbWVyLmlkXSkge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUhyVGltZSh0aW1lci5jYWxsQXQpO1xuICAgICAgICAgICAgICAgIHRpY2tGcm9tID0gdGltZXIuY2FsbEF0O1xuICAgICAgICAgICAgICAgIGNsb2NrLm5vdyA9IHRpbWVyLmNhbGxBdDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbGROb3cgPSBjbG9jay5ub3c7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxUaW1lcihjbG9jaywgdGltZXIpO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb21wZW5zYXRlIGZvciBhbnkgc2V0U3lzdGVtVGltZSgpIGNhbGwgZHVyaW5nIHRpbWVyIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGROb3cgIT09IGNsb2NrLm5vdykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGlja0Zyb20gKz0gY2xvY2subm93IC0gb2xkTm93O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGlja1RvICs9IGNsb2NrLm5vdyAtIG9sZE5vdztcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzICs9IGNsb2NrLm5vdyAtIG9sZE5vdztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RFeGNlcHRpb24gPSBmaXJzdEV4Y2VwdGlvbiB8fCBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGltZXIgPSBmaXJzdFRpbWVySW5SYW5nZShjbG9jaywgcHJldmlvdXMsIHRpY2tUbyk7XG4gICAgICAgICAgICBwcmV2aW91cyA9IHRpY2tGcm9tO1xuICAgICAgICB9XG5cbiAgICAgICAgY2xvY2suZHVyaW5nVGljayA9IGZhbHNlO1xuICAgICAgICB1cGRhdGVIclRpbWUodGlja1RvKTtcbiAgICAgICAgY2xvY2subm93ID0gdGlja1RvO1xuXG4gICAgICAgIGlmIChmaXJzdEV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgZmlyc3RFeGNlcHRpb247XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgIH07XG5cbiAgICBjbG9jay5uZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgdmFyIHRpbWVyID0gZmlyc3RUaW1lcihjbG9jayk7XG4gICAgICAgIGlmICghdGltZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBjbG9jay5ub3c7XG4gICAgICAgIH1cblxuICAgICAgICBjbG9jay5kdXJpbmdUaWNrID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNsb2NrLm5vdyA9IHRpbWVyLmNhbGxBdDtcbiAgICAgICAgICAgIGNhbGxUaW1lcihjbG9jaywgdGltZXIpO1xuICAgICAgICAgICAgcmV0dXJuIGNsb2NrLm5vdztcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNsb2NrLmR1cmluZ1RpY2sgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjbG9jay5ydW5BbGwgPSBmdW5jdGlvbiBydW5BbGwoKSB7XG4gICAgICAgIHZhciBudW1UaW1lcnMsIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjbG9jay5sb29wTGltaXQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKCFjbG9jay50aW1lcnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBudW1UaW1lcnMgPSBPYmplY3Qua2V5cyhjbG9jay50aW1lcnMpLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChudW1UaW1lcnMgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbG9jay5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBYm9ydGluZyBhZnRlciBydW5uaW5nIFwiICsgY2xvY2subG9vcExpbWl0ICsgXCIgdGltZXJzLCBhc3N1bWluZyBhbiBpbmZpbml0ZSBsb29wIVwiKTtcbiAgICB9O1xuXG4gICAgY2xvY2sucnVuVG9MYXN0ID0gZnVuY3Rpb24gcnVuVG9MYXN0KCkge1xuICAgICAgICB2YXIgdGltZXIgPSBsYXN0VGltZXIoY2xvY2spO1xuICAgICAgICBpZiAoIXRpbWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xvY2subm93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsb2NrLnRpY2sodGltZXIuY2FsbEF0KTtcbiAgICB9O1xuXG4gICAgY2xvY2sucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgY2xvY2sudGltZXJzID0ge307XG4gICAgfTtcblxuICAgIGNsb2NrLnNldFN5c3RlbVRpbWUgPSBmdW5jdGlvbiBzZXRTeXN0ZW1UaW1lKHN5c3RlbVRpbWUpIHtcbiAgICAgICAgLy8gZGV0ZXJtaW5lIHRpbWUgZGlmZmVyZW5jZVxuICAgICAgICB2YXIgbmV3Tm93ID0gZ2V0RXBvY2goc3lzdGVtVGltZSk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0gbmV3Tm93IC0gY2xvY2subm93O1xuICAgICAgICB2YXIgaWQsIHRpbWVyO1xuXG4gICAgICAgIC8vIHVwZGF0ZSAnc3lzdGVtIGNsb2NrJ1xuICAgICAgICBjbG9jay5ub3cgPSBuZXdOb3c7XG5cbiAgICAgICAgLy8gdXBkYXRlIHRpbWVycyBhbmQgaW50ZXJ2YWxzIHRvIGtlZXAgdGhlbSBzdGFibGVcbiAgICAgICAgZm9yIChpZCBpbiBjbG9jay50aW1lcnMpIHtcbiAgICAgICAgICAgIGlmIChjbG9jay50aW1lcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBjbG9jay50aW1lcnNbaWRdO1xuICAgICAgICAgICAgICAgIHRpbWVyLmNyZWF0ZWRBdCArPSBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgICAgIHRpbWVyLmNhbGxBdCArPSBkaWZmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGlmIChocnRpbWVQcmVzZW50KSB7XG4gICAgICAgIGNsb2NrLmhydGltZSA9IGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwcmV2KSkge1xuICAgICAgICAgICAgICAgIHZhciBvbGRTZWNzID0gKHByZXZbMF0gKyBwcmV2WzFdIC8gMWU5KTtcbiAgICAgICAgICAgICAgICB2YXIgbmV3U2VjcyA9IChjbG9jay5ock5vdyAvIDEwMDApO1xuICAgICAgICAgICAgICAgIHZhciBkaWZmZXJlbmNlID0gKG5ld1NlY3MgLSBvbGRTZWNzKTtcbiAgICAgICAgICAgICAgICB2YXIgc2VjcyA9IGZpeGVkRmxvb3IoZGlmZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgdmFyIG5hbm9zZWNzID0gZml4ZWRNb2R1bG8oZGlmZmVyZW5jZSAqIDFlOSwgMWU5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBzZWNzLFxuICAgICAgICAgICAgICAgICAgICBuYW5vc2Vjc1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGZpeGVkRmxvb3IoY2xvY2suaHJOb3cgLyAxMDAwKSxcbiAgICAgICAgICAgICAgICBmaXhlZE1vZHVsbyhjbG9jay5ock5vdyAqIDFlNiwgMWU5KVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvY2s7XG59XG5leHBvcnRzLmNyZWF0ZUNsb2NrID0gY3JlYXRlQ2xvY2s7XG5cbmV4cG9ydHMuaW5zdGFsbCA9IGZ1bmN0aW9uIGluc3RhbGwodGFyZ2V0LCBub3csIHRvRmFrZSwgbG9vcExpbWl0KSB7XG4gICAgdmFyIGksIGw7XG5cbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICB0b0Zha2UgPSBub3c7XG4gICAgICAgIG5vdyA9IHRhcmdldC5nZXRUaW1lKCk7XG4gICAgICAgIHRhcmdldCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgdG9GYWtlID0gbm93O1xuICAgICAgICBub3cgPSB0YXJnZXQ7XG4gICAgICAgIHRhcmdldCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICAgIH1cblxuICAgIHZhciBjbG9jayA9IGNyZWF0ZUNsb2NrKG5vdywgbG9vcExpbWl0KTtcblxuICAgIGNsb2NrLnVuaW5zdGFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdW5pbnN0YWxsKGNsb2NrLCB0YXJnZXQpO1xuICAgIH07XG5cbiAgICBjbG9jay5tZXRob2RzID0gdG9GYWtlIHx8IFtdO1xuXG4gICAgaWYgKGNsb2NrLm1ldGhvZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNsb2NrLm1ldGhvZHMgPSBrZXlzKHRpbWVycyk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMCwgbCA9IGNsb2NrLm1ldGhvZHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChjbG9jay5tZXRob2RzW2ldID09PSBcImhydGltZVwiKSB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0LnByb2Nlc3MgJiYgdHlwZW9mIHRhcmdldC5wcm9jZXNzLmhydGltZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgaGlqYWNrTWV0aG9kKHRhcmdldC5wcm9jZXNzLCBjbG9jay5tZXRob2RzW2ldLCBjbG9jayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoaWphY2tNZXRob2QodGFyZ2V0LCBjbG9jay5tZXRob2RzW2ldLCBjbG9jayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xvY2s7XG59O1xuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciBidWYgPSB0aGlzLnJhbmQuZ2VuZXJhdGUoTWF0aC5jZWlsKGxlbiAvIDgpKTtcblxuICAvLyBTZXQgbG93IGJpdHNcbiAgYnVmWzBdIHw9IDM7XG5cbiAgLy8gTWFzayBoaWdoIGJpdHNcbiAgdmFyIG1hc2sgPSBsZW4gJiAweDc7XG4gIGlmIChtYXNrICE9PSAwKVxuICAgIGJ1ZltidWYubGVuZ3RoIC0gMV0gPj49IDcgLSBtYXNrO1xuXG4gIHJldHVybiBuZXcgYm4oYnVmKTtcbn1cblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcblxuICAgIHZhciBnID0gbi5nY2QoYSk7XG4gICAgaWYgKGcuY21wbigxKSAhPT0gMClcbiAgICAgIHJldHVybiBnO1xuXG4gICAgdmFyIHggPSBhLnRvUmVkKHJlZCkucmVkUG93KGQpO1xuICAgIGlmICh4LmNtcChyb25lKSA9PT0gMCB8fCB4LmNtcChybjEpID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHM7IGkrKykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG5cbiAgICAgIGlmICh4LmNtcChyb25lKSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgICAgaWYgKHguY21wKHJuMSkgPT09IDApXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcbiAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuIiwiZXhwb3J0cy5lbmRpYW5uZXNzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0xFJyB9O1xuXG5leHBvcnRzLmhvc3RuYW1lID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBsb2NhdGlvbi5ob3N0bmFtZVxuICAgIH1cbiAgICBlbHNlIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubG9hZGF2ZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdIH07XG5cbmV4cG9ydHMudXB0aW1lID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMCB9O1xuXG5leHBvcnRzLmZyZWVtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLnRvdGFsbWVtID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBOdW1iZXIuTUFYX1ZBTFVFO1xufTtcblxuZXhwb3J0cy5jcHVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy50eXBlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0Jyb3dzZXInIH07XG5cbmV4cG9ydHMucmVsZWFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5hcHBWZXJzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59O1xuXG5leHBvcnRzLm5ldHdvcmtJbnRlcmZhY2VzXG49IGV4cG9ydHMuZ2V0TmV0d29ya0ludGVyZmFjZXNcbj0gZnVuY3Rpb24gKCkgeyByZXR1cm4ge30gfTtcblxuZXhwb3J0cy5hcmNoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ2phdmFzY3JpcHQnIH07XG5cbmV4cG9ydHMucGxhdGZvcm0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnYnJvd3NlcicgfTtcblxuZXhwb3J0cy50bXBkaXIgPSBleHBvcnRzLnRtcERpciA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gJy90bXAnO1xufTtcblxuZXhwb3J0cy5FT0wgPSAnXFxuJztcbiIsIm1vZHVsZS5leHBvcnRzPXtcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjFcIjogXCJhZXMtMTI4LWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yXCI6IFwiYWVzLTEyOC1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuM1wiOiBcImFlcy0xMjgtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjRcIjogXCJhZXMtMTI4LWNmYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMVwiOiBcImFlcy0xOTItZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyXCI6IFwiYWVzLTE5Mi1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjNcIjogXCJhZXMtMTkyLW9mYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNFwiOiBcImFlcy0xOTItY2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxXCI6IFwiYWVzLTI1Ni1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDJcIjogXCJhZXMtMjU2LWNiY1wiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40M1wiOiBcImFlcy0yNTYtb2ZiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0XCI6IFwiYWVzLTI1Ni1jZmJcIlxufSIsIi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvYXNuMS5qc1xuLy8gRmVkb3IsIHlvdSBhcmUgYW1hemluZy5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYXNuMSA9IHJlcXVpcmUoJ2FzbjEuanMnKVxuXG5leHBvcnRzLmNlcnRpZmljYXRlID0gcmVxdWlyZSgnLi9jZXJ0aWZpY2F0ZScpXG5cbnZhciBSU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdmF0ZUV4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMScpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MicpLmludCgpLFxuICAgIHRoaXMua2V5KCdjb2VmZmljaWVudCcpLmludCgpXG4gIClcbn0pXG5leHBvcnRzLlJTQVByaXZhdGVLZXkgPSBSU0FQcml2YXRlS2V5XG5cbnZhciBSU0FQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnUlNBUHVibGljS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpXG4gIClcbn0pXG5leHBvcnRzLlJTQVB1YmxpY0tleSA9IFJTQVB1YmxpY0tleVxuXG52YXIgUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1N1YmplY3RQdWJsaWNLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHVibGljS2V5JykuYml0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHVibGljS2V5ID0gUHVibGljS2V5XG5cbnZhciBBbGdvcml0aG1JZGVudGlmaWVyID0gYXNuMS5kZWZpbmUoJ0FsZ29yaXRobUlkZW50aWZpZXInLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdub25lJykubnVsbF8oKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdjdXJ2ZScpLm9iamlkKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgncGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdxJykuaW50KCksXG4gICAgICB0aGlzLmtleSgnZycpLmludCgpXG4gICAgKS5vcHRpb25hbCgpXG4gIClcbn0pXG5cbnZhciBQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlByaXZhdGVLZXkgPSBQcml2YXRlS2V5SW5mb1xudmFyIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ0VuY3J5cHRlZFByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykuc2VxKCkub2JqKFxuICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgIHRoaXMua2V5KCdkZWNyeXB0Jykuc2VxKCkub2JqKFxuICAgICAgICB0aGlzLmtleSgna2RlJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICAgICAgdGhpcy5rZXkoJ2tkZXBhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgICAgICAgIHRoaXMua2V5KCdzYWx0Jykub2N0c3RyKCksXG4gICAgICAgICAgICB0aGlzLmtleSgnaXRlcnMnKS5pbnQoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5rZXkoJ2NpcGhlcicpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnYWxnbycpLm9iamlkKCksXG4gICAgICAgICAgdGhpcy5rZXkoJ2l2Jykub2N0c3RyKClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcblxuZXhwb3J0cy5FbmNyeXB0ZWRQcml2YXRlS2V5ID0gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm9cblxudmFyIERTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRFNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2cnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHViX2tleScpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2X2tleScpLmludCgpXG4gIClcbn0pXG5leHBvcnRzLkRTQVByaXZhdGVLZXkgPSBEU0FQcml2YXRlS2V5XG5cbmV4cG9ydHMuRFNBcGFyYW0gPSBhc24xLmRlZmluZSgnRFNBcGFyYW0nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaW50KClcbn0pXG5cbnZhciBFQ1ByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnRUNQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlS2V5Jykub2N0c3RyKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShFQ1BhcmFtZXRlcnMpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNLZXknKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLkVDUHJpdmF0ZUtleSA9IEVDUHJpdmF0ZUtleVxuXG52YXIgRUNQYXJhbWV0ZXJzID0gYXNuMS5kZWZpbmUoJ0VDUGFyYW1ldGVycycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIG5hbWVkQ3VydmU6IHRoaXMub2JqaWQoKVxuICB9KVxufSlcblxuZXhwb3J0cy5zaWduYXR1cmUgPSBhc24xLmRlZmluZSgnc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgncicpLmludCgpLFxuICAgIHRoaXMua2V5KCdzJykuaW50KClcbiAgKVxufSlcbiIsIi8vIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1JhbnRhbmVuL25vZGUtZHRscy9ibG9iLzI1YTdkYzg2MWJkYTM4Y2ZlYWM5M2E3MjM1MDBlZWE0ZjBhYzJlODYvQ2VydGlmaWNhdGUuanNcbi8vIHRoYW5rcyB0byBAUmFudGFuZW5cblxuJ3VzZSBzdHJpY3QnXG5cbnZhciBhc24gPSByZXF1aXJlKCdhc24xLmpzJylcblxudmFyIFRpbWUgPSBhc24uZGVmaW5lKCdUaW1lJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmNob2ljZSh7XG4gICAgdXRjVGltZTogdGhpcy51dGN0aW1lKCksXG4gICAgZ2VuZXJhbFRpbWU6IHRoaXMuZ2VudGltZSgpXG4gIH0pXG59KVxuXG52YXIgQXR0cmlidXRlVHlwZVZhbHVlID0gYXNuLmRlZmluZSgnQXR0cmlidXRlVHlwZVZhbHVlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndHlwZScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ3ZhbHVlJykuYW55KClcbiAgKVxufSlcblxudmFyIEFsZ29yaXRobUlkZW50aWZpZXIgPSBhc24uZGVmaW5lKCdBbGdvcml0aG1JZGVudGlmaWVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgncGFyYW1ldGVycycpLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFN1YmplY3RQdWJsaWNLZXlJbmZvID0gYXNuLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuXG52YXIgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA9IGFzbi5kZWZpbmUoJ1JlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2V0b2YoQXR0cmlidXRlVHlwZVZhbHVlKVxufSlcblxudmFyIFJETlNlcXVlbmNlID0gYXNuLmRlZmluZSgnUkROU2VxdWVuY2UnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2Vxb2YoUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSlcbn0pXG5cbnZhciBOYW1lID0gYXNuLmRlZmluZSgnTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHJkblNlcXVlbmNlOiB0aGlzLnVzZShSRE5TZXF1ZW5jZSlcbiAgfSlcbn0pXG5cbnZhciBWYWxpZGl0eSA9IGFzbi5kZWZpbmUoJ1ZhbGlkaXR5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnbm90QmVmb3JlJykudXNlKFRpbWUpLFxuICAgIHRoaXMua2V5KCdub3RBZnRlcicpLnVzZShUaW1lKVxuICApXG59KVxuXG52YXIgRXh0ZW5zaW9uID0gYXNuLmRlZmluZSgnRXh0ZW5zaW9uJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnZXh0bklEJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnY3JpdGljYWwnKS5ib29sKCkuZGVmKGZhbHNlKSxcbiAgICB0aGlzLmtleSgnZXh0blZhbHVlJykub2N0c3RyKClcbiAgKVxufSlcblxudmFyIFRCU0NlcnRpZmljYXRlID0gYXNuLmRlZmluZSgnVEJTQ2VydGlmaWNhdGUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuZXhwbGljaXQoMCkuaW50KCksXG4gICAgdGhpcy5rZXkoJ3NlcmlhbE51bWJlcicpLmludCgpLFxuICAgIHRoaXMua2V5KCdzaWduYXR1cmUnKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ2lzc3VlcicpLnVzZShOYW1lKSxcbiAgICB0aGlzLmtleSgndmFsaWRpdHknKS51c2UoVmFsaWRpdHkpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0JykudXNlKE5hbWUpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHVibGljS2V5SW5mbycpLnVzZShTdWJqZWN0UHVibGljS2V5SW5mbyksXG4gICAgdGhpcy5rZXkoJ2lzc3VlclVuaXF1ZUlEJykuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFVuaXF1ZUlEJykuaW1wbGljaXQoMikuYml0c3RyKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnZXh0ZW5zaW9ucycpLmV4cGxpY2l0KDMpLnNlcW9mKEV4dGVuc2lvbikub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgWDUwOUNlcnRpZmljYXRlID0gYXNuLmRlZmluZSgnWDUwOUNlcnRpZmljYXRlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndGJzQ2VydGlmaWNhdGUnKS51c2UoVEJTQ2VydGlmaWNhdGUpLFxuICAgIHRoaXMua2V5KCdzaWduYXR1cmVBbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3NpZ25hdHVyZVZhbHVlJykuYml0c3RyKClcbiAgKVxufSlcblxubW9kdWxlLmV4cG9ydHMgPSBYNTA5Q2VydGlmaWNhdGVcbiIsIi8vIGFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYXBhdGlsL3BlbXN0cmlwXG52YXIgZmluZFByb2MgPSAvUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRFxcblxccj9ERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspXFxuXFxyP1xcblxccj8oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxcblxccj8vbVxudmFyIHN0YXJ0UmVnZXggPSAvXi0tLS0tQkVHSU4gKCg/Oi4qIEtFWSl8Q0VSVElGSUNBVEUpLS0tLS1cXG4vbVxudmFyIGZ1bGxSZWdleCA9IC9eLS0tLS1CRUdJTiAoKD86LiogS0VZKXxDRVJUSUZJQ0FURSktLS0tLVxcblxccj8oWzAtOUEtelxcblxcclxcK1xcL1xcPV0rKVxcblxccj8tLS0tLUVORCBcXDEtLS0tLSQvbVxudmFyIGV2cCA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2tleSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleSA9IG9rZXkudG9TdHJpbmcoKVxuICB2YXIgbWF0Y2ggPSBrZXkubWF0Y2goZmluZFByb2MpXG4gIHZhciBkZWNyeXB0ZWRcbiAgaWYgKCFtYXRjaCkge1xuICAgIHZhciBtYXRjaDIgPSBrZXkubWF0Y2goZnVsbFJlZ2V4KVxuICAgIGRlY3J5cHRlZCA9IG5ldyBCdWZmZXIobWF0Y2gyWzJdLnJlcGxhY2UoL1xccj9cXG4vZywgJycpLCAnYmFzZTY0JylcbiAgfSBlbHNlIHtcbiAgICB2YXIgc3VpdGUgPSAnYWVzJyArIG1hdGNoWzFdXG4gICAgdmFyIGl2ID0gbmV3IEJ1ZmZlcihtYXRjaFsyXSwgJ2hleCcpXG4gICAgdmFyIGNpcGhlclRleHQgPSBuZXcgQnVmZmVyKG1hdGNoWzNdLnJlcGxhY2UoL1xccj9cXG4vZywgJycpLCAnYmFzZTY0JylcbiAgICB2YXIgY2lwaGVyS2V5ID0gZXZwKHBhc3N3b3JkLCBpdi5zbGljZSgwLCA4KSwgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSkua2V5XG4gICAgdmFyIG91dCA9IFtdXG4gICAgdmFyIGNpcGhlciA9IGNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwgY2lwaGVyS2V5LCBpdilcbiAgICBvdXQucHVzaChjaXBoZXIudXBkYXRlKGNpcGhlclRleHQpKVxuICAgIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICAgIGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQob3V0KVxuICB9XG4gIHZhciB0YWcgPSBrZXkubWF0Y2goc3RhcnRSZWdleClbMV1cbiAgcmV0dXJuIHtcbiAgICB0YWc6IHRhZyxcbiAgICBkYXRhOiBkZWNyeXB0ZWRcbiAgfVxufVxuIiwidmFyIGFzbjEgPSByZXF1aXJlKCcuL2FzbjEnKVxudmFyIGFlc2lkID0gcmVxdWlyZSgnLi9hZXNpZC5qc29uJylcbnZhciBmaXhQcm9jID0gcmVxdWlyZSgnLi9maXhQcm9jJylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxudmFyIGNvbXBhdCA9IHJlcXVpcmUoJ3Bia2RmMicpXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlS2V5c1xuXG5mdW5jdGlvbiBwYXJzZUtleXMgKGJ1ZmZlcikge1xuICB2YXIgcGFzc3dvcmRcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmICFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHBhc3N3b3JkID0gYnVmZmVyLnBhc3NwaHJhc2VcbiAgICBidWZmZXIgPSBidWZmZXIua2V5XG4gIH1cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgYnVmZmVyID0gbmV3IEJ1ZmZlcihidWZmZXIpXG4gIH1cblxuICB2YXIgc3RyaXBwZWQgPSBmaXhQcm9jKGJ1ZmZlciwgcGFzc3dvcmQpXG5cbiAgdmFyIHR5cGUgPSBzdHJpcHBlZC50YWdcbiAgdmFyIGRhdGEgPSBzdHJpcHBlZC5kYXRhXG4gIHZhciBzdWJ0eXBlLCBuZGF0YVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdDRVJUSUZJQ0FURSc6XG4gICAgICBuZGF0YSA9IGFzbjEuY2VydGlmaWNhdGUuZGVjb2RlKGRhdGEsICdkZXInKS50YnNDZXJ0aWZpY2F0ZS5zdWJqZWN0UHVibGljS2V5SW5mb1xuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGNhc2UgJ1BVQkxJQyBLRVknOlxuICAgICAgaWYgKCFuZGF0YSkge1xuICAgICAgICBuZGF0YSA9IGFzbjEuUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIH1cbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICBuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSA9IG5kYXRhLnN1YmplY3RQdWJsaWNLZXlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2VjJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhXG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ0VOQ1JZUFRFRCBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIGRhdGEgPSBkZWNyeXB0KGRhdGEsIHBhc3N3b3JkKVxuICAgICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGNhc2UgJ1BSSVZBVEUgS0VZJzpcbiAgICAgIG5kYXRhID0gYXNuMS5Qcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHN1YnR5cGUgPSBuZGF0YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oJy4nKVxuICAgICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTEzNTQ5LjEuMS4xJzpcbiAgICAgICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDUuMi4xJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VydmU6IG5kYXRhLmFsZ29yaXRobS5jdXJ2ZSxcbiAgICAgICAgICAgIHByaXZhdGVLZXk6IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpLnByaXZhdGVLZXlcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnByaXZfa2V5ID0gYXNuMS5EU0FwYXJhbS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIHBhcmFtczogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdSU0EgUFVCTElDIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ1JTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4gYXNuMS5SU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdEU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgIHBhcmFtczogYXNuMS5EU0FQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIH1cbiAgICBjYXNlICdFQyBQUklWQVRFIEtFWSc6XG4gICAgICBkYXRhID0gYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VydmU6IGRhdGEucGFyYW1ldGVycy52YWx1ZSxcbiAgICAgICAgcHJpdmF0ZUtleTogZGF0YS5wcml2YXRlS2V5XG4gICAgICB9XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICB9XG59XG5wYXJzZUtleXMuc2lnbmF0dXJlID0gYXNuMS5zaWduYXR1cmVcbmZ1bmN0aW9uIGRlY3J5cHQgKGRhdGEsIHBhc3N3b3JkKSB7XG4gIHZhciBzYWx0ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHRcbiAgdmFyIGl0ZXJzID0gcGFyc2VJbnQoZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLml0ZXJzLnRvU3RyaW5nKCksIDEwKVxuICB2YXIgYWxnbyA9IGFlc2lkW2RhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbignLicpXVxuICB2YXIgaXYgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdlxuICB2YXIgY2lwaGVyVGV4dCA9IGRhdGEuc3ViamVjdFByaXZhdGVLZXlcbiAgdmFyIGtleWxlbiA9IHBhcnNlSW50KGFsZ28uc3BsaXQoJy0nKVsxXSwgMTApIC8gOFxuICB2YXIga2V5ID0gY29tcGF0LnBia2RmMlN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJzLCBrZXlsZW4pXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBTcGxpdCBhIGZpbGVuYW1lIGludG8gW3Jvb3QsIGRpciwgYmFzZW5hbWUsIGV4dF0sIHVuaXggdmVyc2lvblxuLy8gJ3Jvb3QnIGlzIGp1c3QgYSBzbGFzaCwgb3Igbm90aGluZy5cbnZhciBzcGxpdFBhdGhSZSA9XG4gICAgL14oXFwvP3wpKFtcXHNcXFNdKj8pKCg/OlxcLnsxLDJ9fFteXFwvXSs/fCkoXFwuW14uXFwvXSp8KSkoPzpbXFwvXSopJC87XG52YXIgc3BsaXRQYXRoID0gZnVuY3Rpb24oZmlsZW5hbWUpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpO1xufTtcblxuLy8gcGF0aC5yZXNvbHZlKFtmcm9tIC4uLl0sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZXNvbHZlID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNvbHZlZFBhdGggPSAnJyxcbiAgICAgIHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIHZhciBwYXRoID0gKGkgPj0gMCkgPyBhcmd1bWVudHNbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBhbmQgaW52YWxpZCBlbnRyaWVzXG4gICAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9IGVsc2UgaWYgKCFwYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBwYXRoICsgJy8nICsgcmVzb2x2ZWRQYXRoO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcGF0aCBzaG91bGQgYmUgcmVzb2x2ZWQgdG8gYSBmdWxsIGFic29sdXRlIHBhdGgsIGJ1dFxuICAvLyBoYW5kbGUgcmVsYXRpdmUgcGF0aHMgdG8gYmUgc2FmZSAobWlnaHQgaGFwcGVuIHdoZW4gcHJvY2Vzcy5jd2QoKSBmYWlscylcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHJlc29sdmVkUGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFyZXNvbHZlZEFic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgcmV0dXJuICgocmVzb2x2ZWRBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHJlc29sdmVkUGF0aCkgfHwgJy4nO1xufTtcblxuLy8gcGF0aC5ub3JtYWxpemUocGF0aClcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMubm9ybWFsaXplID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKSxcbiAgICAgIHRyYWlsaW5nU2xhc2ggPSBzdWJzdHIocGF0aCwgLTEpID09PSAnLyc7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocGF0aC5zcGxpdCgnLycpLCBmdW5jdGlvbihwKSB7XG4gICAgcmV0dXJuICEhcDtcbiAgfSksICFpc0Fic29sdXRlKS5qb2luKCcvJyk7XG5cbiAgaWYgKCFwYXRoICYmICFpc0Fic29sdXRlKSB7XG4gICAgcGF0aCA9ICcuJztcbiAgfVxuICBpZiAocGF0aCAmJiB0cmFpbGluZ1NsYXNoKSB7XG4gICAgcGF0aCArPSAnLyc7XG4gIH1cblxuICByZXR1cm4gKGlzQWJzb2x1dGUgPyAnLycgOiAnJykgKyBwYXRoO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuam9pbiA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGF0aHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuICByZXR1cm4gZXhwb3J0cy5ub3JtYWxpemUoZmlsdGVyKHBhdGhzLCBmdW5jdGlvbihwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfVxuICAgIHJldHVybiBwO1xuICB9KS5qb2luKCcvJykpO1xufTtcblxuXG4vLyBwYXRoLnJlbGF0aXZlKGZyb20sIHRvKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5yZWxhdGl2ZSA9IGZ1bmN0aW9uKGZyb20sIHRvKSB7XG4gIGZyb20gPSBleHBvcnRzLnJlc29sdmUoZnJvbSkuc3Vic3RyKDEpO1xuICB0byA9IGV4cG9ydHMucmVzb2x2ZSh0bykuc3Vic3RyKDEpO1xuXG4gIGZ1bmN0aW9uIHRyaW0oYXJyKSB7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBmb3IgKDsgc3RhcnQgPCBhcnIubGVuZ3RoOyBzdGFydCsrKSB7XG4gICAgICBpZiAoYXJyW3N0YXJ0XSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIHZhciBlbmQgPSBhcnIubGVuZ3RoIC0gMTtcbiAgICBmb3IgKDsgZW5kID49IDA7IGVuZC0tKSB7XG4gICAgICBpZiAoYXJyW2VuZF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpO1xuICB9XG5cbiAgdmFyIGZyb21QYXJ0cyA9IHRyaW0oZnJvbS5zcGxpdCgnLycpKTtcbiAgdmFyIHRvUGFydHMgPSB0cmltKHRvLnNwbGl0KCcvJykpO1xuXG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLCB0b1BhcnRzLmxlbmd0aCk7XG4gIHZhciBzYW1lUGFydHNMZW5ndGggPSBsZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZnJvbVBhcnRzW2ldICE9PSB0b1BhcnRzW2ldKSB7XG4gICAgICBzYW1lUGFydHNMZW5ndGggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmFyIG91dHB1dFBhcnRzID0gW107XG4gIGZvciAodmFyIGkgPSBzYW1lUGFydHNMZW5ndGg7IGkgPCBmcm9tUGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRwdXRQYXJ0cy5wdXNoKCcuLicpO1xuICB9XG5cbiAgb3V0cHV0UGFydHMgPSBvdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtcblxuICByZXR1cm4gb3V0cHV0UGFydHMuam9pbignLycpO1xufTtcblxuZXhwb3J0cy5zZXAgPSAnLyc7XG5leHBvcnRzLmRlbGltaXRlciA9ICc6JztcblxuZXhwb3J0cy5kaXJuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICB2YXIgcmVzdWx0ID0gc3BsaXRQYXRoKHBhdGgpLFxuICAgICAgcm9vdCA9IHJlc3VsdFswXSxcbiAgICAgIGRpciA9IHJlc3VsdFsxXTtcblxuICBpZiAoIXJvb3QgJiYgIWRpcikge1xuICAgIC8vIE5vIGRpcm5hbWUgd2hhdHNvZXZlclxuICAgIHJldHVybiAnLic7XG4gIH1cblxuICBpZiAoZGlyKSB7XG4gICAgLy8gSXQgaGFzIGEgZGlybmFtZSwgc3RyaXAgdHJhaWxpbmcgc2xhc2hcbiAgICBkaXIgPSBkaXIuc3Vic3RyKDAsIGRpci5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJldHVybiByb290ICsgZGlyO1xufTtcblxuXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24ocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gc3BsaXRQYXRoKHBhdGgpWzJdO1xuICAvLyBUT0RPOiBtYWtlIHRoaXMgY29tcGFyaXNvbiBjYXNlLWluc2Vuc2l0aXZlIG9uIHdpbmRvd3M/XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5cbmV4cG9ydHMuZXh0bmFtZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHNwbGl0UGF0aChwYXRoKVszXTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsInZhciBjcmVhdGVIbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxudmFyIGNoZWNrUGFyYW1ldGVycyA9IHJlcXVpcmUoJy4vcHJlY29uZGl0aW9uJylcblxuZXhwb3J0cy5wYmtkZjIgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGRpZ2VzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZGlnZXN0XG4gICAgZGlnZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBjaGVja1BhcmFtZXRlcnMoaXRlcmF0aW9ucywga2V5bGVuKVxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMicpXG5cbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgY2FsbGJhY2sobnVsbCwgZXhwb3J0cy5wYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCkpXG4gIH0pXG59XG5cbnZhciBkZWZhdWx0RW5jb2RpbmdcbmlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufSBlbHNlIHtcbiAgdmFyIHBWZXJzaW9uTWFqb3IgPSBwYXJzZUludChwcm9jZXNzLnZlcnNpb24uc3BsaXQoJy4nKVswXS5zbGljZSgxKSwgMTApXG5cbiAgZGVmYXVsdEVuY29kaW5nID0gcFZlcnNpb25NYWpvciA+PSA2ID8gJ3V0Zi04JyA6ICdiaW5hcnknXG59XG5cbmV4cG9ydHMucGJrZGYyU3luYyA9IGZ1bmN0aW9uIChwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IG5ldyBCdWZmZXIocGFzc3dvcmQsIGRlZmF1bHRFbmNvZGluZylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc2FsdCkpIHNhbHQgPSBuZXcgQnVmZmVyKHNhbHQsIGRlZmF1bHRFbmNvZGluZylcblxuICBjaGVja1BhcmFtZXRlcnMoaXRlcmF0aW9ucywga2V5bGVuKVxuXG4gIGRpZ2VzdCA9IGRpZ2VzdCB8fCAnc2hhMSdcblxuICB2YXIgaExlblxuICB2YXIgbCA9IDFcbiAgdmFyIERLID0gbmV3IEJ1ZmZlcihrZXlsZW4pXG4gIHZhciBibG9jazEgPSBuZXcgQnVmZmVyKHNhbHQubGVuZ3RoICsgNClcbiAgc2FsdC5jb3B5KGJsb2NrMSwgMCwgMCwgc2FsdC5sZW5ndGgpXG5cbiAgdmFyIHJcbiAgdmFyIFRcblxuICBmb3IgKHZhciBpID0gMTsgaSA8PSBsOyBpKyspIHtcbiAgICBibG9jazEud3JpdGVVSW50MzJCRShpLCBzYWx0Lmxlbmd0aClcbiAgICB2YXIgVSA9IGNyZWF0ZUhtYWMoZGlnZXN0LCBwYXNzd29yZCkudXBkYXRlKGJsb2NrMSkuZGlnZXN0KClcblxuICAgIGlmICghaExlbikge1xuICAgICAgaExlbiA9IFUubGVuZ3RoXG4gICAgICBUID0gbmV3IEJ1ZmZlcihoTGVuKVxuICAgICAgbCA9IE1hdGguY2VpbChrZXlsZW4gLyBoTGVuKVxuICAgICAgciA9IGtleWxlbiAtIChsIC0gMSkgKiBoTGVuXG4gICAgfVxuXG4gICAgVS5jb3B5KFQsIDAsIDAsIGhMZW4pXG5cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8IGl0ZXJhdGlvbnM7IGorKykge1xuICAgICAgVSA9IGNyZWF0ZUhtYWMoZGlnZXN0LCBwYXNzd29yZCkudXBkYXRlKFUpLmRpZ2VzdCgpXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGhMZW47IGsrKykgVFtrXSBePSBVW2tdXG4gICAgfVxuXG4gICAgdmFyIGRlc3RQb3MgPSAoaSAtIDEpICogaExlblxuICAgIHZhciBsZW4gPSAoaSA9PT0gbCA/IHIgOiBoTGVuKVxuICAgIFQuY29weShESywgZGVzdFBvcywgMCwgbGVuKVxuICB9XG5cbiAgcmV0dXJuIERLXG59XG4iLCJ2YXIgTUFYX0FMTE9DID0gTWF0aC5wb3coMiwgMzApIC0gMSAvLyBkZWZhdWx0IGluIGlvanNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMsIGtleWxlbikge1xuICBpZiAodHlwZW9mIGl0ZXJhdGlvbnMgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSXRlcmF0aW9ucyBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGl0ZXJhdGlvbnMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGl0ZXJhdGlvbnMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlsZW4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignS2V5IGxlbmd0aCBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGtleWxlbiA8IDAgfHwga2V5bGVuID4gTUFYX0FMTE9DIHx8IGtleWxlbiAhPT0ga2V5bGVuKSB7IC8qIGVzbGludCBuby1zZWxmLWNvbXBhcmU6IDAgKi9cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQga2V5IGxlbmd0aCcpXG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKCFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBuZXh0VGljaztcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcy5uZXh0VGljaztcbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soZm4sIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2FsbGJhY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGFyZ3MsIGk7XG4gIHN3aXRjaCAobGVuKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTtcbiAgY2FzZSAyOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja09uZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7XG4gICAgfSk7XG4gIGNhc2UgMzpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIpO1xuICAgIH0pO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH0pO1xuICBkZWZhdWx0OlxuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgYXJnc1tpKytdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2soKSB7XG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsImV4cG9ydHMucHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJy4vcHVibGljRW5jcnlwdCcpO1xuZXhwb3J0cy5wcml2YXRlRGVjcnlwdCA9IHJlcXVpcmUoJy4vcHJpdmF0ZURlY3J5cHQnKTtcblxuZXhwb3J0cy5wcml2YXRlRW5jcnlwdCA9IGZ1bmN0aW9uIHByaXZhdGVFbmNyeXB0KGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnB1YmxpY0VuY3J5cHQoa2V5LCBidWYsIHRydWUpO1xufTtcblxuZXhwb3J0cy5wdWJsaWNEZWNyeXB0ID0gZnVuY3Rpb24gcHVibGljRGVjcnlwdChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wcml2YXRlRGVjcnlwdChrZXksIGJ1ZiwgdHJ1ZSk7XG59OyIsInZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNlZWQsIGxlbikge1xuICB2YXIgdCA9IG5ldyBCdWZmZXIoJycpO1xuICB2YXIgIGkgPSAwLCBjO1xuICB3aGlsZSAodC5sZW5ndGggPCBsZW4pIHtcbiAgICBjID0gaTJvcHMoaSsrKTtcbiAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwgY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShzZWVkKS51cGRhdGUoYykuZGlnZXN0KCldKTtcbiAgfVxuICByZXR1cm4gdC5zbGljZSgwLCBsZW4pO1xufTtcblxuZnVuY3Rpb24gaTJvcHMoYykge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcig0KTtcbiAgb3V0LndyaXRlVUludDMyQkUoYywwKTtcbiAgcmV0dXJuIG91dDtcbn0iLCJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpO1xudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJyk7XG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKTtcbnZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKTtcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKTtcbnZhciB3aXRoUHVibGljID0gcmVxdWlyZSgnLi93aXRoUHVibGljJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHByaXZhdGVEZWNyeXB0KHByaXZhdGVfa2V5LCBlbmMsIHJldmVyc2UpIHtcbiAgdmFyIHBhZGRpbmc7XG4gIGlmIChwcml2YXRlX2tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHByaXZhdGVfa2V5LnBhZGRpbmc7XG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxO1xuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0O1xuICB9XG4gIFxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHByaXZhdGVfa2V5KTtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIGlmIChlbmMubGVuZ3RoID4gayB8fCBuZXcgYm4oZW5jKS5jbXAoa2V5Lm1vZHVsdXMpID49IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICB2YXIgbXNnO1xuICBpZiAocmV2ZXJzZSkge1xuICAgIG1zZyA9IHdpdGhQdWJsaWMobmV3IGJuKGVuYyksIGtleSk7XG4gIH0gZWxzZSB7XG4gICAgbXNnID0gY3J0KGVuYywga2V5KTtcbiAgfVxuICB2YXIgekJ1ZmZlciA9IG5ldyBCdWZmZXIoayAtIG1zZy5sZW5ndGgpO1xuICB6QnVmZmVyLmZpbGwoMCk7XG4gIG1zZyA9IEJ1ZmZlci5jb25jYXQoW3pCdWZmZXIsIG1zZ10sIGspO1xuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHJldHVybiBvYWVwKGtleSwgbXNnKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAxKSB7XG4gICAgcmV0dXJuIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcmV0dXJuIG1zZztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBvYWVwKGtleSwgbXNnKXtcbiAgdmFyIG4gPSBrZXkubW9kdWx1cztcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShuZXcgQnVmZmVyKCcnKSkuZGlnZXN0KCk7XG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoO1xuICB2YXIgaExlbjIgPSAyICogaExlbjtcbiAgaWYgKG1zZ1swXSAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBtYXNrZWRTZWVkID0gbXNnLnNsaWNlKDEsIGhMZW4gKyAxKTtcbiAgdmFyIG1hc2tlZERiID0gIG1zZy5zbGljZShoTGVuICsgMSk7XG4gIHZhciBzZWVkID0geG9yKG1hc2tlZFNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpO1xuICB2YXIgZGIgPSB4b3IobWFza2VkRGIsIG1nZihzZWVkLCBrIC0gaExlbiAtIDEpKTtcbiAgaWYgKGNvbXBhcmUoaUhhc2gsIGRiLnNsaWNlKDAsIGhMZW4pKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBpID0gaExlbjtcbiAgd2hpbGUgKGRiW2ldID09PSAwKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChkYltpKytdICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgcmV0dXJuIGRiLnNsaWNlKGkpO1xufVxuXG5mdW5jdGlvbiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSl7XG4gIHZhciBwMSA9IG1zZy5zbGljZSgwLCAyKTtcbiAgdmFyIGkgPSAyO1xuICB2YXIgc3RhdHVzID0gMDtcbiAgd2hpbGUgKG1zZ1tpKytdICE9PSAwKSB7XG4gICAgaWYgKGkgPj0gbXNnLmxlbmd0aCkge1xuICAgICAgc3RhdHVzKys7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdmFyIHBzID0gbXNnLnNsaWNlKDIsIGkgLSAxKTtcbiAgdmFyIHAyID0gbXNnLnNsaWNlKGkgLSAxLCBpKTtcblxuICBpZiAoKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDInICYmICFyZXZlcnNlKSB8fCAocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMScgJiYgcmV2ZXJzZSkpe1xuICAgIHN0YXR1cysrO1xuICB9XG4gIGlmIChwcy5sZW5ndGggPCA4KSB7XG4gICAgc3RhdHVzKys7XG4gIH1cbiAgaWYgKHN0YXR1cykge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHJldHVybiAgbXNnLnNsaWNlKGkpO1xufVxuZnVuY3Rpb24gY29tcGFyZShhLCBiKXtcbiAgYSA9IG5ldyBCdWZmZXIoYSk7XG4gIGIgPSBuZXcgQnVmZmVyKGIpO1xuICB2YXIgZGlmID0gMDtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgZGlmKys7XG4gICAgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgfVxuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgZGlmICs9IChhW2ldIF4gYltpXSk7XG4gIH1cbiAgcmV0dXJuIGRpZjtcbn0iLCJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKTtcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpO1xudmFyIHhvciA9IHJlcXVpcmUoJy4veG9yJyk7XG52YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKTtcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpO1xuXG52YXIgY29uc3RhbnRzID0ge1xuICBSU0FfUEtDUzFfT0FFUF9QQURESU5HOiA0LFxuICBSU0FfUEtDUzFfUEFERElOOiAxLFxuICBSU0FfTk9fUEFERElORzogM1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwdWJsaWNFbmNyeXB0KHB1YmxpY19rZXksIG1zZywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZztcbiAgaWYgKHB1YmxpY19rZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwdWJsaWNfa2V5LnBhZGRpbmc7XG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxO1xuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0O1xuICB9XG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHVibGljX2tleSk7XG4gIHZhciBwYWRkZWRNc2c7XG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcGFkZGVkTXNnID0gb2FlcChrZXksIG1zZyk7XG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHBhZGRlZE1zZyA9IHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcGFkZGVkTXNnID0gbmV3IGJuKG1zZyk7XG4gICAgaWYgKHBhZGRlZE1zZy5jbXAoa2V5Lm1vZHVsdXMpID49IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZGF0YSB0b28gbG9uZyBmb3IgbW9kdWx1cycpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpO1xuICB9XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcmV0dXJuIGNydChwYWRkZWRNc2csIGtleSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHdpdGhQdWJsaWMocGFkZGVkTXNnLCBrZXkpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBvYWVwKGtleSwgbXNnKXtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShuZXcgQnVmZmVyKCcnKSkuZGlnZXN0KCk7XG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoO1xuICB2YXIgaExlbjIgPSAyICogaExlbjtcbiAgaWYgKG1MZW4gPiBrIC0gaExlbjIgLSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJyk7XG4gIH1cbiAgdmFyIHBzID0gbmV3IEJ1ZmZlcihrIC0gbUxlbiAtIGhMZW4yIC0gMik7XG4gIHBzLmZpbGwoMCk7XG4gIHZhciBkYmxlbiA9IGsgLSBoTGVuIC0gMTtcbiAgdmFyIHNlZWQgPSByYW5kb21CeXRlcyhoTGVuKTtcbiAgdmFyIG1hc2tlZERiID0geG9yKEJ1ZmZlci5jb25jYXQoW2lIYXNoLCBwcywgbmV3IEJ1ZmZlcihbMV0pLCBtc2ddLCBkYmxlbiksIG1nZihzZWVkLCBkYmxlbikpO1xuICB2YXIgbWFza2VkU2VlZCA9IHhvcihzZWVkLCBtZ2YobWFza2VkRGIsIGhMZW4pKTtcbiAgcmV0dXJuIG5ldyBibihCdWZmZXIuY29uY2F0KFtuZXcgQnVmZmVyKFswXSksIG1hc2tlZFNlZWQsIG1hc2tlZERiXSwgaykpO1xufVxuZnVuY3Rpb24gcGtjczEoa2V5LCBtc2csIHJldmVyc2Upe1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGg7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpO1xuICBpZiAobUxlbiA+IGsgLSAxMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpO1xuICB9XG4gIHZhciBwcztcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBwcyA9IG5ldyBCdWZmZXIoayAtIG1MZW4gLSAzKTtcbiAgICBwcy5maWxsKDB4ZmYpO1xuICB9IGVsc2Uge1xuICAgIHBzID0gbm9uWmVybyhrIC0gbUxlbiAtIDMpO1xuICB9XG4gIHJldHVybiBuZXcgYm4oQnVmZmVyLmNvbmNhdChbbmV3IEJ1ZmZlcihbMCwgcmV2ZXJzZT8xOjJdKSwgcHMsIG5ldyBCdWZmZXIoWzBdKSwgbXNnXSwgaykpO1xufVxuZnVuY3Rpb24gbm9uWmVybyhsZW4sIGNyeXB0bykge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbioyKTtcbiAgdmFyIGN1ciA9IDA7XG4gIHZhciBudW07XG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgaWYgKGN1ciA9PT0gY2FjaGUubGVuZ3RoKSB7XG4gICAgICBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbioyKTtcbiAgICAgIGN1ciA9IDA7XG4gICAgfVxuICAgIG51bSA9IGNhY2hlW2N1cisrXTtcbiAgICBpZiAobnVtKSB7XG4gICAgICBvdXRbaSsrXSA9IG51bTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn0iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xuZnVuY3Rpb24gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcihwYWRkZWRNc2dcbiAgICAudG9SZWQoYm4ubW9udChrZXkubW9kdWx1cykpXG4gICAgLnJlZFBvdyhuZXcgYm4oa2V5LnB1YmxpY0V4cG9uZW50KSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLnRvQXJyYXkoKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aFB1YmxpYzsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhvcihhLCBiKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGFbaV0gXj0gYltpXTtcbiAgfVxuICByZXR1cm4gYVxufTsiLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gb2xkQnJvd3NlciAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxcbnVzZSBjaHJvbWUsIEZpcmVGb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEnKVxufVxuXG52YXIgY3J5cHRvID0gZ2xvYmFsLmNyeXB0byB8fCBnbG9iYWwubXNDcnlwdG9cblxuaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmFuZG9tQnl0ZXNcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gb2xkQnJvd3NlclxufVxuXG5mdW5jdGlvbiByYW5kb21CeXRlcyAoc2l6ZSwgY2IpIHtcbiAgLy8gcGhhbnRvbWpzIG5lZWRzIHRvIHRocm93XG4gIGlmIChzaXplID4gNjU1MzYpIHRocm93IG5ldyBFcnJvcigncmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcycpXG4gIC8vIGluIGNhc2UgYnJvd3NlcmlmeSAgaXNuJ3QgdXNpbmcgdGhlIFVpbnQ4QXJyYXkgdmVyc2lvblxuICB2YXIgcmF3Qnl0ZXMgPSBuZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoc2l6ZSlcblxuICAvLyBUaGlzIHdpbGwgbm90IHdvcmsgaW4gb2xkZXIgYnJvd3NlcnMuXG4gIC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXNcbiAgaWYgKHNpemUgPiAwKSB7ICAvLyBnZXRSYW5kb21WYWx1ZXMgZmFpbHMgb24gSUUgaWYgc2l6ZSA9PSAwXG4gICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhyYXdCeXRlcylcbiAgfVxuICAvLyBwaGFudG9tanMgZG9lc24ndCBsaWtlIGEgYnVmZmVyIGJlaW5nIHBhc3NlZCBoZXJlXG4gIHZhciBieXRlcyA9IG5ldyBCdWZmZXIocmF3Qnl0ZXMuYnVmZmVyKVxuXG4gIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBjYihudWxsLCBieXRlcylcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX2R1cGxleC5qc1wiKVxuIiwiLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHByb2Nlc3NOZXh0VGljayA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV93cml0YWJsZScpO1xuXG51dGlsLmluaGVyaXRzKER1cGxleCwgUmVhZGFibGUpO1xuXG52YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbmZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICB2YXIgbWV0aG9kID0ga2V5c1t2XTtcbiAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG5cbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG5cbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG59XG5cbi8vIHRoZSBuby1oYWxmLW9wZW4gZW5mb3JjZXJcbmZ1bmN0aW9uIG9uZW5kKCkge1xuICAvLyBpZiB3ZSBhbGxvdyBoYWxmLW9wZW4gc3RhdGUsIG9yIGlmIHRoZSB3cml0YWJsZSBzaWRlIGVuZGVkLFxuICAvLyB0aGVuIHdlJ3JlIG9rLlxuICBpZiAodGhpcy5hbGxvd0hhbGZPcGVuIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybjtcblxuICAvLyBubyBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4uXG4gIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLlxuICBwcm9jZXNzTmV4dFRpY2sob25FbmROVCwgdGhpcyk7XG59XG5cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn0iLCIvLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtO1xuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBTdHJlYW0gPSByZXF1aXJlKCdzdCcgKyAncmVhbScpO1xuICB9IGNhdGNoIChfKSB7fSBmaW5hbGx5IHtcbiAgICBpZiAoIVN0cmVhbSkgU3RyZWFtID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuICB9XG59KSgpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGJ1ZmZlclNoaW0gPSByZXF1aXJlKCdidWZmZXItc2hpbXMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgZGVidWdVdGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIGRlYnVnID0gdm9pZCAwO1xuaWYgKGRlYnVnVXRpbCAmJiBkZWJ1Z1V0aWwuZGVidWdsb2cpIHtcbiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpO1xufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbiAoKSB7fTtcbn1cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnlcbiAgICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gICAgLy8gdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICAgIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH5+dGhpcy5oaWdoV2F0ZXJNYXJrO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIHdoZW4gcGlwaW5nLCB3ZSBvbmx5IGNhcmUgYWJvdXQgJ3JlYWRhYmxlJyBldmVudHMgdGhhdCBoYXBwZW5cbiAgLy8gYWZ0ZXIgcmVhZCgpaW5nIGFsbCB0aGUgYnl0ZXMgYW5kIG5vdCBnZXR0aW5nIGFueSBwdXNoYmFjay5cbiAgdGhpcy5yYW5PdXQgPSBmYWxzZTtcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gICAgICBlbmNvZGluZyA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlKTtcbn07XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5SZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssICcnLCB0cnVlKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgYWRkVG9Gcm9udCkge1xuICB2YXIgZXIgPSBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKTtcbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2UgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHN0YXRlLmVuZGVkICYmICFhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgZSA9IG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGUpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kRW1pdHRlZCAmJiBhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgX2UgPSBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50Jyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBfZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBza2lwQWRkO1xuICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWFkZFRvRnJvbnQgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgIHNraXBBZGQgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBjaHVuay5sZW5ndGggPT09IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWRkVG9Gcm9udCkgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuXG4gICAgICAvLyBEb24ndCBhZGQgdG8gdGhlIGJ1ZmZlciBpZiB3ZSd2ZSBkZWNvZGVkIHRvIGFuIGVtcHR5IHN0cmluZyBjaHVuayBhbmRcbiAgICAgIC8vIHdlJ3JlIG5vdCBpbiBvYmplY3QgbW9kZVxuICAgICAgaWYgKCFza2lwQWRkKSB7XG4gICAgICAgIC8vIGlmIHdlIHdhbnQgdGhlIGRhdGEgbm93LCBqdXN0IGVtaXQgaXQuXG4gICAgICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgICAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICAgICAgICAgIHN0cmVhbS5yZWFkKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgICAgICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG5cbiAgICAgICAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5SZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDhNQlxudmFyIE1BWF9IV00gPSAweDgwMDAwMDtcbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cbiAgcmV0dXJuIG47XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcbiAgaWYgKG4gIT09IG4pIHtcbiAgICAvLyBPbmx5IGZsb3cgb25lIGJ1ZmZlciBhdCBhIHRpbWVcbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgLy8gSWYgd2UncmUgYXNraW5nIGZvciBtb3JlIHRoYW4gdGhlIGN1cnJlbnQgaHdtLCB0aGVuIHJhaXNlIHRoZSBod20uXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuO1xuICAvLyBEb24ndCBoYXZlIGVub3VnaFxuICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufVxuXG4vLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuUmVhZGFibGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAobikge1xuICBkZWJ1ZygncmVhZCcsIG4pO1xuICBuID0gcGFyc2VJbnQobiwgMTApO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgbk9yaWcgPSBuO1xuXG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcblxuICAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoc3RhdGUubGVuZ3RoID49IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpO1xuXG4gIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmVcbiAgLy8gKmJlbG93KiB0aGUgY2FsbCB0byBfcmVhZC4gIFRoZSByZWFzb24gaXMgdGhhdCBpbiBjZXJ0YWluXG4gIC8vIHN5bnRoZXRpYyBzdHJlYW0gY2FzZXMsIHN1Y2ggYXMgcGFzc3Rocm91Z2ggc3RyZWFtcywgX3JlYWRcbiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZVxuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHJlYWQgYnVmZmVyLCBwcm92aWRpbmcgZW5vdWdoIGRhdGEgd2hlblxuICAvLyBiZWZvcmUgdGhlcmUgd2FzICpub3QqIGVub3VnaC5cbiAgLy9cbiAgLy8gU28sIHRoZSBzdGVwcyBhcmU6XG4gIC8vIDEuIEZpZ3VyZSBvdXQgd2hhdCB0aGUgc3RhdGUgb2YgdGhpbmdzIHdpbGwgYmUgYWZ0ZXIgd2UgZG9cbiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci5cbiAgLy9cbiAgLy8gMi4gSWYgdGhhdCByZXN1bHRpbmcgc3RhdGUgd2lsbCB0cmlnZ2VyIGEgX3JlYWQsIHRoZW4gY2FsbCBfcmVhZC5cbiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzXG4gIC8vIGRlZXBseSB1Z2x5IHRvIHdyaXRlIEFQSXMgdGhpcyB3YXksIGJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3QgbWVhblxuICAvLyB0aGF0IHRoZSBSZWFkYWJsZSBjbGFzcyBzaG91bGQgYmVoYXZlIGltcHJvcGVybHksIGFzIHN0cmVhbXMgYXJlXG4gIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuXG4gIC8vIFRha2Ugbm90ZSBpZiB0aGUgX3JlYWQgY2FsbCBpcyBzeW5jIG9yIGFzeW5jIChpZSwgaWYgdGhlIHJlYWQgY2FsbFxuICAvLyBoYXMgcmV0dXJuZWQgeWV0KSwgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgb3Igbm90IGl0J3Mgc2FmZSB0byBlbWl0XG4gIC8vICdyZWFkYWJsZScgZXRjLlxuICAvL1xuICAvLyAzLiBBY3R1YWxseSBwdWxsIHRoZSByZXF1ZXN0ZWQgY2h1bmtzIG91dCBvZiB0aGUgYnVmZmVyIGFuZCByZXR1cm4uXG5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7XG5cbiAgLy8gaWYgd2UgY3VycmVudGx5IGhhdmUgbGVzcyB0aGFuIHRoZSBoaWdoV2F0ZXJNYXJrLCB0aGVuIGFsc28gcmVhZCBzb21lXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH1cblxuICAvLyBob3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBhbmQgaWYgd2UncmUgYWxyZWFkeVxuICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7XG4gICAgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIHN0YXRlLnN5bmMgPSBmYWxzZTtcbiAgICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cbiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG4gIH1cblxuICB2YXIgcmV0O1xuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKTtlbHNlIHJldCA9IG51bGw7XG5cbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyID0gbnVsbDtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwcm9jZXNzTmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YXRlLnBpcGVzID0gZGVzdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3RhdGUucGlwZXNDb3VudCArPSAxO1xuICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpO1xuXG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG5cbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IGNsZWFudXA7XG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzTmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTtcblxuICBkZXN0Lm9uKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ29udW5waXBlJyk7XG4gICAgaWYgKHJlYWRhYmxlID09PSBzcmMpIHtcbiAgICAgIGNsZWFudXAoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKTtcbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICB2YXIgY2xlYW5lZFVwID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTtcbiAgICAvLyBjbGVhbnVwIGV2ZW50IGhhbmRsZXJzIG9uY2UgdGhlIHBpcGUgaXMgYnJva2VuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG5cbiAgICBjbGVhbmVkVXAgPSB0cnVlO1xuXG4gICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiAmJiAoIWRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pKSBvbmRyYWluKCk7XG4gIH1cblxuICAvLyBJZiB0aGUgdXNlciBwdXNoZXMgbW9yZSBkYXRhIHdoaWxlIHdlJ3JlIHdyaXRpbmcgdG8gZGVzdCB0aGVuIHdlJ2xsIGVuZCB1cFxuICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZVxuICAvLyBkZXN0IHdpbGwgb25seSBlbWl0IG9uZSAnZHJhaW4nIGV2ZW50IGZvciB0aGUgbXVsdGlwbGUgd3JpdGVzLlxuICAvLyA9PiBJbnRyb2R1Y2UgYSBndWFyZCBvbiBpbmNyZWFzaW5nIGF3YWl0RHJhaW4uXG4gIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKys7XG4gICAgICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgc3JjLnBhdXNlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGRlYnVnKCdvbmVycm9yJywgZXIpO1xuICAgIHVucGlwZSgpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgaWYgKEVFbGlzdGVuZXJDb3VudChkZXN0LCAnZXJyb3InKSA9PT0gMCkgZGVzdC5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKTtcbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblxuICBmdW5jdGlvbiB1bnBpcGUoKSB7XG4gICAgZGVidWcoJ3VucGlwZScpO1xuICAgIHNyYy51bnBpcGUoZGVzdCk7XG4gIH1cblxuICAvLyB0ZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0b1xuICBkZXN0LmVtaXQoJ3BpcGUnLCBzcmMpO1xuXG4gIC8vIHN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BpcGUgcmVzdW1lJyk7XG4gICAgc3JjLnJlc3VtZSgpO1xuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG5mdW5jdGlvbiBwaXBlT25EcmFpbihzcmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhdGUgPSBzcmMuX3JlYWRhYmxlU3RhdGU7XG4gICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiA9PT0gMCAmJiBFRWxpc3RlbmVyQ291bnQoc3JjLCAnZGF0YScpKSB7XG4gICAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICAgIGZsb3coc3JjKTtcbiAgICB9XG4gIH07XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGUgPSBmdW5jdGlvbiAoZGVzdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzO1xuXG4gIC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHtcbiAgICAvLyBwYXNzZWQgaW4gb25lLCBidXQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZS5cbiAgICBpZiAoZGVzdCAmJiBkZXN0ICE9PSBzdGF0ZS5waXBlcykgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIH1yZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuXG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yXG4vLyBFbnN1cmUgcmVhZGFibGUgbGlzdGVuZXJzIGV2ZW50dWFsbHkgZ2V0IHNvbWV0aGluZ1xuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcHJvY2Vzc05leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssIHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMsIHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7XG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzTmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIGRlYnVnKCdyZXN1bWUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmIChmYWxzZSAhPT0gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKSB7fVxufVxuXG4vLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHBhdXNlZCA9IGZhbHNlO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgc2VsZi5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBzZWxmLnB1c2gobnVsbCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgIGRlYnVnKCd3cmFwcGVkIGRhdGEnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLndyaXRlKGNodW5rKTtcblxuICAgIC8vIGRvbid0IHNraXAgb3ZlciBmYWxzeSB2YWx1ZXMgaW4gb2JqZWN0TW9kZVxuICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlICYmIChjaHVuayA9PT0gbnVsbCB8fCBjaHVuayA9PT0gdW5kZWZpbmVkKSkgcmV0dXJuO2Vsc2UgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmICghY2h1bmsgfHwgIWNodW5rLmxlbmd0aCkpIHJldHVybjtcblxuICAgIHZhciByZXQgPSBzZWxmLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm94eSBjZXJ0YWluIGltcG9ydGFudCBldmVudHMuXG4gIHZhciBldmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107XG4gIGZvckVhY2goZXZlbnRzLCBmdW5jdGlvbiAoZXYpIHtcbiAgICBzdHJlYW0ub24oZXYsIHNlbGYuZW1pdC5iaW5kKHNlbGYsIGV2KSk7XG4gIH0pO1xuXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGNvbnN1bWUgc29tZSBtb3JlIGJ5dGVzLCBzaW1wbHkgdW5wYXVzZSB0aGVcbiAgLy8gdW5kZXJseWluZyBzdHJlYW0uXG4gIHNlbGYuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG4gICAgaWYgKHBhdXNlZCkge1xuICAgICAgcGF1c2VkID0gZmFsc2U7XG4gICAgICBzdHJlYW0ucmVzdW1lKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBzZWxmO1xufTtcblxuLy8gZXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LlxuUmVhZGFibGUuX2Zyb21MaXN0ID0gZnJvbUxpc3Q7XG5cbi8vIFBsdWNrIG9mZiBuIGJ5dGVzIGZyb20gYW4gYXJyYXkgb2YgYnVmZmVycy5cbi8vIExlbmd0aCBpcyB0aGUgY29tYmluZWQgbGVuZ3RocyBvZiBhbGwgdGhlIGJ1ZmZlcnMgaW4gdGhlIGxpc3QuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGZyb21MaXN0KG4sIHN0YXRlKSB7XG4gIC8vIG5vdGhpbmcgYnVmZmVyZWRcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIHJldDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7XG4gICAgLy8gcmVhZCBpdCBhbGwsIHRydW5jYXRlIHRoZSBsaXN0XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIHJldCA9IHN0YXRlLmJ1ZmZlci5qb2luKCcnKTtlbHNlIGlmIChzdGF0ZS5idWZmZXIubGVuZ3RoID09PSAxKSByZXQgPSBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhO2Vsc2UgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbmNhdChzdGF0ZS5sZW5ndGgpO1xuICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlYWQgcGFydCBvZiBsaXN0XG4gICAgcmV0ID0gZnJvbUxpc3RQYXJ0aWFsKG4sIHN0YXRlLmJ1ZmZlciwgc3RhdGUuZGVjb2Rlcik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vLyBFeHRyYWN0cyBvbmx5IGVub3VnaCBidWZmZXJlZCBkYXRhIHRvIHNhdGlzZnkgdGhlIGFtb3VudCByZXF1ZXN0ZWQuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGZyb21MaXN0UGFydGlhbChuLCBsaXN0LCBoYXNTdHJpbmdzKSB7XG4gIHZhciByZXQ7XG4gIGlmIChuIDwgbGlzdC5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgLy8gc2xpY2UgaXMgdGhlIHNhbWUgZm9yIGJ1ZmZlcnMgYW5kIHN0cmluZ3NcbiAgICByZXQgPSBsaXN0LmhlYWQuZGF0YS5zbGljZSgwLCBuKTtcbiAgICBsaXN0LmhlYWQuZGF0YSA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKG4pO1xuICB9IGVsc2UgaWYgKG4gPT09IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIGZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaFxuICAgIHJldCA9IGxpc3Quc2hpZnQoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZXN1bHQgc3BhbnMgbW9yZSB0aGFuIG9uZSBidWZmZXJcbiAgICByZXQgPSBoYXNTdHJpbmdzID8gY29weUZyb21CdWZmZXJTdHJpbmcobiwgbGlzdCkgOiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vLyBDb3BpZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhXG4vLyBjaHVua3MuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIHtcbiAgdmFyIHAgPSBsaXN0LmhlYWQ7XG4gIHZhciBjID0gMTtcbiAgdmFyIHJldCA9IHAuZGF0YTtcbiAgbiAtPSByZXQubGVuZ3RoO1xuICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgIHZhciBzdHIgPSBwLmRhdGE7XG4gICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjtcbiAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHJldCArPSBzdHI7ZWxzZSByZXQgKz0gc3RyLnNsaWNlKDAsIG4pO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBzdHIuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG4vLyBDb3BpZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YSBjaHVua3MuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGNvcHlGcm9tQnVmZmVyKG4sIGxpc3QpIHtcbiAgdmFyIHJldCA9IGJ1ZmZlclNoaW0uYWxsb2NVbnNhZmUobik7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHAuZGF0YS5jb3B5KHJldCk7XG4gIG4gLT0gcC5kYXRhLmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBidWYubGVuZ3RoID8gYnVmLmxlbmd0aCA6IG47XG4gICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gYnVmLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIElmIHdlIGdldCBoZXJlIGJlZm9yZSBjb25zdW1pbmcgYWxsIHRoZSBieXRlcywgdGhlbiB0aGF0IGlzIGFcbiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLlxuICBpZiAoc3RhdGUubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKCdcImVuZFJlYWRhYmxlKClcIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzTmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgc3RhdGUuZW5kRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvckVhY2goeHMsIGYpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmKHhzW2ldLCBpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuICByZXR1cm4gLTE7XG59IiwiLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtO1xuXG52YXIgRHVwbGV4ID0gcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoVHJhbnNmb3JtLCBEdXBsZXgpO1xuXG5mdW5jdGlvbiBUcmFuc2Zvcm1TdGF0ZShzdHJlYW0pIHtcbiAgdGhpcy5hZnRlclRyYW5zZm9ybSA9IGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgIHJldHVybiBhZnRlclRyYW5zZm9ybShzdHJlYW0sIGVyLCBkYXRhKTtcbiAgfTtcblxuICB0aGlzLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgdGhpcy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcbiAgdGhpcy53cml0ZWNiID0gbnVsbDtcbiAgdGhpcy53cml0ZWNodW5rID0gbnVsbDtcbiAgdGhpcy53cml0ZWVuY29kaW5nID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oc3RyZWFtLCBlciwgZGF0YSkge1xuICB2YXIgdHMgPSBzdHJlYW0uX3RyYW5zZm9ybVN0YXRlO1xuICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcblxuICB2YXIgY2IgPSB0cy53cml0ZWNiO1xuXG4gIGlmICghY2IpIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ25vIHdyaXRlY2IgaW4gVHJhbnNmb3JtIGNsYXNzJykpO1xuXG4gIHRzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0cy53cml0ZWNiID0gbnVsbDtcblxuICBpZiAoZGF0YSAhPT0gbnVsbCAmJiBkYXRhICE9PSB1bmRlZmluZWQpIHN0cmVhbS5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHJzLnJlYWRpbmcgPSBmYWxzZTtcbiAgaWYgKHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgc3RyZWFtLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTtcblxuICBEdXBsZXguY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IG5ldyBUcmFuc2Zvcm1TdGF0ZSh0aGlzKTtcblxuICB2YXIgc3RyZWFtID0gdGhpcztcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uY2UoJ3ByZWZpbmlzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ZsdXNoID09PSAnZnVuY3Rpb24nKSB0aGlzLl9mbHVzaChmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICAgIGRvbmUoc3RyZWFtLCBlciwgZGF0YSk7XG4gICAgfSk7ZWxzZSBkb25lKHN0cmVhbSk7XG4gIH0pO1xufVxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgcmV0dXJuIER1cGxleC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsIGNodW5rLCBlbmNvZGluZyk7XG59O1xuXG4vLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHlvdSBkbyBzdHVmZiFcbi8vIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gaW4gaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vICdjaHVuaycgaXMgYW4gaW5wdXQgY2h1bmsuXG4vL1xuLy8gQ2FsbCBgcHVzaChuZXdDaHVuaylgIHRvIHBhc3MgYWxvbmcgdHJhbnNmb3JtZWQgb3V0cHV0XG4vLyB0byB0aGUgcmVhZGFibGUgc2lkZS4gIFlvdSBtYXkgY2FsbCAncHVzaCcgemVybyBvciBtb3JlIHRpbWVzLlxuLy9cbi8vIENhbGwgYGNiKGVycilgIHdoZW4geW91IGFyZSBkb25lIHdpdGggdGhpcyBjaHVuay4gIElmIHlvdSBwYXNzXG4vLyBhbiBlcnJvciwgdGhlbiB0aGF0J2xsIHB1dCB0aGUgaHVydCBvbiB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgSWYgeW91XG4vLyBuZXZlciBjYWxsIGNiKCksIHRoZW4geW91J2xsIG5ldmVyIGdldCBhbm90aGVyIGNodW5rLlxuVHJhbnNmb3JtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdHJhbnNmb3JtKCkgaXMgbm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07XG5cbi8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAodHMud3JpdGVjaHVuayAhPT0gbnVsbCAmJiB0cy53cml0ZWNiICYmICF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB0cy50cmFuc2Zvcm1pbmcgPSB0cnVlO1xuICAgIHRoaXMuX3RyYW5zZm9ybSh0cy53cml0ZWNodW5rLCB0cy53cml0ZWVuY29kaW5nLCB0cy5hZnRlclRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpblxuICAgIC8vIHdpbGwgZ2V0IHByb2Nlc3NlZCwgbm93IHRoYXQgd2UndmUgYXNrZWQgZm9yIGl0LlxuICAgIHRzLm5lZWRUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgaWYgKGVyKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuXG4gIGlmIChkYXRhICE9PSBudWxsICYmIGRhdGEgIT09IHVuZGVmaW5lZCkgc3RyZWFtLnB1c2goZGF0YSk7XG5cbiAgLy8gaWYgdGhlcmUncyBub3RoaW5nIGluIHRoZSB3cml0ZSBidWZmZXIsIHRoZW4gdGhhdCBtZWFuc1xuICAvLyB0aGF0IG5vdGhpbmcgbW9yZSB3aWxsIGV2ZXIgYmUgcHJvdmlkZWRcbiAgdmFyIHdzID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgdHMgPSBzdHJlYW0uX3RyYW5zZm9ybVN0YXRlO1xuXG4gIGlmICh3cy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHdzLmxlbmd0aCAhPSAwJyk7XG5cbiAgaWYgKHRzLnRyYW5zZm9ybWluZykgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gc3RpbGwgdHJhbnNmb3JtaW5nJyk7XG5cbiAgcmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xufSIsIi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHByb2Nlc3NOZXh0VGljayA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBhc3luY1dyaXRlID0gIXByb2Nlc3MuYnJvd3NlciAmJiBbJ3YwLjEwJywgJ3YwLjkuJ10uaW5kZXhPZihwcm9jZXNzLnZlcnNpb24uc2xpY2UoMCwgNSkpID4gLTEgPyBzZXRJbW1lZGlhdGUgOiBwcm9jZXNzTmV4dFRpY2s7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuV3JpdGFibGUuV3JpdGFibGVTdGF0ZSA9IFdyaXRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpbnRlcm5hbFV0aWwgPSB7XG4gIGRlcHJlY2F0ZTogcmVxdWlyZSgndXRpbC1kZXByZWNhdGUnKVxufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbTtcbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgU3RyZWFtID0gcmVxdWlyZSgnc3QnICsgJ3JlYW0nKTtcbiAgfSBjYXRjaCAoXykge30gZmluYWxseSB7XG4gICAgaWYgKCFTdHJlYW0pIFN0cmVhbSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiAgfVxufSkoKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aGlzLmNodW5rID0gY2h1bms7XG4gIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgdGhpcy5jYWxsYmFjayA9IGNiO1xuICB0aGlzLm5leHQgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlO1xuXG4gIC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH5+dGhpcy5oaWdoV2F0ZXJNYXJrO1xuXG4gIC8vIGRyYWluIGV2ZW50IGZsYWcuXG4gIHRoaXMubmVlZERyYWluID0gZmFsc2U7XG4gIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7XG4gIC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cbiAgdmFyIG5vRGVjb2RlID0gb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG4gIHRoaXMubGVuZ3RoID0gMDtcblxuICAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcblxuICAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG4gIHRoaXMuY29ya2VkID0gMDtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuICB0aGlzLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG4gIHRoaXMub253cml0ZSA9IGZ1bmN0aW9uIChlcikge1xuICAgIG9ud3JpdGUoc3RyZWFtLCBlcik7XG4gIH07XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG5cbiAgLy8gdGhlIGFtb3VudCB0aGF0IGlzIGJlaW5nIHdyaXR0ZW4gd2hlbiBfd3JpdGUgaXMgY2FsbGVkLlxuICB0aGlzLndyaXRlbGVuID0gMDtcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG5cbiAgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG4gIHRoaXMucGVuZGluZ2NiID0gMDtcblxuICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuXG4gIC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuXG4gIC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpO1xufVxuXG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7XG4gIHZhciBjdXJyZW50ID0gdGhpcy5idWZmZXJlZFJlcXVlc3Q7XG4gIHZhciBvdXQgPSBbXTtcbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICBvdXQucHVzaChjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHtcbiAgICAgIGdldDogaW50ZXJuYWxVdGlsLmRlcHJlY2F0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpO1xuICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTtcblxuLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgaWYgKHJlYWxIYXNJbnN0YW5jZS5jYWxsKHRoaXMsIG9iamVjdCkpIHJldHVybiB0cnVlO1xuXG4gICAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RhdGU7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLlxuICAvLyBgcmVhbEhhc0luc3RhbmNlYCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB1c2luZyBwbGFpbiBgaW5zdGFuY2VvZmBcbiAgLy8gd291bGQgcmV0dXJuIGZhbHNlLCBhcyBubyBgX3dyaXRhYmxlU3RhdGVgIHByb3BlcnR5IGlzIGF0dGFjaGVkLlxuXG4gIC8vIFRyeWluZyB0byB1c2UgdGhlIGN1c3RvbSBgaW5zdGFuY2VvZmAgZm9yIFdyaXRhYmxlIGhlcmUgd2lsbCBhbHNvIGJyZWFrIHRoZVxuICAvLyBOb2RlLmpzIExhenlUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24sIHdoaWNoIGhhcyBhIG5vbi10cml2aWFsIGdldHRlciBmb3JcbiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICBpZiAoIXJlYWxIYXNJbnN0YW5jZS5jYWxsKFdyaXRhYmxlLCB0aGlzKSAmJiAhKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSB7XG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTtcbiAgfVxuXG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3kuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldjtcbiAgfVxuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBPdGhlcndpc2UgcGVvcGxlIGNhbiBwaXBlIFdyaXRhYmxlIHN0cmVhbXMsIHdoaWNoIGlzIGp1c3Qgd3JvbmcuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRXJyb3IoJ3dyaXRlIGFmdGVyIGVuZCcpO1xuICAvLyBUT0RPOiBkZWZlciBlcnJvciBldmVudHMgY29uc2lzdGVudGx5IGV2ZXJ5d2hlcmUsIG5vdCBqdXN0IHRoZSBjYlxuICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpO1xufVxuXG4vLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5mdW5jdGlvbiB2YWxpZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBjYikge1xuICB2YXIgdmFsaWQgPSB0cnVlO1xuICB2YXIgZXIgPSBmYWxzZTtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICAgIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpO1xuICAgIHZhbGlkID0gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbGlkO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgcmV0ID0gZmFsc2U7XG4gIHZhciBpc0J1ZiA9IEJ1ZmZlci5pc0J1ZmZlcihjaHVuayk7XG5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmIChpc0J1ZiB8fCB2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIHN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG5cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG4vLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBpZiAoIWlzQnVmKSB7XG4gICAgY2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgfVxuICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcblxuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbmV3IFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgIGlmIChsYXN0KSB7XG4gICAgICBsYXN0Lm5leHQgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH1cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCArPSAxO1xuICB9IGVsc2Uge1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuO1xuICBzdGF0ZS53cml0ZWNiID0gY2I7XG4gIHN0YXRlLndyaXRpbmcgPSB0cnVlO1xuICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpO1xuICBzdGF0ZS5zeW5jID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpIHtcbiAgLS1zdGF0ZS5wZW5kaW5nY2I7XG4gIGlmIChzeW5jKSBwcm9jZXNzTmV4dFRpY2soY2IsIGVyKTtlbHNlIGNiKGVyKTtcblxuICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcblxuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuXG4gIGlmIChlcikgb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYik7ZWxzZSB7XG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXRcbiAgICB2YXIgZmluaXNoZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICAvKjxyZXBsYWNlbWVudD4qL1xuICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgICAgLyo8L3JlcGxhY2VtZW50PiovXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpO1xuXG4gICAgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgICBpZiAoaG9sZGVyLm5leHQpIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IGhvbGRlci5uZXh0O1xuICAgICAgaG9sZGVyLm5leHQgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdChzdGF0ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG4gICAgICBpZiAoc3RhdGUud3JpdGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG5cbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVycm9yKCdfd3JpdGUoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRldiA9IG51bGw7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGNodW5rO1xuICAgIGNodW5rID0gbnVsbDtcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCkgdGhpcy53cml0ZShjaHVuaywgZW5jb2RpbmcpO1xuXG4gIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG4gIGlmIChzdGF0ZS5jb3JrZWQpIHtcbiAgICBzdGF0ZS5jb3JrZWQgPSAxO1xuICAgIHRoaXMudW5jb3JrKCk7XG4gIH1cblxuICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG4gIGlmICghc3RhdGUuZW5kaW5nICYmICFzdGF0ZS5maW5pc2hlZCkgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbn07XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCkge1xuICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuICBpZiAobmVlZCkge1xuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzc05leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cbmZ1bmN0aW9uIENvcmtlZFJlcXVlc3Qoc3RhdGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLm5leHQgPSBudWxsO1xuICB0aGlzLmVudHJ5ID0gbnVsbDtcbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgdmFyIGVudHJ5ID0gX3RoaXMuZW50cnk7XG4gICAgX3RoaXMuZW50cnkgPSBudWxsO1xuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICAgIGNiKGVycik7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUpIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0ID0gX3RoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IF90aGlzO1xuICAgIH1cbiAgfTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGJ1ZmZlclNoaW0gPSByZXF1aXJlKCdidWZmZXItc2hpbXMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IEJ1ZmZlckxpc3Q7XG5cbmZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gIHRoaXMuaGVhZCA9IG51bGw7XG4gIHRoaXMudGFpbCA9IG51bGw7XG4gIHRoaXMubGVuZ3RoID0gMDtcbn1cblxuQnVmZmVyTGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBlbnRyeSA9IHsgZGF0YTogdiwgbmV4dDogbnVsbCB9O1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gIHRoaXMudGFpbCA9IGVudHJ5O1xuICArK3RoaXMubGVuZ3RoO1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBlbnRyeSA9IHsgZGF0YTogdiwgbmV4dDogdGhpcy5oZWFkIH07XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgdGhpcy50YWlsID0gZW50cnk7XG4gIHRoaXMuaGVhZCA9IGVudHJ5O1xuICArK3RoaXMubGVuZ3RoO1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICB2YXIgcmV0ID0gdGhpcy5oZWFkLmRhdGE7XG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAtLXRoaXMubGVuZ3RoO1xuICByZXR1cm4gcmV0O1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gIHRoaXMubGVuZ3RoID0gMDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiAocykge1xuICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gIHZhciByZXQgPSAnJyArIHAuZGF0YTtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICByZXQgKz0gcyArIHAuZGF0YTtcbiAgfXJldHVybiByZXQ7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5jb25jYXQgPSBmdW5jdGlvbiAobikge1xuICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiBidWZmZXJTaGltLmFsbG9jKDApO1xuICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHJldHVybiB0aGlzLmhlYWQuZGF0YTtcbiAgdmFyIHJldCA9IGJ1ZmZlclNoaW0uYWxsb2NVbnNhZmUobiA+Pj4gMCk7XG4gIHZhciBwID0gdGhpcy5oZWFkO1xuICB2YXIgaSA9IDA7XG4gIHdoaWxlIChwKSB7XG4gICAgcC5kYXRhLmNvcHkocmV0LCBpKTtcbiAgICBpICs9IHAuZGF0YS5sZW5ndGg7XG4gICAgcCA9IHAubmV4dDtcbiAgfVxuICByZXR1cm4gcmV0O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzXCIpXG4iLCJ2YXIgU3RyZWFtID0gKGZ1bmN0aW9uICgpe1xuICB0cnkge1xuICAgIHJldHVybiByZXF1aXJlKCdzdCcgKyAncmVhbScpOyAvLyBoYWNrIHRvIGZpeCBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgaXNzdWUgd2hlbiB1c2VkIHdpdGggYnJvd3NlcmlmeVxuICB9IGNhdGNoKF8pe31cbn0oKSk7XG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzJyk7XG5leHBvcnRzLlN0cmVhbSA9IFN0cmVhbSB8fCBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcblxuaWYgKCFwcm9jZXNzLmJyb3dzZXIgJiYgcHJvY2Vzcy5lbnYuUkVBREFCTEVfU1RSRUFNID09PSAnZGlzYWJsZScgJiYgU3RyZWFtKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gU3RyZWFtO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanNcIilcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vbGliL19zdHJlYW1fd3JpdGFibGUuanNcIilcbiIsIi8qXG5DcnlwdG9KUyB2My4xLjJcbmNvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qc1xuKGMpIDIwMDktMjAxMyBieSBKZWZmIE1vdHQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanMvd2lraS9MaWNlbnNlXG4qL1xuLyoqIEBwcmVzZXJ2ZVxuKGMpIDIwMTIgYnkgQ8OpZHJpYyBNZXNuaWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cblJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuICAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG5USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4qL1xuXG4vLyBjb25zdGFudHMgdGFibGVcbnZhciB6bCA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXVxuXG52YXIgenIgPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl1cblxudmFyIHNsID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXVxuXG52YXIgc3IgPSBbXG4gIDgsIDksIDksIDExLCAxMywgMTUsIDE1LCA1LCA3LCA3LCA4LCAxMSwgMTQsIDE0LCAxMiwgNixcbiAgOSwgMTMsIDE1LCA3LCAxMiwgOCwgOSwgMTEsIDcsIDcsIDEyLCA3LCA2LCAxNSwgMTMsIDExLFxuICA5LCA3LCAxNSwgMTEsIDgsIDYsIDYsIDE0LCAxMiwgMTMsIDUsIDE0LCAxMywgMTMsIDcsIDUsXG4gIDE1LCA1LCA4LCAxMSwgMTQsIDE0LCA2LCAxNCwgNiwgOSwgMTIsIDksIDEyLCA1LCAxNSwgOCxcbiAgOCwgNSwgMTIsIDksIDEyLCA1LCAxNCwgNiwgOCwgMTMsIDYsIDUsIDE1LCAxMywgMTEsIDExXG5dXG5cbnZhciBobCA9IFsweDAwMDAwMDAwLCAweDVBODI3OTk5LCAweDZFRDlFQkExLCAweDhGMUJCQ0RDLCAweEE5NTNGRDRFXVxudmFyIGhyID0gWzB4NTBBMjhCRTYsIDB4NUM0REQxMjQsIDB4NkQ3MDNFRjMsIDB4N0E2RDc2RTksIDB4MDAwMDAwMDBdXG5cbmZ1bmN0aW9uIGJ5dGVzVG9Xb3JkcyAoYnl0ZXMpIHtcbiAgdmFyIHdvcmRzID0gW11cbiAgZm9yICh2YXIgaSA9IDAsIGIgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyssIGIgKz0gOCkge1xuICAgIHdvcmRzW2IgPj4+IDVdIHw9IGJ5dGVzW2ldIDw8ICgyNCAtIGIgJSAzMilcbiAgfVxuICByZXR1cm4gd29yZHNcbn1cblxuZnVuY3Rpb24gd29yZHNUb0J5dGVzICh3b3Jkcykge1xuICB2YXIgYnl0ZXMgPSBbXVxuICBmb3IgKHZhciBiID0gMDsgYiA8IHdvcmRzLmxlbmd0aCAqIDMyOyBiICs9IDgpIHtcbiAgICBieXRlcy5wdXNoKCh3b3Jkc1tiID4+PiA1XSA+Pj4gKDI0IC0gYiAlIDMyKSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzQmxvY2sgKEgsIE0sIG9mZnNldCkge1xuICAvLyBzd2FwIGVuZGlhblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2YXIgb2Zmc2V0X2kgPSBvZmZzZXQgKyBpXG4gICAgdmFyIE1fb2Zmc2V0X2kgPSBNW29mZnNldF9pXVxuXG4gICAgLy8gU3dhcFxuICAgIE1bb2Zmc2V0X2ldID0gKFxuICAgICAgKCgoTV9vZmZzZXRfaSA8PCA4KSB8IChNX29mZnNldF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICAgKCgoTV9vZmZzZXRfaSA8PCAyNCkgfCAoTV9vZmZzZXRfaSA+Pj4gOCkpICYgMHhmZjAwZmYwMClcbiAgICApXG4gIH1cblxuICAvLyBXb3JraW5nIHZhcmlhYmxlc1xuICB2YXIgYWwsIGJsLCBjbCwgZGwsIGVsXG4gIHZhciBhciwgYnIsIGNyLCBkciwgZXJcblxuICBhciA9IGFsID0gSFswXVxuICBiciA9IGJsID0gSFsxXVxuICBjciA9IGNsID0gSFsyXVxuICBkciA9IGRsID0gSFszXVxuICBlciA9IGVsID0gSFs0XVxuXG4gIC8vIGNvbXB1dGF0aW9uXG4gIHZhciB0XG4gIGZvciAoaSA9IDA7IGkgPCA4MDsgaSArPSAxKSB7XG4gICAgdCA9IChhbCArIE1bb2Zmc2V0ICsgemxbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGYxKGJsLCBjbCwgZGwpICsgaGxbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmMihibCwgY2wsIGRsKSArIGhsWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYmwsIGNsLCBkbCkgKyBobFsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGY0KGJsLCBjbCwgZGwpICsgaGxbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGY1KGJsLCBjbCwgZGwpICsgaGxbNF1cbiAgICB9XG4gICAgdCA9IHQgfCAwXG4gICAgdCA9IHJvdGwodCwgc2xbaV0pXG4gICAgdCA9ICh0ICsgZWwpIHwgMFxuICAgIGFsID0gZWxcbiAgICBlbCA9IGRsXG4gICAgZGwgPSByb3RsKGNsLCAxMClcbiAgICBjbCA9IGJsXG4gICAgYmwgPSB0XG5cbiAgICB0ID0gKGFyICsgTVtvZmZzZXQgKyB6cltpXV0pIHwgMFxuICAgIGlmIChpIDwgMTYpIHtcbiAgICAgIHQgKz0gZjUoYnIsIGNyLCBkcikgKyBoclswXVxuICAgIH0gZWxzZSBpZiAoaSA8IDMyKSB7XG4gICAgICB0ICs9IGY0KGJyLCBjciwgZHIpICsgaHJbMV1cbiAgICB9IGVsc2UgaWYgKGkgPCA0OCkge1xuICAgICAgdCArPSBmMyhiciwgY3IsIGRyKSArIGhyWzJdXG4gICAgfSBlbHNlIGlmIChpIDwgNjQpIHtcbiAgICAgIHQgKz0gZjIoYnIsIGNyLCBkcikgKyBoclszXVxuICAgIH0gZWxzZSB7Ly8gaWYgKGk8ODApIHtcbiAgICAgIHQgKz0gZjEoYnIsIGNyLCBkcikgKyBocls0XVxuICAgIH1cblxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNyW2ldKVxuICAgIHQgPSAodCArIGVyKSB8IDBcbiAgICBhciA9IGVyXG4gICAgZXIgPSBkclxuICAgIGRyID0gcm90bChjciwgMTApXG4gICAgY3IgPSBiclxuICAgIGJyID0gdFxuICB9XG5cbiAgLy8gaW50ZXJtZWRpYXRlIGhhc2ggdmFsdWVcbiAgdCA9IChIWzFdICsgY2wgKyBkcikgfCAwXG4gIEhbMV0gPSAoSFsyXSArIGRsICsgZXIpIHwgMFxuICBIWzJdID0gKEhbM10gKyBlbCArIGFyKSB8IDBcbiAgSFszXSA9IChIWzRdICsgYWwgKyBicikgfCAwXG4gIEhbNF0gPSAoSFswXSArIGJsICsgY3IpIHwgMFxuICBIWzBdID0gdFxufVxuXG5mdW5jdGlvbiBmMSAoeCwgeSwgeikge1xuICByZXR1cm4gKCh4KSBeICh5KSBeICh6KSlcbn1cblxuZnVuY3Rpb24gZjIgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpICYgKHkpKSB8ICgofngpICYgKHopKSlcbn1cblxuZnVuY3Rpb24gZjMgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpIHwgKH4oeSkpKSBeICh6KSlcbn1cblxuZnVuY3Rpb24gZjQgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoKHgpICYgKHopKSB8ICgoeSkgJiAofih6KSkpKVxufVxuXG5mdW5jdGlvbiBmNSAoeCwgeSwgeikge1xuICByZXR1cm4gKCh4KSBeICgoeSkgfCAofih6KSkpKVxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gcmlwZW1kMTYwIChtZXNzYWdlKSB7XG4gIHZhciBIID0gWzB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzYsIDB4QzNEMkUxRjBdXG5cbiAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgIG1lc3NhZ2UgPSBuZXcgQnVmZmVyKG1lc3NhZ2UsICd1dGY4JylcbiAgfVxuXG4gIHZhciBtID0gYnl0ZXNUb1dvcmRzKG1lc3NhZ2UpXG5cbiAgdmFyIG5CaXRzTGVmdCA9IG1lc3NhZ2UubGVuZ3RoICogOFxuICB2YXIgbkJpdHNUb3RhbCA9IG1lc3NhZ2UubGVuZ3RoICogOFxuXG4gIC8vIEFkZCBwYWRkaW5nXG4gIG1bbkJpdHNMZWZ0ID4+PiA1XSB8PSAweDgwIDw8ICgyNCAtIG5CaXRzTGVmdCAlIDMyKVxuICBtWygoKG5CaXRzTGVmdCArIDY0KSA+Pj4gOSkgPDwgNCkgKyAxNF0gPSAoXG4gICAgKCgobkJpdHNUb3RhbCA8PCA4KSB8IChuQml0c1RvdGFsID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICgoKG5CaXRzVG90YWwgPDwgMjQpIHwgKG5CaXRzVG90YWwgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gIClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpICs9IDE2KSB7XG4gICAgcHJvY2Vzc0Jsb2NrKEgsIG0sIGkpXG4gIH1cblxuICAvLyBzd2FwIGVuZGlhblxuICBmb3IgKGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgLy8gc2hvcnRjdXRcbiAgICB2YXIgSF9pID0gSFtpXVxuXG4gICAgLy8gU3dhcFxuICAgIEhbaV0gPSAoKChIX2kgPDwgOCkgfCAoSF9pID4+PiAyNCkpICYgMHgwMGZmMDBmZikgfFxuICAgICAgKCgoSF9pIDw8IDI0KSB8IChIX2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gIH1cblxuICB2YXIgZGlnZXN0Ynl0ZXMgPSB3b3Jkc1RvQnl0ZXMoSClcbiAgcmV0dXJuIG5ldyBCdWZmZXIoZGlnZXN0Ynl0ZXMpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmlwZW1kMTYwXG4iLCIvLyBwcm90b3R5cGUgY2xhc3MgZm9yIGhhc2ggZnVuY3Rpb25zXG5mdW5jdGlvbiBIYXNoIChibG9ja1NpemUsIGZpbmFsU2l6ZSkge1xuICB0aGlzLl9ibG9jayA9IG5ldyBCdWZmZXIoYmxvY2tTaXplKVxuICB0aGlzLl9maW5hbFNpemUgPSBmaW5hbFNpemVcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2xlbiA9IDBcbiAgdGhpcy5fcyA9IDBcbn1cblxuSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICAgIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGVuYylcbiAgfVxuXG4gIHZhciBsID0gdGhpcy5fbGVuICs9IGRhdGEubGVuZ3RoXG4gIHZhciBzID0gdGhpcy5fcyB8fCAwXG4gIHZhciBmID0gMFxuICB2YXIgYnVmZmVyID0gdGhpcy5fYmxvY2tcblxuICB3aGlsZSAocyA8IGwpIHtcbiAgICB2YXIgdCA9IE1hdGgubWluKGRhdGEubGVuZ3RoLCBmICsgdGhpcy5fYmxvY2tTaXplIC0gKHMgJSB0aGlzLl9ibG9ja1NpemUpKVxuICAgIHZhciBjaCA9ICh0IC0gZilcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2g7IGkrKykge1xuICAgICAgYnVmZmVyWyhzICUgdGhpcy5fYmxvY2tTaXplKSArIGldID0gZGF0YVtpICsgZl1cbiAgICB9XG5cbiAgICBzICs9IGNoXG4gICAgZiArPSBjaFxuXG4gICAgaWYgKChzICUgdGhpcy5fYmxvY2tTaXplKSA9PT0gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlKGJ1ZmZlcilcbiAgICB9XG4gIH1cbiAgdGhpcy5fcyA9IHNcblxuICByZXR1cm4gdGhpc1xufVxuXG5IYXNoLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIC8vIFN1cHBvc2UgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBNLCBpbiBiaXRzLCBpcyBsXG4gIHZhciBsID0gdGhpcy5fbGVuICogOFxuXG4gIC8vIEFwcGVuZCB0aGUgYml0IDEgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZVxuICB0aGlzLl9ibG9ja1t0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemVdID0gMHg4MFxuXG4gIC8vIGFuZCB0aGVuIGsgemVybyBiaXRzLCB3aGVyZSBrIGlzIHRoZSBzbWFsbGVzdCBub24tbmVnYXRpdmUgc29sdXRpb24gdG8gdGhlIGVxdWF0aW9uIChsICsgMSArIGspID09PSBmaW5hbFNpemUgbW9kIGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2xlbiAlIHRoaXMuX2Jsb2NrU2l6ZSArIDEpXG5cbiAgaWYgKGwgJSAodGhpcy5fYmxvY2tTaXplICogOCkgPj0gdGhpcy5fZmluYWxTaXplICogOCkge1xuICAgIHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jaylcbiAgICB0aGlzLl9ibG9jay5maWxsKDApXG4gIH1cblxuICAvLyB0byB0aGlzIGFwcGVuZCB0aGUgYmxvY2sgd2hpY2ggaXMgZXF1YWwgdG8gdGhlIG51bWJlciBsIHdyaXR0ZW4gaW4gYmluYXJ5XG4gIC8vIFRPRE86IGhhbmRsZSBjYXNlIHdoZXJlIGwgaXMgPiBNYXRoLnBvdygyLCAyOSlcbiAgdGhpcy5fYmxvY2sud3JpdGVJbnQzMkJFKGwsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG5cbiAgdmFyIGhhc2ggPSB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spIHx8IHRoaXMuX2hhc2goKVxuXG4gIHJldHVybiBlbmMgPyBoYXNoLnRvU3RyaW5nKGVuYykgOiBoYXNoXG59XG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoXG4iLCJ2YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gU0hBIChhbGdvcml0aG0pIHtcbiAgYWxnb3JpdGhtID0gYWxnb3JpdGhtLnRvTG93ZXJDYXNlKClcblxuICB2YXIgQWxnb3JpdGhtID0gZXhwb3J0c1thbGdvcml0aG1dXG4gIGlmICghQWxnb3JpdGhtKSB0aHJvdyBuZXcgRXJyb3IoYWxnb3JpdGhtICsgJyBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cyknKVxuXG4gIHJldHVybiBuZXcgQWxnb3JpdGhtKClcbn1cblxuZXhwb3J0cy5zaGEgPSByZXF1aXJlKCcuL3NoYScpXG5leHBvcnRzLnNoYTEgPSByZXF1aXJlKCcuL3NoYTEnKVxuZXhwb3J0cy5zaGEyMjQgPSByZXF1aXJlKCcuL3NoYTIyNCcpXG5leHBvcnRzLnNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbmV4cG9ydHMuc2hhMzg0ID0gcmVxdWlyZSgnLi9zaGEzODQnKVxuZXhwb3J0cy5zaGE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0wLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBkZXJpdmVkIGZyb20gc2hhMS5qcyBvZiB0aGUgc2FtZSByZXBvc2l0b3J5LlxuICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBTSEEtMCBhbmQgU0hBLTEgaXMganVzdCBhIGJpdHdpc2Ugcm90YXRlIGxlZnRcbiAqIG9wZXJhdGlvbiB3YXMgYWRkZWQuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYSwgSGFzaClcblxuU2hhLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGFcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTEsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBWZXJzaW9uIDIuMWEgQ29weXJpZ2h0IFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBkZXRhaWxzLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhMSAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMSwgSGFzaClcblxuU2hhMS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsMSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDEpIHwgKG51bSA+Pj4gMzEpXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYTEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSByb3RsMShXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdKVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7ICsraikge1xuICAgIHZhciBzID0gfn4oaiAvIDIwKVxuICAgIHZhciB0ID0gKHJvdGw1KGEpICsgZnQocywgYiwgYywgZCkgKyBlICsgV1tqXSArIEtbc10pIHwgMFxuXG4gICAgZSA9IGRcbiAgICBkID0gY1xuICAgIGMgPSByb3RsMzAoYilcbiAgICBiID0gYVxuICAgIGEgPSB0XG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG59XG5cblNoYTEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGExXG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTIyNCAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTIyNCwgU2hhMjU2KVxuXG5TaGEyMjQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2IgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2MgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2QgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2UgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2YgPSAweDY4NTgxNTExXG4gIHRoaXMuX2cgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2ggPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMjI0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDI4KVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMjI0XG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhBMkY5OCwgMHg3MTM3NDQ5MSwgMHhCNUMwRkJDRiwgMHhFOUI1REJBNSxcbiAgMHgzOTU2QzI1QiwgMHg1OUYxMTFGMSwgMHg5MjNGODJBNCwgMHhBQjFDNUVENSxcbiAgMHhEODA3QUE5OCwgMHgxMjgzNUIwMSwgMHgyNDMxODVCRSwgMHg1NTBDN0RDMyxcbiAgMHg3MkJFNUQ3NCwgMHg4MERFQjFGRSwgMHg5QkRDMDZBNywgMHhDMTlCRjE3NCxcbiAgMHhFNDlCNjlDMSwgMHhFRkJFNDc4NiwgMHgwRkMxOURDNiwgMHgyNDBDQTFDQyxcbiAgMHgyREU5MkM2RiwgMHg0QTc0ODRBQSwgMHg1Q0IwQTlEQywgMHg3NkY5ODhEQSxcbiAgMHg5ODNFNTE1MiwgMHhBODMxQzY2RCwgMHhCMDAzMjdDOCwgMHhCRjU5N0ZDNyxcbiAgMHhDNkUwMEJGMywgMHhENUE3OTE0NywgMHgwNkNBNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN0I3MEE4NSwgMHgyRTFCMjEzOCwgMHg0RDJDNkRGQywgMHg1MzM4MEQxMyxcbiAgMHg2NTBBNzM1NCwgMHg3NjZBMEFCQiwgMHg4MUMyQzkyRSwgMHg5MjcyMkM4NSxcbiAgMHhBMkJGRThBMSwgMHhBODFBNjY0QiwgMHhDMjRCOEI3MCwgMHhDNzZDNTFBMyxcbiAgMHhEMTkyRTgxOSwgMHhENjk5MDYyNCwgMHhGNDBFMzU4NSwgMHgxMDZBQTA3MCxcbiAgMHgxOUE0QzExNiwgMHgxRTM3NkMwOCwgMHgyNzQ4Nzc0QywgMHgzNEIwQkNCNSxcbiAgMHgzOTFDMENCMywgMHg0RUQ4QUE0QSwgMHg1QjlDQ0E0RiwgMHg2ODJFNkZGMyxcbiAgMHg3NDhGODJFRSwgMHg3OEE1NjM2RiwgMHg4NEM4NzgxNCwgMHg4Q0M3MDIwOCxcbiAgMHg5MEJFRkZGQSwgMHhBNDUwNkNFQiwgMHhCRUY5QTNGNywgMHhDNjcxNzhGMlxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjU2ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjU2LCBIYXNoKVxuXG5TaGEyNTYucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDZhMDllNjY3XG4gIHRoaXMuX2IgPSAweGJiNjdhZTg1XG4gIHRoaXMuX2MgPSAweDNjNmVmMzcyXG4gIHRoaXMuX2QgPSAweGE1NGZmNTNhXG4gIHRoaXMuX2UgPSAweDUxMGU1MjdmXG4gIHRoaXMuX2YgPSAweDliMDU2ODhjXG4gIHRoaXMuX2cgPSAweDFmODNkOWFiXG4gIHRoaXMuX2ggPSAweDViZTBjZDE5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gY2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMiB8IHggPDwgMzApIF4gKHggPj4+IDEzIHwgeCA8PCAxOSkgXiAoeCA+Pj4gMjIgfCB4IDw8IDEwKVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgpIHtcbiAgcmV0dXJuICh4ID4+PiA2IHwgeCA8PCAyNikgXiAoeCA+Pj4gMTEgfCB4IDw8IDIxKSBeICh4ID4+PiAyNSB8IHggPDwgNylcbn1cblxuZnVuY3Rpb24gZ2FtbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNyB8IHggPDwgMjUpIF4gKHggPj4+IDE4IHwgeCA8PCAxNCkgXiAoeCA+Pj4gMylcbn1cblxuZnVuY3Rpb24gZ2FtbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMTcgfCB4IDw8IDE1KSBeICh4ID4+PiAxOSB8IHggPDwgMTMpIF4gKHggPj4+IDEwKVxufVxuXG5TaGEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcbiAgdmFyIGYgPSB0aGlzLl9mIHwgMFxuICB2YXIgZyA9IHRoaXMuX2cgfCAwXG4gIHZhciBoID0gdGhpcy5faCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDY0OyArK2kpIFdbaV0gPSAoZ2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgZ2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl0pIHwgMFxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgNjQ7ICsraikge1xuICAgIHZhciBUMSA9IChoICsgc2lnbWExKGUpICsgY2goZSwgZiwgZykgKyBLW2pdICsgV1tqXSkgfCAwXG4gICAgdmFyIFQyID0gKHNpZ21hMChhKSArIG1haihhLCBiLCBjKSkgfCAwXG5cbiAgICBoID0gZ1xuICAgIGcgPSBmXG4gICAgZiA9IGVcbiAgICBlID0gKGQgKyBUMSkgfCAwXG4gICAgZCA9IGNcbiAgICBjID0gYlxuICAgIGIgPSBhXG4gICAgYSA9IChUMSArIFQyKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbiAgdGhpcy5fZiA9IChmICsgdGhpcy5fZikgfCAwXG4gIHRoaXMuX2cgPSAoZyArIHRoaXMuX2cpIHwgMFxuICB0aGlzLl9oID0gKGggKyB0aGlzLl9oKSB8IDBcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIFcgPSBuZXcgQXJyYXkoMTYwKVxuXG5mdW5jdGlvbiBTaGEzODQgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCAxMjgsIDExMilcbn1cblxuaW5oZXJpdHMoU2hhMzg0LCBTSEE1MTIpXG5cblNoYTM4NC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweGNiYmI5ZDVkXG4gIHRoaXMuX2JoID0gMHg2MjlhMjkyYVxuICB0aGlzLl9jaCA9IDB4OTE1OTAxNWFcbiAgdGhpcy5fZGggPSAweDE1MmZlY2Q4XG4gIHRoaXMuX2VoID0gMHg2NzMzMjY2N1xuICB0aGlzLl9maCA9IDB4OGViNDRhODdcbiAgdGhpcy5fZ2ggPSAweGRiMGMyZTBkXG4gIHRoaXMuX2hoID0gMHg0N2I1NDgxZFxuXG4gIHRoaXMuX2FsID0gMHhjMTA1OWVkOFxuICB0aGlzLl9ibCA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fY2wgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2RsID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lbCA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZmwgPSAweDY4NTgxNTExXG4gIHRoaXMuX2dsID0gMHg2NGY5OGZhN1xuICB0aGlzLl9obCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEzODQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoNDgpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMzg0XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhNTEyICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTUxMiwgSGFzaClcblxuU2hhNTEyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4NmEwOWU2NjdcbiAgdGhpcy5fYmggPSAweGJiNjdhZTg1XG4gIHRoaXMuX2NoID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kaCA9IDB4YTU0ZmY1M2FcbiAgdGhpcy5fZWggPSAweDUxMGU1MjdmXG4gIHRoaXMuX2ZoID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9naCA9IDB4MWY4M2Q5YWJcbiAgdGhpcy5faGggPSAweDViZTBjZDE5XG5cbiAgdGhpcy5fYWwgPSAweGYzYmNjOTA4XG4gIHRoaXMuX2JsID0gMHg4NGNhYTczYlxuICB0aGlzLl9jbCA9IDB4ZmU5NGY4MmJcbiAgdGhpcy5fZGwgPSAweDVmMWQzNmYxXG4gIHRoaXMuX2VsID0gMHhhZGU2ODJkMVxuICB0aGlzLl9mbCA9IDB4MmIzZTZjMWZcbiAgdGhpcy5fZ2wgPSAweGZiNDFiZDZiXG4gIHRoaXMuX2hsID0gMHgxMzdlMjE3OVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIENoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAyOCB8IHhsIDw8IDQpIF4gKHhsID4+PiAyIHwgeCA8PCAzMCkgXiAoeGwgPj4+IDcgfCB4IDw8IDI1KVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTQgfCB4bCA8PCAxOCkgXiAoeCA+Pj4gMTggfCB4bCA8PCAxNCkgXiAoeGwgPj4+IDkgfCB4IDw8IDIzKVxufVxuXG5mdW5jdGlvbiBHYW1tYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMGwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcgfCB4bCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gR2FtbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNilcbn1cblxuZnVuY3Rpb24gR2FtbWExbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYgfCB4bCA8PCAyNilcbn1cblxuZnVuY3Rpb24gZ2V0Q2FycnkgKGEsIGIpIHtcbiAgcmV0dXJuIChhID4+PiAwKSA8IChiID4+PiAwKSA/IDEgOiAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhaCA9IHRoaXMuX2FoIHwgMFxuICB2YXIgYmggPSB0aGlzLl9iaCB8IDBcbiAgdmFyIGNoID0gdGhpcy5fY2ggfCAwXG4gIHZhciBkaCA9IHRoaXMuX2RoIHwgMFxuICB2YXIgZWggPSB0aGlzLl9laCB8IDBcbiAgdmFyIGZoID0gdGhpcy5fZmggfCAwXG4gIHZhciBnaCA9IHRoaXMuX2doIHwgMFxuICB2YXIgaGggPSB0aGlzLl9oaCB8IDBcblxuICB2YXIgYWwgPSB0aGlzLl9hbCB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYmwgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2NsIHwgMFxuICB2YXIgZGwgPSB0aGlzLl9kbCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZWwgfCAwXG4gIHZhciBmbCA9IHRoaXMuX2ZsIHwgMFxuICB2YXIgZ2wgPSB0aGlzLl9nbCB8IDBcbiAgdmFyIGhsID0gdGhpcy5faGwgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSArPSAyKSB7XG4gICAgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gICAgV1tpICsgMV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0ICsgNClcbiAgfVxuICBmb3IgKDsgaSA8IDE2MDsgaSArPSAyKSB7XG4gICAgdmFyIHhoID0gV1tpIC0gMTUgKiAyXVxuICAgIHZhciB4bCA9IFdbaSAtIDE1ICogMiArIDFdXG4gICAgdmFyIGdhbW1hMCA9IEdhbW1hMCh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMGwgPSBHYW1tYTBsKHhsLCB4aClcblxuICAgIHhoID0gV1tpIC0gMiAqIDJdXG4gICAgeGwgPSBXW2kgLSAyICogMiArIDFdXG4gICAgdmFyIGdhbW1hMSA9IEdhbW1hMSh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMWwgPSBHYW1tYTFsKHhsLCB4aClcblxuICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuICAgIHZhciBXaTdoID0gV1tpIC0gNyAqIDJdXG4gICAgdmFyIFdpN2wgPSBXW2kgLSA3ICogMiArIDFdXG5cbiAgICB2YXIgV2kxNmggPSBXW2kgLSAxNiAqIDJdXG4gICAgdmFyIFdpMTZsID0gV1tpIC0gMTYgKiAyICsgMV1cblxuICAgIHZhciBXaWwgPSAoZ2FtbWEwbCArIFdpN2wpIHwgMFxuICAgIHZhciBXaWggPSAoZ2FtbWEwICsgV2k3aCArIGdldENhcnJ5KFdpbCwgZ2FtbWEwbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBnYW1tYTFsKSB8IDBcbiAgICBXaWggPSAoV2loICsgZ2FtbWExICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTFsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIFdpMTZsKSB8IDBcbiAgICBXaWggPSAoV2loICsgV2kxNmggKyBnZXRDYXJyeShXaWwsIFdpMTZsKSkgfCAwXG5cbiAgICBXW2ldID0gV2loXG4gICAgV1tpICsgMV0gPSBXaWxcbiAgfVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgMTYwOyBqICs9IDIpIHtcbiAgICBXaWggPSBXW2pdXG4gICAgV2lsID0gV1tqICsgMV1cblxuICAgIHZhciBtYWpoID0gbWFqKGFoLCBiaCwgY2gpXG4gICAgdmFyIG1hamwgPSBtYWooYWwsIGJsLCBjbClcblxuICAgIHZhciBzaWdtYTBoID0gc2lnbWEwKGFoLCBhbClcbiAgICB2YXIgc2lnbWEwbCA9IHNpZ21hMChhbCwgYWgpXG4gICAgdmFyIHNpZ21hMWggPSBzaWdtYTEoZWgsIGVsKVxuICAgIHZhciBzaWdtYTFsID0gc2lnbWExKGVsLCBlaClcblxuICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tqXSArIFdbal1cbiAgICB2YXIgS2loID0gS1tqXVxuICAgIHZhciBLaWwgPSBLW2ogKyAxXVxuXG4gICAgdmFyIGNoaCA9IENoKGVoLCBmaCwgZ2gpXG4gICAgdmFyIGNobCA9IENoKGVsLCBmbCwgZ2wpXG5cbiAgICB2YXIgdDFsID0gKGhsICsgc2lnbWExbCkgfCAwXG4gICAgdmFyIHQxaCA9IChoaCArIHNpZ21hMWggKyBnZXRDYXJyeSh0MWwsIGhsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIGNobCkgfCAwXG4gICAgdDFoID0gKHQxaCArIGNoaCArIGdldENhcnJ5KHQxbCwgY2hsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIEtpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIEtpaCArIGdldENhcnJ5KHQxbCwgS2lsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIFdpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIFdpaCArIGdldENhcnJ5KHQxbCwgV2lsKSkgfCAwXG5cbiAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuICAgIHZhciB0MmwgPSAoc2lnbWEwbCArIG1hamwpIHwgMFxuICAgIHZhciB0MmggPSAoc2lnbWEwaCArIG1hamggKyBnZXRDYXJyeSh0MmwsIHNpZ21hMGwpKSB8IDBcblxuICAgIGhoID0gZ2hcbiAgICBobCA9IGdsXG4gICAgZ2ggPSBmaFxuICAgIGdsID0gZmxcbiAgICBmaCA9IGVoXG4gICAgZmwgPSBlbFxuICAgIGVsID0gKGRsICsgdDFsKSB8IDBcbiAgICBlaCA9IChkaCArIHQxaCArIGdldENhcnJ5KGVsLCBkbCkpIHwgMFxuICAgIGRoID0gY2hcbiAgICBkbCA9IGNsXG4gICAgY2ggPSBiaFxuICAgIGNsID0gYmxcbiAgICBiaCA9IGFoXG4gICAgYmwgPSBhbFxuICAgIGFsID0gKHQxbCArIHQybCkgfCAwXG4gICAgYWggPSAodDFoICsgdDJoICsgZ2V0Q2FycnkoYWwsIHQxbCkpIHwgMFxuICB9XG5cbiAgdGhpcy5fYWwgPSAodGhpcy5fYWwgKyBhbCkgfCAwXG4gIHRoaXMuX2JsID0gKHRoaXMuX2JsICsgYmwpIHwgMFxuICB0aGlzLl9jbCA9ICh0aGlzLl9jbCArIGNsKSB8IDBcbiAgdGhpcy5fZGwgPSAodGhpcy5fZGwgKyBkbCkgfCAwXG4gIHRoaXMuX2VsID0gKHRoaXMuX2VsICsgZWwpIHwgMFxuICB0aGlzLl9mbCA9ICh0aGlzLl9mbCArIGZsKSB8IDBcbiAgdGhpcy5fZ2wgPSAodGhpcy5fZ2wgKyBnbCkgfCAwXG4gIHRoaXMuX2hsID0gKHRoaXMuX2hsICsgaGwpIHwgMFxuXG4gIHRoaXMuX2FoID0gKHRoaXMuX2FoICsgYWggKyBnZXRDYXJyeSh0aGlzLl9hbCwgYWwpKSB8IDBcbiAgdGhpcy5fYmggPSAodGhpcy5fYmggKyBiaCArIGdldENhcnJ5KHRoaXMuX2JsLCBibCkpIHwgMFxuICB0aGlzLl9jaCA9ICh0aGlzLl9jaCArIGNoICsgZ2V0Q2FycnkodGhpcy5fY2wsIGNsKSkgfCAwXG4gIHRoaXMuX2RoID0gKHRoaXMuX2RoICsgZGggKyBnZXRDYXJyeSh0aGlzLl9kbCwgZGwpKSB8IDBcbiAgdGhpcy5fZWggPSAodGhpcy5fZWggKyBlaCArIGdldENhcnJ5KHRoaXMuX2VsLCBlbCkpIHwgMFxuICB0aGlzLl9maCA9ICh0aGlzLl9maCArIGZoICsgZ2V0Q2FycnkodGhpcy5fZmwsIGZsKSkgfCAwXG4gIHRoaXMuX2doID0gKHRoaXMuX2doICsgZ2ggKyBnZXRDYXJyeSh0aGlzLl9nbCwgZ2wpKSB8IDBcbiAgdGhpcy5faGggPSAodGhpcy5faGggKyBoaCArIGdldENhcnJ5KHRoaXMuX2hsLCBobCkpIHwgMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IG5ldyBCdWZmZXIoNjQpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuICB3cml0ZUludDY0QkUodGhpcy5fZ2gsIHRoaXMuX2dsLCA0OClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2hoLCB0aGlzLl9obCwgNTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGE1MTJcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcblxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuaW5oZXJpdHMoU3RyZWFtLCBFRSk7XG5TdHJlYW0uUmVhZGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMnKTtcblN0cmVhbS5Xcml0YWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcycpO1xuU3RyZWFtLkR1cGxleCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9kdXBsZXguanMnKTtcblN0cmVhbS5UcmFuc2Zvcm0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzJyk7XG5TdHJlYW0uUGFzc1Rocm91Z2ggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMnKTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW07XG5cblxuXG4vLyBvbGQtc3R5bGUgc3RyZWFtcy4gIE5vdGUgdGhhdCB0aGUgcGlwZSBtZXRob2QgKHRoZSBvbmx5IHJlbGV2YW50XG4vLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLlxuXG5mdW5jdGlvbiBTdHJlYW0oKSB7XG4gIEVFLmNhbGwodGhpcyk7XG59XG5cblN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNvdXJjZSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgaWYgKGRlc3Qud3JpdGFibGUpIHtcbiAgICAgIGlmIChmYWxzZSA9PT0gZGVzdC53cml0ZShjaHVuaykgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICAgIHNvdXJjZS5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kcmFpbigpIHtcbiAgICBpZiAoc291cmNlLnJlYWRhYmxlICYmIHNvdXJjZS5yZXN1bWUpIHtcbiAgICAgIHNvdXJjZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5vbignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfVxuXG4gIHZhciBkaWRPbkVuZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIGRvbid0IGxlYXZlIGRhbmdsaW5nIHBpcGVzIHdoZW4gdGhlcmUgYXJlIGVycm9ycy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoRUUubGlzdGVuZXJDb3VudCh0aGlzLCAnZXJyb3InKSA9PT0gMCkge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS5cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGRlc3Qub24oJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gcmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcbiAgfVxuXG4gIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7XG4gIHNvdXJjZS5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNvdXJjZSk7XG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Q7XG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBpc0J1ZmZlckVuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmdcbiAgfHwgZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgICAgICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgIGNhc2UgJ2hleCc6IGNhc2UgJ3V0ZjgnOiBjYXNlICd1dGYtOCc6IGNhc2UgJ2FzY2lpJzogY2FzZSAnYmluYXJ5JzogY2FzZSAnYmFzZTY0JzogY2FzZSAndWNzMic6IGNhc2UgJ3Vjcy0yJzogY2FzZSAndXRmMTZsZSc6IGNhc2UgJ3V0Zi0xNmxlJzogY2FzZSAncmF3JzogcmV0dXJuIHRydWU7XG4gICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgfVxuICAgICB9XG5cblxuZnVuY3Rpb24gYXNzZXJ0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgaWYgKGVuY29kaW5nICYmICFpc0J1ZmZlckVuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTtcbiAgfVxufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuIENFU1UtOCBpcyBoYW5kbGVkIGFzIHBhcnQgb2YgdGhlIFVURi04IGVuY29kaW5nLlxuLy9cbi8vIEBUT0RPIEhhbmRsaW5nIGFsbCBlbmNvZGluZ3MgaW5zaWRlIGEgc2luZ2xlIG9iamVjdCBtYWtlcyBpdCB2ZXJ5IGRpZmZpY3VsdFxuLy8gdG8gcmVhc29uIGFib3V0IHRoaXMgY29kZSwgc28gaXQgc2hvdWxkIGJlIHNwbGl0IHVwIGluIHRoZSBmdXR1cmUuXG4vLyBAVE9ETyBUaGVyZSBzaG91bGQgYmUgYSB1dGY4LXN0cmljdCBlbmNvZGluZyB0aGF0IHJlamVjdHMgaW52YWxpZCBVVEYtOCBjb2RlXG4vLyBwb2ludHMgYXMgdXNlZCBieSBDRVNVLTguXG52YXIgU3RyaW5nRGVjb2RlciA9IGV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSAoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1stX10vLCAnJyk7XG4gIGFzc2VydEVuY29kaW5nKGVuY29kaW5nKTtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICAvLyBDRVNVLTggcmVwcmVzZW50cyBlYWNoIG9mIFN1cnJvZ2F0ZSBQYWlyIGJ5IDMtYnl0ZXNcbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIC8vIFVURi0xNiByZXByZXNlbnRzIGVhY2ggb2YgU3Vycm9nYXRlIFBhaXIgYnkgMi1ieXRlc1xuICAgICAgdGhpcy5zdXJyb2dhdGVTaXplID0gMjtcbiAgICAgIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIgPSB1dGYxNkRldGVjdEluY29tcGxldGVDaGFyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIC8vIEJhc2UtNjQgc3RvcmVzIDMgYnl0ZXMgaW4gNCBjaGFycywgYW5kIHBhZHMgdGhlIHJlbWFpbmRlci5cbiAgICAgIHRoaXMuc3Vycm9nYXRlU2l6ZSA9IDM7XG4gICAgICB0aGlzLmRldGVjdEluY29tcGxldGVDaGFyID0gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHBhc3NUaHJvdWdoV3JpdGU7XG4gICAgICByZXR1cm47XG4gIH1cblxuICAvLyBFbm91Z2ggc3BhY2UgdG8gc3RvcmUgYWxsIGJ5dGVzIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4gVVRGLTggbmVlZHMgNFxuICAvLyBieXRlcywgYnV0IENFU1UtOCBtYXkgcmVxdWlyZSB1cCB0byA2ICgzIGJ5dGVzIHBlciBzdXJyb2dhdGUpLlxuICB0aGlzLmNoYXJCdWZmZXIgPSBuZXcgQnVmZmVyKDYpO1xuICAvLyBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXJyZW50IGluY29tcGxldGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIuXG4gIHRoaXMuY2hhclJlY2VpdmVkID0gMDtcbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIGZvciB0aGUgY3VycmVudCBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgY2hhcmFjdGVyLlxuICB0aGlzLmNoYXJMZW5ndGggPSAwO1xufTtcblxuXG4vLyB3cml0ZSBkZWNvZGVzIHRoZSBnaXZlbiBidWZmZXIgYW5kIHJldHVybnMgaXQgYXMgSlMgc3RyaW5nIHRoYXQgaXNcbi8vIGd1YXJhbnRlZWQgdG8gbm90IGNvbnRhaW4gYW55IHBhcnRpYWwgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLiBBbnkgcGFydGlhbFxuLy8gY2hhcmFjdGVyIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBpcyBidWZmZXJlZCB1cCwgYW5kIHdpbGwgYmVcbi8vIHJldHVybmVkIHdoZW4gY2FsbGluZyB3cml0ZSBhZ2FpbiB3aXRoIHRoZSByZW1haW5pbmcgYnl0ZXMuXG4vL1xuLy8gTm90ZTogQ29udmVydGluZyBhIEJ1ZmZlciBjb250YWluaW5nIGFuIG9ycGhhbiBzdXJyb2dhdGUgdG8gYSBTdHJpbmdcbi8vIGN1cnJlbnRseSB3b3JrcywgYnV0IGNvbnZlcnRpbmcgYSBTdHJpbmcgdG8gYSBCdWZmZXIgKHZpYSBgbmV3IEJ1ZmZlcmAsIG9yXG4vLyBCdWZmZXIjd3JpdGUpIHdpbGwgcmVwbGFjZSBpbmNvbXBsZXRlIHN1cnJvZ2F0ZXMgd2l0aCB0aGUgdW5pY29kZVxuLy8gcmVwbGFjZW1lbnQgY2hhcmFjdGVyLiBTZWUgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMjExNzMwMDkvIC5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciBjaGFyU3RyID0gJyc7XG4gIC8vIGlmIG91ciBsYXN0IHdyaXRlIGVuZGVkIHdpdGggYW4gaW5jb21wbGV0ZSBtdWx0aWJ5dGUgY2hhcmFjdGVyXG4gIHdoaWxlICh0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgcmVtYWluaW5nIGJ5dGVzIHRoaXMgYnVmZmVyIGhhcyB0byBvZmZlciBmb3IgdGhpcyBjaGFyXG4gICAgdmFyIGF2YWlsYWJsZSA9IChidWZmZXIubGVuZ3RoID49IHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkKSA/XG4gICAgICAgIHRoaXMuY2hhckxlbmd0aCAtIHRoaXMuY2hhclJlY2VpdmVkIDpcbiAgICAgICAgYnVmZmVyLmxlbmd0aDtcblxuICAgIC8vIGFkZCB0aGUgbmV3IGJ5dGVzIHRvIHRoZSBjaGFyIGJ1ZmZlclxuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgdGhpcy5jaGFyUmVjZWl2ZWQsIDAsIGF2YWlsYWJsZSk7XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgKz0gYXZhaWxhYmxlO1xuXG4gICAgaWYgKHRoaXMuY2hhclJlY2VpdmVkIDwgdGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgICAvLyBzdGlsbCBub3QgZW5vdWdoIGNoYXJzIGluIHRoaXMgYnVmZmVyPyB3YWl0IGZvciBtb3JlIC4uLlxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIHJlbW92ZSBieXRlcyBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gdGhlIGJ1ZmZlclxuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZShhdmFpbGFibGUsIGJ1ZmZlci5sZW5ndGgpO1xuXG4gICAgLy8gZ2V0IHRoZSBjaGFyYWN0ZXIgdGhhdCB3YXMgc3BsaXRcbiAgICBjaGFyU3RyID0gdGhpcy5jaGFyQnVmZmVyLnNsaWNlKDAsIHRoaXMuY2hhckxlbmd0aCkudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG5cbiAgICAvLyBDRVNVLTg6IGxlYWQgc3Vycm9nYXRlIChEODAwLURCRkYpIGlzIGFsc28gdGhlIGluY29tcGxldGUgY2hhcmFjdGVyXG4gICAgdmFyIGNoYXJDb2RlID0gY2hhclN0ci5jaGFyQ29kZUF0KGNoYXJTdHIubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGNoYXJDb2RlID49IDB4RDgwMCAmJiBjaGFyQ29kZSA8PSAweERCRkYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCArPSB0aGlzLnN1cnJvZ2F0ZVNpemU7XG4gICAgICBjaGFyU3RyID0gJyc7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgPSB0aGlzLmNoYXJMZW5ndGggPSAwO1xuXG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgYnl0ZXMgaW4gdGhpcyBidWZmZXIsIGp1c3QgZW1pdCBvdXIgY2hhclxuICAgIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY2hhclN0cjtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgYW5kIHNldCBjaGFyTGVuZ3RoIC8gY2hhclJlY2VpdmVkXG4gIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKTtcblxuICB2YXIgZW5kID0gYnVmZmVyLmxlbmd0aDtcbiAgaWYgKHRoaXMuY2hhckxlbmd0aCkge1xuICAgIC8vIGJ1ZmZlciB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgYnl0ZXMgd2UgZ290XG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoIC0gdGhpcy5jaGFyUmVjZWl2ZWQsIGVuZCk7XG4gICAgZW5kIC09IHRoaXMuY2hhclJlY2VpdmVkO1xuICB9XG5cbiAgY2hhclN0ciArPSBidWZmZXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgZW5kKTtcblxuICB2YXIgZW5kID0gY2hhclN0ci5sZW5ndGggLSAxO1xuICB2YXIgY2hhckNvZGUgPSBjaGFyU3RyLmNoYXJDb2RlQXQoZW5kKTtcbiAgLy8gQ0VTVS04OiBsZWFkIHN1cnJvZ2F0ZSAoRDgwMC1EQkZGKSBpcyBhbHNvIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlclxuICBpZiAoY2hhckNvZGUgPj0gMHhEODAwICYmIGNoYXJDb2RlIDw9IDB4REJGRikge1xuICAgIHZhciBzaXplID0gdGhpcy5zdXJyb2dhdGVTaXplO1xuICAgIHRoaXMuY2hhckxlbmd0aCArPSBzaXplO1xuICAgIHRoaXMuY2hhclJlY2VpdmVkICs9IHNpemU7XG4gICAgdGhpcy5jaGFyQnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCBzaXplLCAwLCBzaXplKTtcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIDAsIDAsIHNpemUpO1xuICAgIHJldHVybiBjaGFyU3RyLnN1YnN0cmluZygwLCBlbmQpO1xuICB9XG5cbiAgLy8gb3IganVzdCBlbWl0IHRoZSBjaGFyU3RyXG4gIHJldHVybiBjaGFyU3RyO1xufTtcblxuLy8gZGV0ZWN0SW5jb21wbGV0ZUNoYXIgZGV0ZXJtaW5lcyBpZiB0aGVyZSBpcyBhbiBpbmNvbXBsZXRlIFVURi04IGNoYXJhY3RlciBhdFxuLy8gdGhlIGVuZCBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiBJZiBzbywgaXQgc2V0cyB0aGlzLmNoYXJMZW5ndGggdG8gdGhlIGJ5dGVcbi8vIGxlbmd0aCB0aGF0IGNoYXJhY3RlciwgYW5kIHNldHMgdGhpcy5jaGFyUmVjZWl2ZWQgdG8gdGhlIG51bWJlciBvZiBieXRlc1xuLy8gdGhhdCBhcmUgYXZhaWxhYmxlIGZvciB0aGlzIGNoYXJhY3Rlci5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmRldGVjdEluY29tcGxldGVDaGFyID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIC8vIGRldGVybWluZSBob3cgbWFueSBieXRlcyB3ZSBoYXZlIHRvIGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhpcyBidWZmZXJcbiAgdmFyIGkgPSAoYnVmZmVyLmxlbmd0aCA+PSAzKSA/IDMgOiBidWZmZXIubGVuZ3RoO1xuXG4gIC8vIEZpZ3VyZSBvdXQgaWYgb25lIG9mIHRoZSBsYXN0IGkgYnl0ZXMgb2Ygb3VyIGJ1ZmZlciBhbm5vdW5jZXMgYW5cbiAgLy8gaW5jb21wbGV0ZSBjaGFyLlxuICBmb3IgKDsgaSA+IDA7IGktLSkge1xuICAgIHZhciBjID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSBpXTtcblxuICAgIC8vIFNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi04I0Rlc2NyaXB0aW9uXG5cbiAgICAvLyAxMTBYWFhYWFxuICAgIGlmIChpID09IDEgJiYgYyA+PiA1ID09IDB4MDYpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDI7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTEwWFhYWFxuICAgIGlmIChpIDw9IDIgJiYgYyA+PiA0ID09IDB4MEUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDM7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyAxMTExMFhYWFxuICAgIGlmIChpIDw9IDMgJiYgYyA+PiAzID09IDB4MUUpIHtcbiAgICAgIHRoaXMuY2hhckxlbmd0aCA9IDQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBpO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHZhciByZXMgPSAnJztcbiAgaWYgKGJ1ZmZlciAmJiBidWZmZXIubGVuZ3RoKVxuICAgIHJlcyA9IHRoaXMud3JpdGUoYnVmZmVyKTtcblxuICBpZiAodGhpcy5jaGFyUmVjZWl2ZWQpIHtcbiAgICB2YXIgY3IgPSB0aGlzLmNoYXJSZWNlaXZlZDtcbiAgICB2YXIgYnVmID0gdGhpcy5jaGFyQnVmZmVyO1xuICAgIHZhciBlbmMgPSB0aGlzLmVuY29kaW5nO1xuICAgIHJlcyArPSBidWYuc2xpY2UoMCwgY3IpLnRvU3RyaW5nKGVuYyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gcGFzc1Rocm91Z2hXcml0ZShidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gdXRmMTZEZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpIHtcbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBidWZmZXIubGVuZ3RoICUgMjtcbiAgdGhpcy5jaGFyTGVuZ3RoID0gdGhpcy5jaGFyUmVjZWl2ZWQgPyAyIDogMDtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RGV0ZWN0SW5jb21wbGV0ZUNoYXIoYnVmZmVyKSB7XG4gIHRoaXMuY2hhclJlY2VpdmVkID0gYnVmZmVyLmxlbmd0aCAlIDM7XG4gIHRoaXMuY2hhckxlbmd0aCA9IHRoaXMuY2hhclJlY2VpdmVkID8gMyA6IDA7XG59XG4iLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJ2YXIgaW5kZXhPZiA9IHJlcXVpcmUoJ2luZGV4b2YnKTtcblxudmFyIE9iamVjdF9rZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgIGlmIChPYmplY3Qua2V5cykgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSByZXMucHVzaChrZXkpXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufTtcblxudmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoeHMsIGZuKSB7XG4gICAgaWYgKHhzLmZvckVhY2gpIHJldHVybiB4cy5mb3JFYWNoKGZuKVxuICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbih4c1tpXSwgaSwgeHMpO1xuICAgIH1cbn07XG5cbnZhciBkZWZpbmVQcm9wID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ18nLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cbn0oKSk7XG5cbnZhciBnbG9iYWxzID0gWydBcnJheScsICdCb29sZWFuJywgJ0RhdGUnLCAnRXJyb3InLCAnRXZhbEVycm9yJywgJ0Z1bmN0aW9uJyxcbidJbmZpbml0eScsICdKU09OJywgJ01hdGgnLCAnTmFOJywgJ051bWJlcicsICdPYmplY3QnLCAnUmFuZ2VFcnJvcicsXG4nUmVmZXJlbmNlRXJyb3InLCAnUmVnRXhwJywgJ1N0cmluZycsICdTeW50YXhFcnJvcicsICdUeXBlRXJyb3InLCAnVVJJRXJyb3InLFxuJ2RlY29kZVVSSScsICdkZWNvZGVVUklDb21wb25lbnQnLCAnZW5jb2RlVVJJJywgJ2VuY29kZVVSSUNvbXBvbmVudCcsICdlc2NhcGUnLFxuJ2V2YWwnLCAnaXNGaW5pdGUnLCAnaXNOYU4nLCAncGFyc2VGbG9hdCcsICdwYXJzZUludCcsICd1bmRlZmluZWQnLCAndW5lc2NhcGUnXTtcblxuZnVuY3Rpb24gQ29udGV4dCgpIHt9XG5Db250ZXh0LnByb3RvdHlwZSA9IHt9O1xuXG52YXIgU2NyaXB0ID0gZXhwb3J0cy5TY3JpcHQgPSBmdW5jdGlvbiBOb2RlU2NyaXB0IChjb2RlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNjcmlwdCkpIHJldHVybiBuZXcgU2NyaXB0KGNvZGUpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgaWYgKCEoY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJuZWVkcyBhICdjb250ZXh0JyBhcmd1bWVudC5cIik7XG4gICAgfVxuICAgIFxuICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZiAoIWlmcmFtZS5zdHlsZSkgaWZyYW1lLnN0eWxlID0ge307XG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICB2YXIgd0V2YWwgPSB3aW4uZXZhbCwgd0V4ZWNTY3JpcHQgPSB3aW4uZXhlY1NjcmlwdDtcblxuICAgIGlmICghd0V2YWwgJiYgd0V4ZWNTY3JpcHQpIHtcbiAgICAgICAgLy8gd2luLmV2YWwoKSBtYWdpY2FsbHkgYXBwZWFycyB3aGVuIHRoaXMgaXMgY2FsbGVkIGluIElFOlxuICAgICAgICB3RXhlY1NjcmlwdC5jYWxsKHdpbiwgJ251bGwnKTtcbiAgICAgICAgd0V2YWwgPSB3aW4uZXZhbDtcbiAgICB9XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB3aW5ba2V5XSA9IGNvbnRleHRba2V5XTtcbiAgICB9KTtcbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGNvbnRleHRba2V5XSkge1xuICAgICAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB2YXIgd2luS2V5cyA9IE9iamVjdF9rZXlzKHdpbik7XG5cbiAgICB2YXIgcmVzID0gd0V2YWwuY2FsbCh3aW4sIHRoaXMuY29kZSk7XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyh3aW4pLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIC8vIEF2b2lkIGNvcHlpbmcgY2lyY3VsYXIgb2JqZWN0cyBsaWtlIGB0b3BgIGFuZCBgd2luZG93YCBieSBvbmx5XG4gICAgICAgIC8vIHVwZGF0aW5nIGV4aXN0aW5nIGNvbnRleHQgcHJvcGVydGllcyBvciBuZXcgcHJvcGVydGllcyBpbiB0aGUgYHdpbmBcbiAgICAgICAgLy8gdGhhdCB3YXMgb25seSBpbnRyb2R1Y2VkIGFmdGVyIHRoZSBldmFsLlxuICAgICAgICBpZiAoa2V5IGluIGNvbnRleHQgfHwgaW5kZXhPZih3aW5LZXlzLCBrZXkpID09PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFtrZXldID0gd2luW2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvckVhY2goZ2xvYmFscywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gY29udGV4dCkpIHtcbiAgICAgICAgICAgIGRlZmluZVByb3AoY29udGV4dCwga2V5LCB3aW5ba2V5XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgXG4gICAgcmV0dXJuIHJlcztcbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZXZhbCh0aGlzLmNvZGUpOyAvLyBtYXliZS4uLlxufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5Jbk5ld0NvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjdHggPSBTY3JpcHQuY3JlYXRlQ29udGV4dChjb250ZXh0KTtcbiAgICB2YXIgcmVzID0gdGhpcy5ydW5JbkNvbnRleHQoY3R4KTtcblxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY3R4KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBjb250ZXh0W2tleV0gPSBjdHhba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXM7XG59O1xuXG5mb3JFYWNoKE9iamVjdF9rZXlzKFNjcmlwdC5wcm90b3R5cGUpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGV4cG9ydHNbbmFtZV0gPSBTY3JpcHRbbmFtZV0gPSBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICB2YXIgcyA9IFNjcmlwdChjb2RlKTtcbiAgICAgICAgcmV0dXJuIHNbbmFtZV0uYXBwbHkocywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9O1xufSk7XG5cbmV4cG9ydHMuY3JlYXRlU2NyaXB0ID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5TY3JpcHQoY29kZSk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBTY3JpcHQuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGNvcHkgPSBuZXcgQ29udGV4dCgpO1xuICAgIGlmKHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGNvbnRleHQpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IFNlc3Npb24gZnJvbSAnLi9zZXNzaW9uJztcbmltcG9ydCBQb29sIGZyb20gJy4vaW50ZXJuYWwvcG9vbCc7XG5pbXBvcnQge2Nvbm5lY3R9IGZyb20gJy4vaW50ZXJuYWwvY29ubmVjdG9yJztcbmltcG9ydCBTdHJlYW1PYnNlcnZlciBmcm9tICcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcic7XG5pbXBvcnQge25ld0Vycm9yLCBTRVJWSUNFX1VOQVZBSUxBQkxFfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7RGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyfSBmcm9tICcuL2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzJztcblxuY29uc3QgUkVBRCA9ICdSRUFEJywgV1JJVEUgPSAnV1JJVEUnO1xuLyoqXG4gKiBBIGRyaXZlciBtYWludGFpbnMgb25lIG9yIG1vcmUge0BsaW5rIFNlc3Npb24gc2Vzc2lvbnN9IHdpdGggYSByZW1vdGVcbiAqIE5lbzRqIGluc3RhbmNlLiBUaHJvdWdoIHRoZSB7QGxpbmsgU2Vzc2lvbiBzZXNzaW9uc30geW91IGNhbiBzZW5kIHN0YXRlbWVudHNcbiAqIGFuZCByZXRyaWV2ZSByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlLlxuICpcbiAqIERyaXZlcnMgYXJlIHJlYXNvbmFibHkgZXhwZW5zaXZlIHRvIGNyZWF0ZSAtIHlvdSBzaG91bGQgc3RyaXZlIHRvIGtlZXAgb25lXG4gKiBkcml2ZXIgaW5zdGFuY2UgYXJvdW5kIHBlciBOZW80aiBJbnN0YW5jZSB5b3UgY29ubmVjdCB0by5cbiAqXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5jbGFzcyBEcml2ZXIge1xuICAvKipcbiAgICogWW91IHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzIGRpcmVjdGx5LCBpbnN0ZWFkIHVzZSB7QGxpbmsgZHJpdmVyfS5cbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJBZ2VudFxuICAgKiBAcGFyYW0ge09iamVjdH0gdG9rZW5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHVybCwgdXNlckFnZW50LCB0b2tlbiA9IHt9LCBjb25maWcgPSB7fSkge1xuICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICB0aGlzLl91c2VyQWdlbnQgPSB1c2VyQWdlbnQ7XG4gICAgdGhpcy5fb3BlblNlc3Npb25zID0ge307XG4gICAgdGhpcy5fc2Vzc2lvbklkR2VuZXJhdG9yID0gMDtcbiAgICB0aGlzLl90b2tlbiA9IHRva2VuO1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLl9wb29sID0gbmV3IFBvb2woXG4gICAgICB0aGlzLl9jcmVhdGVDb25uZWN0aW9uLmJpbmQodGhpcyksXG4gICAgICB0aGlzLl9kZXN0cm95Q29ubmVjdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgRHJpdmVyLl92YWxpZGF0ZUNvbm5lY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgIGNvbmZpZy5jb25uZWN0aW9uUG9vbFNpemVcbiAgICApO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm92aWRlciA9IHRoaXMuX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcih1cmwsIHRoaXMuX3Bvb2wsIHRoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAgICogQHJldHVybiB7Q29ubmVjdGlvbn0gbmV3IGNvbm5lY3Rvci1hcGkgc2Vzc2lvbiBpbnN0YW5jZSwgYSBsb3cgbGV2ZWwgc2Vzc2lvbiBBUEkuXG4gICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgKi9cbiAgX2NyZWF0ZUNvbm5lY3Rpb24odXJsLCByZWxlYXNlKSB7XG4gICAgbGV0IHNlc3Npb25JZCA9IHRoaXMuX3Nlc3Npb25JZEdlbmVyYXRvcisrO1xuICAgIGxldCBjb25uID0gY29ubmVjdCh1cmwsIHRoaXMuX2NvbmZpZyk7XG4gICAgbGV0IHN0cmVhbU9ic2VydmVyID0gbmV3IF9Db25uZWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcywgY29ubik7XG4gICAgY29ubi5pbml0aWFsaXplKHRoaXMuX3VzZXJBZ2VudCwgdGhpcy5fdG9rZW4sIHN0cmVhbU9ic2VydmVyKTtcbiAgICBjb25uLl9pZCA9IHNlc3Npb25JZDtcbiAgICBjb25uLl9yZWxlYXNlID0gKCkgPT4gcmVsZWFzZSh1cmwsIGNvbm4pO1xuXG4gICAgdGhpcy5fb3BlblNlc3Npb25zW3Nlc3Npb25JZF0gPSBjb25uO1xuICAgIHJldHVybiBjb25uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoYXQgYSBjb25uZWN0aW9uIGlzIHVzYWJsZVxuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqKi9cbiAgc3RhdGljIF92YWxpZGF0ZUNvbm5lY3Rpb24oY29ubikge1xuICAgIHJldHVybiBjb25uLmlzT3BlbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3Bvc2Ugb2YgYSBsaXZlIHNlc3Npb24sIGNsb3NpbmcgYW55IGFzc29jaWF0ZWQgcmVzb3VyY2VzLlxuICAgKiBAcmV0dXJuIHtTZXNzaW9ufSBuZXcgc2Vzc2lvbi5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBfZGVzdHJveUNvbm5lY3Rpb24oY29ubikge1xuICAgIGRlbGV0ZSB0aGlzLl9vcGVuU2Vzc2lvbnNbY29ubi5faWRdO1xuICAgIGNvbm4uY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3F1aXJlIGEgc2Vzc2lvbiB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkYXRhYmFzZS4gVGhlIGRyaXZlciBtYWludGFpbnNcbiAgICogYSBwb29sIG9mIHNlc3Npb25zLCBzbyBjYWxsaW5nIHRoaXMgbWV0aG9kIGlzIG5vcm1hbGx5IGNoZWFwIGJlY2F1c2UgeW91XG4gICAqIHdpbGwgYmUgcHVsbGluZyBhIHNlc3Npb24gb3V0IG9mIHRoZSBjb21tb24gcG9vbC5cbiAgICpcbiAgICogVGhpcyBjb21lcyB3aXRoIHNvbWUgcmVzcG9uc2liaWxpdHkgLSBtYWtlIHN1cmUgeW91IGFsd2F5cyBjYWxsXG4gICAqIHtAbGluayBTZXNzaW9uI2Nsb3NlKCl9IHdoZW4geW91IGFyZSBkb25lIHVzaW5nIGEgc2Vzc2lvbiwgYW5kIGxpa2V3aXNlLFxuICAgKiBtYWtlIHN1cmUgeW91IGRvbid0IGNsb3NlIHlvdXIgc2Vzc2lvbiBiZWZvcmUgeW91IGFyZSBkb25lIHVzaW5nIGl0LiBPbmNlXG4gICAqIGl0IGlzIHJldHVybmVkIHRvIHRoZSBwb29sLCB0aGUgc2Vzc2lvbiB3aWxsIGJlIHJlc2V0IHRvIGEgY2xlYW4gc3RhdGUgYW5kXG4gICAqIG1hZGUgYXZhaWxhYmxlIGZvciBvdGhlcnMgdG8gdXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21vZGU9V1JJVEVdIHRoZSBhY2Nlc3MgbW9kZSBvZiB0aGlzIHNlc3Npb24sIGFsbG93ZWQgdmFsdWVzIGFyZSB7QGxpbmsgUkVBRH0gYW5kIHtAbGluayBXUklURX0uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYm9va21hcms9bnVsbF0gdGhlIGluaXRpYWwgcmVmZXJlbmNlIHRvIHNvbWUgcHJldmlvdXMgdHJhbnNhY3Rpb24uIFZhbHVlIGlzIG9wdGlvbmFsIGFuZFxuICAgKiBhYnNlbmNlIGluZGljYXRlcyB0aGF0IHRoYXQgdGhlIGJvb2ttYXJrIGRvZXMgbm90IGV4aXN0IG9yIGlzIHVua25vd24uXG4gICAqIEByZXR1cm4ge1Nlc3Npb259IG5ldyBzZXNzaW9uLlxuICAgKi9cbiAgc2Vzc2lvbihtb2RlLCBib29rbWFyaykge1xuICAgIGNvbnN0IHNlc3Npb25Nb2RlID0gRHJpdmVyLl92YWxpZGF0ZVNlc3Npb25Nb2RlKG1vZGUpO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVTZXNzaW9uKHNlc3Npb25Nb2RlLCB0aGlzLl9jb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCB0aGlzLl9jb25maWcpO1xuICB9XG5cbiAgc3RhdGljIF92YWxpZGF0ZVNlc3Npb25Nb2RlKHJhd01vZGUpIHtcbiAgICBjb25zdCBtb2RlID0gcmF3TW9kZSB8fCBXUklURTtcbiAgICBpZiAobW9kZSAhPT0gUkVBRCAmJiBtb2RlICE9PSBXUklURSkge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoJ0lsbGVnYWwgc2Vzc2lvbiBtb2RlICcgKyBtb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGU7XG4gIH1cblxuICAvL0V4dGVuc2lvbiBwb2ludFxuICBfY3JlYXRlQ29ubmVjdGlvblByb3ZpZGVyKGFkZHJlc3MsIGNvbm5lY3Rpb25Qb29sLCBkcml2ZXJPbkVycm9yQ2FsbGJhY2spIHtcbiAgICByZXR1cm4gbmV3IERpcmVjdENvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKTtcbiAgfVxuXG4gIC8vRXh0ZW5zaW9uIHBvaW50XG4gIF9jcmVhdGVTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZykge1xuICAgIHJldHVybiBuZXcgU2Vzc2lvbihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpO1xuICB9XG5cbiAgX2RyaXZlck9uRXJyb3JDYWxsYmFjayhlcnJvcikge1xuICAgIGNvbnN0IHVzZXJEZWZpbmVkT25FcnJvckNhbGxiYWNrID0gdGhpcy5vbkVycm9yO1xuICAgIGlmICh1c2VyRGVmaW5lZE9uRXJyb3JDYWxsYmFjayAmJiBlcnJvci5jb2RlID09PSBTRVJWSUNFX1VOQVZBSUxBQkxFKSB7XG4gICAgICB1c2VyRGVmaW5lZE9uRXJyb3JDYWxsYmFjayhlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gdGVsbCB0aGUgZHJpdmVyIGFib3V0IHRoaXMgZXJyb3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgYWxsIG9wZW4gc2Vzc2lvbnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgcmVzb3VyY2VzLiBZb3Ugc2hvdWxkXG4gICAqIG1ha2Ugc3VyZSB0byB1c2UgdGhpcyB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgZHJpdmVyIGluc3RhbmNlLlxuICAgKiBAcmV0dXJuIHVuZGVmaW5lZFxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgZm9yIChsZXQgc2Vzc2lvbklkIGluIHRoaXMuX29wZW5TZXNzaW9ucykge1xuICAgICAgaWYgKHRoaXMuX29wZW5TZXNzaW9ucy5oYXNPd25Qcm9wZXJ0eShzZXNzaW9uSWQpKSB7XG4gICAgICAgIHRoaXMuX29wZW5TZXNzaW9uc1tzZXNzaW9uSWRdLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9wb29sLnB1cmdlQWxsKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgY29ubmVjdGlvbiBzdGF0ZSAqL1xuY2xhc3MgX0Nvbm5lY3Rpb25TdHJlYW1PYnNlcnZlciBleHRlbmRzIFN0cmVhbU9ic2VydmVyIHtcbiAgY29uc3RydWN0b3IoZHJpdmVyLCBjb25uKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9kcml2ZXIgPSBkcml2ZXI7XG4gICAgdGhpcy5fY29ubiA9IGNvbm47XG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gIH1cblxuICBvbkVycm9yKGVycm9yKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgIHN1cGVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgaWYgKHRoaXMuX2RyaXZlci5vbkVycm9yKSB7XG4gICAgICAgIHRoaXMuX2RyaXZlci5vbkVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2hhc0ZhaWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25Db21wbGV0ZWQobWVzc2FnZSkge1xuICAgIGlmICh0aGlzLl9kcml2ZXIub25Db21wbGV0ZWQpIHtcbiAgICAgIHRoaXMuX2RyaXZlci5vbkNvbXBsZXRlZChtZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2Nvbm4gJiYgbWVzc2FnZSAmJiBtZXNzYWdlLnNlcnZlcikge1xuICAgICAgdGhpcy5fY29ubi5zZXRTZXJ2ZXJWZXJzaW9uKG1lc3NhZ2Uuc2VydmVyKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cbmV4cG9ydCB7RHJpdmVyLCBSRUFELCBXUklURX1cblxuZXhwb3J0IGRlZmF1bHQgRHJpdmVyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gQSBjb21tb24gcGxhY2UgZm9yIGNvbnN0cnVjdGluZyBlcnJvciBvYmplY3RzLCB0byBrZWVwIHRoZW1cbi8vIHVuaWZvcm0gYWNyb3NzIHRoZSBkcml2ZXIgc3VyZmFjZS5cblxuY29uc3QgU0VSVklDRV9VTkFWQUlMQUJMRSA9ICdTZXJ2aWNlVW5hdmFpbGFibGUnO1xuY29uc3QgU0VTU0lPTl9FWFBJUkVEID0gJ1Nlc3Npb25FeHBpcmVkJztcbmNvbnN0IFBST1RPQ09MX0VSUk9SID0gJ1Byb3RvY29sRXJyb3InO1xuXG5mdW5jdGlvbiBuZXdFcnJvcihtZXNzYWdlLCBjb2RlPVwiTi9BXCIpIHtcbiAgLy8gVE9ETzogSWRlYSBpcyB0aGF0IHdlIGNhbiBjaGVjayB0aGUgY29kZSBoZXJlIGFuZCB0aHJvdyBzdWItY2xhc3Nlc1xuICAvLyBvZiBOZW80akVycm9yIGFzIGFwcHJvcHJpYXRlXG4gIHJldHVybiBuZXcgTmVvNGpFcnJvcihtZXNzYWdlLCBjb2RlKTtcbn1cblxuY2xhc3MgTmVvNGpFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoIG1lc3NhZ2UsIGNvZGU9XCJOL0FcIiApIHtcbiAgICBzdXBlciggbWVzc2FnZSApO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBuZXdFcnJvcixcbiAgTmVvNGpFcnJvcixcbiAgU0VSVklDRV9VTkFWQUlMQUJMRSxcbiAgU0VTU0lPTl9FWFBJUkVELFxuICBQUk9UT0NPTF9FUlJPUlxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQ2xhc3MgZm9yIE5vZGUgVHlwZS5cbiAqLyBcbmNsYXNzIE5vZGUge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gaWRlbnRpdHkgLSBVbmlxdWUgaWRlbnRpdHlcbiAgICogQHBhcmFtIHtBcnJheX0gbGFiZWxzIC0gQXJyYXkgZm9yIGFsbCBsYWJlbHNcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BlcnRpZXMgLSBNYXAgd2l0aCBub2RlIHByb3BlcnRpZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGlkZW50aXR5LCBsYWJlbHMsIHByb3BlcnRpZXMpIHtcbiAgICB0aGlzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBzID0gXCIoXCIgKyB0aGlzLmlkZW50aXR5O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sYWJlbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHMgKz0gXCI6XCIgKyB0aGlzLmxhYmVsc1tpXTtcbiAgICB9XG4gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BlcnRpZXMpO1xuICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIHMgKz0gXCIge1wiO1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPiAwKSBzICs9IFwiLFwiO1xuICAgICAgICBzICs9IGtleXNbaV0gKyBcIjpcIiArIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcGVydGllc1trZXlzW2ldXSk7XG4gICAgICB9XG4gICAgICBzICs9IFwifVwiO1xuICAgIH1cbiAgICBzICs9IFwiKVwiO1xuICAgIHJldHVybiBzO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFJlbGF0aW9uc2hpcCBUeXBlLlxuICovIFxuY2xhc3MgUmVsYXRpb25zaGlwIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IGlkZW50aXR5IC0gVW5pcXVlIGlkZW50aXR5XG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gc3RhcnQgLSBJZGVudGl0eSBvZiBzdGFydCBOb2RlXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gZW5kIC0gSWRlbnRpdHkgb2YgZW5kIE5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBSZWxhdGlvbnNoaXAgdHlwZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIE1hcCB3aXRoIHJlbGF0aW9uc2hpcCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpZGVudGl0eSwgc3RhcnQsIGVuZCwgdHlwZSwgcHJvcGVydGllcykge1xuICAgIHRoaXMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHMgPSBcIihcIiArIHRoaXMuc3RhcnQgKyBcIiktWzpcIiArIHRoaXMudHlwZTtcbiAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucHJvcGVydGllcyk7XG4gICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgICAgcyArPSBcIiB7XCI7XG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSA+IDApIHMgKz0gXCIsXCI7XG4gICAgICAgIHMgKz0ga2V5c1tpXSArIFwiOlwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wZXJ0aWVzW2tleXNbaV1dKTtcbiAgICAgIH1cbiAgICAgIHMgKz0gXCJ9XCI7XG4gICAgfVxuICAgIHMgKz0gXCJdLT4oXCIgKyB0aGlzLmVuZCArIFwiKVwiO1xuICAgIHJldHVybiBzO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFVuYm91bmRSZWxhdGlvbnNoaXAgVHlwZS5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovIFxuY2xhc3MgVW5ib3VuZFJlbGF0aW9uc2hpcCB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBpZGVudGl0eSAtIFVuaXF1ZSBpZGVudGl0eVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFJlbGF0aW9uc2hpcCB0eXBlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIC0gTWFwIHdpdGggcmVsYXRpb25zaGlwIHByb3BlcnRpZXNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGlkZW50aXR5LCB0eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgdGhpcy5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHJlbGF0aW9uc2hpcFxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHN0YXJ0IC0gSWRlbnRpdHkgb2Ygc3RhcnQgbm9kZVxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IGVuZCAtIElkZW50aXR5IG9mIGVuZCBub2RlXG4gICAqIEByZXR1cm4ge1JlbGF0aW9uc2hpcH0gLSBDcmVhdGVkIHJlbGF0aW9uc2hpcFxuICAgKi9cbiAgYmluZCggc3RhcnQsIGVuZCApIHtcbiAgICByZXR1cm4gbmV3IFJlbGF0aW9uc2hpcChcbiAgICAgIHRoaXMuaWRlbnRpdHksIFxuICAgICAgc3RhcnQsIFxuICAgICAgZW5kLCBcbiAgICAgIHRoaXMudHlwZSwgXG4gICAgICB0aGlzLnByb3BlcnRpZXMpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHMgPSBcIi1bOlwiICsgdGhpcy50eXBlO1xuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICBzICs9IFwiIHtcIjtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpID4gMCkgcyArPSBcIixcIjtcbiAgICAgICAgcyArPSBrZXlzW2ldICsgXCI6XCIgKyBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BlcnRpZXNba2V5c1tpXV0pO1xuICAgICAgfVxuICAgICAgcyArPSBcIn1cIjtcbiAgICB9XG4gICAgcyArPSBcIl0tPlwiO1xuICAgIHJldHVybiBzO1xuICB9XG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIFBhdGhTZWdtZW50IFR5cGUuXG4gKi8gXG5jbGFzcyBQYXRoU2VnbWVudCB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtOb2RlfSBzdGFydCAtIHN0YXJ0IG5vZGVcbiAgICogQHBhcmFtIHtSZWxhdGlvbnNoaXB9IHJlbCAtIHJlbGF0aW9uc2hpcCB0aGF0IGNvbm5lY3RzIHN0YXJ0IGFuZCBlbmQgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IGVuZCAtIGVuZCBub2RlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzdGFydCwgcmVsLCBlbmQpIHtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5yZWxhdGlvbnNoaXAgPSByZWw7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDbGFzcyBmb3IgUGF0aCBUeXBlLlxuICovIFxuY2xhc3MgUGF0aCB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtOb2RlfSBzdGFydCAgLSBzdGFydCBub2RlXG4gICAqIEBwYXJhbSB7Tm9kZX0gZW5kIC0gZW5kIG5vZGVcbiAgICogQHBhcmFtIHtBcnJheX0gc2VnbWVudHMgLSBBcnJheSBvZiBTZWdtZW50c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCwgc2VnbWVudHMpIHtcbiAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgdGhpcy5zZWdtZW50cyA9IHNlZ21lbnRzO1xuICAgIHRoaXMubGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIE5vZGUsXG4gIFJlbGF0aW9uc2hpcCxcbiAgVW5ib3VuZFJlbGF0aW9uc2hpcCxcbiAgUGF0aCxcbiAgUGF0aFNlZ21lbnRcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge2ludCwgaXNJbnQsIGluU2FmZVJhbmdlLCB0b051bWJlciwgdG9TdHJpbmd9IGZyb20gJy4vaW50ZWdlcic7XG5pbXBvcnQge05vZGUsIFJlbGF0aW9uc2hpcCwgVW5ib3VuZFJlbGF0aW9uc2hpcCwgUGF0aFNlZ21lbnQsIFBhdGh9IGZyb20gJy4vZ3JhcGgtdHlwZXMnXG5pbXBvcnQge05lbzRqRXJyb3IsIFNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNFU1NJT05fRVhQSVJFRCwgUFJPVE9DT0xfRVJST1J9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IFJlc3VsdCBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgUmVzdWx0U3VtbWFyeSBmcm9tICcuL3Jlc3VsdC1zdW1tYXJ5JztcbmltcG9ydCBSZWNvcmQgZnJvbSAnLi9yZWNvcmQnO1xuaW1wb3J0IHtEcml2ZXIsIFJFQUQsIFdSSVRFfSBmcm9tICcuL2RyaXZlcic7XG5pbXBvcnQgUm91dGluZ0RyaXZlciBmcm9tICcuL3JvdXRpbmctZHJpdmVyJztcbmltcG9ydCBWRVJTSU9OIGZyb20gJy4uL3ZlcnNpb24nO1xuaW1wb3J0IHtwYXJzZVNjaGVtZSwgcGFyc2VVcmx9IGZyb20gXCIuL2ludGVybmFsL2Nvbm5lY3RvclwiO1xuaW1wb3J0IHthc3NlcnRTdHJpbmd9IGZyb20gXCIuL2ludGVybmFsL3V0aWxcIjtcblxuXG5jb25zdCBhdXRoID17XG4gIGJhc2ljOiAodXNlcm5hbWUsIHBhc3N3b3JkLCByZWFsbSA9IHVuZGVmaW5lZCkgPT4ge1xuICAgIGlmIChyZWFsbSkge1xuICAgICAgcmV0dXJuIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiB1c2VybmFtZSwgY3JlZGVudGlhbHM6IHBhc3N3b3JkLCByZWFsbTogcmVhbG19O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IHVzZXJuYW1lLCBjcmVkZW50aWFsczogcGFzc3dvcmR9O1xuICAgIH1cbiAgfSxcbiAgICBjdXN0b206IChwcmluY2lwYWwsIGNyZWRlbnRpYWxzLCByZWFsbSwgc2NoZW1lLCBwYXJhbWV0ZXJzID0gdW5kZWZpbmVkICkgPT4ge1xuICAgIGlmIChwYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm4gIHtzY2hlbWU6IHNjaGVtZSwgcHJpbmNpcGFsOiBwcmluY2lwYWwsIGNyZWRlbnRpYWxzOiBjcmVkZW50aWFscywgcmVhbG06IHJlYWxtLFxuICAgICAgICBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gIHtzY2hlbWU6IHNjaGVtZSwgcHJpbmNpcGFsOiBwcmluY2lwYWwsIGNyZWRlbnRpYWxzOiBjcmVkZW50aWFscywgcmVhbG06IHJlYWxtfVxuICAgIH1cbiAgfVxufTtcbmxldCBVU0VSX0FHRU5UID0gXCJuZW80ai1qYXZhc2NyaXB0L1wiICsgVkVSU0lPTjtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgYSBuZXcgTmVvNGogRHJpdmVyLiBUaGlzIGlzIHlvdXIgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhpc1xuICogbGlicmFyeS5cbiAqXG4gKiAjIyBDb25maWd1cmF0aW9uXG4gKlxuICogVGhpcyBmdW5jdGlvbiBvcHRpb25hbGx5IHRha2VzIGEgY29uZmlndXJhdGlvbiBhcmd1bWVudC4gQXZhaWxhYmxlIGNvbmZpZ3VyYXRpb25cbiAqIG9wdGlvbnMgYXJlIGFzIGZvbGxvd3M6XG4gKlxuICogICAgIHtcbiAqICAgICAgIC8vIEVuY3J5cHRpb24gbGV2ZWw6IEVOQ1JZUFRJT05fT04gb3IgRU5DUllQVElPTl9PRkYuXG4gKiAgICAgICBlbmNyeXB0ZWQ6IEVOQ1JZUFRJT05fT058RU5DUllQVElPTl9PRkZcbiAqXG4gKiAgICAgICAvLyBUcnVzdCBzdHJhdGVneSB0byB1c2UgaWYgZW5jcnlwdGlvbiBpcyBlbmFibGVkLiBUaGVyZSBpcyBubyBtb2RlIHRvIGRpc2FibGVcbiAqICAgICAgIC8vIHRydXN0IG90aGVyIHRoYW4gZGlzYWJsaW5nIGVuY3J5cHRpb24gYWx0b2dldGhlci4gVGhlIHJlYXNvbiBmb3JcbiAqICAgICAgIC8vIHRoaXMgaXMgdGhhdCBpZiB5b3UgZG9uJ3Qga25vdyB3aG8geW91IGFyZSB0YWxraW5nIHRvLCBpdCBpcyBlYXN5IGZvciBhblxuICogICAgICAgLy8gYXR0YWNrZXIgdG8gaGlqYWNrIHlvdXIgZW5jcnlwdGVkIGNvbm5lY3Rpb24sIHJlbmRlcmluZyBlbmNyeXB0aW9uIHBvaW50bGVzcy5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9BTExfQ0VSVElGSUNBVEVTIGlzIHRoZSBkZWZhdWx0IGNob2ljZSBmb3IgTm9kZUpTIGRlcGxveW1lbnRzLiBJdCBvbmx5IHJlcXVpcmVzXG4gKiAgICAgICAvLyBuZXcgaG9zdCB0byBwcm92aWRlIGEgY2VydGlmaWNhdGUgYW5kIGRvZXMgbm8gdmVyaWZpY2F0aW9uIG9mIHRoZSBwcm92aWRlZCBjZXJ0aWZpY2F0ZS5cbiAqICAgICAgIC8vXG4gKiAgICAgICAvLyBUUlVTVF9PTl9GSVJTVF9VU0UgaXMgYXZhaWxhYmxlIGZvciBtb2Rlcm4gTm9kZUpTIGRlcGxveW1lbnRzLCBhbmQgd29ya3NcbiAqICAgICAgIC8vIHNpbWlsYXJseSB0byBob3cgYHNzbGAgd29ya3MgLSB0aGUgZmlyc3QgdGltZSB3ZSBjb25uZWN0IHRvIGEgbmV3IGhvc3QsXG4gKiAgICAgICAvLyB3ZSByZW1lbWJlciB0aGUgY2VydGlmaWNhdGUgdGhleSB1c2UuIElmIHRoZSBjZXJ0aWZpY2F0ZSBldmVyIGNoYW5nZXMsIHdlXG4gKiAgICAgICAvLyBhc3N1bWUgaXQgaXMgYW4gYXR0ZW1wdCB0byBoaWphY2sgdGhlIGNvbm5lY3Rpb24gYW5kIHJlcXVpcmUgbWFudWFsIGludGVydmVudGlvbi5cbiAqICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBieSBkZWZhdWx0LCBjb25uZWN0aW9ucyBcImp1c3Qgd29ya1wiIHdoaWxlIHN0aWxsIGdpdmluZyB5b3VcbiAqICAgICAgIC8vIGdvb2QgZW5jcnlwdGVkIHByb3RlY3Rpb24uXG4gKiAgICAgICAvL1xuICogICAgICAgLy8gVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgaXMgdGhlIGNsYXNzaWMgYXBwcm9hY2ggdG8gdHJ1c3QgdmVyaWZpY2F0aW9uIC1cbiAqICAgICAgIC8vIHdoZW5ldmVyIHdlIGVzdGFibGlzaCBhbiBlbmNyeXB0ZWQgY29ubmVjdGlvbiwgd2UgZW5zdXJlIHRoZSBob3N0IGlzIHVzaW5nXG4gKiAgICAgICAvLyBhbiBlbmNyeXB0aW9uIGNlcnRpZmljYXRlIHRoYXQgaXMgaW4sIG9yIGlzIHNpZ25lZCBieSwgYSBjZXJ0aWZpY2F0ZSBsaXN0ZWRcbiAqICAgICAgIC8vIGFzIHRydXN0ZWQuIEluIHRoZSB3ZWIgYnVuZGxlLCB0aGlzIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgaXMgbWFpbnRhaW5lZFxuICogICAgICAgLy8gYnkgdGhlIHdlYiBicm93c2VyLiBJbiBOb2RlSlMsIHlvdSBjb25maWd1cmUgdGhlIGxpc3Qgd2l0aCB0aGUgbmV4dCBjb25maWcgb3B0aW9uLlxuICogICAgICAgLy9cbiAqICAgICAgIC8vIFRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTIG1lYW5kIHRoYXQgeW91IHRydXN0IHdoYXRldmVyIGNlcnRpZmljYXRlc1xuICogICAgICAgLy8gYXJlIGluIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlIGNoYWluIG9mIHRoXG4gKiAgICAgICB0cnVzdDogXCJUUlVTVF9BTExfQ0VSVElGSUNBVEVTXCIgfCBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiIHwgXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIgfFxuICAqICAgICAgIFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIiB8IFwiVFJVU1RfU1lTVEVNX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIixcbiAqXG4gKiAgICAgICAvLyBMaXN0IG9mIG9uZSBvciBtb3JlIHBhdGhzIHRvIHRydXN0ZWQgZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZXMuIFRoaXMgb25seVxuICogICAgICAgLy8gd29ya3MgaW4gdGhlIE5vZGVKUyBidW5kbGUsIGFuZCBvbmx5IG1hdHRlcnMgaWYgeW91IHVzZSBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIuXG4gKiAgICAgICAvLyBUaGUgY2VydGlmaWNhdGUgZmlsZXMgc2hvdWxkIGJlIGluIHJlZ3VsYXIgWC41MDkgUEVNIGZvcm1hdC5cbiAqICAgICAgIC8vIEZvciBpbnN0YW5jZSwgWycuL3RydXN0ZWQucGVtJ11cbiAqICAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtdLFxuICpcbiAqICAgICAgIC8vIFBhdGggdG8gYSBmaWxlIHdoZXJlIHRoZSBkcml2ZXIgc2F2ZXMgaG9zdHMgaXQgaGFzIHNlZW4gaW4gdGhlIHBhc3QsIHRoaXMgaXNcbiAqICAgICAgIC8vIHZlcnkgc2ltaWxhciB0byB0aGUgc3NsIHRvb2wncyBrbm93bl9ob3N0cyBmaWxlLiBFYWNoIHRpbWUgd2UgY29ubmVjdCB0byBhXG4gKiAgICAgICAvLyBuZXcgaG9zdCwgYSBoYXNoIG9mIHRoZWlyIGNlcnRpZmljYXRlIGlzIHN0b3JlZCBhbG9uZyB3aXRoIHRoZSBkb21haW4gbmFtZSBhbmRcbiAqICAgICAgIC8vIHBvcnQsIGFuZCB0aGlzIGlzIHRoZW4gdXNlZCB0byB2ZXJpZnkgdGhlIGhvc3QgY2VydGlmaWNhdGUgZG9lcyBub3QgY2hhbmdlLlxuICogICAgICAgLy8gVGhpcyBzZXR0aW5nIGhhcyBubyBlZmZlY3QgdW5sZXNzIFRSVVNUX09OX0ZJUlNUX1VTRSBpcyBlbmFibGVkLlxuICogICAgICAga25vd25Ib3N0czpcIn4vLm5lbzRqL2tub3duX2hvc3RzXCIsXG4gKlxuICogICAgICAgLy8gVGhlIG1heCBudW1iZXIgb2YgY29ubmVjdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCBpZGxlIGluIHRoZSBwb29sIGF0IGFueSB0aW1lLlxuICogICAgICAgLy8gQ29ubmVjdGlvbiB3aWxsIGJlIGRlc3Ryb3llZCBpZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZC5cbiAqICAgICAgIGNvbm5lY3Rpb25Qb29sU2l6ZTogNTAsXG4gKlxuICogICAgICAgLy8gU3BlY2lmeSB0aGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0cmFuc2FjdGlvbnMgYXJlIGFsbG93ZWQgdG8gcmV0cnkgdmlhXG4gKiAgICAgICAvLyB7QGxpbmsgU2Vzc2lvbiNyZWFkVHJhbnNhY3Rpb24oKX0gYW5kIHtAbGluayBTZXNzaW9uI3dyaXRlVHJhbnNhY3Rpb24oKX0gZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnNcbiAqICAgICAgIC8vIHdpbGwgcmV0cnkgdGhlIGdpdmVuIHVuaXQgb2Ygd29yayBvbiBgU2VydmljZVVuYXZhaWxhYmxlYCwgYFNlc3Npb25FeHBpcmVkYCBhbmQgdHJhbnNpZW50IGVycm9ycyB3aXRoXG4gKiAgICAgICAvLyBleHBvbmVudGlhbCBiYWNrb2ZmIHVzaW5nIGluaXRpYWwgZGVsYXkgb2YgMSBzZWNvbmQuIERlZmF1bHQgdmFsdWUgaXMgMzAwMDAgd2hpY2ggaXMgMzAgc2Vjb25kcy5cbiAqICAgICAgIG1heFRyYW5zYWN0aW9uUmV0cnlUaW1lOiAzMDAwMCxcbiAqICAgICB9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIGZvciB0aGUgTmVvNGogZGF0YWJhc2UsIGZvciBpbnN0YW5jZSBcImJvbHQ6Ly9sb2NhbGhvc3RcIlxuICogQHBhcmFtIHtNYXA8U3RyaW5nLFN0cmluZz59IGF1dGhUb2tlbiBBdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gU2VlIHtAbGluayBhdXRofSBmb3IgaGVscGVycy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgQ29uZmlndXJhdGlvbiBvYmplY3QuIFNlZSB0aGUgY29uZmlndXJhdGlvbiBzZWN0aW9uIGFib3ZlIGZvciBkZXRhaWxzLlxuICogQHJldHVybnMge0RyaXZlcn1cbiAqL1xuZnVuY3Rpb24gZHJpdmVyKHVybCwgYXV0aFRva2VuLCBjb25maWcgPSB7fSkge1xuICBhc3NlcnRTdHJpbmcodXJsLCAnQm9sdCBVUkwnKTtcbiAgY29uc3Qgc2NoZW1lID0gcGFyc2VTY2hlbWUodXJsKTtcbiAgaWYgKHNjaGVtZSA9PT0gXCJib2x0K3JvdXRpbmc6Ly9cIikge1xuICAgIHJldHVybiBuZXcgUm91dGluZ0RyaXZlcihwYXJzZVVybCh1cmwpLCBVU0VSX0FHRU5ULCBhdXRoVG9rZW4sIGNvbmZpZyk7XG4gIH0gZWxzZSBpZiAoc2NoZW1lID09PSBcImJvbHQ6Ly9cIikge1xuICAgIHJldHVybiBuZXcgRHJpdmVyKHBhcnNlVXJsKHVybCksIFVTRVJfQUdFTlQsIGF1dGhUb2tlbiwgY29uZmlnKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHNjaGVtZTogXCIgKyBzY2hlbWUpO1xuXG4gIH1cbn1cblxuXG5jb25zdCB0eXBlcyA9e1xuICBOb2RlLFxuICBSZWxhdGlvbnNoaXAsXG4gIFVuYm91bmRSZWxhdGlvbnNoaXAsXG4gIFBhdGhTZWdtZW50LFxuICBQYXRoLFxuICBSZXN1bHQsXG4gIFJlc3VsdFN1bW1hcnksXG4gIFJlY29yZFxuICB9O1xuXG5jb25zdCBzZXNzaW9uID0ge1xuICBSRUFELFxuICBXUklURVxufTtcbmNvbnN0IGVycm9yID0ge1xuICBTRVJWSUNFX1VOQVZBSUxBQkxFLFxuICBTRVNTSU9OX0VYUElSRUQsXG4gIFBST1RPQ09MX0VSUk9SXG59O1xuY29uc3QgaW50ZWdlciA9IHtcbiAgdG9OdW1iZXIsXG4gIHRvU3RyaW5nLFxuICBpblNhZmVSYW5nZVxufTtcblxuY29uc3QgZm9yRXhwb3J0ID0ge1xuICBkcml2ZXIsXG4gIGludCxcbiAgaXNJbnQsXG4gIGludGVnZXIsXG4gIE5lbzRqRXJyb3IsXG4gIGF1dGgsXG4gIHR5cGVzLFxuICBzZXNzaW9uLFxuICBlcnJvclxufTtcblxuZXhwb3J0IHtcbiAgZHJpdmVyLFxuICBpbnQsXG4gIGlzSW50LFxuICBpbnRlZ2VyLFxuICBOZW80akVycm9yLFxuICBhdXRoLFxuICB0eXBlcyxcbiAgc2Vzc2lvbixcbiAgZXJyb3Jcbn1cbmV4cG9ydCBkZWZhdWx0IGZvckV4cG9ydFxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIDY0LWJpdCBJbnRlZ2VyIGxpYnJhcnksIG9yaWdpbmFsbHkgZnJvbSBMb25nLmpzIGJ5IGRjb2RlSU9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL0xvbmcuanNcbi8vIExpY2Vuc2UgQXBhY2hlIDJcblxuaW1wb3J0IHtuZXdFcnJvcn0gZnJvbSBcIi4vZXJyb3JcIjtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciwgZ2l2ZW4gaXRzIGxvdyBhbmQgaGlnaCAzMiBiaXQgdmFsdWVzIGFzICpzaWduZWQqIGludGVnZXJzLlxuICogIFNlZSB0aGUgZnJvbSogZnVuY3Rpb25zIGJlbG93IGZvciBtb3JlIGNvbnZlbmllbnQgd2F5cyBvZiBjb25zdHJ1Y3RpbmcgSW50ZWdlcnMuXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQGV4cG9ydHMgSW50ZWdlclxuICogQGNsYXNzIEEgSW50ZWdlciBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgNjQgYml0IHR3bydzLWNvbXBsZW1lbnQgaW50ZWdlciB2YWx1ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsb3cgVGhlIGxvdyAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaCBUaGUgaGlnaCAoc2lnbmVkKSAzMiBiaXRzIG9mIHRoZSBsb25nXG4gKiBAY29uc3RydWN0b3JcbiAqXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBvciBtYWRlIGludGVybmFsIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlIGRyaXZlci5cbiAqL1xuY2xhc3MgSW50ZWdlciB7XG4gIGNvbnN0cnVjdG9yKGxvdywgaGlnaCkge1xuICAgIC8qKlxuICAgICAqIFRoZSBsb3cgMzIgYml0cyBhcyBhIHNpZ25lZCB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB0aGlzLmxvdyA9IGxvd3wwO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqIEBleHBvc2VcbiAgICAgKi9cbiAgICB0aGlzLmhpZ2ggPSBoaWdofDA7XG4gIH1cblxuICAvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gSW50ZWdlciBpcyB0aGUgdHdvIGdpdmVuIHNpZ25lZCwgMzItYml0IHZhbHVlcy5cbiAgLy8gV2UgdXNlIDMyLWJpdCBwaWVjZXMgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIHNpemUgb2YgaW50ZWdlcnMgb24gd2hpY2hcbiAgLy8gSmF2YXNjcmlwdCBwZXJmb3JtcyBiaXQtb3BlcmF0aW9ucy4gIEZvciBvcGVyYXRpb25zIGxpa2UgYWRkaXRpb24gYW5kXG4gIC8vIG11bHRpcGxpY2F0aW9uLCB3ZSBzcGxpdCBlYWNoIG51bWJlciBpbnRvIDE2IGJpdCBwaWVjZXMsIHdoaWNoIGNhbiBlYXNpbHkgYmVcbiAgLy8gbXVsdGlwbGllZCB3aXRoaW4gSmF2YXNjcmlwdCdzIGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIHdpdGhvdXQgb3ZlcmZsb3dcbiAgLy8gb3IgY2hhbmdlIGluIHNpZ24uXG4gIC8vXG4gIC8vIEluIHRoZSBhbGdvcml0aG1zIGJlbG93LCB3ZSBmcmVxdWVudGx5IHJlZHVjZSB0aGUgbmVnYXRpdmUgY2FzZSB0byB0aGVcbiAgLy8gcG9zaXRpdmUgY2FzZSBieSBuZWdhdGluZyB0aGUgaW5wdXQocykgYW5kIHRoZW4gcG9zdC1wcm9jZXNzaW5nIHRoZSByZXN1bHQuXG4gIC8vIE5vdGUgdGhhdCB3ZSBtdXN0IEFMV0FZUyBjaGVjayBzcGVjaWFsbHkgd2hldGhlciB0aG9zZSB2YWx1ZXMgYXJlIE1JTl9WQUxVRVxuICAvLyAoLTJeNjMpIGJlY2F1c2UgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUUgKHNpbmNlIDJeNjMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzXG4gIC8vIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBvdmVyZmxvd3MgYmFjayBpbnRvIGEgbmVnYXRpdmUpLiAgTm90IGhhbmRsaW5nIHRoaXNcbiAgLy8gY2FzZSB3b3VsZCBvZnRlbiByZXN1bHQgaW4gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAvL1xuICAvLyBDb21tb24gY29uc3RhbnQgdmFsdWVzIFpFUk8sIE9ORSwgTkVHX09ORSwgZXRjLiBhcmUgZGVmaW5lZCBiZWxvdyB0aGUgZnJvbSpcbiAgLy8gbWV0aG9kcyBvbiB3aGljaCB0aGV5IGRlcGVuZC5cblxuXG4gIGluU2FmZVJhbmdlKCkge3JldHVybiB0aGlzLmdyZWF0ZXJUaGFuT3JFcXVhbChJbnRlZ2VyLk1JTl9TQUZFX1ZBTFVFKSAmJiB0aGlzLmxlc3NUaGFuT3JFcXVhbChJbnRlZ2VyLk1BWF9TQUZFX1ZBTFVFKX1cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBJbnRlZ2VyIHRvIGFuIGV4YWN0IGphdmFzY3JpcHQgTnVtYmVyLCBhc3N1bWluZyBpdCBpcyBhIDMyIGJpdCBpbnRlZ2VyLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICB0b0ludCgpIHsgcmV0dXJuIHRoaXMubG93OyB9O1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHRoZSBuZWFyZXN0IGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdmFsdWUgKGRvdWJsZSwgNTMgYml0IG1hbnRpc3NhKS5cbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgdG9OdW1iZXIoKXsgcmV0dXJuIHRoaXMuaGlnaCAqIFRXT19QV1JfMzJfREJMICsgKHRoaXMubG93ID4+PiAwKTsgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgSW50ZWdlciB0byBhIHN0cmluZyB3cml0dGVuIGluIHRoZSBzcGVjaWZpZWQgcmFkaXguXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gcmFkaXggUmFkaXggKDItMzYpLCBkZWZhdWx0cyB0byAxMFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKiBAb3ZlcnJpZGVcbiAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYHJhZGl4YCBpcyBvdXQgb2YgcmFuZ2VcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgdG9TdHJpbmcocmFkaXgpIHtcbiAgICByYWRpeCA9IHJhZGl4IHx8IDEwO1xuICAgIGlmIChyYWRpeCA8IDIgfHwgMzYgPCByYWRpeClcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ3JhZGl4IG91dCBvZiByYW5nZTogJyArIHJhZGl4KTtcbiAgICBpZiAodGhpcy5pc1plcm8oKSlcbiAgICAgIHJldHVybiAnMCc7XG4gICAgdmFyIHJlbTtcbiAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBjaGFuZ2UgdGhlIEludGVnZXIgdmFsdWUgYmVmb3JlIGl0IGNhbiBiZSBuZWdhdGVkLCBzbyB3ZSByZW1vdmVcbiAgICAgICAgLy8gdGhlIGJvdHRvbS1tb3N0IGRpZ2l0IGluIHRoaXMgYmFzZSBhbmQgdGhlbiByZWN1cnNlIHRvIGRvIHRoZSByZXN0LlxuICAgICAgICB2YXIgcmFkaXhJbnRlZ2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKHJhZGl4KTtcbiAgICAgICAgdmFyIGRpdiA9IHRoaXMuZGl2KHJhZGl4SW50ZWdlcik7XG4gICAgICAgIHJlbSA9IGRpdi5tdWx0aXBseShyYWRpeEludGVnZXIpLnN1YnRyYWN0KHRoaXMpO1xuICAgICAgICByZXR1cm4gZGl2LnRvU3RyaW5nKHJhZGl4KSArIHJlbS50b0ludCgpLnRvU3RyaW5nKHJhZGl4KTtcbiAgICAgIH0gZWxzZVxuICAgICAgICByZXR1cm4gJy0nICsgdGhpcy5uZWdhdGUoKS50b1N0cmluZyhyYWRpeCk7XG4gICAgfVxuXG4gICAgLy8gRG8gc2V2ZXJhbCAoNikgZGlnaXRzIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLCBzbyBhcyB0b1xuICAgIC8vIG1pbmltaXplIHRoZSBjYWxscyB0byB0aGUgdmVyeSBleHBlbnNpdmUgZW11bGF0ZWQgZGl2LlxuICAgIHZhciByYWRpeFRvUG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIDYpICk7XG4gICAgcmVtID0gdGhpcztcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHZhciByZW1EaXYgPSByZW0uZGl2KHJhZGl4VG9Qb3dlciksXG4gICAgICAgICAgaW50dmFsID0gcmVtLnN1YnRyYWN0KHJlbURpdi5tdWx0aXBseShyYWRpeFRvUG93ZXIpKS50b0ludCgpID4+PiAwLFxuICAgICAgICAgIGRpZ2l0cyA9IGludHZhbC50b1N0cmluZyhyYWRpeCk7XG4gICAgICByZW0gPSByZW1EaXY7XG4gICAgICBpZiAocmVtLmlzWmVybygpKVxuICAgICAgICByZXR1cm4gZGlnaXRzICsgcmVzdWx0O1xuICAgICAgZWxzZSB7XG4gICAgICAgIHdoaWxlIChkaWdpdHMubGVuZ3RoIDwgNilcbiAgICAgICAgICBkaWdpdHMgPSAnMCcgKyBkaWdpdHM7XG4gICAgICAgIHJlc3VsdCA9ICcnICsgZGlnaXRzICsgcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cbiAgICogQHJldHVybnMge251bWJlcn0gU2lnbmVkIGhpZ2ggYml0c1xuICAgKiBAZXhwb3NlXG4gICAqL1xuICBnZXRIaWdoQml0cygpIHsgcmV0dXJuIHRoaXMuaGlnaDsgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsb3cgMzIgYml0cyBhcyBhIHNpZ25lZCBpbnRlZ2VyLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBTaWduZWQgbG93IGJpdHNcbiAgICogQGV4cG9zZVxuICAgKi9cbiAgZ2V0TG93Qml0cygpIHsgcmV0dXJuIHRoaXMubG93OyB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgSW50ZWdlci5cbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgZ2V0TnVtQml0c0FicygpIHtcbiAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpXG4gICAgICByZXR1cm4gdGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpID8gNjQgOiB0aGlzLm5lZ2F0ZSgpLmdldE51bUJpdHNBYnMoKTtcbiAgICB2YXIgdmFsID0gdGhpcy5oaWdoICE9IDAgPyB0aGlzLmhpZ2ggOiB0aGlzLmxvdztcbiAgICBmb3IgKHZhciBiaXQgPSAzMTsgYml0ID4gMDsgYml0LS0pXG4gICAgICBpZiAoKHZhbCAmICgxIDw8IGJpdCkpICE9IDApXG4gICAgICAgIGJyZWFrO1xuICAgIHJldHVybiB0aGlzLmhpZ2ggIT0gMCA/IGJpdCArIDMzIDogYml0ICsgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgemVyby5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGlzWmVybygpIHtcbiAgICByZXR1cm4gdGhpcy5oaWdoID09PSAwICYmIHRoaXMubG93ID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIG5lZ2F0aXZlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgaXNOZWdhdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oaWdoIDwgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBwb3NpdGl2ZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGlzUG9zaXRpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlnaCA+PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIHRoaXMgSW50ZWdlcidzIHZhbHVlIGlzIG9kZC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGlzT2RkKCkgeyByZXR1cm4gKHRoaXMubG93ICYgMSkgPT09IDE7IH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZXZlbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGlzRXZlbigpIHsgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAwOyB9O1xuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBlcXVhbHMgdGhlIHNwZWNpZmllZCdzLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBlcXVhbHMob3RoZXIpIHtcbiAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSlcbiAgICAgIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgIHJldHVybiB0aGlzLmhpZ2ggPT09IG90aGVyLmhpZ2ggJiYgdGhpcy5sb3cgPT09IG90aGVyLmxvdztcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHNwZWNpZmllZCdzLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBub3RFcXVhbHMob3RoZXIpIHsgIXRoaXMuZXF1YWxzKC8qIHZhbGlkYXRlcyAqLyBvdGhlcik7IH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgbGVzc1RoYW4ob3RoZXIpIHsgcmV0dXJuIHRoaXMuY29tcGFyZSgvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpIDwgMDsgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBsZXNzVGhhbk9yRXF1YWwob3RoZXIpIHsgcmV0dXJuIHRoaXMuY29tcGFyZSgvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpIDw9IDA7IH1cblxuICAvKipcbiAgICogVGVzdHMgaWYgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQncy5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgZ3JlYXRlclRoYW4ob3RoZXIpIHsgcmV0dXJuIHRoaXMuY29tcGFyZSgvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpID4gMDsgfVxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGlzIEludGVnZXIncyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBncmVhdGVyVGhhbk9yRXF1YWwob3RoZXIpIHsgcmV0dXJuIHRoaXMuY29tcGFyZSgvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpID49IDA7IH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUgd2l0aCB0aGUgc3BlY2lmaWVkJ3MuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcbiAgICogQHJldHVybnMge251bWJlcn0gMCBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgMSBpZiB0aGUgdGhpcyBpcyBncmVhdGVyIGFuZCAtMVxuICAgKiAgaWYgdGhlIGdpdmVuIG9uZSBpcyBncmVhdGVyXG4gICAqIEBleHBvc2VcbiAgICovXG4gIGNvbXBhcmUob3RoZXIpIHtcbiAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSlcbiAgICAgIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgIGlmICh0aGlzLmVxdWFscyhvdGhlcikpXG4gICAgICByZXR1cm4gMDtcbiAgICB2YXIgdGhpc05lZyA9IHRoaXMuaXNOZWdhdGl2ZSgpLFxuICAgICAgb3RoZXJOZWcgPSBvdGhlci5pc05lZ2F0aXZlKCk7XG4gICAgaWYgKHRoaXNOZWcgJiYgIW90aGVyTmVnKVxuICAgICAgcmV0dXJuIC0xO1xuICAgIGlmICghdGhpc05lZyAmJiBvdGhlck5lZylcbiAgICAgIHJldHVybiAxO1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHNpZ24gYml0cyBhcmUgdGhlIHNhbWVcbiAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChvdGhlcikuaXNOZWdhdGl2ZSgpID8gLTEgOiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZ2F0ZXMgdGhpcyBJbnRlZ2VyJ3MgdmFsdWUuXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn0gTmVnYXRlZCBJbnRlZ2VyXG4gICAqIEBleHBvc2VcbiAgICovXG4gIG5lZ2F0ZSgpIHtcbiAgICBpZiAodGhpcy5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKVxuICAgICAgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFO1xuICAgIHJldHVybiB0aGlzLm5vdCgpLmFkZChJbnRlZ2VyLk9ORSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3VtIG9mIHRoaXMgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZWdlci5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBhZGRlbmQgQWRkZW5kXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn0gU3VtXG4gICAqIEBleHBvc2VcbiAgICovXG4gIGFkZChhZGRlbmQpIHtcbiAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKGFkZGVuZCkpXG4gICAgICBhZGRlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShhZGRlbmQpO1xuXG4gICAgLy8gRGl2aWRlIGVhY2ggbnVtYmVyIGludG8gNCBjaHVua3Mgb2YgMTYgYml0cywgYW5kIHRoZW4gc3VtIHRoZSBjaHVua3MuXG5cbiAgICB2YXIgYTQ4ID0gdGhpcy5oaWdoID4+PiAxNjtcbiAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xuICAgIHZhciBhMTYgPSB0aGlzLmxvdyA+Pj4gMTY7XG4gICAgdmFyIGEwMCA9IHRoaXMubG93ICYgMHhGRkZGO1xuXG4gICAgdmFyIGI0OCA9IGFkZGVuZC5oaWdoID4+PiAxNjtcbiAgICB2YXIgYjMyID0gYWRkZW5kLmhpZ2ggJiAweEZGRkY7XG4gICAgdmFyIGIxNiA9IGFkZGVuZC5sb3cgPj4+IDE2O1xuICAgIHZhciBiMDAgPSBhZGRlbmQubG93ICYgMHhGRkZGO1xuXG4gICAgdmFyIGM0OCA9IDAsIGMzMiA9IDAsIGMxNiA9IDAsIGMwMCA9IDA7XG4gICAgYzAwICs9IGEwMCArIGIwMDtcbiAgICBjMTYgKz0gYzAwID4+PiAxNjtcbiAgICBjMDAgJj0gMHhGRkZGO1xuICAgIGMxNiArPSBhMTYgKyBiMTY7XG4gICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgYzE2ICY9IDB4RkZGRjtcbiAgICBjMzIgKz0gYTMyICsgYjMyO1xuICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgIGMzMiAmPSAweEZGRkY7XG4gICAgYzQ4ICs9IGE0OCArIGI0ODtcbiAgICBjNDggJj0gMHhGRkZGO1xuICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKChjMTYgPDwgMTYpIHwgYzAwLCAoYzQ4IDw8IDE2KSB8IGMzMik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gc3VidHJhaGVuZCBTdWJ0cmFoZW5kXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn0gRGlmZmVyZW5jZVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBzdWJ0cmFjdChzdWJ0cmFoZW5kKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihzdWJ0cmFoZW5kKSlcbiAgICAgIHN1YnRyYWhlbmQgPSBJbnRlZ2VyLmZyb21WYWx1ZShzdWJ0cmFoZW5kKTtcbiAgICByZXR1cm4gdGhpcy5hZGQoc3VidHJhaGVuZC5uZWdhdGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIEludGVnZXIuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gbXVsdGlwbGllciBNdWx0aXBsaWVyXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUHJvZHVjdFxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBtdWx0aXBseShtdWx0aXBsaWVyKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpXG4gICAgICByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgIGlmICghSW50ZWdlci5pc0ludGVnZXIobXVsdGlwbGllcikpXG4gICAgICBtdWx0aXBsaWVyID0gSW50ZWdlci5mcm9tVmFsdWUobXVsdGlwbGllcik7XG4gICAgaWYgKG11bHRpcGxpZXIuaXNaZXJvKCkpXG4gICAgICByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpXG4gICAgICByZXR1cm4gbXVsdGlwbGllci5pc09kZCgpID8gSW50ZWdlci5NSU5fVkFMVUUgOiBJbnRlZ2VyLlpFUk87XG4gICAgaWYgKG11bHRpcGxpZXIuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSlcbiAgICAgIHJldHVybiB0aGlzLmlzT2RkKCkgPyBJbnRlZ2VyLk1JTl9WQUxVRSA6IEludGVnZXIuWkVSTztcblxuICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xuICAgICAgaWYgKG11bHRpcGxpZXIuaXNOZWdhdGl2ZSgpKVxuICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHRoaXMubmVnYXRlKCkubXVsdGlwbHkobXVsdGlwbGllcikubmVnYXRlKCk7XG4gICAgfSBlbHNlIGlmIChtdWx0aXBsaWVyLmlzTmVnYXRpdmUoKSlcbiAgICAgIHJldHVybiB0aGlzLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpLm5lZ2F0ZSgpO1xuXG4gICAgLy8gSWYgYm90aCBsb25ncyBhcmUgc21hbGwsIHVzZSBmbG9hdCBtdWx0aXBsaWNhdGlvblxuICAgIGlmICh0aGlzLmxlc3NUaGFuKFRXT19QV1JfMjQpICYmIG11bHRpcGxpZXIubGVzc1RoYW4oVFdPX1BXUl8yNCkpXG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKHRoaXMudG9OdW1iZXIoKSAqIG11bHRpcGxpZXIudG9OdW1iZXIoKSk7XG5cbiAgICAvLyBEaXZpZGUgZWFjaCBsb25nIGludG8gNCBjaHVua3Mgb2YgMTYgYml0cywgYW5kIHRoZW4gYWRkIHVwIDR4NCBwcm9kdWN0cy5cbiAgICAvLyBXZSBjYW4gc2tpcCBwcm9kdWN0cyB0aGF0IHdvdWxkIG92ZXJmbG93LlxuXG4gICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XG4gICAgdmFyIGEzMiA9IHRoaXMuaGlnaCAmIDB4RkZGRjtcbiAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xuICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcblxuICAgIHZhciBiNDggPSBtdWx0aXBsaWVyLmhpZ2ggPj4+IDE2O1xuICAgIHZhciBiMzIgPSBtdWx0aXBsaWVyLmhpZ2ggJiAweEZGRkY7XG4gICAgdmFyIGIxNiA9IG11bHRpcGxpZXIubG93ID4+PiAxNjtcbiAgICB2YXIgYjAwID0gbXVsdGlwbGllci5sb3cgJiAweEZGRkY7XG5cbiAgICB2YXIgYzQ4ID0gMCwgYzMyID0gMCwgYzE2ID0gMCwgYzAwID0gMDtcbiAgICBjMDAgKz0gYTAwICogYjAwO1xuICAgIGMxNiArPSBjMDAgPj4+IDE2O1xuICAgIGMwMCAmPSAweEZGRkY7XG4gICAgYzE2ICs9IGExNiAqIGIwMDtcbiAgICBjMzIgKz0gYzE2ID4+PiAxNjtcbiAgICBjMTYgJj0gMHhGRkZGO1xuICAgIGMxNiArPSBhMDAgKiBiMTY7XG4gICAgYzMyICs9IGMxNiA+Pj4gMTY7XG4gICAgYzE2ICY9IDB4RkZGRjtcbiAgICBjMzIgKz0gYTMyICogYjAwO1xuICAgIGM0OCArPSBjMzIgPj4+IDE2O1xuICAgIGMzMiAmPSAweEZGRkY7XG4gICAgYzMyICs9IGExNiAqIGIxNjtcbiAgICBjNDggKz0gYzMyID4+PiAxNjtcbiAgICBjMzIgJj0gMHhGRkZGO1xuICAgIGMzMiArPSBhMDAgKiBiMzI7XG4gICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XG4gICAgYzMyICY9IDB4RkZGRjtcbiAgICBjNDggKz0gYTQ4ICogYjAwICsgYTMyICogYjE2ICsgYTE2ICogYjMyICsgYTAwICogYjQ4O1xuICAgIGM0OCAmPSAweEZGRkY7XG4gICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoKGMxNiA8PCAxNikgfCBjMDAsIChjNDggPDwgMTYpIHwgYzMyKTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIEludGVnZXIgZGl2aWRlZCBieSB0aGUgc3BlY2lmaWVkLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFF1b3RpZW50XG4gICAqIEBleHBvc2VcbiAgICovXG4gIGRpdihkaXZpc29yKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihkaXZpc29yKSlcbiAgICAgICAgZGl2aXNvciA9IEludGVnZXIuZnJvbVZhbHVlKGRpdmlzb3IpO1xuICAgIGlmIChkaXZpc29yLmlzWmVybygpKVxuICAgICAgICB0aHJvdyBuZXdFcnJvcignZGl2aXNpb24gYnkgemVybycpO1xuICAgIGlmICh0aGlzLmlzWmVybygpKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5aRVJPO1xuICAgIHZhciBhcHByb3gsIHJlbSwgcmVzO1xuICAgIGlmICh0aGlzLmVxdWFscyhJbnRlZ2VyLk1JTl9WQUxVRSkpIHtcbiAgICAgIGlmIChkaXZpc29yLmVxdWFscyhJbnRlZ2VyLk9ORSkgfHwgZGl2aXNvci5lcXVhbHMoSW50ZWdlci5ORUdfT05FKSlcbiAgICAgICAgcmV0dXJuIEludGVnZXIuTUlOX1ZBTFVFOyAgLy8gcmVjYWxsIHRoYXQgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUVcbiAgICAgIGVsc2UgaWYgKGRpdmlzb3IuZXF1YWxzKEludGVnZXIuTUlOX1ZBTFVFKSlcbiAgICAgICAgcmV0dXJuIEludGVnZXIuT05FO1xuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgfG90aGVyfCA+PSAyLCBzbyB8dGhpcy9vdGhlcnwgPCB8TUlOX1ZBTFVFfC5cbiAgICAgICAgdmFyIGhhbGZUaGlzID0gdGhpcy5zaGlmdFJpZ2h0KDEpO1xuICAgICAgICBhcHByb3ggPSBoYWxmVGhpcy5kaXYoZGl2aXNvcikuc2hpZnRMZWZ0KDEpO1xuICAgICAgICBpZiAoYXBwcm94LmVxdWFscyhJbnRlZ2VyLlpFUk8pKSB7XG4gICAgICAgICAgcmV0dXJuIGRpdmlzb3IuaXNOZWdhdGl2ZSgpID8gSW50ZWdlci5PTkUgOiBJbnRlZ2VyLk5FR19PTkU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVtID0gdGhpcy5zdWJ0cmFjdChkaXZpc29yLm11bHRpcGx5KGFwcHJveCkpO1xuICAgICAgICAgIHJlcyA9IGFwcHJveC5hZGQocmVtLmRpdihkaXZpc29yKSk7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGl2aXNvci5lcXVhbHMoSW50ZWdlci5NSU5fVkFMVUUpKVxuICAgICAgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcbiAgICAgIGlmIChkaXZpc29yLmlzTmVnYXRpdmUoKSlcbiAgICAgICAgcmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KGRpdmlzb3IubmVnYXRlKCkpO1xuICAgICAgcmV0dXJuIHRoaXMubmVnYXRlKCkuZGl2KGRpdmlzb3IpLm5lZ2F0ZSgpO1xuICAgIH0gZWxzZSBpZiAoZGl2aXNvci5pc05lZ2F0aXZlKCkpXG4gICAgICByZXR1cm4gdGhpcy5kaXYoZGl2aXNvci5uZWdhdGUoKSkubmVnYXRlKCk7XG5cbiAgICAvLyBSZXBlYXQgdGhlIGZvbGxvd2luZyB1bnRpbCB0aGUgcmVtYWluZGVyIGlzIGxlc3MgdGhhbiBvdGhlcjogIGZpbmQgYVxuICAgIC8vIGZsb2F0aW5nLXBvaW50IHRoYXQgYXBwcm94aW1hdGVzIHJlbWFpbmRlciAvIG90aGVyICpmcm9tIGJlbG93KiwgYWRkIHRoaXNcbiAgICAvLyBpbnRvIHRoZSByZXN1bHQsIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSByZW1haW5kZXIuICBJdCBpcyBjcml0aWNhbCB0aGF0XG4gICAgLy8gdGhlIGFwcHJveGltYXRlIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcmVhbCB2YWx1ZSBzbyB0aGF0IHRoZVxuICAgIC8vIHJlbWFpbmRlciBuZXZlciBiZWNvbWVzIG5lZ2F0aXZlLlxuICAgIHJlcyA9IEludGVnZXIuWkVSTztcbiAgICByZW0gPSB0aGlzO1xuICAgIHdoaWxlIChyZW0uZ3JlYXRlclRoYW5PckVxdWFsKGRpdmlzb3IpKSB7XG4gICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgcmVzdWx0IG9mIGRpdmlzaW9uLiBUaGlzIG1heSBiZSBhIGxpdHRsZSBncmVhdGVyIG9yXG4gICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGFjdHVhbCB2YWx1ZS5cbiAgICAgIGFwcHJveCA9IE1hdGgubWF4KDEsIE1hdGguZmxvb3IocmVtLnRvTnVtYmVyKCkgLyBkaXZpc29yLnRvTnVtYmVyKCkpKTtcblxuICAgICAgLy8gV2Ugd2lsbCB0d2VhayB0aGUgYXBwcm94aW1hdGUgcmVzdWx0IGJ5IGNoYW5naW5nIGl0IGluIHRoZSA0OC10aCBkaWdpdCBvclxuICAgICAgLy8gdGhlIHNtYWxsZXN0IG5vbi1mcmFjdGlvbmFsIGRpZ2l0LCB3aGljaGV2ZXIgaXMgbGFyZ2VyLlxuICAgICAgdmFyIGxvZzIgPSBNYXRoLmNlaWwoTWF0aC5sb2coYXBwcm94KSAvIE1hdGguTE4yKSxcbiAgICAgICAgICBkZWx0YSA9IChsb2cyIDw9IDQ4KSA/IDEgOiBNYXRoLnBvdygyLCBsb2cyIC0gNDgpLFxuXG4gICAgICAvLyBEZWNyZWFzZSB0aGUgYXBwcm94aW1hdGlvbiB1bnRpbCBpdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHJlbWFpbmRlci4gIE5vdGVcbiAgICAgIC8vIHRoYXQgaWYgaXQgaXMgdG9vIGxhcmdlLCB0aGUgcHJvZHVjdCBvdmVyZmxvd3MgYW5kIGlzIG5lZ2F0aXZlLlxuICAgICAgYXBwcm94UmVzID0gSW50ZWdlci5mcm9tTnVtYmVyKGFwcHJveCksXG4gICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICB3aGlsZSAoYXBwcm94UmVtLmlzTmVnYXRpdmUoKSB8fCBhcHByb3hSZW0uZ3JlYXRlclRoYW4ocmVtKSkge1xuICAgICAgICBhcHByb3ggLT0gZGVsdGE7XG4gICAgICAgIGFwcHJveFJlcyA9IEludGVnZXIuZnJvbU51bWJlcihhcHByb3gpO1xuICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGtub3cgdGhlIGFuc3dlciBjYW4ndCBiZSB6ZXJvLi4uIGFuZCBhY3R1YWxseSwgemVybyB3b3VsZCBjYXVzZVxuICAgICAgLy8gaW5maW5pdGUgcmVjdXJzaW9uIHNpbmNlIHdlIHdvdWxkIG1ha2Ugbm8gcHJvZ3Jlc3MuXG4gICAgICBpZiAoYXBwcm94UmVzLmlzWmVybygpKVxuICAgICAgICBhcHByb3hSZXMgPSBJbnRlZ2VyLk9ORTtcblxuICAgICAgcmVzID0gcmVzLmFkZChhcHByb3hSZXMpO1xuICAgICAgcmVtID0gcmVtLnN1YnRyYWN0KGFwcHJveFJlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIEludGVnZXIgbW9kdWxvIHRoZSBzcGVjaWZpZWQuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn0gUmVtYWluZGVyXG4gICAqIEBleHBvc2VcbiAgICovXG4gIG1vZHVsbyhkaXZpc29yKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihkaXZpc29yKSlcbiAgICAgIGRpdmlzb3IgPSBJbnRlZ2VyLmZyb21WYWx1ZShkaXZpc29yKTtcbiAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdihkaXZpc29yKS5tdWx0aXBseShkaXZpc29yKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYml0d2lzZSBOT1Qgb2YgdGhpcyBJbnRlZ2VyLlxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG4gIG5vdCgpIHtcbiAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh+dGhpcy5sb3csIH50aGlzLmhpZ2gpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJpdHdpc2UgQU5EIG9mIHRoaXMgSW50ZWdlciBhbmQgdGhlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBJbnRlZ2VyXG4gICAqIEByZXR1cm5zIHshSW50ZWdlcn1cbiAgICogQGV4cG9zZVxuICAgKi9cbiAgYW5kKG90aGVyKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpXG4gICAgICBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyAmIG90aGVyLmxvdywgdGhpcy5oaWdoICYgb3RoZXIuaGlnaCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYml0d2lzZSBPUiBvZiB0aGlzIEludGVnZXIgYW5kIHRoZSBzcGVjaWZpZWQuXG4gICAqIEBwYXJhbSB7IUludGVnZXJ8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgSW50ZWdlclxuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9XG4gICAqIEBleHBvc2VcbiAgICovXG4gIG9yKG90aGVyKSB7XG4gICAgaWYgKCFJbnRlZ2VyLmlzSW50ZWdlcihvdGhlcikpXG4gICAgICBvdGhlciA9IEludGVnZXIuZnJvbVZhbHVlKG90aGVyKTtcbiAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmxvdyB8IG90aGVyLmxvdywgdGhpcy5oaWdoIHwgb3RoZXIuaGlnaCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYml0d2lzZSBYT1Igb2YgdGhpcyBJbnRlZ2VyIGFuZCB0aGUgZ2l2ZW4gb25lLlxuICAgKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIEludGVnZXJcbiAgICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICAgKiBAZXhwb3NlXG4gICAqL1xuICB4b3Iob3RoZXIpIHtcbiAgICBpZiAoIUludGVnZXIuaXNJbnRlZ2VyKG90aGVyKSlcbiAgICAgIG90aGVyID0gSW50ZWdlci5mcm9tVmFsdWUob3RoZXIpO1xuICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IF4gb3RoZXIubG93LCB0aGlzLmhpZ2ggXiBvdGhlci5oaWdoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoaXMgSW50ZWdlciB3aXRoIGJpdHMgc2hpZnRlZCB0byB0aGUgbGVmdCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgKiBAcGFyYW0ge251bWJlcnwhSW50ZWdlcn0gbnVtQml0cyBOdW1iZXIgb2YgYml0c1xuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFNoaWZ0ZWQgSW50ZWdlclxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBzaGlmdExlZnQobnVtQml0cykge1xuICAgIGlmIChJbnRlZ2VyLmlzSW50ZWdlcihudW1CaXRzKSlcbiAgICAgIG51bUJpdHMgPSBudW1CaXRzLnRvSW50KCk7XG4gICAgaWYgKChudW1CaXRzICY9IDYzKSA9PT0gMClcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIGVsc2UgaWYgKG51bUJpdHMgPCAzMilcbiAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21CaXRzKHRoaXMubG93IDw8IG51bUJpdHMsICh0aGlzLmhpZ2ggPDwgbnVtQml0cykgfCAodGhpcy5sb3cgPj4+ICgzMiAtIG51bUJpdHMpKSk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIEludGVnZXIuZnJvbUJpdHMoMCwgdGhpcy5sb3cgPDwgKG51bUJpdHMgLSAzMikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyBJbnRlZ2VyIHdpdGggYml0cyBhcml0aG1ldGljYWxseSBzaGlmdGVkIHRvIHRoZSByaWdodCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxuICAgKiBAcGFyYW0ge251bWJlcnwhSW50ZWdlcn0gbnVtQml0cyBOdW1iZXIgb2YgYml0c1xuICAgKiBAcmV0dXJucyB7IUludGVnZXJ9IFNoaWZ0ZWQgSW50ZWdlclxuICAgKiBAZXhwb3NlXG4gICAqL1xuICBzaGlmdFJpZ2h0KG51bUJpdHMpIHtcbiAgICBpZiAoSW50ZWdlci5pc0ludGVnZXIobnVtQml0cykpXG4gICAgICBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xuICAgIGlmICgobnVtQml0cyAmPSA2MykgPT09IDApXG4gICAgICByZXR1cm4gdGhpcztcbiAgICBlbHNlIGlmIChudW1CaXRzIDwgMzIpXG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cygodGhpcy5sb3cgPj4+IG51bUJpdHMpIHwgKHRoaXMuaGlnaCA8PCAoMzIgLSBudW1CaXRzKSksIHRoaXMuaGlnaCA+PiBudW1CaXRzKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gSW50ZWdlci5mcm9tQml0cyh0aGlzLmhpZ2ggPj4gKG51bUJpdHMgLSAzMiksIHRoaXMuaGlnaCA+PSAwID8gMCA6IC0xKTtcbiAgfVxufVxuXG4vKipcbiAqIEFuIGluZGljYXRvciB1c2VkIHRvIHJlbGlhYmx5IGRldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBJbnRlZ2VyIG9yIG5vdC5cbiAqIEB0eXBlIHtib29sZWFufVxuICogQGNvbnN0XG4gKiBAZXhwb3NlXG4gKiBAcHJpdmF0ZVxuICovXG5JbnRlZ2VyLl9faXNJbnRlZ2VyX187XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRlZ2VyLnByb3RvdHlwZSwgXCJfX2lzSW50ZWdlcl9fXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IGZhbHNlXG59KTtcblxuLyoqXG4gKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBhIEludGVnZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqIE9iamVjdFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuaXNJbnRlZ2VyID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIChvYmogJiYgb2JqW1wiX19pc0ludGVnZXJfX1wiXSkgPT09IHRydWU7XG59O1xuXG5cblxuLyoqXG4gKiBBIGNhY2hlIG9mIHRoZSBJbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyBvZiBzbWFsbCBpbnRlZ2VyIHZhbHVlcy5cbiAqIEB0eXBlIHshT2JqZWN0fVxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgSU5UX0NBQ0hFID0ge307XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiAzMiBiaXQgaW50ZWdlciB2YWx1ZS5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSAzMiBiaXQgaW50ZWdlciBpbiBxdWVzdGlvblxuICogQHJldHVybnMgeyFJbnRlZ2VyfSBUaGUgY29ycmVzcG9uZGluZyBJbnRlZ2VyIHZhbHVlXG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuZnJvbUludCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFyIG9iaiwgY2FjaGVkT2JqO1xuICAgIHZhbHVlID0gdmFsdWUgfCAwO1xuICAgIGlmICgtMTI4IDw9IHZhbHVlICYmIHZhbHVlIDwgMTI4KSB7XG4gICAgICAgIGNhY2hlZE9iaiA9IElOVF9DQUNIRVt2YWx1ZV07XG4gICAgICAgIGlmIChjYWNoZWRPYmopXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkT2JqO1xuICAgIH1cbiAgICBvYmogPSBuZXcgSW50ZWdlcih2YWx1ZSwgdmFsdWUgPCAwID8gLTEgOiAwLCBmYWxzZSk7XG4gICAgaWYgKC0xMjggPD0gdmFsdWUgJiYgdmFsdWUgPCAxMjgpXG4gICAgICAgIElOVF9DQUNIRVt2YWx1ZV0gPSBvYmo7XG4gICAgcmV0dXJuIG9iajtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiB2YWx1ZSwgcHJvdmlkZWQgdGhhdCBpdCBpcyBhIGZpbml0ZSBudW1iZXIuIE90aGVyd2lzZSwgemVybyBpcyByZXR1cm5lZC5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSBudW1iZXIgaW4gcXVlc3Rpb25cbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21OdW1iZXIgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmIChpc05hTih2YWx1ZSkgfHwgIWlzRmluaXRlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIEludGVnZXIuWkVSTztcbiAgICBpZiAodmFsdWUgPD0gLVRXT19QV1JfNjNfREJMKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7XG4gICAgaWYgKHZhbHVlICsgMSA+PSBUV09fUFdSXzYzX0RCTClcbiAgICAgICAgcmV0dXJuIEludGVnZXIuTUFYX1ZBTFVFO1xuICAgIGlmICh2YWx1ZSA8IDApXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21OdW1iZXIoLXZhbHVlKS5uZWdhdGUoKTtcbiAgICByZXR1cm4gbmV3IEludGVnZXIoKHZhbHVlICUgVFdPX1BXUl8zMl9EQkwpIHwgMCwgKHZhbHVlIC8gVFdPX1BXUl8zMl9EQkwpIHwgMCApO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgSW50ZWdlciByZXByZXNlbnRpbmcgdGhlIDY0IGJpdCBpbnRlZ2VyIHRoYXQgY29tZXMgYnkgY29uY2F0ZW5hdGluZyB0aGUgZ2l2ZW4gbG93IGFuZCBoaWdoIGJpdHMuIEVhY2ggaXNcbiAqICBhc3N1bWVkIHRvIHVzZSAzMiBiaXRzLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbG93Qml0cyBUaGUgbG93IDMyIGJpdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBoaWdoQml0cyBUaGUgaGlnaCAzMiBiaXRzXG4gKiBAcmV0dXJucyB7IUludGVnZXJ9IFRoZSBjb3JyZXNwb25kaW5nIEludGVnZXIgdmFsdWVcbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5mcm9tQml0cyA9IGZ1bmN0aW9uKGxvd0JpdHMsIGhpZ2hCaXRzKSB7XG4gICAgcmV0dXJuIG5ldyBJbnRlZ2VyKGxvd0JpdHMsIGhpZ2hCaXRzKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIEludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHN0cmluZywgd3JpdHRlbiB1c2luZyB0aGUgc3BlY2lmaWVkIHJhZGl4LlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBJbnRlZ2VyXG4gKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFRoZSByYWRpeCBpbiB3aGljaCB0aGUgdGV4dCBpcyB3cml0dGVuICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcbiAqIEByZXR1cm5zIHshSW50ZWdlcn0gVGhlIGNvcnJlc3BvbmRpbmcgSW50ZWdlciB2YWx1ZVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21TdHJpbmcgPSBmdW5jdGlvbihzdHIsIHJhZGl4KSB7XG4gICAgaWYgKHN0ci5sZW5ndGggPT09IDApXG4gICAgICAgIHRocm93IG5ld0Vycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmcnKTtcbiAgICBpZiAoc3RyID09PSBcIk5hTlwiIHx8IHN0ciA9PT0gXCJJbmZpbml0eVwiIHx8IHN0ciA9PT0gXCIrSW5maW5pdHlcIiB8fCBzdHIgPT09IFwiLUluZmluaXR5XCIpXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLlpFUk87XG4gICAgcmFkaXggPSByYWRpeCB8fCAxMDtcbiAgICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpXG4gICAgICAgIHRocm93IG5ld0Vycm9yKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XG5cbiAgICB2YXIgcDtcbiAgICBpZiAoKHAgPSBzdHIuaW5kZXhPZignLScpKSA+IDApXG4gICAgICAgIHRocm93IG5ld0Vycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBpbnRlcmlvciBcIi1cIiBjaGFyYWN0ZXI6ICcgKyBzdHIpO1xuICAgIGVsc2UgaWYgKHAgPT09IDApXG4gICAgICAgIHJldHVybiBJbnRlZ2VyLmZyb21TdHJpbmcoc3RyLnN1YnN0cmluZygxKSwgcmFkaXgpLm5lZ2F0ZSgpO1xuXG4gICAgLy8gRG8gc2V2ZXJhbCAoOCkgZGlnaXRzIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLCBzbyBhcyB0b1xuICAgIC8vIG1pbmltaXplIHRoZSBjYWxscyB0byB0aGUgdmVyeSBleHBlbnNpdmUgZW11bGF0ZWQgZGl2LlxuICAgIHZhciByYWRpeFRvUG93ZXIgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3cocmFkaXgsIDgpKTtcblxuICAgIHZhciByZXN1bHQgPSBJbnRlZ2VyLlpFUk87XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpICs9IDgpIHtcbiAgICAgICAgdmFyIHNpemUgPSBNYXRoLm1pbig4LCBzdHIubGVuZ3RoIC0gaSk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcoaSwgaSArIHNpemUpLCByYWRpeCk7XG4gICAgICAgIGlmIChzaXplIDwgOCkge1xuICAgICAgICAgICAgdmFyIHBvd2VyID0gSW50ZWdlci5mcm9tTnVtYmVyKE1hdGgucG93KHJhZGl4LCBzaXplKSk7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocG93ZXIpLmFkZChJbnRlZ2VyLmZyb21OdW1iZXIodmFsdWUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShyYWRpeFRvUG93ZXIpO1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmFkZChJbnRlZ2VyLmZyb21OdW1iZXIodmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHZhbHVlIHRvIGEgSW50ZWdlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfCF7bG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcn19IHZhbCBWYWx1ZVxuICogQHJldHVybnMgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLmZyb21WYWx1ZSA9IGZ1bmN0aW9uKHZhbCkge1xuICAgIGlmICh2YWwgLyogaXMgY29tcGF0aWJsZSAqLyBpbnN0YW5jZW9mIEludGVnZXIpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5mcm9tTnVtYmVyKHZhbCk7XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gSW50ZWdlci5mcm9tU3RyaW5nKHZhbCk7XG4gICAgLy8gVGhyb3dzIGZvciBub24tb2JqZWN0cywgY29udmVydHMgbm9uLWluc3RhbmNlb2YgSW50ZWdlcjpcbiAgICByZXR1cm4gbmV3IEludGVnZXIodmFsLmxvdywgdmFsLmhpZ2gpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHZhbHVlIHRvIGEgbnVtYmVyLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLnRvTnVtYmVyID0gZnVuY3Rpb24odmFsKSB7XG4gcmV0dXJuIEludGVnZXIuZnJvbVZhbHVlKHZhbCkudG9OdW1iZXIoKTtcbn07XG5cbi8qKlxuKiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHZhbHVlIHRvIGEgc3RyaW5nLlxuKiBAYWNjZXNzIHByaXZhdGVcbiogQHBhcmFtIHshSW50ZWdlcnxudW1iZXJ8c3RyaW5nfCF7bG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcn19IHZhbCBWYWx1ZVxuKiBAcGFyYW0ge251bWJlcn0gcmFkaXggb3B0aW9uYWwgcmFkaXggZm9yIHN0cmluZyBjb252ZXJzaW9uLCBkZWZhdWx0cyB0byAxMFxuKiBAcmV0dXJucyB7U3RyaW5nfVxuKiBAZXhwb3NlXG4qL1xuSW50ZWdlci50b1N0cmluZyA9IGZ1bmN0aW9uKHZhbCwgcmFkaXgpIHtcbiAgcmV0dXJuIEludGVnZXIuZnJvbVZhbHVlKHZhbCkudG9TdHJpbmcocmFkaXgpXG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgaW4gdGhlIHNhZmUgcmFuZ2UgaW4gb3JkZXIgdG8gYmUgY29udmVydGVkIHRvIGEgbmF0aXZlIG51bWJlclxuICogQGFjY2VzcyBwcml2YXRlXG4gKiBAcGFyYW0geyFJbnRlZ2VyfG51bWJlcnxzdHJpbmd8IXtsb3c6IG51bWJlciwgaGlnaDogbnVtYmVyfX0gdmFsIFZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gcmFkaXggb3B0aW9uYWwgcmFkaXggZm9yIHN0cmluZyBjb252ZXJzaW9uLCBkZWZhdWx0cyB0byAxMFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuaW5TYWZlUmFuZ2UgPSBmdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIEludGVnZXIuZnJvbVZhbHVlKHZhbCkuaW5TYWZlUmFuZ2UoKTtcbn07XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8xNl9EQkwgPSAxIDw8IDE2O1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfMjRfREJMID0gMSA8PCAyNDtcblxuLyoqXG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGNvbnN0XG4gKiBAaW5uZXJcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBUV09fUFdSXzMyX0RCTCA9IFRXT19QV1JfMTZfREJMICogVFdPX1BXUl8xNl9EQkw7XG5cbi8qKlxuICogQHR5cGUge251bWJlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl82NF9EQkwgPSBUV09fUFdSXzMyX0RCTCAqIFRXT19QV1JfMzJfREJMO1xuXG4vKipcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAY29uc3RcbiAqIEBpbm5lclxuICogQHByaXZhdGVcbiAqL1xudmFyIFRXT19QV1JfNjNfREJMID0gVFdPX1BXUl82NF9EQkwgLyAyO1xuXG4vKipcbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBjb25zdFxuICogQGlubmVyXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVFdPX1BXUl8yNCA9IEludGVnZXIuZnJvbUludChUV09fUFdSXzI0X0RCTCk7XG5cbi8qKlxuICogU2lnbmVkIHplcm8uXG4gKiBAdHlwZSB7IUludGVnZXJ9XG4gKiBAZXhwb3NlXG4gKi9cbkludGVnZXIuWkVSTyA9IEludGVnZXIuZnJvbUludCgwKTtcblxuLyoqXG4gKiBTaWduZWQgb25lLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk9ORSA9IEludGVnZXIuZnJvbUludCgxKTtcblxuLyoqXG4gKiBTaWduZWQgbmVnYXRpdmUgb25lLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk5FR19PTkUgPSBJbnRlZ2VyLmZyb21JbnQoLTEpO1xuXG4vKipcbiAqIE1heGltdW0gc2lnbmVkIHZhbHVlLlxuICogQHR5cGUgeyFJbnRlZ2VyfVxuICogQGV4cG9zZVxuICovXG5JbnRlZ2VyLk1BWF9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMHhGRkZGRkZGRnwwLCAweDdGRkZGRkZGfDAsIGZhbHNlKTtcblxuLyoqXG4gKiBNaW5pbXVtIHNpZ25lZCB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NSU5fVkFMVUUgPSBJbnRlZ2VyLmZyb21CaXRzKDAsIDB4ODAwMDAwMDB8MCwgZmFsc2UpO1xuXG4vKipcbiAqIE1pbmltdW0gc2FmZSB2YWx1ZS5cbiAqIEB0eXBlIHshSW50ZWdlcn1cbiAqIEBleHBvc2VcbiAqL1xuSW50ZWdlci5NSU5fU0FGRV9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMHgxfDAsIDB4RkZGRkZGRkZGRkUwMDAwMHwwKTtcblxuLyoqXG4qIE1heGltdW0gc2FmZSB2YWx1ZS5cbiogQHR5cGUgeyFJbnRlZ2VyfVxuKiBAZXhwb3NlXG4qL1xuSW50ZWdlci5NQVhfU0FGRV9WQUxVRSA9IEludGVnZXIuZnJvbUJpdHMoMHhGRkZGRkZGRnwwLDB4MUZGRkZGfDApO1xuXG4vKipcbiAqIENhc3QgdmFsdWUgdG8gSW50ZWdlciB0eXBlLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIHVzZS5cbiAqIEByZXR1cm4ge0ludGVnZXJ9IC0gQW4gb2JqZWN0IG9mIHR5cGUgSW50ZWdlci5cbiAqL1xubGV0IGludCA9IEludGVnZXIuZnJvbVZhbHVlO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFyaWFibGUgaXMgb2YgSW50ZWdlciB0eXBlLlxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmlhYmxlIHRvIGNoZWNrLlxuICogQHJldHVybiB7Qm9vbGVhbn0gLSBJcyBpdCBvZiB0aGUgSW50ZWdlciB0eXBlP1xuICovXG5sZXQgaXNJbnQgPSBJbnRlZ2VyLmlzSW50ZWdlcjtcblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhcmlhYmxlIGNhbiBiZSBzYWZlbHkgY29udmVydGVkIHRvIGEgbnVtYmVyXG4gKiBAYWNjZXNzIHB1YmxpY1xuICogQHBhcmFtIHtNaXhlZH0gdmFsdWUgLSBUaGUgdmFyaWFibGUgdG8gY2hlY2tcbiAqIEByZXR1cm4ge0Jvb2xlYW59IC0gdHJ1ZSBpZiBpdCBpcyBzYWZlIHRvIGNhbGwgdG9OdW1iZXIgb24gdmFyaWFibGUgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmxldCBpblNhZmVSYW5nZSA9IEludGVnZXIuaW5TYWZlUmFuZ2U7XG5cbi8qKlxuICogQ29udmVydHMgYSB2YXJpYWJsZSB0byBhIG51bWJlclxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmlhYmxlIHRvIGNvbnZlcnRcbiAqIEByZXR1cm4ge251bWJlcn0gLSB0aGUgdmFyaWFibGUgYXMgYSBudW1iZXJcbiAqL1xubGV0IHRvTnVtYmVyID0gSW50ZWdlci50b051bWJlcjtcblxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byBhIHN0cmluZyByZXByZXNlbnRhdGlvblxuICogQGFjY2VzcyBwdWJsaWNcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIC0gVGhlIHZhcmlhYmxlIHRvIGNvbnZlcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYWRpeCAtIHJhZGl4IHRvIHVzZSBpbiBzdHJpbmcgY29udmVyc2lvbiwgZGVmYXVsdHMgdG8gMTBcbiAqIEByZXR1cm4ge1N0cmluZ30gLSByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlZ2VyXG4gKi9cbmxldCB0b1N0cmluZyA9IEludGVnZXIudG9TdHJpbmc7XG5cbmV4cG9ydCB7XG4gICAgaW50LFxuICAgIGlzSW50LFxuICAgIGluU2FmZVJhbmdlLFxuICAgIHRvTnVtYmVyLFxuICAgIHRvU3RyaW5nXG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVnZXJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuIFxuLyoqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjb21tb24gQVBJIGZvciBkZWFsaW5nIHdpdGggYmluYXJ5IGRhdGEgdGhhdFxuICAqIHdvcmtzIGZvciBib3RoIGJyb3dzZXJzICh2aWEgQXJyYXlCdWZmZXIvRGF0YVZpZXcpIGFuZCBmb3IgTm9kZUpTXG4gICoodmlhIEJ1ZmZlciBBUEkpLlxuICAqL1xuXG5sZXQgX25vZGUgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuLyoqXG4gICogQ29tbW9uIGJhc2Ugd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBtb3N0IGJ1ZmZlciBtZXRob2RzLlxuICAqIEJ1ZmZlcnMgYXJlIHN0YXRlZnVsIC0gdGhleSB0cmFjayBhIGN1cnJlbnQgXCJwb3NpdGlvblwiLCB0aGlzIGhlbHBzIGdyZWF0bHlcbiAgKiB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbSB0aGVtIGluY3JlbWVudGFsbHkuIFlvdSBjYW4gYWxzbyBpZ25vcmUgdGhlXG4gICogc3RhdGVmdWwgcmVhZC93cml0ZSBtZXRob2RzLlxuICAqIHJlYWRYWFggYW5kIHdyaXRlWFhYLW1ldGhvZHMgbW92ZSB0aGUgaW5uZXIgcG9zaXRpb24gb2YgdGhlIGJ1ZmZlci5cbiAgKiBwdXRYWFggYW5kIGdldFhYWC1tZXRob2RzIGRvIG5vdC5cbiAgKiBAYWNjZXNzIHByaXZhdGVcbiAgKi9cbmNsYXNzIEJhc2VCdWZmZXJcbntcbiAgLyoqXG4gICAqIENyZWF0ZSBhIGluc3RhbmNlIHdpdGggdGhlIGluamVjdGVkIHNpemUuXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHNpemVcbiAgICovXG4gIGNvbnN0cnVjdG9yIChzaXplKSB7XG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gICAgdGhpcy5sZW5ndGggPSBzaXplO1xuICAgIC8vIENhbGxpbmcgdGhlc2Ugb3V0IC0gdGhpcyBpcyB0aGUgcmVxdWlyZWQgXG4gICAgLy8gbWV0aG9kcyBhIHN1YmNsYXNzIG5lZWRzIHRvIGltcGxlbWVudFxuICAgIGxldCBnZXRVSW50OCA9IG51bGw7XG4gICAgbGV0IGdldEludDggPSBudWxsO1xuICAgIGxldCBnZXRGbG9hdDY0ID0gbnVsbDtcbiAgICBsZXQgZ2V0U2xpY2UgPSBudWxsO1xuICAgIGxldCBwdXRGbG9hdDY0ID0gbnVsbDtcbiAgICBsZXQgcHV0VUludDggPSBudWxsO1xuICAgIGxldCBwdXRJbnQ4ID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKi9cbiAgZ2V0SW50MTYgKHApIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJbnQ4KHApICAgICAgPDwgOFxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKi9cbiAgZ2V0VUludDE2IChwKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VUludDgocCkgICAgIDw8IDhcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgMSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG4gIGdldEludDMyIChwKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSAgICAgPDwgMjRcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgMSkgPDwgMTZcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgMikgPDwgOFxuICAgICAgICAgfCB0aGlzLmdldFVJbnQ4KHAgKyAzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKi9cbiAgZ2V0VUludDMyIChwKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VUludDgocCkgICAgIDw8IDI0XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDEpIDw8IDE2XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDhcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgMyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICovXG4gIGdldEludDY0IChwKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW50OChwKSAgICAgIDw8IDU2XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDEpIDw8IDQ4XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDIpIDw8IDQwXG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDMpIDw8IDMyXG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDQpIDw8IDI0XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDUpIDw8IDE2XG4gICAgICAgICB8IHRoaXMuZ2V0VUludDgocCArIDYpIDw8IDhcbiAgICAgICAgIHwgdGhpcy5nZXRVSW50OChwICsgNyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgc2xpY2Ugb2YgdGhpcyBidWZmZXIuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGNvcHkgYW55IGRhdGEsXG4gICAqIGJ1dCBzaW1wbHkgcHJvdmlkZXMgYSBzbGljZSB2aWV3IG9mIHRoaXMgYnVmZmVyXG4gICAqIEBwYXJhbSBzdGFydFxuICAgKiBAcGFyYW0gbGVuZ3RoXG4gICAqL1xuICBnZXRTbGljZSAoIHN0YXJ0LCBsZW5ndGggKSB7XG4gICAgcmV0dXJuIG5ldyBTbGljZUJ1ZmZlciggc3RhcnQsIGxlbmd0aCwgdGhpcyApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHB1dEludDE2ICggcCwgdmFsICkge1xuICAgIHRoaXMucHV0SW50OCggIHAsICAgICB2YWwgPj4gOCApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAxLCB2YWwgICAgICAmIDB4RkYgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICBwdXRVSW50MTYgKCBwLCB2YWwgKSB7XG4gICAgdGhpcy5wdXRVSW50OCggcCwgICAgIHZhbCA+PiA4ICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAxLCB2YWwgICAgICAmIDB4RkYgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcFxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICBwdXRJbnQzMiAoIHAsIHZhbCApIHtcbiAgICB0aGlzLnB1dEludDgoICBwLCAgICAgdmFsID4+IDI0ICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDEsIHZhbCA+PiAxNiAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMiwgdmFsID4+IDggICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAzLCB2YWwgICAgICAgJiAweEZGICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgcHV0VUludDMyICggcCwgdmFsICkge1xuICAgIHRoaXMucHV0VUludDgoIHAsICAgICB2YWwgPj4gMjQgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDEsIHZhbCA+PiAxNiAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMiwgdmFsID4+IDggICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAzLCB2YWwgICAgICAgJiAweEZGICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBcbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgcHV0SW50NjQgKCBwLCB2YWwgKSB7XG4gICAgdGhpcy5wdXRJbnQ4KCAgcCwgdmFsID4+IDQ4ICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDEsIHZhbCA+PiA0MiAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgMiwgdmFsID4+IDM2ICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyAzLCB2YWwgPj4gMzAgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDQsIHZhbCA+PiAyNCAmIDB4RkYgKTtcbiAgICB0aGlzLnB1dFVJbnQ4KCBwICsgNSwgdmFsID4+IDE2ICYgMHhGRiApO1xuICAgIHRoaXMucHV0VUludDgoIHAgKyA2LCB2YWwgPj4gOCAgJiAweEZGICk7XG4gICAgdGhpcy5wdXRVSW50OCggcCArIDcsIHZhbCAgICAgICAmIDB4RkYgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcG9zaXRpb25cbiAgICogQHBhcmFtIG90aGVyXG4gICAqL1xuICBwdXRCeXRlcyAoIHBvc2l0aW9uLCBvdGhlciApIHtcbiAgICBmb3IgKGxldCBpID0gMCwgZW5kPW90aGVyLnJlbWFpbmluZygpOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHRoaXMucHV0VUludDgoIHBvc2l0aW9uICsgaSwgb3RoZXIucmVhZFVJbnQ4KCkgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZFVJbnQ4ICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVSW50OCggdGhpcy5fdXBkYXRlUG9zKDEpICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZEludDggKCkge1xuICAgIHJldHVybiB0aGlzLmdldEludDgoIHRoaXMuX3VwZGF0ZVBvcygxKSApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgZnJvbSBzdGF0ZSBwb3NpdGlvbi5cbiAgICovXG4gIHJlYWRVSW50MTYgKCkge1xuICAgIHJldHVybiB0aGlzLmdldFVJbnQxNiggdGhpcy5fdXBkYXRlUG9zKDIpICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBmcm9tIHN0YXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcmVhZFVJbnQzMiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VUludDMyKCB0aGlzLl91cGRhdGVQb3MoNCkgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAqL1xuICByZWFkSW50MTYgKCkge1xuICAgIHJldHVybiB0aGlzLmdldEludDE2KCB0aGlzLl91cGRhdGVQb3MoMikgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAqL1xuICByZWFkSW50MzIgKCkge1xuICAgIHJldHVybiB0aGlzLmdldEludDMyKCB0aGlzLl91cGRhdGVQb3MoNCkgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAqL1xuICByZWFkSW50NjQgKCkge1xuICAgIHJldHVybiB0aGlzLmdldEludDMyKCB0aGlzLl91cGRhdGVQb3MoOCkgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGZyb20gc3RhdGUgcG9zaXRpb24uXG4gICAqL1xuICByZWFkRmxvYXQ2NCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmxvYXQ2NCggdGhpcy5fdXBkYXRlUG9zKDgpICk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHdyaXRlVUludDggKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRVSW50OCggdGhpcy5fdXBkYXRlUG9zKDEpLCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICB3cml0ZUludDggKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRJbnQ4KCB0aGlzLl91cGRhdGVQb3MoMSksIHZhbCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHdyaXRlSW50MTYgKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRJbnQxNiggdGhpcy5fdXBkYXRlUG9zKDIpLCB2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRvIHN0YXRlIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsXG4gICAqL1xuICB3cml0ZUludDMyICggdmFsICkge1xuICAgIHRoaXMucHV0SW50MzIoIHRoaXMuX3VwZGF0ZVBvcyg0KSwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgd3JpdGVVSW50MzIgKCB2YWwgKSB7XG4gICAgdGhpcy5wdXRVSW50MzIoIHRoaXMuX3VwZGF0ZVBvcyg0KSwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgd3JpdGVJbnQ2NCAoIHZhbCApIHtcbiAgICB0aGlzLnB1dEludDY0KCB0aGlzLl91cGRhdGVQb3MoOCksIHZhbCk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdG8gc3RhdGUgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB2YWxcbiAgICovXG4gIHdyaXRlRmxvYXQ2NCAoIHZhbCApIHtcbiAgICB0aGlzLnB1dEZsb2F0NjQoIHRoaXMuX3VwZGF0ZVBvcyg4KSwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0byBzdGF0ZSBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHZhbFxuICAgKi9cbiAgd3JpdGVCeXRlcyAoIHZhbCApIHtcbiAgICB0aGlzLnB1dEJ5dGVzKCB0aGlzLl91cGRhdGVQb3ModmFsLnJlbWFpbmluZygpKSwgdmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzbGljZSBvZiB0aGlzIGJ1ZmZlci4gVGhpcyBtZXRob2QgZG9lcyBub3QgY29weSBhbnkgZGF0YSxcbiAgICogYnV0IHNpbXBseSBwcm92aWRlcyBhIHNsaWNlIHZpZXcgb2YgdGhpcyBidWZmZXJcbiAgICogQHBhcmFtIGxlbmd0aFxuICAgKi9cbiAgcmVhZFNsaWNlICggbGVuZ3RoICkge1xuICAgIHJldHVybiB0aGlzLmdldFNsaWNlKCB0aGlzLl91cGRhdGVQb3MoIGxlbmd0aCApLCBsZW5ndGggKTtcbiAgfVxuXG4gIF91cGRhdGVQb3MgKCBsZW5ndGggKSB7XG4gICAgbGV0IHAgPSB0aGlzLnBvc2l0aW9uO1xuICAgIHRoaXMucG9zaXRpb24gKz0gbGVuZ3RoO1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByZW1hbmluZ1xuICAgKi9cbiAgcmVtYWluaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggLSB0aGlzLnBvc2l0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhcyByZW1hbmluZ1xuICAgKi9cbiAgaGFzUmVtYWluaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZW1haW5pbmcoKSA+IDA7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgcG9zaXRpb24gc3RhdGVcbiAgICovXG4gIHJlc2V0ICgpIHtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJ1ZmZlciBhbmQgaXQncyBzdGF0ZS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBCdWZmZXIgYXMgYSBzdHJpbmdcbiAgICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgXCIoIHBvc2l0aW9uPVwiK3RoaXMucG9zaXRpb24rXCIgKVxcbiAgXCIgKyB0aGlzLnRvSGV4KCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBidWZmZXIuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQnVmZmVyIGFzIGEgc3RyaW5nXG4gICAqL1xuICB0b0hleCAoKSB7XG4gICAgLy8gVE9ETyBzb21ldGhpbmcgbGlrZSBTdHJpbmdCdWlsZGVyP1xuICAgIGxldCBvdXQgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGhleEJ5dGUgPSB0aGlzLmdldFVJbnQ4KGkpLnRvU3RyaW5nKDE2KTtcbiAgICAgIGlmKCBoZXhCeXRlLmxlbmd0aCA9PSAxICkge1xuICAgICAgICBoZXhCeXRlID0gXCIwXCIgKyBoZXhCeXRlO1xuICAgICAgfVxuICAgICAgb3V0ICs9IGhleEJ5dGUgKyBcIiBcIlxuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogQmFzaWMgYnVmZmVyIGltcGxlbWVudGF0aW9uIHRoYXQgc2hvdWxkIHdvcmsgaW4gbW9zdCBhbnkgbW9kZXJuIEpTIGVudi5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5jbGFzcyBIZWFwQnVmZmVyIGV4dGVuZHMgQmFzZUJ1ZmZlciB7XG4gIGNvbnN0cnVjdG9yIChhcmcpIHtcbiAgICBsZXQgYnVmZmVyID0gYXJnIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgPyBhcmcgOiBuZXcgQXJyYXlCdWZmZXIoYXJnKVxuICAgIHN1cGVyKGJ1ZmZlci5ieXRlTGVuZ3RoICk7XG4gICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyO1xuICAgIHRoaXMuX3ZpZXcgPSBuZXcgRGF0YVZpZXcoIHRoaXMuX2J1ZmZlciApO1xuICB9XG5cbiAgcHV0VUludDggKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX3ZpZXcuc2V0VWludDgocG9zaXRpb24sIHZhbCk7XG4gIH1cblxuICBnZXRVSW50OCAoIHBvc2l0aW9uICkge1xuICAgIHJldHVybiB0aGlzLl92aWV3LmdldFVpbnQ4KHBvc2l0aW9uKTtcbiAgfVxuXG4gIHB1dEludDggKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX3ZpZXcuc2V0SW50OChwb3NpdGlvbiwgdmFsKTtcbiAgfVxuXG4gIGdldEludDggKCBwb3NpdGlvbiApIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgfVxuXG4gIGdldEZsb2F0NjQgKCBwb3NpdGlvbiApIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldy5nZXRGbG9hdDY0KHBvc2l0aW9uKTtcbiAgfVxuXG4gIHB1dEZsb2F0NjQgKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX3ZpZXcuc2V0RmxvYXQ2NCggcG9zaXRpb24sIHZhbCApO1xuICB9XG5cbiAgZ2V0U2xpY2UgKCBzdGFydCwgbGVuZ3RoICkge1xuICAgIGlmKCB0aGlzLl9idWZmZXIuc2xpY2UgKSB7XG4gICAgICByZXR1cm4gbmV3IEhlYXBCdWZmZXIoIHRoaXMuX2J1ZmZlci5zbGljZSggc3RhcnQsIHN0YXJ0ICsgbGVuZ3RoICkgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU29tZSBwbGF0Zm9ybXMgKGVnLiBwaGFudG9tanMpIGRvbid0IHN1cHBvcnQgc2xpY2UsIHNvIGZhbGwgYmFjayB0byBhIGNvcHlcbiAgICAgIC8vIFdlIGRvIHRoaXMgcmF0aGVyIHRoYW4gcmV0dXJuIGEgU2xpY2VCdWZmZXIsIGJlY2F1c2Ugc2xpY2VCdWZmZXIgY2Fubm90XG4gICAgICAvLyBiZSBwYXNzZWQgdG8gbmF0aXZlIG5ldHdvcmsgd3JpdGUgb3BzIGV0YyAtIHdlIG5lZWQgQXJyYXlCdWZmZXIgZm9yIHRoYXRcbiAgICAgIGxldCBjb3B5ID0gbmV3IEhlYXBCdWZmZXIobGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29weS5wdXRVSW50OCggaSwgdGhpcy5nZXRVSW50OCggaSArIHN0YXJ0ICkgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBcbiAgICogU3BlY2lmaWMgdG8gSGVhcEJ1ZmZlciwgdGhpcyBnZXRzIGEgRGF0YVZpZXcgZnJvbSB0aGVcbiAgICogY3VycmVudCBwb3NpdGlvbiBhbmQgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGguIFxuICAgKi9cbiAgcmVhZFZpZXcgKCBsZW5ndGggKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRhVmlldyggdGhpcy5fYnVmZmVyLCB0aGlzLl91cGRhdGVQb3MobGVuZ3RoKSwgbGVuZ3RoICk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdmlldyBhcyBzbGljZSBvZiBhbm90aGVyIGJ1ZmZlci5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5jbGFzcyBTbGljZUJ1ZmZlciBleHRlbmRzIEJhc2VCdWZmZXIge1xuICBjb25zdHJ1Y3Rvciggc3RhcnQsIGxlbmd0aCwgaW5uZXIgKSB7XG4gICAgc3VwZXIobGVuZ3RoKTtcbiAgICB0aGlzLl9zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuX2lubmVyID0gaW5uZXI7XG4gIH1cblxuICBwdXRVSW50OCAoIHBvc2l0aW9uLCB2YWwgKSB7XG4gICAgdGhpcy5faW5uZXIucHV0VUludDgoIHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24sIHZhbCApO1xuICB9XG5cbiAgZ2V0VUludDggKCBwb3NpdGlvbiApIHtcbiAgICByZXR1cm4gdGhpcy5faW5uZXIuZ2V0VUludDgoIHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24gKTtcbiAgfVxuXG4gIHB1dEludDggKCBwb3NpdGlvbiwgdmFsICkge1xuICAgIHRoaXMuX2lubmVyLnB1dEludDgoIHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24sIHZhbCApO1xuICB9XG5cbiAgcHV0RmxvYXQ2NCAoIHBvc2l0aW9uLCB2YWwgKSB7XG4gICAgdGhpcy5faW5uZXIucHV0RmxvYXQ2NCggdGhpcy5fc3RhcnQgKyBwb3NpdGlvbiwgdmFsICk7XG4gIH1cblxuICBnZXRJbnQ4ICggcG9zaXRpb24gKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldEludDgoIHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24gKTtcbiAgfVxuXG4gIGdldEZsb2F0NjQgKHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubmVyLmdldEZsb2F0NjQoIHRoaXMuX3N0YXJ0ICsgcG9zaXRpb24gKTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1ZmZlciB0aGF0IGNvbWJpbmVzIG11bHRpcGxlIGJ1ZmZlcnMsIGV4cG9zaW5nIHRoZW0gYXMgb25lIHNpbmdsZSBidWZmZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgQ29tYmluZWRCdWZmZXIgZXh0ZW5kcyBCYXNlQnVmZmVyIHtcbiAgY29uc3RydWN0b3IgKGJ1ZmZlcnMpIHtcbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxlbmd0aCArPSBidWZmZXJzW2ldLmxlbmd0aDtcbiAgICB9XG4gICAgc3VwZXIoIGxlbmd0aCApO1xuICAgIHRoaXMuX2J1ZmZlcnMgPSBidWZmZXJzO1xuICB9XG5cbiAgZ2V0VUludDggKCBwb3NpdGlvbiApIHtcbiAgICAvLyBTdXJlbHkgdGhlcmUncyBhIGZhc3RlciB3YXkgdG8gZG8gdGhpcy4uIHNvbWUgc29ydCBvZiBsb29rdXAgdGFibGUgdGhpbmc/XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYnVmZmVyID0gdGhpcy5fYnVmZmVyc1tpXTtcbiAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiBpcyBub3QgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLCBza2lwIHRoZSBjdXJyZW50IGJ1ZmZlclxuICAgICAgaWYoIHBvc2l0aW9uID49IGJ1ZmZlci5sZW5ndGggKSB7XG4gICAgICAgIHBvc2l0aW9uIC09IGJ1ZmZlci5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYnVmZmVyLmdldFVJbnQ4KHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRJbnQ4ICggcG9zaXRpb24gKSB7XG4gICAgLy8gU3VyZWx5IHRoZXJlJ3MgYSBmYXN0ZXIgd2F5IHRvIGRvIHRoaXMuLiBzb21lIHNvcnQgb2YgbG9va3VwIHRhYmxlIHRoaW5nP1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGJ1ZmZlciA9IHRoaXMuX2J1ZmZlcnNbaV07XG4gICAgICAvLyBJZiB0aGUgcG9zaXRpb24gaXMgbm90IGluIHRoZSBjdXJyZW50IGJ1ZmZlciwgc2tpcCB0aGUgY3VycmVudCBidWZmZXJcbiAgICAgIGlmKCBwb3NpdGlvbiA+PSBidWZmZXIubGVuZ3RoICkge1xuICAgICAgICBwb3NpdGlvbiAtPSBidWZmZXIubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5nZXRJbnQ4KHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRGbG9hdDY0ICggcG9zaXRpb24gKSB7XG4gICAgLy8gQXQgc29tZSBwb2ludCwgYSBtb3JlIGVmZmljaWVudCBpbXBsLiBGb3Igbm93LCB3ZSBjb3B5IHRoZSA4IGJ5dGVzXG4gICAgLy8gd2Ugd2FudCB0byByZWFkIGFuZCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIGltcGwgb2YgSUVFRSA3NTQuXG4gICAgbGV0IGIgPSBhbGxvYyg4KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgeyBiLnB1dFVJbnQ4KGksIHRoaXMuZ2V0VUludDgoIHBvc2l0aW9uICsgaSApKTsgfTtcbiAgICByZXR1cm4gYi5nZXRGbG9hdDY0KDApO1xuICB9XG59XG5cbi8qKlxuICogQnVmZmVyIHVzZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50XG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgTm9kZUJ1ZmZlciBleHRlbmRzIEJhc2VCdWZmZXIge1xuICBjb25zdHJ1Y3RvcihhcmcpIHtcbiAgICBsZXQgYnVmZmVyID0gYXJnIGluc3RhbmNlb2YgX25vZGUuQnVmZmVyID8gYXJnIDogbmV3IF9ub2RlLkJ1ZmZlcihhcmcpO1xuICAgIHN1cGVyKGJ1ZmZlci5sZW5ndGgpO1xuICAgIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgfVxuXG4gIGdldFVJbnQ4IChwb3NpdGlvbikge1xuICAgIHJldHVybiB0aGlzLl9idWZmZXIucmVhZFVJbnQ4KCBwb3NpdGlvbiApO1xuICB9XG5cbiAgZ2V0SW50OCAocG9zaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWRJbnQ4KCBwb3NpdGlvbiApO1xuICB9XG5cbiAgZ2V0RmxvYXQ2NCAocG9zaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyLnJlYWREb3VibGVCRShwb3NpdGlvbik7XG4gIH1cblxuICBwdXRVSW50OCAocG9zaXRpb24sIHZhbCkge1xuICAgIHRoaXMuX2J1ZmZlci53cml0ZVVJbnQ4KCB2YWwsIHBvc2l0aW9uICk7XG4gIH1cblxuICBwdXRJbnQ4IChwb3NpdGlvbiwgdmFsKSB7XG4gICAgdGhpcy5fYnVmZmVyLndyaXRlSW50OCggdmFsLCBwb3NpdGlvbiApO1xuICB9XG5cbiAgcHV0RmxvYXQ2NCAoIHBvc2l0aW9uLCB2YWwgKSB7XG4gICAgdGhpcy5fYnVmZmVyLndyaXRlRG91YmxlQkUoIHZhbCwgcG9zaXRpb24gKTtcbiAgfVxuXG4gIHB1dEJ5dGVzICggcG9zaXRpb24sIHZhbCApIHtcbiAgICBpZiggdmFsIGluc3RhbmNlb2YgTm9kZUJ1ZmZlciApIHtcbiAgICAgIGxldCBieXRlc1RvQ29weSA9IE1hdGgubWluKCB2YWwubGVuZ3RoIC0gdmFsLnBvc2l0aW9uLCB0aGlzLmxlbmd0aCAtIHBvc2l0aW9uICk7XG4gICAgICB2YWwuX2J1ZmZlci5jb3B5KFxuICAgICAgICB0aGlzLl9idWZmZXIsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB2YWwucG9zaXRpb24sXG4gICAgICAgIHZhbC5wb3NpdGlvbiArIGJ5dGVzVG9Db3B5ICk7XG4gICAgICB2YWwucG9zaXRpb24gKz0gYnl0ZXNUb0NvcHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLnB1dEJ5dGVzKHBvc2l0aW9uLCB2YWwpO1xuICAgIH1cbiAgfTtcblxuICBnZXRTbGljZSAoIHN0YXJ0LCBsZW5ndGggKSB7XG4gICAgcmV0dXJuIG5ldyBOb2RlQnVmZmVyKCB0aGlzLl9idWZmZXIuc2xpY2UoIHN0YXJ0LCBzdGFydCArIGxlbmd0aCApICk7XG4gIH1cbn1cblxuLy8gVXNlIEhlYXBCdWZmZXIgYnkgZGVmYXVsdCwgdW5sZXNzIEJ1ZmZlciBBUEkgaXMgYXZhaWxhYmxlLCBzZWUgYmVsb3dcbmxldCBfRGVmYXVsdEJ1ZmZlciA9IEhlYXBCdWZmZXI7XG50cnkge1xuICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHdlJ3JlIG5vdCBydW5uaW5nIG9uIE5vZGVKUyBvciBlcXVpdmFsZW50XG4gIHJlcXVpcmUucmVzb2x2ZShcImJ1ZmZlclwiKTtcbiAgX0RlZmF1bHRCdWZmZXIgPSBOb2RlQnVmZmVyO1xufSBjYXRjaChlKSB7fVxuXG4vKipcbiAqIEFsbG9jYXRlIGEgbmV3IGJ1ZmZlciB1c2luZyB3aGF0ZXZlciBtZWNoYW5pc20gaXMgbW9zdCBzZW5zaWJsZSBmb3IgdGhlXG4gKiBjdXJyZW50IHBsYXRmb3JtXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7SW50ZWdlcn0gc2l6ZVxuICogQHJldHVybiBuZXcgYnVmZmVyXG4gKi9cbmZ1bmN0aW9uIGFsbG9jIChzaXplKSB7XG4gIHJldHVybiBuZXcgX0RlZmF1bHRCdWZmZXIoc2l6ZSk7XG59XG5cbmV4cG9ydCB7XG4gIEJhc2VCdWZmZXIsXG4gIEhlYXBCdWZmZXIsXG4gIFNsaWNlQnVmZmVyLFxuICBDb21iaW5lZEJ1ZmZlcixcbiAgTm9kZUJ1ZmZlcixcbiAgYWxsb2Ncbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbWJpbmVkQnVmZmVyfSBmcm9tICcuL2J1Zic7XG5jb25zdCBvYnNlcnZlciA9IHtcbiAgaW5zdGFuY2U6IG51bGwsXG4gIHVwZGF0ZUluc3RhbmNlOiAoaW5zdGFuY2UpID0+IHtcbiAgICBvYnNlcnZlci5pbnN0YW5jZSA9IGluc3RhbmNlXG4gIH1cbn07XG5cbmNsYXNzIER1bW15Q2hhbm5lbCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICB0aGlzLndyaXR0ZW4gPSBbXTtcbiAgfVxuICBpc0VuY3J5cHRlZCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgd3JpdGUoIGJ1ZiApIHtcbiAgICB0aGlzLndyaXR0ZW4ucHVzaChidWYpO1xuICAgIG9ic2VydmVyLnVwZGF0ZUluc3RhbmNlKHRoaXMpO1xuICB9XG4gIHRvSGV4KCkge1xuICAgIHZhciBvdXQgPSBcIlwiO1xuICAgIGZvciggdmFyIGk9MDsgaTx0aGlzLndyaXR0ZW4ubGVuZ3RoOyBpKysgKSB7XG4gICAgICBvdXQgKz0gdGhpcy53cml0dGVuW2ldLnRvSGV4KCk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgdG9CdWZmZXIgKCkge1xuICAgIHJldHVybiBuZXcgQ29tYmluZWRCdWZmZXIoIHRoaXMud3JpdHRlbiApO1xuICB9XG59XG5cbmNvbnN0IGNoYW5uZWwgPSBEdW1teUNoYW5uZWw7XG5cbmV4cG9ydCB7IGNoYW5uZWwsIG9ic2VydmVyIH1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IG5ldCBmcm9tIFwibmV0XCI7XG5pbXBvcnQgdGxzIGZyb20gXCJ0bHNcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge0VPTH0gZnJvbSBcIm9zXCI7XG5pbXBvcnQge05vZGVCdWZmZXJ9IGZyb20gXCIuL2J1ZlwiO1xuaW1wb3J0IHtFTkNSWVBUSU9OX09GRiwgaXNFbXB0eU9iamVjdE9yTnVsbH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHtuZXdFcnJvciwgU0VTU0lPTl9FWFBJUkVEfSBmcm9tIFwiLi8uLi9lcnJvclwiO1xuXG5sZXQgX0NPTk5FQ1RJT05fSURHRU4gPSAwO1xuXG5mdW5jdGlvbiB1c2VySG9tZSgpIHtcbiAgLy8gRm9yIHNvbWUgcmVhc29uLCBCcm93c2VyaWZ5IGNob2tlcyBvbiBzaGltbWluZyBgcHJvY2Vzc2AuIFRoaXMgY29kZVxuICAvLyB3aWxsIG5ldmVyIGdldCBleGVjdXRlZCBvbiB0aGUgYnJvd3NlciBhbnl3YXksIHRvIGp1c3QgaGFjayBhcm91bmQgaXRcbiAgbGV0IGdldE91dE9mSGVyZUJyb3dzZXJpZnlZb3VyZURydW5rID0gcmVxdWlyZTtcbiAgbGV0IHByb2Nlc3MgPSBnZXRPdXRPZkhlcmVCcm93c2VyaWZ5WW91cmVEcnVuaygncHJvY2VzcycpO1xuXG4gIHJldHVybiBwcm9jZXNzLmVudlsocHJvY2Vzcy5wbGF0Zm9ybSA9PSAnd2luMzInKSA/ICdVU0VSUFJPRklMRScgOiAnSE9NRSddO1xufVxuXG5mdW5jdGlvbiBta0Z1bGxQYXRoKHBhdGhUb0NyZWF0ZSkge1xuICB0cnkge1xuICAgIGZzLm1rZGlyU3luYyggcGF0aFRvQ3JlYXRlICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZihlLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAvLyBDcmVhdGUgcGFyZW50IGRpclxuICAgICAgbWtGdWxsUGF0aChwYXRoLmRpcm5hbWUoIHBhdGhUb0NyZWF0ZSApKTtcbiAgICAgIC8vIEFuZCBub3cgdHJ5IGFnYWluXG4gICAgICBta0Z1bGxQYXRoKCBwYXRoVG9DcmVhdGUgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGUuY29kZSA9PT0gJ0VFWElTVCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRmluZ2VycHJpbnQoIHNlcnZlcklkLCBrbm93bkhvc3RzUGF0aCwgY2IgKSB7XG4gIHRyeSB7XG4gICAgZnMuYWNjZXNzU3luYygga25vd25Ib3N0c1BhdGggKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmV0dXJuIGNiKG51bGwpXG4gIH1cbiAgbGV0IGZvdW5kID0gZmFsc2U7XG4gIHJlcXVpcmUoJ3JlYWRsaW5lJykuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogZnMuY3JlYXRlUmVhZFN0cmVhbShrbm93bkhvc3RzUGF0aClcbiAgfSkub24oJ2xpbmUnLCAobGluZSkgID0+IHtcbiAgICBpZiggIWZvdW5kICYmIGxpbmUuc3RhcnRzV2l0aCggc2VydmVySWQgKSkge1xuICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgY2IoIGxpbmUuc3BsaXQoXCIgXCIpWzFdICk7XG4gICAgfVxuICB9KS5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgaWYoIWZvdW5kKSB7XG4gICAgICBjYihudWxsKTtcbiAgICB9XG4gIH0pO1xufVxuXG5jb25zdCBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZyA9IHt9O1xuZnVuY3Rpb24gc3RvcmVGaW5nZXJwcmludCggc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBmaW5nZXJwcmludCwgY2IgKSB7XG4gIC8vIHdlIGNoZWNrIGlmIHRoZSBzZXJ2ZXJJZCBoYXMgYmVlbiBhcHBlbmRlZFxuICBpZighIV9sb2NrRmluZ2VycHJpbnRGcm9tQXBwZW5kaW5nW3NlcnZlcklkXSl7XG4gICAgLy8gaWYgaXQgaGFzLCB3ZSBpZ25vcmUgaXRcbiAgICByZXR1cm4gY2IobnVsbCk7XG4gIH1cblxuICAvLyB3ZSBtYWtlIHRoZSBsaW5lIGFzIGFwcGVuZGVkXG4gIC8vICggMSBpcyBtb3JlIGVmZmljaWVudCB0byBzdG9yZSB0aGFuIHRydWUgYmVjYXVzZSB0cnVlIGlzIGFuIG9kZGJhbGwgKVxuICBfbG9ja0ZpbmdlcnByaW50RnJvbUFwcGVuZGluZ1tzZXJ2ZXJJZF0gPSAxO1xuXG4gIC8vIElmIGZpbGUgZG9lc24ndCBleGlzdCwgY3JlYXRlIGZ1bGwgcGF0aCB0byBpdFxuICB0cnkge1xuICAgIGZzLmFjY2Vzc1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgbWtGdWxsUGF0aChwYXRoLmRpcm5hbWUoa25vd25Ib3N0c1BhdGgpKTtcbiAgfVxuXG4gIGZzLmFwcGVuZEZpbGUoa25vd25Ib3N0c1BhdGgsIHNlcnZlcklkICsgXCIgXCIgKyBmaW5nZXJwcmludCArIEVPTCwgXCJ1dGY4XCIsIChlcnIpID0+IHtcbiAgICBkZWxldGUgX2xvY2tGaW5nZXJwcmludEZyb21BcHBlbmRpbmdbc2VydmVySWRdO1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgfVxuICAgIHJldHVybiBjYihlcnIpO1xuICB9KTtcbn1cblxuY29uc3QgVHJ1c3RTdHJhdGVneSA9IHtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNpbmNlIHZlcnNpb24gMS4wLiBXaWxsIGJlIGRlbGV0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4ge0BsaW5rICNUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU30uXG4gICAqL1xuICBUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTOiBmdW5jdGlvbiggb3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUgKSB7XG4gICAgY29uc29sZS5sb2coXCJgVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU2AgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBvcHRpb24gYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFwiICtcbiAgICAgIFwidGhlIGRyaXZlci4gUGxlYXNlIHVzZSBgVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNgIGluc3RlYWQuXCIpO1xuICAgIHJldHVybiBUcnVzdFN0cmF0ZWd5LlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTKG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlKTtcbiAgfSxcbiAgVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVMgOiBmdW5jdGlvbiggb3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmUgKSB7XG4gICAgaWYoICFvcHRzLnRydXN0ZWRDZXJ0aWZpY2F0ZXMgfHwgb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzLmxlbmd0aCA9PSAwICkge1xuICAgICAgb25GYWlsdXJlKG5ld0Vycm9yKFwiWW91IGFyZSB1c2luZyBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBhcyB0aGUgbWV0aG9kIFwiICtcbiAgICAgICAgXCJ0byB2ZXJpZnkgdHJ1c3QgZm9yIGVuY3J5cHRlZCAgY29ubmVjdGlvbnMsIGJ1dCBoYXZlIG5vdCBjb25maWd1cmVkIGFueSBcIiArXG4gICAgICAgIFwidHJ1c3RlZENlcnRpZmljYXRlcy4gWW91ICBtdXN0IHNwZWNpZnkgdGhlIHBhdGggdG8gYXQgbGVhc3Qgb25lIHRydXN0ZWQgXCIgK1xuICAgICAgICBcIlguNTA5IGNlcnRpZmljYXRlIGZvciB0aGlzIHRvIHdvcmsuIFR3byBvdGhlciBhbHRlcm5hdGl2ZXMgaXMgdG8gdXNlIFwiICtcbiAgICAgICAgXCJUUlVTVF9BTExfQ0VSVElGSUNBVEVTIG9yIHRvIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIGVuY3J5cHRlZD1cXFwiXCIgKyBFTkNSWVBUSU9OX09GRiArIFwiXFxcIlwiICtcbiAgICAgICAgXCJpbiB5b3VyIGRyaXZlciBjb25maWd1cmF0aW9uLlwiKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHRsc09wdHMgPSB7XG4gICAgICBjYTogb3B0cy50cnVzdGVkQ2VydGlmaWNhdGVzLm1hcCgoZikgPT4gZnMucmVhZEZpbGVTeW5jKGYpKSxcbiAgICAgIC8vIEJlY2F1c2Ugd2UgbWFudWFsbHkgY2hlY2sgZm9yIHRoaXMgaW4gdGhlIGNvbm5lY3QgY2FsbGJhY2ssIHRvIGdpdmVcbiAgICAgIC8vIGEgbW9yZSBoZWxwZnVsIGVycm9yIHRvIHRoZSB1c2VyXG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIGxldCBzb2NrZXQgPSB0bHMuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzb2NrZXQuYXV0aG9yaXplZCkge1xuICAgICAgICBvbkZhaWx1cmUobmV3RXJyb3IoXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuIElmIHlvdSB0cnVzdCB0aGUgZGF0YWJhc2UgeW91IGFyZSBjb25uZWN0aW5nIHRvLCBhZGRcIiArXG4gICAgICAgICAgXCIgdGhlIHNpZ25pbmcgY2VydGlmaWNhdGUsIG9yIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUsIHRvIHRoZSBsaXN0IG9mIGNlcnRpZmljYXRlcyB0cnVzdGVkIGJ5IHRoaXMgZHJpdmVyXCIgK1xuICAgICAgICAgIFwiIHVzaW5nIGBuZW80ai52MS5kcml2ZXIoLi4sIHsgdHJ1c3RlZENlcnRpZmljYXRlczpbJ3BhdGgvdG8vY2VydGlmaWNhdGUuY3J0J119KS4gVGhpcyBcIiArXG4gICAgICAgICAgXCIgaXMgYSBzZWN1cml0eSBtZWFzdXJlIHRvIHByb3RlY3QgYWdhaW5zdCBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzLiBJZiB5b3UgYXJlIGp1c3QgdHJ5aW5nIFwiICtcbiAgICAgICAgICBcIiBOZW80aiBvdXQgYW5kIGFyZSBub3QgY29uY2VybmVkIGFib3V0IGVuY3J5cHRpb24sIHNpbXBseSBkaXNhYmxlIGl0IHVzaW5nIGBlbmNyeXB0ZWQ9XFxcIlwiICsgRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgXCIgK1xuICAgICAgICAgIFwiIGluIHRoZSBkcml2ZXIgb3B0aW9ucy4gU29ja2V0IHJlc3BvbmRlZCB3aXRoOiBcIiArIHNvY2tldC5hdXRob3JpemF0aW9uRXJyb3IpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNvY2tldC5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBzb2NrZXQ7XG4gIH0sXG4gIFRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTIDogZnVuY3Rpb24oIG9wdHMsIG9uU3VjY2Vzcywgb25GYWlsdXJlICkge1xuXG4gICAgbGV0IHRsc09wdHMgPSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IGNoZWNrIGZvciB0aGlzIGluIHRoZSBjb25uZWN0IGNhbGxiYWNrLCB0byBnaXZlXG4gICAgICAvLyBhIG1vcmUgaGVscGZ1bCBlcnJvciB0byB0aGUgdXNlclxuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG4gICAgbGV0IHNvY2tldCA9IHRscy5jb25uZWN0KG9wdHMucG9ydCwgb3B0cy5ob3N0LCB0bHNPcHRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNvY2tldC5hdXRob3JpemVkKSB7XG4gICAgICAgIG9uRmFpbHVyZShuZXdFcnJvcihcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZC4gSWYgeW91IHRydXN0IHRoZSBkYXRhYmFzZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8sIHVzZSBcIiArXG4gICAgICAgICAgXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBhbmQgYWRkXCIgK1xuICAgICAgICAgIFwiIHRoZSBzaWduaW5nIGNlcnRpZmljYXRlLCBvciB0aGUgc2VydmVyIGNlcnRpZmljYXRlLCB0byB0aGUgbGlzdCBvZiBjZXJ0aWZpY2F0ZXMgdHJ1c3RlZCBieSB0aGlzIGRyaXZlclwiICtcbiAgICAgICAgICBcIiB1c2luZyBgbmVvNGoudjEuZHJpdmVyKC4uLCB7IHRydXN0ZWRDZXJ0aWZpY2F0ZXM6WydwYXRoL3RvL2NlcnRpZmljYXRlLmNydCddfSkuIFRoaXMgXCIgK1xuICAgICAgICAgIFwiIGlzIGEgc2VjdXJpdHkgbWVhc3VyZSB0byBwcm90ZWN0IGFnYWluc3QgbWFuLWluLXRoZS1taWRkbGUgYXR0YWNrcy4gSWYgeW91IGFyZSBqdXN0IHRyeWluZyBcIiArXG4gICAgICAgICAgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBgZW5jcnlwdGVkPVxcXCJcIiArIEVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYFwiICtcbiAgICAgICAgICBcIiBpbiB0aGUgZHJpdmVyIG9wdGlvbnMuIFNvY2tldCByZXNwb25kZWQgd2l0aDogXCIgKyBzb2NrZXQuYXV0aG9yaXphdGlvbkVycm9yKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgaW4gMS4xIGluIGZhdm91ciBvZiB7QGxpbmsgI1RSVVNUX0FMTF9DRVJUSUZJQ0FURVN9LiBXaWxsIGJlIGRlbGV0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbiAgICovXG4gIFRSVVNUX09OX0ZJUlNUX1VTRSA6IGZ1bmN0aW9uKCBvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSApIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiYFRSVVNUX09OX0ZJUlNUX1VTRWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBvcHRpb24gYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFwiICtcbiAgICAgICAgICBcInRoZSBkcml2ZXIuIFBsZWFzZSB1c2UgYFRSVVNUX0FMTF9DRVJUSUZJQ0FURVNgIGluc3RlYWQuXCIpO1xuXG4gICAgbGV0IHRsc09wdHMgPSB7XG4gICAgICAvLyBCZWNhdXNlIHdlIG1hbnVhbGx5IHZlcmlmeSB0aGUgY2VydGlmaWNhdGUgYWdhaW5zdCBrbm93bl9ob3N0c1xuICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxuICAgIH07XG5cbiAgICBsZXQgc29ja2V0ID0gdGxzLmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIHRsc09wdHMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzZXJ2ZXJDZXJ0ID0gc29ja2V0LmdldFBlZXJDZXJ0aWZpY2F0ZSgvKnJhdz0qL3RydWUpO1xuXG4gICAgICBpZiggIXNlcnZlckNlcnQucmF3ICkge1xuICAgICAgICAvLyBJZiBgcmF3YCBpcyBub3QgYXZhaWxhYmxlLCB3ZSdyZSBvbiBhbiBvbGQgdmVyc2lvbiBvZiBOb2RlSlMsIGFuZFxuICAgICAgICAvLyB0aGUgcmF3IGNlcnQgY2Fubm90IGJlIGFjY2Vzc2VkIChvciwgYXQgbGVhc3QgSSBjb3VsZG4ndCBmaW5kIGEgd2F5IHRvKVxuICAgICAgICAvLyB0aGVyZWZvcmUsIHdlIGNhbid0IGdlbmVyYXRlIGEgU0hBNTEyIGZpbmdlcnByaW50LCBtZWFuaW5nIHdlIGNhbid0XG4gICAgICAgIC8vIGRvIFRPRlUsIGFuZCB0aGUgc2FmZSBhcHByb2FjaCBpcyB0byBmYWlsLlxuICAgICAgICBvbkZhaWx1cmUobmV3RXJyb3IoXCJZb3UgYXJlIHVzaW5nIGEgdmVyc2lvbiBvZiBOb2RlSlMgdGhhdCBkb2VzIG5vdCBcIiArXG4gICAgICAgICAgXCJzdXBwb3J0IHRydXN0LW9uLWZpcnN0IHVzZSBlbmNyeXB0aW9uLiBZb3UgY2FuIGVpdGhlciB1cGdyYWRlIE5vZGVKUyB0byBcIiArXG4gICAgICAgICAgXCJhIG5ld2VyIHZlcnNpb24sIHVzZSBgdHJ1c3Q6VFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNgIGluIHlvdXIgZHJpdmVyIFwiICtcbiAgICAgICAgICBcImNvbmZpZyBpbnN0ZWFkLCBvciBkaXNhYmxlIGVuY3J5cHRpb24gdXNpbmcgYGVuY3J5cHRlZDpcXFwiXCIgKyBFTkNSWVBUSU9OX09GRisgXCJcXFwiYC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBzZXJ2ZXJGaW5nZXJwcmludCA9IHJlcXVpcmUoJ2NyeXB0bycpLmNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShzZXJ2ZXJDZXJ0LnJhdykuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgbGV0IGtub3duSG9zdHNQYXRoID0gb3B0cy5rbm93bkhvc3RzIHx8IHBhdGguam9pbih1c2VySG9tZSgpLCBcIi5uZW80alwiLCBcImtub3duX2hvc3RzXCIpO1xuICAgICAgbGV0IHNlcnZlcklkID0gb3B0cy5ob3N0ICsgXCI6XCIgKyBvcHRzLnBvcnQ7XG5cbiAgICAgIGxvYWRGaW5nZXJwcmludChzZXJ2ZXJJZCwga25vd25Ib3N0c1BhdGgsIChrbm93bkZpbmdlcnByaW50KSA9PiB7XG4gICAgICAgIGlmKCBrbm93bkZpbmdlcnByaW50ID09PSBzZXJ2ZXJGaW5nZXJwcmludCApIHtcbiAgICAgICAgICBvblN1Y2Nlc3MoKTtcbiAgICAgICAgfSBlbHNlIGlmKCBrbm93bkZpbmdlcnByaW50ID09IG51bGwgKSB7XG4gICAgICAgICAgc3RvcmVGaW5nZXJwcmludCggc2VydmVySWQsIGtub3duSG9zdHNQYXRoLCBzZXJ2ZXJGaW5nZXJwcmludCwgKGVycikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gb25GYWlsdXJlKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb25TdWNjZXNzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb25GYWlsdXJlKG5ld0Vycm9yKFwiRGF0YWJhc2UgZW5jcnlwdGlvbiBjZXJ0aWZpY2F0ZSBoYXMgY2hhbmdlZCwgYW5kIG5vIGxvbmdlciBcIiArXG4gICAgICAgICAgICBcIm1hdGNoZXMgdGhlIGNlcnRpZmljYXRlIHN0b3JlZCBmb3IgXCIgKyBzZXJ2ZXJJZCArIFwiIGluIGBcIiArIGtub3duSG9zdHNQYXRoICtcbiAgICAgICAgICAgIFwiYC4gQXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLCB0aGlzIGRyaXZlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IHRydXN0IHRoZSBuZXcgXCIgK1xuICAgICAgICAgICAgXCJjZXJ0aWZpY2F0ZSwgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBhbGxvdyBhbiBhdHRhY2tlciB0byBwcmV0ZW5kIHRvIGJlIHRoZSBOZW80aiBcIiArXG4gICAgICAgICAgICBcImluc3RhbmNlIHdlIHdhbnQgdG8gY29ubmVjdCB0by4gVGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkIGJ5IHRoZSBzZXJ2ZXIgbG9va3MgbGlrZTogXCIgK1xuICAgICAgICAgICAgc2VydmVyQ2VydCArIFwiLiBJZiB5b3UgdHJ1c3QgdGhhdCB0aGlzIGNlcnRpZmljYXRlIGlzIHZhbGlkLCBzaW1wbHkgcmVtb3ZlIHRoZSBsaW5lIFwiICtcbiAgICAgICAgICAgIFwic3RhcnRpbmcgd2l0aCBcIiArIHNlcnZlcklkICsgXCIgaW4gYFwiICsga25vd25Ib3N0c1BhdGggKyBcImAsIGFuZCB0aGUgZHJpdmVyIHdpbGwgXCIgK1xuICAgICAgICAgICAgXCJ1cGRhdGUgdGhlIGZpbGUgd2l0aCB0aGUgbmV3IGNlcnRpZmljYXRlLiBZb3UgY2FuIGNvbmZpZ3VyZSB3aGljaCBmaWxlIHRoZSBkcml2ZXIgXCIgK1xuICAgICAgICAgICAgXCJzaG91bGQgdXNlIHRvIHN0b3JlIHRoaXMgaW5mb3JtYXRpb24gYnkgc2V0dGluZyBga25vd25Ib3N0c2AgdG8gYW5vdGhlciBwYXRoIGluIFwiICtcbiAgICAgICAgICAgIFwieW91ciBkcml2ZXIgY29uZmlndXJhdGlvbiAtIGFuZCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiB0aGVyZSBhcyB3ZWxsIHVzaW5nIFwiICtcbiAgICAgICAgICAgIFwiYGVuY3J5cHRlZDpcXFwiXCIgKyBFTkNSWVBUSU9OX09GRiArIFwiXFxcImAuXCIpKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzb2NrZXQub24oJ2Vycm9yJywgb25GYWlsdXJlKTtcbiAgICByZXR1cm4gc29ja2V0O1xuICB9LFxuXG4gIFRSVVNUX0FMTF9DRVJUSUZJQ0FURVM6IGZ1bmN0aW9uIChvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSkge1xuICAgIGNvbnN0IHRsc09wdHMgPSB7XG4gICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IGZhbHNlXG4gICAgfTtcbiAgICBjb25zdCBzb2NrZXQgPSB0bHMuY29ubmVjdChvcHRzLnBvcnQsIG9wdHMuaG9zdCwgdGxzT3B0cywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2VydGlmaWNhdGUgPSBzb2NrZXQuZ2V0UGVlckNlcnRpZmljYXRlKCk7XG4gICAgICBpZiAoaXNFbXB0eU9iamVjdE9yTnVsbChjZXJ0aWZpY2F0ZSkpIHtcbiAgICAgICAgb25GYWlsdXJlKG5ld0Vycm9yKFwiU2VjdXJlIGNvbm5lY3Rpb24gd2FzIHN1Y2Nlc3NmdWwgYnV0IHNlcnZlciBkaWQgbm90IHJldHVybiBhbnkgdmFsaWQgXCIgK1xuICAgICAgICAgICAgXCJjZXJ0aWZpY2F0ZXMuIFN1Y2ggY29ubmVjdGlvbiBjYW4gbm90IGJlIHRydXN0ZWQuIElmIHlvdSBhcmUganVzdCB0cnlpbmcgXCIgK1xuICAgICAgICAgICAgXCIgTmVvNGogb3V0IGFuZCBhcmUgbm90IGNvbmNlcm5lZCBhYm91dCBlbmNyeXB0aW9uLCBzaW1wbHkgZGlzYWJsZSBpdCB1c2luZyBcIiArXG4gICAgICAgICAgICBcImBlbmNyeXB0ZWQ9XFxcIlwiICsgRU5DUllQVElPTl9PRkYgKyBcIlxcXCJgIGluIHRoZSBkcml2ZXIgb3B0aW9ucy4gXCIgK1xuICAgICAgICAgICAgXCJTb2NrZXQgcmVzcG9uZGVkIHdpdGg6IFwiICsgc29ja2V0LmF1dGhvcml6YXRpb25FcnJvcikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRmFpbHVyZSk7XG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfVxufTtcblxuZnVuY3Rpb24gY29ubmVjdCggb3B0cywgb25TdWNjZXNzLCBvbkZhaWx1cmU9KCgpPT5udWxsKSApIHtcbiAgLy9zdGlsbCBhbGxvdyBib29sZWFuIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICBpZiAob3B0cy5lbmNyeXB0ZWQgPT09IGZhbHNlIHx8IG9wdHMuZW5jcnlwdGVkID09PSBFTkNSWVBUSU9OX09GRikge1xuICAgIHZhciBjb25uID0gbmV0LmNvbm5lY3Qob3B0cy5wb3J0LCBvcHRzLmhvc3QsIG9uU3VjY2Vzcyk7XG4gICAgY29ubi5vbignZXJyb3InLCBvbkZhaWx1cmUpO1xuICAgIHJldHVybiBjb25uO1xuICB9IGVsc2UgaWYoIFRydXN0U3RyYXRlZ3lbb3B0cy50cnVzdF0pIHtcbiAgICByZXR1cm4gVHJ1c3RTdHJhdGVneVtvcHRzLnRydXN0XShvcHRzLCBvblN1Y2Nlc3MsIG9uRmFpbHVyZSk7XG4gIH0gZWxzZSB7XG4gICAgb25GYWlsdXJlKG5ld0Vycm9yKFwiVW5rbm93biB0cnVzdCBzdHJhdGVneTogXCIgKyBvcHRzLnRydXN0ICsgXCIuIFBsZWFzZSB1c2UgZWl0aGVyIFwiICtcbiAgICAgIFwidHJ1c3Q6J1RSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTJyBvciB0cnVzdDonVFJVU1RfQUxMX0NFUlRJRklDQVRFUycgaW4geW91ciBkcml2ZXIgXCIgK1xuICAgICAgXCJjb25maWd1cmF0aW9uLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgZW5jcnlwdGlvbiBieSBzZXR0aW5nIFwiICtcbiAgICAgIFwiYGVuY3J5cHRlZDpcXFwiXCIgKyBFTkNSWVBUSU9OX09GRiArIFwiXFxcImAuIFRoZXJlIGlzIG5vIG1lY2hhbmlzbSB0byB1c2UgZW5jcnlwdGlvbiB3aXRob3V0IHRydXN0IHZlcmlmaWNhdGlvbiwgXCIgK1xuICAgICAgXCJiZWNhdXNlIHRoaXMgaW5jdXJzIHRoZSBvdmVyaGVhZCBvZiBlbmNyeXB0aW9uIHdpdGhvdXQgaW1wcm92aW5nIHNlY3VyaXR5LiBJZiBcIiArXG4gICAgICBcInRoZSBkcml2ZXIgZG9lcyBub3QgdmVyaWZ5IHRoYXQgdGhlIHBlZXIgaXQgaXMgY29ubmVjdGVkIHRvIGlzIHJlYWxseSBOZW80aiwgaXQgXCIgK1xuICAgICAgXCJpcyB2ZXJ5IGVhc3kgZm9yIGFuIGF0dGFja2VyIHRvIGJ5cGFzcyB0aGUgZW5jcnlwdGlvbiBieSBwcmV0ZW5kaW5nIHRvIGJlIE5lbzRqLlwiKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbiBhIE5vZGUuanMgZW52aXJvbm1lbnQgdGhlICduZXQnIG1vZHVsZSBpcyB1c2VkXG4gKiBhcyB0cmFuc3BvcnQuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgTm9kZUNoYW5uZWwge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuaG9zdCAtIFRoZSBob3N0LCBpbmNsdWRpbmcgcHJvdG9jb2wgdG8gY29ubmVjdCB0by5cbiAgICogQHBhcmFtIHtJbnRlZ2VyfSBvcHRzLnBvcnQgLSBUaGUgcG9ydCB0byB1c2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAob3B0cykge1xuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuaWQgPSBfQ09OTkVDVElPTl9JREdFTisrO1xuICAgIHRoaXMuYXZhaWxhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLl9wZW5kaW5nID0gW107XG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvciA9IHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWQuYmluZCh0aGlzKTtcblxuICAgIHRoaXMuX2VuY3J5cHRlZCA9IG9wdHMuZW5jcnlwdGVkO1xuICAgIHRoaXMuX2Nvbm4gPSBjb25uZWN0KG9wdHMsICgpID0+IHtcbiAgICAgIGlmKCFzZWxmLl9vcGVuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5fY29ubi5vbignZGF0YScsICggYnVmZmVyICkgPT4ge1xuICAgICAgICBpZiggc2VsZi5vbm1lc3NhZ2UgKSB7XG4gICAgICAgICAgc2VsZi5vbm1lc3NhZ2UoIG5ldyBOb2RlQnVmZmVyKCBidWZmZXIgKSApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2VsZi5fY29ubi5vbignZXJyb3InLCBzZWxmLl9oYW5kbGVDb25uZWN0aW9uRXJyb3IpO1xuICAgICAgc2VsZi5fY29ubi5vbignZW5kJywgc2VsZi5faGFuZGxlQ29ubmVjdGlvblRlcm1pbmF0ZWQpO1xuXG4gICAgICAvLyBEcmFpbiBhbGwgcGVuZGluZyBtZXNzYWdlc1xuICAgICAgbGV0IHBlbmRpbmcgPSBzZWxmLl9wZW5kaW5nO1xuICAgICAgc2VsZi5fcGVuZGluZyA9IG51bGw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlbmRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc2VsZi53cml0ZSggcGVuZGluZ1tpXSApO1xuICAgICAgfVxuICAgIH0sIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcik7XG4gIH1cblxuICBfaGFuZGxlQ29ubmVjdGlvbkVycm9yKCBlcnIgKSB7XG4gICAgbGV0IG1zZyA9IGVyci5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXInO1xuICAgIHRoaXMuX2Vycm9yID0gbmV3RXJyb3IobXNnLCBTRVNTSU9OX0VYUElSRUQpO1xuICAgIGlmKCB0aGlzLm9uZXJyb3IgKSB7XG4gICAgICB0aGlzLm9uZXJyb3IodGhpcy5fZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVDb25uZWN0aW9uVGVybWluYXRlZCgpIHtcbiAgICAgIHRoaXMuX2Vycm9yID0gbmV3RXJyb3IoJ0Nvbm5lY3Rpb24gd2FzIGNsb3NlZCBieSBzZXJ2ZXInLCBTRVNTSU9OX0VYUElSRUQpO1xuICAgICAgaWYoIHRoaXMub25lcnJvciApIHtcbiAgICAgICAgdGhpcy5vbmVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgIH1cbiAgfVxuXG4gIGlzRW5jcnlwdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9lbmNyeXB0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgdGhlIHBhc3NlZCBpbiBidWZmZXIgdG8gY29ubmVjdGlvblxuICAgKiBAcGFyYW0ge05vZGVCdWZmZXJ9IGJ1ZmZlciAtIEJ1ZmZlciB0byB3cml0ZVxuICAgKi9cbiAgd3JpdGUgKCBidWZmZXIgKSB7XG4gICAgLy8gSWYgdGhlcmUgaXMgYSBwZW5kaW5nIHF1ZXVlLCBwdXNoIHRoaXMgb24gdGhhdCBxdWV1ZS4gVGhpcyBtZWFuc1xuICAgIC8vIHdlIGFyZSBub3QgeWV0IGNvbm5lY3RlZCwgc28gd2UgcXVldWUgdGhpbmdzIGxvY2FsbHkuXG4gICAgaWYoIHRoaXMuX3BlbmRpbmcgIT09IG51bGwgKSB7XG4gICAgICB0aGlzLl9wZW5kaW5nLnB1c2goIGJ1ZmZlciApO1xuICAgIH0gZWxzZSBpZiggYnVmZmVyIGluc3RhbmNlb2YgTm9kZUJ1ZmZlciApIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCBcIltDb25uI1wiK3RoaXMuaWQrXCJdIFNFTkQ6IFwiLCBidWZmZXIudG9TdHJpbmcoKSApO1xuICAgICAgdGhpcy5fY29ubi53cml0ZSggYnVmZmVyLl9idWZmZXIgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoIFwiRG9uJ3Qga25vdyBob3cgdG8gd3JpdGU6IFwiICsgYnVmZmVyICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiIC0gRnVuY3Rpb24gdG8gY2FsbCBvbiBjbG9zZS5cbiAgICovXG4gIGNsb3NlKGNiID0gKCgpID0+IG51bGwpKSB7XG4gICAgdGhpcy5fb3BlbiA9IGZhbHNlO1xuICAgIGlmKCB0aGlzLl9jb25uICkge1xuICAgICAgdGhpcy5fY29ubi5lbmQoKTtcbiAgICAgIHRoaXMuX2Nvbm4ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25UZXJtaW5hdGVkKTtcbiAgICAgIHRoaXMuX2Nvbm4ub24oJ2VuZCcsIGNiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cbn1cbmxldCBfbm9kZUNoYW5uZWxNb2R1bGUgPSB7Y2hhbm5lbDogTm9kZUNoYW5uZWwsIGF2YWlsYWJsZTogdHJ1ZX07XG5cbnRyeSB7XG4gIC8vIE9ubHkgZGVmaW5lIHRoaXMgbW9kdWxlIGlmICduZXQnIGlzIGF2YWlsYWJsZVxuICByZXF1aXJlLnJlc29sdmUoXCJuZXRcIik7XG59IGNhdGNoKGUpIHtcbiAgX25vZGVDaGFubmVsTW9kdWxlID0geyBhdmFpbGFibGUgOiBmYWxzZSB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBfbm9kZUNoYW5uZWxNb2R1bGVcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0hlYXBCdWZmZXJ9IGZyb20gJy4vYnVmJztcbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gJy4vLi4vZXJyb3InO1xuaW1wb3J0IHtFTkNSWVBUSU9OX09OLCBFTkNSWVBUSU9OX09GRn0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgV2ViU29ja2V0Q2hhbm5lbCB0byBiZSB1c2VkIGluIHdlYiBicm93c2Vycy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5jbGFzcyBXZWJTb2NrZXRDaGFubmVsIHtcblxuICAvKipcbiAgICogQ3JlYXRlIG5ldyBpbnN0YW5jZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgb2JqZWN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmhvc3QgLSBUaGUgaG9zdCwgaW5jbHVkaW5nIHByb3RvY29sIHRvIGNvbm5lY3QgdG8uXG4gICAqIEBwYXJhbSB7SW50ZWdlcn0gb3B0cy5wb3J0IC0gVGhlIHBvcnQgdG8gdXNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKG9wdHMpIHtcblxuICAgIHRoaXMuX29wZW4gPSB0cnVlO1xuICAgIHRoaXMuX3BlbmRpbmcgPSBbXTtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9lbmNyeXB0ZWQgPSBvcHRzLmVuY3J5cHRlZDtcblxuICAgIGxldCBzY2hlbWUgPSBcIndzXCI7XG4gICAgLy9BbGxvdyBib29sZWFuIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIGlmKCBvcHRzLmVuY3J5cHRlZCA9PT0gdHJ1ZSB8fCBvcHRzLmVuY3J5cHRlZCA9PT0gRU5DUllQVElPTl9PTikge1xuICAgICAgaWYoKCFvcHRzLnRydXN0KSB8fCBvcHRzLnRydXN0ID09PSBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIgKSB7XG4gICAgICAgIHNjaGVtZSA9IFwid3NzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9lcnJvciA9IG5ld0Vycm9yKFwiVGhlIGJyb3dzZXIgdmVyc2lvbiBvZiB0aGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIG9uZSB0cnVzdCBcIiArXG4gICAgICAgICAgXCJzdHJhdGVneSwgJ1RSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTJy4gXCIrb3B0cy50cnVzdCtcIiBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgXCIgK1xuICAgICAgICAgIFwiZWl0aGVyIHVzZSBUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFUyBvciBkaXNhYmxlIGVuY3J5cHRpb24gYnkgc2V0dGluZyBcIiArXG4gICAgICAgICAgXCJgZW5jcnlwdGVkOlxcXCJcIiArIEVOQ1JZUFRJT05fT0ZGICsgXCJcXFwiYCBpbiB0aGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24uXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3VybCA9IHNjaGVtZSArIFwiOi8vXCIgKyBvcHRzLmhvc3QgKyBcIjpcIiArIG9wdHMucG9ydDtcbiAgICB0aGlzLl93cyA9IG5ldyBXZWJTb2NrZXQodGhpcy5fdXJsKTtcbiAgICB0aGlzLl93cy5iaW5hcnlUeXBlID0gXCJhcnJheWJ1ZmZlclwiO1xuXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgIC8vQWxsIGNvbm5lY3Rpb24gZXJyb3JzIGFyZSBub3Qgc2VudCB0byB0aGUgZXJyb3IgaGFuZGxlclxuICAgIC8vd2UgbXVzdCBhbHNvIGNoZWNrIGZvciBkaXJ0eSBjbG9zZSBjYWxsc1xuICAgIHRoaXMuX3dzLm9uY2xvc2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICAgIGlmICghZS53YXNDbGVhbikge1xuICAgICAgICAgIHNlbGYuX2hhbmRsZUNvbm5lY3Rpb25FcnJvcigpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl93cy5vbm9wZW4gPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERyYWluIGFsbCBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgICBsZXQgcGVuZGluZyA9IHNlbGYuX3BlbmRpbmc7XG4gICAgICBzZWxmLl9wZW5kaW5nID0gbnVsbDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGVuZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICBzZWxmLndyaXRlKCBwZW5kaW5nW2ldICk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl93cy5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmKCBzZWxmLm9ubWVzc2FnZSApIHtcbiAgICAgICAgdmFyIGIgPSBuZXcgSGVhcEJ1ZmZlciggZXZlbnQuZGF0YSApO1xuICAgICAgICBzZWxmLm9ubWVzc2FnZSggYiApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl93cy5vbmVycm9yID0gdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yO1xuICB9XG5cbiAgX2hhbmRsZUNvbm5lY3Rpb25FcnJvcigpIHtcbiAgICAvLyBvbmVycm9yIHRyaWdnZXJzIG9uIHdlYnNvY2tldCBjbG9zZSBhcyB3ZWxsLi4gZG9uJ3QgZ2V0IG1lIHN0YXJ0ZWQuXG4gICAgaWYoIHRoaXMuX29wZW4gKSB7XG4gICAgICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1Nzc5ODMxL2hvdy10by1jYXRjaC13ZWJzb2NrZXQtY29ubmVjdGlvbi10by13cy14eHhubi1mYWlsZWQtY29ubmVjdGlvbi1jbG9zZWQtYmVcbiAgICAgIHRoaXMuX2Vycm9yID0gbmV3RXJyb3IoIFwiV2ViU29ja2V0IGNvbm5lY3Rpb24gZmFpbHVyZS4gRHVlIHRvIHNlY3VyaXR5IFwiICtcbiAgICAgICAgXCJjb25zdHJhaW50cyBpbiB5b3VyIHdlYiBicm93c2VyLCB0aGUgcmVhc29uIGZvciB0aGUgZmFpbHVyZSBpcyBub3QgYXZhaWxhYmxlIFwiICtcbiAgICAgICAgXCJ0byB0aGlzIE5lbzRqIERyaXZlci4gUGxlYXNlIHVzZSB5b3VyIGJyb3dzZXJzIGRldmVsb3BtZW50IGNvbnNvbGUgdG8gZGV0ZXJtaW5lIFwiICtcbiAgICAgICAgXCJ0aGUgcm9vdCBjYXVzZSBvZiB0aGUgZmFpbHVyZS4gQ29tbW9uIHJlYXNvbnMgaW5jbHVkZSB0aGUgZGF0YWJhc2UgYmVpbmcgXCIgK1xuICAgICAgICBcInVuYXZhaWxhYmxlLCB1c2luZyB0aGUgd3JvbmcgY29ubmVjdGlvbiBVUkwgb3IgdGVtcG9yYXJ5IG5ldHdvcmsgcHJvYmxlbXMuIFwiICtcbiAgICAgICAgXCJJZiB5b3UgaGF2ZSBlbmFibGVkIGVuY3J5cHRpb24sIGVuc3VyZSB5b3VyIGJyb3dzZXIgaXMgY29uZmlndXJlZCB0byB0cnVzdCB0aGUgXCIgK1xuICAgICAgICBcImNlcnRpZmljYXRlIE5lbzRqIGlzIGNvbmZpZ3VyZWQgdG8gdXNlLiBXZWJTb2NrZXQgYHJlYWR5U3RhdGVgIGlzOiBcIiArIHRoaXMuX3dzLnJlYWR5U3RhdGUgKTtcbiAgICAgIGlmICh0aGlzLm9uZXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbmVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc0VuY3J5cHRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5jcnlwdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBwYXNzZWQgaW4gYnVmZmVyIHRvIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtIZWFwQnVmZmVyfSBidWZmZXIgLSBCdWZmZXIgdG8gd3JpdGVcbiAgICovXG4gIHdyaXRlICggYnVmZmVyICkge1xuICAgIC8vIElmIHRoZXJlIGlzIGEgcGVuZGluZyBxdWV1ZSwgcHVzaCB0aGlzIG9uIHRoYXQgcXVldWUuIFRoaXMgbWVhbnNcbiAgICAvLyB3ZSBhcmUgbm90IHlldCBjb25uZWN0ZWQsIHNvIHdlIHF1ZXVlIHRoaW5ncyBsb2NhbGx5LlxuICAgIGlmKCB0aGlzLl9wZW5kaW5nICE9PSBudWxsICkge1xuICAgICAgdGhpcy5fcGVuZGluZy5wdXNoKCBidWZmZXIgKTtcbiAgICB9IGVsc2UgaWYoIGJ1ZmZlciBpbnN0YW5jZW9mIEhlYXBCdWZmZXIgKSB7XG4gICAgICB0aGlzLl93cy5zZW5kKCBidWZmZXIuX2J1ZmZlciApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXdFcnJvciggXCJEb24ndCBrbm93IGhvdyB0byBzZW5kIGJ1ZmZlcjogXCIgKyBidWZmZXIgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgKi9cbiAgY2xvc2UgKCBjYiA9ICggKCkgPT4gbnVsbCApKSB7XG4gICAgdGhpcy5fb3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuX3dzLmNsb3NlKCk7XG4gICAgdGhpcy5fd3Mub25jbG9zZSA9IGNiO1xuICB9XG59XG5cbmxldCBhdmFpbGFibGUgPSB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJztcbmxldCBfd2Vic29ja2V0Q2hhbm5lbE1vZHVsZSA9IHtjaGFubmVsOiBXZWJTb2NrZXRDaGFubmVsLCBhdmFpbGFibGU6IGF2YWlsYWJsZX07XG5cbmV4cG9ydCBkZWZhdWx0IF93ZWJzb2NrZXRDaGFubmVsTW9kdWxlXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHthbGxvYywgQmFzZUJ1ZmZlciwgQ29tYmluZWRCdWZmZXJ9IGZyb20gJy4vYnVmJztcblxubGV0XG4gIF9DSFVOS19IRUFERVJfU0laRSA9IDIsXG4gIF9NRVNTQUdFX0JPVU5EQVJZID0gMHgwMCxcbiAgX0RFRkFVTFRfQlVGRkVSX1NJWkUgPSAxNDAwOyAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2MTM3MzQvbWF4aW11bS1wYWNrZXQtc2l6ZS1mb3ItYS10Y3AtY29ubmVjdGlvblxuXG4vKipcbiAqIExvb2tzIGxpa2UgYSB3cml0YWJsZSBidWZmZXIsIGNodW5rcyBvdXRwdXQgdHJhbnNwYXJlbnRseSBpbnRvIGEgY2hhbm5lbCBiZWxvdy5cbiAqIEBhY2Nlc3MgcHJpdmF0ZVxuICovXG5jbGFzcyBDaHVua2VyIGV4dGVuZHMgQmFzZUJ1ZmZlciB7XG4gIGNvbnN0cnVjdG9yKGNoYW5uZWwsIGJ1ZmZlclNpemUpIHtcbiAgICBzdXBlcigwKTtcbiAgICB0aGlzLl9idWZmZXJTaXplID0gYnVmZmVyU2l6ZSB8fCBfREVGQVVMVF9CVUZGRVJfU0laRTtcbiAgICB0aGlzLl9jaCA9IGNoYW5uZWw7XG4gICAgdGhpcy5fYnVmZmVyID0gYWxsb2ModGhpcy5fYnVmZmVyU2l6ZSk7XG4gICAgdGhpcy5fY3VycmVudENodW5rU3RhcnQgPSAwO1xuICAgIHRoaXMuX2NodW5rT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgcHV0VUludDgocG9zaXRpb24sIHZhbCkge1xuICAgIHRoaXMuX2Vuc3VyZSgxKTtcbiAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50OCh2YWwpO1xuICB9XG5cbiAgcHV0SW50OChwb3NpdGlvbiwgdmFsKSB7XG4gICAgdGhpcy5fZW5zdXJlKDEpO1xuICAgIHRoaXMuX2J1ZmZlci53cml0ZUludDgodmFsKTtcbiAgfVxuXG4gIHB1dEZsb2F0NjQocG9zaXRpb24sIHZhbCkge1xuICAgIHRoaXMuX2Vuc3VyZSg4KTtcbiAgICB0aGlzLl9idWZmZXIud3JpdGVGbG9hdDY0KHZhbCk7XG4gIH1cblxuICBwdXRCeXRlcyhwb3NpdGlvbiwgZGF0YSkge1xuICAgIC8vIFRPRE86IElmIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3VyIGNodW5rIHNpemUgb3Igc28sIHdlJ3JlIHZlcnkgbGlrZWx5IGJldHRlciBvZmYganVzdCBwYXNzaW5nIHRoaXMgYnVmZmVyIG9uXG4gICAgLy8gcmF0aGVyIHRoYW4gZG9pbmcgdGhlIGNvcHkgaGVyZSBUT0RPOiAqaG93ZXZlciogbm90ZSB0aGF0IHdlIG5lZWQgc29tZSB3YXkgdG8gZmluZCBvdXQgd2hlbiB0aGUgZGF0YSBoYXMgYmVlblxuICAgIC8vIHdyaXR0ZW4gKGFuZCB0aHVzIHRoZSBidWZmZXIgY2FuIGJlIHJlLXVzZWQpIGlmIHdlIHRha2UgdGhhdCBhcHByb2FjaFxuICAgIHdoaWxlIChkYXRhLnJlbWFpbmluZygpID4gMCkge1xuICAgICAgLy8gRW5zdXJlIHRoZXJlIGlzIGFuIG9wZW4gY2h1bmssIGFuZCB0aGF0IGl0IGhhcyBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBzcGFjZSBsZWZ0XG4gICAgICB0aGlzLl9lbnN1cmUoMSk7XG4gICAgICBpZiAodGhpcy5fYnVmZmVyLnJlbWFpbmluZygpID4gZGF0YS5yZW1haW5pbmcoKSkge1xuICAgICAgICB0aGlzLl9idWZmZXIud3JpdGVCeXRlcyhkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2J1ZmZlci53cml0ZUJ5dGVzKGRhdGEucmVhZFNsaWNlKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGZsdXNoKCkge1xuICAgIGlmICh0aGlzLl9idWZmZXIucG9zaXRpb24gPiAwKSB7XG4gICAgICB0aGlzLl9jbG9zZUNodW5rSWZPcGVuKCk7XG5cbiAgICAgIC8vIExvY2FsIGNvcHkgYW5kIGNsZWFyIHRoZSBidWZmZXIgZmllbGQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBidWZmZXIgaXMgbm90IHJlLXJlbGVhc2VkIGlmIHRoZSBmbHVzaCBjYWxsIGZhaWxzXG4gICAgICBsZXQgb3V0ID0gdGhpcy5fYnVmZmVyO1xuICAgICAgdGhpcy5fYnVmZmVyID0gbnVsbDtcblxuICAgICAgdGhpcy5fY2gud3JpdGUob3V0LmdldFNsaWNlKDAsIG91dC5wb3NpdGlvbikpO1xuXG4gICAgICAvLyBBbGxvYyBhIG5ldyBvdXRwdXQgYnVmZmVyLiBXZSBhc3N1bWUgd2UncmUgdXNpbmcgTm9kZUpTJ3MgYnVmZmVyIHBvb2xpbmcgdW5kZXIgdGhlIGhvb2QgaGVyZSFcbiAgICAgIHRoaXMuX2J1ZmZlciA9IGFsbG9jKHRoaXMuX2J1ZmZlclNpemUpO1xuICAgICAgdGhpcy5fY2h1bmtPcGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJvbHQgbWVzc2FnZXMgYXJlIGVuY29kZWQgaW4gb25lIG9yIG1vcmUgY2h1bmtzLCBhbmQgdGhlIGJvdW5kYXJ5IGJldHdlZW4gdHdvIG1lc3NhZ2VzXG4gICAqIGlzIGVuY29kZWQgYXMgYSAwLWxlbmd0aCBjaHVuaywgYDAwIDAwYC4gVGhpcyBpbnNlcnRzIHN1Y2ggYSBtZXNzYWdlIGJvdW5kYXJ5LCBjbG9zaW5nXG4gICAqIGFueSBjdXJyZW50bHkgb3BlbiBjaHVuayBhcyBuZWVkZWRcbiAgICovXG4gIG1lc3NhZ2VCb3VuZGFyeSgpIHtcblxuICAgIHRoaXMuX2Nsb3NlQ2h1bmtJZk9wZW4oKTtcblxuICAgIGlmICh0aGlzLl9idWZmZXIucmVtYWluaW5nKCkgPCBfQ0hVTktfSEVBREVSX1NJWkUpIHtcbiAgICAgIHRoaXMuZmx1c2goKTtcbiAgICB9XG5cbiAgICAvLyBXcml0ZSBtZXNzYWdlIGJvdW5kYXJ5XG4gICAgdGhpcy5fYnVmZmVyLndyaXRlSW50MTYoX01FU1NBR0VfQk9VTkRBUlkpO1xuICB9XG5cbiAgLyoqIEVuc3VyZSBhdCBsZWFzdCB0aGUgZ2l2ZW4gc2l6ZSBpcyBhdmFpbGFibGUgZm9yIHdyaXRpbmcgKi9cbiAgX2Vuc3VyZShzaXplKSB7XG4gICAgbGV0IHRvV3JpdGVTaXplID0gdGhpcy5fY2h1bmtPcGVuID8gc2l6ZSA6IHNpemUgKyBfQ0hVTktfSEVBREVSX1NJWkU7XG4gICAgaWYgKHRoaXMuX2J1ZmZlci5yZW1haW5pbmcoKSA8IHRvV3JpdGVTaXplKSB7XG4gICAgICB0aGlzLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9jaHVua09wZW4pIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0ID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uO1xuICAgICAgdGhpcy5fYnVmZmVyLnBvc2l0aW9uID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uICsgX0NIVU5LX0hFQURFUl9TSVpFO1xuICAgICAgdGhpcy5fY2h1bmtPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBfY2xvc2VDaHVua0lmT3BlbigpIHtcbiAgICBpZiAodGhpcy5fY2h1bmtPcGVuKSB7XG4gICAgICBsZXQgY2h1bmtTaXplID0gdGhpcy5fYnVmZmVyLnBvc2l0aW9uIC0gKHRoaXMuX2N1cnJlbnRDaHVua1N0YXJ0ICsgX0NIVU5LX0hFQURFUl9TSVpFKTtcbiAgICAgIHRoaXMuX2J1ZmZlci5wdXRVSW50MTYodGhpcy5fY3VycmVudENodW5rU3RhcnQsIGNodW5rU2l6ZSk7XG4gICAgICB0aGlzLl9jaHVua09wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKipcbiAqIENvbWJpbmVzIGNodW5rcyB1bnRpbCBhIGNvbXBsZXRlIG1lc3NhZ2UgaXMgZ2F0aGVyZWQgdXAsIGFuZCB0aGVuIGZvcndhcmRzIHRoYXRcbiAqIG1lc3NhZ2UgdG8gYW4gJ29ubWVzc2FnZScgbGlzdGVuZXIuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgRGVjaHVua2VyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fY3VycmVudE1lc3NhZ2UgPSBbXTtcbiAgICB0aGlzLl9wYXJ0aWFsQ2h1bmtIZWFkZXIgPSAwO1xuICAgIHRoaXMuX3N0YXRlID0gdGhpcy5BV0FJVElOR19DSFVOSztcbiAgfVxuXG4gIEFXQUlUSU5HX0NIVU5LKGJ1Zikge1xuICAgIGlmIChidWYucmVtYWluaW5nKCkgPj0gMikge1xuICAgICAgLy8gV2hvbGUgaGVhZGVyIGF2YWlsYWJsZSwgcmVhZCB0aGF0XG4gICAgICByZXR1cm4gdGhpcy5fb25IZWFkZXIoYnVmLnJlYWRVSW50MTYoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9ubHkgb25lIGJ5dGUgYXZhaWxhYmxlLCByZWFkIHRoYXQgYW5kIHdhaXQgZm9yIHRoZSBzZWNvbmQgYnl0ZVxuICAgICAgdGhpcy5fcGFydGlhbENodW5rSGVhZGVyID0gYnVmLnJlYWRVSW50OCgpIDw8IDg7XG4gICAgICByZXR1cm4gdGhpcy5JTl9IRUFERVI7XG4gICAgfVxuICB9XG5cbiAgSU5fSEVBREVSKGJ1Zikge1xuICAgIC8vIEZpcnN0IGhlYWRlciBieXRlIHJlYWQsIG5vdyB3ZSByZWFkIHRoZSBuZXh0IG9uZVxuICAgIHJldHVybiB0aGlzLl9vbkhlYWRlcigodGhpcy5fcGFydGlhbENodW5rSGVhZGVyIHwgYnVmLnJlYWRVSW50OCgpKSAmIDB4RkZGRik7XG4gIH1cblxuICBJTl9DSFVOSyhidWYpIHtcbiAgICBpZiAodGhpcy5fY2h1bmtTaXplIDw9IGJ1Zi5yZW1haW5pbmcoKSkge1xuICAgICAgLy8gQ3VycmVudCBwYWNrZXQgaXMgbGFyZ2VyIHRoYW4gY3VycmVudCBjaHVuaywgb3Igc2FtZSBzaXplOlxuICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKHRoaXMuX2NodW5rU2l6ZSkpO1xuICAgICAgcmV0dXJuIHRoaXMuQVdBSVRJTkdfQ0hVTks7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEN1cnJlbnQgcGFja2V0IGlzIHNtYWxsZXIgdGhhbiB0aGUgY2h1bmsgd2UncmUgcmVhZGluZywgc3BsaXQgdGhlIGN1cnJlbnQgY2h1bmsgaXRzZWxmIHVwXG4gICAgICB0aGlzLl9jaHVua1NpemUgLT0gYnVmLnJlbWFpbmluZygpO1xuICAgICAgdGhpcy5fY3VycmVudE1lc3NhZ2UucHVzaChidWYucmVhZFNsaWNlKGJ1Zi5yZW1haW5pbmcoKSkpO1xuICAgICAgcmV0dXJuIHRoaXMuSU5fQ0hVTks7XG4gICAgfVxuICB9XG5cbiAgQ0xPU0VEKGJ1Zikge1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gYSBjb21wbGV0ZSBjaHVuayBoZWFkZXIgaGFzIGJlZW4gcmVjaWV2ZWQgKi9cbiAgX29uSGVhZGVyKGhlYWRlcikge1xuICAgIGlmIChoZWFkZXIgPT0gMCkge1xuICAgICAgLy8gTWVzc2FnZSBib3VuZGFyeVxuICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICBpZiAodGhpcy5fY3VycmVudE1lc3NhZ2UubGVuZ3RoID09IDEpIHtcbiAgICAgICAgbWVzc2FnZSA9IHRoaXMuX2N1cnJlbnRNZXNzYWdlWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IG5ldyBDb21iaW5lZEJ1ZmZlciggdGhpcy5fY3VycmVudE1lc3NhZ2UgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2N1cnJlbnRNZXNzYWdlID0gW107XG4gICAgICB0aGlzLm9ubWVzc2FnZShtZXNzYWdlKTtcbiAgICAgIHJldHVybiB0aGlzLkFXQUlUSU5HX0NIVU5LO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaHVua1NpemUgPSBoZWFkZXI7XG4gICAgICByZXR1cm4gdGhpcy5JTl9DSFVOSztcbiAgICB9XG4gIH1cblxuICB3cml0ZShidWYpIHtcbiAgICB3aGlsZSAoYnVmLmhhc1JlbWFpbmluZygpKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9IHRoaXMuX3N0YXRlKGJ1Zik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7XG4gIENodW5rZXIsXG4gIERlY2h1bmtlclxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gJy4uL2Vycm9yJztcblxuLyoqXG4gKiBVdGlsaXR5IHRvIGxhemlseSBpbml0aWFsaXplIGNvbm5lY3Rpb25zIGFuZCByZXR1cm4gdGhlbSBiYWNrIHRvIHRoZSBwb29sIHdoZW4gdW51c2VkLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25uZWN0aW9uSG9sZGVyIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIC0gdGhlIGFjY2VzcyBtb2RlIGZvciBuZXcgY29ubmVjdGlvbiBob2xkZXIuXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvblByb3ZpZGVyfSBjb25uZWN0aW9uUHJvdmlkZXIgLSB0aGUgY29ubmVjdGlvbiBwcm92aWRlciB0byBhY3F1aXJlIGNvbm5lY3Rpb25zIGZyb20uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIpIHtcbiAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvdmlkZXIgPSBjb25uZWN0aW9uUHJvdmlkZXI7XG4gICAgdGhpcy5fcmVmZXJlbmNlQ291bnQgPSAwO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgdGhpcyBob2xkZXIgaW5pdGlhbGl6ZSBuZXcgY29ubmVjdGlvbiBpZiBub25lIGV4aXN0cyBhbHJlYWR5LlxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gICAqL1xuICBpbml0aWFsaXplQ29ubmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5fcmVmZXJlbmNlQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyLmFjcXVpcmVDb25uZWN0aW9uKHRoaXMuX21vZGUpO1xuICAgIH1cbiAgICB0aGlzLl9yZWZlcmVuY2VDb3VudCsrO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBjb25uZWN0aW9uIHByb21pc2UuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8Q29ubmVjdGlvbj59IHByb21pc2UgcmVzb2x2ZWQgd2l0aCB0aGUgY3VycmVudCBjb25uZWN0aW9uLlxuICAgKi9cbiAgZ2V0Q29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZ5IHRoaXMgaG9sZGVyIHRoYXQgc2luZ2xlIHBhcnR5IGRvZXMgbm90IHJlcXVpcmUgY3VycmVudCBjb25uZWN0aW9uIGFueSBtb3JlLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENvbm5lY3Rpb24+fSBwcm9taXNlIHJlc29sdmVkIHdpdGggdGhlIGN1cnJlbnQgY29ubmVjdGlvbi5cbiAgICovXG4gIHJlbGVhc2VDb25uZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZmVyZW5jZUNvdW50LS07XG4gICAgaWYgKHRoaXMuX3JlZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICAvLyByZWxlYXNlIGEgY29ubmVjdGlvbiB3aXRob3V0IG11dGluZyBBQ0tfRkFJTFVSRSwgdGhpcyBpcyB0aGUgbGFzdCBhY3Rpb24gb24gdGhpcyBjb25uZWN0aW9uXG4gICAgICByZXR1cm4gdGhpcy5fcmVsZWFzZUNvbm5lY3Rpb24odHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhpcyBob2xkZXIgYW5kIHJlbGVhc2VzIGN1cnJlbnQgY29ubmVjdGlvbiAoaWYgYW55KSBkZXNwaXRlIGFueSBleGlzdGluZyB1c2Vycy5cbiAgICogQHJldHVybiB7UHJvbWlzZTxDb25uZWN0aW9uPn0gcHJvbWlzZSByZXNvbHZlZCB3aGVuIGN1cnJlbnQgY29ubmVjdGlvbiBpcyByZWxlYXNlZCB0byB0aGUgcG9vbC5cbiAgICovXG4gIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLl9yZWZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICAgIH1cbiAgICB0aGlzLl9yZWZlcmVuY2VDb3VudCA9IDA7XG4gICAgLy8gcmVsZWFzZSBhIGNvbm5lY3Rpb24gYW5kIG11dGUgQUNLX0ZBSUxVUkUsIHRoaXMgbWlnaHQgYmUgY2FsbGVkIGNvbmN1cnJlbnRseSB3aXRoIG90aGVyXG4gICAgLy8gb3BlcmF0aW9ucyBhbmQgdGh1cyBzaG91bGQgaWdub3JlIGZhaWx1cmUgaGFuZGxpbmdcbiAgICByZXR1cm4gdGhpcy5fcmVsZWFzZUNvbm5lY3Rpb24oZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgY3VycmVudCBwb29sZWQgY29ubmVjdGlvbiBpbnN0YW5jZSB0byB0aGUgY29ubmVjdGlvbiBwb29sLlxuICAgKiBXZSBkb24ndCBwb29sIFNlc3Npb24gaW5zdGFuY2VzLCB0byBhdm9pZCB1c2VycyB1c2luZyB0aGUgU2Vzc2lvbiBhZnRlciB0aGV5J3ZlIGNhbGxlZCBjbG9zZS5cbiAgICogVGhlIGBTZXNzaW9uYCBvYmplY3QgaXMganVzdCBhIHRoaW4gd3JhcHBlciBhcm91bmQgQ29ubmVjdGlvbiBhbnl3YXksIHNvIGl0IG1ha2VzIGxpdHRsZSBkaWZmZXJlbmNlLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSAtIHByb21pc2UgcmVzb2x2ZWQgdGhlbiBjb25uZWN0aW9uIGlzIHJldHVybmVkIHRvIHRoZSBwb29sLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3JlbGVhc2VDb25uZWN0aW9uKHN5bmMpIHtcbiAgICB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZSA9IHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBpZiAoY29ubmVjdGlvbikge1xuICAgICAgICBpZihzeW5jKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5yZXNldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbm5lY3Rpb24ucmVzZXRBc3luYygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbm5lY3Rpb24uc3luYygpO1xuICAgICAgICBjb25uZWN0aW9uLl9yZWxlYXNlKCk7XG4gICAgICB9XG4gICAgfSkuY2F0Y2goaWdub3JlZEVycm9yID0+IHtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9uUHJvbWlzZTtcbiAgfVxufVxuXG5jbGFzcyBFbXB0eUNvbm5lY3Rpb25Ib2xkZXIgZXh0ZW5kcyBDb25uZWN0aW9uSG9sZGVyIHtcblxuICBpbml0aWFsaXplQ29ubmVjdGlvbigpIHtcbiAgICAvLyBub3RoaW5nIHRvIGluaXRpYWxpemVcbiAgfVxuXG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ld0Vycm9yKCdUaGlzIGNvbm5lY3Rpb24gaG9sZGVyIGRvZXMgbm90IHNlcnZlIGNvbm5lY3Rpb25zJykpO1xuICB9XG5cbiAgcmVsZWFzZUNvbm5lY3Rpb24oKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG59XG5cbi8qKlxuICogQ29ubmVjdGlvbiBob2xkZXIgdGhhdCBkb2VzIG5vdCBtYW5hZ2UgYW55IGNvbm5lY3Rpb25zLlxuICogQHR5cGUge0Nvbm5lY3Rpb25Ib2xkZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBFTVBUWV9DT05ORUNUSU9OX0hPTERFUiA9IG5ldyBFbXB0eUNvbm5lY3Rpb25Ib2xkZXIoKTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge25ld0Vycm9yLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVNTSU9OX0VYUElSRUR9IGZyb20gJy4uL2Vycm9yJztcbmltcG9ydCB7UkVBRCwgV1JJVEV9IGZyb20gJy4uL2RyaXZlcic7XG5pbXBvcnQgU2Vzc2lvbiBmcm9tICcuLi9zZXNzaW9uJztcbmltcG9ydCBSb3VuZFJvYmluQXJyYXkgZnJvbSAnLi9yb3VuZC1yb2Jpbi1hcnJheSc7XG5pbXBvcnQgUm91dGluZ1RhYmxlIGZyb20gJy4vcm91dGluZy10YWJsZSc7XG5pbXBvcnQgUmVkaXNjb3ZlcnkgZnJvbSAnLi9yZWRpc2NvdmVyeSc7XG5cbmNsYXNzIENvbm5lY3Rpb25Qcm92aWRlciB7XG5cbiAgYWNxdWlyZUNvbm5lY3Rpb24obW9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWJzdHJhY3QgbWV0aG9kJyk7XG4gIH1cblxuICBfd2l0aEFkZGl0aW9uYWxPbkVycm9yQ2FsbGJhY2soY29ubmVjdGlvblByb21pc2UsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgIC8vIGluc3RhbGwgZXJyb3IgaGFuZGxlciBmcm9tIHRoZSBkcml2ZXIgb24gdGhlIGNvbm5lY3Rpb24gcHJvbWlzZTsgdGhpcyBjYWxsYmFjayBpcyBpbnN0YWxsZWQgc2VwYXJhdGVseVxuICAgIC8vIHNvIHRoYXQgaXQgZG9lcyBub3QgaGFuZGxlIGVycm9ycywgaW5zdGVhZCBpdCBpcyBqdXN0IGFuIGFkZGl0aW9uYWwgZXJyb3IgcmVwb3J0aW5nIGZhY2lsaXR5LlxuICAgIGNvbm5lY3Rpb25Qcm9taXNlLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGRyaXZlck9uRXJyb3JDYWxsYmFjayhlcnJvcilcbiAgICB9KTtcbiAgICAvLyByZXR1cm4gdGhlIG9yaWdpbmFsIGNvbm5lY3Rpb24gcHJvbWlzZVxuICAgIHJldHVybiBjb25uZWN0aW9uUHJvbWlzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyIGV4dGVuZHMgQ29ubmVjdGlvblByb3ZpZGVyIHtcblxuICBjb25zdHJ1Y3RvcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9hZGRyZXNzID0gYWRkcmVzcztcbiAgICB0aGlzLl9jb25uZWN0aW9uUG9vbCA9IGNvbm5lY3Rpb25Qb29sO1xuICAgIHRoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjayA9IGRyaXZlck9uRXJyb3JDYWxsYmFjaztcbiAgfVxuXG4gIGFjcXVpcmVDb25uZWN0aW9uKG1vZGUpIHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5fY29ubmVjdGlvblBvb2wuYWNxdWlyZSh0aGlzLl9hZGRyZXNzKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25uZWN0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5fd2l0aEFkZGl0aW9uYWxPbkVycm9yQ2FsbGJhY2soY29ubmVjdGlvblByb21pc2UsIHRoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvYWRCYWxhbmNlciBleHRlbmRzIENvbm5lY3Rpb25Qcm92aWRlciB7XG5cbiAgY29uc3RydWN0b3IoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjaykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fcm91dGluZ1RhYmxlID0gbmV3IFJvdXRpbmdUYWJsZShuZXcgUm91bmRSb2JpbkFycmF5KFthZGRyZXNzXSkpO1xuICAgIHRoaXMuX3JlZGlzY292ZXJ5ID0gbmV3IFJlZGlzY292ZXJ5KCk7XG4gICAgdGhpcy5fY29ubmVjdGlvblBvb2wgPSBjb25uZWN0aW9uUG9vbDtcbiAgICB0aGlzLl9kcml2ZXJPbkVycm9yQ2FsbGJhY2sgPSBkcml2ZXJPbkVycm9yQ2FsbGJhY2s7XG4gIH1cblxuICBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSB0aGlzLl9mcmVzaFJvdXRpbmdUYWJsZSgpLnRoZW4ocm91dGluZ1RhYmxlID0+IHtcbiAgICAgIGlmIChtb2RlID09PSBSRUFEKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3F1aXJlQ29ubmVjdGlvblRvU2VydmVyKHJvdXRpbmdUYWJsZS5yZWFkZXJzLCAncmVhZCcpO1xuICAgICAgfSBlbHNlIGlmIChtb2RlID09PSBXUklURSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWNxdWlyZUNvbm5lY3Rpb25Ub1NlcnZlcihyb3V0aW5nVGFibGUud3JpdGVycywgJ3dyaXRlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXdFcnJvcignSWxsZWdhbCBtb2RlICcgKyBtb2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fd2l0aEFkZGl0aW9uYWxPbkVycm9yQ2FsbGJhY2soY29ubmVjdGlvblByb21pc2UsIHRoaXMuX2RyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gIH1cblxuICBmb3JnZXQoYWRkcmVzcykge1xuICAgIHRoaXMuX3JvdXRpbmdUYWJsZS5mb3JnZXQoYWRkcmVzcyk7XG4gICAgdGhpcy5fY29ubmVjdGlvblBvb2wucHVyZ2UoYWRkcmVzcyk7XG4gIH1cblxuICBmb3JnZXRXcml0ZXIoYWRkcmVzcykge1xuICAgIHRoaXMuX3JvdXRpbmdUYWJsZS5mb3JnZXRXcml0ZXIoYWRkcmVzcyk7XG4gIH1cblxuICBfYWNxdWlyZUNvbm5lY3Rpb25Ub1NlcnZlcihzZXJ2ZXJzUm91bmRSb2JpbkFycmF5LCBzZXJ2ZXJOYW1lKSB7XG4gICAgY29uc3QgYWRkcmVzcyA9IHNlcnZlcnNSb3VuZFJvYmluQXJyYXkubmV4dCgpO1xuICAgIGlmICghYWRkcmVzcykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ld0Vycm9yKCdObyAnICsgc2VydmVyTmFtZSArICcgc2VydmVycyBhdmFpbGFibGUnLCBTRVNTSU9OX0VYUElSRUQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qb29sLmFjcXVpcmUoYWRkcmVzcyk7XG4gIH1cblxuICBfZnJlc2hSb3V0aW5nVGFibGUoKSB7XG4gICAgY29uc3QgY3VycmVudFJvdXRpbmdUYWJsZSA9IHRoaXMuX3JvdXRpbmdUYWJsZTtcblxuICAgIGlmICghY3VycmVudFJvdXRpbmdUYWJsZS5pc1N0YWxlKCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3VycmVudFJvdXRpbmdUYWJsZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWZyZXNoUm91dGluZ1RhYmxlKGN1cnJlbnRSb3V0aW5nVGFibGUpO1xuICB9XG5cbiAgX3JlZnJlc2hSb3V0aW5nVGFibGUoY3VycmVudFJvdXRpbmdUYWJsZSkge1xuICAgIGNvbnN0IGtub3duUm91dGVycyA9IGN1cnJlbnRSb3V0aW5nVGFibGUucm91dGVycy50b0FycmF5KCk7XG5cbiAgICBjb25zdCByZWZyZXNoZWRUYWJsZVByb21pc2UgPSBrbm93blJvdXRlcnMucmVkdWNlKChyZWZyZXNoZWRUYWJsZVByb21pc2UsIGN1cnJlbnRSb3V0ZXIsIGN1cnJlbnRJbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHJlZnJlc2hlZFRhYmxlUHJvbWlzZS50aGVuKG5ld1JvdXRpbmdUYWJsZSA9PiB7XG4gICAgICAgIGlmIChuZXdSb3V0aW5nVGFibGUpIHtcbiAgICAgICAgICBpZiAoIW5ld1JvdXRpbmdUYWJsZS53cml0ZXJzLmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgLy8gdmFsaWQgcm91dGluZyB0YWJsZSB3YXMgZmV0Y2hlZCAtIGp1c3QgcmV0dXJuIGl0LCB0cnkgbmV4dCByb3V0ZXIgb3RoZXJ3aXNlXG4gICAgICAgICAgICByZXR1cm4gbmV3Um91dGluZ1RhYmxlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyByZXR1cm5lZCByb3V0aW5nIHRhYmxlIHdhcyB1bmRlZmluZWQsIHRoaXMgbWVhbnMgYSBjb25uZWN0aW9uIGVycm9yIGhhcHBlbmVkIGFuZCB3ZSBuZWVkIHRvIGZvcmdldCB0aGVcbiAgICAgICAgICAvLyBwcmV2aW91cyByb3V0ZXIgYW5kIHRyeSB0aGUgbmV4dCBvbmVcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1JvdXRlckluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcbiAgICAgICAgICB0aGlzLl9mb3JnZXRSb3V0ZXIoY3VycmVudFJvdXRpbmdUYWJsZSwga25vd25Sb3V0ZXJzLCBwcmV2aW91c1JvdXRlckluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRyeSBuZXh0IHJvdXRlclxuICAgICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5fY3JlYXRlU2Vzc2lvbkZvclJlZGlzY292ZXJ5KGN1cnJlbnRSb3V0ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVkaXNjb3ZlcnkubG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIoc2Vzc2lvbiwgY3VycmVudFJvdXRlcik7XG4gICAgICB9KTtcbiAgICB9LCBQcm9taXNlLnJlc29sdmUobnVsbCkpO1xuXG4gICAgcmV0dXJuIHJlZnJlc2hlZFRhYmxlUHJvbWlzZS50aGVuKG5ld1JvdXRpbmdUYWJsZSA9PiB7XG4gICAgICBpZiAobmV3Um91dGluZ1RhYmxlICYmICFuZXdSb3V0aW5nVGFibGUud3JpdGVycy5pc0VtcHR5KCkpIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlUm91dGluZ1RhYmxlKG5ld1JvdXRpbmdUYWJsZSk7XG4gICAgICAgIHJldHVybiBuZXdSb3V0aW5nVGFibGU7XG4gICAgICB9XG5cbiAgICAgIC8vIGZvcmdldCB0aGUgbGFzdCBrbm93biByb3V0ZXIgYmVjYXVzZSBpdCBkaWQgbm90IHJldHVybiBhIHZhbGlkIHJvdXRpbmcgdGFibGVcbiAgICAgIGNvbnN0IGxhc3RSb3V0ZXJJbmRleCA9IGtub3duUm91dGVycy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5fZm9yZ2V0Um91dGVyKGN1cnJlbnRSb3V0aW5nVGFibGUsIGtub3duUm91dGVycywgbGFzdFJvdXRlckluZGV4KTtcblxuICAgICAgLy8gbm9uZSBvZiB0aGUgZXhpc3Rpbmcgcm91dGVycyByZXR1cm5lZCB2YWxpZCByb3V0aW5nIHRhYmxlLCB0aHJvdyBleGNlcHRpb25cbiAgICAgIHRocm93IG5ld0Vycm9yKCdDb3VsZCBub3QgcGVyZm9ybSBkaXNjb3ZlcnkuIE5vIHJvdXRpbmcgc2VydmVycyBhdmFpbGFibGUuJywgU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlU2Vzc2lvbkZvclJlZGlzY292ZXJ5KHJvdXRlckFkZHJlc3MpIHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5fY29ubmVjdGlvblBvb2wuYWNxdWlyZShyb3V0ZXJBZGRyZXNzKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25uZWN0aW9uKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXcgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb25Qcm9taXNlKTtcbiAgICByZXR1cm4gbmV3IFNlc3Npb24oUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcbiAgfVxuXG4gIF91cGRhdGVSb3V0aW5nVGFibGUobmV3Um91dGluZ1RhYmxlKSB7XG4gICAgY29uc3QgY3VycmVudFJvdXRpbmdUYWJsZSA9IHRoaXMuX3JvdXRpbmdUYWJsZTtcblxuICAgIC8vIGNsb3NlIG9sZCBjb25uZWN0aW9ucyB0byBzZXJ2ZXJzIG5vdCBwcmVzZW50IGluIHRoZSBuZXcgcm91dGluZyB0YWJsZVxuICAgIGNvbnN0IHN0YWxlU2VydmVycyA9IGN1cnJlbnRSb3V0aW5nVGFibGUuc2VydmVyc0RpZmYobmV3Um91dGluZ1RhYmxlKTtcbiAgICBzdGFsZVNlcnZlcnMuZm9yRWFjaChzZXJ2ZXIgPT4gdGhpcy5fY29ubmVjdGlvblBvb2wucHVyZ2Uoc2VydmVyKSk7XG5cbiAgICAvLyBtYWtlIHRoaXMgZHJpdmVyIGluc3RhbmNlIGF3YXJlIG9mIHRoZSBuZXcgdGFibGVcbiAgICB0aGlzLl9yb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGU7XG4gIH1cblxuICBfZm9yZ2V0Um91dGVyKHJvdXRpbmdUYWJsZSwgcm91dGVyc0FycmF5LCByb3V0ZXJJbmRleCkge1xuICAgIGNvbnN0IGFkZHJlc3MgPSByb3V0ZXJzQXJyYXlbcm91dGVySW5kZXhdO1xuICAgIGlmIChhZGRyZXNzKSB7XG4gICAgICByb3V0aW5nVGFibGUuZm9yZ2V0Um91dGVyKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyIGV4dGVuZHMgQ29ubmVjdGlvblByb3ZpZGVyIHtcblxuICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uUHJvbWlzZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSBjb25uZWN0aW9uUHJvbWlzZTtcbiAgfVxuXG4gIGFjcXVpcmVDb25uZWN0aW9uKG1vZGUpIHtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvbWlzZSA9IHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlID0gbnVsbDtcbiAgICByZXR1cm4gY29ubmVjdGlvblByb21pc2U7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFdlYlNvY2tldENoYW5uZWwgZnJvbSAnLi9jaC13ZWJzb2NrZXQnO1xuaW1wb3J0IE5vZGVDaGFubmVsIGZyb20gJy4vY2gtbm9kZSc7XG5pbXBvcnQge0NodW5rZXIsIERlY2h1bmtlcn0gZnJvbSAnLi9jaHVua2luZyc7XG5pbXBvcnQgaGFzRmVhdHVyZSBmcm9tICcuL2ZlYXR1cmVzJztcbmltcG9ydCB7UGFja2VyLCBVbnBhY2tlcn0gZnJvbSAnLi9wYWNrc3RyZWFtJztcbmltcG9ydCB7YWxsb2N9IGZyb20gJy4vYnVmJztcbmltcG9ydCB7Tm9kZSwgUGF0aCwgUGF0aFNlZ21lbnQsIFJlbGF0aW9uc2hpcCwgVW5ib3VuZFJlbGF0aW9uc2hpcH0gZnJvbSAnLi4vZ3JhcGgtdHlwZXMnO1xuaW1wb3J0IHtuZXdFcnJvcn0gZnJvbSAnLi8uLi9lcnJvcic7XG5cbmxldCBDaGFubmVsO1xuaWYoIE5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgQ2hhbm5lbCA9IE5vZGVDaGFubmVsLmNoYW5uZWw7XG59XG5lbHNlIGlmKCBXZWJTb2NrZXRDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICBDaGFubmVsID0gV2ViU29ja2V0Q2hhbm5lbC5jaGFubmVsO1xufVxuZWxzZSB7XG4gICAgdGhyb3cgbmV3RXJyb3IoXCJGYXRhbDogTm8gY29tcGF0aWJsZSB0cmFuc3BvcnQgYXZhaWxhYmxlLiBOZWVkIHRvIHJ1biBvbiBhIHBsYXRmb3JtIHdpdGggdGhlIFdlYlNvY2tldCBBUEkuXCIpO1xufVxuXG5cbmxldFxuLy8gU2lnbmF0dXJlIGJ5dGVzIGZvciBlYWNoIG1lc3NhZ2UgdHlwZVxuSU5JVCA9IDB4MDEsICAgICAgICAgICAgLy8gMDAwMCAwMDAxIC8vIElOSVQgPHVzZXJfYWdlbnQ+XG5BQ0tfRkFJTFVSRSA9IDB4MEUsICAgICAvLyAwMDAwIDExMTAgLy8gQUNLX0ZBSUxVUkVcblJFU0VUID0gMHgwRiwgICAgICAgICAgIC8vIDAwMDAgMTExMSAvLyBSRVNFVFxuUlVOID0gMHgxMCwgICAgICAgICAgICAgLy8gMDAwMSAwMDAwIC8vIFJVTiA8c3RhdGVtZW50PiA8cGFyYW1ldGVycz5cbkRJU0NBUkRfQUxMID0gMHgyRiwgICAgIC8vIDAwMTAgMTExMSAvLyBESVNDQVJEICpcblBVTExfQUxMID0gMHgzRiwgICAgICAgIC8vIDAwMTEgMTExMSAvLyBQVUxMICpcblNVQ0NFU1MgPSAweDcwLCAgICAgICAgIC8vIDAxMTEgMDAwMCAvLyBTVUNDRVNTIDxtZXRhZGF0YT5cblJFQ09SRCA9IDB4NzEsICAgICAgICAgIC8vIDAxMTEgMDAwMSAvLyBSRUNPUkQgPHZhbHVlPlxuSUdOT1JFRCA9IDB4N0UsICAgICAgICAgLy8gMDExMSAxMTEwIC8vIElHTk9SRUQgPG1ldGFkYXRhPlxuRkFJTFVSRSA9IDB4N0YsICAgICAgICAgLy8gMDExMSAxMTExIC8vIEZBSUxVUkUgPG1ldGFkYXRhPlxuXG4vLyBTaWduYXR1cmUgYnl0ZXMgZm9yIGhpZ2hlci1sZXZlbCBncmFwaCBvYmplY3RzXG5OT0RFID0gMHg0RSxcblJFTEFUSU9OU0hJUCA9IDB4NTIsXG5VTkJPVU5EX1JFTEFUSU9OU0hJUCA9IDB4NzIsXG5QQVRIID0gMHg1MCxcbi8vc2VudCBiZWZvcmUgdmVyc2lvbiBuZWdvdGlhdGlvblxuTUFHSUNfUFJFQU1CTEUgPSAweDYwNjBCMDE3LFxuREVCVUcgPSBmYWxzZTtcblxubGV0IFVSTFJFR0VYID0gbmV3IFJlZ0V4cChbXG4gIFwiKFteL10rLy8pP1wiLCAgICAgICAgICAvLyBzY2hlbWVcbiAgXCIoKFteOi8/I10qKVwiLCAgICAgIC8vIGhvc3RuYW1lXG4gIFwiKD86OihbMC05XSspKT8pXCIsICAvLyBwb3J0IChvcHRpb25hbClcbiAgXCIuKlwiXS5qb2luKFwiXCIpKTsgICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZVxuXG5mdW5jdGlvbiBwYXJzZVNjaGVtZSggdXJsICkge1xuICBsZXQgc2NoZW1lID0gdXJsLm1hdGNoKFVSTFJFR0VYKVsxXSB8fCAnJztcbiAgcmV0dXJuIHNjaGVtZS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVVybCh1cmwpIHtcbiAgcmV0dXJuIHVybC5tYXRjaCggVVJMUkVHRVggKVsyXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIb3N0KCB1cmwgKSB7XG4gIHJldHVybiB1cmwubWF0Y2goIFVSTFJFR0VYIClbM107XG59XG5cbmZ1bmN0aW9uIHBhcnNlUG9ydCggdXJsICkge1xuICByZXR1cm4gdXJsLm1hdGNoKCBVUkxSRUdFWCApWzRdO1xufVxuXG4vKipcbiAqIFZlcnkgcnVkaW1lbnRhcnkgbG9nIGhhbmRsaW5nLCBzaG91bGQgcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgc29tZXRoaW5nIHByb3BlciBhdCBzb21lIHBvaW50LlxuICogQHBhcmFtIGFjdG9yIHRoZSBwYXJ0IHRoYXQgc2VudCB0aGUgbWVzc2FnZSwgJ1MnIGZvciBzZXJ2ZXIgYW5kICdDJyBmb3IgY2xpZW50XG4gKiBAcGFyYW0gbXNnIHRoZSBib2x0IG1lc3NhZ2VcbiAqL1xuZnVuY3Rpb24gbG9nKGFjdG9yLCBtc2cpIHtcbiAgaWYgKERFQlVHKSB7XG4gICAgZm9yKHZhciBpID0gMjsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbXNnICs9IFwiIFwiICsgSlNPTi5zdHJpbmdpZnkoYXJndW1lbnRzW2ldKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coYWN0b3IgKyBcIjpcIiArIG1zZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gTk9fT1AoKXt9XG5cbmxldCBOT19PUF9PQlNFUlZFUiA9IHtcbiAgb25OZXh0IDogTk9fT1AsXG4gIG9uQ29tcGxldGVkIDogTk9fT1AsXG4gIG9uRXJyb3IgOiBOT19PUFxufTtcblxuLyoqIE1hcHMgZnJvbSBwYWNrc3RyZWFtIHN0cnVjdHVyZXMgdG8gTmVvNGogZG9tYWluIG9iamVjdHMgKi9cbmxldCBfbWFwcGVycyA9IHtcbiAgbm9kZSA6ICggdW5wYWNrZXIsIGJ1ZiApID0+IHtcbiAgICByZXR1cm4gbmV3IE5vZGUoXG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgLy8gSWRlbnRpdHlcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpLCAvLyBMYWJlbHNcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpICAvLyBQcm9wZXJ0aWVzXG4gICAgKTtcbiAgfSxcbiAgcmVsIDogKCB1bnBhY2tlciwgYnVmICkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVsYXRpb25zaGlwKFxuICAgICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksICAvLyBJZGVudGl0eVxuICAgICAgdW5wYWNrZXIudW5wYWNrKGJ1ZiksICAvLyBTdGFydCBOb2RlIElkZW50aXR5XG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgIC8vIEVuZCBOb2RlIElkZW50aXR5XG4gICAgICB1bnBhY2tlci51bnBhY2soYnVmKSwgIC8vIFR5cGVcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpIC8vIFByb3BlcnRpZXNcbiAgICApO1xuICB9LFxuICB1bmJvdW5kUmVsIDogKCB1bnBhY2tlciwgYnVmICkgPT4ge1xuICAgIHJldHVybiBuZXcgVW5ib3VuZFJlbGF0aW9uc2hpcChcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpLCAgLy8gSWRlbnRpdHlcbiAgICAgIHVucGFja2VyLnVucGFjayhidWYpLCAgLy8gVHlwZVxuICAgICAgdW5wYWNrZXIudW5wYWNrKGJ1ZikgLy8gUHJvcGVydGllc1xuICAgICk7XG4gIH0sXG4gIHBhdGggOiAoIHVucGFja2VyLCBidWYgKSA9PiB7XG4gICAgbGV0IG5vZGVzID0gdW5wYWNrZXIudW5wYWNrKGJ1ZiksXG4gICAgICAgIHJlbHMgPSB1bnBhY2tlci51bnBhY2soYnVmKSxcbiAgICAgICAgc2VxdWVuY2UgPSB1bnBhY2tlci51bnBhY2soYnVmKTtcbiAgICBsZXQgcHJldk5vZGUgPSBub2Rlc1swXSxcbiAgICAgICAgc2VnbWVudHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VxdWVuY2UubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgbGV0IHJlbEluZGV4ID0gc2VxdWVuY2VbaV0sXG4gICAgICAgICAgICBuZXh0Tm9kZSA9IG5vZGVzW3NlcXVlbmNlW2kgKyAxXV0sXG4gICAgICAgICAgICByZWw7XG4gICAgICAgIGlmIChyZWxJbmRleCA+IDApIHtcbiAgICAgICAgICAgIHJlbCA9IHJlbHNbcmVsSW5kZXggLSAxXTtcbiAgICAgICAgICAgIGlmKCByZWwgaW5zdGFuY2VvZiBVbmJvdW5kUmVsYXRpb25zaGlwICkge1xuICAgICAgICAgICAgICAvLyBUbyBhdm9pZCBkdXBsaWNhdGlvbiwgcmVsYXRpb25zaGlwcyBpbiBhIHBhdGggZG8gbm90IGNvbnRhaW5cbiAgICAgICAgICAgICAgLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgc3RhcnQgYW5kIGVuZCBub2RlcywgdGhhdCdzIGluc3RlYWRcbiAgICAgICAgICAgICAgLy8gaW5mZXJyZWQgZnJvbSB0aGUgcGF0aCBzZXF1ZW5jZS4gVGhpcyBpcyB1cyBpbmZlcnJpbmcgKGFuZCxcbiAgICAgICAgICAgICAgLy8gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgcmVtZW1iZXJpbmcpIHRoZSBzdGFydC9lbmQgb2YgYSByZWwuXG4gICAgICAgICAgICAgIHJlbHNbcmVsSW5kZXggLSAxXSA9IHJlbCA9IHJlbC5iaW5kKHByZXZOb2RlLmlkZW50aXR5LCBuZXh0Tm9kZS5pZGVudGl0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWwgPSByZWxzWy1yZWxJbmRleCAtIDFdO1xuICAgICAgICAgICAgaWYoIHJlbCBpbnN0YW5jZW9mIFVuYm91bmRSZWxhdGlvbnNoaXAgKSB7XG4gICAgICAgICAgICAgIC8vIFNlZSBhYm92ZVxuICAgICAgICAgICAgICByZWxzWy1yZWxJbmRleCAtIDFdID0gcmVsID0gcmVsLmJpbmQobmV4dE5vZGUuaWRlbnRpdHksIHByZXZOb2RlLmlkZW50aXR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBEb25lIGh5ZHJhdGluZyBvbmUgcGF0aCBzZWdtZW50LlxuICAgICAgICBzZWdtZW50cy5wdXNoKCBuZXcgUGF0aFNlZ21lbnQoIHByZXZOb2RlLCByZWwsIG5leHROb2RlICkgKTtcbiAgICAgICAgcHJldk5vZGUgPSBuZXh0Tm9kZTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQYXRoKG5vZGVzWzBdLCBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXSwgIHNlZ21lbnRzICk7XG4gIH1cbn07XG5cbi8qKlxuICogQSBjb25uZWN0aW9uIG1hbmFnZXMgc2VuZGluZyBhbmQgcmVjaWV2aW5nIG1lc3NhZ2VzIG92ZXIgYSBjaGFubmVsLiBBXG4gKiBjb25uZWN0b3IgaXMgdmVyeSBjbG9zZWx5IHRpZWQgdG8gdGhlIEJvbHQgcHJvdG9jb2wsIGl0IGltcGxlbWVudHMgdGhlXG4gKiBzYW1lIG1lc3NhZ2Ugc3RydWN0dXJlIHdpdGggdmVyeSBsaXR0bGUgZnJpbGxzLiBUaGlzIG1lYW5zIENvbm5lY3RvcnMgYXJlXG4gKiBuYXR1cmFsbHkgdGllZCB0byBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLCBhbmQgd2UgZXhwZWN0XG4gKiBhbm90aGVyIGxheWVyIHdpbGwgYmUgbmVlZGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMuXG4gKlxuICogVGhlIGNvbm5lY3RvciB0cmllcyB0byBiYXRjaCBvdXRib3VuZCBtZXNzYWdlcyBieSByZXF1aXJpbmcgaXRzIHVzZXJzXG4gKiB0byBjYWxsICdzeW5jJyB3aGVuIG1lc3NhZ2VzIG5lZWQgdG8gYmUgc2VudCwgYW5kIGl0IHJvdXRlcyByZXNwb25zZVxuICogbWVzc2FnZXMgYmFjayB0byB0aGUgb3JpZ2luYXRvcnMgb2YgdGhlIHJlcXVlc3RzIHRoYXQgY3JlYXRlZCB0aG9zZVxuICogcmVzcG9uc2UgbWVzc2FnZXMuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqL1xuY2xhc3MgQ29ubmVjdGlvbiB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gY2hhbm5lbCAtIGNoYW5uZWwgd2l0aCBhICd3cml0ZScgZnVuY3Rpb24gYW5kIGEgJ29ubWVzc2FnZSdcbiAgICogICAgICAgICAgICAgICAgICBjYWxsYmFjayBwcm9wZXJ0eVxuICAgKiBAcGFyYW0gdXJsIC0gdXJsIHRvIGNvbm5lY3QgdG9cbiAgICovXG4gIGNvbnN0cnVjdG9yIChjaGFubmVsLCB1cmwpIHtcbiAgICAvKipcbiAgICAgKiBBbiBvcmRlcmVkIHF1ZXVlIG9mIG9ic2VydmVycywgZWFjaCBleGNoYW5nZSByZXNwb25zZSAoemVybyBvciBtb3JlXG4gICAgICogUkVDT1JEIG1lc3NhZ2VzIGZvbGxvd2VkIGJ5IGEgU1VDQ0VTUyBtZXNzYWdlKSB3ZSByZWNpZXZlIHdpbGwgYmUgcm91dGVkXG4gICAgICogdG8gdGhlIG5leHQgcGVuZGluZyBvYnNlcnZlci5cbiAgICAgKi9cbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLnNlcnZlciA9IHthZGRyZXNzOiB1cmx9O1xuICAgIHRoaXMuX3BlbmRpbmdPYnNlcnZlcnMgPSBbXTtcbiAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY2ggPSBjaGFubmVsO1xuICAgIHRoaXMuX2RlY2h1bmtlciA9IG5ldyBEZWNodW5rZXIoKTtcbiAgICB0aGlzLl9jaHVua2VyID0gbmV3IENodW5rZXIoIGNoYW5uZWwgKTtcbiAgICB0aGlzLl9wYWNrZXIgPSBuZXcgUGFja2VyKCB0aGlzLl9jaHVua2VyICk7XG4gICAgdGhpcy5fdW5wYWNrZXIgPSBuZXcgVW5wYWNrZXIoKTtcblxuICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gZmFsc2U7XG4gICAgdGhpcy5fY3VycmVudEZhaWx1cmUgPSBudWxsO1xuXG4gICAgLy8gU2V0IHRvIHRydWUgb24gZmF0YWwgZXJyb3JzLCB0byBnZXQgdGhpcyBvdXQgb2Ygc2Vzc2lvbiBwb29sLlxuICAgIHRoaXMuX2lzQnJva2VuID0gZmFsc2U7XG5cbiAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLCBleHBsYWluIHRvIHRoZSB1bnBhY2tlciBob3cgdG8gdW5wYWNrIG5vZGVzLCByZWxzLCBwYXRocztcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW05PREVdID0gX21hcHBlcnMubm9kZTtcbiAgICB0aGlzLl91bnBhY2tlci5zdHJ1Y3RNYXBwZXJzW1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy5yZWw7XG4gICAgdGhpcy5fdW5wYWNrZXIuc3RydWN0TWFwcGVyc1tVTkJPVU5EX1JFTEFUSU9OU0hJUF0gPSBfbWFwcGVycy51bmJvdW5kUmVsO1xuICAgIHRoaXMuX3VucGFja2VyLnN0cnVjdE1hcHBlcnNbUEFUSF0gPSBfbWFwcGVycy5wYXRoO1xuXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgIC8vIFRPRE86IFVzaW5nIGBvbm1lc3NhZ2VgIGFuZCBgb25lcnJvcmAgY2FtZSBmcm9tIHRoZSBXZWJTb2NrZXQgQVBJLFxuICAgIC8vIGl0IHJlYWRzIHBvb3JseSBhbmQgaGFzIHNldmVyYWwgYW5ub3lpbmcgZHJhd2JhY2tzLiBTd2FwIHRvIGhhdmluZ1xuICAgIC8vIENoYW5uZWwgZXh0ZW5kIEV2ZW50RW1pdHRlciBpbnN0ZWFkLCB0aGVuIHdlIGNhbiB1c2UgYG9uKCdkYXRhJywuLilgXG4gICAgdGhpcy5fY2gub25tZXNzYWdlID0gKGJ1ZikgPT4ge1xuICAgICAgbGV0IHByb3Bvc2VkID0gYnVmLnJlYWRJbnQzMigpO1xuICAgICAgaWYoIHByb3Bvc2VkID09IDEgKSB7XG4gICAgICAgIC8vIE9rLCBwcm90b2NvbCBydW5uaW5nLiBTaW1wbHkgZm9yd2FyZCBhbGwgbWVzc2FnZXMgcGFzdFxuICAgICAgICAvLyB0aGlzIHRvIHRoZSBkZWNodW5rZXJcbiAgICAgICAgc2VsZi5fY2gub25tZXNzYWdlID0gKGJ1ZikgPT4ge1xuICAgICAgICAgIHNlbGYuX2RlY2h1bmtlci53cml0ZShidWYpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmKCBidWYuaGFzUmVtYWluaW5nKCkgKSB7XG4gICAgICAgICAgc2VsZi5fZGVjaHVua2VyLndyaXRlKGJ1Zi5yZWFkU2xpY2UoIGJ1Zi5yZW1haW5pbmcoKSApKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wb3NlZCA9PSAxMjEzNDg2MTYwKSB7Ly9zZXJ2ZXIgcmVzcG9uZGVkIDEyMTM0ODYxNjAgPT0gMHg0ODU0NTQ1MCA9PSBcIkhUVFBcIlxuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKG5ld0Vycm9yKFwiU2VydmVyIHJlc3BvbmRlZCBIVFRQLiBNYWtlIHN1cmUgeW91IGFyZSBub3QgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gdGhlIGh0dHAgZW5kcG9pbnQgXCIgK1xuICAgICAgICAgIFwiKEhUVFAgZGVmYXVsdHMgdG8gcG9ydCA3NDc0IHdoZXJlYXMgQk9MVCBkZWZhdWx0cyB0byBwb3J0IDc2ODcpXCIpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWxmLl9oYW5kbGVGYXRhbEVycm9yKG5ld0Vycm9yKFwiVW5rbm93biBCb2x0IHByb3RvY29sIHZlcnNpb246IFwiICsgcHJvcG9zZWQpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gTGlzdGVuIHRvIGNvbm5lY3Rpb24gZXJyb3JzLiBJbXBvcnRhbnQgbm90ZSB0aG91Z2g7XG4gICAgLy8gSW4gc29tZSBjYXNlcyB3ZSB3aWxsIGdldCBhIGNoYW5uZWwgdGhhdCBpcyBhbHJlYWR5IGJyb2tlbiAoZm9yIGluc3RhbmNlLFxuICAgIC8vIGlmIHRoZSB1c2VyIHBhc3NlcyBpbnZhbGlkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucykuIEluIHRoaXMgY2FzZSwgb25lcnJvclxuICAgIC8vIHdpbGwgaGF2ZSBcImFscmVhZHkgdHJpZ2dlcmVkXCIgYmVmb3JlIHdlIGFkZCBvdXQgbGlzdGVuZXIgaGVyZS4gU28gdGhlIGxpbmVcbiAgICAvLyBiZWxvdyBhbHNvIGNoZWNrcyB0aGF0IHRoZSBjaGFubmVsIGlzIG5vdCBhbHJlYWR5IGZhaWxlZC4gVGhpcyBjb3VsZCBiZSBuaWNlbHlcbiAgICAvLyBlbmNhcHN1bGF0ZWQgaW50byBDaGFubmVsIGlmIHdlIHVzZWQgYG9uKCdlcnJvcicsIC4uKWAgcmF0aGVyIHRoYW4gYG9uZXJyb3I9Li5gXG4gICAgLy8gYXMgb3V0bGluZWQgaW4gdGhlIGNvbW1lbnQgYWJvdXQgYG9ubWVzc2FnZWAgZnVydGhlciB1cCBpbiB0aGlzIGZpbGUuXG4gICAgdGhpcy5fY2gub25lcnJvciA9IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IuYmluZCh0aGlzKTtcbiAgICBpZiggdGhpcy5fY2guX2Vycm9yICkge1xuICAgICAgdGhpcy5faGFuZGxlRmF0YWxFcnJvcih0aGlzLl9jaC5fZXJyb3IpO1xuICAgIH1cblxuICAgIHRoaXMuX2RlY2h1bmtlci5vbm1lc3NhZ2UgPSAoYnVmKSA9PiB7XG4gICAgICBzZWxmLl9oYW5kbGVNZXNzYWdlKCBzZWxmLl91bnBhY2tlci51bnBhY2soIGJ1ZiApICk7XG4gICAgfTtcblxuICAgIGxldCBoYW5kc2hha2UgPSBhbGxvYyggNSAqIDQgKTtcbiAgICAvL21hZ2ljIHByZWFtYmxlXG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoIE1BR0lDX1BSRUFNQkxFICk7XG4gICAgLy9wcm9wb3NlZCB2ZXJzaW9uc1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKCAxICk7XG4gICAgaGFuZHNoYWtlLndyaXRlSW50MzIoIDAgKTtcbiAgICBoYW5kc2hha2Uud3JpdGVJbnQzMiggMCApO1xuICAgIGhhbmRzaGFrZS53cml0ZUludDMyKCAwICk7XG4gICAgaGFuZHNoYWtlLnJlc2V0KCk7XG4gICAgdGhpcy5fY2gud3JpdGUoIGhhbmRzaGFrZSApO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiRmF0YWxcIiBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBkZWFkLiBPbmx5IGNhbGwgdGhpcyBpZiBzb21ldGhpbmdcbiAgICogaGFwcGVucyB0aGF0IGNhbm5vdCBiZSByZWNvdmVyZWQgZnJvbS4gVGhpcyB3aWxsIGxlYWQgdG8gYWxsIHN1YnNjcmliZXJzXG4gICAqIGZhaWxpbmcsIGFuZCB0aGUgY29ubmVjdGlvbiBnZXR0aW5nIGVqZWN0ZWQgZnJvbSB0aGUgc2Vzc2lvbiBwb29sLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyIGFuIGVycm9yIG9iamVjdCwgZm9yd2FyZGVkIHRvIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgc3Vic2NyaWJlcnNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9oYW5kbGVGYXRhbEVycm9yKCBlcnIgKSB7XG4gICAgdGhpcy5faXNCcm9rZW4gPSB0cnVlO1xuICAgIHRoaXMuX2Vycm9yID0gZXJyO1xuICAgIGlmKCB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgJiYgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IgKSB7XG4gICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcihlcnIpO1xuICAgIH1cbiAgICB3aGlsZSggdGhpcy5fcGVuZGluZ09ic2VydmVycy5sZW5ndGggPiAwICkge1xuICAgICAgbGV0IG9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgaWYoIG9ic2VydmVyICYmIG9ic2VydmVyLm9uRXJyb3IgKSB7XG4gICAgICAgIG9ic2VydmVyLm9uRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaGFuZGxlTWVzc2FnZSggbXNnICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBtc2cuZmllbGRzWzBdO1xuXG4gICAgc3dpdGNoKCBtc2cuc2lnbmF0dXJlICkge1xuICAgICAgY2FzZSBSRUNPUkQ6XG4gICAgICAgIGxvZyhcIlNcIiwgXCJSRUNPUkRcIiwgbXNnKTtcbiAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uTmV4dCggcGF5bG9hZCApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1VDQ0VTUzpcbiAgICAgICAgbG9nKFwiU1wiLCBcIlNVQ0NFU1NcIiwgbXNnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25Db21wbGV0ZWQoIHBheWxvYWQgKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSB0aGlzLl9wZW5kaW5nT2JzZXJ2ZXJzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEZBSUxVUkU6XG4gICAgICAgIGxvZyhcIlNcIiwgXCJGQUlMVVJFXCIsIG1zZyk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5fY3VycmVudEZhaWx1cmUgPSBuZXdFcnJvcihwYXlsb2FkLm1lc3NhZ2UsIHBheWxvYWQuY29kZSk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IoIHRoaXMuX2N1cnJlbnRGYWlsdXJlICk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICAgIC8vIFRoaW5ncyBhcmUgbm93IGJyb2tlbi4gUGVuZGluZyBvYnNlcnZlcnMgd2lsbCBnZXQgRkFJTFVSRSBtZXNzYWdlcyByb3V0ZWQgdW50aWxcbiAgICAgICAgICAvLyBXZSBhcmUgZG9uZSBoYW5kbGluZyB0aGlzIGZhaWx1cmUuXG4gICAgICAgICAgaWYoICF0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSApIHtcbiAgICAgICAgICAgIHRoaXMuX2lzSGFuZGxpbmdGYWlsdXJlID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gaXNIYW5kbGluZ0ZhaWx1cmUgd2FzIGZhbHNlLCBtZWFuaW5nIHRoaXMgaXMgdGhlIGZpcnN0IGZhaWx1cmUgbWVzc2FnZVxuICAgICAgICAgICAgLy8gd2Ugc2VlIGZyb20gdGhpcyBmYWlsdXJlLiBXZSBtYXkgc2VlIHNldmVyYWwgb3RoZXJzLCBvbmUgZm9yIGVhY2ggbWVzc2FnZVxuICAgICAgICAgICAgLy8gd2UgaGFkIFwib3B0aW1pc3RpY2FsbHlcIiBhbHJlYWR5IHNlbnQgYWZ0ZXIgd2hhdGV2ZXIgaXQgd2FzIHRoYXQgZmFpbGVkLlxuICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGFuZCBuZWVkIHRvIEFDSyB0aGUgZmlyc3Qgb25lLCB3aGljaCBpcyB3aHkgd2UgYXJlIHRyYWNraW5nXG4gICAgICAgICAgICAvLyB0aGlzIF9pc0hhbmRsaW5nRmFpbHVyZSB0aGluZy5cbiAgICAgICAgICAgIHRoaXMuX2Fja0ZhaWx1cmUoe1xuICAgICAgICAgICAgICBvbk5leHQ6IE5PX09QLFxuICAgICAgICAgICAgICBvbkVycm9yOiBOT19PUCxcbiAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0hhbmRsaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRGYWlsdXJlID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBJR05PUkVEOlxuICAgICAgICBsb2coXCJTXCIsIFwiSUdOT1JFRFwiLCBtc2cpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50RmFpbHVyZSAmJiB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIub25FcnJvcilcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKHRoaXMuX2N1cnJlbnRGYWlsdXJlKTtcbiAgICAgICAgICBlbHNlIGlmKHRoaXMuX2N1cnJlbnRPYnNlcnZlci5vbkVycm9yKVxuICAgICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyLm9uRXJyb3IocGF5bG9hZCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhpcy5fY3VycmVudE9ic2VydmVyID0gdGhpcy5fcGVuZGluZ09ic2VydmVycy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5faGFuZGxlRmF0YWxFcnJvcihuZXdFcnJvcihcIlVua25vd24gQm9sdCBwcm90b2NvbCBtZXNzYWdlOiBcIiArIG1zZykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBRdWV1ZSBhbiBJTklULW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgaW5pdGlhbGl6ZSggY2xpZW50TmFtZSwgdG9rZW4sIG9ic2VydmVyICkge1xuICAgIGxvZyhcIkNcIiwgXCJJTklUXCIsIGNsaWVudE5hbWUsIHRva2VuKTtcbiAgICB0aGlzLl9xdWV1ZU9ic2VydmVyKG9ic2VydmVyKTtcbiAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdCggSU5JVCwgW3RoaXMuX3BhY2thYmxlKGNsaWVudE5hbWUpLCB0aGlzLl9wYWNrYWJsZSh0b2tlbildLFxuICAgICAgKGVycikgPT4gdGhpcy5faGFuZGxlRmF0YWxFcnJvcihlcnIpICk7XG4gICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICB0aGlzLnN5bmMoKTtcbiAgfVxuXG4gIC8qKiBRdWV1ZSBhIFJVTi1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlICovXG4gIHJ1biggc3RhdGVtZW50LCBwYXJhbXMsIG9ic2VydmVyICkge1xuICAgIGxvZyhcIkNcIiwgXCJSVU5cIiwgc3RhdGVtZW50LCBwYXJhbXMpO1xuICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KCBSVU4sIFt0aGlzLl9wYWNrYWJsZShzdGF0ZW1lbnQpLCB0aGlzLl9wYWNrYWJsZShwYXJhbXMpXSxcbiAgICAgIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSAgKTtcbiAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICB9XG5cbiAgLyoqIFF1ZXVlIGEgUFVMTF9BTEwtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICBwdWxsQWxsKCBvYnNlcnZlciApIHtcbiAgICBsb2coXCJDXCIsIFwiUFVMTF9BTExcIik7XG4gICAgdGhpcy5fcXVldWVPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgdGhpcy5fcGFja2VyLnBhY2tTdHJ1Y3QoIFBVTExfQUxMLCBbXSwgKGVycikgPT4gdGhpcy5faGFuZGxlRmF0YWxFcnJvcihlcnIpICk7XG4gICAgdGhpcy5fY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgfVxuXG4gIC8qKiBRdWV1ZSBhIERJU0NBUkRfQUxMLW1lc3NhZ2UgdG8gYmUgc2VudCB0byB0aGUgZGF0YWJhc2UgKi9cbiAgZGlzY2FyZEFsbCggb2JzZXJ2ZXIgKSB7XG4gICAgbG9nKFwiQ1wiLCBcIkRJU0NBUkRfQUxMXCIpO1xuICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KCBESVNDQVJEX0FMTCwgW10sIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSApO1xuICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gIH1cblxuICAvKiogUXVldWUgYSBSRVNFVC1tZXNzYWdlIHRvIGJlIHNlbnQgdG8gdGhlIGRhdGFiYXNlLiBNdXRlcyBmYWlsdXJlIGhhbmRsaW5nLiAqL1xuICByZXNldEFzeW5jKCBvYnNlcnZlciApIHtcbiAgICBsb2coXCJDXCIsIFwiUkVTRVRfQVNZTkNcIik7XG4gICAgdGhpcy5faXNIYW5kbGluZ0ZhaWx1cmUgPSB0cnVlO1xuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICBsZXQgd3JhcHBlZE9icyA9IHtcbiAgICAgIG9uTmV4dDogb2JzZXJ2ZXIgPyBvYnNlcnZlci5vbk5leHQgOiBOT19PUCxcbiAgICAgIG9uRXJyb3I6IG9ic2VydmVyID8gb2JzZXJ2ZXIub25FcnJvciA6IE5PX09QLFxuICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgc2VsZi5faXNIYW5kbGluZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9ic2VydmVyKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIub25Db21wbGV0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fcXVldWVPYnNlcnZlcih3cmFwcGVkT2JzKTtcbiAgICB0aGlzLl9wYWNrZXIucGFja1N0cnVjdCggUkVTRVQsIFtdLCAoZXJyKSA9PiB0aGlzLl9oYW5kbGVGYXRhbEVycm9yKGVycikgKTtcbiAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICB9XG5cbiAgLyoqIFF1ZXVlIGEgUkVTRVQtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICByZXNldChvYnNlcnZlcikge1xuICAgIGxvZygnQycsICdSRVNFVCcpO1xuICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KFJFU0VULCBbXSwgKGVycikgPT4gdGhpcy5faGFuZGxlRmF0YWxFcnJvcihlcnIpKTtcbiAgICB0aGlzLl9jaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICB9XG5cbiAgLyoqIFF1ZXVlIGEgQUNLX0ZBSUxVUkUtbWVzc2FnZSB0byBiZSBzZW50IHRvIHRoZSBkYXRhYmFzZSAqL1xuICBfYWNrRmFpbHVyZSggb2JzZXJ2ZXIgKSB7XG4gICAgbG9nKFwiQ1wiLCBcIkFDS19GQUlMVVJFXCIpO1xuICAgIHRoaXMuX3F1ZXVlT2JzZXJ2ZXIob2JzZXJ2ZXIpO1xuICAgIHRoaXMuX3BhY2tlci5wYWNrU3RydWN0KCBBQ0tfRkFJTFVSRSwgW10sIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSApO1xuICAgIHRoaXMuX2NodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gIH1cblxuICBfcXVldWVPYnNlcnZlcihvYnNlcnZlcikge1xuICAgIGlmKCB0aGlzLl9pc0Jyb2tlbiApIHtcbiAgICAgIGlmKCBvYnNlcnZlciAmJiBvYnNlcnZlci5vbkVycm9yICkge1xuICAgICAgICBvYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb2JzZXJ2ZXIgPSBvYnNlcnZlciB8fCBOT19PUF9PQlNFUlZFUjtcbiAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCA9IG9ic2VydmVyLm9uQ29tcGxldGVkIHx8IE5PX09QO1xuICAgIG9ic2VydmVyLm9uRXJyb3IgPSBvYnNlcnZlci5vbkVycm9yIHx8IE5PX09QO1xuICAgIG9ic2VydmVyLm9uTmV4dCA9IG9ic2VydmVyLm9uTmV4dCB8fCBOT19PUDtcbiAgICBpZiggdGhpcy5fY3VycmVudE9ic2VydmVyID09PSB1bmRlZmluZWQgKSB7XG4gICAgICB0aGlzLl9jdXJyZW50T2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGVuZGluZ09ic2VydmVycy5wdXNoKCBvYnNlcnZlciApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbml6ZSAtIGZsdXNoIGFsbCBxdWV1ZWQgb3V0Z29pbmcgbWVzc2FnZXMgYW5kIHJvdXRlIHRoZWlyIHJlc3BvbnNlc1xuICAgKiB0byB0aGVpciByZXNwZWN0aXZlIGhhbmRsZXJzLlxuICAgKi9cbiAgc3luYygpIHtcbiAgICB0aGlzLl9jaHVua2VyLmZsdXNoKCk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhpcyBjb25uZWN0aW9uIGlzIGluIHdvcmtpbmcgY29uZGl0aW9uICovXG4gIGlzT3BlbigpIHtcbiAgICByZXR1cm4gIXRoaXMuX2lzQnJva2VuICYmIHRoaXMuX2NoLl9vcGVuO1xuICB9XG5cbiAgaXNFbmNyeXB0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoLmlzRW5jcnlwdGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBjbG9zZSBvbiB0aGUgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2IgLSBGdW5jdGlvbiB0byBjYWxsIG9uIGNsb3NlLlxuICAgKi9cbiAgY2xvc2UoY2IpIHtcbiAgICB0aGlzLl9jaC5jbG9zZShjYik7XG4gIH1cblxuICBfcGFja2FibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9wYWNrZXIucGFja2FibGUodmFsdWUsIChlcnIpID0+IHRoaXMuX2hhbmRsZUZhdGFsRXJyb3IoZXJyKSk7XG4gIH1cblxuICBzZXRTZXJ2ZXJWZXJzaW9uKHZlcnNpb24pIHtcbiAgICB0aGlzLnNlcnZlci52ZXJzaW9uID0gdmVyc2lvbjtcbiAgfVxufVxuXG4vKipcbiAqIENyZXRlIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBwcm92aWRlZCB1cmwuXG4gKiBAYWNjZXNzIHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSAnbmVvNGonLXByZWZpeGVkIFVSTCB0byBOZW80aiBCb2x0IGVuZHBvaW50XG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnXG4gKiBAcmV0dXJuIHtDb25uZWN0aW9ufSAtIE5ldyBjb25uZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3QoIHVybCwgY29uZmlnID0ge30pIHtcbiAgbGV0IENoID0gY29uZmlnLmNoYW5uZWwgfHwgQ2hhbm5lbDtcbiAgY29uc3QgaG9zdCA9IHBhcnNlSG9zdCh1cmwpO1xuICBjb25zdCBwb3J0ID0gcGFyc2VQb3J0KHVybCkgfHwgNzY4NztcbiAgY29uc3QgY29tcGxldGVVcmwgPSBob3N0ICsgJzonICsgcG9ydDtcblxuICByZXR1cm4gbmV3IENvbm5lY3Rpb24oIG5ldyBDaCh7XG4gICAgaG9zdDogcGFyc2VIb3N0KHVybCksXG4gICAgcG9ydDogcGFyc2VQb3J0KHVybCkgfHwgNzY4NyxcbiAgICAvLyBEZWZhdWx0IHRvIHVzaW5nIGVuY3J5cHRpb24gaWYgdHJ1c3Qtb24tZmlyc3QtdXNlIGlzIGF2YWlsYWJsZVxuICAgIGVuY3J5cHRlZCA6IChjb25maWcuZW5jcnlwdGVkID09IG51bGwpID8gIGhhc0ZlYXR1cmUoXCJ0cnVzdF9hbGxfY2VydGlmaWNhdGVzXCIpIDogY29uZmlnLmVuY3J5cHRlZCxcbiAgICAvLyBEZWZhdWx0IHRvIHVzaW5nIFRSVVNUX0FMTF9DRVJUSUZJQ0FURVMgaWYgaXQgaXMgYXZhaWxhYmxlXG4gICAgdHJ1c3QgOiBjb25maWcudHJ1c3QgfHwgKGhhc0ZlYXR1cmUoXCJ0cnVzdF9hbGxfY2VydGlmaWNhdGVzXCIpID8gXCJUUlVTVF9BTExfQ0VSVElGSUNBVEVTXCIgOiBcIlRSVVNUX0NVU1RPTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCIpLFxuICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXMgOiBjb25maWcudHJ1c3RlZENlcnRpZmljYXRlcyB8fCBbXSxcbiAgICBrbm93bkhvc3RzIDogY29uZmlnLmtub3duSG9zdHNcbiAgfSksIGNvbXBsZXRlVXJsKTtcbn1cblxuZXhwb3J0IHtcbiAgICBjb25uZWN0LFxuICAgIHBhcnNlU2NoZW1lLFxuICAgIHBhcnNlVXJsLFxuICAgIENvbm5lY3Rpb25cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBDZW50cmFsIHBsYWNlIHRvIGRldGVjdCBmZWF0dXJlIHN1cHBvcnQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLFxuLy8gZXhwYW5kIGFzIG5lZWRlZC5cblxuY29uc3QgRkVBVFVSRVMgPSB7XG4gIHRydXN0X29uX2ZpcnN0X3VzZSA6ICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gVGhpcyBpcyBpbnNhbmUuIFdlIGFyZSB2ZXJpZnlpbmcgdGhhdCB3ZSBoYXZlIGEgdmVyc2lvbiBvZiBnZXRQZWVyQ2VydGlmaWNhdGVcbiAgICAgIC8vIHRoYXQgc3VwcG9ydHMgcmVhZGluZyB0aGUgd2hvbGUgY2VydGlmaWNhdGUsIGVnIHRoaXMgY29tbWl0OlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8zNDVjNDBiNlxuICAgICAgY29uc3QgZ2V0UGVlckNlcnRpZmljYXRlRnVuY3Rpb24gPSByZXF1aXJlKCd0bHMnKS5UTFNTb2NrZXQucHJvdG90eXBlLmdldFBlZXJDZXJ0aWZpY2F0ZTtcbiAgICAgIGNvbnN0IG51bWJlck9mUGFyYW1ldGVycyA9IGdldFBlZXJDZXJ0aWZpY2F0ZUZ1bmN0aW9uLmxlbmd0aDtcbiAgICAgIHJldHVybiBudW1iZXJPZlBhcmFtZXRlcnMgPj0gMTtcbiAgICB9IGNhdGNoKCBlICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgdHJ1c3RfYWxsX2NlcnRpZmljYXRlczogKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBnZXRQZWVyQ2VydGlmaWNhdGVGdW5jdGlvbiA9IHJlcXVpcmUoJ3RscycpLlRMU1NvY2tldC5wcm90b3R5cGUuZ2V0UGVlckNlcnRpZmljYXRlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gaGFzRmVhdHVyZSggbmFtZSApIHtcbiAgcmV0dXJuIEZFQVRVUkVTW25hbWVdICYmIEZFQVRVUkVTW25hbWVdKCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhhc0ZlYXR1cmU7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IFJvdW5kUm9iaW5BcnJheSBmcm9tICcuL3JvdW5kLXJvYmluLWFycmF5JztcbmltcG9ydCB7bmV3RXJyb3IsIFBST1RPQ09MX0VSUk9SLCBTRVJWSUNFX1VOQVZBSUxBQkxFfSBmcm9tICcuLi9lcnJvcic7XG5pbXBvcnQgSW50ZWdlciwge2ludH0gZnJvbSAnLi4vaW50ZWdlcic7XG5cbmNvbnN0IFBST0NFRFVSRV9DQUxMID0gJ0NBTEwgZGJtcy5jbHVzdGVyLnJvdXRpbmcuZ2V0U2VydmVycyc7XG5jb25zdCBQUk9DRURVUkVfTk9UX0ZPVU5EX0NPREUgPSAnTmVvLkNsaWVudEVycm9yLlByb2NlZHVyZS5Qcm9jZWR1cmVOb3RGb3VuZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdldFNlcnZlcnNVdGlsIHtcblxuICBjYWxsR2V0U2VydmVycyhzZXNzaW9uLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgcmV0dXJuIHNlc3Npb24ucnVuKFBST0NFRFVSRV9DQUxMKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0LnJlY29yZHM7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaWYgKGVycm9yLmNvZGUgPT09IFBST0NFRFVSRV9OT1RfRk9VTkRfQ09ERSkge1xuICAgICAgICAvLyB0aHJvdyB3aGVuIGdldFNlcnZlcnMgcHJvY2VkdXJlIG5vdCBmb3VuZCBiZWNhdXNlIHRoaXMgaXMgY2xlYXJseSBhIGNvbmZpZ3VyYXRpb24gaXNzdWVcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ1NlcnZlciAnICsgcm91dGVyQWRkcmVzcyArICcgY291bGQgbm90IHBlcmZvcm0gcm91dGluZy4gJyArXG4gICAgICAgICAgJ01ha2Ugc3VyZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gYSBjYXVzYWwgY2x1c3RlcicsIFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIG5vdGhpbmcgd2hlbiBmYWlsZWQgdG8gY29ubmVjdCBiZWNhdXNlIGNvZGUgaGlnaGVyIGluIHRoZSBjYWxsc3RhY2sgaXMgc3RpbGwgYWJsZSB0byByZXRyeSB3aXRoIGFcbiAgICAgIC8vIGRpZmZlcmVudCBzZXNzaW9uIHRvd2FyZHMgYSBkaWZmZXJlbnQgcm91dGVyXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlVHRsKHJlY29yZCwgcm91dGVyQWRkcmVzcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBub3cgPSBpbnQoRGF0ZS5ub3coKSk7XG4gICAgICBjb25zdCBleHBpcmVzID0gcmVjb3JkLmdldCgndHRsJykubXVsdGlwbHkoMTAwMCkuYWRkKG5vdyk7XG4gICAgICAvLyBpZiB0aGUgc2VydmVyIHVzZXMgYSByZWFsbHkgYmlnIGV4cGlyZSB0aW1lIGxpa2UgTG9uZy5NQVhfVkFMVUUgdGhpcyBtYXkgaGF2ZSBvdmVyZmxvd2VkXG4gICAgICBpZiAoZXhwaXJlcy5sZXNzVGhhbihub3cpKSB7XG4gICAgICAgIHJldHVybiBJbnRlZ2VyLk1BWF9WQUxVRTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBleHBpcmVzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcihcbiAgICAgICAgJ1VuYWJsZSB0byBwYXJzZSBUVEwgZW50cnkgZnJvbSByb3V0ZXIgJyArIHJvdXRlckFkZHJlc3MgKyAnIGZyb20gcmVjb3JkOlxcbicgKyBKU09OLnN0cmluZ2lmeShyZWNvcmQpLFxuICAgICAgICBQUk9UT0NPTF9FUlJPUik7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTZXJ2ZXJzKHJlY29yZCwgcm91dGVyQWRkcmVzcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXJ2ZXJzID0gcmVjb3JkLmdldCgnc2VydmVycycpO1xuXG4gICAgICBjb25zdCByb3V0ZXJzID0gbmV3IFJvdW5kUm9iaW5BcnJheSgpO1xuICAgICAgY29uc3QgcmVhZGVycyA9IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICAgIGNvbnN0IHdyaXRlcnMgPSBuZXcgUm91bmRSb2JpbkFycmF5KCk7XG5cbiAgICAgIHNlcnZlcnMuZm9yRWFjaChzZXJ2ZXIgPT4ge1xuICAgICAgICBjb25zdCByb2xlID0gc2VydmVyWydyb2xlJ107XG4gICAgICAgIGNvbnN0IGFkZHJlc3NlcyA9IHNlcnZlclsnYWRkcmVzc2VzJ107XG5cbiAgICAgICAgaWYgKHJvbGUgPT09ICdST1VURScpIHtcbiAgICAgICAgICByb3V0ZXJzLnB1c2hBbGwoYWRkcmVzc2VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChyb2xlID09PSAnV1JJVEUnKSB7XG4gICAgICAgICAgd3JpdGVycy5wdXNoQWxsKGFkZHJlc3Nlcyk7XG4gICAgICAgIH0gZWxzZSBpZiAocm9sZSA9PT0gJ1JFQUQnKSB7XG4gICAgICAgICAgcmVhZGVycy5wdXNoQWxsKGFkZHJlc3Nlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ1Vua25vd24gc2VydmVyIHJvbGUgXCInICsgcm9sZSArICdcIicsIFBST1RPQ09MX0VSUk9SKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvdXRlcnM6IHJvdXRlcnMsXG4gICAgICAgIHJlYWRlcnM6IHJlYWRlcnMsXG4gICAgICAgIHdyaXRlcnM6IHdyaXRlcnNcbiAgICAgIH1cbiAgICB9IGNhdGNoIChpZ25vcmUpIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKFxuICAgICAgICAnVW5hYmxlIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgZnJvbSByb3V0ZXIgJyArIHJvdXRlckFkZHJlc3MgKyAnIGZyb20gcmVjb3JkOlxcbicgKyBKU09OLnN0cmluZ2lmeShyZWNvcmQpLFxuICAgICAgICBQUk9UT0NPTF9FUlJPUik7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB1dGY4IGZyb20gXCIuL3V0ZjhcIjtcbmltcG9ydCBJbnRlZ2VyLCB7aW50LCBpc0ludH0gZnJvbSBcIi4uL2ludGVnZXJcIjtcbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gXCIuLy4uL2Vycm9yXCI7XG5cbmNvbnN0IFRJTllfU1RSSU5HID0gMHg4MDtcbmNvbnN0IFRJTllfTElTVCA9IDB4OTA7XG5jb25zdCBUSU5ZX01BUCA9IDB4QTA7XG5jb25zdCBUSU5ZX1NUUlVDVCA9IDB4QjA7XG5jb25zdCBOVUxMID0gMHhDMDtcbmNvbnN0IEZMT0FUXzY0ID0gMHhDMTtcbmNvbnN0IEZBTFNFID0gMHhDMjtcbmNvbnN0IFRSVUUgPSAweEMzO1xuY29uc3QgSU5UXzggPSAweEM4O1xuY29uc3QgSU5UXzE2ID0gMHhDOTtcbmNvbnN0IElOVF8zMiA9IDB4Q0E7XG5jb25zdCBJTlRfNjQgPSAweENCO1xuY29uc3QgU1RSSU5HXzggPSAweEQwO1xuY29uc3QgU1RSSU5HXzE2ID0gMHhEMTtcbmNvbnN0IFNUUklOR18zMiA9IDB4RDI7XG5jb25zdCBMSVNUXzggPSAweEQ0O1xuY29uc3QgTElTVF8xNiA9IDB4RDU7XG5jb25zdCBMSVNUXzMyID0gMHhENjtcbmNvbnN0IE1BUF84ID0gMHhEODtcbmNvbnN0IE1BUF8xNiA9IDB4RDk7XG5jb25zdCBNQVBfMzIgPSAweERBO1xuY29uc3QgU1RSVUNUXzggPSAweERDO1xuY29uc3QgU1RSVUNUXzE2ID0gMHhERDtcblxuLyoqXG4gICogQSBTdHJ1Y3R1cmUgaGF2ZSBhIHNpZ25hdHVyZSBhbmQgZmllbGRzLlxuICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAqL1xuY2xhc3MgU3RydWN0dXJlIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKCBzaWduYXR1cmUsIGZpZWxkcyApIHtcbiAgICB0aGlzLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBmaWVsZFN0ciA9IFwiXCI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoaSA+IDApIHsgZmllbGRTdHIrPVwiLCBcIiB9XG4gICAgICBmaWVsZFN0ciArPSB0aGlzLmZpZWxkc1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIFwiU3RydWN0dXJlKFwiICsgdGhpcy5zaWduYXR1cmUgKyBcIiwgW1wiICsgdGhpcy5maWVsZHMgKyBcIl0pXCJcbiAgfVxufVxuXG4vKipcbiAgKiBDbGFzcyB0byBwYWNrXG4gICogQGFjY2VzcyBwcml2YXRlXG4gICovXG5jbGFzcyBQYWNrZXIge1xuICBjb25zdHJ1Y3RvciAoY2hhbm5lbCkge1xuICAgIHRoaXMuX2NoID0gY2hhbm5lbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcGFja2FibGUgZnVuY3Rpb24gb3V0IG9mIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKiBAcGFyYW0geCB0aGUgdmFsdWUgdG8gcGFja1xuICAgKiBAcGFyYW0gb25FcnJvciBjYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlbiB2YWx1ZSBjYW5ub3QgYmUgcGFja2VkXG4gICAqIEByZXR1cm5zIEZ1bmN0aW9uXG4gICAqL1xuICBwYWNrYWJsZSAoeCwgb25FcnJvcikge1xuICAgIGlmICh4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gKCkgPT4gdGhpcy5fY2gud3JpdGVVSW50OCggTlVMTCApO1xuICAgIH0gZWxzZSBpZiAoeCA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMuX2NoLndyaXRlVUludDgoIFRSVUUgKTtcbiAgICB9IGVsc2UgaWYgKHggPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gKCkgPT4gdGhpcy5fY2gud3JpdGVVSW50OCggRkFMU0UgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZih4KSA9PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gKCkgPT4gdGhpcy5wYWNrRmxvYXQoeCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YoeCkgPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuICgpID0+IHRoaXMucGFja1N0cmluZyh4LCBvbkVycm9yKTtcbiAgICB9IGVsc2UgaWYgKGlzSW50KHgpKSB7XG4gICAgICByZXR1cm4gKCkgPT4gdGhpcy5wYWNrSW50ZWdlciggeCApO1xuICAgIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLnBhY2tMaXN0SGVhZGVyKHgubGVuZ3RoLCBvbkVycm9yKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5wYWNrYWJsZSh4W2ldID09PSB1bmRlZmluZWQgPyBudWxsIDogeFtpXSwgb25FcnJvcikoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoeCBpbnN0YW5jZW9mIFN0cnVjdHVyZSkge1xuICAgICAgdmFyIHBhY2thYmxlRmllbGRzID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHguZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhY2thYmxlRmllbGRzW2ldID0gdGhpcy5wYWNrYWJsZSh4LmZpZWxkc1tpXSwgb25FcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gKCkgPT4gdGhpcy5wYWNrU3RydWN0KCB4LnNpZ25hdHVyZSwgcGFja2FibGVGaWVsZHMgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZih4KSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHgpO1xuXG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICh4W2tleXNbaV1dICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFja01hcEhlYWRlcihjb3VudCwgb25FcnJvcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGxldCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmICh4W2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5wYWNrU3RyaW5nKGtleSk7XG4gICAgICAgICAgICB0aGlzLnBhY2thYmxlKHhba2V5XSwgb25FcnJvcikoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgIG9uRXJyb3IobmV3RXJyb3IoXCJDYW5ub3QgcGFjayB0aGlzIHZhbHVlOiBcIiArIHgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoKSA9PiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhY2tzIGEgc3RydWN0XG4gICAqIEBwYXJhbSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSBvZiB0aGUgc3RydWN0XG4gICAqIEBwYXJhbSBwYWNrYWJsZUZpZWxkcyB0aGUgZmllbGRzIG9mIHRoZSBzdHJ1Y3QsIG1ha2Ugc3VyZSB5b3UgY2FsbCBgcGFja2FibGUgb24gYWxsIGZpZWxkc2BcbiAgICovXG4gIHBhY2tTdHJ1Y3QgKCBzaWduYXR1cmUsIHBhY2thYmxlRmllbGRzLCBvbkVycm9yKSB7XG4gICAgcGFja2FibGVGaWVsZHMgPSBwYWNrYWJsZUZpZWxkcyB8fCBbXTtcbiAgICB0aGlzLnBhY2tTdHJ1Y3RIZWFkZXIocGFja2FibGVGaWVsZHMubGVuZ3RoLCBzaWduYXR1cmUsIG9uRXJyb3IpO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwYWNrYWJsZUZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFja2FibGVGaWVsZHNbaV0oKTtcbiAgICB9XG4gIH1cbiAgcGFja0ludGVnZXIgKHgpIHtcbiAgICB2YXIgaGlnaCA9IHguaGlnaCxcbiAgICAgICAgbG93ICA9IHgubG93O1xuXG4gICAgaWYgKHguZ3JlYXRlclRoYW5PckVxdWFsKC0weDEwKSAmJiB4Lmxlc3NUaGFuKDB4ODApKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZUludDgobG93KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODApICYmIHgubGVzc1RoYW4oLTB4MTApKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF84KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlSW50OChsb3cpO1xuICAgIH1cbiAgICBlbHNlIGlmICh4LmdyZWF0ZXJUaGFuT3JFcXVhbCgtMHg4MDAwKSAmJiB4Lmxlc3NUaGFuKDB4ODAwMCkpIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzE2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlSW50MTYobG93KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoeC5ncmVhdGVyVGhhbk9yRXF1YWwoLTB4ODAwMDAwMDApICYmIHgubGVzc1RoYW4oMHg4MDAwMDAwMCkpIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoSU5UXzMyKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlSW50MzIobG93KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KElOVF82NCk7XG4gICAgICB0aGlzLl9jaC53cml0ZUludDMyKGhpZ2gpO1xuICAgICAgdGhpcy5fY2gud3JpdGVJbnQzMihsb3cpO1xuICAgIH1cbiAgfVxuICBwYWNrRmxvYXQoeCkge1xuICAgIHRoaXMuX2NoLndyaXRlVUludDgoRkxPQVRfNjQpO1xuICAgIHRoaXMuX2NoLndyaXRlRmxvYXQ2NCh4KTtcbiAgfVxuXG4gIHBhY2tTdHJpbmcgKHgsIG9uRXJyb3IpIHtcbiAgICBsZXQgYnl0ZXMgPSB1dGY4LmVuY29kZSh4KTtcbiAgICBsZXQgc2l6ZSA9IGJ5dGVzLmxlbmd0aDtcbiAgICBpZiAoc2l6ZSA8IDB4MTApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoVElOWV9TVFJJTkcgfCBzaXplKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUklOR184KVxuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlQnl0ZXMoYnl0ZXMpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoU1RSSU5HXzE2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZS8yNTY+PjApO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplJTI1Nik7XG4gICAgICB0aGlzLl9jaC53cml0ZUJ5dGVzKGJ5dGVzKTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwMDAwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJJTkdfMzIpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZS8xNjc3NzIxNj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvNjU1MzY+PjApJTI1Nik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzI1Nj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVCeXRlcyhieXRlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uRXJyb3IobmV3RXJyb3IoXCJVVEYtOCBzdHJpbmdzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgIH1cbiAgfVxuXG4gIHBhY2tMaXN0SGVhZGVyIChzaXplLCBvbkVycm9yKSB7XG4gICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfTElTVCB8IHNpemUpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KExJU1RfOClcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChMSVNUXzE2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvMjU2Pj4wKSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplJTI1Nik7XG4gICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMDAwMDApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTElTVF8zMik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzE2Nzc3MjE2Pj4wKSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZS82NTUzNj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvMjU2Pj4wKSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplJTI1Nik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uRXJyb3IobmV3RXJyb3IoXCJMaXN0cyBvZiBzaXplIFwiICsgc2l6ZSArIFwiIGFyZSBub3Qgc3VwcG9ydGVkXCIpKTtcbiAgICB9XG4gIH1cblxuICBwYWNrTWFwSGVhZGVyIChzaXplLCBvbkVycm9yKSB7XG4gICAgaWYgKHNpemUgPCAweDEwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFRJTllfTUFQIHwgc2l6ZSk7XG4gICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDApIHtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoTUFQXzgpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplKTtcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAweDEwMDAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF8xNik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUvMjU2Pj4wKTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSUyNTYpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwMDAwMDAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KE1BUF8zMik7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KChzaXplLzE2Nzc3MjE2Pj4wKSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OCgoc2l6ZS82NTUzNj4+MCklMjU2KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoKHNpemUvMjU2Pj4wKSUyNTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplJTI1Nik7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9uRXJyb3IobmV3RXJyb3IoXCJNYXBzIG9mIHNpemUgXCIgKyBzaXplICsgXCIgYXJlIG5vdCBzdXBwb3J0ZWRcIikpO1xuICAgIH1cbiAgfVxuXG4gIHBhY2tTdHJ1Y3RIZWFkZXIgKHNpemUsIHNpZ25hdHVyZSwgb25FcnJvcikge1xuICAgIGlmIChzaXplIDwgMHgxMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChUSU5ZX1NUUlVDVCB8IHNpemUpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaWduYXR1cmUpO1xuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDB4MTAwKSB7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KFNUUlVDVF84KTtcbiAgICAgIHRoaXMuX2NoLndyaXRlVUludDgoc2l6ZSk7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpZ25hdHVyZSk7XG4gICAgfSBlbHNlIGlmIChzaXplIDwgMHgxMDAwMCkge1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChTVFJVQ1RfMTYpO1xuICAgICAgdGhpcy5fY2gud3JpdGVVSW50OChzaXplLzI1Nj4+MCk7XG4gICAgICB0aGlzLl9jaC53cml0ZVVJbnQ4KHNpemUlMjU2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb25FcnJvcihuZXdFcnJvcihcIlN0cnVjdHVyZXMgb2Ygc2l6ZSBcIiArIHNpemUgKyBcIiBhcmUgbm90IHN1cHBvcnRlZFwiKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICAqIENsYXNzIHRvIHVucGFja1xuICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAqL1xuY2xhc3MgVW5wYWNrZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgLy8gSGlnaGVyIGxldmVsIGxheWVycyBjYW4gc3BlY2lmeSBob3cgdG8gbWFwIHN0cnVjdHMgdG8gaGlnaGVyLWxldmVsIG9iamVjdHMuXG4gICAgLy8gSWYgd2UgcmVjaWV2ZSBhIHN0cnVjdCB0aGF0IGhhcyBhIHNpZ25hdHVyZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBtYXBwZXIsXG4gICAgLy8gd2Ugc2ltcGx5IHJldHVybiBhIFN0cnVjdHVyZSBvYmplY3QuXG4gICAgdGhpcy5zdHJ1Y3RNYXBwZXJzID0ge307XG4gIH1cblxuICB1bnBhY2tMaXN0IChzaXplLCBidWZmZXIpIHtcbiAgICBsZXQgdmFsdWUgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YWx1ZS5wdXNoKCB0aGlzLnVucGFjayggYnVmZmVyICkgKTtcbiAgICB9IFxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHVucGFja01hcCAoc2l6ZSwgYnVmZmVyKSB7XG4gICAgbGV0IHZhbHVlID0ge307XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgbGV0IGtleSA9IHRoaXMudW5wYWNrKGJ1ZmZlcik7XG4gICAgICB2YWx1ZVtrZXldID0gdGhpcy51bnBhY2soYnVmZmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgdW5wYWNrU3RydWN0IChzaXplLCBidWZmZXIpIHtcbiAgICBsZXQgc2lnbmF0dXJlID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGxldCBtYXBwZXIgPSB0aGlzLnN0cnVjdE1hcHBlcnNbc2lnbmF0dXJlXTtcbiAgICBpZiggbWFwcGVyICkge1xuICAgICAgcmV0dXJuIG1hcHBlciggdGhpcywgYnVmZmVyICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB2YWx1ZSA9IG5ldyBTdHJ1Y3R1cmUoc2lnbmF0dXJlLCBbXSk7XG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHZhbHVlLmZpZWxkcy5wdXNoKHRoaXMudW5wYWNrKGJ1ZmZlcikpO1xuICAgICAgfSBcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICB1bnBhY2sgKCBidWZmZXIgKSB7XG4gICAgbGV0IG1hcmtlciA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBpZiAobWFya2VyID09IE5VTEwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IFRSVUUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IEZBTFNFKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gRkxPQVRfNjQpIHtcbiAgICAgIHJldHVybiBidWZmZXIucmVhZEZsb2F0NjQoKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA+PSAwICYmIG1hcmtlciA8IDEyOCkge1xuICAgICAgcmV0dXJuIGludChtYXJrZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID49IDI0MCAmJiBtYXJrZXIgPCAyNTYpIHtcbiAgICAgIHJldHVybiBpbnQobWFya2VyIC0gMjU2KTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBJTlRfOCkge1xuICAgICAgcmV0dXJuIGludChidWZmZXIucmVhZEludDgoKSk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzE2KSB7XG4gICAgICByZXR1cm4gaW50KGJ1ZmZlci5yZWFkSW50MTYoKSk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzMyKSB7XG4gICAgICBsZXQgYiA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgIHJldHVybiBpbnQoYik7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gSU5UXzY0KSB7XG4gICAgICBsZXQgaGlnaCA9IGJ1ZmZlci5yZWFkSW50MzIoKTtcbiAgICAgIGxldCBsb3cgID0gYnVmZmVyLnJlYWRJbnQzMigpO1xuICAgICAgcmV0dXJuIG5ldyBJbnRlZ2VyKCBsb3csIGhpZ2ggKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBTVFJJTkdfOCkge1xuICAgICAgcmV0dXJuIHV0ZjguZGVjb2RlKCBidWZmZXIsIGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gU1RSSU5HXzE2KSB7XG4gICAgICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgYnVmZmVyLnJlYWRVSW50MTYoKSApO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUklOR18zMikge1xuICAgICAgcmV0dXJuIHV0ZjguZGVjb2RlKCBidWZmZXIsIGJ1ZmZlci5yZWFkVUludDMyKCkgKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzgpIHtcbiAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IExJU1RfMTYpIHtcbiAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBMSVNUXzMyKSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tMaXN0KGJ1ZmZlci5yZWFkVUludDMyKCksIGJ1ZmZlcik7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzgpIHtcbiAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChidWZmZXIucmVhZFVJbnQ4KCksIGJ1ZmZlcik7XG4gICAgfSBlbHNlIGlmIChtYXJrZXIgPT0gTUFQXzE2KSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAoYnVmZmVyLnJlYWRVSW50MTYoKSwgYnVmZmVyKTtcbiAgICB9IGVsc2UgaWYgKG1hcmtlciA9PSBNQVBfMzIpIHtcbiAgICAgIHJldHVybiB0aGlzLnVucGFja01hcChidWZmZXIucmVhZFVJbnQzMigpLCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUlVDVF84KSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QoYnVmZmVyLnJlYWRVSW50OCgpLCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VyID09IFNUUlVDVF8xNikge1xuICAgICAgcmV0dXJuIHRoaXMudW5wYWNrU3RydWN0KGJ1ZmZlci5yZWFkVUludDE2KCksIGJ1ZmZlcik7XG4gICAgfVxuICAgIGxldCBtYXJrZXJIaWdoID0gbWFya2VyICYgMHhGMDtcbiAgICBsZXQgbWFya2VyTG93ID0gbWFya2VyICYgMHgwRjtcbiAgICBpZiAobWFya2VySGlnaCA9PSAweDgwKSB7XG4gICAgICByZXR1cm4gdXRmOC5kZWNvZGUoIGJ1ZmZlciwgbWFya2VyTG93ICk7XG4gICAgfSBlbHNlIGlmIChtYXJrZXJIaWdoID09IDB4OTApIHtcbiAgICAgIHJldHVybiB0aGlzLnVucGFja0xpc3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEEwKSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tNYXAobWFya2VyTG93LCBidWZmZXIpO1xuICAgIH0gZWxzZSBpZiAobWFya2VySGlnaCA9PSAweEIwKSB7XG4gICAgICByZXR1cm4gdGhpcy51bnBhY2tTdHJ1Y3QobWFya2VyTG93LCBidWZmZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcihcIlVua25vd24gcGFja2VkIHZhbHVlIHdpdGggbWFya2VyIFwiICsgbWFya2VyLnRvU3RyaW5nKDE2KSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7XG4gIFBhY2tlcixcbiAgVW5wYWNrZXIsXG4gIFN0cnVjdHVyZVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmNsYXNzIFBvb2wge1xuICAvKipcbiAgICogQHBhcmFtIGNyZWF0ZSAgYW4gYWxsb2NhdGlvbiBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgYSBuZXcgcmVzb3VyY2UuIEl0J3MgZ2l2ZW5cbiAgICogICAgICAgICAgICAgICAgYSBzaW5nbGUgYXJndW1lbnQsIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHJldHVybiB0aGUgcmVzb3VyY2UgdG9cbiAgICogICAgICAgICAgICAgICAgdGhlIHBvb2wgaWYgaW52b2tlZCwgd2hpY2ggaXMgbWVhbnQgdG8gYmUgY2FsbGVkIG9uIC5kaXNwb3NlXG4gICAqICAgICAgICAgICAgICAgIG9yIC5jbG9zZSBvciB3aGF0ZXZlciBtZWNoYW5pc20gdGhlIHJlc291cmNlIHVzZXMgdG8gZmluYWxpemUuXG4gICAqIEBwYXJhbSBkZXN0cm95IGNhbGxlZCB3aXRoIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGV2aWN0ZWQgZnJvbSB0aGlzIHBvb2xcbiAgICogQHBhcmFtIHZhbGlkYXRlIGNhbGxlZCBhdCB2YXJpb3VzIHRpbWVzIChsaWtlIHdoZW4gYW4gaW5zdGFuY2UgaXMgYWNxdWlyZWQgYW5kXG4gICAqICAgICAgICAgICAgICAgICB3aGVuIGl0IGlzIHJldHVybmVkKS4gSWYgdGhpcyByZXR1cm5zIGZhbHNlLCB0aGUgcmVzb3VyY2Ugd2lsbFxuICAgKiAgICAgICAgICAgICAgICAgYmUgZXZpY3RlZFxuICAgKiBAcGFyYW0gbWF4SWRsZSB0aGUgbWF4IG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYWxsb3dlZCBpZGxlIGluIHRoZSBwb29sIGF0XG4gICAqICAgICAgICAgICAgICAgIGFueSB0aW1lLiBJZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgcmVzb3VyY2VzIHdpbGwgYmUgZXZpY3RlZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNyZWF0ZSwgZGVzdHJveT0oKCk9PnRydWUpLCB2YWxpZGF0ZT0oKCk9PnRydWUpLCBtYXhJZGxlPTUwKSB7XG4gICAgdGhpcy5fY3JlYXRlID0gY3JlYXRlO1xuICAgIHRoaXMuX2Rlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuX3ZhbGlkYXRlID0gdmFsaWRhdGU7XG4gICAgdGhpcy5fbWF4SWRsZSA9IG1heElkbGU7XG4gICAgdGhpcy5fcG9vbHMgPSB7fTtcbiAgICB0aGlzLl9yZWxlYXNlID0gdGhpcy5fcmVsZWFzZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgYWNxdWlyZShrZXkpIHtcbiAgICBsZXQgcmVzb3VyY2U7XG4gICAgbGV0IHBvb2wgPSB0aGlzLl9wb29sc1trZXldO1xuICAgIGlmICghcG9vbCkge1xuICAgICAgcG9vbCA9IFtdO1xuICAgICAgdGhpcy5fcG9vbHNba2V5XSA9IHBvb2w7XG4gICAgfVxuICAgIHdoaWxlIChwb29sLmxlbmd0aCkge1xuICAgICAgcmVzb3VyY2UgPSBwb29sLnBvcCgpO1xuXG4gICAgICBpZiAodGhpcy5fdmFsaWRhdGUocmVzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiByZXNvdXJjZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kocmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9jcmVhdGUoa2V5LCB0aGlzLl9yZWxlYXNlKTtcbiAgfVxuXG4gIHB1cmdlKGtleSkge1xuICAgIGxldCByZXNvdXJjZTtcbiAgICBsZXQgcG9vbCA9IHRoaXMuX3Bvb2xzW2tleV0gfHwgW107XG4gICAgd2hpbGUgKHBvb2wubGVuZ3RoKSB7XG4gICAgICByZXNvdXJjZSA9IHBvb2wucG9wKCk7XG4gICAgICB0aGlzLl9kZXN0cm95KHJlc291cmNlKVxuICAgIH1cbiAgICBkZWxldGUgdGhpcy5fcG9vbHNba2V5XVxuICB9XG5cbiAgcHVyZ2VBbGwoKSB7XG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3Bvb2xzLmtleXMpIHtcbiAgICAgIGlmICh0aGlzLl9wb29scy5oYXNPd25Qcm9wZXJ0eWtleSkge1xuICAgICAgICB0aGlzLnB1cmdlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzKGtleSkge1xuICAgIHJldHVybiAoa2V5IGluIHRoaXMuX3Bvb2xzKTtcbiAgfVxuXG4gIF9yZWxlYXNlKGtleSwgcmVzb3VyY2UpIHtcbiAgICBsZXQgcG9vbCA9IHRoaXMuX3Bvb2xzW2tleV07XG4gICAgaWYgKCFwb29sKSB7XG4gICAgICAvL2tleSBoYXMgYmVlbiBwdXJnZWQsIGRvbid0IHB1dCBpdCBiYWNrXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmKCBwb29sLmxlbmd0aCA+PSB0aGlzLl9tYXhJZGxlIHx8ICF0aGlzLl92YWxpZGF0ZShyZXNvdXJjZSkgKSB7XG4gICAgICB0aGlzLl9kZXN0cm95KHJlc291cmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9vbC5wdXNoKHJlc291cmNlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUG9vbFxuXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IEdldFNlcnZlcnNVdGlsIGZyb20gXCIuL2dldC1zZXJ2ZXJzLXV0aWxcIjtcbmltcG9ydCBSb3V0aW5nVGFibGUgZnJvbSBcIi4vcm91dGluZy10YWJsZVwiO1xuaW1wb3J0IHtuZXdFcnJvciwgUFJPVE9DT0xfRVJST1J9IGZyb20gXCIuLi9lcnJvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWRpc2NvdmVyeSB7XG5cbiAgY29uc3RydWN0b3IoZ2V0U2VydmVyc1V0aWwpIHtcbiAgICB0aGlzLl9nZXRTZXJ2ZXJzVXRpbCA9IGdldFNlcnZlcnNVdGlsIHx8IG5ldyBHZXRTZXJ2ZXJzVXRpbCgpO1xuICB9XG5cbiAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIoc2Vzc2lvbiwgcm91dGVyQWRkcmVzcykge1xuICAgIHJldHVybiB0aGlzLl9nZXRTZXJ2ZXJzVXRpbC5jYWxsR2V0U2VydmVycyhzZXNzaW9uLCByb3V0ZXJBZGRyZXNzKS50aGVuKHJlY29yZHMgPT4ge1xuICAgICAgaWYgKHJlY29yZHMgPT09IG51bGwpIHtcbiAgICAgICAgLy8gY29ubmVjdGlvbiBlcnJvciBoYXBwZW5lZCwgdW5hYmxlIHRvIHJldHJpZXZlIHJvdXRpbmcgdGFibGUgZnJvbSB0aGlzIHJvdXRlciwgbmV4dCBvbmUgc2hvdWxkIGJlIHF1ZXJpZWRcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICB0aHJvdyBuZXdFcnJvcignSWxsZWdhbCByZXNwb25zZSBmcm9tIHJvdXRlciBcIicgKyByb3V0ZXJBZGRyZXNzICsgJ1wiLiAnICtcbiAgICAgICAgICAnUmVjZWl2ZWQgJyArIHJlY29yZHMubGVuZ3RoICsgJyByZWNvcmRzIGJ1dCBleHBlY3RlZCBvbmx5IG9uZS5cXG4nICsgSlNPTi5zdHJpbmdpZnkocmVjb3JkcyksXG4gICAgICAgICAgUFJPVE9DT0xfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZWNvcmQgPSByZWNvcmRzWzBdO1xuXG4gICAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9IHRoaXMuX2dldFNlcnZlcnNVdGlsLnBhcnNlVHRsKHJlY29yZCwgcm91dGVyQWRkcmVzcyk7XG4gICAgICBjb25zdCB7cm91dGVycywgcmVhZGVycywgd3JpdGVyc30gPSB0aGlzLl9nZXRTZXJ2ZXJzVXRpbC5wYXJzZVNlcnZlcnMocmVjb3JkLCByb3V0ZXJBZGRyZXNzKTtcblxuICAgICAgUmVkaXNjb3ZlcnkuX2Fzc2VydE5vbkVtcHR5KHJvdXRlcnMsICdyb3V0ZXJzJywgcm91dGVyQWRkcmVzcyk7XG4gICAgICBSZWRpc2NvdmVyeS5fYXNzZXJ0Tm9uRW1wdHkocmVhZGVycywgJ3JlYWRlcnMnLCByb3V0ZXJBZGRyZXNzKTtcbiAgICAgIC8vIGNhc2Ugd2l0aCBubyB3cml0ZXJzIGlzIHByb2Nlc3NlZCBoaWdoZXIgaW4gdGhlIHByb21pc2UgY2hhaW4gYmVjYXVzZSBvbmx5IFJvdXRpbmdEcml2ZXIga25vd3NcbiAgICAgIC8vIGhvdyB0byBkZWFsIHdpdGggc3VjaCB0YWJsZSBhbmQgaG93IHRvIHRyZWF0IHJvdXRlciB0aGF0IHJldHVybmVkIHN1Y2ggdGFibGVcblxuICAgICAgcmV0dXJuIG5ldyBSb3V0aW5nVGFibGUocm91dGVycywgcmVhZGVycywgd3JpdGVycywgZXhwaXJhdGlvblRpbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9hc3NlcnROb25FbXB0eShzZXJ2ZXJzUm91bmRSb2JpbkFycmF5LCBzZXJ2ZXJzTmFtZSwgcm91dGVyQWRkcmVzcykge1xuICAgIGlmIChzZXJ2ZXJzUm91bmRSb2JpbkFycmF5LmlzRW1wdHkoKSkge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoJ1JlY2VpdmVkIG5vICcgKyBzZXJ2ZXJzTmFtZSArICcgZnJvbSByb3V0ZXIgJyArIHJvdXRlckFkZHJlc3MsIFBST1RPQ09MX0VSUk9SKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEFuIGFycmF5IHRoYXQgbGV0cyB5b3UgaG9wIHRocm91Z2ggdGhlIGVsZW1lbnRzIGVuZGxlc3NseS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91bmRSb2JpbkFycmF5IHtcblxuICBjb25zdHJ1Y3RvcihpdGVtcykge1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMgfHwgW107XG4gICAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9vZmZzZXQgJSB0aGlzLnNpemUoKTtcbiAgICB0aGlzLl9vZmZzZXQrKztcbiAgICByZXR1cm4gdGhpcy5faXRlbXNbaW5kZXhdO1xuICB9XG5cbiAgcHVzaEFsbChlbGVtcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShlbGVtcykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5IGV4cGVjdGVkIGJ1dCBnb3Q6ICcgKyBlbGVtcyk7XG4gICAgfVxuXG4gICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcy5faXRlbXMsIGVsZW1zKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aDtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG5cbiAgcmVtb3ZlKGl0ZW0pIHtcbiAgICB0aGlzLl9pdGVtcyA9IHRoaXMuX2l0ZW1zLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQgIT09IGl0ZW0pO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7aW50fSBmcm9tIFwiLi4vaW50ZWdlclwiO1xuaW1wb3J0IFJvdW5kUm9iaW5BcnJheSBmcm9tIFwiLi9yb3VuZC1yb2Jpbi1hcnJheVwiO1xuXG5jb25zdCBNSU5fUk9VVEVSUyA9IDE7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvdXRpbmdUYWJsZSB7XG5cbiAgY29uc3RydWN0b3Iocm91dGVycywgcmVhZGVycywgd3JpdGVycywgZXhwaXJhdGlvblRpbWUpIHtcbiAgICB0aGlzLnJvdXRlcnMgPSByb3V0ZXJzIHx8IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICB0aGlzLnJlYWRlcnMgPSByZWFkZXJzIHx8IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICB0aGlzLndyaXRlcnMgPSB3cml0ZXJzIHx8IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICB0aGlzLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWUgfHwgaW50KDApO1xuICB9XG5cbiAgZm9yZ2V0KGFkZHJlc3MpIHtcbiAgICAvLyBEb24ndCByZW1vdmUgaXQgZnJvbSB0aGUgc2V0IG9mIHJvdXRlcnMsIHNpbmNlIHRoYXQgbWlnaHQgbWVhbiB3ZSBsb3NlIG91ciBhYmlsaXR5IHRvIHJlLWRpc2NvdmVyLFxuICAgIC8vIGp1c3QgcmVtb3ZlIGl0IGZyb20gdGhlIHNldCBvZiByZWFkZXJzIGFuZCB3cml0ZXJzLCBzbyB0aGF0IHdlIGRvbid0IHVzZSBpdCBmb3IgYWN0dWFsIHdvcmsgd2l0aG91dFxuICAgIC8vIHBlcmZvcm1pbmcgZGlzY292ZXJ5IGZpcnN0LlxuICAgIHRoaXMucmVhZGVycy5yZW1vdmUoYWRkcmVzcyk7XG4gICAgdGhpcy53cml0ZXJzLnJlbW92ZShhZGRyZXNzKTtcbiAgfVxuXG4gIGZvcmdldFJvdXRlcihhZGRyZXNzKSB7XG4gICAgdGhpcy5yb3V0ZXJzLnJlbW92ZShhZGRyZXNzKTtcbiAgfVxuXG4gIGZvcmdldFdyaXRlcihhZGRyZXNzKSB7XG4gICAgdGhpcy53cml0ZXJzLnJlbW92ZShhZGRyZXNzKTtcbiAgfVxuXG4gIHNlcnZlcnNEaWZmKG90aGVyUm91dGluZ1RhYmxlKSB7XG4gICAgY29uc3Qgb2xkU2VydmVycyA9IG5ldyBTZXQodGhpcy5fYWxsU2VydmVycygpKTtcbiAgICBjb25zdCBuZXdTZXJ2ZXJzID0gb3RoZXJSb3V0aW5nVGFibGUuX2FsbFNlcnZlcnMoKTtcbiAgICBuZXdTZXJ2ZXJzLmZvckVhY2gobmV3U2VydmVyID0+IG9sZFNlcnZlcnMuZGVsZXRlKG5ld1NlcnZlcikpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG9sZFNlcnZlcnMpO1xuICB9XG5cbiAgaXNTdGFsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBpcmF0aW9uVGltZS5sZXNzVGhhbihEYXRlLm5vdygpKSB8fFxuICAgICAgdGhpcy5yb3V0ZXJzLnNpemUoKSA8PSBNSU5fUk9VVEVSUyB8fFxuICAgICAgdGhpcy5yZWFkZXJzLmlzRW1wdHkoKSB8fFxuICAgICAgdGhpcy53cml0ZXJzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIF9hbGxTZXJ2ZXJzKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5yb3V0ZXJzLnRvQXJyYXkoKSwgLi4udGhpcy5yZWFkZXJzLnRvQXJyYXkoKSwgLi4udGhpcy53cml0ZXJzLnRvQXJyYXkoKV07XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgUmVjb3JkIGZyb20gXCIuLi9yZWNvcmRcIjtcblxuLyoqXG4gKiBIYW5kbGVzIGEgUlVOL1BVTExfQUxMLCBvciBSVU4vRElTQ0FSRF9BTEwgcmVxdWVzdHMsIG1hcHMgdGhlIHJlc3BvbnNlc1xuICogaW4gYSB3YXkgdGhhdCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgY2FuIHNlZSB0aGVzZSBhcyBhIGNsZWFuIFN0cmVhbVxuICogb2YgcmVjb3Jkcy5cbiAqIFRoaXMgY2xhc3Mgd2lsbCBxdWV1ZSB1cCBpbmNvbWluZyBtZXNzYWdlcyB1bnRpbCBhIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXJcbiAqIGZvciB0aGUgaW5jb21pbmcgc3RyZWFtIGlzIHJlZ2lzdGVyZWQuIFRodXMsIHdlIGtlZXAgZmllbGRzIGFyb3VuZFxuICogZm9yIHRyYWNraW5nIGhlYWQvcmVjb3Jkcy90YWlsLiBUaGVzZSBhcmUgb25seSB1c2VkIGlmIHRoZXJlIGlzIG5vXG4gKiBvYnNlcnZlciByZWdpc3RlcmVkLlxuICogQGFjY2VzcyBwcml2YXRlXG4gKi9cbmNsYXNzIFN0cmVhbU9ic2VydmVyIHtcbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gZXJyb3JUcmFuc2Zvcm1lciBvcHRpb25hbCBjYWxsYmFjayB0byBiZSB1c2VkIGZvciBhZGRpbmcgYWRkaXRpb25hbCBsb2dpYyBvbiBlcnJvclxuICAgKi9cbiAgY29uc3RydWN0b3IoZXJyb3JUcmFuc2Zvcm1lciA9IChlcnIpID0+IHtyZXR1cm4gZXJyfSkge1xuICAgIHRoaXMuX2ZpZWxkS2V5cyA9IG51bGw7XG4gICAgdGhpcy5fZmllbGRMb29rdXAgPSBudWxsO1xuICAgIHRoaXMuX3F1ZXVlZFJlY29yZHMgPSBbXTtcbiAgICB0aGlzLl90YWlsID0gbnVsbDtcbiAgICB0aGlzLl9lcnJvciA9IG51bGw7XG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gICAgdGhpcy5fZXJyb3JUcmFuc2Zvcm1lciA9IGVycm9yVHJhbnNmb3JtZXI7XG4gIH1cblxuICAvKipcbiAgICogV2lsbCBiZSBjYWxsZWQgb24gZXZlcnkgcmVjb3JkIHRoYXQgY29tZXMgaW4gYW5kIHRyYW5zZm9ybSBhIHJhdyByZWNvcmRcbiAgICogdG8gYSBPYmplY3QuIElmIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgaXMgcHJlc2VudCwgcGFzcyB0cmFuc2Zvcm1lZCByZWNvcmRcbiAgICogdG8gaXQncyBvbk5leHQgbWV0aG9kLCBvdGhlcndpc2UsIHB1c2ggdG8gcmVjb3JkIHF1ZS5cbiAgICogQHBhcmFtIHtBcnJheX0gcmF3UmVjb3JkIC0gQW4gYXJyYXkgd2l0aCB0aGUgcmF3IHJlY29yZFxuICAgKi9cbiAgb25OZXh0KHJhd1JlY29yZCkge1xuICAgIGxldCByZWNvcmQgPSBuZXcgUmVjb3JkKHRoaXMuX2ZpZWxkS2V5cywgcmF3UmVjb3JkLCB0aGlzLl9maWVsZExvb2t1cCk7XG4gICAgaWYoIHRoaXMuX29ic2VydmVyICkge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIub25OZXh0KCByZWNvcmQgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcXVldWVkUmVjb3Jkcy5wdXNoKCByZWNvcmQgKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbXBsZXRlZChtZXRhKSB7XG4gICAgaWYoIHRoaXMuX2ZpZWxkS2V5cyA9PT0gbnVsbCApIHtcbiAgICAgIC8vIFN0cmVhbSBoZWFkZXIsIGJ1aWxkIGEgbmFtZS0+aW5kZXggZmllbGQgbG9va3VwIHRhYmxlXG4gICAgICAvLyB0byBiZSB1c2VkIGJ5IHJlY29yZHMuIFRoaXMgaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1ha2UgaXRcbiAgICAgIC8vIGZhc3RlciB0byBsb29rIHVwIGZpZWxkcyBpbiBhIHJlY29yZCBieSBuYW1lLCByYXRoZXIgdGhhbiBieSBpbmRleC5cbiAgICAgIC8vIFNpbmNlIHRoZSByZWNvcmRzIHdlIGdldCBiYWNrIHZpYSBCb2x0IGFyZSBqdXN0IGFycmF5cyBvZiB2YWx1ZXMuXG4gICAgICB0aGlzLl9maWVsZEtleXMgPSBbXTtcbiAgICAgIHRoaXMuX2ZpZWxkTG9va3VwID0ge307XG4gICAgICBpZiggbWV0YS5maWVsZHMgJiYgbWV0YS5maWVsZHMubGVuZ3RoID4gMCApIHtcbiAgICAgICAgdGhpcy5fZmllbGRLZXlzID0gbWV0YS5maWVsZHM7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0YS5maWVsZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0aGlzLl9maWVsZExvb2t1cFttZXRhLmZpZWxkc1tpXV0gPSBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEVuZCBvZiBzdHJlYW1cbiAgICAgIGlmKCB0aGlzLl9vYnNlcnZlciApIHtcbiAgICAgICAgdGhpcy5fb2JzZXJ2ZXIub25Db21wbGV0ZWQoIG1ldGEgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3RhaWwgPSBtZXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVDb25uZWN0aW9uKGNvbm4pIHtcbiAgICB0aGlzLl9jb25uID0gY29ubjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaWxsIGJlIGNhbGxlZCBvbiBlcnJvcnMuXG4gICAqIElmIHVzZXItcHJvdmlkZWQgb2JzZXJ2ZXIgaXMgcHJlc2VudCwgcGFzcyB0aGUgZXJyb3JcbiAgICogdG8gaXQncyBvbkVycm9yIG1ldGhvZCwgb3RoZXJ3aXNlIHNldCBpbnN0YW5jZSB2YXJpYWJsZSBfZXJyb3IuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBlcnJvciAtIEFuIGVycm9yIG9iamVjdFxuICAgKi9cbiAgb25FcnJvcihlcnJvcikge1xuICAgIGxldCB0cmFuc2Zvcm1lZEVycm9yID0gdGhpcy5fZXJyb3JUcmFuc2Zvcm1lcihlcnJvciwgdGhpcy5fY29ubik7XG4gICAgaWYodGhpcy5faGFzRmFpbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2hhc0ZhaWxlZCA9IHRydWU7XG4gICAgaWYoIHRoaXMuX29ic2VydmVyICkge1xuICAgICAgaWYoIHRoaXMuX29ic2VydmVyLm9uRXJyb3IgKSB7XG4gICAgICAgIHRoaXMuX29ic2VydmVyLm9uRXJyb3IoIHRyYW5zZm9ybWVkRXJyb3IgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCB0cmFuc2Zvcm1lZEVycm9yICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Vycm9yID0gdHJhbnNmb3JtZWRFcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIGV2ZW50cyB3aXRoIHByb3ZpZGVkIG9ic2VydmVyLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JzZXJ2ZXIgLSBPYnNlcnZlciBvYmplY3RcbiAgICogQHBhcmFtIHtmdW5jdGlvbihyZWNvcmQ6IE9iamVjdCl9IG9ic2VydmVyLm9uTmV4dCAtIEhhbmRsZSByZWNvcmRzLCBvbmUgYnkgb25lLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1ldGFkYXRhOiBPYmplY3QpfSBvYnNlcnZlci5vbkNvbXBsZXRlIC0gSGFuZGxlIHN0cmVhbSB0YWlsLCB0aGUgbWV0YWRhdGEuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IE9iamVjdCl9IG9ic2VydmVyLm9uRXJyb3IgLSBIYW5kbGUgZXJyb3JzLlxuICAgKi9cbiAgc3Vic2NyaWJlKCBvYnNlcnZlciApIHtcbiAgICBpZiggdGhpcy5fZXJyb3IgKSB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHRoaXMuX2Vycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYoIHRoaXMuX3F1ZXVlZFJlY29yZHMubGVuZ3RoID4gMCApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3F1ZXVlZFJlY29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb2JzZXJ2ZXIub25OZXh0KCBfcXVldWVkUmVjb3Jkc1tpXSApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiggdGhpcy5fdGFpbCApIHtcbiAgICAgIG9ic2VydmVyLm9uQ29tcGxldGVkKCB0aGlzLl90YWlsICk7XG4gICAgfVxuICAgIHRoaXMuX29ic2VydmVyID0gb2JzZXJ2ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3RyZWFtT2JzZXJ2ZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtuZXdFcnJvciwgU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VTU0lPTl9FWFBJUkVEfSBmcm9tICcuLi9lcnJvcic7XG5cbmNvbnN0IERFRkFVTFRfTUFYX1JFVFJZX1RJTUVfTVMgPSAzMCAqIDEwMDA7IC8vIDMwIHNlY29uZHNcbmNvbnN0IERFRkFVTFRfSU5JVElBTF9SRVRSWV9ERUxBWV9NUyA9IDEwMDA7IC8vIDEgc2Vjb25kc1xuY29uc3QgREVGQVVMVF9SRVRSWV9ERUxBWV9NVUxUSVBMSUVSID0gMi4wO1xuY29uc3QgREVGQVVMVF9SRVRSWV9ERUxBWV9KSVRURVJfRkFDVE9SID0gMC4yO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmFuc2FjdGlvbkV4ZWN1dG9yIHtcblxuICBjb25zdHJ1Y3RvcihtYXhSZXRyeVRpbWVNcywgaW5pdGlhbFJldHJ5RGVsYXlNcywgbXVsdGlwbGllciwgaml0dGVyRmFjdG9yKSB7XG4gICAgdGhpcy5fbWF4UmV0cnlUaW1lTXMgPSBfdmFsdWVPckRlZmF1bHQobWF4UmV0cnlUaW1lTXMsIERFRkFVTFRfTUFYX1JFVFJZX1RJTUVfTVMpO1xuICAgIHRoaXMuX2luaXRpYWxSZXRyeURlbGF5TXMgPSBfdmFsdWVPckRlZmF1bHQoaW5pdGlhbFJldHJ5RGVsYXlNcywgREVGQVVMVF9JTklUSUFMX1JFVFJZX0RFTEFZX01TKTtcbiAgICB0aGlzLl9tdWx0aXBsaWVyID0gX3ZhbHVlT3JEZWZhdWx0KG11bHRpcGxpZXIsIERFRkFVTFRfUkVUUllfREVMQVlfTVVMVElQTElFUik7XG4gICAgdGhpcy5faml0dGVyRmFjdG9yID0gX3ZhbHVlT3JEZWZhdWx0KGppdHRlckZhY3RvciwgREVGQVVMVF9SRVRSWV9ERUxBWV9KSVRURVJfRkFDVE9SKTtcblxuICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcyA9IFtdO1xuXG4gICAgdGhpcy5fdmVyaWZ5QWZ0ZXJDb25zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gIGV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmspIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5fZXhlY3V0ZVRyYW5zYWN0aW9uSW5zaWRlUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBjb25zdCByZXRyeVN0YXJ0VGltZU1zID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IHJldHJ5RGVsYXlNcyA9IHRoaXMuX2luaXRpYWxSZXRyeURlbGF5TXM7XG4gICAgICByZXR1cm4gdGhpcy5fcmV0cnlUcmFuc2FjdGlvblByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIGVycm9yLCByZXRyeVN0YXJ0VGltZU1zLCByZXRyeURlbGF5TXMpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgLy8gY2FuY2VsIGFsbCBleGlzdGluZyB0aW1lb3V0cyB0byBwcmV2ZW50IGZ1cnRoZXIgcmV0cmllc1xuICAgIHRoaXMuX2luRmxpZ2h0VGltZW91dElkcy5mb3JFYWNoKHRpbWVvdXRJZCA9PiBjbGVhclRpbWVvdXQodGltZW91dElkKSk7XG4gICAgdGhpcy5faW5GbGlnaHRUaW1lb3V0SWRzID0gW107XG4gIH1cblxuICBfcmV0cnlUcmFuc2FjdGlvblByb21pc2UodHJhbnNhY3Rpb25DcmVhdG9yLCB0cmFuc2FjdGlvbldvcmssIGVycm9yLCByZXRyeVN0YXJ0VGltZSwgcmV0cnlEZWxheU1zKSB7XG4gICAgY29uc3QgZWxhcHNlZFRpbWVNcyA9IERhdGUubm93KCkgLSByZXRyeVN0YXJ0VGltZTtcblxuICAgIGlmIChlbGFwc2VkVGltZU1zID4gdGhpcy5fbWF4UmV0cnlUaW1lTXMgfHwgIVRyYW5zYWN0aW9uRXhlY3V0b3IuX2NhblJldHJ5T24oZXJyb3IpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBuZXh0UmV0cnlUaW1lID0gdGhpcy5fY29tcHV0ZURlbGF5V2l0aEppdHRlcihyZXRyeURlbGF5TXMpO1xuICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIGZpbHRlciBvdXQgdGhpcyB0aW1lb3V0SWQgd2hlbiB0aW1lIGhhcyBjb21lIGFuZCBmdW5jdGlvbiBpcyBiZWluZyBleGVjdXRlZFxuICAgICAgICB0aGlzLl9pbkZsaWdodFRpbWVvdXRJZHMgPSB0aGlzLl9pbkZsaWdodFRpbWVvdXRJZHMuZmlsdGVyKGlkID0+IGlkICE9PSB0aW1lb3V0SWQpO1xuICAgICAgICB0aGlzLl9leGVjdXRlVHJhbnNhY3Rpb25JbnNpZGVQcm9taXNlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSwgbmV4dFJldHJ5VGltZSk7XG4gICAgICAvLyBhZGQgbmV3bHkgY3JlYXRlZCB0aW1lb3V0SWQgdG8gdGhlIGxpc3Qgb2YgYWxsIGluLWZsaWdodCB0aW1lb3V0c1xuICAgICAgdGhpcy5faW5GbGlnaHRUaW1lb3V0SWRzLnB1c2godGltZW91dElkKTtcbiAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBjb25zdCBuZXh0UmV0cnlEZWxheU1zID0gcmV0cnlEZWxheU1zICogdGhpcy5fbXVsdGlwbGllcjtcbiAgICAgIHJldHVybiB0aGlzLl9yZXRyeVRyYW5zYWN0aW9uUHJvbWlzZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHRyYW5zYWN0aW9uV29yaywgZXJyb3IsIHJldHJ5U3RhcnRUaW1lLCBuZXh0UmV0cnlEZWxheU1zKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9leGVjdXRlVHJhbnNhY3Rpb25JbnNpZGVQcm9taXNlKHRyYW5zYWN0aW9uQ3JlYXRvciwgdHJhbnNhY3Rpb25Xb3JrLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHggPSB0cmFuc2FjdGlvbkNyZWF0b3IoKTtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uV29ya1Jlc3VsdCA9IHRyYW5zYWN0aW9uV29yayh0eCk7XG5cbiAgICAgIC8vIHVzZXIgZGVmaW5lZCBjYWxsYmFjayBpcyBzdXBwb3NlZCB0byByZXR1cm4gYSBwcm9taXNlLCBidXQgaXQgbWlnaHQgbm90OyBzbyB0byBwcm90ZWN0IGFnYWluc3QgYW5cbiAgICAgIC8vIGluY29ycmVjdCBBUEkgdXNhZ2Ugd2Ugd3JhcCB0aGUgcmV0dXJuZWQgdmFsdWUgd2l0aCBhIHJlc29sdmVkIHByb21pc2U7IHRoaXMgaXMgZWZmZWN0aXZlbHkgYVxuICAgICAgLy8gdmFsaWRhdGlvbiBzdGVwIHdpdGhvdXQgdHlwZSBjaGVja3NcbiAgICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodHJhbnNhY3Rpb25Xb3JrUmVzdWx0KTtcblxuICAgICAgcmVzdWx0UHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmICh0eC5pc09wZW4oKSkge1xuICAgICAgICAgIC8vIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJuZWQgcmVzb2x2ZWQgcHJvbWlzZSBhbmQgdHJhbnNhY3Rpb24gaGFzIG5vdCBiZWVuIGNvbW1pdHRlZC9yb2xsZWQgYmFja1xuICAgICAgICAgIC8vIHRyeSB0byBjb21taXQgdGhlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAvLyB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkLCByZXR1cm4gcmVzdWx0IHRvIHRoZSB1c2VyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGNvbW1pdCwgcHJvcGFnYXRlIHRoZSBmYWlsdXJlXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJuZWQgcmVzb2x2ZWQgcHJvbWlzZSBhbmQgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBjb21taXR0ZWQvcm9sbGVkIGJhY2tcbiAgICAgICAgICAvLyByZXR1cm4gdGhlIHJlc3VsdCByZXR1cm5lZCBieSBnaXZlbiB0cmFuc2FjdGlvbiB3b3JrXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIC8vIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJuZWQgcmVqZWN0ZWQgcHJvbWlzZSwgcHJvcGFnYXRlIHRoZSBmYWlsdXJlXG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIF9jb21wdXRlRGVsYXlXaXRoSml0dGVyKGRlbGF5TXMpIHtcbiAgICBjb25zdCBqaXR0ZXIgPSAoZGVsYXlNcyAqIHRoaXMuX2ppdHRlckZhY3Rvcik7XG4gICAgY29uc3QgbWluID0gZGVsYXlNcyAtIGppdHRlcjtcbiAgICBjb25zdCBtYXggPSBkZWxheU1zICsgaml0dGVyO1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikgKyBtaW47XG4gIH1cblxuICBzdGF0aWMgX2NhblJldHJ5T24oZXJyb3IpIHtcbiAgICByZXR1cm4gZXJyb3IgJiYgZXJyb3IuY29kZSAmJlxuICAgICAgKGVycm9yLmNvZGUgPT09IFNFUlZJQ0VfVU5BVkFJTEFCTEUgfHxcbiAgICAgIGVycm9yLmNvZGUgPT09IFNFU1NJT05fRVhQSVJFRCB8fFxuICAgICAgZXJyb3IuY29kZS5pbmRleE9mKCdUcmFuc2llbnRFcnJvcicpID49IDApO1xuICB9XG5cbiAgX3ZlcmlmeUFmdGVyQ29uc3RydWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9tYXhSZXRyeVRpbWVNcyA8IDApIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdNYXggcmV0cnkgdGltZSBzaG91bGQgYmUgPj0gMDogJyArIHRoaXMuX21heFJldHJ5VGltZU1zKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2luaXRpYWxSZXRyeURlbGF5TXMgPCAwKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcignSW5pdGlhbCByZXRyeSBkZWxheSBzaG91bGQgPj0gMDogJyArIHRoaXMuX2luaXRpYWxSZXRyeURlbGF5TXMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbXVsdGlwbGllciA8IDEuMCkge1xuICAgICAgdGhyb3cgbmV3RXJyb3IoJ011bHRpcGxpZXIgc2hvdWxkIGJlID49IDEuMDogJyArIHRoaXMuX211bHRpcGxpZXIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5faml0dGVyRmFjdG9yIDwgMCB8fCB0aGlzLl9qaXR0ZXJGYWN0b3IgPiAxKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcignSml0dGVyIGZhY3RvciBzaG91bGQgYmUgaW4gWzAuMCwgMS4wXTogJyArIHRoaXMuX2ppdHRlckZhY3Rvcik7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBfdmFsdWVPckRlZmF1bHQodmFsdWUsIGRlZmF1bHRWYWx1ZSkge1xuICBpZiAodmFsdWUgfHwgdmFsdWUgPT09IDApIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3Jvc3MtcGxhdGZvcm0gVVRGLTggZW5jb2RlciBhbmQgZGVjb2RlciB0aGF0IHdvcmtzXG4vLyB3aXRoIHRoZSBCdWZmZXIgQVBJIGRlZmluZWQgaW4gYnVmLmpzXG5cbmltcG9ydCB7YWxsb2MsIE5vZGVCdWZmZXIsIEhlYXBCdWZmZXIsIENvbWJpbmVkQnVmZmVyfSBmcm9tIFwiLi9idWZcIjtcbmltcG9ydCB7U3RyaW5nRGVjb2Rlcn0gZnJvbSAnc3RyaW5nX2RlY29kZXInO1xuaW1wb3J0IHtuZXdFcnJvcn0gZnJvbSAnLi8uLi9lcnJvcic7XG5sZXQgcGxhdGZvcm1PYmogPSB7fTtcblxuXG50cnkge1xuICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlzICdidWZmZXInIGlzIG5vdCBhdmFpbGFibGVcbiAgcmVxdWlyZS5yZXNvbHZlKFwiYnVmZmVyXCIpO1xuICBsZXQgZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKCd1dGY4Jyk7XG4gIGxldCBub2RlID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcblxuICBwbGF0Zm9ybU9iaiA9IHtcbiAgICBcImVuY29kZVwiOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gbmV3IE5vZGVCdWZmZXIobmV3IG5vZGUuQnVmZmVyKHN0ciwgXCJVVEYtOFwiKSk7XG4gICAgfSxcbiAgICBcImRlY29kZVwiOiBmdW5jdGlvbiAoYnVmZmVyLCBsZW5ndGgpIHtcbiAgICAgIGlmIChidWZmZXIgaW5zdGFuY2VvZiBOb2RlQnVmZmVyKSB7XG4gICAgICAgIGxldCBzdGFydCA9IGJ1ZmZlci5wb3NpdGlvbixcbiAgICAgICAgICBlbmQgPSBzdGFydCArIGxlbmd0aDtcbiAgICAgICAgYnVmZmVyLnBvc2l0aW9uID0gTWF0aC5taW4oZW5kLCBidWZmZXIubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5fYnVmZmVyLnRvU3RyaW5nKCd1dGY4Jywgc3RhcnQsIGVuZCk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChidWZmZXIgaW5zdGFuY2VvZiBDb21iaW5lZEJ1ZmZlcikge1xuICAgICAgICBsZXQgb3V0ID0gc3RyZWFtRGVjb2RlQ29tYmluZWRCdWZmZXIoYnVmZmVyLCBsZW5ndGgsXG4gICAgICAgICAgKHBhcnRCdWZmZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVyLndyaXRlKHBhcnRCdWZmZXIuX2J1ZmZlcik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2Rlci5lbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoXCJEb24ndCBrbm93IGhvdyB0byBkZWNvZGUgc3RyaW5ncyBmcm9tIGBcIiArIGJ1ZmZlciArIFwiYC5cIik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn0gY2F0Y2ggKGUpIHtcblxuICAvLyBOb3Qgb24gTm9kZUpTLCBhZGQgc2hpbSBmb3IgV2ViQVBJIFRleHRFbmNvZGVyL1RleHREZWNvZGVyXG4gIHZhciB0ZXh0RW5jb2RpbmcgPSByZXF1aXJlKCcuLi8uLi9leHRlcm5hbC90ZXh0LWVuY29kaW5nL2luZGV4Jyk7XG4gIGxldCBlbmNvZGVyID0gbmV3IHRleHRFbmNvZGluZy5UZXh0RW5jb2RlcihcInV0Zi04XCIpO1xuICBsZXQgZGVjb2RlciA9IG5ldyB0ZXh0RW5jb2RpbmcuVGV4dERlY29kZXIoXCJ1dGYtOFwiKTtcblxuICBwbGF0Zm9ybU9iaiA9IHtcbiAgICBcImVuY29kZVwiOiBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICByZXR1cm4gbmV3IEhlYXBCdWZmZXIoZW5jb2Rlci5lbmNvZGUoc3RyKS5idWZmZXIpO1xuICAgIH0sXG4gICAgXCJkZWNvZGVcIjogZnVuY3Rpb24gKGJ1ZmZlciwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYnVmZmVyIGluc3RhbmNlb2YgSGVhcEJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLnJlYWRWaWV3KE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmxlbmd0aCAtIGJ1ZmZlci5wb3NpdGlvbikpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBEZWNvZGluZyBjb21iaW5lZCBidWZmZXIgaXMgY29tcGxpY2F0ZWQuIEZvciBzaW1wbGljaXR5LCBmb3Igbm93LCBcbiAgICAgICAgLy8gd2Ugc2ltcGx5IGNvcHkgdGhlIGNvbWJpbmVkIGJ1ZmZlciBpbnRvIGEgcmVndWxhciBidWZmZXIgYW5kIGRlY29kZSB0aGF0LlxuICAgICAgICB2YXIgdG1wQnVmID0gYWxsb2MobGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRtcEJ1Zi53cml0ZVVJbnQ4KGJ1ZmZlci5yZWFkVUludDgoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdG1wQnVmLnJlc2V0KCk7XG4gICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0bXBCdWYucmVhZFZpZXcobGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmxldCBzdHJlYW1EZWNvZGVDb21iaW5lZEJ1ZmZlciA9IChjb21iaW5lZEJ1ZmZlcnMsIGxlbmd0aCwgZGVjb2RlRm4sIGVuZEZuKSA9PiB7XG4gIGxldCByZW1haW5pbmdCeXRlc1RvUmVhZCA9IGxlbmd0aDtcbiAgbGV0IHBvc2l0aW9uID0gY29tYmluZWRCdWZmZXJzLnBvc2l0aW9uO1xuICBjb21iaW5lZEJ1ZmZlcnMuX3VwZGF0ZVBvcyhNYXRoLm1pbihsZW5ndGgsIGNvbWJpbmVkQnVmZmVycy5sZW5ndGggLSBwb3NpdGlvbikpO1xuICAvLyBSZWR1Y2UgQ29tYmluZWRCdWZmZXJzIHRvIGEgZGVjb2RlZCBzdHJpbmdcbiAgbGV0IG91dCA9IGNvbWJpbmVkQnVmZmVycy5fYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24gKGxhc3QsIHBhcnRCdWZmZXIpIHtcbiAgICBpZiAocmVtYWluaW5nQnl0ZXNUb1JlYWQgPD0gMCkge1xuICAgICAgcmV0dXJuIGxhc3Q7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA+PSBwYXJ0QnVmZmVyLmxlbmd0aCkge1xuICAgICAgcG9zaXRpb24gLT0gcGFydEJ1ZmZlci5sZW5ndGg7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhwb3NpdGlvbiAtIHBhcnRCdWZmZXIucG9zaXRpb24pO1xuICAgICAgbGV0IGJ5dGVzVG9SZWFkID0gTWF0aC5taW4ocGFydEJ1ZmZlci5sZW5ndGggLSBwb3NpdGlvbiwgcmVtYWluaW5nQnl0ZXNUb1JlYWQpO1xuICAgICAgbGV0IGxhc3RTbGljZSA9IHBhcnRCdWZmZXIucmVhZFNsaWNlKGJ5dGVzVG9SZWFkKTtcbiAgICAgIHBhcnRCdWZmZXIuX3VwZGF0ZVBvcyhieXRlc1RvUmVhZCk7XG4gICAgICByZW1haW5pbmdCeXRlc1RvUmVhZCA9IE1hdGgubWF4KHJlbWFpbmluZ0J5dGVzVG9SZWFkIC0gbGFzdFNsaWNlLmxlbmd0aCwgMCk7XG4gICAgICBwb3NpdGlvbiA9IDA7XG4gICAgICByZXR1cm4gbGFzdCArIGRlY29kZUZuKGxhc3RTbGljZSk7XG4gICAgfVxuICB9LCAnJyk7XG4gIHJldHVybiBvdXQgKyBlbmRGbigpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcGxhdGZvcm1PYmo7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuY29uc3QgRU5DUllQVElPTl9PTiA9IFwiRU5DUllQVElPTl9PTlwiO1xuY29uc3QgRU5DUllQVElPTl9PRkYgPSBcIkVOQ1JZUFRJT05fT0ZGXCI7XG5cbmZ1bmN0aW9uIGlzRW1wdHlPYmplY3RPck51bGwob2JqKSB7XG4gIGlmIChpc051bGwob2JqKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFpc09iamVjdChvYmopKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChsZXQgcHJvcCBpbiBvYmopIHtcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChvYmopIHtcbiAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2Ygb2JqO1xuICByZXR1cm4gdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlID09PSAnb2JqZWN0JyAmJiBCb29sZWFuKG9iaik7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFN0cmluZyhvYmosIG9iak5hbWUpIHtcbiAgaWYgKCFpc1N0cmluZyhvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihvYmpOYW1lICsgJyBleHBlY3RlZCB0byBiZSBzdHJpbmcgYnV0IHdhczogJyArIEpTT04uc3RyaW5naWZ5KG9iaikpO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHN0cikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN0cikgPT09ICdbb2JqZWN0IFN0cmluZ10nO1xufVxuXG5leHBvcnQge1xuICBpc0VtcHR5T2JqZWN0T3JOdWxsLFxuICBhc3NlcnRTdHJpbmcsXG4gIEVOQ1JZUFRJT05fT04sXG4gIEVOQ1JZUFRJT05fT0ZGXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtuZXdFcnJvcn0gZnJvbSBcIi4vZXJyb3JcIjtcblxuZnVuY3Rpb24gZ2VuZXJhdGVGaWVsZExvb2t1cCgga2V5cyApIHtcbiAgbGV0IGxvb2t1cCA9IHt9O1xuICBrZXlzLmZvckVhY2goIChuYW1lLCBpZHgpID0+IHsgbG9va3VwW25hbWVdID0gaWR4OyB9KTtcbiAgcmV0dXJuIGxvb2t1cDtcbn1cblxuLyoqXG4gKiBSZWNvcmRzIG1ha2UgdXAgdGhlIGNvbnRlbnRzIG9mIHRoZSB7QGxpbmsgUmVzdWx0fSwgYW5kIGlzIGhvdyB5b3UgYWNjZXNzXG4gKiB0aGUgb3V0cHV0IG9mIGEgc3RhdGVtZW50LiBBIHNpbXBsZSBzdGF0ZW1lbnQgbWlnaHQgeWllbGQgYSByZXN1bHQgc3RyZWFtXG4gKiB3aXRoIGEgc2luZ2xlIHJlY29yZCwgZm9yIGluc3RhbmNlOlxuICpcbiAqICAgICBNQVRDSCAodTpVc2VyKSBSRVRVUk4gdS5uYW1lLCB1LmFnZVxuICpcbiAqIFRoaXMgcmV0dXJucyBhIHN0cmVhbSBvZiByZWNvcmRzIHdpdGggdHdvIGZpZWxkcywgbmFtZWQgYHUubmFtZWAgYW5kIGB1LmFnZWAsXG4gKiBlYWNoIHJlY29yZCByZXByZXNlbnRzIG9uZSB1c2VyIGZvdW5kIGJ5IHRoZSBzdGF0ZW1lbnQgYWJvdmUuIFlvdSBjYW4gYWNjZXNzXG4gKiB0aGUgdmFsdWVzIG9mIGVhY2ggZmllbGQgZWl0aGVyIGJ5IG5hbWU6XG4gKlxuICogICAgIHJlY29yZC5nZXQoXCJ1Lm5hbWVcIilcbiAqXG4gKiBPciBieSBpdCdzIHBvc2l0aW9uOlxuICpcbiAqICAgICByZWNvcmQuZ2V0KDApXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuY2xhc3MgUmVjb3JkIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyByZWNvcmQgb2JqZWN0LlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBrZXlzIEFuIGFycmF5IG9mIGZpZWxkIGtleXMsIGluIHRoZSBvcmRlciB0aGUgZmllbGRzIGFwcGVhclxuICAgKiAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjb3JkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBmaWVsZHMgQW4gYXJyYXkgb2YgZmllbGQgdmFsdWVzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBmaWVsZExvb2t1cCBBbiBvYmplY3Qgb2YgZmllbGROYW1lIC0+IHZhbHVlIGluZGV4LCB1c2VkIHRvIG1hcFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCBuYW1lcyB0byB2YWx1ZXMuIElmIHRoaXMgaXMgbnVsbCwgb25lIHdpbGwgYmVcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioa2V5cywgZmllbGRzLCBmaWVsZExvb2t1cD1udWxsICkge1xuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy5sZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB0aGlzLl9maWVsZHMgPSBmaWVsZHM7XG4gICAgdGhpcy5fZmllbGRMb29rdXAgPSBmaWVsZExvb2t1cCB8fCBnZW5lcmF0ZUZpZWxkTG9va3VwKCBrZXlzICk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiBmb3IgZWFjaCBmaWVsZCBpbiB0aGlzIHJlY29yZC4gVGhlIGZ1bmN0aW9uXG4gICAqIHdpbGwgZ2V0IHRocmVlIGFyZ3VtZW50cyAtIHRoZSB2YWx1ZSwgdGhlIGtleSBhbmQgdGhpcyByZWNvcmQsIGluIHRoYXRcbiAgICogb3JkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB2aXNpdG9yXG4gICAqL1xuICBmb3JFYWNoKCB2aXNpdG9yICkge1xuICAgIGZvcihsZXQgaT0wO2k8dGhpcy5rZXlzLmxlbmd0aDtpKyspIHtcbiAgICAgIHZpc2l0b3IoIHRoaXMuX2ZpZWxkc1tpXSwgdGhpcy5rZXlzW2ldLCB0aGlzICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiBvYmplY3Qgb3V0IG9mIHRoZSBjdXJyZW50IFJlY29yZFxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgdG9PYmplY3QoKSB7XG4gICAgY29uc3Qgb2JqZWN0ID0ge307XG4gICAgdGhpcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBvYmplY3Rba2V5XSA9IHZhbHVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHZhbHVlIGZyb20gdGhpcyByZWNvcmQsIGVpdGhlciBieSBpbmRleCBvciBieSBmaWVsZCBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfE51bWJlcn0ga2V5IEZpZWxkIGtleSwgb3IgdGhlIGluZGV4IG9mIHRoZSBmaWVsZC5cbiAgICogQHJldHVybnMgeyp9XG4gICAqL1xuICBnZXQoIGtleSApIHtcbiAgICBsZXQgaW5kZXg7XG4gICAgaWYoICEodHlwZW9mIGtleSA9PT0gXCJudW1iZXJcIikgKSB7XG4gICAgICBpbmRleCA9IHRoaXMuX2ZpZWxkTG9va3VwW2tleV07XG4gICAgICBpZiggaW5kZXggPT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoXCJUaGlzIHJlY29yZCBoYXMgbm8gZmllbGQgd2l0aCBrZXkgJ1wiK2tleStcIicsIGF2YWlsYWJsZSBrZXkgYXJlOiBbXCIgKyB0aGlzLmtleXMgKyBcIl0uXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGtleTtcbiAgICB9XG5cbiAgICBpZiggaW5kZXggPiB0aGlzLl9maWVsZHMubGVuZ3RoIC0gMSB8fCBpbmRleCA8IDAgKSB7XG4gICAgICB0aHJvdyBuZXdFcnJvcihcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGluZGV4ICdcIitpbmRleCtcIicuIFJlbWVtYmVyIHRoYXQgaW5kZXhlcyBzdGFydCBhdCBgMGAsIFwiICtcbiAgICAgICAgXCJhbmQgbWFrZSBzdXJlIHlvdXIgc3RhdGVtZW50IHJldHVybnMgcmVjb3JkcyBpbiB0aGUgc2hhcGUgeW91IG1lYW50IGl0IHRvLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZmllbGRzW2luZGV4XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHZhbHVlIGZyb20gdGhpcyByZWNvcmQsIGVpdGhlciBieSBpbmRleCBvciBieSBmaWVsZCBrZXksIGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8TnVtYmVyfSBrZXkgRmllbGQga2V5LCBvciB0aGUgaW5kZXggb2YgdGhlIGZpZWxkLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGhhcygga2V5ICkge1xuICAgIC8vIGlmIGtleSBpcyBhIG51bWJlciwgd2UgY2hlY2sgaWYgaXQgaXMgaW4gdGhlIF9maWVsZHMgYXJyYXlcbiAgICBpZiggdHlwZW9mIGtleSA9PT0gXCJudW1iZXJcIiApIHtcbiAgICAgIHJldHVybiAoIGtleSA+PSAwICYmIGtleSA8IHRoaXMuX2ZpZWxkcy5sZW5ndGggKTtcbiAgICB9XG5cbiAgICAvLyBpZiBpdCdzIG5vdCBhIG51bWJlciwgd2UgY2hlY2sgX2ZpZWxkTG9va3VwIGRpY3Rpb25hcnkgZGlyZWN0bHlcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMb29rdXBba2V5XSAhPT0gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlY29yZFxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7aW50LCBpc0ludH0gZnJvbSAnLi9pbnRlZ2VyJztcblxuLyoqXG4gICogQSBSZXN1bHRTdW1tYXJ5IGluc3RhbmNlIGNvbnRhaW5zIHN0cnVjdHVyZWQgbWV0YWRhdGEgZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbmNsYXNzIFJlc3VsdFN1bW1hcnkge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZW1lbnQgLSBUaGUgc3RhdGVtZW50IHRoaXMgc3VtbWFyeSBpcyBmb3JcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtZXRhZGF0YSAtIFN0YXRlbWVudCBtZXRhZGF0YVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhZGF0YSkge1xuICAgIHRoaXMuc3RhdGVtZW50ID0ge3RleHQ6IHN0YXRlbWVudCwgcGFyYW1ldGVyc307XG4gICAgdGhpcy5zdGF0ZW1lbnRUeXBlID0gbWV0YWRhdGEudHlwZTtcbiAgICBsZXQgY291bnRlcnMgPSBuZXcgU3RhdGVtZW50U3RhdGlzdGljcyhtZXRhZGF0YS5zdGF0cyB8fCB7fSk7XG4gICAgdGhpcy5jb3VudGVycyA9IGNvdW50ZXJzO1xuICAgIC8vZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCByZW1vdmUgaW4gZnV0dXJlIHZlcnNpb25cbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MgPSBjb3VudGVycztcbiAgICB0aGlzLnBsYW4gPSBtZXRhZGF0YS5wbGFuIHx8IG1ldGFkYXRhLnByb2ZpbGUgPyBuZXcgUGxhbihtZXRhZGF0YS5wbGFuIHx8IG1ldGFkYXRhLnByb2ZpbGUpIDogZmFsc2U7XG4gICAgdGhpcy5wcm9maWxlID0gbWV0YWRhdGEucHJvZmlsZSA/IG5ldyBQcm9maWxlZFBsYW4obWV0YWRhdGEucHJvZmlsZSkgOiBmYWxzZTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLl9idWlsZE5vdGlmaWNhdGlvbnMobWV0YWRhdGEubm90aWZpY2F0aW9ucyk7XG4gICAgdGhpcy5zZXJ2ZXIgPSBuZXcgU2VydmVySW5mbyhtZXRhZGF0YS5zZXJ2ZXIpO1xuICAgIHRoaXMucmVzdWx0Q29uc3VtZWRBZnRlciA9IG1ldGFkYXRhLnJlc3VsdF9jb25zdW1lZF9hZnRlcjtcbiAgICB0aGlzLnJlc3VsdEF2YWlsYWJsZUFmdGVyID0gbWV0YWRhdGEucmVzdWx0X2F2YWlsYWJsZV9hZnRlcjtcbiAgfVxuICBfYnVpbGROb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbnMpIHtcbiAgICBpZighbm90aWZpY2F0aW9ucykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gbm90aWZpY2F0aW9ucy5tYXAoZnVuY3Rpb24obikgeyByZXR1cm4gbmV3IE5vdGlmaWNhdGlvbihuKSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGUgcmVzdWx0IHN1bW1hcnkgaGFzIGEgcGxhblxuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgaGFzUGxhbigpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFuIGluc3RhbmNlb2YgUGxhblxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSByZXN1bHQgc3VtbWFyeSBoYXMgYSBwcm9maWxlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XG4gICAqL1xuICBoYXNQcm9maWxlKCkge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGUgaW5zdGFuY2VvZiBQcm9maWxlZFBsYW5cbiAgfVxufVxuXG4vKipcbiAgKiBDbGFzcyBmb3IgZXhlY3V0aW9uIHBsYW4gcmVjZWl2ZWQgYnkgcHJlcGVuZGluZyBDeXBoZXIgd2l0aCBFWFBMQUlOLlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBQbGFuIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIFBsYW4gaW5zdGFuY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwbGFuIC0gT2JqZWN0IHdpdGggcGxhbiBkYXRhXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwbGFuKSB7XG4gICAgdGhpcy5vcGVyYXRvclR5cGUgPSBwbGFuLm9wZXJhdG9yVHlwZTtcbiAgICB0aGlzLmlkZW50aWZpZXJzID0gcGxhbi5pZGVudGlmaWVycztcbiAgICB0aGlzLmFyZ3VtZW50cyA9IHBsYW4uYXJncztcbiAgICB0aGlzLmNoaWxkcmVuID0gcGxhbi5jaGlsZHJlbiA/IHBsYW4uY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4gbmV3IFBsYW4oY2hpbGQpKSA6IFtdO1xuICB9XG59XG5cbi8qKlxuICAqIENsYXNzIGZvciBleGVjdXRpb24gcGxhbiByZWNlaXZlZCBieSBwcmVwZW5kaW5nIEN5cGhlciB3aXRoIFBST0ZJTEUuXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbmNsYXNzIFByb2ZpbGVkUGxhbiB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBQcm9maWxlZFBsYW4gaW5zdGFuY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9maWxlIC0gT2JqZWN0IHdpdGggcHJvZmlsZSBkYXRhXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9maWxlKSB7XG4gICAgdGhpcy5vcGVyYXRvclR5cGUgPSBwcm9maWxlLm9wZXJhdG9yVHlwZTtcbiAgICB0aGlzLmlkZW50aWZpZXJzID0gcHJvZmlsZS5pZGVudGlmaWVycztcbiAgICB0aGlzLmFyZ3VtZW50cyA9IHByb2ZpbGUuYXJncztcbiAgICB0aGlzLmRiSGl0cyA9IHByb2ZpbGUuYXJncy5EYkhpdHMudG9JbnQoKTtcbiAgICB0aGlzLnJvd3MgPSBwcm9maWxlLmFyZ3MuUm93cy50b0ludCgpO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBwcm9maWxlLmNoaWxkcmVuID8gcHJvZmlsZS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiBuZXcgUHJvZmlsZWRQbGFuKGNoaWxkKSkgOiBbXTtcbiAgfVxufVxuXG4vKipcbiAgKiBHZXQgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gZm9yIGEge1Jlc3VsdH0uXG4gICogQGFjY2VzcyBwdWJsaWNcbiAgKi9cbmNsYXNzIFN0YXRlbWVudFN0YXRpc3RpY3Mge1xuICAvKipcbiAgICogU3RydWN0dXJpemUgdGhlIHN0YXRpc3RpY3NcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdGF0aXN0aWNzIC0gUmVzdWx0IHN0YXRpc3RpY3NcbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0YXRpc3RpY3MpIHtcbiAgICB0aGlzLl9zdGF0cyA9IHtcbiAgICAgIG5vZGVzQ3JlYXRlZDogMCxcbiAgICAgIG5vZGVzRGVsZXRlZDogMCxcbiAgICAgIHJlbGF0aW9uc2hpcHNDcmVhdGVkOiAwLFxuICAgICAgcmVsYXRpb25zaGlwc0RlbGV0ZWQ6IDAsXG4gICAgICBwcm9wZXJ0aWVzU2V0OiAwLFxuICAgICAgbGFiZWxzQWRkZWQ6IDAsXG4gICAgICBsYWJlbHNSZW1vdmVkOiAwLFxuICAgICAgaW5kZXhlc0FkZGVkOiAwLFxuICAgICAgaW5kZXhlc1JlbW92ZWQ6IDAsXG4gICAgICBjb25zdHJhaW50c0FkZGVkOiAwLFxuICAgICAgY29uc3RyYWludHNSZW1vdmVkOiAwXG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyhzdGF0aXN0aWNzKS5mb3JFYWNoKChpbmRleCkgPT4ge1xuICAgICAgLy9UbyBjYW1lbENhc2VcbiAgICAgIHRoaXMuX3N0YXRzW2luZGV4LnJlcGxhY2UoLyhcXC1cXHcpL2csIChtKSA9PiBtWzFdLnRvVXBwZXJDYXNlKCkpXSA9XG4gICAgICAgIGlzSW50KHN0YXRpc3RpY3NbaW5kZXhdKSA/IHN0YXRpc3RpY3NbaW5kZXhdLnRvSW50KCkgOiBzdGF0aXN0aWNzW2luZGV4XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaWQgdGhlIGRhdGFiYXNlIGdldCB1cGRhdGVkP1xuICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgKi9cbiAgY29udGFpbnNVcGRhdGVzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9zdGF0cykucmVkdWNlKChsYXN0LCBjdXJyZW50KSA9PiB7XG4gICAgICByZXR1cm4gbGFzdCArIHRoaXMuX3N0YXRzW2N1cnJlbnRdO1xuICAgIH0sIDApID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGNyZWF0ZWQuXG4gICAqL1xuICBub2Rlc0NyZWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLm5vZGVzQ3JlYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAqL1xuICBub2Rlc0RlbGV0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLm5vZGVzRGVsZXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIHJlbGF0aW9uc2hpcHMgY3JlYXRlZC5cbiAgICovXG4gIHJlbGF0aW9uc2hpcHNDcmVhdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0cy5yZWxhdGlvbnNoaXBzQ3JlYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIG5vZGVzIGRlbGV0ZWQuXG4gICAqL1xuICByZWxhdGlvbnNoaXBzRGVsZXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMucmVsYXRpb25zaGlwc0RlbGV0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBwcm9wZXJ0aWVzIHNldC5cbiAgICovXG4gIHByb3BlcnRpZXNTZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLnByb3BlcnRpZXNTZXQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBsYWJlbHMgYWRkZWQuXG4gICAqL1xuICBsYWJlbHNBZGRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMubGFiZWxzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBsYWJlbHMgcmVtb3ZlZC5cbiAgICovXG4gIGxhYmVsc1JlbW92ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRzLmxhYmVsc1JlbW92ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBpbmRleGVzIGFkZGVkLlxuICAgKi9cbiAgaW5kZXhlc0FkZGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0cy5pbmRleGVzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBpbmRleGVzIHJlbW92ZWQuXG4gICAqL1xuICBpbmRleGVzUmVtb3ZlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMuaW5kZXhlc1JlbW92ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TnVtYmVyfSAtIE51bWJlciBvZiBjb250cmFpbnRzIGFkZGVkLlxuICAgKi9cbiAgY29uc3RyYWludHNBZGRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMuY29uc3RyYWludHNBZGRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9IC0gTnVtYmVyIG9mIGNvbnRyYWludHMgcmVtb3ZlZC5cbiAgICovXG4gIGNvbnN0cmFpbnRzUmVtb3ZlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHMuY29uc3RyYWludHNSZW1vdmVkO1xuICB9XG59XG5cbi8qKlxuICAqIENsYXNzIGZvciBDeXBoZXIgbm90aWZpY2F0aW9uc1xuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBOb3RpZmljYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgTm90aWZpY2F0aW9uIGluc3RhbmNlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gbm90aWZpY2F0aW9uIC0gT2JqZWN0IHdpdGggbm90aWZpY2F0aW9uIGRhdGFcbiAgICovXG4gIGNvbnN0cnVjdG9yKG5vdGlmaWNhdGlvbikge1xuICAgIHRoaXMuY29kZSA9IG5vdGlmaWNhdGlvbi5jb2RlO1xuICAgIHRoaXMudGl0bGUgPSBub3RpZmljYXRpb24udGl0bGU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IG5vdGlmaWNhdGlvbi5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnNldmVyaXR5ID0gbm90aWZpY2F0aW9uLnNldmVyaXR5O1xuICAgIHRoaXMucG9zaXRpb24gPSBOb3RpZmljYXRpb24uX2NvbnN0cnVjdFBvc2l0aW9uKG5vdGlmaWNhdGlvbi5wb3NpdGlvbik7XG4gIH1cblxuICBzdGF0aWMgX2NvbnN0cnVjdFBvc2l0aW9uKHBvcykge1xuICAgIGlmKCFwb3MpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG9mZnNldDogcG9zLm9mZnNldC50b0ludCgpLFxuICAgICAgbGluZTogcG9zLmxpbmUudG9JbnQoKSxcbiAgICAgIGNvbHVtbjogcG9zLmNvbHVtbi50b0ludCgpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICAqIENsYXNzIGZvciBleHBvc2luZyBzZXJ2ZXIgaW5mbyBmcm9tIGEgcmVzdWx0LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBTZXJ2ZXJJbmZvIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIFNlcnZlckluZm8gaW5zdGFuY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXJ2ZXJNZXRhIC0gT2JqZWN0IHdpdGggc2VydmVyTWV0YSBkYXRhXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzZXJ2ZXJNZXRhKSB7XG4gICAgaWYgKHNlcnZlck1ldGEpIHtcbiAgICAgIHRoaXMuYWRkcmVzcyA9IHNlcnZlck1ldGEuYWRkcmVzcztcbiAgICAgIHRoaXMudmVyc2lvbiA9IHNlcnZlck1ldGEudmVyc2lvbjtcbiAgICB9XG4gIH1cbn1cblxuY29uc3Qgc3RhdGVtZW50VHlwZSA9IHtcbiAgUkVBRF9PTkxZOiAncicsXG4gIFJFQURfV1JJVEU6ICdydycsXG4gIFdSSVRFX09OTFk6ICd3JyxcbiAgU0NIRU1BX1dSSVRFOiAncydcbn07XG5cbmV4cG9ydCB7XG4gIHN0YXRlbWVudFR5cGVcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0U3VtbWFyeVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBSZXN1bHRTdW1tYXJ5IGZyb20gJy4vcmVzdWx0LXN1bW1hcnknO1xuaW1wb3J0IHtFTVBUWV9DT05ORUNUSU9OX0hPTERFUn0gZnJvbSAnLi9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlcic7XG5cbi8qKlxuICAqIEEgc3RyZWFtIG9mIHtAbGluayBSZWNvcmR9IHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIGEgc3RhdGVtZW50LlxuICAqIEBhY2Nlc3MgcHVibGljXG4gICovXG5jbGFzcyBSZXN1bHQge1xuICAvKipcbiAgICogSW5qZWN0IHRoZSBvYnNlcnZlciB0byBiZSB1c2VkLlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqIEBwYXJhbSB7U3RyZWFtT2JzZXJ2ZXJ9IHN0cmVhbU9ic2VydmVyXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcGFyYW0gbWV0YVN1cHBsaWVyIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCBwcm92aWRlcyBtZXRhZGF0YVxuICAgKiBAcGFyYW0ge0Nvbm5lY3Rpb25Ib2xkZXJ9IGNvbm5lY3Rpb25Ib2xkZXIgLSB0byBiZSBub3RpZmllZCB3aGVuIHJlc3VsdCBpcyBlaXRoZXIgZnVsbHkgY29uc3VtZWQgb3IgZXJyb3IgaGFwcGVuZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzdHJlYW1PYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBtZXRhU3VwcGxpZXIsIGNvbm5lY3Rpb25Ib2xkZXIpIHtcbiAgICB0aGlzLl9zdHJlYW1PYnNlcnZlciA9IHN0cmVhbU9ic2VydmVyO1xuICAgIHRoaXMuX3AgPSBudWxsO1xuICAgIHRoaXMuX3N0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcbiAgICB0aGlzLl9tZXRhU3VwcGxpZXIgPSBtZXRhU3VwcGxpZXIgfHwgZnVuY3Rpb24oKXtyZXR1cm4ge307fTtcbiAgICB0aGlzLl9jb25uZWN0aW9uSG9sZGVyID0gY29ubmVjdGlvbkhvbGRlciB8fCBFTVBUWV9DT05ORUNUSU9OX0hPTERFUjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBuZXcgUHJvbWlzZVxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBuZXcgUHJvbWlzZS5cbiAgICogQGFjY2VzcyBwcml2YXRlXG4gICAqL1xuICBfY3JlYXRlUHJvbWlzZSgpIHtcbiAgICBpZih0aGlzLl9wKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICB0aGlzLl9wID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IHJlY29yZHMgPSBbXTtcbiAgICAgIGxldCBvYnNlcnZlciA9IHtcbiAgICAgICAgb25OZXh0OiAocmVjb3JkKSA9PiB7IHJlY29yZHMucHVzaChyZWNvcmQpOyB9LFxuICAgICAgICBvbkNvbXBsZXRlZDogKHN1bW1hcnkpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHtyZWNvcmRzOiByZWNvcmRzLCBzdW1tYXJ5OiBzdW1tYXJ5fSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IChlcnJvcikgPT4geyByZWplY3QoZXJyb3IpOyB9XG4gICAgICB9O1xuICAgICAgc2VsZi5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciBhbGwgcmVzdWx0cyBhbmQgY2FsbHMgdGhlIHBhc3NlZCBpbiBmdW5jdGlvbiB3aXRoIHRoZSByZXN1bHRzLlxuICAgKiBDYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUge0BsaW5rICNzdWJzY3JpYmV9IGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHJlc3VsdDoge3JlY29yZHM6QXJyYXk8UmVjb3JkPn0pfSBvbkZ1bGZpbGxlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGZpbmlzaGVkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVycm9yOiB7bWVzc2FnZTpzdHJpbmcsIGNvZGU6c3RyaW5nfSl9IG9uUmVqZWN0ZWQgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgdXBvbiBlcnJvcnMuXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IHByb21pc2UuXG4gICAqL1xuICB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgdGhpcy5fY3JlYXRlUHJvbWlzZSgpO1xuICAgIHJldHVybiB0aGlzLl9wLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhdGNoIGVycm9ycyB3aGVuIHVzaW5nIHByb21pc2VzLlxuICAgKiBDYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBzdWJzY3JpYmUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZXJyb3I6IHttZXNzYWdlOnN0cmluZywgY29kZTpzdHJpbmd9KX0gb25SZWplY3RlZCAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB1cG9uIGVycm9ycy5cbiAgICogQHJldHVybiB7UHJvbWlzZX0gcHJvbWlzZS5cbiAgICovXG4gIGNhdGNoKG9uUmVqZWN0ZWQpIHtcbiAgICB0aGlzLl9jcmVhdGVQcm9taXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuX3AuY2F0Y2gob25SZWplY3RlZCk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIHJlY29yZHMgdG8gb2JzZXJ2ZXIgYXMgdGhleSBjb21lIGluLCB0aGlzIGlzIGEgbW9yZSBlZmZpY2llbnQgbWV0aG9kXG4gICAqIG9mIGhhbmRsaW5nIHRoZSByZXN1bHRzLCBhbmQgYWxsb3dzIHlvdSB0byBoYW5kbGUgYXJiaXRyYXJpbHkgbGFyZ2UgcmVzdWx0cy5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9ic2VydmVyIC0gT2JzZXJ2ZXIgb2JqZWN0XG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVjb3JkOiBSZWNvcmQpfSBvYnNlcnZlci5vbk5leHQgLSBIYW5kbGUgcmVjb3Jkcywgb25lIGJ5IG9uZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXRhZGF0YTogT2JqZWN0KX0gb2JzZXJ2ZXIub25Db21wbGV0ZWQgLSBIYW5kbGUgc3RyZWFtIHRhaWwsIHRoZSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihlcnJvcjoge21lc3NhZ2U6c3RyaW5nLCBjb2RlOnN0cmluZ30pfSBvYnNlcnZlci5vbkVycm9yIC0gSGFuZGxlIGVycm9ycy5cbiAgICogQHJldHVyblxuICAgKi9cbiAgc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgY29uc3Qgb25Db21wbGV0ZWRPcmlnaW5hbCA9IG9ic2VydmVyLm9uQ29tcGxldGVkO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IG9uQ29tcGxldGVkV3JhcHBlciA9IChtZXRhZGF0YSkgPT4ge1xuXG4gICAgICBjb25zdCBhZGRpdGlvbmFsTWV0YSA9IHNlbGYuX21ldGFTdXBwbGllcigpO1xuICAgICAgZm9yKGxldCBrZXkgaW4gYWRkaXRpb25hbE1ldGEpIHtcbiAgICAgICAgaWYgKGFkZGl0aW9uYWxNZXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBtZXRhZGF0YVtrZXldID0gYWRkaXRpb25hbE1ldGFba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3Qgc3VtID0gbmV3IFJlc3VsdFN1bW1hcnkodGhpcy5fc3RhdGVtZW50LCB0aGlzLl9wYXJhbWV0ZXJzLCBtZXRhZGF0YSk7XG5cbiAgICAgIC8vIG5vdGlmeSBjb25uZWN0aW9uIGhvbGRlciB0aGF0IHRoZSB1c2VkIGNvbm5lY3Rpb24gaXMgbm90IG5lZWRlZCBhbnkgbW9yZSBiZWNhdXNlIHJlc3VsdCBoYXNcbiAgICAgIC8vIGJlZW4gZnVsbHkgY29uc3VtZWQ7IGNhbGwgdGhlIG9yaWdpbmFsIG9uQ29tcGxldGVkIGNhbGxiYWNrIGFmdGVyIHRoYXRcbiAgICAgIHNlbGYuX2Nvbm5lY3Rpb25Ib2xkZXIucmVsZWFzZUNvbm5lY3Rpb24oKS50aGVuKCgpID0+IHtcbiAgICAgICAgb25Db21wbGV0ZWRPcmlnaW5hbC5jYWxsKG9ic2VydmVyLCBzdW0pO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBvYnNlcnZlci5vbkNvbXBsZXRlZCA9IG9uQ29tcGxldGVkV3JhcHBlcjtcblxuICAgIGNvbnN0IG9uRXJyb3JPcmlnaW5hbCA9IG9ic2VydmVyLm9uRXJyb3IgfHwgKGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwiVW5jYXVnaHQgZXJyb3Igd2hlbiBwcm9jZXNzaW5nIHJlc3VsdDogXCIgKyBlcnJvcik7XG4gICAgfSk7XG5cbiAgICBjb25zdCBvbkVycm9yV3JhcHBlciA9IGVycm9yID0+IHtcbiAgICAgIC8vIG5vdGlmeSBjb25uZWN0aW9uIGhvbGRlciB0aGF0IHRoZSB1c2VkIGNvbm5lY3Rpb24gaXMgbm90IG5lZWRlZCBhbnkgbW9yZSBiZWNhdXNlIGVycm9yIGhhcHBlbmVkXG4gICAgICAvLyBhbmQgcmVzdWx0IGNhbid0IGJlZSBjb25zdW1lZCBhbnkgZnVydGhlcjsgY2FsbCB0aGUgb3JpZ2luYWwgb25FcnJvciBjYWxsYmFjayBhZnRlciB0aGF0XG4gICAgICBzZWxmLl9jb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgIG9uRXJyb3JPcmlnaW5hbC5jYWxsKG9ic2VydmVyLCBlcnJvcik7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIG9ic2VydmVyLm9uRXJyb3IgPSBvbkVycm9yV3JhcHBlcjtcblxuICAgIHRoaXMuX3N0cmVhbU9ic2VydmVyLnN1YnNjcmliZShvYnNlcnZlcik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IFNlc3Npb24gZnJvbSAnLi9zZXNzaW9uJztcbmltcG9ydCB7RHJpdmVyfSBmcm9tICcuL2RyaXZlcic7XG5pbXBvcnQge25ld0Vycm9yLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVNTSU9OX0VYUElSRUR9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHtMb2FkQmFsYW5jZXJ9IGZyb20gJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMnO1xuXG4vKipcbiAqIEEgZHJpdmVyIHRoYXQgc3VwcG9ydHMgcm91dGluZyBpbiBhIGNvcmUtZWRnZSBjbHVzdGVyLlxuICovXG5jbGFzcyBSb3V0aW5nRHJpdmVyIGV4dGVuZHMgRHJpdmVyIHtcblxuICBjb25zdHJ1Y3Rvcih1cmwsIHVzZXJBZ2VudCwgdG9rZW4gPSB7fSwgY29uZmlnID0ge30pIHtcbiAgICBzdXBlcih1cmwsIHVzZXJBZ2VudCwgdG9rZW4sIFJvdXRpbmdEcml2ZXIuX3ZhbGlkYXRlQ29uZmlnKGNvbmZpZykpO1xuICB9XG5cbiAgX2NyZWF0ZUNvbm5lY3Rpb25Qcm92aWRlcihhZGRyZXNzLCBjb25uZWN0aW9uUG9vbCwgZHJpdmVyT25FcnJvckNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG5ldyBMb2FkQmFsYW5jZXIoYWRkcmVzcywgY29ubmVjdGlvblBvb2wsIGRyaXZlck9uRXJyb3JDYWxsYmFjayk7XG4gIH1cblxuICBfY3JlYXRlU2Vzc2lvbihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpIHtcbiAgICByZXR1cm4gbmV3IFJvdXRpbmdTZXNzaW9uKG1vZGUsIGNvbm5lY3Rpb25Qcm92aWRlciwgYm9va21hcmssIGNvbmZpZywgKGVycm9yLCBjb25uKSA9PiB7XG4gICAgICBpZiAoZXJyb3IuY29kZSA9PT0gU0VSVklDRV9VTkFWQUlMQUJMRSB8fCBlcnJvci5jb2RlID09PSBTRVNTSU9OX0VYUElSRUQpIHtcbiAgICAgICAgLy8gY29ubmVjdGlvbiBpcyB1bmRlZmluZWQgaWYgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGNvbm5lY3Rpb24gd2FzIGFjcXVpcmVkXG4gICAgICAgIGlmIChjb25uKSB7XG4gICAgICAgICAgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyLmZvcmdldChjb25uLnVybCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgfSBlbHNlIGlmIChlcnJvci5jb2RlID09PSAnTmVvLkNsaWVudEVycm9yLkNsdXN0ZXIuTm90QUxlYWRlcicpIHtcbiAgICAgICAgbGV0IHVybCA9ICdVTktOT1dOJztcbiAgICAgICAgLy8gY29ubmVjdGlvbiBpcyB1bmRlZmluZWQgaWYgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGNvbm5lY3Rpb24gd2FzIGFjcXVpcmVkXG4gICAgICAgIGlmIChjb25uKSB7XG4gICAgICAgICAgdXJsID0gY29ubi51cmw7XG4gICAgICAgICAgdGhpcy5fY29ubmVjdGlvblByb3ZpZGVyLmZvcmdldFdyaXRlcihjb25uLnVybCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0Vycm9yKCdObyBsb25nZXIgcG9zc2libGUgdG8gd3JpdGUgdG8gc2VydmVyIGF0ICcgKyB1cmwsIFNFU1NJT05fRVhQSVJFRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgX3ZhbGlkYXRlQ29uZmlnKGNvbmZpZykge1xuICAgIGlmKGNvbmZpZy50cnVzdCA9PT0gJ1RSVVNUX09OX0ZJUlNUX1VTRScpIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdUaGUgY2hvc2VuIHRydXN0IG1vZGUgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBhIHJvdXRpbmcgZHJpdmVyJyk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG4gIH1cbn1cblxuY2xhc3MgUm91dGluZ1Nlc3Npb24gZXh0ZW5kcyBTZXNzaW9uIHtcbiAgY29uc3RydWN0b3IobW9kZSwgY29ubmVjdGlvblByb3ZpZGVyLCBib29rbWFyaywgY29uZmlnLCBvbkZhaWxlZENvbm5lY3Rpb24pIHtcbiAgICBzdXBlcihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpO1xuICAgIHRoaXMuX29uRmFpbGVkQ29ubmVjdGlvbiA9IG9uRmFpbGVkQ29ubmVjdGlvbjtcbiAgfVxuXG4gIF9vblJ1bkZhaWx1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29uRmFpbGVkQ29ubmVjdGlvbjtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb3V0aW5nRHJpdmVyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBTdHJlYW1PYnNlcnZlciBmcm9tICcuL2ludGVybmFsL3N0cmVhbS1vYnNlcnZlcic7XG5pbXBvcnQgUmVzdWx0IGZyb20gJy4vcmVzdWx0JztcbmltcG9ydCBUcmFuc2FjdGlvbiBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7bmV3RXJyb3J9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHthc3NlcnRTdHJpbmd9IGZyb20gJy4vaW50ZXJuYWwvdXRpbCc7XG5pbXBvcnQgQ29ubmVjdGlvbkhvbGRlciBmcm9tICcuL2ludGVybmFsL2Nvbm5lY3Rpb24taG9sZGVyJztcbmltcG9ydCBEcml2ZXIsIHtSRUFELCBXUklURX0gZnJvbSAnLi9kcml2ZXInO1xuaW1wb3J0IFRyYW5zYWN0aW9uRXhlY3V0b3IgZnJvbSAnLi9pbnRlcm5hbC90cmFuc2FjdGlvbi1leGVjdXRvcic7XG5cbi8qKlxuICAqIEEgU2Vzc2lvbiBpbnN0YW5jZSBpcyB1c2VkIGZvciBoYW5kbGluZyB0aGUgY29ubmVjdGlvbiBhbmRcbiAgKiBzZW5kaW5nIHN0YXRlbWVudHMgdGhyb3VnaCB0aGUgY29ubmVjdGlvbi5cbiAgKiBAYWNjZXNzIHB1YmxpY1xuICAqL1xuXG5jbGFzcyBTZXNzaW9uIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtb2RlIHRoZSBkZWZhdWx0IGFjY2VzcyBtb2RlIGZvciB0aGlzIHNlc3Npb24uXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvblByb3ZpZGVyfSBjb25uZWN0aW9uUHJvdmlkZXIgLSB0aGUgY29ubmVjdGlvbiBwcm92aWRlciB0byBhY3F1aXJlIGNvbm5lY3Rpb25zIGZyb20uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYm9va21hcms9dW5kZWZpbmVkXSAtIHRoZSBpbml0aWFsIGJvb2ttYXJrIGZvciB0aGlzIHNlc3Npb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbY29uZmlnPXt9XSAtIHRoaXMgZHJpdmVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihtb2RlLCBjb25uZWN0aW9uUHJvdmlkZXIsIGJvb2ttYXJrLCBjb25maWcpIHtcbiAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICB0aGlzLl9yZWFkQ29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG4gICAgdGhpcy5fd3JpdGVDb25uZWN0aW9uSG9sZGVyID0gbmV3IENvbm5lY3Rpb25Ib2xkZXIoV1JJVEUsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG4gICAgdGhpcy5fb3BlbiA9IHRydWU7XG4gICAgdGhpcy5faGFzVHggPSBmYWxzZTtcbiAgICB0aGlzLl9sYXN0Qm9va21hcmsgPSBib29rbWFyaztcbiAgICB0aGlzLl90cmFuc2FjdGlvbkV4ZWN1dG9yID0gX2NyZWF0ZVRyYW5zYWN0aW9uRXhlY3V0b3IoY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gQ3lwaGVyIHN0YXRlbWVudFxuICAgKiBDb3VsZCBiZSBjYWxsZWQgd2l0aCBhIHN0YXRlbWVudCBvYmplY3QgaS5lLjoge3N0YXRlbWVudDogXCJNQVRDSCAuLi5cIiwgcGFyYW1ldGVyczoge3BhcmFtOiAxfX1cbiAgICogb3Igd2l0aCB0aGUgc3RhdGVtZW50IGFuZCBwYXJhbWV0ZXJzIGFzIHNlcGFyYXRlIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHttaXhlZH0gc3RhdGVtZW50IC0gQ3lwaGVyIHN0YXRlbWVudCB0byBleGVjdXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gTWFwIHdpdGggcGFyYW1ldGVycyB0byB1c2UgaW4gc3RhdGVtZW50XG4gICAqIEByZXR1cm4ge1Jlc3VsdH0gLSBOZXcgUmVzdWx0XG4gICAqL1xuICBydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzID0ge30pIHtcbiAgICBpZih0eXBlb2Ygc3RhdGVtZW50ID09PSAnb2JqZWN0JyAmJiBzdGF0ZW1lbnQudGV4dCkge1xuICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnRleHQ7XG4gICAgfVxuICAgIGFzc2VydFN0cmluZyhzdGF0ZW1lbnQsIFwiQ3lwaGVyIHN0YXRlbWVudFwiKTtcblxuICAgIGNvbnN0IHN0cmVhbU9ic2VydmVyID0gbmV3IF9SdW5PYnNlcnZlcih0aGlzLl9vblJ1bkZhaWx1cmUoKSk7XG4gICAgY29uc3QgY29ubmVjdGlvbkhvbGRlciA9IHRoaXMuX2Nvbm5lY3Rpb25Ib2xkZXJXaXRoTW9kZSh0aGlzLl9tb2RlKTtcbiAgICBpZiAoIXRoaXMuX2hhc1R4KSB7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmdldENvbm5lY3Rpb24oKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBzdHJlYW1PYnNlcnZlci5yZXNvbHZlQ29ubmVjdGlvbihjb25uZWN0aW9uKTtcbiAgICAgICAgY29ubmVjdGlvbi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgIGNvbm5lY3Rpb24ucHVsbEFsbChzdHJlYW1PYnNlcnZlcik7XG4gICAgICAgIGNvbm5lY3Rpb24uc3luYygpO1xuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gc3RyZWFtT2JzZXJ2ZXIub25FcnJvcihlcnJvcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJlYW1PYnNlcnZlci5vbkVycm9yKG5ld0Vycm9yKFwiU3RhdGVtZW50cyBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5IG9uIGEgXCJcbiAgICAgICArIFwic2Vzc2lvbiB3aXRoIGFuIG9wZW4gdHJhbnNhY3Rpb247IGVpdGhlciBydW4gZnJvbSB3aXRoaW4gdGhlIFwiXG4gICAgICAgKyBcInRyYW5zYWN0aW9uIG9yIHVzZSBhIGRpZmZlcmVudCBzZXNzaW9uLlwiKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUmVzdWx0KCBzdHJlYW1PYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzLCAoKSA9PiBzdHJlYW1PYnNlcnZlci5tZXRhKCksIGNvbm5lY3Rpb25Ib2xkZXIgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWdpbiBhIG5ldyB0cmFuc2FjdGlvbiBpbiB0aGlzIHNlc3Npb24uIEEgc2Vzc2lvbiBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0cmFuc2FjdGlvbiBydW5uaW5nIGF0IGEgdGltZSwgaWYgeW91XG4gICAqIHdhbnQgdG8gcnVuIG11bHRpcGxlIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zLCB5b3Ugc2hvdWxkIHVzZSBtdWx0aXBsZSBjb25jdXJyZW50IHNlc3Npb25zLlxuICAgKlxuICAgKiBXaGlsZSBhIHRyYW5zYWN0aW9uIGlzIG9wZW4gdGhlIHNlc3Npb24gY2Fubm90IGJlIHVzZWQgdG8gcnVuIHN0YXRlbWVudHMgb3V0c2lkZSB0aGUgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib29rbWFyayAtIGEgcmVmZXJlbmNlIHRvIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uIERFUFJFQ0FURUQ6IFRoaXMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgaW5cbiAgICogZmF2b3VyIG9mIHtAbGluayBEcml2ZXIjc2Vzc2lvbihzdHJpbmcpfSB0aGF0IGFjY2VwdHMgYW4gaW5pdGlhbCBib29rbWFyay4gU2Vzc2lvbiB3aWxsIGVuc3VyZSB0aGF0IGFsbCBuZXN0ZWRcbiAgICogdHJhbnNhY3Rpb25zIGFyZSBjaGFpbmVkIHdpdGggYm9va21hcmtzIHRvIGd1YXJhbnRlZSBjYXVzYWwgY29uc2lzdGVuY3kuXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gLSBOZXcgVHJhbnNhY3Rpb25cbiAgICovXG4gIGJlZ2luVHJhbnNhY3Rpb24oYm9va21hcmspIHtcbiAgICByZXR1cm4gdGhpcy5fYmVnaW5UcmFuc2FjdGlvbih0aGlzLl9tb2RlLCBib29rbWFyayk7XG4gIH1cblxuICBfYmVnaW5UcmFuc2FjdGlvbihhY2Nlc3NNb2RlLCBib29rbWFyaykge1xuICAgIGlmIChib29rbWFyaykge1xuICAgICAgYXNzZXJ0U3RyaW5nKGJvb2ttYXJrLCAnQm9va21hcmsnKTtcbiAgICAgIHRoaXMuX3VwZGF0ZUJvb2ttYXJrKGJvb2ttYXJrKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faGFzVHgpIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdZb3UgY2Fubm90IGJlZ2luIGEgdHJhbnNhY3Rpb24gb24gYSBzZXNzaW9uIHdpdGggYW4gb3BlbiB0cmFuc2FjdGlvbjsgJyArXG4gICAgICAgICdlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSB0cmFuc2FjdGlvbiBvciB1c2UgYSBkaWZmZXJlbnQgc2Vzc2lvbi4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlID0gRHJpdmVyLl92YWxpZGF0ZVNlc3Npb25Nb2RlKGFjY2Vzc01vZGUpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSB0aGlzLl9jb25uZWN0aW9uSG9sZGVyV2l0aE1vZGUobW9kZSk7XG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgIHRoaXMuX2hhc1R4ID0gdHJ1ZTtcblxuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oY29ubmVjdGlvbkhvbGRlciwgKCkgPT4ge1xuICAgICAgICB0aGlzLl9oYXNUeCA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIHRoaXMuX29uUnVuRmFpbHVyZSgpLCB0aGlzLl9sYXN0Qm9va21hcmssIHRoaXMuX3VwZGF0ZUJvb2ttYXJrLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgYm9va21hcmsgcmVjZWl2ZWQgZm9sbG93aW5nIHRoZSBsYXN0IGNvbXBsZXRlZCB7QGxpbmsgVHJhbnNhY3Rpb259LlxuICAgKlxuICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgcHJldmlvdXMgdHJhbnNhYyd0aW9uXG4gICAqL1xuICBsYXN0Qm9va21hcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RCb29rbWFyaztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGdpdmVuIHVuaXQgb2Ygd29yayBpbiBhIHtAbGluayBEcml2ZXIjUkVBRH0gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRyYW5zYWN0aW9uIHdpbGwgYXV0b21hdGljYWxseSBiZSBjb21taXR0ZWQgdW5sZXNzIHRoZSBnaXZlbiBmdW5jdGlvbiB0aHJvd3Mgb3IgcmV0dXJucyBhIHJlamVjdGVkIHByb21pc2UuXG4gICAqIFNvbWUgZmFpbHVyZXMgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHRoZSBjb21taXQgaXRzZWxmIHdpbGwgYmUgcmV0cmllZCB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBpbml0aWFsXG4gICAqIGRlbGF5IG9mIDEgc2Vjb25kIGFuZCBtYXhpbXVtIHJldHJ5IHRpbWUgb2YgMzAgc2Vjb25kcy4gTWF4aW11bSByZXRyeSB0aW1lIGlzIGNvbmZpZ3VyYWJsZSB2aWEgZHJpdmVyIGNvbmZpZydzXG4gICAqIDxjb2RlPm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lPC9jb2RlPiBwcm9wZXJ0eSBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24odHg6IFRyYW5zYWN0aW9uKTogUHJvbWlzZX0gdHJhbnNhY3Rpb25Xb3JrIC0gY2FsbGJhY2sgdGhhdCBleGVjdXRlcyBvcGVyYXRpb25zIGFnYWluc3RcbiAgICogYSBnaXZlbiB7QGxpbmsgVHJhbnNhY3Rpb259LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSByZXNvbHZlZCBwcm9taXNlIGFzIHJldHVybmVkIGJ5IHRoZSBnaXZlbiBmdW5jdGlvbiBvciByZWplY3RlZCBwcm9taXNlIHdoZW4gZ2l2ZW5cbiAgICogZnVuY3Rpb24gb3IgY29tbWl0IGZhaWxzLlxuICAgKi9cbiAgcmVhZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uV29yaykge1xuICAgIHJldHVybiB0aGlzLl9ydW5UcmFuc2FjdGlvbihSRUFELCB0cmFuc2FjdGlvbldvcmspO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgZ2l2ZW4gdW5pdCBvZiB3b3JrIGluIGEge0BsaW5rIERyaXZlciNXUklURX0gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRyYW5zYWN0aW9uIHdpbGwgYXV0b21hdGljYWxseSBiZSBjb21taXR0ZWQgdW5sZXNzIHRoZSBnaXZlbiBmdW5jdGlvbiB0aHJvd3Mgb3IgcmV0dXJucyBhIHJlamVjdGVkIHByb21pc2UuXG4gICAqIFNvbWUgZmFpbHVyZXMgb2YgdGhlIGdpdmVuIGZ1bmN0aW9uIG9yIHRoZSBjb21taXQgaXRzZWxmIHdpbGwgYmUgcmV0cmllZCB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBpbml0aWFsXG4gICAqIGRlbGF5IG9mIDEgc2Vjb25kIGFuZCBtYXhpbXVtIHJldHJ5IHRpbWUgb2YgMzAgc2Vjb25kcy4gTWF4aW11bSByZXRyeSB0aW1lIGlzIGNvbmZpZ3VyYWJsZSB2aWEgZHJpdmVyIGNvbmZpZydzXG4gICAqIDxjb2RlPm1heFRyYW5zYWN0aW9uUmV0cnlUaW1lPC9jb2RlPiBwcm9wZXJ0eSBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24odHg6IFRyYW5zYWN0aW9uKTogUHJvbWlzZX0gdHJhbnNhY3Rpb25Xb3JrIC0gY2FsbGJhY2sgdGhhdCBleGVjdXRlcyBvcGVyYXRpb25zIGFnYWluc3RcbiAgICogYSBnaXZlbiB7QGxpbmsgVHJhbnNhY3Rpb259LlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSByZXNvbHZlZCBwcm9taXNlIGFzIHJldHVybmVkIGJ5IHRoZSBnaXZlbiBmdW5jdGlvbiBvciByZWplY3RlZCBwcm9taXNlIHdoZW4gZ2l2ZW5cbiAgICogZnVuY3Rpb24gb3IgY29tbWl0IGZhaWxzLlxuICAgKi9cbiAgd3JpdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbldvcmspIHtcbiAgICByZXR1cm4gdGhpcy5fcnVuVHJhbnNhY3Rpb24oV1JJVEUsIHRyYW5zYWN0aW9uV29yayk7XG4gIH1cblxuICBfcnVuVHJhbnNhY3Rpb24oYWNjZXNzTW9kZSwgdHJhbnNhY3Rpb25Xb3JrKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uRXhlY3V0b3IuZXhlY3V0ZShcbiAgICAgICgpID0+IHRoaXMuX2JlZ2luVHJhbnNhY3Rpb24oYWNjZXNzTW9kZSwgdGhpcy5sYXN0Qm9va21hcmsoKSksXG4gICAgICB0cmFuc2FjdGlvbldvcmtcbiAgICApO1xuICB9XG5cbiAgX3VwZGF0ZUJvb2ttYXJrKG5ld0Jvb2ttYXJrKSB7XG4gICAgaWYgKG5ld0Jvb2ttYXJrKSB7XG4gICAgICB0aGlzLl9sYXN0Qm9va21hcmsgPSBuZXdCb29rbWFyaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhpcyBzZXNzaW9uLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBzZXNzaW9uIGhhcyBiZWVuIGNsb3NlZFxuICAgKiBAcmV0dXJuXG4gICAqL1xuICBjbG9zZShjYWxsYmFjayA9ICgoKSA9PiBudWxsKSkge1xuICAgIGlmICh0aGlzLl9vcGVuKSB7XG4gICAgICB0aGlzLl9vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbkV4ZWN1dG9yLmNsb3NlKCk7XG4gICAgICB0aGlzLl9yZWFkQ29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl93cml0ZUNvbm5lY3Rpb25Ib2xkZXIuY2xvc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vQ2FuIGJlIG92ZXJyaWRkZW4gdG8gYWRkIGVycm9yIGNhbGxiYWNrIG9uIFJVTlxuICBfb25SdW5GYWlsdXJlKCkge1xuICAgIHJldHVybiAoZXJyKSA9PiB7cmV0dXJuIGVycn07XG4gIH1cblxuICBfY29ubmVjdGlvbkhvbGRlcldpdGhNb2RlKG1vZGUpIHtcbiAgICBpZiAobW9kZSA9PT0gUkVBRCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3JlYWRDb25uZWN0aW9uSG9sZGVyO1xuICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gV1JJVEUpIHtcbiAgICAgIHJldHVybiB0aGlzLl93cml0ZUNvbm5lY3Rpb25Ib2xkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ld0Vycm9yKCdVbmtub3duIGFjY2VzcyBtb2RlOiAnICsgbW9kZSk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgdHJhbnNhY3Rpb25hbCByZXN1bHRzKi9cbmNsYXNzIF9SdW5PYnNlcnZlciBleHRlbmRzIFN0cmVhbU9ic2VydmVyIHtcbiAgY29uc3RydWN0b3Iob25FcnJvcikge1xuICAgIHN1cGVyKG9uRXJyb3IpO1xuICAgIHRoaXMuX21ldGEgPSB7fTtcbiAgfVxuXG4gIG9uQ29tcGxldGVkKG1ldGEpIHtcbiAgICBzdXBlci5vbkNvbXBsZXRlZChtZXRhKTtcbiAgICBmb3IodmFyIGtleSBpbiBtZXRhKXtcbiAgICAgIGlmKG1ldGEuaGFzT3duUHJvcGVydHkoa2V5KSl7XG4gICAgICAgIHRoaXMuX21ldGFba2V5XT1tZXRhW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbWV0YSgpIHtcbiAgICBjb25zdCBzZXJ2ZXJNZXRhID0ge3NlcnZlcjogdGhpcy5fY29ubi5zZXJ2ZXJ9O1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9tZXRhLCBzZXJ2ZXJNZXRhKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlVHJhbnNhY3Rpb25FeGVjdXRvcihjb25maWcpIHtcbiAgY29uc3QgbWF4UmV0cnlUaW1lTXMgPSAoY29uZmlnICYmIGNvbmZpZy5tYXhUcmFuc2FjdGlvblJldHJ5VGltZSkgPyBjb25maWcubWF4VHJhbnNhY3Rpb25SZXRyeVRpbWUgOiBudWxsO1xuICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IobWF4UmV0cnlUaW1lTXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTZXNzaW9uO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgU3RyZWFtT2JzZXJ2ZXIgZnJvbSAnLi9pbnRlcm5hbC9zdHJlYW0tb2JzZXJ2ZXInO1xuaW1wb3J0IFJlc3VsdCBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQge2Fzc2VydFN0cmluZ30gZnJvbSAnLi9pbnRlcm5hbC91dGlsJztcbmltcG9ydCB7RU1QVFlfQ09OTkVDVElPTl9IT0xERVJ9IGZyb20gJy4vaW50ZXJuYWwvY29ubmVjdGlvbi1ob2xkZXInO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB0cmFuc2FjdGlvbiBpbiB0aGUgTmVvNGogZGF0YWJhc2UuXG4gKlxuICogQGFjY2VzcyBwdWJsaWNcbiAqL1xuY2xhc3MgVHJhbnNhY3Rpb24ge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Q29ubmVjdGlvbkhvbGRlcn0gY29ubmVjdGlvbkhvbGRlciAtIHRoZSBjb25uZWN0aW9uIGhvbGRlciB0byBnZXQgY29ubmVjdGlvbiBmcm9tLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IG9uQ2xvc2UgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb3Igcm9sbGVkIGJhY2suXG4gICAqIEBwYXJhbSBlcnJvclRyYW5zZm9ybWVyIGNhbGxiYWNrIHVzZSB0byB0cmFuc2Zvcm0gZXJyb3JcbiAgICogQHBhcmFtIGJvb2ttYXJrIG9wdGlvbmFsIGJvb2ttYXJrXG4gICAqIEBwYXJhbSBvbkJvb2ttYXJrIGNhbGxiYWNrIGludm9rZWQgd2hlbiBuZXcgYm9va21hcmsgaXMgcHJvZHVjZWRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb25Ib2xkZXIsIG9uQ2xvc2UsIGVycm9yVHJhbnNmb3JtZXIsIGJvb2ttYXJrLCBvbkJvb2ttYXJrKSB7XG4gICAgdGhpcy5fY29ubmVjdGlvbkhvbGRlciA9IGNvbm5lY3Rpb25Ib2xkZXI7XG4gICAgbGV0IHN0cmVhbU9ic2VydmVyID0gbmV3IF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyKHRoaXMpO1xuICAgIGxldCBwYXJhbXMgPSB7fTtcbiAgICBpZiAoYm9va21hcmspIHtcbiAgICAgIHBhcmFtcyA9IHtib29rbWFyazogYm9va21hcmt9O1xuICAgIH1cblxuICAgIHRoaXMuX2Nvbm5lY3Rpb25Ib2xkZXIuZ2V0Q29ubmVjdGlvbigpLnRoZW4oY29ubiA9PiB7XG4gICAgICBzdHJlYW1PYnNlcnZlci5yZXNvbHZlQ29ubmVjdGlvbihjb25uKTtcbiAgICAgIGNvbm4ucnVuKCdCRUdJTicsIHBhcmFtcywgc3RyZWFtT2JzZXJ2ZXIpO1xuICAgICAgY29ubi5wdWxsQWxsKHN0cmVhbU9ic2VydmVyKTtcbiAgICB9KS5jYXRjaChlcnJvciA9PiBzdHJlYW1PYnNlcnZlci5vbkVycm9yKGVycm9yKSk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9IF9zdGF0ZXMuQUNUSVZFO1xuICAgIHRoaXMuX29uQ2xvc2UgPSBvbkNsb3NlO1xuICAgIHRoaXMuX2Vycm9yVHJhbnNmb3JtZXIgPSBlcnJvclRyYW5zZm9ybWVyO1xuICAgIHRoaXMuX29uQm9va21hcmsgPSBvbkJvb2ttYXJrIHx8ICgoKSA9PiB7fSk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIEN5cGhlciBzdGF0ZW1lbnRcbiAgICogQ291bGQgYmUgY2FsbGVkIHdpdGggYSBzdGF0ZW1lbnQgb2JqZWN0IGkuZS46IHtzdGF0ZW1lbnQ6IFwiTUFUQ0ggLi4uXCIsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19XG4gICAqIG9yIHdpdGggdGhlIHN0YXRlbWVudCBhbmQgcGFyYW1ldGVycyBhcyBzZXBhcmF0ZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7bWl4ZWR9IHN0YXRlbWVudCAtIEN5cGhlciBzdGF0ZW1lbnQgdG8gZXhlY3V0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1ldGVycyAtIE1hcCB3aXRoIHBhcmFtZXRlcnMgdG8gdXNlIGluIHN0YXRlbWVudFxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IE5ldyBSZXN1bHRcbiAgICovXG4gIHJ1bihzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpIHtcbiAgICBpZih0eXBlb2Ygc3RhdGVtZW50ID09PSAnb2JqZWN0JyAmJiBzdGF0ZW1lbnQudGV4dCkge1xuICAgICAgcGFyYW1ldGVycyA9IHN0YXRlbWVudC5wYXJhbWV0ZXJzIHx8IHt9O1xuICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnRleHQ7XG4gICAgfVxuICAgIGFzc2VydFN0cmluZyhzdGF0ZW1lbnQsIFwiQ3lwaGVyIHN0YXRlbWVudFwiKTtcblxuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5ydW4odGhpcy5fY29ubmVjdGlvbkhvbGRlciwgIG5ldyBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKSwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21taXRzIHRoZSB0cmFuc2FjdGlvbiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBBZnRlciBjb21taXR0aW5nIHRoZSB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtSZXN1bHR9IE5ldyBSZXN1bHRcbiAgICovXG4gIGNvbW1pdCgpIHtcbiAgICBsZXQgY29tbWl0dGVkID0gdGhpcy5fc3RhdGUuY29tbWl0KHRoaXMuX2Nvbm5lY3Rpb25Ib2xkZXIsIG5ldyBfVHJhbnNhY3Rpb25TdHJlYW1PYnNlcnZlcih0aGlzKSk7XG4gICAgdGhpcy5fc3RhdGUgPSBjb21taXR0ZWQuc3RhdGU7XG4gICAgLy9jbGVhbiB1cFxuICAgIHRoaXMuX29uQ2xvc2UoKTtcbiAgICByZXR1cm4gY29tbWl0dGVkLnJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb2xsYmFja3MgdGhlIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBBZnRlciByb2xsaW5nIGJhY2ssIHRoZSB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtSZXN1bHR9IE5ldyBSZXN1bHRcbiAgICovXG4gIHJvbGxiYWNrKCkge1xuICAgIGxldCBjb21taXR0ZWQgPSB0aGlzLl9zdGF0ZS5yb2xsYmFjayh0aGlzLl9jb25uZWN0aW9uSG9sZGVyLCBuZXcgX1RyYW5zYWN0aW9uU3RyZWFtT2JzZXJ2ZXIodGhpcykpO1xuICAgIHRoaXMuX3N0YXRlID0gY29tbWl0dGVkLnN0YXRlO1xuICAgIC8vY2xlYW4gdXBcbiAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgcmV0dXJuIGNvbW1pdHRlZC5yZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhpcyB0cmFuc2FjdGlvbiBpcyBhY3RpdmUsIHdoaWNoIG1lYW5zIGNvbW1pdCBhbmQgcm9sbGJhY2sgZGlkIG5vdCBoYXBwZW4uXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IDxjb2RlPnRydWU8L2NvZGU+IHdoZW4gbm90IGNvbW1pdHRlZCBhbmQgbm90IHJvbGxlZCBiYWNrLCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNPcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSA9PSBfc3RhdGVzLkFDVElWRTtcbiAgfVxuXG4gIF9vbkVycm9yKCkge1xuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAvLyBhdHRlbXB0IHRvIHJvbGxiYWNrLCB1c2VmdWwgd2hlbiBUcmFuc2FjdGlvbiNydW4oKSBmYWlsZWRcbiAgICAgIHJldHVybiB0aGlzLnJvbGxiYWNrKCkuY2F0Y2goaWdub3JlZEVycm9yID0+IHtcbiAgICAgICAgLy8gaWdub3JlIGFsbCBlcnJvcnMgYmVjYXVzZSBpdCBpcyBiZXN0IGVmZm9ydCBhbmQgdHJhbnNhY3Rpb24gbWlnaHQgYWxyZWFkeSBiZSByb2xsZWQgYmFja1xuICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgIC8vIGFmdGVyIHJvbGxiYWNrIGF0dGVtcHQgY2hhbmdlIHRoaXMgdHJhbnNhY3Rpb24ncyBzdGF0ZSB0byBGQUlMRURcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBfc3RhdGVzLkZBSUxFRDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlcnJvciBoYXBwZW5lZCBpbiBpbi1hY3RpdmUgdHJhbnNhY3Rpb24sIGp1c3QgdG8gdGhlIGNsZWFudXAgYW5kIGNoYW5nZSBzdGF0ZSB0byBGQUlMRURcbiAgICAgIHRoaXMuX3N0YXRlID0gX3N0YXRlcy5GQUlMRUQ7XG4gICAgICB0aGlzLl9vbkNsb3NlKCk7XG4gICAgICAvLyBubyBhc3luYyBhY3Rpb25zIG5lZWRlZCAtIHJldHVybiByZXNvbHZlZCBwcm9taXNlXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICB9XG59XG5cbi8qKiBJbnRlcm5hbCBzdHJlYW0gb2JzZXJ2ZXIgdXNlZCBmb3IgdHJhbnNhY3Rpb25hbCByZXN1bHRzKi9cbmNsYXNzIF9UcmFuc2FjdGlvblN0cmVhbU9ic2VydmVyIGV4dGVuZHMgU3RyZWFtT2JzZXJ2ZXIge1xuICBjb25zdHJ1Y3Rvcih0eCkge1xuICAgIHN1cGVyKHR4Ll9lcnJvclRyYW5zZm9ybWVyIHx8ICgoZXJyKSA9PiB7cmV0dXJuIGVycn0pKTtcbiAgICB0aGlzLl90eCA9IHR4O1xuICAgIC8vdGhpcyBpcyB0byB0byBhdm9pZCBtdWx0aXBsZSBjYWxscyB0byBvbkVycm9yIGNhdXNlZCBieSBJR05PUkVEXG4gICAgdGhpcy5faGFzRmFpbGVkID0gZmFsc2U7XG4gIH1cblxuICBvbkVycm9yKGVycm9yKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNGYWlsZWQpIHtcbiAgICAgIHRoaXMuX3R4Ll9vbkVycm9yKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHN1cGVyLm9uRXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLl9oYXNGYWlsZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25Db21wbGV0ZWQobWV0YSkge1xuICAgIHN1cGVyLm9uQ29tcGxldGVkKG1ldGEpO1xuICAgIGNvbnN0IGJvb2ttYXJrID0gbWV0YS5ib29rbWFyaztcbiAgICB0aGlzLl90eC5fb25Cb29rbWFyayhib29rbWFyayk7XG4gIH1cblxuICBzZXJ2ZXJNZXRhKCkge1xuICAgIGNvbnN0IHNlcnZlck1ldGEgPSB7c2VydmVyOiB0aGlzLl9jb25uLnNlcnZlcn07XG4gICAgcmV0dXJuIHNlcnZlck1ldGE7XG4gIH1cbn1cblxuLyoqIGludGVybmFsIHN0YXRlIG1hY2hpbmUgb2YgdGhlIHRyYW5zYWN0aW9uKi9cbmxldCBfc3RhdGVzID0ge1xuICAvL1RoZSB0cmFuc2FjdGlvbiBpcyBydW5uaW5nIHdpdGggbm8gZXhwbGljaXQgc3VjY2VzcyBvciBmYWlsdXJlIG1hcmtlZFxuICBBQ1RJVkU6IHtcbiAgICBjb21taXQ6IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikgPT4ge1xuICAgICAgcmV0dXJuIHtyZXN1bHQ6IF9ydW5QdWxsQWxsKFwiQ09NTUlUXCIsIGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSxcbiAgICAgICAgc3RhdGU6IF9zdGF0ZXMuU1VDQ0VFREVEfVxuICAgIH0sXG4gICAgcm9sbGJhY2s6IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikgPT4ge1xuICAgICAgcmV0dXJuIHtyZXN1bHQ6IF9ydW5QdWxsQWxsKFwiUk9MTEJBQ0tcIiwgY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIpLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDS307XG4gICAgfSxcbiAgICBydW46IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSA9PiB7XG4gICAgICBjb25uZWN0aW9uSG9sZGVyLmdldENvbm5lY3Rpb24oKS50aGVuKGNvbm4gPT4ge1xuICAgICAgICBvYnNlcnZlci5yZXNvbHZlQ29ubmVjdGlvbihjb25uKTtcbiAgICAgICAgY29ubi5ydW4oc3RhdGVtZW50LCBwYXJhbWV0ZXJzIHx8IHt9LCBvYnNlcnZlcik7XG4gICAgICAgIGNvbm4ucHVsbEFsbChvYnNlcnZlcik7XG4gICAgICAgIGNvbm4uc3luYygpO1xuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gb2JzZXJ2ZXIub25FcnJvcihlcnJvcikpO1xuXG4gICAgICByZXR1cm4gbmV3UnVuUmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsICgpID0+IG9ic2VydmVyLnNlcnZlck1ldGEoKSk7XG4gICAgfVxuICB9LFxuXG4gIC8vQW4gZXJyb3IgaGFzIG9jY3VycmVkLCB0cmFuc2FjdGlvbiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgYW5kIG5vIG1vcmUgbWVzc2FnZXMgd2lsbFxuICAvLyBiZSBzZW50IGZvciB0aGlzIHRyYW5zYWN0aW9uLlxuICBGQUlMRUQ6IHtcbiAgICBjb21taXQ6IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikgPT4ge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgc3RhdGVtZW50cyBpbiB0aGlzIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICtcbiAgICAgICAgXCJ0cmFuc2FjdGlvbiBoYXMgZmFpbGVkIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2suIFBsZWFzZSBzdGFydCBhIG5ld1wiICtcbiAgICAgICAgXCIgdHJhbnNhY3Rpb24gdG8gcnVuIGFub3RoZXIgc3RhdGVtZW50LlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7cmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5GQUlMRUR9O1xuICAgIH0sXG4gICAgcm9sbGJhY2s6IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikgPT4ge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7ZXJyb3I6XG4gICAgICBcIkNhbm5vdCByb2xsYmFjayB0cmFuc2FjdGlvbiwgYmVjYXVzZSBwcmV2aW91cyBzdGF0ZW1lbnRzIGluIHRoZSBcIiArXG4gICAgICBcInRyYW5zYWN0aW9uIGhhcyBmYWlsZWQgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwifSk7XG4gICAgICByZXR1cm4ge3Jlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiUk9MTEJBQ0tcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5GQUlMRUR9O1xuICAgIH0sXG4gICAgcnVuOiAoY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykgPT4ge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7ZXJyb3I6XG4gICAgICBcIkNhbm5vdCBydW4gc3RhdGVtZW50LCBiZWNhdXNlIHByZXZpb3VzIHN0YXRlbWVudHMgaW4gdGhlIFwiICtcbiAgICAgIFwidHJhbnNhY3Rpb24gaGFzIGZhaWxlZCBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcm9sbGVkIGJhY2suXCJ9KTtcbiAgICAgIHJldHVybiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKTtcbiAgICB9XG4gIH0sXG5cbiAgLy9UaGlzIHRyYW5zYWN0aW9uIGhhcyBzdWNjZXNzZnVsbHkgY29tbWl0dGVkXG4gIFNVQ0NFRURFRDoge1xuICAgIGNvbW1pdDogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtcbiAgICAgICAgZXJyb3I6IFwiQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24sIGJlY2F1c2UgY29tbWl0IGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbGxlZCBvbiB0aGUgdHJhbnNhY3Rpb24gYW5kIHRyYW5zYWN0aW9uIGhhcyBiZWVuIGNsb3NlZC4gUGxlYXNlIHN0YXJ0IGEgbmV3XCIgK1xuICAgICAgICBcIiB0cmFuc2FjdGlvbiB0byBydW4gYW5vdGhlciBzdGF0ZW1lbnQuXCJcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtyZXN1bHQ6IG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBcIkNPTU1JVFwiLCB7fSksIHN0YXRlOiBfc3RhdGVzLlNVQ0NFRURFRH07XG4gICAgfSxcbiAgICByb2xsYmFjazogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtlcnJvcjpcbiAgICAgICAgXCJDYW5ub3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb24sIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWNjZXNzZnVsbHkgY2xvc2VkLlwifSk7XG4gICAgICByZXR1cm4ge3Jlc3VsdDogbmV3RHVtbXlSZXN1bHQob2JzZXJ2ZXIsIFwiUk9MTEJBQ0tcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5TVUNDRUVERUR9O1xuICAgIH0sXG4gICAgcnVuOiAoY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykgPT4ge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7ZXJyb3I6XG4gICAgICBcIkNhbm5vdCBydW4gc3RhdGVtZW50LCBiZWNhdXNlIHRyYW5zYWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gc3VjY2Vzc2Z1bGx5IGNsb3NlZC5cIn0pO1xuICAgICAgcmV0dXJuIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfSxcblxuICAvL1RoaXMgdHJhbnNhY3Rpb24gaGFzIGJlZW4gcm9sbGVkIGJhY2tcbiAgUk9MTEVEX0JBQ0s6IHtcbiAgICBjb21taXQ6IChjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikgPT4ge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7XG4gICAgICAgIGVycm9yOiBcIkNhbm5vdCBjb21taXQgdGhpcyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHJvbGxlZCBiYWNrLlwiXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7cmVzdWx0OiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgXCJDT01NSVRcIiwge30pLCBzdGF0ZTogX3N0YXRlcy5ST0xMRURfQkFDS307XG4gICAgfSxcbiAgICByb2xsYmFjazogKGNvbm5lY3Rpb25Ib2xkZXIsIG9ic2VydmVyKSA9PiB7XG4gICAgICBvYnNlcnZlci5vbkVycm9yKHtlcnJvcjpcbiAgICAgICAgXCJDYW5ub3Qgcm9sbGJhY2sgdHJhbnNhY3Rpb24sIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIn0pO1xuICAgICAgcmV0dXJuIHtyZXN1bHQ6IG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBcIlJPTExCQUNLXCIsIHt9KSwgc3RhdGU6IF9zdGF0ZXMuUk9MTEVEX0JBQ0t9O1xuICAgIH0sXG4gICAgcnVuOiAoY29ubmVjdGlvbkhvbGRlciwgb2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycykgPT4ge1xuICAgICAgb2JzZXJ2ZXIub25FcnJvcih7ZXJyb3I6XG4gICAgICAgIFwiQ2Fubm90IHJ1biBzdGF0ZW1lbnQsIGJlY2F1c2UgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiByb2xsZWQgYmFjay5cIn0pO1xuICAgICAgcmV0dXJuIG5ld0R1bW15UmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX3J1blB1bGxBbGwobXNnLCBjb25uZWN0aW9uSG9sZGVyLCBvYnNlcnZlcikge1xuICBjb25uZWN0aW9uSG9sZGVyLmdldENvbm5lY3Rpb24oKS50aGVuKFxuICAgIGNvbm4gPT4ge1xuICAgICAgb2JzZXJ2ZXIucmVzb2x2ZUNvbm5lY3Rpb24oY29ubik7XG4gICAgICBjb25uLnJ1bihtc2csIHt9LCBvYnNlcnZlcik7XG4gICAgICBjb25uLnB1bGxBbGwob2JzZXJ2ZXIpO1xuICAgICAgY29ubi5zeW5jKCk7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4gb2JzZXJ2ZXIub25FcnJvcihlcnJvcikpO1xuXG4gIC8vIGZvciBjb21taXQgJiByb2xsYmFjayB3ZSBuZWVkIHJlc3VsdCB0aGF0IHVzZXMgcmVhbCBjb25uZWN0aW9uIGhvbGRlciBhbmQgbm90aWZpZXMgaXQgd2hlblxuICAvLyBjb25uZWN0aW9uIGlzIG5vdCBuZWVkZWQgYW5kIGNhbiBiZSBzYWZlbHkgcmVsZWFzZWQgdG8gdGhlIHBvb2xcbiAgcmV0dXJuIG5ldyBSZXN1bHQob2JzZXJ2ZXIsIG1zZywge30sIGVtcHR5TWV0YWRhdGFTdXBwbGllciwgY29ubmVjdGlvbkhvbGRlcik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBSZXN1bHR9IHdpdGggZW1wdHkgY29ubmVjdGlvbiBob2xkZXIuXG4gKiBTaG91bGQgYmUgdXNlZCBhcyBhIHJlc3VsdCBmb3IgcnVubmluZyBjeXBoZXIgc3RhdGVtZW50cy4gVGhleSBjYW4gcmVzdWx0IGluIG1ldGFkYXRhIGJ1dCBzaG91bGQgbm90XG4gKiBpbmZsdWVuY2UgcmVhbCBjb25uZWN0aW9uIGhvbGRlciB0byByZWxlYXNlIGNvbm5lY3Rpb25zIGJlY2F1c2Ugc2luZ2xlIHRyYW5zYWN0aW9uIGNhbiBoYXZlXG4gKiB7QGxpbmsgVHJhbnNhY3Rpb24jcnVufSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuXG4gKiBAcGFyYW0ge1N0cmVhbU9ic2VydmVyfSBvYnNlcnZlciAtIGFuIG9ic2VydmVyIGZvciB0aGUgY3JlYXRlZCByZXN1bHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gdGhlIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMgLSB0aGUgcGFyYW1ldGVycyBmb3IgY3lwaGVyIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VkIHRoZSByZXN1bHQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRhZGF0YVN1cHBsaWVyIC0gdGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG1ldGFkYXRhIG9iamVjdC5cbiAqIEByZXR1cm4ge1Jlc3VsdH0gbmV3IHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gbmV3UnVuUmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIG1ldGFkYXRhU3VwcGxpZXIpIHtcbiAgcmV0dXJuIG5ldyBSZXN1bHQob2JzZXJ2ZXIsIHN0YXRlbWVudCwgcGFyYW1ldGVycywgbWV0YWRhdGFTdXBwbGllciwgRU1QVFlfQ09OTkVDVElPTl9IT0xERVIpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgUmVzdWx0fSB3aXRob3V0IG1ldGFkYXRhIHN1cHBsaWVyIGFuZCB3aXRoIGVtcHR5IGNvbm5lY3Rpb24gaG9sZGVyLlxuICogRm9yIGNhc2VzIHdoZW4gcmVzdWx0IHJlcHJlc2VudHMgYW4gaW50ZXJtZWRpYXRlIG9yIGZhaWxlZCBhY3Rpb24sIGRvZXMgbm90IHJlcXVpcmUgYW55IG1ldGFkYXRhIGFuZCBkb2VzIG5vdFxuICogbmVlZCB0byBpbmZsdWVuY2UgcmVhbCBjb25uZWN0aW9uIGhvbGRlciB0byByZWxlYXNlIGNvbm5lY3Rpb25zLlxuICogQHBhcmFtIHtTdHJlYW1PYnNlcnZlcn0gb2JzZXJ2ZXIgLSBhbiBvYnNlcnZlciBmb3IgdGhlIGNyZWF0ZWQgcmVzdWx0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlbWVudCAtIHRoZSBjeXBoZXIgc3RhdGVtZW50IHRoYXQgcHJvZHVjZWQgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzIC0gdGhlIHBhcmFtZXRlcnMgZm9yIGN5cGhlciBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0LlxuICogQHJldHVybiB7UmVzdWx0fSBuZXcgcmVzdWx0LlxuICovXG5mdW5jdGlvbiBuZXdEdW1teVJlc3VsdChvYnNlcnZlciwgc3RhdGVtZW50LCBwYXJhbWV0ZXJzKSB7XG4gIHJldHVybiBuZXcgUmVzdWx0KG9ic2VydmVyLCBzdGF0ZW1lbnQsIHBhcmFtZXRlcnMsIGVtcHR5TWV0YWRhdGFTdXBwbGllciwgRU1QVFlfQ09OTkVDVElPTl9IT0xERVIpO1xufVxuXG5mdW5jdGlvbiBlbXB0eU1ldGFkYXRhU3VwcGxpZXIoKSB7XG4gIHJldHVybiB7fTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVHJhbnNhY3Rpb247XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gRE8gTk9UIENIQU5HRSBUSEUgVkVSU0lPTiBCRUxPVyBIRVJFXG4vLyBUaGlzIGlzIHNldCBieSB0aGUgYnVpbGQgc3lzdGVtIGF0IHJlbGVhc2UgdGltZSwgdXNpbmdcbi8vICAgZ3VscCBzZXQgLS12ZXJzaW9uIDxyZWxlYXNldmVyc2lvbj5cbi8vXG4vLyBUaGlzIGlzIHNldCB1cCB0aGlzIHdheSB0byBrZWVwIHRoZSB2ZXJzaW9uIGluIHRoZSBjb2RlIGluXG4vLyBzeW5jIHdpdGggdGhlIG5wbSBwYWNrYWdlIHZlcnNpb24sIGFuZCB0byBhbGxvdyB0aGUgYnVpbGRcbi8vIHN5c3RlbSB0byBjb250cm9sIHZlcnNpb24gbmFtZXMgYXQgcGFja2FnaW5nIHRpbWUuXG5leHBvcnQgZGVmYXVsdCBcIjAuMC4wLWRldlwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBhbGxvYyA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5hbGxvYztcbnZhciBDb21iaW5lZEJ1ZmZlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9idWYnKS5Db21iaW5lZEJ1ZmZlcjtcbnZhciB1dGY4ID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3V0ZjgnKS5kZWZhdWx0O1xudmFyIFVucGFja2VyID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9wYWNrc3RyZWFtLmpzXCIpLlVucGFja2VyO1xuXG5kZXNjcmliZSgnYnVmZmVycycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIGhhdmUgaGVscGZ1bCB0b1N0cmluZycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYyg0KTtcbiAgICBiLndyaXRlSW50OCgxKTtcbiAgICBiLndyaXRlSW50OCg4KTtcbiAgICBiLndyaXRlSW50OCgxNSk7XG4gICAgYi53cml0ZUludDgoMTI3KTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgc3RyID0gYi50b1N0cmluZygpO1xuICAgIHZhciBoZXggPSBiLnRvSGV4KCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBzdHIgKS50b0NvbnRhaW4oXCIoIHBvc2l0aW9uPTQgKVxcbiAgMDEgMDggMGYgN2ZcIik7XG4gICAgZXhwZWN0KGhleCkudG9CZShcIjAxIDA4IDBmIDdmIFwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygxKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQ4KCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50OCgwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCBhbmQgd3JpdGUgMTYtYml0IHVuc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDIpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dFVJbnQxNiggMCwgbiApO1xuXG4gICAgICAvLyBUaGVuXG4gICAgICBleHBlY3QoIGIuZ2V0VUludDE2KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0VUludDMyKCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRVSW50MzIoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDgtYml0IHNpZ25lZCBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIgPSBhbGxvYygxKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDgoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDgoMCkgKS50b0JlKCBuICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgYW5kIHdyaXRlIDE2LWJpdCBzaWduZWQgaW50ZWdlcnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoMik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE0OyBpKyspIHtcbiAgICAgIHZhciBuID0gTWF0aC5wb3coMiwgaSk7XG5cbiAgICAgIC8vIFdoZW5cbiAgICAgIGIucHV0SW50MTYoIDAsIG4gKTtcblxuICAgICAgLy8gVGhlblxuICAgICAgZXhwZWN0KCBiLmdldEludDE2KDApICkudG9CZSggbiApO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIGFuZCB3cml0ZSAzMi1iaXQgc2lnbmVkIGludGVnZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XG4gICAgICB2YXIgbiA9IE1hdGgucG93KDIsIGkpO1xuXG4gICAgICAvLyBXaGVuXG4gICAgICBiLnB1dEludDMyKCAwLCBuICk7XG5cbiAgICAgIC8vIFRoZW5cbiAgICAgIGV4cGVjdCggYi5nZXRJbnQzMigwKSApLnRvQmUoIG4gKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZW5jb2RlIGxpc3QgY29ycmVjdGx5JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgYiA9IGFsbG9jKDUpO1xuICAgIGIud3JpdGVVSW50OCgweDkwIHwgMHgyKTtcbiAgICBiID0gd3JpdGVTdHJpbmcoYiwgJ2EnKTtcbiAgICBiID0gd3JpdGVTdHJpbmcoYiwgJ2InKTtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGhleCA9IGIudG9IZXgoKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGhleCkudG9CZShcIjkyIDgxIDYxIDgxIDYyIFwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZWNvZGUgbGlzdCBjb3JyZWN0bHknLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBiID0gYWxsb2MoNSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4OTIpO1xuICAgIGIud3JpdGVVSW50OCgweDgxKTtcbiAgICBiLndyaXRlVUludDgoMHg2MSk7XG4gICAgYi53cml0ZVVJbnQ4KDB4ODEpO1xuICAgIGIud3JpdGVVSW50OCgweDYyKTtcbiAgICBiLnJlc2V0KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRhdGEgPSBuZXcgVW5wYWNrZXIoKS51bnBhY2soIGIgKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoZGF0YVswXSkudG9CZSgnYScpO1xuICAgIGV4cGVjdChkYXRhWzFdKS50b0JlKCdiJyk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb21iaW5lZEJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHJlYWQgaW50OCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGIxID0gYWxsb2MoMSk7XG4gICAgdmFyIGIyID0gYWxsb2MoMSk7XG4gICAgYjEucHV0SW50OCgwLCAxKTtcbiAgICBiMi5wdXRJbnQ4KDAsIDIpO1xuXG4gICAgdmFyIGIgPSBuZXcgQ29tYmluZWRCdWZmZXIoW2IxLGIyXSk7XG4gICAgXG4gICAgLy8gV2hlblxuICAgIHZhciBmaXJzdCA9IGIucmVhZEludDgoKTtcbiAgICB2YXIgc2Vjb25kID0gYi5yZWFkSW50OCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChmaXJzdCkudG9CZSgxKTtcbiAgICBleHBlY3Qoc2Vjb25kKS50b0JlKDIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgZGl2aWRlZCBmbG9hdDY0JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgaW5uZXIgPSBhbGxvYyg4KTtcbiAgICBpbm5lci5wdXRGbG9hdDY0KDAsIDAuMSk7XG5cbiAgICB2YXIgYiA9IG5ldyBDb21iaW5lZEJ1ZmZlcihbaW5uZXIucmVhZFNsaWNlKDQpLGlubmVyLnJlYWRTbGljZSg0KV0pO1xuICAgIFxuICAgIC8vIFdoZW5cbiAgICB2YXIgcmVhZCA9IGIucmVhZEZsb2F0NjQoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QocmVhZCkudG9CZSgwLjEpO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiB3cml0ZVN0cmluZyhiLCBzdHIpIHtcbiAgdmFyIGJ5dGVzID0gdXRmOC5lbmNvZGUoc3RyKTtcbiAgdmFyIHNpemUgPSBieXRlcy5sZW5ndGg7XG4gIGIud3JpdGVVSW50OCgweDgwIHwgc2l6ZSk7XG4gIGIud3JpdGVCeXRlcyhieXRlcyk7XG4gIHJldHVybiBiO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBDaHVua2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NodW5raW5nJykuQ2h1bmtlcjtcbnZhciBEZWNodW5rZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvY2h1bmtpbmcnKS5EZWNodW5rZXI7XG52YXIgYWxsb2MgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuYWxsb2M7XG52YXIgQ29tYmluZWRCdWZmZXIgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJykuQ29tYmluZWRCdWZmZXI7XG52YXIgRHVtbXlDaGFubmVsID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NoLWR1bW15LmpzJykuY2hhbm5lbDtcblxuZGVzY3JpYmUoJ0NodW5rZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBjaHVuayBzaW1wbGUgZGF0YScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNoID0gbmV3IER1bW15Q2hhbm5lbCgpO1xuICAgIHZhciBjaHVua2VyID0gbmV3IENodW5rZXIoY2gpO1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQzMigxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwOCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMiBcIik7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGNodW5rIGJsb2JzIGxhcmdlciB0aGFuIHRoZSBvdXRwdXQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCwgNCk7XG5cbiAgICAvLyBXaGVuXG4gICAgY2h1bmtlci53cml0ZUJ5dGVzKGJ5dGVzKCAxLDIsMyw0LDUsNiApKTtcbiAgICBjaHVua2VyLmZsdXNoKCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBjaC50b0hleCgpICkudG9CZShcIjAwIDAyIDAxIDAyIDAwIDAyIDAzIDA0IDAwIDAyIDA1IDA2IFwiKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgaW5jbHVkZSBtZXNzYWdlIGJvdW5kYXJpZXMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBjaCA9IG5ldyBEdW1teUNoYW5uZWwoKTtcbiAgICB2YXIgY2h1bmtlciA9IG5ldyBDaHVua2VyKGNoKTtcblxuICAgIC8vIFdoZW5cbiAgICBjaHVua2VyLndyaXRlSW50MzIoMSk7XG4gICAgY2h1bmtlci5tZXNzYWdlQm91bmRhcnkoKTtcbiAgICBjaHVua2VyLndyaXRlSW50MzIoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggY2gudG9IZXgoKSApLnRvQmUoXCIwMCAwNCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwNCAwMCAwMCAwMCAwMiBcIik7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEZWNodW5rZXInLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCB1bmNodW5rIGEgc2ltcGxlIG1lc3NhZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtZXNzYWdlcyA9IFtdO1xuICAgIHZhciBkZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihkZWNodW5rZXIpO1xuICAgIGRlY2h1bmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihidWZmZXIpIHsgbWVzc2FnZXMucHVzaChidWZmZXIpOyB9O1xuXG4gICAgLy8gV2hlblxuICAgIGNodW5rZXIud3JpdGVJbnQxNigxKTtcbiAgICBjaHVua2VyLndyaXRlSW50MTYoMik7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuICAgIGNodW5rZXIud3JpdGVJbnQxNigzKTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIG1lc3NhZ2VzLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICBleHBlY3QoIG1lc3NhZ2VzWzBdLnRvSGV4KCkgKS50b0JlKCBcIjAwIDAxIDAwIDAyIDAwIDAzIFwiICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIG1lc3NhZ2Ugc3BsaXQgYXQgYW55IHBvaW50JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgY2ggPSBuZXcgRHVtbXlDaGFubmVsKCk7XG4gICAgdmFyIGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaCk7XG5cbiAgICAvLyBBbmQgZ2l2ZW4gdGhlIGZvbGxvd2luZyBtZXNzYWdlXG4gICAgY2h1bmtlci53cml0ZUludDgoMSk7XG4gICAgY2h1bmtlci53cml0ZUludDE2KDIpO1xuICAgIGNodW5rZXIud3JpdGVJbnQzMigzKTtcbiAgICBjaHVua2VyLndyaXRlVUludDgoNCk7XG4gICAgY2h1bmtlci53cml0ZVVJbnQzMig1KTtcbiAgICBjaHVua2VyLm1lc3NhZ2VCb3VuZGFyeSgpO1xuICAgIGNodW5rZXIuZmx1c2goKTtcblxuICAgIHZhciBjaHVua2VkID0gY2gudG9CdWZmZXIoKTtcblxuICAgIC8vIFdoZW4gSSB0cnkgc3BsaXR0aW5nIHRoaXMgY2h1bmtlZCBkYXRhIGF0IGV2ZXJ5IHBvc3NpYmxlIHBvc2l0aW9uXG4gICAgLy8gaW50byB0d28gc2VwYXJhdGUgYnVmZmVycywgYW5kIHNlbmQgdGhvc2UgdG8gdGhlIGRlY2h1bmtlclxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2h1bmtlZC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNsaWNlMSA9IGNodW5rZWQuZ2V0U2xpY2UoIDAsIGkgKTtcbiAgICAgIHZhciBzbGljZTIgPSBjaHVua2VkLmdldFNsaWNlKCBpLCBjaHVua2VkLmxlbmd0aCAtIGkgKTtcblxuICAgICAgLy8gRGVjaHVuayB0aGUgc2xpY2VzXG4gICAgICB2YXIgbWVzc2FnZXMgPSBbXTtcbiAgICAgIHZhciBkZWNodW5rZXIgPSBuZXcgRGVjaHVua2VyKCk7XG4gICAgICBkZWNodW5rZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYnVmZmVyKSB7IG1lc3NhZ2VzLnB1c2goYnVmZmVyKTsgfTtcbiAgICAgIGRlY2h1bmtlci53cml0ZSggc2xpY2UxICk7XG4gICAgICBkZWNodW5rZXIud3JpdGUoIHNsaWNlMiApO1xuXG4gICAgICAvLyBUaGVuLCB0aGUgb3V0cHV0IHNob3VsZCBiZSBjb3JyZWN0XG4gICAgICBleHBlY3QoIG1lc3NhZ2VzLmxlbmd0aCApLnRvQmUoIDEgKTtcbiAgICAgIGV4cGVjdCggbWVzc2FnZXNbMF0udG9IZXgoKSApLnRvQmUoIFwiMDEgMDAgMDIgMDAgMDAgMDAgMDMgMDQgMDAgMDAgMDAgMDUgXCIgKTtcbiAgICB9O1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBieXRlcygpIHtcbiAgdmFyIGIgPSBhbGxvYyggYXJndW1lbnRzLmxlbmd0aCApO1xuICBmb3IoIHZhciBpPTA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuICAgIGIud3JpdGVVSW50OCggYXJndW1lbnRzW2ldICk7XG4gIH1cbiAgYi5wb3NpdGlvbiA9IDA7XG4gIHJldHVybiBiO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBDb25uZWN0aW9uSG9sZGVyLCB7RU1QVFlfQ09OTkVDVElPTl9IT0xERVJ9IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9jb25uZWN0aW9uLWhvbGRlcic7XG5pbXBvcnQge1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcn0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2Nvbm5lY3Rpb24tcHJvdmlkZXJzJztcbmltcG9ydCB7UkVBRH0gZnJvbSAnLi4vLi4vc3JjL3YxL2RyaXZlcic7XG5pbXBvcnQgRmFrZUNvbm5lY3Rpb24gZnJvbSAnLi9mYWtlLWNvbm5lY3Rpb24nO1xuXG5kZXNjcmliZSgnRW1wdHlDb25uZWN0aW9uSG9sZGVyJywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHJlamVjdGVkIHByb21pc2UgaW5zdGVhZCBvZiBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgRU1QVFlfQ09OTkVDVElPTl9IT0xERVIuZ2V0Q29ubmVjdGlvbigpLmNhdGNoKCgpID0+IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcmVzb2x2ZWQgcHJvbWlzZSBvbiByZWxlYXNlJywgZG9uZSA9PiB7XG4gICAgRU1QVFlfQ09OTkVDVElPTl9IT0xERVIucmVsZWFzZUNvbm5lY3Rpb24oKS50aGVuKCgpID0+IHtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcmVzb2x2ZWQgcHJvbWlzZSBvbiBjbG9zZScsIGRvbmUgPT4ge1xuICAgIEVNUFRZX0NPTk5FQ1RJT05fSE9MREVSLmNsb3NlKCkudGhlbigoKSA9PiB7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcblxuZGVzY3JpYmUoJ0Nvbm5lY3Rpb25Ib2xkZXInLCAoKSA9PiB7XG5cbiAgaXQoJ3Nob3VsZCBhY3F1aXJlIG5ldyBjb25uZWN0aW9uIGR1cmluZyBpbml0aWFsaXphdGlvbicsICgpID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXcgUmVjb3JkaW5nQ29ubmVjdGlvblByb3ZpZGVyKFtuZXcgRmFrZUNvbm5lY3Rpb24oKV0pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgZXhwZWN0KGNvbm5lY3Rpb25Qcm92aWRlci5hY3F1aXJlQ29ubmVjdGlvbkludm9rZWQpLnRvQmUoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFjcXVpcmVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ld1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uKTtcbiAgICBjb25zdCBjb25uZWN0aW9uSG9sZGVyID0gbmV3IENvbm5lY3Rpb25Ib2xkZXIoUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuZ2V0Q29ubmVjdGlvbigpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbikudG9CZShjb25uZWN0aW9uKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gd2l0aCBzaW5nbGUgdXNlcicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXdTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIoY29ubmVjdGlvbik7XG4gICAgY29uc3QgY29ubmVjdGlvbkhvbGRlciA9IG5ldyBDb25uZWN0aW9uSG9sZGVyKFJFQUQsIGNvbm5lY3Rpb25Qcm92aWRlcik7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG5cbiAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5pc1JlbGVhc2VkT25jZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHJlbGVhc2UgY29ubmVjdGlvbiB3aXRoIG11bHRpcGxlIHVzZXJzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ld1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uKTtcbiAgICBjb25zdCBjb25uZWN0aW9uSG9sZGVyID0gbmV3IENvbm5lY3Rpb25Ib2xkZXIoUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNOZXZlclJlbGVhc2VkKCkpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gd2l0aCBtdWx0aXBsZSB1c2VycyB3aGVuIGFsbCB1c2VycyByZWxlYXNlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ld1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uKTtcbiAgICBjb25zdCBjb25uZWN0aW9uSG9sZGVyID0gbmV3IENvbm5lY3Rpb25Ib2xkZXIoUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcbiAgICBjb25uZWN0aW9uSG9sZGVyLmluaXRpYWxpemVDb25uZWN0aW9uKCk7XG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25uZWN0aW9uSG9sZGVyLnJlbGVhc2VDb25uZWN0aW9uKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNSZWxlYXNlZE9uY2UoKSkudG9CZVRydXRoeSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkbyBub3RoaW5nIHdoZW4gY2xvc2VkIGFuZCBub3QgaW5pdGlhbGl6ZWQnLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb24pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNOZXZlclJlbGVhc2VkKCkpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjbG9zZSBldmVuIHdoZW4gdXNlcnMgZXhpc3QnLCBkb25lID0+IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3U2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKGNvbm5lY3Rpb24pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuY2xvc2UoKS50aGVuKCgpID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmlzUmVsZWFzZWRPbmNlT25TZXNzaW9uQ2xvc2UoKSkudG9CZVRydXRoeSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluaXRpYWxpemUgbmV3IGNvbm5lY3Rpb24gYWZ0ZXIgcmVsZWFzaW5nIGN1cnJlbnQgb25lJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbjEgPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBjb25uZWN0aW9uMiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ldyBSZWNvcmRpbmdDb25uZWN0aW9uUHJvdmlkZXIoW2Nvbm5lY3Rpb24xLCBjb25uZWN0aW9uMl0pO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Ib2xkZXIgPSBuZXcgQ29ubmVjdGlvbkhvbGRlcihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuXG4gICAgY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24xLmlzUmVsZWFzZWRPbmNlKCkpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgICAgY29ubmVjdGlvbkhvbGRlci5yZWxlYXNlQ29ubmVjdGlvbigpLnRoZW4oKCkgPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbjIuaXNSZWxlYXNlZE9uY2UoKSkudG9CZVRydXRoeSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIG5ldyBjb25uZWN0aW9uIGFmdGVyIGJlaW5nIGNsb3NlZCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24xID0gbmV3IEZha2VDb25uZWN0aW9uKCk7XG4gICAgY29uc3QgY29ubmVjdGlvbjIgPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBjb25uZWN0aW9uUHJvdmlkZXIgPSBuZXcgUmVjb3JkaW5nQ29ubmVjdGlvblByb3ZpZGVyKFtjb25uZWN0aW9uMSwgY29ubmVjdGlvbjJdKTtcbiAgICBjb25zdCBjb25uZWN0aW9uSG9sZGVyID0gbmV3IENvbm5lY3Rpb25Ib2xkZXIoUkVBRCwgY29ubmVjdGlvblByb3ZpZGVyKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuaW5pdGlhbGl6ZUNvbm5lY3Rpb24oKTtcblxuICAgIGNvbm5lY3Rpb25Ib2xkZXIuY2xvc2UoKS50aGVuKCgpID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uMS5pc1JlbGVhc2VkT25jZU9uU2Vzc2lvbkNsb3NlKCkpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgY29ubmVjdGlvbkhvbGRlci5pbml0aWFsaXplQ29ubmVjdGlvbigpO1xuICAgICAgY29ubmVjdGlvbkhvbGRlci5jbG9zZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBleHBlY3QoY29ubmVjdGlvbjIuaXNSZWxlYXNlZE9uY2VPblNlc3Npb25DbG9zZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5jbGFzcyBSZWNvcmRpbmdDb25uZWN0aW9uUHJvdmlkZXIgZXh0ZW5kcyBTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXIge1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb25zKSB7XG4gICAgc3VwZXIoUHJvbWlzZS5yZXNvbHZlKCkpO1xuICAgIHRoaXMuY29ubmVjdGlvblByb21pc2VzID0gY29ubmVjdGlvbnMubWFwKGNvbm4gPT4gUHJvbWlzZS5yZXNvbHZlKGNvbm4pKTtcbiAgICB0aGlzLmFjcXVpcmVDb25uZWN0aW9uSW52b2tlZCA9IDA7XG4gIH1cblxuICBhY3F1aXJlQ29ubmVjdGlvbihtb2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvblByb21pc2VzW3RoaXMuYWNxdWlyZUNvbm5lY3Rpb25JbnZva2VkKytdO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5ld1NpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihjb25uZWN0aW9uKSB7XG4gIHJldHVybiBuZXcgU2luZ2xlQ29ubmVjdGlvblByb3ZpZGVyKFByb21pc2UucmVzb2x2ZShjb25uZWN0aW9uKSk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtSRUFELCBXUklURX0gZnJvbSAnLi4vLi4vc3JjL3YxL2RyaXZlcic7XG5pbXBvcnQgSW50ZWdlciwge2ludH0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVnZXInO1xuaW1wb3J0IHtTRVJWSUNFX1VOQVZBSUxBQkxFfSBmcm9tICcuLi8uLi9zcmMvdjEvZXJyb3InO1xuaW1wb3J0IFJvdXRpbmdUYWJsZSBmcm9tICcuLi8uLi9zcmMvdjEvaW50ZXJuYWwvcm91dGluZy10YWJsZSc7XG5pbXBvcnQgUm91bmRSb2JpbkFycmF5IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9yb3VuZC1yb2Jpbi1hcnJheSc7XG5pbXBvcnQge0RpcmVjdENvbm5lY3Rpb25Qcm92aWRlciwgTG9hZEJhbGFuY2VyfSBmcm9tICcuLi8uLi9zcmMvdjEvaW50ZXJuYWwvY29ubmVjdGlvbi1wcm92aWRlcnMnO1xuaW1wb3J0IFBvb2wgZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL3Bvb2wnO1xuXG5jb25zdCBOT19PUF9EUklWRVJfQ0FMTEJBQ0sgPSAoKSA9PiB7XG59O1xuXG5kZXNjcmliZSgnRGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyJywgKCkgPT4ge1xuXG4gIGl0KCdhY3F1aXJlcyBjb25uZWN0aW9uIGZyb20gdGhlIHBvb2wnLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25Qcm92aWRlciA9IG5ld0RpcmVjdENvbm5lY3Rpb25Qcm92aWRlcignbG9jYWxob3N0OjEyMycsIHBvb2wpO1xuXG4gICAgY29ubmVjdGlvblByb3ZpZGVyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ2xvY2FsaG9zdDoxMjMnKTtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLnJlbGVhc2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QocG9vbC5oYXMoJ2xvY2FsaG9zdDoxMjMnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcblxuZGVzY3JpYmUoJ0xvYWRCYWxhbmNlcicsICgpID0+IHtcblxuICBpdCgnY2FuIGZvcmdldCBhZGRyZXNzJywgKCkgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTInLCAnc2VydmVyLTQnXVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuZm9yZ2V0KCdzZXJ2ZXItMicpO1xuXG4gICAgZXhwZWN0Um91dGluZ1RhYmxlKGxvYWRCYWxhbmNlcixcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnXSxcbiAgICAgIFsnc2VydmVyLTQnXVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdjYW4gbm90IGZvcmdldCB1bmtub3duIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5mb3JnZXQoJ3NlcnZlci00MicpO1xuXG4gICAgZXhwZWN0Um91dGluZ1RhYmxlKGxvYWRCYWxhbmNlcixcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdwdXJnZXMgY29ubmVjdGlvbnMgd2hlbiBhZGRyZXNzIGlzIGZvcmdvdHRlbicsICgpID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuXG4gICAgcG9vbC5hY3F1aXJlKCdzZXJ2ZXItMScpO1xuICAgIHBvb2wuYWNxdWlyZSgnc2VydmVyLTMnKTtcbiAgICBwb29sLmFjcXVpcmUoJ3NlcnZlci01Jyk7XG4gICAgZXhwZWN0UG9vbFRvQ29udGFpbihwb29sLCBbJ3NlcnZlci0xJywgJ3NlcnZlci0zJywgJ3NlcnZlci01J10pO1xuXG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMicsICdzZXJ2ZXItNCddLFxuICAgICAgcG9vbFxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuZm9yZ2V0KCdzZXJ2ZXItMScpO1xuICAgIGxvYWRCYWxhbmNlci5mb3JnZXQoJ3NlcnZlci01Jyk7XG5cbiAgICBleHBlY3RQb29sVG9Db250YWluKHBvb2wsIFsnc2VydmVyLTMnXSk7XG4gICAgZXhwZWN0UG9vbFRvTm90Q29udGFpbihwb29sLCBbJ3NlcnZlci0xJywgJ3NlcnZlci01J10pO1xuICB9KTtcblxuICBpdCgnY2FuIGZvcmdldCB3cml0ZXIgYWRkcmVzcycsICgpID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0yJywgJ3NlcnZlci00J11cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmZvcmdldFdyaXRlcignc2VydmVyLTInKTtcblxuICAgIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci00J11cbiAgICApO1xuICB9KTtcblxuICBpdCgnY2FuIG5vdCBmb3JnZXQgdW5rbm93biB3cml0ZXIgYWRkcmVzcycsICgpID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J11cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmZvcmdldFdyaXRlcignc2VydmVyLTQyJyk7XG5cbiAgICBleHBlY3RSb3V0aW5nVGFibGUobG9hZEJhbGFuY2VyLFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2luaXRpYWxpemVzIHJvdXRpbmcgdGFibGUgd2l0aCB0aGUgZ2l2ZW4gcm91dGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ldyBMb2FkQmFsYW5jZXIoJ3NlcnZlci1BQkMnLCBuZXdQb29sKCksIE5PX09QX0RSSVZFUl9DQUxMQkFDSyk7XG5cbiAgICBleHBlY3RSb3V0aW5nVGFibGUobG9hZEJhbGFuY2VyLFxuICAgICAgWydzZXJ2ZXItQUJDJ10sXG4gICAgICBbXSxcbiAgICAgIFtdXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2FjcXVpcmVzIHJlYWQgY29ubmVjdGlvbiB3aXRoIHVwLXRvLWRhdGUgcm91dGluZyB0YWJsZScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbFxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci0zJyk7XG4gICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci0zJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci00Jyk7XG4gICAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLTQnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnYWNxdWlyZXMgd3JpdGUgY29ubmVjdGlvbiB3aXRoIHVwLXRvLWRhdGUgcm91dGluZyB0YWJsZScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbFxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItNScpO1xuICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItNScpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLTYnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItNicpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3MgZm9yIGlsbGVnYWwgYWNjZXNzIG1vZGUnLCBkb25lID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J11cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKCdXUk9ORycpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0VxdWFsKCdJbGxlZ2FsIG1vZGUgV1JPTkcnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3JlZnJlc2hlcyBzdGFsZSByb3V0aW5nIHRhYmxlIHRvIGdldCByZWFkIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IHVwZGF0ZWRSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbJ3NlcnZlci1FJywgJ3NlcnZlci1GJ11cbiAgICApO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIHBvb2wsXG4gICAgICBpbnQoMCksIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICAgeydzZXJ2ZXItMSc6IHVwZGF0ZWRSb3V0aW5nVGFibGV9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUMnKTtcbiAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLUMnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUQnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRCcpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWZyZXNoZXMgc3RhbGUgcm91dGluZyB0YWJsZSB0byBnZXQgd3JpdGUgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHBvb2wgPSBuZXdQb29sKCk7XG4gICAgY29uc3QgdXBkYXRlZFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbCxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7J3NlcnZlci0xJzogdXBkYXRlZFJvdXRpbmdUYWJsZX1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFdSSVRFKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUUnKTtcbiAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLUUnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci1GJyk7XG4gICAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLUYnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgncmVmcmVzaGVzIHN0YWxlIHJvdXRpbmcgdGFibGUgdG8gZ2V0IHJlYWQgY29ubmVjdGlvbiB3aGVuIG9uZSByb3V0ZXIgZmFpbHMnLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IHVwZGF0ZWRSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbJ3NlcnZlci1FJywgJ3NlcnZlci1GJ11cbiAgICApO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIHBvb2wsXG4gICAgICBpbnQoMCksIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICAge1xuICAgICAgICAnc2VydmVyLTEnOiBudWxsLCAvLyBkaWQgbm90IHJldHVybiBhbnkgcm91dGluZyB0YWJsZVxuICAgICAgICAnc2VydmVyLTInOiB1cGRhdGVkUm91dGluZ1RhYmxlLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci1DJyk7XG4gICAgICBleHBlY3QocG9vbC5oYXMoJ3NlcnZlci1DJykpLnRvQmVUcnV0aHkoKTtcblxuICAgICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGV4cGVjdChjb25uZWN0aW9uLmFkZHJlc3MpLnRvRXF1YWwoJ3NlcnZlci1EJyk7XG4gICAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLUQnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgncmVmcmVzaGVzIHN0YWxlIHJvdXRpbmcgdGFibGUgdG8gZ2V0IHdyaXRlIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IHVwZGF0ZWRSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbJ3NlcnZlci1FJywgJ3NlcnZlci1GJ11cbiAgICApO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIHBvb2wsXG4gICAgICBpbnQoMCksIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICAge1xuICAgICAgICAnc2VydmVyLTEnOiBudWxsLCAvLyBkaWQgbm90IHJldHVybiBhbnkgcm91dGluZyB0YWJsZVxuICAgICAgICAnc2VydmVyLTInOiB1cGRhdGVkUm91dGluZ1RhYmxlLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRScpO1xuICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRScpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUYnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRicpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWZyZXNoZXMgc3RhbGUgcm91dGluZyB0YWJsZSB0byBnZXQgcmVhZCBjb25uZWN0aW9uIHdoZW4gb25lIHJvdXRlciByZXR1cm5zIGlsbGVnYWwgcmVzcG9uc2UnLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IG5ld0lsbGVnYWxSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbXSAvLyBubyB3cml0ZXJzIC0gdGFibGUgaXMgaWxsZWdhbCBhbmQgc2hvdWxkIGJlIHNraXBwZWRcbiAgICApO1xuICAgIGNvbnN0IG5ld0xlZ2FsUm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlKFxuICAgICAgWydzZXJ2ZXItQScsICdzZXJ2ZXItQiddLFxuICAgICAgWydzZXJ2ZXItQycsICdzZXJ2ZXItRCddLFxuICAgICAgWydzZXJ2ZXItRScsICdzZXJ2ZXItRiddXG4gICAgKTtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJ10sXG4gICAgICBbJ3NlcnZlci0zJywgJ3NlcnZlci00J10sXG4gICAgICBbJ3NlcnZlci01JywgJ3NlcnZlci02J10sXG4gICAgICBwb29sLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHtcbiAgICAgICAgJ3NlcnZlci0xJzogbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSxcbiAgICAgICAgJ3NlcnZlci0yJzogbmV3TGVnYWxSb3V0aW5nVGFibGUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKGNvbm5lY3Rpb24gPT4ge1xuICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUMnKTtcbiAgICAgIGV4cGVjdChwb29sLmhhcygnc2VydmVyLUMnKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUQnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRCcpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWZyZXNoZXMgc3RhbGUgcm91dGluZyB0YWJsZSB0byBnZXQgd3JpdGUgY29ubmVjdGlvbiB3aGVuIG9uZSByb3V0ZXIgcmV0dXJucyBpbGxlZ2FsIHJlc3BvbnNlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcG9vbCA9IG5ld1Bvb2woKTtcbiAgICBjb25zdCBuZXdJbGxlZ2FsUm91dGluZ1RhYmxlID0gbmV3Um91dGluZ1RhYmxlKFxuICAgICAgWydzZXJ2ZXItQScsICdzZXJ2ZXItQiddLFxuICAgICAgWydzZXJ2ZXItQycsICdzZXJ2ZXItRCddLFxuICAgICAgW10gLy8gbm8gd3JpdGVycyAtIHRhYmxlIGlzIGlsbGVnYWwgYW5kIHNob3VsZCBiZSBza2lwcGVkXG4gICAgKTtcbiAgICBjb25zdCBuZXdMZWdhbFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFsnc2VydmVyLUUnLCAnc2VydmVyLUYnXVxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgcG9vbCxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IG5ld0lsbGVnYWxSb3V0aW5nVGFibGUsXG4gICAgICAgICdzZXJ2ZXItMic6IG5ld0xlZ2FsUm91dGluZ1RhYmxlLFxuICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLnRoZW4oY29ubmVjdGlvbiA9PiB7XG4gICAgICBleHBlY3QoY29ubmVjdGlvbi5hZGRyZXNzKS50b0VxdWFsKCdzZXJ2ZXItRScpO1xuICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRScpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkudGhlbihjb25uZWN0aW9uID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uYWRkcmVzcykudG9FcXVhbCgnc2VydmVyLUYnKTtcbiAgICAgICAgZXhwZWN0KHBvb2wuaGFzKCdzZXJ2ZXItRicpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3Mgd2hlbiBhbGwgcm91dGVycyByZXR1cm4gbm90aGluZyB3aGlsZSBnZXR0aW5nIHJlYWQgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIG5ld1Bvb2woKSxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IG51bGwsIC8vIGRpZCBub3QgcmV0dXJuIGFueSByb3V0aW5nIHRhYmxlXG4gICAgICAgICdzZXJ2ZXItMic6IG51bGwgIC8vIGRpZCBub3QgcmV0dXJuIGFueSByb3V0aW5nIHRhYmxlXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyB3aGVuIGFsbCByb3V0ZXJzIHJldHVybiBub3RoaW5nIHdoaWxlIGdldHRpbmcgd3JpdGUgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIG5ld1Bvb2woKSxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IG51bGwsIC8vIGRpZCBub3QgcmV0dXJuIGFueSByb3V0aW5nIHRhYmxlXG4gICAgICAgICdzZXJ2ZXItMic6IG51bGwgIC8vIGRpZCBub3QgcmV0dXJuIGFueSByb3V0aW5nIHRhYmxlXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3Mgd2hlbiBhbGwgcm91dGVycyByZXR1cm4gaWxsZWdhbCByb3V0aW5nIHRhYmxlcyB3aGlsZSBnZXR0aW5nIHJlYWQgY29ubmVjdGlvbicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IG5ld0lsbGVnYWxSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbXSAvLyBubyB3cml0ZXJzIC0gdGFibGUgaXMgaWxsZWdhbCBhbmQgc2hvdWxkIGJlIHNraXBwZWRcbiAgICApO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIG5ld1Bvb2woKSxcbiAgICAgIGludCgwKSwgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgICB7XG4gICAgICAgICdzZXJ2ZXItMSc6IG5ld0lsbGVnYWxSb3V0aW5nVGFibGUsXG4gICAgICAgICdzZXJ2ZXItMic6IG5ld0lsbGVnYWxSb3V0aW5nVGFibGVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbG9hZEJhbGFuY2VyLmFjcXVpcmVDb25uZWN0aW9uKFJFQUQpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgndGhyb3dzIHdoZW4gYWxsIHJvdXRlcnMgcmV0dXJuIGlsbGVnYWwgcm91dGluZyB0YWJsZXMgd2hpbGUgZ2V0dGluZyB3cml0ZSBjb25uZWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSA9IG5ld1JvdXRpbmdUYWJsZShcbiAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgIFsnc2VydmVyLUMnLCAnc2VydmVyLUQnXSxcbiAgICAgIFtdIC8vIG5vIHdyaXRlcnMgLSB0YWJsZSBpcyBpbGxlZ2FsIGFuZCBzaG91bGQgYmUgc2tpcHBlZFxuICAgICk7XG4gICAgY29uc3QgbG9hZEJhbGFuY2VyID0gbmV3TG9hZEJhbGFuY2VyKFxuICAgICAgWydzZXJ2ZXItMScsICdzZXJ2ZXItMiddLFxuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgbmV3UG9vbCgpLFxuICAgICAgaW50KDApLCAvLyBleHBpcmVkIHJvdXRpbmcgdGFibGVcbiAgICAgIHtcbiAgICAgICAgJ3NlcnZlci0xJzogbmV3SWxsZWdhbFJvdXRpbmdUYWJsZSxcbiAgICAgICAgJ3NlcnZlci0yJzogbmV3SWxsZWdhbFJvdXRpbmdUYWJsZVxuICAgICAgfVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgndGhyb3dzIHdoZW4gc3RhbGUgcm91dGluZyB0YWJsZSB3aXRob3V0IHJvdXRlcnMgd2hpbGUgZ2V0dGluZyByZWFkIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbXSwgLy8gbm8gcm91dGVyc1xuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgbmV3UG9vbCgpLFxuICAgICAgaW50KDApIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oUkVBRCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3Mgd2hlbiBzdGFsZSByb3V0aW5nIHRhYmxlIHdpdGhvdXQgcm91dGVycyB3aGlsZSBnZXR0aW5nIHdyaXRlIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbXSwgLy8gbm8gcm91dGVyc1xuICAgICAgWydzZXJ2ZXItMycsICdzZXJ2ZXItNCddLFxuICAgICAgWydzZXJ2ZXItNScsICdzZXJ2ZXItNiddLFxuICAgICAgbmV3UG9vbCgpLFxuICAgICAgaW50KDApIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICk7XG5cbiAgICBsb2FkQmFsYW5jZXIuYWNxdWlyZUNvbm5lY3Rpb24oV1JJVEUpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKFNFUlZJQ0VfVU5BVkFJTEFCTEUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgndXBkYXRlcyByb3V0aW5nIHRhYmxlIGFmdGVyIHJlZnJlc2gnLCBkb25lID0+IHtcbiAgICBjb25zdCBwb29sID0gbmV3UG9vbCgpO1xuICAgIGNvbnN0IHVwZGF0ZWRSb3V0aW5nVGFibGUgPSBuZXdSb3V0aW5nVGFibGUoXG4gICAgICBbJ3NlcnZlci1BJywgJ3NlcnZlci1CJ10sXG4gICAgICBbJ3NlcnZlci1DJywgJ3NlcnZlci1EJ10sXG4gICAgICBbJ3NlcnZlci1FJywgJ3NlcnZlci1GJ11cbiAgICApO1xuICAgIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ld0xvYWRCYWxhbmNlcihcbiAgICAgIFsnc2VydmVyLTEnLCAnc2VydmVyLTInXSxcbiAgICAgIFsnc2VydmVyLTMnLCAnc2VydmVyLTQnXSxcbiAgICAgIFsnc2VydmVyLTUnLCAnc2VydmVyLTYnXSxcbiAgICAgIHBvb2wsXG4gICAgICBpbnQoMCksIC8vIGV4cGlyZWQgcm91dGluZyB0YWJsZVxuICAgICAge1xuICAgICAgICAnc2VydmVyLTEnOiB1cGRhdGVkUm91dGluZ1RhYmxlXG4gICAgICB9XG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS50aGVuKCgpID0+IHtcbiAgICAgIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsXG4gICAgICAgIFsnc2VydmVyLUEnLCAnc2VydmVyLUInXSxcbiAgICAgICAgWydzZXJ2ZXItQycsICdzZXJ2ZXItRCddLFxuICAgICAgICBbJ3NlcnZlci1FJywgJ3NlcnZlci1GJ11cbiAgICAgICk7XG4gICAgICBleHBlY3RQb29sVG9Ob3RDb250YWluKHBvb2wsIFsnc2VydmVyLTEnLCAnc2VydmVyLTInLCAnc2VydmVyLTMnLCAnc2VydmVyLTQnLCAnc2VydmVyLTUnLCAnc2VydmVyLTYnXSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdmb3JnZXRzIGFsbCByb3V0ZXJzIHdoZW4gdGhleSBmYWlsIHdoaWxlIGFjcXVpcmluZyByZWFkIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJywgJ3NlcnZlci0zJ10sXG4gICAgICBbJ3NlcnZlci00JywgJ3NlcnZlci01J10sXG4gICAgICBbJ3NlcnZlci02JywgJ3NlcnZlci03J10sXG4gICAgICBuZXdQb29sKCksXG4gICAgICBpbnQoMCkgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihSRUFEKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChTRVJWSUNFX1VOQVZBSUxBQkxFKTtcbiAgICAgIGV4cGVjdFJvdXRpbmdUYWJsZShsb2FkQmFsYW5jZXIsXG4gICAgICAgIFtdLFxuICAgICAgICBbJ3NlcnZlci00JywgJ3NlcnZlci01J10sXG4gICAgICAgIFsnc2VydmVyLTYnLCAnc2VydmVyLTcnXVxuICAgICAgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ2ZvcmdldHMgYWxsIHJvdXRlcnMgd2hlbiB0aGV5IGZhaWwgd2hpbGUgYWNxdWlyaW5nIHdyaXRlIGNvbm5lY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCBsb2FkQmFsYW5jZXIgPSBuZXdMb2FkQmFsYW5jZXIoXG4gICAgICBbJ3NlcnZlci0xJywgJ3NlcnZlci0yJywgJ3NlcnZlci0zJ10sXG4gICAgICBbJ3NlcnZlci00JywgJ3NlcnZlci01J10sXG4gICAgICBbJ3NlcnZlci02JywgJ3NlcnZlci03J10sXG4gICAgICBuZXdQb29sKCksXG4gICAgICBpbnQoMCkgLy8gZXhwaXJlZCByb3V0aW5nIHRhYmxlXG4gICAgKTtcblxuICAgIGxvYWRCYWxhbmNlci5hY3F1aXJlQ29ubmVjdGlvbihXUklURSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBleHBlY3RSb3V0aW5nVGFibGUobG9hZEJhbGFuY2VyLFxuICAgICAgICBbXSxcbiAgICAgICAgWydzZXJ2ZXItNCcsICdzZXJ2ZXItNSddLFxuICAgICAgICBbJ3NlcnZlci02JywgJ3NlcnZlci03J11cbiAgICAgICk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcblxuZnVuY3Rpb24gbmV3RGlyZWN0Q29ubmVjdGlvblByb3ZpZGVyKGFkZHJlc3MsIHBvb2wpIHtcbiAgcmV0dXJuIG5ldyBEaXJlY3RDb25uZWN0aW9uUHJvdmlkZXIoYWRkcmVzcywgcG9vbCwgTk9fT1BfRFJJVkVSX0NBTExCQUNLKTtcbn1cblxuZnVuY3Rpb24gbmV3TG9hZEJhbGFuY2VyKHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMsIHBvb2wgPSBudWxsLCBleHBpcmF0aW9uVGltZSA9IEludGVnZXIuTUFYX1ZBTFVFLCByb3V0ZXJUb1JvdXRpbmdUYWJsZSA9IHt9KSB7XG4gIGNvbnN0IGxvYWRCYWxhbmNlciA9IG5ldyBMb2FkQmFsYW5jZXIobnVsbCwgcG9vbCB8fCBuZXdQb29sKCksIE5PX09QX0RSSVZFUl9DQUxMQkFDSyk7XG4gIGxvYWRCYWxhbmNlci5fcm91dGluZ1RhYmxlID0gbmV3IFJvdXRpbmdUYWJsZShcbiAgICBuZXcgUm91bmRSb2JpbkFycmF5KHJvdXRlcnMpLFxuICAgIG5ldyBSb3VuZFJvYmluQXJyYXkocmVhZGVycyksXG4gICAgbmV3IFJvdW5kUm9iaW5BcnJheSh3cml0ZXJzKSxcbiAgICBleHBpcmF0aW9uVGltZVxuICApO1xuICBsb2FkQmFsYW5jZXIuX3JlZGlzY292ZXJ5ID0gbmV3IEZha2VSZWRpc2NvdmVyeShyb3V0ZXJUb1JvdXRpbmdUYWJsZSk7XG4gIHJldHVybiBsb2FkQmFsYW5jZXI7XG59XG5cbmZ1bmN0aW9uIG5ld1JvdXRpbmdUYWJsZShyb3V0ZXJzLCByZWFkZXJzLCB3cml0ZXJzLCBleHBpcmF0aW9uVGltZSA9IEludGVnZXIuTUFYX1ZBTFVFKSB7XG4gIHJldHVybiBuZXcgUm91dGluZ1RhYmxlKFxuICAgIG5ldyBSb3VuZFJvYmluQXJyYXkocm91dGVycyksXG4gICAgbmV3IFJvdW5kUm9iaW5BcnJheShyZWFkZXJzKSxcbiAgICBuZXcgUm91bmRSb2JpbkFycmF5KHdyaXRlcnMpLFxuICAgIGV4cGlyYXRpb25UaW1lXG4gICk7XG59XG5cbmZ1bmN0aW9uIG5ld1Bvb2woKSB7XG4gIHJldHVybiBuZXcgUG9vbChGYWtlQ29ubmVjdGlvbi5jcmVhdGUpO1xufVxuXG5mdW5jdGlvbiBleHBlY3RSb3V0aW5nVGFibGUobG9hZEJhbGFuY2VyLCByb3V0ZXJzLCByZWFkZXJzLCB3cml0ZXJzKSB7XG4gIGV4cGVjdChsb2FkQmFsYW5jZXIuX3JvdXRpbmdUYWJsZS5yb3V0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbChyb3V0ZXJzKTtcbiAgZXhwZWN0KGxvYWRCYWxhbmNlci5fcm91dGluZ1RhYmxlLnJlYWRlcnMudG9BcnJheSgpKS50b0VxdWFsKHJlYWRlcnMpO1xuICBleHBlY3QobG9hZEJhbGFuY2VyLl9yb3V0aW5nVGFibGUud3JpdGVycy50b0FycmF5KCkpLnRvRXF1YWwod3JpdGVycyk7XG59XG5cbmZ1bmN0aW9uIGV4cGVjdFBvb2xUb0NvbnRhaW4ocG9vbCwgYWRkcmVzc2VzKSB7XG4gIGFkZHJlc3Nlcy5mb3JFYWNoKGFkZHJlc3MgPT4ge1xuICAgIGV4cGVjdChwb29sLmhhcyhhZGRyZXNzKSkudG9CZVRydXRoeSgpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZXhwZWN0UG9vbFRvTm90Q29udGFpbihwb29sLCBhZGRyZXNzZXMpIHtcbiAgYWRkcmVzc2VzLmZvckVhY2goYWRkcmVzcyA9PiB7XG4gICAgZXhwZWN0KHBvb2wuaGFzKGFkZHJlc3MpKS50b0JlRmFsc3koKTtcbiAgfSk7XG59XG5cbmNsYXNzIEZha2VDb25uZWN0aW9uIHtcblxuICBjb25zdHJ1Y3RvcihhZGRyZXNzLCByZWxlYXNlKSB7XG4gICAgdGhpcy5hZGRyZXNzID0gYWRkcmVzcztcbiAgICB0aGlzLnJlbGVhc2UgPSByZWxlYXNlO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhZGRyZXNzLCByZWxlYXNlKSB7XG4gICAgcmV0dXJuIG5ldyBGYWtlQ29ubmVjdGlvbihhZGRyZXNzLCByZWxlYXNlKTtcbiAgfVxufVxuXG5jbGFzcyBGYWtlUmVkaXNjb3Zlcnkge1xuXG4gIGNvbnN0cnVjdG9yKHJvdXRlclRvUm91dGluZ1RhYmxlKSB7XG4gICAgdGhpcy5fcm91dGVyVG9Sb3V0aW5nVGFibGUgPSByb3V0ZXJUb1JvdXRpbmdUYWJsZTtcbiAgfVxuXG4gIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKGlnbm9yZWQsIHJvdXRlcikge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZXJUb1JvdXRpbmdUYWJsZVtyb3V0ZXJdO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0ICogYXMgRHVtbXlDaGFubmVsIGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9jaC1kdW1teSc7XG5pbXBvcnQge2Nvbm5lY3QsIENvbm5lY3Rpb259IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9jb25uZWN0b3InO1xuaW1wb3J0IHtQYWNrZXJ9IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9wYWNrc3RyZWFtJztcbmltcG9ydCB7Q2h1bmtlcn0gZnJvbSAnLi4vLi4vc3JjL3YxL2ludGVybmFsL2NodW5raW5nJztcbmltcG9ydCB7YWxsb2N9IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9idWYnO1xuaW1wb3J0IHtOZW80akVycm9yfSBmcm9tICcuLi8uLi9zcmMvdjEvZXJyb3InO1xuXG5kZXNjcmliZSgnY29ubmVjdG9yJywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgcmVhZC93cml0ZSBiYXNpYyBtZXNzYWdlcycsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3QgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIpO1xuXG4gICAgLy8gV2hlblxuICAgIGNvbm4uaW5pdGlhbGl6ZShcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9LCB7XG4gICAgICBvbkNvbXBsZXRlZDogbXNnID0+IHtcbiAgICAgICAgZXhwZWN0KG1zZykubm90LnRvQmVOdWxsKCk7XG4gICAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSxcbiAgICAgIG9uRXJyb3I6IGNvbnNvbGUubG9nXG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyaWV2ZSBzdHJlYW0nLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IGNvbm4gPSBjb25uZWN0KFwiYm9sdDovL2xvY2FsaG9zdFwiKTtcblxuICAgIC8vIFdoZW5cbiAgICBjb25zdCByZWNvcmRzID0gW107XG4gICAgY29ubi5pbml0aWFsaXplKFwibXlkcml2ZXIvMC4wLjBcIiwge3NjaGVtZTogXCJiYXNpY1wiLCBwcmluY2lwYWw6IFwibmVvNGpcIiwgY3JlZGVudGlhbHM6IFwibmVvNGpcIn0pO1xuICAgIGNvbm4ucnVuKFwiUkVUVVJOIDEuMFwiLCB7fSk7XG4gICAgY29ubi5wdWxsQWxsKHtcbiAgICAgIG9uTmV4dDogcmVjb3JkID0+IHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHNbMF1bMF0pLnRvQmUoMSk7XG4gICAgICAgIGNvbm4uY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbm4uc3luYygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHVzZSBEdW1teUNoYW5uZWwgdG8gcmVhZCB3aGF0IGdldHMgd3JpdHRlbicsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBEdW1teUNoYW5uZWwub2JzZXJ2ZXI7XG4gICAgY29uc3QgY29ubiA9IGNvbm5lY3QoXCJib2x0Oi8vbG9jYWxob3N0XCIsIHtjaGFubmVsOiBEdW1teUNoYW5uZWwuY2hhbm5lbH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGNvbm4uaW5pdGlhbGl6ZShcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9KTtcbiAgICBjb25uLnJ1bihcIlJFVFVSTiAxXCIsIHt9KTtcbiAgICBjb25uLnN5bmMoKTtcbiAgICBleHBlY3Qob2JzZXJ2ZXIuaW5zdGFuY2UudG9IZXgoKSkudG9CZSgnNjAgNjAgYjAgMTcgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNDEgYjIgMDEgOGUgNmQgNzkgNjQgNzIgNjkgNzYgNjUgNzIgMmYgMzAgMmUgMzAgMmUgMzAgYTMgODYgNzMgNjMgNjggNjUgNmQgNjUgODUgNjIgNjEgNzMgNjkgNjMgODkgNzAgNzIgNjkgNmUgNjMgNjkgNzAgNjEgNmMgODUgNmUgNjUgNmYgMzQgNmEgOGIgNjMgNzIgNjUgNjQgNjUgNmUgNzQgNjkgNjEgNmMgNzMgODUgNmUgNjUgNmYgMzQgNmEgMDAgMDAgMDAgMGMgYjIgMTAgODggNTIgNDUgNTQgNTUgNTIgNGUgMjAgMzEgYTAgMDAgMDAgJyk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3ZpZGUgZXJyb3IgbWVzc2FnZSB3aGVuIGNvbm5lY3RpbmcgdG8gaHR0cC1wb3J0JywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBjb25uID0gY29ubmVjdChcImJvbHQ6Ly9sb2NhbGhvc3Q6NzQ3NFwiLCB7ZW5jcnlwdGVkOiBmYWxzZX0pO1xuXG4gICAgLy8gV2hlblxuICAgIGNvbm4uaW5pdGlhbGl6ZShcIm15ZHJpdmVyLzAuMC4wXCIsIHtzY2hlbWU6IFwiYmFzaWNcIiwgcHJpbmNpcGFsOiBcIm5lbzRqXCIsIGNyZWRlbnRpYWxzOiBcIm5lbzRqXCJ9LCB7XG4gICAgICBvbkNvbXBsZXRlZDogbXNnID0+IHtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yOiBlcnIgPT4ge1xuICAgICAgICAvL29ubHkgbm9kZSBnZXRzIHRoZSBwcmV0dHkgZXJyb3IgbWVzc2FnZVxuICAgICAgICBpZiAocmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2NoLW5vZGUuanMnKS5hdmFpbGFibGUpIHtcbiAgICAgICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLnRvQmUoXCJTZXJ2ZXIgcmVzcG9uZGVkIEhUVFAuIE1ha2Ugc3VyZSB5b3UgYXJlIG5vdCB0cnlpbmcgdG8gY29ubmVjdCB0byB0aGUgaHR0cCBlbmRwb2ludCBcIiArXG4gICAgICAgICAgICBcIihIVFRQIGRlZmF1bHRzIHRvIHBvcnQgNzQ3NCB3aGVyZWFzIEJPTFQgZGVmYXVsdHMgdG8gcG9ydCA3Njg3KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29ubi5zeW5jKCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb252ZXJ0IGZhaWx1cmUgbWVzc2FnZXMgdG8gZXJyb3JzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY2hhbm5lbCA9IG5ldyBEdW1teUNoYW5uZWwuY2hhbm5lbDtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oY2hhbm5lbCwgJ2JvbHQ6Ly9sb2NhbGhvc3QnKTtcblxuICAgIGNvbnN0IGVycm9yQ29kZSA9ICdOZW8uQ2xpZW50RXJyb3IuU2NoZW1hLkNvbnN0cmFpbnRWYWxpZGF0aW9uRmFpbGVkJztcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAnTm9kZSAwIGFscmVhZHkgZXhpc3RzIHdpdGggbGFiZWwgVXNlciBhbmQgcHJvcGVydHkgXCJlbWFpbFwiPVtqb2huQGRvZS5jb21dJztcblxuICAgIGNvbm5lY3Rpb24uX3F1ZXVlT2JzZXJ2ZXIoe1xuICAgICAgb25FcnJvcjogZXJyb3IgPT4ge1xuICAgICAgICBleHBlY3ROZW80akVycm9yKGVycm9yLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNoYW5uZWwub25tZXNzYWdlKHBhY2tlZEhhbmRzaGFrZU1lc3NhZ2UoKSk7XG4gICAgY2hhbm5lbC5vbm1lc3NhZ2UocGFja2VkRmFpbHVyZU1lc3NhZ2UoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gcGFja2VkSGFuZHNoYWtlTWVzc2FnZSgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhbGxvYyg0KTtcbiAgICByZXN1bHQucHV0SW50MzIoMCwgMSk7XG4gICAgcmVzdWx0LnJlc2V0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhY2tlZEZhaWx1cmVNZXNzYWdlKGNvZGUsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBjaGFubmVsID0gbmV3IER1bW15Q2hhbm5lbC5jaGFubmVsO1xuICAgIGNvbnN0IGNodW5rZXIgPSBuZXcgQ2h1bmtlcihjaGFubmVsKTtcbiAgICBjb25zdCBwYWNrZXIgPSBuZXcgUGFja2VyKGNodW5rZXIpO1xuICAgIHBhY2tlci5wYWNrU3RydWN0KDB4N0YsIFtwYWNrZXIucGFja2FibGUoe2NvZGU6IGNvZGUsIG1lc3NhZ2U6IG1lc3NhZ2V9KV0pO1xuICAgIGNodW5rZXIubWVzc2FnZUJvdW5kYXJ5KCk7XG4gICAgY2h1bmtlci5mbHVzaCgpO1xuICAgIGNvbnN0IGRhdGEgPSBjaGFubmVsLnRvQnVmZmVyKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYWxsb2MoZGF0YS5sZW5ndGgpO1xuICAgIHJlc3VsdC5wdXRCeXRlcygwLCBkYXRhKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gZXhwZWN0TmVvNGpFcnJvcihlcnJvciwgZXhwZWN0ZWRDb2RlLCBleHBlY3RlZE1lc3NhZ2UpIHtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSkudG9UaHJvdyhuZXcgTmVvNGpFcnJvcihleHBlY3RlZE1lc3NhZ2UsIGV4cGVjdGVkQ29kZSkpO1xuICB9XG5cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogVGhpcyBjbGFzcyBpcyBsaWtlIGEgbW9jayBvZiB7QGxpbmsgQ29ubmVjdGlvbn0gdGhhdCB0cmFja3MgaW52b2NhdGlvbnMgY291bnQuXG4gKiBJdCB0cmllcyB0byBtYWludGFpbiBzYW1lIFwiaW50ZXJmYWNlXCIgYXMge0BsaW5rIENvbm5lY3Rpb259LlxuICogSXQgY291bGQgYmUgcmVwbGFjZWQgd2l0aCBhIHByb3BlciBtb2NrIGJ5IGEgbGlicmFyeSBsaWtlIHRlc3Rkb3VibGUuXG4gKiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHN1Y2ggbGlicmFyaWVzIHJlcXVpcmUge0BsaW5rIFByb3h5fSBzdXBwb3J0IGJ1dCBicm93c2VyIHRlc3RzIGV4ZWN1dGUgaW5cbiAqIFBoYW50b21KUyB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHByb3hpZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZha2VDb25uZWN0aW9uIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnJlc2V0SW52b2tlZCA9IDA7XG4gICAgdGhpcy5yZXNldEFzeW5jSW52b2tlZCA9IDA7XG4gICAgdGhpcy5zeW5jSW52b2tlZCA9IDA7XG4gICAgdGhpcy5yZWxlYXNlSW52b2tlZCA9IDA7XG4gIH1cblxuICBydW4oKSB7XG4gIH1cblxuICBkaXNjYXJkQWxsKCkge1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5yZXNldEludm9rZWQrKztcbiAgfVxuXG4gIHJlc2V0QXN5bmMoKSB7XG4gICAgdGhpcy5yZXNldEFzeW5jSW52b2tlZCsrO1xuICB9XG5cbiAgc3luYygpIHtcbiAgICB0aGlzLnN5bmNJbnZva2VkKys7XG4gIH1cblxuICBfcmVsZWFzZSgpIHtcbiAgICB0aGlzLnJlbGVhc2VJbnZva2VkKys7XG4gIH1cblxuICBpc1JlbGVhc2VkT25jZU9uU2Vzc2lvbkNsb3NlKCkge1xuICAgIHJldHVybiB0aGlzLmlzUmVsZWFzZWRPblNlc3Npb25DbG9zZVRpbWVzKDEpO1xuICB9XG5cbiAgaXNSZWxlYXNlZE9uU2Vzc2lvbkNsb3NlVGltZXModGltZXMpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNldEFzeW5jSW52b2tlZCA9PT0gdGltZXMgJiZcbiAgICAgIHRoaXMucmVzZXRJbnZva2VkID09PSAwICYmXG4gICAgICB0aGlzLnN5bmNJbnZva2VkID09PSB0aW1lcyAmJlxuICAgICAgdGhpcy5yZWxlYXNlSW52b2tlZCA9PT0gdGltZXM7XG4gIH1cblxuICBpc05ldmVyUmVsZWFzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZWxlYXNlZFRpbWVzKDApO1xuICB9XG5cbiAgaXNSZWxlYXNlZE9uY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZWxlYXNlZFRpbWVzKDEpO1xuICB9XG5cbiAgaXNSZWxlYXNlZFRpbWVzKHRpbWVzKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzZXRBc3luY0ludm9rZWQgPT09IDAgJiZcbiAgICAgIHRoaXMucmVzZXRJbnZva2VkID09PSB0aW1lcyAmJlxuICAgICAgdGhpcy5zeW5jSW52b2tlZCA9PT0gdGltZXMgJiZcbiAgICAgIHRoaXMucmVsZWFzZUludm9rZWQgPT09IHRpbWVzO1xuICB9XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBHZXRTZXJ2ZXJzVXRpbCBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVybmFsL2dldC1zZXJ2ZXJzLXV0aWxcIjtcbmltcG9ydCBSZWNvcmQgZnJvbSBcIi4uLy4uL3NyYy92MS9yZWNvcmRcIjtcbmltcG9ydCBJbnRlZ2VyLCB7aW50fSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVnZXJcIjtcbmltcG9ydCB7bmV3RXJyb3IsIFBST1RPQ09MX0VSUk9SLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVNTSU9OX0VYUElSRUR9IGZyb20gXCIuLi8uLi9zcmMvdjEvZXJyb3JcIjtcbmltcG9ydCBsb2xleCBmcm9tIFwibG9sZXhcIjtcblxuY29uc3QgUk9VVEVSX0FERFJFU1MgPSAnYm9sdCtyb3V0aW5nOi8vdGVzdC5yb3V0ZXIuY29tJztcblxuZGVzY3JpYmUoJ2dldC1zZXJ2ZXJzLXV0aWwnLCAoKSA9PiB7XG5cbiAgbGV0IGNsb2NrO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgY2xvY2sgPSBsb2xleC5pbnN0YWxsKCk7XG4gIH0pO1xuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBjbG9jay51bmluc3RhbGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcmV0cmlldmVkIHJlY29yZHMgd2hlbiBxdWVyeSBzdWNjZWVkcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHNlc3Npb24gPSBGYWtlU2Vzc2lvbi5zdWNjZXNzZnVsKHtyZWNvcmRzOiBbJ2ZvbycsICdiYXInLCAnYmF6J119KTtcblxuICAgIGNhbGxHZXRTZXJ2ZXJzKHNlc3Npb24pLnRoZW4ocmVjb3JkcyA9PiB7XG4gICAgICBleHBlY3QocmVjb3JkcykudG9FcXVhbChbJ2ZvbycsICdiYXInLCAnYmF6J10pO1xuICAgICAgZG9uZSgpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjbG9zZSBzZXNzaW9uIHdoZW4gcXVlcnkgc3VjY2VlZHMnLCBkb25lID0+IHtcbiAgICBjb25zdCBzZXNzaW9uID0gRmFrZVNlc3Npb24uc3VjY2Vzc2Z1bCh7cmVjb3JkczogWydmb28nLCAnYmFyJywgJ2JheiddfSk7XG5cbiAgICBjYWxsR2V0U2VydmVycyhzZXNzaW9uKS50aGVuKCgpID0+IHtcbiAgICAgIGV4cGVjdChzZXNzaW9uLmlzQ2xvc2VkKCkpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGNsb3NlIHNlc3Npb24gd2hlbiBxdWVyeSBmYWlscycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHNlc3Npb24gPSBGYWtlU2Vzc2lvbi5mYWlsZWQobmV3RXJyb3IoJ09oIG5vIScsIFNFU1NJT05fRVhQSVJFRCkpO1xuXG4gICAgY2FsbEdldFNlcnZlcnMoc2Vzc2lvbikudGhlbigoKSA9PiB7XG4gICAgICBleHBlY3Qoc2Vzc2lvbi5pc0Nsb3NlZCgpKS50b0JlRmFsc3koKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgb24gY29ubmVjdGlvbiBlcnJvcicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHNlc3Npb24gPSBGYWtlU2Vzc2lvbi5mYWlsZWQobmV3RXJyb3IoJ09oIG5vIScsIFNFU1NJT05fRVhQSVJFRCkpO1xuXG4gICAgY2FsbEdldFNlcnZlcnMoc2Vzc2lvbikudGhlbihyZWNvcmRzID0+IHtcbiAgICAgIGV4cGVjdChyZWNvcmRzKS50b0JlTnVsbCgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gcHJvY2VkdXJlIG5vdCBmb3VuZCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHNlc3Npb24gPSBGYWtlU2Vzc2lvbi5mYWlsZWQobmV3RXJyb3IoJ09oIG5vIScsICdOZW8uQ2xpZW50RXJyb3IuUHJvY2VkdXJlLlByb2NlZHVyZU5vdEZvdW5kJykpO1xuXG4gICAgY2FsbEdldFNlcnZlcnMoc2Vzc2lvbikuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvQmUoU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9CZSgnU2VydmVyICcgKyBST1VURVJfQUREUkVTUyArICcgY291bGQgbm90IHBlcmZvcm0gcm91dGluZy4gJyArXG4gICAgICAgICdNYWtlIHN1cmUgeW91IGFyZSBjb25uZWN0aW5nIHRvIGEgY2F1c2FsIGNsdXN0ZXInKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSB2YWxpZCB0dGwnLCAoKSA9PiB7XG4gICAgdGVzdFZhbGlkVHRsUGFyc2luZygxMDAsIDUpO1xuICAgIHRlc3RWYWxpZFR0bFBhcnNpbmcoRGF0ZS5ub3coKSwgMzYwMCk7IC8vIDEgaG91clxuICAgIHRlc3RWYWxpZFR0bFBhcnNpbmcoRGF0ZS5ub3coKSwgODY0MDApOyAvLyAyNCBob3Vyc1xuICAgIHRlc3RWYWxpZFR0bFBhcnNpbmcoRGF0ZS5ub3coKSwgMzYyODgwMCk7IC8vIDQyIGRheXNcbiAgICB0ZXN0VmFsaWRUdGxQYXJzaW5nKDAsIDEpO1xuICAgIHRlc3RWYWxpZFR0bFBhcnNpbmcoNTAsIDApO1xuICAgIHRlc3RWYWxpZFR0bFBhcnNpbmcoRGF0ZS5ub3coKSwgMCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IG92ZXJmbG93IHBhcnNpbmcgaHVnZSB0dGwnLCAoKSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3UmVjb3JkKHt0dGw6IEludGVnZXIuTUFYX1ZBTFVFfSk7XG4gICAgY2xvY2suc2V0U3lzdGVtVGltZSg0Mik7XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9IHBhcnNlVHRsKHJlY29yZCk7XG5cbiAgICBleHBlY3QoZXhwaXJhdGlvblRpbWUpLnRvQmUoSW50ZWdlci5NQVhfVkFMVUUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB2YWxpZCB2YWx1ZSBwYXJzaW5nIG5lZ2F0aXZlIHR0bCcsICgpID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXdSZWNvcmQoe3R0bDogaW50KC00Mil9KTtcbiAgICBjbG9jay5zZXRTeXN0ZW1UaW1lKDQyKTtcblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID0gcGFyc2VUdGwocmVjb3JkKTtcblxuICAgIGV4cGVjdChleHBpcmF0aW9uVGltZSkudG9CZShJbnRlZ2VyLk1BWF9WQUxVRSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiByZWNvcmQgZG9lcyBub3QgaGF2ZSBhIHR0bCBlbnRyeScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ldyBSZWNvcmQoW1wibm90VHRsXCIsIFwic2VydmVyc1wiXSwgW10pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VUdGwocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFyc2Ugc2VydmVycycsICgpID0+IHtcbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbXSwgW10sIFtdKTtcblxuICAgIHRlc3RWYWxpZFNlcnZlcnNQYXJzaW5nKFsncm91dGVyMSddLCBbXSwgW10pO1xuICAgIHRlc3RWYWxpZFNlcnZlcnNQYXJzaW5nKFtdLCBbJ3JlYWRlcjEnXSwgW10pO1xuICAgIHRlc3RWYWxpZFNlcnZlcnNQYXJzaW5nKFtdLCBbXSwgWyd3cml0ZXIxJ10pO1xuXG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoWydyb3V0ZXIxJ10sIFsncmVhZGVyMSddLCBbXSk7XG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoWydyb3V0ZXIxJ10sIFsncmVhZGVyMSddLCBbJ3dyaXRlcjEnXSk7XG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoW10sIFsncmVhZGVyMSddLCBbJ3dyaXRlcjEnXSk7XG5cbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbJ3JvdXRlcjEnXSwgWydyZWFkZXIxJ10sIFsnd3JpdGVyMSddKTtcbiAgICB0ZXN0VmFsaWRTZXJ2ZXJzUGFyc2luZyhbJ3JvdXRlcjEnLCAncm91dGVyMiddLCBbJ3JlYWRlcjEnLCAncmVhZGVyMiddLCBbJ3dyaXRlcjEnXSk7XG4gICAgdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcoWydyb3V0ZXIxJywgJ3JvdXRlcjInXSwgWydyZWFkZXIxJywgJ3JlYWRlcjInXSwgWyd3cml0ZXIxJywgJ3dyaXRlcjInXSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdoZW4gcmVjb3JkIGRvZXMgbm90IGhhdmUgc2VydmVycycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ldyBSZWNvcmQoWyd0dGwnLCAnbm90U2VydmVycyddLCBbaW50KDQyKSwgW3tcInJvbGVcIjogXCJSRUFEXCIsIFwiYWRkcmVzc2VzXCI6IFsnMScsICcyJywgJzMnXX1dXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVNlcnZlcnMocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdpdGhvdXQgcm9sZScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ldyBSZWNvcmQoWyd0dGwnLCAnc2VydmVycyddLCBbaW50KDQyKSwgW3tcIm5vdFJvbGVcIjogXCJSRUFEXCIsIFwiYWRkcmVzc2VzXCI6IFsnMScsICcyJywgJzMnXX1dXSk7XG4gICAgZXhwZWN0UHJvdG9jb2xFcnJvcigoKSA9PiBwYXJzZVNlcnZlcnMocmVjb3JkKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byBwYXJzZSBzZXJ2ZXJzIGVudHJ5IHdpdGggaWxsZWdhbCByb2xlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIkFSQklURVJcIiwgXCJhZGRyZXNzZXNcIjogWycxJywgJzInLCAnMyddfV1dKTtcbiAgICBleHBlY3RQcm90b2NvbEVycm9yKCgpID0+IHBhcnNlU2VydmVycyhyZWNvcmQpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgd2l0aCBqdXN0IHR0bCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ldyBSZWNvcmQoWyd0dGwnLCAnc2VydmVycyddLCBbaW50KDQyKSwgW3tcInJvbGVcIjogXCJSRUFEXCJ9XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2Ugc2VydmVycyBlbnRyeSB3aXRob3V0IGFkZHJlc3NlcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ldyBSZWNvcmQoWyd0dGwnLCAnc2VydmVycyddLCBbaW50KDQyKSwgW3tcInJvbGVcIjogXCJXUklURVwiLCBcIm5vdEFkZHJlc3Nlc1wiOiBbJzEnLCAnMicsICczJ119XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2Ugc2VydmVycyBlbnRyeSB3aXRoIHN0cmluZyBhZGRyZXNzZXMnLCBkb25lID0+IHtcbiAgICBjb25zdCByZWNvcmQgPSBuZXcgUmVjb3JkKFsndHRsJywgJ3NlcnZlcnMnXSwgW2ludCg0MiksIFt7XCJyb2xlXCI6IFwiV1JJVEVcIiwgXCJhZGRyZXNzZXNcIjogJyd9XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2Ugc2VydmVycyBlbnRyeSB3aXRoIG51bGwgYWRkcmVzc2VzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIldSSVRFXCIsIFwiYWRkcmVzc2VzXCI6IG51bGx9XV0pO1xuICAgIGV4cGVjdFByb3RvY29sRXJyb3IoKCkgPT4gcGFyc2VTZXJ2ZXJzKHJlY29yZCksIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcGFyc2Ugc2VydmVycyBlbnRyeSB3aXRoIGludGVnZXIgYWRkcmVzc2VzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIldSSVRFXCIsIFwiYWRkcmVzc2VzXCI6IDEyMzQ1fV1dKTtcbiAgICBleHBlY3RQcm90b2NvbEVycm9yKCgpID0+IHBhcnNlU2VydmVycyhyZWNvcmQpLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHBhcnNlIHNlcnZlcnMgZW50cnkgd2l0aCBvYmplY3QgYWRkcmVzc2VzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgcmVjb3JkID0gbmV3IFJlY29yZChbJ3R0bCcsICdzZXJ2ZXJzJ10sIFtpbnQoNDIpLCBbe1wicm9sZVwiOiBcIldSSVRFXCIsIFwiYWRkcmVzc2VzXCI6IHtrZXk6IFsnbG9jYWxob3N0J119fV1dKTtcbiAgICBleHBlY3RQcm90b2NvbEVycm9yKCgpID0+IHBhcnNlU2VydmVycyhyZWNvcmQpLCBkb25lKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gdGVzdFZhbGlkVHRsUGFyc2luZyhjdXJyZW50VGltZSwgdHRsU2Vjb25kcykge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ld1JlY29yZCh7dHRsOiBpbnQodHRsU2Vjb25kcyl9KTtcbiAgICBjbG9jay5zZXRTeXN0ZW1UaW1lKGN1cnJlbnRUaW1lKTtcblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID0gcGFyc2VUdGwocmVjb3JkKS50b051bWJlcigpO1xuXG4gICAgZXhwZWN0KGV4cGlyYXRpb25UaW1lKS50b0VxdWFsKGN1cnJlbnRUaW1lICsgdHRsU2Vjb25kcyAqIDEwMDApO1xuICB9XG5cbiAgZnVuY3Rpb24gdGVzdFZhbGlkU2VydmVyc1BhcnNpbmcocm91dGVyQWRkcmVzc2VzLCByZWFkZXJBZGRyZXNzZXMsIHdyaXRlckFkZHJlc3Nlcykge1xuICAgIGNvbnN0IHJlY29yZCA9IG5ld1JlY29yZCh7cm91dGVyczogcm91dGVyQWRkcmVzc2VzLCByZWFkZXJzOiByZWFkZXJBZGRyZXNzZXMsIHdyaXRlcnM6IHdyaXRlckFkZHJlc3Nlc30pO1xuXG4gICAgY29uc3Qge3JvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnN9ID0gcGFyc2VTZXJ2ZXJzKHJlY29yZCk7XG5cbiAgICBleHBlY3Qocm91dGVycy50b0FycmF5KCkpLnRvRXF1YWwocm91dGVyQWRkcmVzc2VzKTtcbiAgICBleHBlY3QocmVhZGVycy50b0FycmF5KCkpLnRvRXF1YWwocmVhZGVyQWRkcmVzc2VzKTtcbiAgICBleHBlY3Qod3JpdGVycy50b0FycmF5KCkpLnRvRXF1YWwod3JpdGVyQWRkcmVzc2VzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGxHZXRTZXJ2ZXJzKHNlc3Npb24pIHtcbiAgICBjb25zdCB1dGlsID0gbmV3IEdldFNlcnZlcnNVdGlsKCk7XG4gICAgcmV0dXJuIHV0aWwuY2FsbEdldFNlcnZlcnMoc2Vzc2lvbiwgUk9VVEVSX0FERFJFU1MpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VUdGwocmVjb3JkKSB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBHZXRTZXJ2ZXJzVXRpbCgpO1xuICAgIHJldHVybiB1dGlsLnBhcnNlVHRsKHJlY29yZCwgUk9VVEVSX0FERFJFU1MpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTZXJ2ZXJzKHJlY29yZCkge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgR2V0U2VydmVyc1V0aWwoKTtcbiAgICByZXR1cm4gdXRpbC5wYXJzZVNlcnZlcnMocmVjb3JkLCBST1VURVJfQUREUkVTUyk7XG4gIH1cblxuICBmdW5jdGlvbiBuZXdSZWNvcmQoe3R0bCA9IGludCg0MiksIHJvdXRlcnMgPSBbXSwgcmVhZGVycyA9IFtdLCB3cml0ZXJzID0gW119KSB7XG4gICAgY29uc3Qgcm91dGVyc0ZpZWxkID0ge1xuICAgICAgXCJyb2xlXCI6IFwiUk9VVEVcIixcbiAgICAgIFwiYWRkcmVzc2VzXCI6IHJvdXRlcnNcbiAgICB9O1xuICAgIGNvbnN0IHJlYWRlcnNGaWVsZCA9IHtcbiAgICAgIFwicm9sZVwiOiBcIlJFQURcIixcbiAgICAgIFwiYWRkcmVzc2VzXCI6IHJlYWRlcnNcbiAgICB9O1xuICAgIGNvbnN0IHdyaXRlcnNGaWVsZCA9IHtcbiAgICAgIFwicm9sZVwiOiBcIldSSVRFXCIsXG4gICAgICBcImFkZHJlc3Nlc1wiOiB3cml0ZXJzXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFJlY29yZChbXCJ0dGxcIiwgXCJzZXJ2ZXJzXCJdLCBbdHRsLCBbcm91dGVyc0ZpZWxkLCByZWFkZXJzRmllbGQsIHdyaXRlcnNGaWVsZF1dKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGVjdFByb3RvY29sRXJyb3IoYWN0aW9uLCBkb25lKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc29sdmUoYWN0aW9uKCkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwcm9taXNlLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0JlKFBST1RPQ09MX0VSUk9SKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsYXNzIEZha2VTZXNzaW9uIHtcblxuICAgIGNvbnN0cnVjdG9yKHJ1blJlc3BvbnNlKSB7XG4gICAgICB0aGlzLl9ydW5SZXNwb25zZSA9IHJ1blJlc3BvbnNlO1xuICAgICAgdGhpcy5fY2xvc2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgc3RhdGljIHN1Y2Nlc3NmdWwocmVzdWx0KSB7XG4gICAgICByZXR1cm4gbmV3IEZha2VTZXNzaW9uKFByb21pc2UucmVzb2x2ZShyZXN1bHQpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZmFpbGVkKGVycm9yKSB7XG4gICAgICByZXR1cm4gbmV3IEZha2VTZXNzaW9uKFByb21pc2UucmVqZWN0KGVycm9yKSk7XG4gICAgfVxuXG4gICAgcnVuKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3J1blJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgdGhpcy5fY2xvc2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpc0Nsb3NlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jbG9zZWQ7XG4gICAgfVxuICB9XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuIFxudmFyIGFsbG9jID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL2J1ZicpLmFsbG9jLFxuICAgIHBhY2tzdHJlYW0gPSByZXF1aXJlKFwiLi4vLi4vbGliL3YxL2ludGVybmFsL3BhY2tzdHJlYW1cIiksXG4gICAgSW50ZWdlciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvaW50ZWdlclwiKS5kZWZhdWx0LFxuICAgIFBhY2tlciA9IHBhY2tzdHJlYW0uUGFja2VyLFxuICAgIFVucGFja2VyID0gcGFja3N0cmVhbS5VbnBhY2tlcixcbiAgICBTdHJ1Y3R1cmUgPSBwYWNrc3RyZWFtLlN0cnVjdHVyZTtcblxuZGVzY3JpYmUoJ3BhY2tzdHJlYW0nLCBmdW5jdGlvbigpIHtcblxuXG4gIGl0KCdzaG91bGQgcGFjayBpbnRlZ2VycycsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBuLCBpO1xuICAgIC8vIHRlc3Qgc21hbGwgbnVtYmVyc1xuICAgIGZvcihuID0gLTk5OTsgbiA8PSA5OTk7IG4gKz0gMSkge1xuICAgICAgaSA9IEludGVnZXIuZnJvbU51bWJlcihuKTtcbiAgICAgIGV4cGVjdCggcGFja0FuZFVucGFjayggaSApLnRvU3RyaW5nKCkgKS50b0JlKCBpLnRvU3RyaW5nKCkgKTtcbiAgICB9XG4gICAgLy8gcG9zaXRpdmUgbnVtYmVyc1xuICAgIGZvcihuID0gMTY7IG4gPD0gMTYgOyBuICs9IDEpIHtcbiAgICAgIGkgPSBJbnRlZ2VyLmZyb21OdW1iZXIoTWF0aC5wb3coMiwgbikpO1xuICAgICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBpICkudG9TdHJpbmcoKSApLnRvQmUoIGkudG9TdHJpbmcoKSApO1xuICAgIH1cbiAgICAvLyBuZWdhdGl2ZSBudW1iZXJzXG4gICAgZm9yKG4gPSAwOyBuIDw9IDYzIDsgbiArPSAxKSB7XG4gICAgICBpID0gSW50ZWdlci5mcm9tTnVtYmVyKC1NYXRoLnBvdygyLCBuKSk7XG4gICAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIGkgKS50b1N0cmluZygpICkudG9CZSggaS50b1N0cmluZygpICk7XG4gICAgfVxuICB9KTtcbiAgaXQoJ3Nob3VsZCBwYWNrIHN0cmluZ3MnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiXCIgKSApLnRvQmUoIFwiXCIgKTtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIFwiYWJjZGVmZzEyMzU2N1wiICkgKS50b0JlKCBcImFiY2RlZmcxMjM1NjdcIiApO1xuICAgIHZhciBzdHIgPSBBcnJheSg2NTUzNiArIDEpLmpvaW4oJ2EnKTsgLy8gMiBeIDE2ICsgMVxuICAgIGV4cGVjdCggcGFja0FuZFVucGFjayhzdHIsIHN0ci5sZW5ndGggKyA4KSkudG9CZShzdHIpO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBwYWNrIHN0cnVjdHVyZXMnLCBmdW5jdGlvbigpIHtcbiAgICBleHBlY3QoIHBhY2tBbmRVbnBhY2soIG5ldyBTdHJ1Y3R1cmUoMSwgW1wiSGVsbG8sIHdvcmxkISEhXCJdICkgKS5maWVsZHNbMF0gKSAgXG4gICAgIC50b0JlKCBcIkhlbGxvLCB3b3JsZCEhIVwiICk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhY2sgbGlzdHMnLCBmdW5jdGlvbigpIHtcbiAgIHZhciBsaXN0ID0gWydhJywgJ2InXTtcbiAgIHZhciByb3VuZHRyaXBwZWQgPSBwYWNrQW5kVW5wYWNrKCBsaXN0ICk7XG4gICBleHBlY3QoIHJvdW5kdHJpcHBlZFswXSApLnRvQmUoIGxpc3RbMF0gKTtcbiAgIGV4cGVjdCggcm91bmR0cmlwcGVkWzFdICkudG9CZSggbGlzdFsxXSApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhY2sgbG9uZyBsaXN0cycsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsaXN0TGVuZ3RoID0gMjU2O1xuICAgIHZhciBsaXN0ID0gW107XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgbGlzdC5wdXNoKG51bGwpXG4gICAgfVxuICAgIHZhciByb3VuZHRyaXBwZWQgPSBwYWNrQW5kVW5wYWNrKCBsaXN0LCAxNDAwICk7XG4gICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMF0gKS50b0JlKCBsaXN0WzBdICk7XG4gICAgZXhwZWN0KCByb3VuZHRyaXBwZWRbMV0gKS50b0JlKCBsaXN0WzFdICk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHBhY2tBbmRVbnBhY2soIHZhbCwgYnVmZmVyU2l6ZSApIHtcbiAgYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemUgfHwgMTI4O1xuICB2YXIgYnVmZmVyID0gYWxsb2MoYnVmZmVyU2l6ZSk7XG4gIG5ldyBQYWNrZXIoIGJ1ZmZlciApLnBhY2thYmxlKCB2YWwgKSgpO1xuICBidWZmZXIucmVzZXQoKTtcbiAgcmV0dXJuIG5ldyBVbnBhY2tlcigpLnVucGFjayggYnVmZmVyICk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFBvb2wgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvcG9vbCcpLmRlZmF1bHQ7XG5cbmRlc2NyaWJlKCdQb29sJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdhbGxvY2F0ZXMgaWYgcG9vbCBpcyBlbXB0eScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBrZXkgPSBcImJvbHQ6Ly9sb2NhbGhvc3Q6NzY4N1wiO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woIGZ1bmN0aW9uICh1cmwsIHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZSh1cmwsIGNvdW50ZXIrKywgcmVsZWFzZSkgfSApO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciByMCA9IHBvb2wuYWNxdWlyZShrZXkpO1xuICAgIHZhciByMSA9IHBvb2wuYWNxdWlyZShrZXkpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgfSk7XG5cbiAgaXQoJ3Bvb2xzIGlmIHJlc291cmNlcyBhcmUgcmV0dXJuZWQnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCBhbGxvY2F0ZXNcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIGtleSA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg3XCI7XG4gICAgdmFyIHBvb2wgPSBuZXcgUG9vbCggZnVuY3Rpb24gKHVybCwgcmVsZWFzZSkgeyByZXR1cm4gbmV3IFJlc291cmNlKHVybCwgY291bnRlcisrLCByZWxlYXNlKSB9ICk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHIwID0gcG9vbC5hY3F1aXJlKGtleSk7XG4gICAgcjAuY2xvc2UoKTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoa2V5KTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHIwLmlkICkudG9CZSggMCApO1xuICAgIGV4cGVjdCggcjEuaWQgKS50b0JlKCAwICk7XG4gIH0pO1xuXG4gIGl0KCdoYW5kbGVzIG11bHRpcGxlIGtleXMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlbiBhIHBvb2wgdGhhdCBhbGxvY2F0ZXNcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIGtleTEgPSBcImJvbHQ6Ly9sb2NhbGhvc3Q6NzY4N1wiO1xuICAgIHZhciBrZXkyID0gXCJib2x0Oi8vbG9jYWxob3N0Ojc2ODhcIjtcbiAgICB2YXIgcG9vbCA9IG5ldyBQb29sKCBmdW5jdGlvbiAodXJsLCByZWxlYXNlKSB7IHJldHVybiBuZXcgUmVzb3VyY2UodXJsLCBjb3VudGVyKyssIHJlbGVhc2UpIH0gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoa2V5MSk7XG4gICAgdmFyIHIxID0gcG9vbC5hY3F1aXJlKGtleTIpO1xuICAgIHIwLmNsb3NlKCk7XG4gICAgdmFyIHIyID0gcG9vbC5hY3F1aXJlKGtleTEpO1xuICAgIHZhciByMyA9IHBvb2wuYWNxdWlyZShrZXkyKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHIwLmlkICkudG9CZSggMCApO1xuICAgIGV4cGVjdCggcjEuaWQgKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCByMi5pZCApLnRvQmUoIDAgKTtcbiAgICBleHBlY3QoIHIzLmlkICkudG9CZSggMiApO1xuICB9KTtcblxuICBpdCgnZnJlZXMgaWYgcG9vbCByZWFjaGVzIG1heCBzaXplJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW4gYSBwb29sIHRoYXQgdHJhY2tzIGRlc3Ryb3llZCByZXNvdXJjZXNcbiAgICB2YXIgY291bnRlciA9IDAsXG4gICAgICAgIGRlc3Ryb3llZCA9IFtdO1xuICAgIHZhciBrZXkgPSBcImJvbHQ6Ly9sb2NhbGhvc3Q6NzY4N1wiO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woXG4gICAgICBmdW5jdGlvbiAodXJsLCByZWxlYXNlKSB7IHJldHVybiBuZXcgUmVzb3VyY2UodXJsLCBjb3VudGVyKyssIHJlbGVhc2UpIH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgZGVzdHJveWVkLnB1c2gocmVzb3VyY2UpOyB9LFxuICAgICAgZnVuY3Rpb24gKHJlc291cmNlKSB7IHJldHVybiB0cnVlOyB9LFxuICAgICAgMiAvLyBtYXhJZGxlXG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoa2V5KTtcbiAgICB2YXIgcjEgPSBwb29sLmFjcXVpcmUoa2V5KTtcbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoa2V5KTtcbiAgICByMC5jbG9zZSgpO1xuICAgIHIxLmNsb3NlKCk7XG4gICAgcjIuY2xvc2UoKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIGRlc3Ryb3llZC5sZW5ndGggKS50b0JlKCAxICk7XG4gICAgZXhwZWN0KCBkZXN0cm95ZWRbMF0uaWQgKS50b0JlKCByMi5pZCApO1xuICB9KTtcblxuICBpdCgnZnJlZXMgaWYgdmFsaWRhdGUgcmV0dXJucyBmYWxzZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMCxcbiAgICAgIGRlc3Ryb3llZCA9IFtdO1xuICAgIHZhciBrZXkgPSBcImJvbHQ6Ly9sb2NhbGhvc3Q6NzY4N1wiO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woXG4gICAgICBmdW5jdGlvbiAodXJsLCByZWxlYXNlKSB7IHJldHVybiBuZXcgUmVzb3VyY2UodXJsLCBjb3VudGVyKyssIHJlbGVhc2UpIH0sXG4gICAgICBmdW5jdGlvbiAocmVzb3VyY2UpIHsgZGVzdHJveWVkLnB1c2gocmVzb3VyY2UpOyB9LFxuICAgICAgZnVuY3Rpb24gKHJlc291cmNlKSB7IHJldHVybiBmYWxzZTsgfSxcbiAgICAgIDEwMDAgLy8gbWF4SWRsZVxuICAgICk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIHIwID0gcG9vbC5hY3F1aXJlKGtleSk7XG4gICAgdmFyIHIxID0gcG9vbC5hY3F1aXJlKGtleSk7XG4gICAgcjAuY2xvc2UoKTtcbiAgICByMS5jbG9zZSgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggZGVzdHJveWVkLmxlbmd0aCApLnRvQmUoIDIgKTtcbiAgICBleHBlY3QoIGRlc3Ryb3llZFswXS5pZCApLnRvQmUoIHIwLmlkICk7XG4gICAgZXhwZWN0KCBkZXN0cm95ZWRbMV0uaWQgKS50b0JlKCByMS5pZCApO1xuICB9KTtcblxuXG4gIGl0KCdwdXJnZXMga2V5cycsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuIGEgcG9vbCB0aGF0IGFsbG9jYXRlc1xuICAgIHZhciBjb3VudGVyID0gMDtcbiAgICB2YXIga2V5MSA9IFwiYm9sdDovL2xvY2FsaG9zdDo3Njg3XCI7XG4gICAgdmFyIGtleTIgPSBcImJvbHQ6Ly9sb2NhbGhvc3Q6NzY4OFwiO1xuICAgIHZhciBwb29sID0gbmV3IFBvb2woIGZ1bmN0aW9uICh1cmwsIHJlbGVhc2UpIHsgcmV0dXJuIG5ldyBSZXNvdXJjZSh1cmwsIGNvdW50ZXIrKywgcmVsZWFzZSkgfSxcbiAgICAgIGZ1bmN0aW9uIChyZXMpIHtyZXMuZGVzdHJveWVkID0gdHJ1ZTsgcmV0dXJuIHRydWV9XG4gICAgKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgcjAgPSBwb29sLmFjcXVpcmUoa2V5MSk7XG4gICAgdmFyIHIxID0gcG9vbC5hY3F1aXJlKGtleTIpO1xuICAgIHIwLmNsb3NlKCk7XG4gICAgcjEuY2xvc2UoKTtcbiAgICBleHBlY3QocG9vbC5oYXMoa2V5MSkpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHBvb2wuaGFzKGtleTIpKS50b0JlKHRydWUpO1xuICAgIHBvb2wucHVyZ2Uoa2V5MSk7XG4gICAgZXhwZWN0KHBvb2wuaGFzKGtleTEpKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QocG9vbC5oYXMoa2V5MikpLnRvQmUodHJ1ZSk7XG5cbiAgICB2YXIgcjIgPSBwb29sLmFjcXVpcmUoa2V5MSk7XG4gICAgdmFyIHIzID0gcG9vbC5hY3F1aXJlKGtleTIpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggcjAuaWQgKS50b0JlKCAwICk7XG4gICAgZXhwZWN0KCByMC5kZXN0cm95ZWQgKS50b0JlKCB0cnVlICk7XG4gICAgZXhwZWN0KCByMS5pZCApLnRvQmUoIDEgKTtcbiAgICBleHBlY3QoIHIyLmlkICkudG9CZSggMiApO1xuICAgIGV4cGVjdCggcjMuaWQgKS50b0JlKCAxICk7XG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIFJlc291cmNlKCBrZXksIGlkLCByZWxlYXNlKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5pZCA9IGlkO1xuICB0aGlzLmNsb3NlID0gZnVuY3Rpb24oKSB7IHJlbGVhc2Uoa2V5LCBzZWxmKTsgfTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgUmVkaXNjb3ZlcnkgZnJvbSBcIi4uLy4uL3NyYy92MS9pbnRlcm5hbC9yZWRpc2NvdmVyeVwiO1xuaW1wb3J0IEdldFNlcnZlcnNVdGlsIGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZXJuYWwvZ2V0LXNlcnZlcnMtdXRpbFwiO1xuaW1wb3J0IHtuZXdFcnJvciwgUFJPVE9DT0xfRVJST1J9IGZyb20gXCIuLi8uLi9zcmMvdjEvZXJyb3JcIjtcbmltcG9ydCBSZWNvcmQgZnJvbSBcIi4uLy4uL3NyYy92MS9yZWNvcmRcIjtcbmltcG9ydCB7aW50fSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVnZXJcIjtcbmltcG9ydCBSb3VuZFJvYmluQXJyYXkgZnJvbSBcIi4uLy4uL3NyYy92MS9pbnRlcm5hbC9yb3VuZC1yb2Jpbi1hcnJheVwiO1xuaW1wb3J0IFJvdXRpbmdUYWJsZSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVybmFsL3JvdXRpbmctdGFibGVcIjtcblxuY29uc3QgUk9VVEVSX0FERFJFU1MgPSAnYm9sdCtyb3V0aW5nOi8vdGVzdC5yb3V0ZXIuY29tJztcblxuZGVzY3JpYmUoJ3JlZGlzY292ZXJ5JywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiBjb25uZWN0aW9uIGVycm9yIGhhcHBlbnMnLCBkb25lID0+IHtcbiAgICBjb25zdCB1dGlsID0gbmV3IEZha2VHZXRTZXJ2ZXJzVXRpbCh7XG4gICAgICBjYWxsR2V0U2VydmVyczogKCkgPT4gbnVsbCxcbiAgICB9KTtcblxuICAgIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHV0aWwpLnRoZW4ocm91dGluZ1RhYmxlID0+IHtcbiAgICAgIGV4cGVjdChyb3V0aW5nVGFibGUpLnRvQmVOdWxsKCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBubyByZWNvcmRzIGFyZSByZXR1cm5lZCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBbXSxcbiAgICB9KTtcblxuICAgIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHV0aWwpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdFByb3RvY29sRXJyb3IoZXJyb3IsICdJbGxlZ2FsIHJlc3BvbnNlIGZyb20gcm91dGVyJyk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBtdWx0aXBsZSByZWNvcmRzIGFyZSByZXR1cm5lZCcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBbbmV3IFJlY29yZChbJ2EnXSwgWydhYWEnXSksIG5ldyBSZWNvcmQoWydiJ10sIFsnYmJiJ10pXVxuICAgIH0pO1xuXG4gICAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIodXRpbCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0UHJvdG9jb2xFcnJvcihlcnJvciwgJ0lsbGVnYWwgcmVzcG9uc2UgZnJvbSByb3V0ZXInKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHR0bCBwYXJzaW5nIHRocm93cycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBbbmV3IFJlY29yZChbJ2EnXSwgWydhYWEnXSldLFxuICAgICAgcGFyc2VUdGw6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBUVEwnLCBQUk9UT0NPTF9FUlJPUik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcih1dGlsKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3RQcm90b2NvbEVycm9yKGVycm9yLCAnVW5hYmxlIHRvIHBhcnNlIFRUTCcpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IHdoZW4gc2VydmVycyBwYXJzaW5nIHRocm93cycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBbbmV3IFJlY29yZChbJ2EnXSwgWydhYWEnXSldLFxuICAgICAgcGFyc2VUdGw6ICgpID0+IGludCg0MiksXG4gICAgICBwYXJzZVNlcnZlcnM6ICgpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3RXJyb3IoJ1VuYWJsZSB0byBwYXJzZSBzZXJ2ZXJzJywgUFJPVE9DT0xfRVJST1IpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIodXRpbCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0UHJvdG9jb2xFcnJvcihlcnJvciwgJ1VuYWJsZSB0byBwYXJzZSBzZXJ2ZXJzJyk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgd2hlbiBubyByb3V0ZXJzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtuZXcgUmVjb3JkKFsnYSddLCBbJ2FhYSddKV0sXG4gICAgICBwYXJzZVR0bDogKCkgPT4gaW50KDQyKSxcbiAgICAgIHBhcnNlU2VydmVyczogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoKSxcbiAgICAgICAgICByZWFkZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KFsncmVhZGVyMSddKSxcbiAgICAgICAgICB3cml0ZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KFsnd3JpdGVyMSddKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIodXRpbCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0UHJvdG9jb2xFcnJvcihlcnJvciwgJ1JlY2VpdmVkIG5vIHJvdXRlcnMnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIG5vIHJlYWRlcnMnLCBkb25lID0+IHtcbiAgICBjb25zdCB1dGlsID0gbmV3IEZha2VHZXRTZXJ2ZXJzVXRpbCh7XG4gICAgICBjYWxsR2V0U2VydmVyczogKCkgPT4gW25ldyBSZWNvcmQoWydhJ10sIFsnYWFhJ10pXSxcbiAgICAgIHBhcnNlVHRsOiAoKSA9PiBpbnQoNDIpLFxuICAgICAgcGFyc2VTZXJ2ZXJzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGVyczogbmV3IFJvdW5kUm9iaW5BcnJheShbJ3JvdXRlcjEnXSksXG4gICAgICAgICAgcmVhZGVyczogbmV3IFJvdW5kUm9iaW5BcnJheSgpLFxuICAgICAgICAgIHdyaXRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkoWyd3cml0ZXIxJ10pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcih1dGlsKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICBleHBlY3RQcm90b2NvbEVycm9yKGVycm9yLCAnUmVjZWl2ZWQgbm8gcmVhZGVycycpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiByb3V0aW5nIHRhYmxlIHdoZW4gbm8gd3JpdGVycycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHV0aWwgPSBuZXcgRmFrZUdldFNlcnZlcnNVdGlsKHtcbiAgICAgIGNhbGxHZXRTZXJ2ZXJzOiAoKSA9PiBbbmV3IFJlY29yZChbJ2EnXSwgWydhYWEnXSldLFxuICAgICAgcGFyc2VUdGw6ICgpID0+IGludCg0MiksXG4gICAgICBwYXJzZVNlcnZlcnM6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KFsncm91dGVyMSddKSxcbiAgICAgICAgICByZWFkZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KFsncmVhZGVyMSddKSxcbiAgICAgICAgICB3cml0ZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKHV0aWwpLnRoZW4ocm91dGluZ1RhYmxlID0+IHtcbiAgICAgIGV4cGVjdChyb3V0aW5nVGFibGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm91dGluZ1RhYmxlKS5ub3QudG9CZU51bGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdmFsaWQgcm91dGluZyB0YWJsZSB3aXRoIDEgcm91dGVyLCAxIHJlYWRlciBhbmQgMSB3cml0ZXInLCBkb25lID0+IHtcbiAgICB0ZXN0VmFsaWRSb3V0aW5nVGFibGUoWydyb3V0ZXIxJ10sIFsncmVhZGVyMSddLCBbJ3dyaXRlcjEnXSwgaW50KDQyKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHZhbGlkIHJvdXRpbmcgdGFibGUgd2l0aCAyIHJvdXRlcnMsIDIgcmVhZGVycyBhbmQgMiB3cml0ZXJzJywgZG9uZSA9PiB7XG4gICAgdGVzdFZhbGlkUm91dGluZ1RhYmxlKFsncm91dGVyMScsICdyb3V0ZXIyJ10sIFsncmVhZGVyMScsICdyZWFkZXIyJ10sIFsnd3JpdGVyMScsICd3cml0ZXIyJ10sIGludChEYXRlLm5vdygpKSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHZhbGlkIHJvdXRpbmcgdGFibGUgd2l0aCAxIHJvdXRlciwgMyByZWFkZXJzIGFuZCAxIHdyaXRlcicsIGRvbmUgPT4ge1xuICAgIHRlc3RWYWxpZFJvdXRpbmdUYWJsZShbJ3JvdXRlcjEnXSwgWydyZWFkZXIxJywgJ3JlYWRlcjInLCAncmVhZGVyMyddLCBbJ3dyaXRlcjEnXSwgaW50KDEyMzQ1KSwgZG9uZSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHRlc3RWYWxpZFJvdXRpbmdUYWJsZShyb3V0ZXJBZGRyZXNzZXMsIHJlYWRlckFkZHJlc3Nlcywgd3JpdGVyQWRkcmVzc2VzLCBleHBpcmVzLCBkb25lKSB7XG4gICAgY29uc3QgdXRpbCA9IG5ldyBGYWtlR2V0U2VydmVyc1V0aWwoe1xuICAgICAgY2FsbEdldFNlcnZlcnM6ICgpID0+IFtuZXcgUmVjb3JkKFsnYSddLCBbJ2FhYSddKV0sXG4gICAgICBwYXJzZVR0bDogKCkgPT4gZXhwaXJlcyxcbiAgICAgIHBhcnNlU2VydmVyczogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlcnM6IG5ldyBSb3VuZFJvYmluQXJyYXkocm91dGVyQWRkcmVzc2VzKSxcbiAgICAgICAgICByZWFkZXJzOiBuZXcgUm91bmRSb2JpbkFycmF5KHJlYWRlckFkZHJlc3NlcyksXG4gICAgICAgICAgd3JpdGVyczogbmV3IFJvdW5kUm9iaW5BcnJheSh3cml0ZXJBZGRyZXNzZXMpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb29rdXBSb3V0aW5nVGFibGVPblJvdXRlcih1dGlsKS50aGVuKHJvdXRpbmdUYWJsZSA9PiB7XG4gICAgICBleHBlY3Qocm91dGluZ1RhYmxlKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvdXRpbmdUYWJsZSkubm90LnRvQmVOdWxsKCk7XG5cbiAgICAgIGV4cGVjdChyb3V0aW5nVGFibGUuZXhwaXJhdGlvblRpbWUpLnRvRXF1YWwoZXhwaXJlcyk7XG5cbiAgICAgIGNvbnN0IGFsbFNlcnZlcnMgPSByb3V0aW5nVGFibGUuc2VydmVyc0RpZmYobmV3IFJvdXRpbmdUYWJsZSgpKS5zb3J0KCk7XG4gICAgICBjb25zdCBhbGxFeHBlY3RlZFNlcnZlcnMgPSBbLi4ucm91dGVyQWRkcmVzc2VzLCAuLi5yZWFkZXJBZGRyZXNzZXMsIC4uLndyaXRlckFkZHJlc3Nlc10uc29ydCgpO1xuICAgICAgZXhwZWN0KGFsbFNlcnZlcnMpLnRvRXF1YWwoYWxsRXhwZWN0ZWRTZXJ2ZXJzKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9va3VwUm91dGluZ1RhYmxlT25Sb3V0ZXIoZ2V0U2VydmVyc1V0aWwpIHtcbiAgICBjb25zdCByZWRpc2NvdmVyeSA9IG5ldyBSZWRpc2NvdmVyeShnZXRTZXJ2ZXJzVXRpbCk7XG4gICAgcmV0dXJuIHJlZGlzY292ZXJ5Lmxvb2t1cFJvdXRpbmdUYWJsZU9uUm91dGVyKG51bGwsIFJPVVRFUl9BRERSRVNTKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGVjdFByb3RvY29sRXJyb3IoZXJyb3IsIG1lc3NhZ2VQcmVmaXgpIHtcbiAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChQUk9UT0NPTF9FUlJPUik7XG4gICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UuaW5kZXhPZihtZXNzYWdlUHJlZml4KSkudG9FcXVhbCgwKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZE5vdEJlQ2FsbGVkKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2hvdWxkIG5vdCBiZSBjYWxsZWQnKTtcbiAgfVxuXG4gIGNsYXNzIEZha2VHZXRTZXJ2ZXJzVXRpbCBleHRlbmRzIEdldFNlcnZlcnNVdGlsIHtcblxuICAgIGNvbnN0cnVjdG9yKHtjYWxsR2V0U2VydmVycyA9IHNob3VsZE5vdEJlQ2FsbGVkLCBwYXJzZVR0bCA9IHNob3VsZE5vdEJlQ2FsbGVkLCBwYXJzZVNlcnZlcnMgPSBzaG91bGROb3RCZUNhbGxlZH0pIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICB0aGlzLl9jYWxsR2V0U2VydmVycyA9IGNhbGxHZXRTZXJ2ZXJzO1xuICAgICAgdGhpcy5fcGFyc2VUdGwgPSBwYXJzZVR0bDtcbiAgICAgIHRoaXMuX3BhcnNlU2VydmVycyA9IHBhcnNlU2VydmVycztcbiAgICB9XG5cbiAgICBjYWxsR2V0U2VydmVycyhzZXNzaW9uLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc29sdmUodGhpcy5fY2FsbEdldFNlcnZlcnMoKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyc2VUdGwocmVjb3JkLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFyc2VUdGwoKTtcbiAgICB9XG5cbiAgICBwYXJzZVNlcnZlcnMocmVjb3JkLCByb3V0ZXJBZGRyZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFyc2VTZXJ2ZXJzKCk7XG4gICAgfVxuICB9XG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJvdW5kUm9iaW5BcnJheSBmcm9tIFwiLi4vLi4vbGliL3YxL2ludGVybmFsL3JvdW5kLXJvYmluLWFycmF5XCI7XG5cbmRlc2NyaWJlKCdyb3VuZC1yb2Jpbi1hcnJheScsICgpID0+IHtcblxuICBpdCgnc2hvdWxkIGJlaGF2ZSBjb3JyZWN0bHkgd2hlbiBlbXB0eScsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcblxuICAgIGV4cGVjdChhcnJheS5pc0VtcHR5KCkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoYXJyYXkuc2l6ZSgpKS50b0VxdWFsKDApO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvQmVOdWxsKCk7XG4gICAgZXhwZWN0KGFycmF5LnRvQXJyYXkoKSkudG9FcXVhbChbXSk7XG5cbiAgICBhcnJheS5yZW1vdmUoMSk7XG5cbiAgICBleHBlY3QoYXJyYXkuaXNFbXB0eSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGFycmF5LnNpemUoKSkudG9FcXVhbCgwKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0JlTnVsbCgpO1xuICAgIGV4cGVjdChhcnJheS50b0FycmF5KCkpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlaGF2ZSBjb3JyZWN0bHkgd2hlbiBjb250YWlucyBzaW5nbGUgZWxlbWVudCcsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzVdKTtcblxuICAgIGV4cGVjdChhcnJheS5pc0VtcHR5KCkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChhcnJheS5zaXplKCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkudG9BcnJheSgpKS50b0VxdWFsKFs1XSk7XG5cbiAgICBhcnJheS5yZW1vdmUoMSk7XG5cbiAgICBleHBlY3QoYXJyYXkuaXNFbXB0eSgpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QoYXJyYXkuc2l6ZSgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gICAgZXhwZWN0KGFycmF5LnRvQXJyYXkoKSkudG9FcXVhbChbNV0pO1xuXG4gICAgYXJyYXkucmVtb3ZlKDUpO1xuXG4gICAgZXhwZWN0KGFycmF5LmlzRW1wdHkoKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChhcnJheS5zaXplKCkpLnRvRXF1YWwoMCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9CZU51bGwoKTtcbiAgICBleHBlY3QoYXJyYXkudG9BcnJheSgpKS50b0VxdWFsKFtdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwdXNoIGl0ZW1zJywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5MSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICBhcnJheTEucHVzaEFsbChbMV0pO1xuICAgIGV4cGVjdChhcnJheTEudG9BcnJheSgpKS50b0VxdWFsKFsxXSk7XG5cbiAgICBjb25zdCBhcnJheTIgPSBuZXcgUm91bmRSb2JpbkFycmF5KFtdKTtcbiAgICBhcnJheTIucHVzaEFsbChbMSwgMiwgM10pO1xuICAgIGV4cGVjdChhcnJheTIudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyLCAzXSk7XG5cbiAgICBjb25zdCBhcnJheTMgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzXSk7XG4gICAgYXJyYXkzLnB1c2hBbGwoWzQsIDVdKTtcbiAgICBleHBlY3QoYXJyYXkzLnRvQXJyYXkoKSkudG9FcXVhbChbMSwgMiwgMywgNCwgNV0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHB1c2ggZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgY29uc3QgZW1wdHlBcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoKTtcbiAgICBlbXB0eUFycmF5LnB1c2hBbGwoW10pO1xuICAgIGV4cGVjdChlbXB0eUFycmF5LmlzRW1wdHkoKSkudG9CZVRydXRoeSgpO1xuXG4gICAgY29uc3Qgbm9uRW1wdHlBcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDNdKTtcbiAgICBub25FbXB0eUFycmF5LnB1c2hBbGwoW10pO1xuICAgIGV4cGVjdChub25FbXB0eUFycmF5LnRvQXJyYXkoKSkudG9FcXVhbChbMSwgMiwgM10pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IHdoZW4gdHJ5aW5nIHRvIHB1c2ggaWxsZWdhbCBpdGVtcycsICgpID0+IHtcbiAgICBjb25zdCBlbXB0eUFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheSgpO1xuICAgIGNvbnN0IG5vbkVtcHR5QXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzXSk7XG5cbiAgICBleHBlY3QoKCkgPT4gZW1wdHlBcnJheS5wdXNoQWxsKHVuZGVmaW5lZCkpLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4gbm9uRW1wdHlBcnJheS5wdXNoQWxsKHVuZGVmaW5lZCkpLnRvVGhyb3coKTtcblxuICAgIGV4cGVjdCgoKSA9PiBlbXB0eUFycmF5LnB1c2hBbGwobnVsbCkpLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4gbm9uRW1wdHlBcnJheS5wdXNoQWxsKG51bGwpKS50b1Rocm93KCk7XG5cbiAgICBleHBlY3QoKCkgPT4gZW1wdHlBcnJheS5wdXNoQWxsKHt9KSkudG9UaHJvdygpO1xuICAgIGV4cGVjdCgoKSA9PiBub25FbXB0eUFycmF5LnB1c2hBbGwoe30pKS50b1Rocm93KCk7XG5cbiAgICBleHBlY3QoKCkgPT4gZW1wdHlBcnJheS5wdXNoQWxsKHthOiAxLCBiOiAyfSkpLnRvVGhyb3coKTtcbiAgICBleHBlY3QoKCkgPT4gbm9uRW1wdHlBcnJheS5wdXNoQWxsKHthOiAxLCBiOiAyfSkpLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGVwIHRocm91Z2ggYXJyYXknLCAoKSA9PiB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzLCA0LCA1XSk7XG5cbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0ZXAgdGhyb3VnaCBzaW5nbGUgZWxlbWVudCBhcnJheScsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzVdKTtcblxuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBkZWxldGluZyBpdGVtIGJlZm9yZSBjdXJyZW50ICcsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDMsIDQsIDVdKTtcblxuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBhcnJheS5yZW1vdmUoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg0KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGRlbGV0aW5nIGl0ZW0gb24gY3VycmVudCAnLCAoKSA9PiB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzLCA0LCA1XSk7XG5cbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgYXJyYXkucmVtb3ZlKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNCk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg1KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg0KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBkZWxldGluZyBpdGVtIGFmdGVyIGN1cnJlbnQgJywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbMSwgMiwgMywgNCwgNV0pO1xuXG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDIpO1xuICAgIGFycmF5LnJlbW92ZSg0KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDIpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGRlbGV0aW5nIGxhc3QgaXRlbSAnLCAoKSA9PiB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KFsxLCAyLCAzLCA0LCA1XSk7XG5cbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGFycmF5LnJlbW92ZSg1KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDEpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGRlbGV0aW5nIGZpcnN0IGl0ZW0gJywgKCkgPT4ge1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheShbMSwgMiwgMywgNCwgNV0pO1xuICAgIGFycmF5LnJlbW92ZSgxKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDIpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMyk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCg0KTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDUpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDQpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoNSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGRlbGV0aW5nIG11bHRpcGxlIGl0ZW1zICcsICgpID0+IHtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkoWzEsIDIsIDMsIDEsIDFdKTtcbiAgICBhcnJheS5yZW1vdmUoMSk7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgyKTtcbiAgICBleHBlY3QoYXJyYXkubmV4dCgpKS50b0VxdWFsKDMpO1xuICAgIGV4cGVjdChhcnJheS5uZXh0KCkpLnRvRXF1YWwoMik7XG4gICAgZXhwZWN0KGFycmF5Lm5leHQoKSkudG9FcXVhbCgzKTtcbiAgfSk7XG5cbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUm91dGluZ1RhYmxlIGZyb20gXCIuLi8uLi9zcmMvdjEvaW50ZXJuYWwvcm91dGluZy10YWJsZVwiO1xuaW1wb3J0IFJvdW5kUm9iaW5BcnJheSBmcm9tIFwiLi4vLi4vc3JjL3YxL2ludGVybmFsL3JvdW5kLXJvYmluLWFycmF5XCI7XG5pbXBvcnQge2ludH0gZnJvbSBcIi4uLy4uL3NyYy92MS9pbnRlZ2VyXCI7XG5cbmRlc2NyaWJlKCdyb3V0aW5nLXRhYmxlJywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgbm90IGJlIHN0YWxlIHdoZW4gaGFzIHJvdXRlcnMsIHJlYWRlcnMsIHdyaXRlcnMgYW5kIGZ1dHVyZSBleHBpcmF0aW9uIGRhdGUnLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuICAgIGV4cGVjdCh0YWJsZS5pc1N0YWxlKCkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHN0YWxlIHdoZW4gZXhwaXJhdGlvbiBkYXRlIGluIHRoZSBwYXN0JywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMSwgMl0sIFsxLCAyXSwgZXhwaXJlZCgpKTtcbiAgICBleHBlY3QodGFibGUuaXNTdGFsZSgpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc3RhbGUgd2hlbiBoYXMgc2luZ2xlIHJvdXRlcicsICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZVRhYmxlKFsxXSwgWzIsIDNdLCBbNCwgNV0sIG5vdEV4cGlyZWQoKSk7XG4gICAgZXhwZWN0KHRhYmxlLmlzU3RhbGUoKSkudG9CZVRydXRoeSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHN0YWxlIHdoZW4gbm8gcmVhZGVycycsICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgW10sIFszLCA0XSwgbm90RXhwaXJlZCgpKTtcbiAgICBleHBlY3QodGFibGUuaXNTdGFsZSgpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc3RhbGUgd2hlbiBubyB3cml0ZXJzJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFtdLCBub3RFeHBpcmVkKCkpO1xuICAgIGV4cGVjdCh0YWJsZS5pc1N0YWxlKCkpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgYmUgc3RhbGUgd2l0aCBzaW5nbGUgcmVhZGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbM10sIFs0LCA1XSwgbm90RXhwaXJlZCgpKTtcbiAgICBleHBlY3QodGFibGUuaXNTdGFsZSgpKS50b0JlRmFsc3koKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgYmUgc3RhbGUgd2l0aCBzaW5nbGUgd3JpdGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFs1XSwgbm90RXhwaXJlZCgpKTtcbiAgICBleHBlY3QodGFibGUuaXNTdGFsZSgpKS50b0JlRmFsc3koKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmb3JnZXQgcmVhZGVyLCB3cml0ZXIgYnV0IG5vdCByb3V0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFsxLCAyXSwgWzEsIDJdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgdGFibGUuZm9yZ2V0KDEpO1xuXG4gICAgZXhwZWN0KHRhYmxlLnJvdXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyXSk7XG4gICAgZXhwZWN0KHRhYmxlLnJlYWRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsyXSk7XG4gICAgZXhwZWN0KHRhYmxlLndyaXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsyXSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZm9yZ2V0IHNpbmdsZSByZWFkZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFs0Ml0sIFsxLCAyLCAzXSwgbm90RXhwaXJlZCgpKTtcblxuICAgIHRhYmxlLmZvcmdldCg0Mik7XG5cbiAgICBleHBlY3QodGFibGUucm91dGVycy50b0FycmF5KCkpLnRvRXF1YWwoWzEsIDJdKTtcbiAgICBleHBlY3QodGFibGUucmVhZGVycy50b0FycmF5KCkpLnRvRXF1YWwoW10pO1xuICAgIGV4cGVjdCh0YWJsZS53cml0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbChbMSwgMiwgM10pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZvcmdldCBzaW5nbGUgd3JpdGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNCwgNV0sIFs0Ml0sIG5vdEV4cGlyZWQoKSk7XG5cbiAgICB0YWJsZS5mb3JnZXQoNDIpO1xuXG4gICAgZXhwZWN0KHRhYmxlLnJvdXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyXSk7XG4gICAgZXhwZWN0KHRhYmxlLnJlYWRlcnMudG9BcnJheSgpKS50b0VxdWFsKFszLCA0LCA1XSk7XG4gICAgZXhwZWN0KHRhYmxlLndyaXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFtdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmb3JnZXQgcm91dGVyJywgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMSwgM10sIFs0LCAxXSwgbm90RXhwaXJlZCgpKTtcblxuICAgIHRhYmxlLmZvcmdldFJvdXRlcigxKTtcblxuICAgIGV4cGVjdCh0YWJsZS5yb3V0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbChbMl0pO1xuICAgIGV4cGVjdCh0YWJsZS5yZWFkZXJzLnRvQXJyYXkoKSkudG9FcXVhbChbMSwgM10pO1xuICAgIGV4cGVjdCh0YWJsZS53cml0ZXJzLnRvQXJyYXkoKSkudG9FcXVhbChbNCwgMV0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZvcmdldCB3cml0ZXInLCAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMiwgM10sIFsyLCAxLCA1XSwgWzUsIDFdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgdGFibGUuZm9yZ2V0V3JpdGVyKDEpO1xuXG4gICAgZXhwZWN0KHRhYmxlLnJvdXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsxLCAyLCAzXSk7XG4gICAgZXhwZWN0KHRhYmxlLnJlYWRlcnMudG9BcnJheSgpKS50b0VxdWFsKFsyLCAxLCA1XSk7XG4gICAgZXhwZWN0KHRhYmxlLndyaXRlcnMudG9BcnJheSgpKS50b0VxdWFsKFs1XSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGFsbCBzZXJ2ZXJzIGluIGRpZmYgd2hlbiBvdGhlciB0YWJsZSBpcyBlbXB0eScsICgpID0+IHtcbiAgICBjb25zdCBvbGRUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzMsIDRdLCBbNSwgNl0sIG5vdEV4cGlyZWQoKSk7XG4gICAgY29uc3QgbmV3VGFibGUgPSBjcmVhdGVUYWJsZShbXSwgW10sIFtdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgY29uc3Qgc2VydmVycyA9IG9sZFRhYmxlLnNlcnZlcnNEaWZmKG5ld1RhYmxlKTtcblxuICAgIGV4cGVjdChzZXJ2ZXJzKS50b0VxdWFsKFsxLCAyLCAzLCA0LCA1LCA2XSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm8gc2VydmVycyBpbiBkaWZmIHdoZW4gdGhpcyB0YWJsZSBpcyBlbXB0eScsICgpID0+IHtcbiAgICBjb25zdCBvbGRUYWJsZSA9IGNyZWF0ZVRhYmxlKFtdLCBbXSwgW10sIG5vdEV4cGlyZWQoKSk7XG4gICAgY29uc3QgbmV3VGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMl0sIFszLCA0XSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuXG4gICAgY29uc3Qgc2VydmVycyA9IG9sZFRhYmxlLnNlcnZlcnNEaWZmKG5ld1RhYmxlKTtcblxuICAgIGV4cGVjdChzZXJ2ZXJzKS50b0VxdWFsKFtdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbmNsdWRlIGRpZmZlcmVudCByb3V0ZXJzIGluIHNlcnZlcnMgZGlmZicsICgpID0+IHtcbiAgICBjb25zdCBvbGRUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCA3LCAyLCA0Ml0sIFszLCA0XSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuICAgIGNvbnN0IG5ld1RhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFs1LCA2XSwgbm90RXhwaXJlZCgpKTtcblxuICAgIGNvbnN0IHNlcnZlcnMgPSBvbGRUYWJsZS5zZXJ2ZXJzRGlmZihuZXdUYWJsZSk7XG5cbiAgICBleHBlY3Qoc2VydmVycykudG9FcXVhbChbNywgNDJdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbmNsdWRlIGRpZmZlcmVudCByZWFkZXJzIGluIHNlcnZlcnMgZGlmZicsICgpID0+IHtcbiAgICBjb25zdCBvbGRUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzMsIDcsIDQsIDQyXSwgWzUsIDZdLCBub3RFeHBpcmVkKCkpO1xuICAgIGNvbnN0IG5ld1RhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFs1LCA2XSwgbm90RXhwaXJlZCgpKTtcblxuICAgIGNvbnN0IHNlcnZlcnMgPSBvbGRUYWJsZS5zZXJ2ZXJzRGlmZihuZXdUYWJsZSk7XG5cbiAgICBleHBlY3Qoc2VydmVycykudG9FcXVhbChbNywgNDJdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbmNsdWRlIGRpZmZlcmVudCB3cml0ZXJzIGluIHNlcnZlcnMgZGlmZicsICgpID0+IHtcbiAgICBjb25zdCBvbGRUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxLCAyXSwgWzMsIDRdLCBbNSwgNywgNiwgNDJdLCBub3RFeHBpcmVkKCkpO1xuICAgIGNvbnN0IG5ld1RhYmxlID0gY3JlYXRlVGFibGUoWzEsIDJdLCBbMywgNF0sIFs1LCA2XSwgbm90RXhwaXJlZCgpKTtcblxuICAgIGNvbnN0IHNlcnZlcnMgPSBvbGRUYWJsZS5zZXJ2ZXJzRGlmZihuZXdUYWJsZSk7XG5cbiAgICBleHBlY3Qoc2VydmVycykudG9FcXVhbChbNywgNDJdKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBpbmNsdWRlIGRpZmZlcmVudCBzZXJ2ZXJzIGluIGRpZmYnLCAoKSA9PiB7XG4gICAgY29uc3Qgb2xkVGFibGUgPSBjcmVhdGVUYWJsZShbMSwgMiwgMTFdLCBbMjIsIDMsIDMzLCA0XSwgWzUsIDQ0LCA2XSwgbm90RXhwaXJlZCgpKTtcbiAgICBjb25zdCBuZXdUYWJsZSA9IGNyZWF0ZVRhYmxlKFsxXSwgWzIsIDMsIDQsIDZdLCBbNV0sIG5vdEV4cGlyZWQoKSk7XG5cbiAgICBjb25zdCBzZXJ2ZXJzID0gb2xkVGFibGUuc2VydmVyc0RpZmYobmV3VGFibGUpO1xuXG4gICAgZXhwZWN0KHNlcnZlcnMpLnRvRXF1YWwoWzExLCAyMiwgMzMsIDQ0XSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGV4cGlyZWQoKSB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSAzNjAwOyAvLyBleHBpcmVkIGFuIGhvdXIgYWdvXG4gIH1cblxuICBmdW5jdGlvbiBub3RFeHBpcmVkKCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpICsgMzYwMDsgLy8gd2lsbCBleHBpcmUgaW4gYW4gaG91clxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlVGFibGUocm91dGVycywgcmVhZGVycywgd3JpdGVycywgZXhwaXJhdGlvblRpbWUpIHtcbiAgICBjb25zdCByb3V0ZXJzQXJyYXkgPSBuZXcgUm91bmRSb2JpbkFycmF5KHJvdXRlcnMpO1xuICAgIGNvbnN0IHJlYWRlcnNBcnJheSA9IG5ldyBSb3VuZFJvYmluQXJyYXkocmVhZGVycyk7XG4gICAgY29uc3Qgd3JpdGVyc0FycmF5ID0gbmV3IFJvdW5kUm9iaW5BcnJheSh3cml0ZXJzKTtcbiAgICBjb25zdCBleHBpcmF0aW9uID0gaW50KGV4cGlyYXRpb25UaW1lKTtcbiAgICByZXR1cm4gbmV3IFJvdXRpbmdUYWJsZShyb3V0ZXJzQXJyYXksIHJlYWRlcnNBcnJheSwgd3JpdGVyc0FycmF5LCBleHBpcmF0aW9uKTtcbiAgfVxuXG59KTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuY2xhc3MgU2V0VGltZW91dE1vY2sge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2NsZWFyU3RhdGUoKTtcbiAgfVxuXG4gIGluc3RhbGwoKSB7XG4gICAgdGhpcy5fb3JpZ2luYWxTZXRUaW1lb3V0ID0gZ2xvYmFsLnNldFRpbWVvdXQ7XG4gICAgZ2xvYmFsLnNldFRpbWVvdXQgPSAoY29kZSwgZGVsYXkpID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGF1c2VkKSB7XG4gICAgICAgIGNvZGUoKTtcbiAgICAgICAgdGhpcy5pbnZvY2F0aW9uRGVsYXlzLnB1c2goZGVsYXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX3RpbWVvdXRJZENvdW50ZXIrKztcbiAgICB9O1xuXG4gICAgdGhpcy5fb3JpZ2luYWxDbGVhclRpbWVvdXQgPSBnbG9iYWwuY2xlYXJUaW1lb3V0O1xuICAgIGdsb2JhbC5jbGVhclRpbWVvdXQgPSBpZCA9PiB7XG4gICAgICB0aGlzLmNsZWFyZWRUaW1lb3V0cy5wdXNoKGlkKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICB0aGlzLl9wYXVzZWQgPSB0cnVlO1xuICB9XG5cbiAgdW5pbnN0YWxsKCkge1xuICAgIGdsb2JhbC5zZXRUaW1lb3V0ID0gdGhpcy5fb3JpZ2luYWxTZXRUaW1lb3V0O1xuICAgIGdsb2JhbC5jbGVhclRpbWVvdXQgPSB0aGlzLl9vcmlnaW5hbENsZWFyVGltZW91dDtcbiAgICB0aGlzLl9jbGVhclN0YXRlKCk7XG4gIH1cblxuICBzZXRUaW1lb3V0T3JpZ2luYWwoY29kZSwgZGVsYXkpIHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxTZXRUaW1lb3V0LmNhbGwobnVsbCwgY29kZSwgZGVsYXkpO1xuICB9XG5cbiAgX2NsZWFyU3RhdGUoKSB7XG4gICAgdGhpcy5fb3JpZ2luYWxTZXRUaW1lb3V0ID0gbnVsbDtcbiAgICB0aGlzLl9vcmlnaW5hbENsZWFyVGltZW91dCA9IG51bGw7XG4gICAgdGhpcy5fcGF1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5fdGltZW91dElkQ291bnRlciA9IDA7XG5cbiAgICB0aGlzLmludm9jYXRpb25EZWxheXMgPSBbXTtcbiAgICB0aGlzLmNsZWFyZWRUaW1lb3V0cyA9IFtdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBzZXRUaW1lb3V0TW9jayA9IG5ldyBTZXRUaW1lb3V0TW9jaygpO1xuXG5leHBvcnQgZnVuY3Rpb24gaGlqYWNrTmV4dERhdGVOb3dDYWxsKG5ld1ZhbHVlKSB7XG4gIGNvbnN0IG9yaWdpbmFsRGF0ZSA9IGdsb2JhbC5EYXRlO1xuICBnbG9iYWwuRGF0ZSA9IG5ldyBGYWtlRGF0ZShvcmlnaW5hbERhdGUsIG5ld1ZhbHVlKTtcbn1cblxuY2xhc3MgRmFrZURhdGUge1xuXG4gIGNvbnN0cnVjdG9yKG9yaWdpbmFsRGF0ZSwgbmV4dE5vd1ZhbHVlKSB7XG4gICAgdGhpcy5fb3JpZ2luYWxEYXRlID0gb3JpZ2luYWxEYXRlO1xuICAgIHRoaXMuX25leHROb3dWYWx1ZSA9IG5leHROb3dWYWx1ZTtcbiAgfVxuXG4gIG5vdygpIHtcbiAgICBnbG9iYWwuRGF0ZSA9IHRoaXMuX29yaWdpbmFsRGF0ZTtcbiAgICByZXR1cm4gdGhpcy5fbmV4dE5vd1ZhbHVlO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb2RlQ2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlLmpzJykuZGVmYXVsdDtcbnZhciBuZW80aiA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjFcIik7XG52YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbnZhciBoYXNGZWF0dXJlID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MS9pbnRlcm5hbC9mZWF0dXJlc1wiKS5kZWZhdWx0O1xuXG5kZXNjcmliZSgndHJ1c3Qtc2lnbmVkLWNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBkcml2ZXI7XG4gIHZhciBsb2c7XG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oKSB7XG4gICAgbG9nID0gbXV0ZUNvbnNvbGVMb2coKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgcmVqZWN0IHVua25vd24gY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlNcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogXCJFTkNSWVBUSU9OX09OXCIsXG4gICAgICB0cnVzdDogXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXCJ0ZXN0L3Jlc291cmNlcy9yYW5kb20uY2VydGlmaWNhdGVcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyKSB7XG4gICAgICBleHBlY3QoIGVyci5tZXNzYWdlICkudG9Db250YWluKCBcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZFwiICk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IGtub3duIGNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IFwiRU5DUllQVElPTl9PTlwiLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1wiYnVpbGQvbmVvNGovY2VydGlmaWNhdGVzL25lbzRqLmNlcnRcIl1cbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS50aGVuKCBkb25lICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIG11bHRpcGxlIGNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9TSUdORURfQ0VSVElGSUNBVEVTXCIsXG4gICAgICB0cnVzdGVkQ2VydGlmaWNhdGVzOiBbXCJidWlsZC9uZW80ai9jZXJ0aWZpY2F0ZXMvbmVvNGouY2VydFwiLCBcImJ1aWxkL25lbzRqL2NlcnRpZmljYXRlcy9uZW80ai5jZXJ0XCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZG9uZSApO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICAgIHVuTXV0ZUNvbnNvbGVMb2cobG9nKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3RydXN0LWFsbC1jZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbiAoKSB7XG5cbiAgdmFyIGRyaXZlcjtcbiAgaXQoJ3Nob3VsZCB3b3JrIHdpdGggZGVmYXVsdCBjZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRBQyBzdXBwb3J0XG4gICAgaWYgKCFoYXNGZWF0dXJlKFwidHJ1c3RfYWxsX2NlcnRpZmljYXRlc1wiKSkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiBcIkVOQ1JZUFRJT05fT05cIixcbiAgICAgIHRydXN0OiBcIlRSVVNUX0FMTF9DRVJUSUZJQ0FURVNcIlxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKFwiUkVUVVJOIDFcIikudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KDApLnRvTnVtYmVyKCkpLnRvQmUoMSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGRyaXZlcikge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgndHJ1c3QtY3VzdG9tLWNhLXNpZ25lZC1jZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyO1xuICBpdCgnc2hvdWxkIHJlamVjdCB1bmtub3duIGNlcnRpZmljYXRlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTXG4gICAgaWYoICFOb2RlQ2hhbm5lbC5hdmFpbGFibGUgKSB7XG4gICAgICBkb25lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9DVVNUT01fQ0FfU0lHTkVEX0NFUlRJRklDQVRFU1wiLFxuICAgICAgdHJ1c3RlZENlcnRpZmljYXRlczogW1widGVzdC9yZXNvdXJjZXMvcmFuZG9tLmNlcnRpZmljYXRlXCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikuY2F0Y2goIGZ1bmN0aW9uKGVycikge1xuICAgICAgZXhwZWN0KCBlcnIubWVzc2FnZSApLnRvQ29udGFpbiggXCJTZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWRcIiApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBrbm93biBjZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfQ1VTVE9NX0NBX1NJR05FRF9DRVJUSUZJQ0FURVNcIixcbiAgICAgIHRydXN0ZWRDZXJ0aWZpY2F0ZXM6IFtcImJ1aWxkL25lbzRqL2NlcnRpZmljYXRlcy9uZW80ai5jZXJ0XCJdXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZG9uZSApO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICBpZiggZHJpdmVyICkge1xuICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgndHJ1c3Qtc3lzdGVtLWNhLXNpZ25lZC1jZXJ0aWZpY2F0ZXMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyO1xuXG4gIGl0KCdzaG91bGQgcmVqZWN0IHVua25vd24gY2VydGlmaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEFzc3VtaW5nIHdlIG9ubHkgcnVuIHRoaXMgdGVzdCBvbiBOb2RlSlNcbiAgICBpZiggIU5vZGVDaGFubmVsLmF2YWlsYWJsZSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX1NZU1RFTV9DQV9TSUdORURfQ0VSVElGSUNBVEVTXCJcbiAgICB9KTtcblxuICAgIC8vIFdoZW5cbiAgICBkcml2ZXIuc2Vzc2lvbigpLnJ1biggXCJSRVRVUk4gMVwiKS5jYXRjaCggZnVuY3Rpb24oZXJyKSB7XG4gICAgICBleHBlY3QoIGVyci5tZXNzYWdlICkudG9Db250YWluKCBcIlNlcnZlciBjZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZFwiICk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd0cnVzdC1vbi1maXJzdC11c2UnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyO1xuICB2YXIgbG9nO1xuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKCkge1xuICAgIGxvZyA9IG11dGVDb25zb2xlTG9nKCk7XG4gIH0pO1xuICBhZnRlckVhY2goZnVuY3Rpb24oKXtcbiAgICB1bk11dGVDb25zb2xlTG9nKGxvZyk7XG4gICAgaWYoIGRyaXZlciApIHtcbiAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgIH1cbiAgfSk7XG4gIGl0KFwic2hvdWxkIGNyZWF0ZSBrbm93bl9ob3N0cyBmaWxlIGluY2x1ZGluZyBmdWxsIHBhdGggaWYgaXQgZG9lc24ndCBleGlzdFwiLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhaGFzRmVhdHVyZShcInRydXN0X29uX2ZpcnN0X3VzZVwiKSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIC8vIE5vbiBleGlzdGluZyBkaXJlY3RvcnlcbiAgICB2YXIga25vd25Ib3N0c0RpciA9IHBhdGguam9pbihcImJ1aWxkXCIsIFwiaG9zdHNcIik7XG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gcGF0aC5qb2luKGtub3duSG9zdHNEaXIsIFwia25vd25faG9zdHNcIik7XG4gICAgdHJ5IHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH0gY2F0Y2ggKF8pIHsgfVxuICAgIHRyeSB7XG4gICAgICBmcy5ybWRpclN5bmMoa25vd25Ib3N0c0Rpcik7XG4gICAgfSBjYXRjaCAoXykgeyB9XG5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICB0cnVzdDogXCJUUlVTVF9PTl9GSVJTVF9VU0VcIixcbiAgICAgIGtub3duSG9zdHM6IGtub3duSG9zdHNQYXRoXG4gICAgfSk7XG5cbiAgICAvLyBXaGVuXG4gICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oIFwiUkVUVVJOIDFcIikudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAvLyBUaGVuIHdlIGdldCB0byBoZXJlLlxuICAgICAgLy8gQW5kIHRoZW4gdGhlIGtub3duX2hvc3RzIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkXG4gICAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyBmcy5hY2Nlc3NTeW5jKGtub3duSG9zdHNQYXRoKSB9KS5ub3QudG9UaHJvdygpXG4gICAgICBkb25lKCk7XG4gICAgfSkuY2F0Y2goIGZ1bmN0aW9uKCl7XG4gICAgICAvLyBKdXN0IGhlcmUgdG8gZ3JhY2VmdWxseSBleGl0IHRlc3Qgb24gZmFpbHVyZSBzbyB3ZSBkb24ndCBnZXQgdGltZW91dHNcbiAgICAgIC8vIHdoZW4gZG9uZSgpIGlzbid0IGNhbGxlZC5cbiAgICAgIGV4cGVjdCggJ3RoaXMnICkudG9CZSggJ3RvIG5ldmVyIGhhcHBlbicgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGhvc3QgZmlsZSBjb250YWlucyB0d28gaG9zdCBkdXBsaWNhdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICAvLyBBc3N1bWluZyB3ZSBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gTm9kZUpTIHdpdGggVE9GVSBzdXBwb3J0XG4gICAgaWYoICFoYXNGZWF0dXJlKFwidHJ1c3Rfb25fZmlyc3RfdXNlXCIpICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgdmFyIGtub3duSG9zdHNQYXRoID0gXCJidWlsZC9rbm93bl9ob3N0c1wiO1xuICAgIGlmKCBmcy5leGlzdHNTeW5jKGtub3duSG9zdHNQYXRoKSApIHtcbiAgICAgIGZzLnVubGlua1N5bmMoa25vd25Ib3N0c1BhdGgpO1xuICAgIH1cblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiksIHtcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIHRydXN0OiBcIlRSVVNUX09OX0ZJUlNUX1VTRVwiLFxuICAgICAga25vd25Ib3N0czoga25vd25Ib3N0c1BhdGhcbiAgICB9KTtcblxuICAgIC8vIGNyZWF0ZSBzZXNzaW9uIGFuZCB0cmFuc2FjdGlvbiB0byBmb3JjZSBjcmVhdGlvbiBvZiBuZXcgY29ubmVjdGlvbiBhbmQgd3JpdGluZyBpbnRvIHRoZSBrbm93bkhvc3QgZmlsZVxuICAgIGNvbnN0IHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuICAgIGV4cGVjdChzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKSkudG9CZURlZmluZWQoKTtcblxuICAgIC8vIGR1cGxpY2F0ZSB0aGUgc2FtZSBzZXJ2ZXJJZCB0d2ljZVxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdGV4dCA9IGZzLnJlYWRGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsIHRleHQgKyB0ZXh0KTtcbiAgICB9LCAxMDAwKTtcblxuICAgIC8vIFdoZW5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgZHJpdmVyLnNlc3Npb24oKS5ydW4oXCJSRVRVUk4gdHJ1ZSBBUyBhXCIpLnRoZW4oIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgLy8gVGhlbiB3ZSBnZXQgdG8gaGVyZS5cbiAgICAgICAgZXhwZWN0KCBkYXRhLnJlY29yZHNbMF0uZ2V0KCdhJykgKS50b0JlKCB0cnVlICk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0sIDIwMDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBwcmV2aW91c2x5IHVuLXNlZW4gaG9zdHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhaGFzRmVhdHVyZShcInRydXN0X29uX2ZpcnN0X3VzZVwiKSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IFwiYnVpbGQva25vd25faG9zdHNcIjtcbiAgICBpZiggZnMuZXhpc3RzU3luYyhrbm93bkhvc3RzUGF0aCkgKSB7XG4gICAgICBmcy51bmxpbmtTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgICB9XG5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IFwiRU5DUllQVElPTl9PTlwiLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLnRoZW4oIGZ1bmN0aW9uKCkge1xuICAgICAgLy8gVGhlbiB3ZSBnZXQgdG8gaGVyZS5cbiAgICAgIC8vIEFuZCB0aGVuIHRoZSBrbm93bl9ob3N0cyBmaWxlIHNob3VsZCBoYXZlIGNvcnJlY3QgY29udGVudHNcbiAgICAgIGV4cGVjdCggZnMucmVhZEZpbGVTeW5jKGtub3duSG9zdHNQYXRoLCAndXRmOCcpICkudG9Db250YWluKCBcImxvY2FsaG9zdDo3Njg3XCIgKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZHVwbGljYXRlIGZpbmdlcnByaW50IGVudHJpZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhaGFzRmVhdHVyZShcInRydXN0X29uX2ZpcnN0X3VzZVwiKSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IFwiYnVpbGQva25vd25faG9zdHNcIjtcbiAgICBpZiggZnMuZXhpc3RzU3luYyhrbm93bkhvc3RzUGF0aCkgKSB7XG4gICAgICBmcy51bmxpbmtTeW5jKGtub3duSG9zdHNQYXRoKTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhrbm93bkhvc3RzUGF0aCwgJycpO1xuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSwge1xuICAgICAgZW5jcnlwdGVkOiB0cnVlLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCk7XG4gICAgZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVzID0ge307XG4gICAgICBmcy5yZWFkRmlsZVN5bmMoa25vd25Ib3N0c1BhdGgsICd1dGY4JylcbiAgICAgICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gISEgKGxpbmUudHJpbSgpKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIGlmICghbGluZXNbbGluZV0pIHtcbiAgICAgICAgICAgICAgbGluZXNbbGluZV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGluZXNbbGluZV0rKztcbiAgICAgICAgICB9KTtcblxuICAgICAgdmFyIGR1cGxpY2F0ZWRMaW5lcyA9IE9iamVjdFxuICAgICAgICAgIC5rZXlzKGxpbmVzKVxuICAgICAgICAgIC5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmVzW2xpbmVdO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihjb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50ID4gMTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5sZW5ndGg7XG5cbiAgICAgIGV4cGVjdCggZHVwbGljYXRlZExpbmVzICkudG9CZSggMCApO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDEwMDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNob3VsZCBnaXZlIGhlbHBmdWwgZXJyb3IgaWYgZGF0YWJhc2UgY2VydCBkb2VzIG5vdCBtYXRjaCBzdG9yZWQgY2VydGlmaWNhdGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKUyB3aXRoIFRPRlUgc3VwcG9ydFxuICAgIGlmKCAhaGFzRmVhdHVyZShcInRydXN0X29uX2ZpcnN0X3VzZVwiKSApIHtcbiAgICAgIGRvbmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHaXZlblxuICAgIHZhciBrbm93bkhvc3RzUGF0aCA9IFwidGVzdC9yZXNvdXJjZXMvcmFuZG9tX2tub3duX2hvc3RzXCI7XG5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpLCB7XG4gICAgICBlbmNyeXB0ZWQ6IFwiRU5DUllQVElPTl9PTlwiLFxuICAgICAgdHJ1c3Q6IFwiVFJVU1RfT05fRklSU1RfVVNFXCIsXG4gICAgICBrbm93bkhvc3RzOiBrbm93bkhvc3RzUGF0aFxuICAgIH0pO1xuXG4gICAgLy8gV2hlblxuICAgIGRyaXZlci5zZXNzaW9uKCkucnVuKCBcIlJFVFVSTiAxXCIpLmNhdGNoKCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgZXhwZWN0KGVycm9yLm1lc3NhZ2UpLnRvQ29udGFpbihcIkRhdGFiYXNlIGVuY3J5cHRpb24gY2VydGlmaWNhdGUgaGFzIGNoYW5nZWQsIFwiICtcbiAgICAgICAgXCJhbmQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGNlcnRpZmljYXRlIHN0b3JlZCBmb3IgbG9jYWxob3N0Ojc2ODdcIik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpe1xuICAgIGlmKCBkcml2ZXIgKSB7XG4gICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xufSk7XG5cbi8vIFRvIG11dGUgZGVwcmVjYXRpb24gbWVzc2FnZSBpbiB0ZXN0IG91dHB1dFxuZnVuY3Rpb24gbXV0ZUNvbnNvbGVMb2coKSB7XG4gIGNvbnN0IG9yaWdpbmFsTG9nID0gY29uc29sZS5sb2c7XG4gIGNvbnNvbGUubG9nID0gKCkgPT4ge307XG4gIHJldHVybiBvcmlnaW5hbExvZztcbn1cblxuZnVuY3Rpb24gdW5NdXRlQ29uc29sZUxvZyhvcmlnaW5hbExvZykge1xuICBjb25zb2xlLmxvZyA9IG9yaWdpbmFsTG9nO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBUcmFuc2FjdGlvbkV4ZWN1dG9yIGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC90cmFuc2FjdGlvbi1leGVjdXRvcic7XG5pbXBvcnQge25ld0Vycm9yLCBTRVJWSUNFX1VOQVZBSUxBQkxFLCBTRVNTSU9OX0VYUElSRUR9IGZyb20gJy4uLy4uL3NyYy92MS9lcnJvcic7XG5pbXBvcnQge2hpamFja05leHREYXRlTm93Q2FsbCwgc2V0VGltZW91dE1vY2t9IGZyb20gJy4vdGltZXJzLXV0aWwnO1xuXG5jb25zdCBUUkFOU0lFTlRfRVJST1JfMSA9ICdOZW8uVHJhbnNpZW50RXJyb3IuVHJhbnNhY3Rpb24uRGVhZGxvY2tEZXRlY3RlZCc7XG5jb25zdCBUUkFOU0lFTlRfRVJST1JfMiA9ICdOZW8uVHJhbnNpZW50RXJyb3IuTmV0d29yay5Db21tdW5pY2F0aW9uRXJyb3InO1xuY29uc3QgVU5LTk9XTl9FUlJPUiA9ICdOZW8uRGF0YWJhc2VFcnJvci5HZW5lcmFsLlVua25vd25FcnJvcic7XG5jb25zdCBPT01fRVJST1IgPSAnTmVvLkRhdGFiYXNlRXJyb3IuR2VuZXJhbC5PdXRPZk1lbW9yeUVycm9yJztcblxuZGVzY3JpYmUoJ1RyYW5zYWN0aW9uRXhlY3V0b3InLCAoKSA9PiB7XG5cbiAgbGV0IGZha2VTZXRUaW1lb3V0O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGZha2VTZXRUaW1lb3V0ID0gc2V0VGltZW91dE1vY2suaW5zdGFsbCgpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGZha2VTZXRUaW1lb3V0LnVuaW5zdGFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJ5IHdoZW4gdHJhbnNhY3Rpb24gd29yayByZXR1cm5zIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBTRVJWSUNFX1VOQVZBSUxBQkxFJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1JldHVybnNSZWplY3RlZFByb21pc2UoW1NFUlZJQ0VfVU5BVkFJTEFCTEVdLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIHRyYW5zYWN0aW9uIHdvcmsgcmV0dXJucyBwcm9taXNlIHJlamVjdGVkIHdpdGggU0VTU0lPTl9FWFBJUkVEJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1JldHVybnNSZWplY3RlZFByb21pc2UoW1NFU1NJT05fRVhQSVJFRF0sIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJ5IHdoZW4gdHJhbnNhY3Rpb24gd29yayByZXR1cm5zIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBkZWFkbG9jayBlcnJvcicsIGRvbmUgPT4ge1xuICAgIHRlc3RSZXRyeVdoZW5UcmFuc2FjdGlvbldvcmtSZXR1cm5zUmVqZWN0ZWRQcm9taXNlKFtUUkFOU0lFTlRfRVJST1JfMV0sIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJ5IHdoZW4gdHJhbnNhY3Rpb24gd29yayByZXR1cm5zIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBjb21tdW5pY2F0aW9uIGVycm9yJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1JldHVybnNSZWplY3RlZFByb21pc2UoW1RSQU5TSUVOVF9FUlJPUl8yXSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHJldHJ5IHdoZW4gdHJhbnNhY3Rpb24gd29yayByZXR1cm5zIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBPT00gZXJyb3InLCBkb25lID0+IHtcbiAgICB0ZXN0Tm9SZXRyeU9uVW5rbm93bkVycm9yKFtPT01fRVJST1JdLCAxLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgcmV0cnkgd2hlbiB0cmFuc2FjdGlvbiB3b3JrIHJldHVybnMgcHJvbWlzZSByZWplY3RlZCB3aXRoIHVua25vd24gZXJyb3InLCBkb25lID0+IHtcbiAgICB0ZXN0Tm9SZXRyeU9uVW5rbm93bkVycm9yKFtVTktOT1dOX0VSUk9SXSwgMSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc3RvcCByZXRyeWluZyB3aGVuIHRpbWUgZXhwaXJlcycsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IoKTtcbiAgICBsZXQgd29ya0ludm9jYXRpb25Db3VudGVyID0gMDtcbiAgICBjb25zdCByZWFsV29yayA9IHRyYW5zYWN0aW9uV29yayhbU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VTU0lPTl9FWFBJUkVELCBUUkFOU0lFTlRfRVJST1JfMSwgVFJBTlNJRU5UX0VSUk9SXzJdLCA0Mik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBleGVjdXRvci5leGVjdXRlKHRyYW5zYWN0aW9uQ3JlYXRvcigpLCB0eCA9PiB7XG4gICAgICBleHBlY3QodHgpLnRvQmVEZWZpbmVkKCk7XG4gICAgICB3b3JrSW52b2NhdGlvbkNvdW50ZXIrKztcbiAgICAgIGlmICh3b3JrSW52b2NhdGlvbkNvdW50ZXIgPT09IDMpIHtcbiAgICAgICAgaGlqYWNrTmV4dERhdGVOb3dDYWxsKERhdGUubm93KCkgKyAzMDAwMSk7IC8vIG1vdmUgbmV4dCBgRGF0ZS5ub3coKWAgY2FsbCBmb3J3YXJkIGJ5IDMwIHNlY29uZHNcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWFsV29yaygpO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0LmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdCh3b3JrSW52b2NhdGlvbkNvdW50ZXIpLnRvRXF1YWwoMyk7XG4gICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbChUUkFOU0lFTlRfRVJST1JfMSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiBnaXZlbiB0cmFuc2FjdGlvbiBjcmVhdG9yIHRocm93cyBvbmNlJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uQ3JlYXRvckZhaWxzKFxuICAgICAgW1NFUlZJQ0VfVU5BVkFJTEFCTEVdLFxuICAgICAgZG9uZVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiBnaXZlbiB0cmFuc2FjdGlvbiBjcmVhdG9yIHRocm93cyBtYW55IHRpbWVzJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uQ3JlYXRvckZhaWxzKFxuICAgICAgW1NFUlZJQ0VfVU5BVkFJTEFCTEUsIFNFU1NJT05fRVhQSVJFRCwgVFJBTlNJRU5UX0VSUk9SXzIsIFNFU1NJT05fRVhQSVJFRCwgU0VSVklDRV9VTkFWQUlMQUJMRSwgVFJBTlNJRU5UX0VSUk9SXzFdLFxuICAgICAgZG9uZVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiBnaXZlbiB0cmFuc2FjdGlvbiB3b3JrIHRocm93cyBvbmNlJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1Rocm93cyhbU0VSVklDRV9VTkFWQUlMQUJMRV0sIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHJ5IHdoZW4gZ2l2ZW4gdHJhbnNhY3Rpb24gd29yayB0aHJvd3MgbWFueSB0aW1lcycsIGRvbmUgPT4ge1xuICAgIHRlc3RSZXRyeVdoZW5UcmFuc2FjdGlvbldvcmtUaHJvd3MoXG4gICAgICBbU0VSVklDRV9VTkFWQUlMQUJMRSwgVFJBTlNJRU5UX0VSUk9SXzIsIFRSQU5TSUVOVF9FUlJPUl8yLCBTRVNTSU9OX0VYUElSRURdLFxuICAgICAgZG9uZVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiBnaXZlbiB0cmFuc2FjdGlvbiB3b3JrIHJldHVybnMgcmVqZWN0ZWQgcHJvbWlzZSBtYW55IHRpbWVzJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1JldHVybnNSZWplY3RlZFByb21pc2UoXG4gICAgICBbU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VSVklDRV9VTkFWQUlMQUJMRSwgVFJBTlNJRU5UX0VSUk9SXzIsIFNFU1NJT05fRVhQSVJFRCwgVFJBTlNJRU5UX0VSUk9SXzEsIFNFU1NJT05fRVhQSVJFRF0sXG4gICAgICBkb25lXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXRyeSB3aGVuIHRyYW5zYWN0aW9uIGNvbW1pdCByZXR1cm5zIHJlamVjdGVkIHByb21pc2Ugb25jZScsIGRvbmUgPT4ge1xuICAgIHRlc3RSZXRyeVdoZW5UcmFuc2FjdGlvbkNvbW1pdFJldHVybnNSZWplY3RlZFByb21pc2UoW1RSQU5TSUVOVF9FUlJPUl8xXSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgd2hlbiB0cmFuc2FjdGlvbiBjb21taXQgcmV0dXJucyByZWplY3RlZCBwcm9taXNlIG11bHRpcGxlIHRpbWVzJywgZG9uZSA9PiB7XG4gICAgdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uQ29tbWl0UmV0dXJuc1JlamVjdGVkUHJvbWlzZShcbiAgICAgIFtUUkFOU0lFTlRfRVJST1JfMSwgVFJBTlNJRU5UX0VSUk9SXzEsIFNFU1NJT05fRVhQSVJFRCwgU0VSVklDRV9VTkFWQUlMQUJMRSwgVFJBTlNJRU5UX0VSUk9SXzJdLFxuICAgICAgZG9uZVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0cnkgdW50aWwgZGF0YWJhc2UgZXJyb3IgaGFwcGVucycsIGRvbmUgPT4ge1xuICAgIHRlc3ROb1JldHJ5T25Vbmtub3duRXJyb3IoXG4gICAgICBbU0VSVklDRV9VTkFWQUlMQUJMRSwgU0VSVklDRV9VTkFWQUlMQUJMRSwgVFJBTlNJRU5UX0VSUk9SXzIsIFNFU1NJT05fRVhQSVJFRCwgVU5LTk9XTl9FUlJPUiwgU0VTU0lPTl9FWFBJUkVEXSxcbiAgICAgIDUsXG4gICAgICBkb25lXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjYW5jZWwgaW4tZmxpZ2h0IHRpbWVvdXRzIHdoZW4gY2xvc2VkJywgZG9uZSA9PiB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigpO1xuICAgIC8vIGRvIG5vdCBleGVjdXRlIHNldFRpbWVvdXQgY2FsbGJhY2tzXG4gICAgZmFrZVNldFRpbWVvdXQucGF1c2UoKTtcblxuICAgIGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKFtTRVJWSUNFX1VOQVZBSUxBQkxFXSksICgpID0+IFByb21pc2UucmVzb2x2ZSg0MikpO1xuICAgIGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKFtUUkFOU0lFTlRfRVJST1JfMV0pLCAoKSA9PiBQcm9taXNlLnJlc29sdmUoNDI0MikpO1xuICAgIGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKFtTRVNTSU9OX0VYUElSRURdKSwgKCkgPT4gUHJvbWlzZS5yZXNvbHZlKDQyNDI0MikpO1xuXG4gICAgZmFrZVNldFRpbWVvdXQuc2V0VGltZW91dE9yaWdpbmFsKCgpID0+IHtcbiAgICAgIGV4ZWN1dG9yLmNsb3NlKCk7XG4gICAgICBleHBlY3QoZmFrZVNldFRpbWVvdXQuY2xlYXJlZFRpbWVvdXRzLmxlbmd0aCkudG9FcXVhbCgzKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAxMDAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyB6ZXJvIG1heCByZXRyeSB0aW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IoMCk7XG4gICAgZXhwZWN0KGV4ZWN1dG9yLl9tYXhSZXRyeVRpbWVNcykudG9FcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyB6ZXJvIGluaXRpYWwgZGVsYXknLCAoKSA9PiB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcig0MiwgMCk7XG4gICAgZXhwZWN0KGV4ZWN1dG9yLl9pbml0aWFsUmV0cnlEZWxheU1zKS50b0VxdWFsKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRpc2FsbG93IHplcm8gbXVsdGlwbGllcicsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IoNDIsIDQyLCAwKSkudG9UaHJvdygpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IHplcm8gaml0dGVyIGZhY3RvcicsICgpID0+IHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKDQyLCA0MiwgNDIsIDApO1xuICAgIGV4cGVjdChleGVjdXRvci5faml0dGVyRmFjdG9yKS50b0VxdWFsKDApO1xuICB9KTtcblxuICBmdW5jdGlvbiB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25DcmVhdG9yRmFpbHMoZXJyb3JDb2RlcywgZG9uZSkge1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gbmV3IFRyYW5zYWN0aW9uRXhlY3V0b3IoKTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkNyZWF0b3IgPSB0aHJvd2luZ1RyYW5zYWN0aW9uQ3JlYXRvcihlcnJvckNvZGVzLCBuZXcgRmFrZVRyYW5zYWN0aW9uKCkpO1xuICAgIGxldCB3b3JrSW52b2NhdGlvbkNvdW50ZXIgPSAwO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IsIHR4ID0+IHtcbiAgICAgIGV4cGVjdCh0eCkudG9CZURlZmluZWQoKTtcbiAgICAgIHdvcmtJbnZvY2F0aW9uQ291bnRlcisrO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSg0Mik7XG4gICAgfSk7XG5cbiAgICByZXN1bHQudGhlbih2YWx1ZSA9PiB7XG4gICAgICBleHBlY3Qod29ya0ludm9jYXRpb25Db3VudGVyKS50b0VxdWFsKDEpO1xuICAgICAgZXhwZWN0KHZhbHVlKS50b0VxdWFsKDQyKTtcbiAgICAgIHZlcmlmeVJldHJ5RGVsYXlzKGZha2VTZXRUaW1lb3V0LCBlcnJvckNvZGVzLmxlbmd0aCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Xb3JrUmV0dXJuc1JlamVjdGVkUHJvbWlzZShlcnJvckNvZGVzLCBkb25lKSB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigpO1xuICAgIGxldCB3b3JrSW52b2NhdGlvbkNvdW50ZXIgPSAwO1xuICAgIGNvbnN0IHJlYWxXb3JrID0gdHJhbnNhY3Rpb25Xb3JrKGVycm9yQ29kZXMsIDQyKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKCksIHR4ID0+IHtcbiAgICAgIGV4cGVjdCh0eCkudG9CZURlZmluZWQoKTtcbiAgICAgIHdvcmtJbnZvY2F0aW9uQ291bnRlcisrO1xuICAgICAgcmV0dXJuIHJlYWxXb3JrKCk7XG4gICAgfSk7XG5cbiAgICByZXN1bHQudGhlbih2YWx1ZSA9PiB7XG4gICAgICAvLyB3b3JrIHNob3VsZCBoYXZlIGZhaWxlZCAnZmFpbHVyZXMubGVuZ3RoJyB0aW1lcyBhbmQgc3VjY2VlZGVkIDEgdGltZVxuICAgICAgZXhwZWN0KHdvcmtJbnZvY2F0aW9uQ291bnRlcikudG9FcXVhbChlcnJvckNvZGVzLmxlbmd0aCArIDEpO1xuICAgICAgZXhwZWN0KHZhbHVlKS50b0VxdWFsKDQyKTtcbiAgICAgIHZlcmlmeVJldHJ5RGVsYXlzKGZha2VTZXRUaW1lb3V0LCBlcnJvckNvZGVzLmxlbmd0aCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiB0ZXN0UmV0cnlXaGVuVHJhbnNhY3Rpb25Db21taXRSZXR1cm5zUmVqZWN0ZWRQcm9taXNlKGVycm9yQ29kZXMsIGRvbmUpIHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBUcmFuc2FjdGlvbkV4ZWN1dG9yKCk7XG4gICAgbGV0IHdvcmtJbnZvY2F0aW9uQ291bnRlciA9IDA7XG4gICAgY29uc3QgcmVhbFdvcmsgPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoNDI0Mik7XG5cbiAgICBjb25zdCByZXN1bHQgPSBleGVjdXRvci5leGVjdXRlKHRyYW5zYWN0aW9uQ3JlYXRvcihlcnJvckNvZGVzKSwgdHggPT4ge1xuICAgICAgZXhwZWN0KHR4KS50b0JlRGVmaW5lZCgpO1xuICAgICAgd29ya0ludm9jYXRpb25Db3VudGVyKys7XG4gICAgICByZXR1cm4gcmVhbFdvcmsoKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC50aGVuKHZhbHVlID0+IHtcbiAgICAgIC8vIHdvcmsgc2hvdWxkIGhhdmUgZmFpbGVkICdmYWlsdXJlcy5sZW5ndGgnIHRpbWVzIGFuZCBzdWNjZWVkZWQgMSB0aW1lXG4gICAgICBleHBlY3Qod29ya0ludm9jYXRpb25Db3VudGVyKS50b0VxdWFsKGVycm9yQ29kZXMubGVuZ3RoICsgMSk7XG4gICAgICBleHBlY3QodmFsdWUpLnRvRXF1YWwoNDI0Mik7XG4gICAgICB2ZXJpZnlSZXRyeURlbGF5cyhmYWtlU2V0VGltZW91dCwgZXJyb3JDb2Rlcy5sZW5ndGgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdGVzdFJldHJ5V2hlblRyYW5zYWN0aW9uV29ya1Rocm93cyhlcnJvckNvZGVzLCBkb25lKSB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigpO1xuICAgIGxldCB3b3JrSW52b2NhdGlvbkNvdW50ZXIgPSAwO1xuICAgIGNvbnN0IHJlYWxXb3JrID0gdGhyb3dpbmdUcmFuc2FjdGlvbldvcmsoZXJyb3JDb2RlcywgNDIpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gZXhlY3V0b3IuZXhlY3V0ZSh0cmFuc2FjdGlvbkNyZWF0b3IoKSwgdHggPT4ge1xuICAgICAgZXhwZWN0KHR4KS50b0JlRGVmaW5lZCgpO1xuICAgICAgd29ya0ludm9jYXRpb25Db3VudGVyKys7XG4gICAgICByZXR1cm4gcmVhbFdvcmsoKTtcbiAgICB9KTtcblxuICAgIHJlc3VsdC50aGVuKHZhbHVlID0+IHtcbiAgICAgIC8vIHdvcmsgc2hvdWxkIGhhdmUgZmFpbGVkICdmYWlsdXJlcy5sZW5ndGgnIHRpbWVzIGFuZCBzdWNjZWVkZWQgMSB0aW1lXG4gICAgICBleHBlY3Qod29ya0ludm9jYXRpb25Db3VudGVyKS50b0VxdWFsKGVycm9yQ29kZXMubGVuZ3RoICsgMSk7XG4gICAgICBleHBlY3QodmFsdWUpLnRvRXF1YWwoNDIpO1xuICAgICAgdmVyaWZ5UmV0cnlEZWxheXMoZmFrZVNldFRpbWVvdXQsIGVycm9yQ29kZXMubGVuZ3RoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRlc3ROb1JldHJ5T25Vbmtub3duRXJyb3IoZXJyb3JDb2RlcywgZXhwZWN0ZWRXb3JrSW52b2NhdGlvbkNvdW50LCBkb25lKSB7XG4gICAgY29uc3QgZXhlY3V0b3IgPSBuZXcgVHJhbnNhY3Rpb25FeGVjdXRvcigpO1xuICAgIGxldCB3b3JrSW52b2NhdGlvbkNvdW50ZXIgPSAwO1xuICAgIGNvbnN0IHJlYWxXb3JrID0gdHJhbnNhY3Rpb25Xb3JrKGVycm9yQ29kZXMsIDQyKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dG9yLmV4ZWN1dGUodHJhbnNhY3Rpb25DcmVhdG9yKCksIHR4ID0+IHtcbiAgICAgIGV4cGVjdCh0eCkudG9CZURlZmluZWQoKTtcbiAgICAgIHdvcmtJbnZvY2F0aW9uQ291bnRlcisrO1xuICAgICAgcmV0dXJuIHJlYWxXb3JrKCk7XG4gICAgfSk7XG5cbiAgICByZXN1bHQuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KHdvcmtJbnZvY2F0aW9uQ291bnRlcikudG9FcXVhbChleHBlY3RlZFdvcmtJbnZvY2F0aW9uQ291bnQpO1xuICAgICAgaWYgKGVycm9yQ29kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKGVycm9yQ29kZXNbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoZXJyb3JDb2Rlc1tleHBlY3RlZFdvcmtJbnZvY2F0aW9uQ291bnQgLSAxXSk7XG4gICAgICB9XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH1cblxufSk7XG5cbmZ1bmN0aW9uIHRyYW5zYWN0aW9uQ3JlYXRvcihjb21taXRFcnJvckNvZGVzKSB7XG4gIGNvbnN0IHJlbWFpbmluZ0Vycm9yQ29kZXMgPSAoY29tbWl0RXJyb3JDb2RlcyB8fCBbXSkuc2xpY2UoKS5yZXZlcnNlKCk7XG4gIHJldHVybiAoKSA9PiBuZXcgRmFrZVRyYW5zYWN0aW9uKHJlbWFpbmluZ0Vycm9yQ29kZXMucG9wKCkpO1xufVxuXG5mdW5jdGlvbiB0aHJvd2luZ1RyYW5zYWN0aW9uQ3JlYXRvcihlcnJvckNvZGVzLCByZXN1bHQpIHtcbiAgY29uc3QgcmVtYWluaW5nRXJyb3JDb2RlcyA9IGVycm9yQ29kZXMuc2xpY2UoKS5yZXZlcnNlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgaWYgKHJlbWFpbmluZ0Vycm9yQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjb25zdCBlcnJvckNvZGUgPSByZW1haW5pbmdFcnJvckNvZGVzLnBvcCgpO1xuICAgIHRocm93IGVycm9yKGVycm9yQ29kZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHRocm93aW5nVHJhbnNhY3Rpb25Xb3JrKGVycm9yQ29kZXMsIHJlc3VsdCkge1xuICBjb25zdCByZW1haW5pbmdFcnJvckNvZGVzID0gZXJyb3JDb2Rlcy5zbGljZSgpLnJldmVyc2UoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAocmVtYWluaW5nRXJyb3JDb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICB9XG4gICAgY29uc3QgZXJyb3JDb2RlID0gcmVtYWluaW5nRXJyb3JDb2Rlcy5wb3AoKTtcbiAgICB0aHJvdyBlcnJvcihlcnJvckNvZGUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0cmFuc2FjdGlvbldvcmsoZXJyb3JDb2RlcywgcmVzdWx0KSB7XG4gIGNvbnN0IHJlbWFpbmluZ0Vycm9yQ29kZXMgPSBlcnJvckNvZGVzLnNsaWNlKCkucmV2ZXJzZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmIChyZW1haW5pbmdFcnJvckNvZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgIH1cbiAgICBjb25zdCBlcnJvckNvZGUgPSByZW1haW5pbmdFcnJvckNvZGVzLnBvcCgpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcihlcnJvckNvZGUpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXJyb3IoY29kZSkge1xuICByZXR1cm4gbmV3RXJyb3IoJycsIGNvZGUpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlSZXRyeURlbGF5cyhmYWtlU2V0VGltZW91dCwgZXhwZWN0ZWRJbnZvY2F0aW9uQ291bnQpIHtcbiAgY29uc3QgZGVsYXlzID0gZmFrZVNldFRpbWVvdXQuaW52b2NhdGlvbkRlbGF5cztcbiAgZXhwZWN0KGRlbGF5cy5sZW5ndGgpLnRvRXF1YWwoZXhwZWN0ZWRJbnZvY2F0aW9uQ291bnQpO1xuICBkZWxheXMuZm9yRWFjaCgoZGVsYXksIGluZGV4KSA9PiB7XG4gICAgLy8gZGVsYXlzIG1ha2UgYSBnZW9tZXRyaWMgcHJvZ3Jlc3Npb24gd2l0aCBmaXN0IGVsZW1lbnQgMTAwMCBhbmQgbXVsdGlwbGllciAyLjBcbiAgICAvLyBzbyBleHBlY3RlZCBkZWxheSBjYW4gYmUgY2FsY3VsYXRlZCBhcyBuLXRoIGVsZW1lbnQ6IGBmaXJzdEVsZW1lbnQgKiBwb3cobXVsdGlwbGllciwgbiAtIDEpYFxuICAgIGNvbnN0IGV4cGVjdGVkRGVsYXlXaXRob3V0Sml0dGVyID0gMTAwMCAqIE1hdGgucG93KDIuMCwgaW5kZXgpO1xuICAgIGNvbnN0IGppdHRlciA9IGV4cGVjdGVkRGVsYXlXaXRob3V0Sml0dGVyICogMC4yO1xuICAgIGNvbnN0IG1pbiA9IGV4cGVjdGVkRGVsYXlXaXRob3V0Sml0dGVyIC0gaml0dGVyO1xuICAgIGNvbnN0IG1heCA9IGV4cGVjdGVkRGVsYXlXaXRob3V0Sml0dGVyICsgaml0dGVyO1xuXG4gICAgZXhwZWN0KGRlbGF5ID49IG1pbikudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChkZWxheSA8PSBtYXgpLnRvQmVUcnV0aHkoKTtcbiAgfSk7XG59XG5cbmNsYXNzIEZha2VUcmFuc2FjdGlvbiB7XG5cbiAgY29uc3RydWN0b3IoY29tbWl0RXJyb3JDb2RlKSB7XG4gICAgdGhpcy5fY29tbWl0RXJyb3JDb2RlID0gY29tbWl0RXJyb3JDb2RlO1xuICB9XG5cbiAgaXNPcGVuKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29tbWl0KCkge1xuICAgIGlmICh0aGlzLl9jb21taXRFcnJvckNvZGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcih0aGlzLl9jb21taXRFcnJvckNvZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbiBcbnZhciB1dGY4ID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3V0ZjgnKS5kZWZhdWx0O1xudmFyIGJ1ZmZlcnMgPSByZXF1aXJlKCcuLi8uLi9saWIvdjEvaW50ZXJuYWwvYnVmJyk7XG5cbmRlc2NyaWJlKCd1dGY4JywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgaGF2ZSBhIG5pY2UgY2xlYW4gYnVmZmVyIHBvc2l0aW9uIGFmdGVyIHNlcmlhbGl6aW5nJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciBidWZmZXIgPSB1dGY4LmVuY29kZShcImhlbGxvLCB3b3JsZCFcIik7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBidWZmZXIucG9zaXRpb24gKS50b0JlKCAwICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVzcGVjdCBwb3NpdGlvbiBvZiBzaW5nbGUgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gV2hlblxuICAgIHZhciBidWZmZXIgPSB1dGY4LmVuY29kZShcImhlbGxvLCB3b3JsZCFcIik7XG4gICAgYnVmZmVyLnJlYWRJbnQ4KCk7XG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShidWZmZXIsIGJ1ZmZlci5sZW5ndGggLSAxKTtcbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KCBkZWNvZGVkICkudG9CZSggXCJlbGxvLCB3b3JsZCFcIiApO1xuICAgIGV4cGVjdChidWZmZXIucG9zaXRpb24pLnRvRXF1YWwoMTMpXG4gIH0pO1xuXG5cbiAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGRlY29kZSBzdWJzdHJpbmcnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBXaGVuXG4gICAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKFwiaGVsbG8sIHdvcmxkIVwiKTtcbiAgICBidWZmZXIucmVhZEludDgoKTtcbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGJ1ZmZlciwgMyk7XG4gICAgLy8gVGhlblxuICAgIGV4cGVjdCggZGVjb2RlZCApLnRvQmUoIFwiZWxsXCIgKTtcbiAgICBleHBlY3QoYnVmZmVyLnBvc2l0aW9uKS50b0VxdWFsKDQpXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZC93cml0ZSB1dGY4JywgZnVuY3Rpb24oKSB7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcIlwiICkgKS50b0JlKCBcIlwiICk7XG4gICAgZXhwZWN0KCBwYWNrQW5kVW5wYWNrKCBcIsOlw6TDtjEyM1wiICkgKS50b0JlKCBcIsOlw6TDtjEyM1wiICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRlY29kZSB1dGY4IGZyb20gYSBjb21wbGV0ZSBjb21iaW5lZCBidWZmZXInLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIHZhciBtc2cgPSBcImFzw6VmcXdlclwiO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIGJ1ZmMgPSBidWYucmVhZFNsaWNlKDMpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgYnVmY10gKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCBjb21iaW5lZC5sZW5ndGgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChkZWNvZGVkKS50b0JlKG1zZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIHV0ZjggZnJvbSBwYXJ0IG9mIGEgY29tYmluZWQgYnVmZmVyJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhc8OlZnFcIjtcbiAgICB2YXIgZXhwZWN0TXNnID0gbXNnLnN1YnN0cmluZygwLCBtc2cubGVuZ3RoLTEpO1xuICAgIHZhciBidWYgPSB1dGY4LmVuY29kZShtc2cpO1xuICAgIHZhciBidWZhID0gYnVmLnJlYWRTbGljZSgzKTtcbiAgICB2YXIgYnVmYiA9IGJ1Zi5yZWFkU2xpY2UoMyk7XG4gICAgdmFyIHVucmVsYXRlZERhdGEgPSBidWZmZXJzLmFsbG9jKDMpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYiwgdW5yZWxhdGVkRGF0YV0gKTtcblxuICAgIC8vIFdoZW4gXG4gICAgLy8gV2UgcmVhZCBhbGwgYnV0IHRoZSB1bnJlbGF0ZWREYXRhIGFuZCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYnVmYlxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIGNvbWJpbmVkLmxlbmd0aCAtIDEgLSB1bnJlbGF0ZWREYXRhLmxlbmd0aCApO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChkZWNvZGVkKS50b0JlKGV4cGVjdE1zZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVzcGVjdCB0aGUgcG9zaXRpb24gaW4gdGhlIGNvbWJpbmVkIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYWJjZGVmZ2hcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBjb21iaW5lZCA9IG5ldyBidWZmZXJzLkNvbWJpbmVkQnVmZmVyKCBbYnVmYSwgYnVmYl0gKTtcbiAgICAvL21vdmUgcG9zaXRpb24gZm9yd2FyZFxuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcblxuICAgIC8vIFdoZW5cbiAgICB2YXIgZGVjb2RlZCA9IHV0ZjguZGVjb2RlKGNvbWJpbmVkLCBjb21iaW5lZC5sZW5ndGggLSAyKTtcblxuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChkZWNvZGVkKS50b0VxdWFsKFwiY2RlZmdoXCIpO1xuICAgIGV4cGVjdChjb21iaW5lZC5wb3NpdGlvbikudG9CZSg4KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIGEgc3Vic3RyaW5nIGluIGEgY29tYmluZWQgYnVmZmVyIGFjcm9zcyBidWZmZXJzJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgbXNnID0gXCJhYmNkZWZnaGlqa2xcIjtcbiAgICB2YXIgYnVmID0gdXRmOC5lbmNvZGUobXNnKTtcbiAgICB2YXIgYnVmYSA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGJ1ZmIgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZjID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgY29tYmluZWQgPSBuZXcgYnVmZmVycy5Db21iaW5lZEJ1ZmZlciggW2J1ZmEsIGJ1ZmIsIGJ1ZmNdICk7XG4gICAgLy9tb3ZlIHBvc2l0aW9uIGZvcndhcmRcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIGRlY29kZWQgPSB1dGY4LmRlY29kZShjb21iaW5lZCwgNCk7XG5cbiAgICAvLyBUaGVuXG4gICAgZXhwZWN0KGRlY29kZWQpLnRvQmUoXCJmZ2hpXCIpO1xuICAgIGV4cGVjdChjb21iaW5lZC5wb3NpdGlvbikudG9CZSg5KVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZGVjb2RlIGEgc3Vic3RyaW5nIGluIGEgY29tYmluZWQgd2l0aGluIGJ1ZmZlcicsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIG1zZyA9IFwiYWJjZGVmZ2hpamtsXCI7XG4gICAgdmFyIGJ1ZiA9IHV0ZjguZW5jb2RlKG1zZyk7XG4gICAgdmFyIGJ1ZmEgPSBidWYucmVhZFNsaWNlKDQpO1xuICAgIHZhciBidWZiID0gYnVmLnJlYWRTbGljZSg0KTtcbiAgICB2YXIgYnVmYyA9IGJ1Zi5yZWFkU2xpY2UoNCk7XG4gICAgdmFyIGNvbWJpbmVkID0gbmV3IGJ1ZmZlcnMuQ29tYmluZWRCdWZmZXIoIFtidWZhLCBidWZiLCBidWZjXSApO1xuICAgIC8vbW92ZSBwb3NpdGlvbiBmb3J3YXJkXG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuICAgIGNvbWJpbmVkLnJlYWRJbnQ4KCk7XG4gICAgY29tYmluZWQucmVhZEludDgoKTtcbiAgICBjb21iaW5lZC5yZWFkSW50OCgpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBkZWNvZGVkID0gdXRmOC5kZWNvZGUoY29tYmluZWQsIDIpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChkZWNvZGVkKS50b0JlKFwiZmdcIik7XG4gICAgZXhwZWN0KGNvbWJpbmVkLnBvc2l0aW9uKS50b0JlKDcpXG4gIH0pO1xufSk7XG5cbmZ1bmN0aW9uIHBhY2tBbmRVbnBhY2soIHN0ciApIHtcbiAgdmFyIGJ1ZmZlciA9IHV0ZjguZW5jb2RlKCBzdHIgKTtcbiAgcmV0dXJuIHV0ZjguZGVjb2RlKCBidWZmZXIsIGJ1ZmZlci5sZW5ndGggKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDAyLTIwMTcgXCJOZW8gVGVjaG5vbG9neSxcIixcIlxuICogTmV0d29yayBFbmdpbmUgZm9yIE9iamVjdHMgaW4gTHVuZCBBQiBbaHR0cDovL25lb3RlY2hub2xvZ3kuY29tXVxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5lbzRqLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5jb25zdCB1dGlsID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxL2ludGVybmFsL3V0aWwuanMnKTtcblxuZGVzY3JpYmUoJ3V0aWwnLCAoKSA9PiB7XG5cbiAgaXQoJ3Nob3VsZCBjaGVjayBlbXB0eSBvYmplY3RzJywgKCkgPT4ge1xuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwobnVsbCkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKHt9KSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwoW10pKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBjb25zdCBmdW5jID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIDQyO1xuICAgIH07XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbChmdW5jKSkudG9CZVRydXRoeSgpO1xuICAgIGZ1bmMuZm9vID0gJ2Jhcic7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbChmdW5jKSkudG9CZUZhbHN5KCk7XG5cbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKCkpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwodW5kZWZpbmVkKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbCgwKSkudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KHV0aWwuaXNFbXB0eU9iamVjdE9yTnVsbCgnJykpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdCh1dGlsLmlzRW1wdHlPYmplY3RPck51bGwoJ2FiYycpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QodXRpbC5pc0VtcHR5T2JqZWN0T3JOdWxsKHtmb286ICdiYXInfSkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIHN0cmluZ3MnLCAoKSA9PiB7XG4gICAgdmVyaWZ5VmFsaWRTdHJpbmcoJycpO1xuICAgIHZlcmlmeVZhbGlkU3RyaW5nKG5ldyBTdHJpbmcoJ2ZvbycpKTtcbiAgICB2ZXJpZnlWYWxpZFN0cmluZyhTdHJpbmcoJ2ZvbycpKTtcbiAgICB2ZXJpZnlWYWxpZFN0cmluZyhcImhpIVwiKTtcblxuICAgIHZlcmlmeUludmFsaWRTdHJpbmcoe30pO1xuICAgIHZlcmlmeUludmFsaWRTdHJpbmcoe2ZvbzogMX0pO1xuICAgIHZlcmlmeUludmFsaWRTdHJpbmcoW10pO1xuICAgIHZlcmlmeUludmFsaWRTdHJpbmcoWycxJ10pO1xuICAgIHZlcmlmeUludmFsaWRTdHJpbmcoWzEsICcyJ10pO1xuICAgIHZlcmlmeUludmFsaWRTdHJpbmcoY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBmdW5jdGlvbiB2ZXJpZnlWYWxpZFN0cmluZyhzdHIpIHtcbiAgICBleHBlY3QodXRpbC5hc3NlcnRTdHJpbmcoc3RyLCAnVGVzdCBzdHJpbmcnKSkudG9CZShzdHIpO1xuICB9XG5cbiAgZnVuY3Rpb24gdmVyaWZ5SW52YWxpZFN0cmluZyhzdHIpIHtcbiAgICBleHBlY3QoKCkgPT4gdXRpbC5hc3NlcnRTdHJpbmcoc3RyLCAnVGVzdCBzdHJpbmcnKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gIH1cblxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIG5lbzRqID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MVwiKTtcblxuZGVzY3JpYmUoJ2RyaXZlcicsIGZ1bmN0aW9uKCkge1xuICB2YXIgZHJpdmVyO1xuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKCkge1xuICAgIGRyaXZlciA9IG51bGw7XG4gIH0pXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpIHtcbiAgICBpZihkcml2ZXIpIHtcbiAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgIH1cbiAgfSlcbiAgaXQoJ3Nob3VsZCBleHBvc2Ugc2Vzc2lvbnMnLCBmdW5jdGlvbigpIHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gV2hlblxuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFRoZW5cbiAgICBleHBlY3QoIHNlc3Npb24gKS5ub3QudG9CZU51bGwoKTtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgY29ubmVjdGlvbiBlcnJvcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0ZVwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG5cbiAgICAvLyBFeHBlY3RcbiAgICBkcml2ZXIub25FcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIC8vdGhlIGVycm9yIG1lc3NhZ2UgaXMgZGlmZmVyZW50IHdoZXRoZXIgaW4gYnJvd3NlciBvciBub2RlXG4gICAgICBleHBlY3QoZXJyLm1lc3NhZ2UpLm5vdC50b0JlTnVsbCgpO1xuICAgICAgZG9uZSgpO1xuICAgIH07XG5cbiAgICAvLyBXaGVuXG4gICAgc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSB3cm9uZyBzY2hlbWUnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IG5lbzRqLmRyaXZlcihcInRhbms6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpKVxuICAgICAgLnRvVGhyb3cobmV3IEVycm9yKFwiVW5rbm93biBzY2hlbWU6IHRhbms6Ly9cIikpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBVUkwgcGFyYW1ldGVyIHN0cmluZycsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gbmVvNGouZHJpdmVyKHt1cmk6ICdib2x0Oi8vbG9jYWxob3N0J30pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcblxuICAgIGV4cGVjdCgoKSA9PiBuZW80ai5kcml2ZXIoWydib2x0OmxvY2FsaG9zdCddKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG5cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZHJpdmVyID0gbmVvNGouZHJpdmVyKFN0cmluZygnYm9sdDovL2xvY2FsaG9zdCcsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKSk7XG4gICAgICByZXR1cm4gZHJpdmVyLnNlc3Npb24oKTtcbiAgICB9KS50b0JlRGVmaW5lZCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgZWFybHkgb24gd3JvbmcgY3JlZGVudGlhbHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIndobyB3b3VsZCB1c2Ugc3VjaCBhIHBhc3N3b3JkXCIpKTtcblxuICAgIC8vIEV4cGVjdFxuICAgIGRyaXZlci5vbkVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgLy90aGUgZXJyb3IgbWVzc2FnZSBpcyBkaWZmZXJlbnQgd2hldGhlciBpbiBicm93c2VyIG9yIG5vZGVcbiAgICAgIGV4cGVjdChlcnIuY29kZSkudG9FcXVhbCgnTmVvLkNsaWVudEVycm9yLlNlY3VyaXR5LlVuYXV0aG9yaXplZCcpO1xuICAgICAgZG9uZSgpO1xuICAgIH07XG5cbiAgICAvLyBXaGVuXG4gICAgc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGluZGljYXRlIHN1Y2Nlc3MgZWFybHkgb24gY29ycmVjdCBjcmVkZW50aWFscycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uQ29tcGxldGVkID0gZnVuY3Rpb24gKG1ldGEpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIHN0YXJ0TmV3VHJhbnNhY3Rpb24oZHJpdmVyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBwb3NzaWJsZSB0byBwYXNzIGEgcmVhbG0gd2l0aCBiYXNpYyBhdXRoIHRva2VucycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIiwgXCJuYXRpdmVcIikpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uQ29tcGxldGVkID0gZnVuY3Rpb24gKG1ldGEpIHtcbiAgICAgIGRvbmUoKTtcbiAgICB9O1xuXG4gICAgLy8gV2hlblxuICAgIHN0YXJ0TmV3VHJhbnNhY3Rpb24oZHJpdmVyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBwb3NzaWJsZSB0byBjcmVhdGUgY3VzdG9tIGF1dGggdG9rZW5zJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmN1c3RvbShcIm5lbzRqXCIsIFwibmVvNGpcIiwgXCJuYXRpdmVcIiwgXCJiYXNpY1wiKSk7XG5cbiAgICAvLyBFeHBlY3RcbiAgICBkcml2ZXIub25Db21wbGV0ZWQgPSBmdW5jdGlvbiAobWV0YSkge1xuICAgICAgZG9uZSgpO1xuICAgIH07XG5cbiAgICAvLyBXaGVuXG4gICAgc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNyZWF0ZSBjdXN0b20gYXV0aCB0b2tlbnMgd2l0aCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguY3VzdG9tKFwibmVvNGpcIiwgXCJuZW80alwiLCBcIm5hdGl2ZVwiLCBcImJhc2ljXCIsIHtzZWNyZXQ6IDQyfSkpO1xuXG4gICAgLy8gRXhwZWN0XG4gICAgZHJpdmVyLm9uQ29tcGxldGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgZG9uZSgpO1xuICAgIH07XG5cbiAgICAvLyBXaGVuXG4gICAgc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgbmljZWx5IHdoZW4gY29ubmVjdGluZyB3aXRoIHJvdXRpbmcgdG8gc3RhbmRhbG9uZSBzZXJ2ZXInLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQrcm91dGluZzovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG5cbiAgICAvLyBFeHBlY3RcbiAgICBkcml2ZXIub25FcnJvciA9IGVycm9yID0+IHtcbiAgICAgIGV4cGVjdChlcnJvci5tZXNzYWdlKS50b0VxdWFsKCdTZXJ2ZXIgbG9jYWxob3N0IGNvdWxkIG5vdCBwZXJmb3JtIHJvdXRpbmcuIE1ha2Ugc3VyZSB5b3UgYXJlIGNvbm5lY3RpbmcgdG8gYSBjYXVzYWwgY2x1c3RlcicpO1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwobmVvNGouZXJyb3IuU0VSVklDRV9VTkFWQUlMQUJMRSk7XG4gICAgICBkb25lKCk7XG4gICAgfTtcblxuICAgIC8vIFdoZW5cbiAgICBzdGFydE5ld1RyYW5zYWN0aW9uKGRyaXZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBjb3JyZWN0IHVzZXIgYWdlbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0RHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiKTtcbiAgICBleHBlY3QoZGlyZWN0RHJpdmVyLl91c2VyQWdlbnQpLnRvQmUoXCJuZW80ai1qYXZhc2NyaXB0LzAuMC4wLWRldlwiKTtcbiAgICBkaXJlY3REcml2ZXIuY2xvc2UoKTtcblxuICAgIGNvbnN0IHJvdXRpbmdEcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0K3JvdXRpbmc6Ly9sb2NhbGhvc3RcIik7XG4gICAgZXhwZWN0KHJvdXRpbmdEcml2ZXIuX3VzZXJBZ2VudCkudG9CZShcIm5lbzRqLWphdmFzY3JpcHQvMC4wLjAtZGV2XCIpO1xuICAgIHJvdXRpbmdEcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gVFJVU1RfT05fRklSU1RfVVNFIGlzIHVzZWQgd2l0aCByb3V0aW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IGNyZWF0ZVJvdXRpbmdEcml2ZXJXaXRoVE9GVSA9ICgpID0+IHtcbiAgICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcignYm9sdCtyb3V0aW5nOi8vbG9jYWxob3N0JywgbmVvNGouYXV0aC5iYXNpYygnbmVvNGonLCAnbmVvNGonKSwge1xuICAgICAgICBlbmNyeXB0ZWQ6IFwiRU5DUllQVElPTl9PTlwiLFxuICAgICAgICAgIHRydXN0OiAnVFJVU1RfT05fRklSU1RfVVNFJ1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGV4cGVjdChjcmVhdGVSb3V0aW5nRHJpdmVyV2l0aFRPRlUpLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgdmFyIGV4cG9zZWRUeXBlcyA9IFtcbiAgICAnTm9kZScsXG4gICAgJ1BhdGgnLFxuICAgICdQYXRoU2VnbWVudCcsXG4gICAgJ1JlY29yZCcsXG4gICAgJ1JlbGF0aW9uc2hpcCcsXG4gICAgJ1Jlc3VsdCcsXG4gICAgJ1Jlc3VsdFN1bW1hcnknLFxuICAgICdVbmJvdW5kUmVsYXRpb25zaGlwJyxcbiAgXTtcblxuICBleHBvc2VkVHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICBpdChgc2hvdWxkIGV4cG9zZSB0eXBlICR7dHlwZX1gLCBmdW5jdGlvbigpIHtcbiAgICAgIGV4cGVjdCh1bmRlZmluZWQgPT09IG5lbzRqLnR5cGVzW3R5cGVdKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBuZXcgdHJhbnNhY3Rpb24gdG8gZm9yY2UgbmV3IG5ldHdvcmsgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIHtEcml2ZXJ9IGRyaXZlciAtIHRoZSBkcml2ZXIgdG8gdXNlLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnROZXdUcmFuc2FjdGlvbihkcml2ZXIpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICBleHBlY3Qoc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCkpLnRvQmVEZWZpbmVkKCk7XG4gIH1cblxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIHYxID0gcmVxdWlyZSgnLi4vLi4vbGliL3YxJyk7XG52YXIgaW50ID0gdjEuaW50O1xudmFyIGludGVnZXIgPSB2MS5pbnRlZ2VyO1xuXG5kZXNjcmliZSgnUG9vbCcsIGZ1bmN0aW9uKCkge1xuICBpdCgnZXhwb3NlcyBpblNhZmVSYW5nZSBmdW5jdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBleHBlY3QoaW50ZWdlci5pblNhZmVSYW5nZShpbnQoXCI5MDA3MTk5MjU0NzQwOTkxXCIpKSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChpbnRlZ2VyLmluU2FmZVJhbmdlKGludChcIjkwMDcxOTkyNTQ3NDA5OTJcIikpKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QoaW50ZWdlci5pblNhZmVSYW5nZShpbnQoXCItOTAwNzE5OTI1NDc0MDk5MVwiKSkpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QoaW50ZWdlci5pblNhZmVSYW5nZShpbnQoXCItOTAwNzE5OTI1NDc0MDk5MlwiKSkpLnRvQmVGYWxzeSgpO1xuICB9KTtcblxuICBpdCgnZXhwb3NlcyB0b051bWJlciBmdW5jdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBleHBlY3QoaW50ZWdlci50b051bWJlcihpbnQoXCI5MDA3MTk5MjU0NzQwOTkxXCIpKSkudG9FcXVhbCg5MDA3MTk5MjU0NzQwOTkxKTtcbiAgICBleHBlY3QoaW50ZWdlci50b051bWJlcihpbnQoXCItOTAwNzE5OTI1NDc0MDk5MVwiKSkpLnRvRXF1YWwoLTkwMDcxOTkyNTQ3NDA5OTEpO1xuICB9KTtcblxuICBpdCgnZXhwb3NlcyB0b1N0cmluZyBmdW5jdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBleHBlY3QoaW50ZWdlci50b1N0cmluZyhpbnQoXCI5MDA3MTk5MjU0NzQwOTkxXCIpKSkudG9FcXVhbChcIjkwMDcxOTkyNTQ3NDA5OTFcIik7XG4gICAgZXhwZWN0KGludGVnZXIudG9TdHJpbmcoaW50KFwiOTAwNzE5OTI1NDc0MDk5MlwiKSkpLnRvRXF1YWwoXCI5MDA3MTk5MjU0NzQwOTkyXCIpO1xuICAgIGV4cGVjdChpbnRlZ2VyLnRvU3RyaW5nKGludChcIi05MDA3MTk5MjU0NzQwOTkxXCIpKSkudG9FcXVhbChcIi05MDA3MTk5MjU0NzQwOTkxXCIpO1xuICAgIGV4cGVjdChpbnRlZ2VyLnRvU3RyaW5nKGludChcIi05MDA3MTk5MjU0NzQwOTkyXCIpKSkudG9FcXVhbChcIi05MDA3MTk5MjU0NzQwOTkyXCIpO1xuICB9KTtcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNyBcIk5lbyBUZWNobm9sb2d5LFwiLFwiXG4gKiBOZXR3b3JrIEVuZ2luZSBmb3IgT2JqZWN0cyBpbiBMdW5kIEFCIFtodHRwOi8vbmVvdGVjaG5vbG9neS5jb21dXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmVvNGouXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIG9zID0gcmVxdWlyZSgnb3MnKTtcbnZhciBOb2RlQ2hhbm5lbCA9IHJlcXVpcmUoJy4uLy4uL2xpYi92MS9pbnRlcm5hbC9jaC1ub2RlJykuZGVmYXVsdDtcblxuZGVzY3JpYmUoJ1BhY2thZ2UnLCBmdW5jdGlvbigpIHtcbiAgdmFyIGRyaXZlckdsb2JhbCA9IHtjbG9zZTogZnVuY3Rpb24oKSB7fX07XG4gIGFmdGVyQWxsKGZ1bmN0aW9uKCkge1xuICAgIGRyaXZlckdsb2JhbC5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHdvcmsnLCBmdW5jdGlvbihkb25lKXtcbiAgICB2YXIgbmVvNGpSZXE7XG4gICAgLy8gQXNzdW1pbmcgd2Ugb25seSBydW4gdGhpcyB0ZXN0IG9uIE5vZGVKU1xuICAgIGlmKCAhTm9kZUNoYW5uZWwuYXZhaWxhYmxlICkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBuZW80alJlcSA9IHJlcXVpcmUocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnc2FuZGJveCcsICdub2RlX21vZHVsZXMnLCAnbmVvNGotZHJpdmVyJywgJ2xpYicpKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGRvbmUuZmFpbCgnQ291bGQgbm90IGxvYWQgc2FuZGJveCBwYWNrYWdlJylcbiAgICB9XG5cbiAgICBkcml2ZXJHbG9iYWwgPSBuZW80alJlcS52MS5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqUmVxLnYxLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICB2YXIgc2Vzc2lvbiA9IGRyaXZlckdsb2JhbC5zZXNzaW9uKCk7XG4gICAgc2Vzc2lvbi5ydW4oJ1JFVFVSTiAxIEFTIGFuc3dlcicpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYW5zd2VyJykudG9OdW1iZXIoKSkudG9CZSgxKTtcbiAgICAgIHNlc3Npb24uY2xvc2UoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIGRvbmUuZmFpbChcIkVycm9yIGluIHRlc3RcIilcbiAgICB9KVxuICB9KVxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIFJlY29yZCA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvcmVjb3JkXCIpLmRlZmF1bHQ7XG52YXIgTmVvNGpFcnJvciA9IHJlcXVpcmUoXCIuLi8uLi9saWIvdjEvZXJyb3JcIikuTmVvNGpFcnJvcjtcblxuXG5kZXNjcmliZSgnUmVjb3JkJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgYWxsb3cgZ2V0dGluZyBmaWVsZHMgYnkgbmFtZScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QocmVjb3JkLmdldChcIm5hbWVcIikpLnRvRXF1YWwoXCJCb2JcIik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWxsb3cgY2hlY2tpbmcgaWYgZmllbGRzIGV4aXN0JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuaGFzKFwibmFtZVwiKSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QocmVjb3JkLmhhcyhcImludmFsaWQga2V5XCIpKS50b0VxdWFsKGZhbHNlKTtcbiAgICBleHBlY3QocmVjb3JkLmhhcygwKSkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QocmVjb3JkLmhhcygxKSkudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdHJhbnNmb3JtIFJlY29yZCBpbnRvIE9iamVjdCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIiwgXCJhZ2VcIiwgXCJuZXN0ZWRcIl0sIFtcIkJvYlwiLCAyMC41LCB7dGVzdDogdHJ1ZX1dICk7XG5cbiAgICAvLyBXaGVuXG4gICAgdmFyIG9iaiA9IHJlY29yZC50b09iamVjdCgpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChvYmoubmFtZSkudG9FcXVhbChcIkJvYlwiKTtcbiAgICBleHBlY3Qob2JqLmFnZSkudG9FcXVhbCgyMC41KTtcbiAgICBleHBlY3Qob2JqLm5lc3RlZC50ZXN0KS50b0VxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBvbiBubyBzdWNoIGtleScsIGZ1bmN0aW9uKCkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIHJlY29yZCA9IG5ldyBSZWNvcmQoIFtcIm5hbWVcIl0sIFtcIkJvYlwiXSApO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBleHBlY3QoIGZ1bmN0aW9uKCkgeyByZWNvcmQuZ2V0KFwiYWdlXCIpIH0pLnRvVGhyb3cobmV3IE5lbzRqRXJyb3IoXG4gICAgICBcIlRoaXMgcmVjb3JkIGhhcyBubyBmaWVsZCB3aXRoIGtleSAnYWdlJywgYXZhaWxhYmxlIGtleSBhcmU6IFtuYW1lXS5cIikpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGdldHRpbmcgZmllbGRzIGJ5IGluZGV4JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdChyZWNvcmQuZ2V0KDApKS50b0VxdWFsKFwiQm9iXCIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdpdmUgaGVscGZ1bCBlcnJvciBvbiBubyBzdWNoIGluZGV4JywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiXSwgW1wiQm9iXCJdICk7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIGV4cGVjdCggZnVuY3Rpb24oKSB7IHJlY29yZC5nZXQoMSkgfSkudG9UaHJvdyhuZXcgTmVvNGpFcnJvcihcbiAgICAgIFwiVGhpcyByZWNvcmQgaGFzIG5vIGZpZWxkIHdpdGggaW5kZXggJzEnLiBSZW1lbWJlciB0aGF0IGluZGV4ZXMgc3RhcnQgYXQgYDBgLCBcIiArXG4gICAgICBcImFuZCBtYWtlIHN1cmUgeW91ciBzdGF0ZW1lbnQgcmV0dXJucyByZWNvcmRzIGluIHRoZSBzaGFwZSB5b3UgbWVhbnQgaXQgdG8uXCIpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYXZlIGxlbmd0aCcsIGZ1bmN0aW9uKCkge1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgZXhwZWN0KCBuZXcgUmVjb3JkKCBbXSwgW10pLmxlbmd0aCApLnRvQmUoMCk7XG4gICAgZXhwZWN0KCBuZXcgUmVjb3JkKCBbXCJuYW1lXCJdLCBbXCJCb2JcIl0pLmxlbmd0aCApLnRvQmUoMSk7XG4gICAgZXhwZWN0KCBuZXcgUmVjb3JkKCBbXCJuYW1lXCIsIFwiYWdlXCJdLCBbXCJCb2JcIiwgNDVdKS5sZW5ndGggKS50b0JlKDIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IGZvckVhY2ggdGhyb3VnaCB0aGUgcmVjb3JkJywgZnVuY3Rpb24oKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgcmVjb3JkID0gbmV3IFJlY29yZCggW1wibmFtZVwiLCBcImFnZVwiXSwgW1wiQm9iXCIsIDQ1XSApO1xuICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgIC8vIFdoZW5cbiAgICByZWNvcmQuZm9yRWFjaCggZnVuY3Rpb24oIHZhbHVlLCBrZXksIHJlY29yZCApIHtcbiAgICAgIHJlc3VsdC5wdXNoKCBbdmFsdWUsIGtleSwgcmVjb3JkXSApO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW1tcIkJvYlwiLCBcIm5hbWVcIiwgcmVjb3JkXSwgWzQ1LCBcImFnZVwiLCByZWNvcmRdXSk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIG5lbzRqID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MVwiKTtcblxuZGVzY3JpYmUoJ3Jlc3VsdCBzdHJlYW0nLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZHJpdmVyLCBzZXNzaW9uO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgc2Vzc2lvbi5ydW4oXCJNQVRDSCAobikgREVUQUNIIERFTEVURSBuXCIpLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbigpIHtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBjaGFpbmluZyBgdGhlbmAsIHJldHVybmluZyBhIG5ldyB0aGluZyBpbiBlYWNoJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oIFwiUkVUVVJOIDFcIilcbiAgICAgIC50aGVuKCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFwiZmlyc3RcIjtcbiAgICAgIH0pXG4gICAgICAudGhlbiggZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIGV4cGVjdChhcmcpLnRvQmUoIFwiZmlyc3RcIiApO1xuICAgICAgICByZXR1cm4gXCJzZWNvbmRcIjtcbiAgICAgIH0pXG4gICAgICAudGhlbiggZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIGV4cGVjdChhcmcpLnRvQmUoIFwic2Vjb25kXCIgKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBjYXRjaGluZyBleGNlcHRpb24gdGhyb3duIGluIGB0aGVuYCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCBcIlJFVFVSTiAxXCIpXG4gICAgICAudGhlbiggZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF3YXkgd2l0aCB5b3UhXCIpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCggZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGV4cGVjdChlcnIubWVzc2FnZSkudG9CZSggXCJBd2F5IHdpdGggeW91IVwiICk7XG4gICAgICAgIGRvbmUoKVxuICAgICAgfSk7XG4gIH0pO1xufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IG5lbzRqIGZyb20gJy4uLy4uL3NyYy92MSc7XG5pbXBvcnQge3N0YXRlbWVudFR5cGV9IGZyb20gJy4uLy4uL3NyYy92MS9yZXN1bHQtc3VtbWFyeSc7XG5pbXBvcnQgU2Vzc2lvbiBmcm9tICcuLi8uLi9zcmMvdjEvc2Vzc2lvbic7XG5pbXBvcnQge1JFQUR9IGZyb20gJy4uLy4uL3NyYy92MS9kcml2ZXInO1xuaW1wb3J0IHtTaW5nbGVDb25uZWN0aW9uUHJvdmlkZXJ9IGZyb20gJy4uLy4uL3NyYy92MS9pbnRlcm5hbC9jb25uZWN0aW9uLXByb3ZpZGVycyc7XG5pbXBvcnQgRmFrZUNvbm5lY3Rpb24gZnJvbSAnLi4vaW50ZXJuYWwvZmFrZS1jb25uZWN0aW9uJztcblxuZGVzY3JpYmUoJ3Nlc3Npb24nLCAoKSA9PiB7XG5cbiAgbGV0IGRyaXZlcjtcbiAgbGV0IHNlc3Npb247XG4gIGxldCBzZXJ2ZXJNZXRhZGF0YTtcbiAgbGV0IG9yaWdpbmFsVGltZW91dDtcblxuICBiZWZvcmVFYWNoKGRvbmUgPT4ge1xuICAgIGRyaXZlciA9IG5lbzRqLmRyaXZlcignYm9sdDovL2xvY2FsaG9zdCcsIG5lbzRqLmF1dGguYmFzaWMoJ25lbzRqJywgJ25lbzRqJykpO1xuICAgIGRyaXZlci5vbkNvbXBsZXRlZCA9IG1ldGEgPT4ge1xuICAgICAgc2VydmVyTWV0YWRhdGEgPSBtZXRhWydzZXJ2ZXInXTtcbiAgICB9O1xuICAgIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuICAgIG9yaWdpbmFsVGltZW91dCA9IGphc21pbmUuREVGQVVMVF9USU1FT1VUX0lOVEVSVkFMO1xuICAgIGphc21pbmUuREVGQVVMVF9USU1FT1VUX0lOVEVSVkFMID0gMTAwMDA7XG5cbiAgICBzZXNzaW9uLnJ1bignTUFUQ0ggKG4pIERFVEFDSCBERUxFVEUgbicpLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgamFzbWluZS5ERUZBVUxUX1RJTUVPVVRfSU5URVJWQUwgPSBvcmlnaW5hbFRpbWVvdXQ7XG4gICAgZHJpdmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdjbG9zZSBzaG91bGQgaW52b2tlIGNhbGxiYWNrICcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBzZXNzaW9uID0gbmV3U2Vzc2lvbldpdGhDb25uZWN0aW9uKGNvbm5lY3Rpb24pO1xuXG4gICAgc2Vzc2lvbi5jbG9zZShkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ2Nsb3NlIHNob3VsZCBpbnZva2UgY2FsbGJhY2sgZXZlbiB3aGVuIGFscmVhZHkgY2xvc2VkICcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBuZXcgRmFrZUNvbm5lY3Rpb24oKTtcbiAgICBjb25zdCBzZXNzaW9uID0gbmV3U2Vzc2lvbldpdGhDb25uZWN0aW9uKGNvbm5lY3Rpb24pO1xuXG4gICAgc2Vzc2lvbi5jbG9zZSgoKSA9PiB7XG4gICAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgICAgc2Vzc2lvbi5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnY2xvc2Ugc2hvdWxkIGJlIGlkZW1wb3RlbnQgJywgZG9uZSA9PiB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IG5ldyBGYWtlQ29ubmVjdGlvbigpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBuZXdTZXNzaW9uV2l0aENvbm5lY3Rpb24oY29ubmVjdGlvbik7XG5cbiAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgIGV4cGVjdChjb25uZWN0aW9uLmlzUmVsZWFzZWRPbmNlT25TZXNzaW9uQ2xvc2UoKSkudG9CZVRydXRoeSgpO1xuXG4gICAgICBzZXNzaW9uLmNsb3NlKCgpID0+IHtcbiAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNSZWxlYXNlZE9uY2VPblNlc3Npb25DbG9zZSgpKS50b0JlVHJ1dGh5KCk7XG5cbiAgICAgICAgc2Vzc2lvbi5jbG9zZSgoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGNvbm5lY3Rpb24uaXNSZWxlYXNlZE9uY2VPblNlc3Npb25DbG9zZSgpKS50b0JlVHJ1dGh5KCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNsb3NlIHRyYW5zYWN0aW9uIGV4ZWN1dG9yJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IG5ld1Nlc3Npb25XaXRoQ29ubmVjdGlvbihuZXcgRmFrZUNvbm5lY3Rpb24oKSk7XG5cbiAgICBsZXQgY2xvc2VDYWxsZWRUaW1lcyA9IDA7XG4gICAgY29uc3QgdHJhbnNhY3Rpb25FeGVjdXRvciA9IHNlc3Npb24uX3RyYW5zYWN0aW9uRXhlY3V0b3I7XG4gICAgY29uc3Qgb3JpZ2luYWxDbG9zZSA9IHRyYW5zYWN0aW9uRXhlY3V0b3IuY2xvc2U7XG4gICAgdHJhbnNhY3Rpb25FeGVjdXRvci5jbG9zZSA9ICgpID0+IHtcbiAgICAgIGNsb3NlQ2FsbGVkVGltZXMrKztcbiAgICAgIG9yaWdpbmFsQ2xvc2UuY2FsbCh0cmFuc2FjdGlvbkV4ZWN1dG9yKTtcbiAgICB9O1xuXG4gICAgc2Vzc2lvbi5jbG9zZSgoKSA9PiB7XG4gICAgICBleHBlY3QoY2xvc2VDYWxsZWRUaW1lcykudG9FcXVhbCgxKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBwb3NzaWJsZSB0byBjbG9zZSBkcml2ZXIgYWZ0ZXIgY2xvc2luZyBzZXNzaW9uIHdpdGggZmFpbGVkIHR4ICcsIGRvbmUgPT4ge1xuICAgIGNvbnN0IGRyaXZlciA9IG5lbzRqLmRyaXZlcignYm9sdDovL2xvY2FsaG9zdCcsIG5lbzRqLmF1dGguYmFzaWMoJ25lbzRqJywgJ25lbzRqJykpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKCdJTlZBTElEIFFVRVJZJykuY2F0Y2goKCkgPT4ge1xuICAgICAgdHgucm9sbGJhY2soKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHNlc3Npb24uY2xvc2UoKCkgPT4ge1xuICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgYmFzaWMgcnVuL3N1YnNjcmliZSAnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBjb25zdCByZWNvcmRzID0gW107XG4gICAgc2Vzc2lvbi5ydW4oXCJSRVRVUk4gMS4wIEFTIGFcIikuc3Vic2NyaWJlKHtcbiAgICAgIG9uTmV4dDogcmVjb3JkID0+IHtcbiAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gICAgICB9LFxuICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGtlZXAgY29udGV4dCBpbiBzdWJzY3JpYmUgbWV0aG9kcyAnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGZ1bmN0aW9uIE15T2JzZXJ2ZXIoKSB7XG4gICAgICB0aGlzLmxvY2FsID0gJ2hlbGxvJztcbiAgICAgIGNvbnN0IHByaXZhdGVMb2NhbCA9ICdoZWxsbyc7XG4gICAgICB0aGlzLm9uTmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vbkNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZXhwZWN0KHByaXZhdGVMb2NhbCkudG9CZSgnaGVsbG8nKTtcbiAgICAgICAgZXhwZWN0KHRoaXMubG9jYWwpLnRvQmUoJ2hlbGxvJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1bignUkVUVVJOIDEuMCBBUyBhJykuc3Vic2NyaWJlKG5ldyBNeU9ic2VydmVyKCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNhbGwgb2JzZXJ2ZXJzIG9uRXJyb3Igb24gZXJyb3IgJywgZG9uZSA9PiB7XG5cbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCdSRVRVUk4gMSBBUycpLnN1YnNjcmliZSh7XG4gICAgICBvbkVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdChlcnJvci5jb2RlKS50b0VxdWFsKCdOZW8uQ2xpZW50RXJyb3IuU3RhdGVtZW50LlN5bnRheEVycm9yJyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgYSBzdGF0ZW1lbnQgb2JqZWN0ICcsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0ge3RleHQ6ICdSRVRVUk4gMSA9IHtwYXJhbX0gQVMgYScsIHBhcmFtZXRlcnM6IHtwYXJhbTogMX19O1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBjb25zdCByZWNvcmRzID0gW107XG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50KS5zdWJzY3JpYmUoe1xuICAgICAgb25OZXh0OiByZWNvcmQgPT4ge1xuICAgICAgICByZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbXBsZXRlZDogKCkgPT4ge1xuICAgICAgICBleHBlY3QocmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChyZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKHRydWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHJ1bi90aGVuL3RoZW4vdGhlbiAnLCBkb25lID0+IHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDEuMCBBUyBhXCIpXG4gICAgICAudGhlbihcbiAgICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cbiAgICAgICkudGhlbihcbiAgICAgIHJlc3VsdCA9PiB7XG4gICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2EnKSkudG9CZSgxKTtcbiAgICAgIH1cbiAgICApLnRoZW4oZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIGJhc2ljIHJ1bi9jYXRjaCAnLCBkb25lID0+IHtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKCdSRVRVUk4gMSBBUycpLmNhdGNoKFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbCgnTmVvLkNsaWVudEVycm9yLlN0YXRlbWVudC5TeW50YXhFcnJvcicpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9XG4gICAgKVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzdW1tYXJpemUgbWV0aG9kIGZvciBiYXNpYyBtZXRhZGF0YSAnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdDUkVBVEUgKG46TGFiZWwge3Byb3A6e3Byb3B9fSkgUkVUVVJOIG4nO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtwcm9wOiAnc3RyaW5nJ307XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uLnJ1bihzdGF0ZW1lbnQsIHBhcmFtcylcbiAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGNvbnN0IHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC50ZXh0KS50b0JlKHN0YXRlbWVudCk7XG4gICAgICAgIGV4cGVjdChzdW0uc3RhdGVtZW50LnBhcmFtZXRlcnMpLnRvQmUocGFyYW1zKTtcbiAgICAgICAgZXhwZWN0KHN1bS5jb3VudGVycy5jb250YWluc1VwZGF0ZXMoKSkudG9CZSh0cnVlKTtcbiAgICAgICAgZXhwZWN0KHN1bS5jb3VudGVycy5ub2Rlc0NyZWF0ZWQoKSkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KHN1bS5zdGF0ZW1lbnRUeXBlKS50b0JlKHN0YXRlbWVudFR5cGUuUkVBRF9XUklURSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXJ2ZXIgaW5mbyBvbiBzdWNjZXNzZnVsIHF1ZXJ5JywgZG9uZSA9PiB7XG4gICAgaWYgKCFzZXJ2ZXJJczMxT3JMYXRlcihkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdpdmVuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gJ1JFVFVSTiAxJztcblxuICAgIC8vIFdoZW4gJiBUaGVuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uc2VydmVyKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3Qoc3VtLnNlcnZlci5hZGRyZXNzKS50b0VxdWFsKCdsb2NhbGhvc3Q6NzY4NycpO1xuICAgICAgICBleHBlY3Qoc3VtLnNlcnZlci52ZXJzaW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2UgZXhlY3V0aW9uIHRpbWUgaW5mb3JtYXRpb24gd2hlbiB1c2luZyAzLjEgYW5kIG9ud2FyZHMnLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSAnVU5XSU5EIHJhbmdlKDEsMTAwMDApIEFTIG4gUkVUVVJOIG4gQVMgbnVtYmVyJztcbiAgICAvLyBXaGVuICYgVGhlblxuXG4gICAgc2Vzc2lvbi5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0ucmVzdWx0QXZhaWxhYmxlQWZ0ZXIudG9JbnQoKSkubm90LnRvQmVMZXNzVGhhbigwKTtcbiAgICAgICAgZXhwZWN0KHN1bS5yZXN1bHRDb25zdW1lZEFmdGVyLnRvSW50KCkpLm5vdC50b0JlTGVzc1RoYW4oMCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBlbXB0eSBwYXJhbWV0ZXIgbWFwIG9uIGNhbGwgd2l0aCBubyBwYXJhbWV0ZXJzJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSAnQ1JFQVRFIChuOkxhYmVsIHtwcm9wOlxcJ3N0cmluZ1xcJ30pIFJFVFVSTiBuJztcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb24ucnVuKHN0YXRlbWVudClcbiAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGNvbnN0IHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgICBleHBlY3Qoc3VtLnN0YXRlbWVudC5wYXJhbWV0ZXJzKS50b0VxdWFsKHt9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHBsYW4gJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSAnRVhQTEFJTiBDUkVBVEUgKG46TGFiZWwge3Byb3A6e3Byb3B9fSkgUkVUVVJOIG4nO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtwcm9wOiAnc3RyaW5nJ307XG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBzZXNzaW9uXG4gICAgICAucnVuKHN0YXRlbWVudCwgcGFyYW1zKVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0uaGFzUGxhbigpKS50b0JlKHRydWUpO1xuICAgICAgICBleHBlY3Qoc3VtLmhhc1Byb2ZpbGUoKSkudG9CZShmYWxzZSk7XG4gICAgICAgIGV4cGVjdChzdW0ucGxhbi5vcGVyYXRvclR5cGUpLnRvQmUoJ1Byb2R1Y2VSZXN1bHRzJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucGxhbi5hcmd1bWVudHMucnVudGltZSkudG9CZSgnSU5URVJQUkVURUQnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wbGFuLmlkZW50aWZpZXJzWzBdKS50b0JlKCduJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucGxhbi5jaGlsZHJlblswXS5vcGVyYXRvclR5cGUpLnRvQmUoJ0NyZWF0ZU5vZGUnKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZXhwb3NlIHByb2ZpbGUgJywgZG9uZSA9PiB7XG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSAnUFJPRklMRSBNQVRDSCAobjpMYWJlbCB7cHJvcDp7cHJvcH19KSBSRVRVUk4gbic7XG4gICAgY29uc3QgcGFyYW1zID0ge3Byb3A6ICdzdHJpbmcnfTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBjb25zdCBzdW0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQbGFuKCkpLnRvQmUodHJ1ZSk7IC8vV2hlbiB0aGVyZSdzIGEgcHJvZmlsZSwgdGhlcmUncyBhIHBsYW5cbiAgICAgICAgZXhwZWN0KHN1bS5oYXNQcm9maWxlKCkpLnRvQmUodHJ1ZSk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5vcGVyYXRvclR5cGUpLnRvQmUoJ1Byb2R1Y2VSZXN1bHRzJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5hcmd1bWVudHMucnVudGltZSkudG9CZSgnSU5URVJQUkVURUQnKTtcbiAgICAgICAgZXhwZWN0KHN1bS5wcm9maWxlLmlkZW50aWZpZXJzWzBdKS50b0JlKCduJyk7XG4gICAgICAgIGV4cGVjdChzdW0ucHJvZmlsZS5jaGlsZHJlblswXS5vcGVyYXRvclR5cGUpLnRvQmUoJ0ZpbHRlcicpO1xuICAgICAgICBleHBlY3Qoc3VtLnByb2ZpbGUucm93cykudG9CZSgwKTtcbiAgICAgICAgLy9leHBlY3Qoc3VtLnByb2ZpbGUuZGJIaXRzKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBjeXBoZXIgbm90aWZpY2F0aW9ucyAnLCBkb25lID0+IHtcbiAgICAvLyBHaXZlblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdFWFBMQUlOIE1BVENIIChuKSwgKG0pIFJFVFVSTiBuLCBtJztcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50KVxuICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3VtID0gcmVzdWx0LnN1bW1hcnk7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLmNvZGUpLnRvQmUoXCJOZW8uQ2xpZW50Tm90aWZpY2F0aW9uLlN0YXRlbWVudC5DYXJ0ZXNpYW5Qcm9kdWN0V2FybmluZ1wiKTtcbiAgICAgICAgZXhwZWN0KHN1bS5ub3RpZmljYXRpb25zWzBdLnRpdGxlKS50b0JlKFwiVGhpcyBxdWVyeSBidWlsZHMgYSBjYXJ0ZXNpYW4gcHJvZHVjdCBiZXR3ZWVuIGRpc2Nvbm5lY3RlZCBwYXR0ZXJucy5cIik7XG4gICAgICAgIGV4cGVjdChzdW0ubm90aWZpY2F0aW9uc1swXS5wb3NpdGlvbi5jb2x1bW4pLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHVzaW5nIHRoZSBzZXNzaW9uIHdoZW4gaGF2aW5nIGFuIG9wZW4gdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIC8vVGhlblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIDQyXCIpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBleHBlY3QoZXJyb3IubWVzc2FnZSkudG9CZShcIlN0YXRlbWVudHMgY2Fubm90IGJlIHJ1biBkaXJlY3RseSBvbiBhIFwiXG4gICAgICAgICAgKyBcInNlc3Npb24gd2l0aCBhbiBvcGVuIHRyYW5zYWN0aW9uOyBlaXRoZXIgcnVuIGZyb20gd2l0aGluIHRoZSBcIlxuICAgICAgICAgICsgXCJ0cmFuc2FjdGlvbiBvciB1c2UgYSBkaWZmZXJlbnQgc2Vzc2lvbi5cIik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIG9wZW5pbmcgbXVsdGlwbGUgdHJhbnNhY3Rpb25zJywgKCkgPT4ge1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgLy8gVGhlblxuICAgIGV4cGVjdChzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gbG90cyBvZiBkYXRhJywgZG9uZSA9PiB7XG4gICAgc2Vzc2lvbi5ydW4oXCJVTldJTkQgcmFuZ2UoMSwxMDAwMCkgQVMgeCBDUkVBVEUgKDpBVFRSQUNUSU9OIHtwcm9wOiAncHJvcCd9KVwiKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBSRVRVUk4gblwiKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9uTmV4dDogcmVjb3JkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gcmVjb3JkLmdldCgnbicpO1xuICAgICAgICAgICAgICAgIGV4cGVjdChub2RlLmxhYmVsc1swXSkudG9FcXVhbChcIkFUVFJBQ1RJT05cIik7XG4gICAgICAgICAgICAgICAgZXhwZWN0KG5vZGUucHJvcGVydGllcy5wcm9wKS50b0VxdWFsKFwicHJvcFwiKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXNzaW9uLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG5cbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBsb25nIHJ1bm5pbmcgcXVlcnkgJywgZG9uZSA9PiB7XG4gICAgLy9naXZlbiBhIGxvbmcgcnVubmluZyBxdWVyeVxuICAgIHNlc3Npb24ucnVuKCd1bndpbmQgcmFuZ2UoMSwxMDAwMDAwKSBhcyB4IGNyZWF0ZSAobiB7cHJvcDp4fSkgZGVsZXRlIG4nKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAvLyBsb25nIHJ1bm5pbmcgcXVlcnkgc2hvdWxkIGZhaWxcbiAgICAgIGV4cGVjdChlcnJvcikudG9CZURlZmluZWQoKTtcblxuICAgICAgLy8gYW5kIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzdGFydCBhbm90aGVyIHNlc3Npb24gYW5kIHJ1biBhIHF1ZXJ5XG4gICAgICBjb25zdCBhbm90aGVyU2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG4gICAgICBhbm90aGVyU2Vzc2lvbi5ydW4oJ1JFVFVSTiAxLjAgYXMgYScpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYScpKS50b0JlKDEpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdRdWVyeSBmYWlsZWQgYWZ0ZXIgYSBsb25nIHJ1bm5pbmcgcXVlcnkgd2FzIHRlcm1pbmF0ZWQnLCBlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIHdhaXQgc29tZSB0aW1lIHRoYW4gY2xvc2UgdGhlIHNlc3Npb24gd2l0aCBhIGxvbmcgcnVubmluZyBxdWVyeVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2Vzc2lvbi5jbG9zZSgpO1xuICAgIH0sIDEwMDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgbmljZWx5IG9uIHVucGFja2FibGUgdmFsdWVzICcsIGRvbmUgPT4ge1xuICAgIC8vIEdpdmVuXG4gICAgY29uc3QgdW5wYWNrYWJsZSA9ICgpID0+IHtcbiAgICAgIHRocm93IEVycm9yKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdSRVRVUk4ge3BhcmFtfSc7XG4gICAgY29uc3QgcGFyYW1zID0ge3BhcmFtOiB1bnBhY2thYmxlfTtcbiAgICAvLyBXaGVuICYgVGhlblxuICAgIHNlc3Npb25cbiAgICAgIC5ydW4oc3RhdGVtZW50LCBwYXJhbXMpXG4gICAgICAuY2F0Y2goaWdub3JlID0+IHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSlcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIG5pY2VseSBmb3IgaWxsZWdhbCBzdGF0ZW1lbnQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKCkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiBzZXNzaW9uLnJ1bihudWxsKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKHt9KSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKDQyKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKFtdKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24ucnVuKFsnQ1JFQVRFICgpJ10pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcblxuICAgIGV4cGVjdCgoKSA9PiBzZXNzaW9uLnJ1bih7c3RhdGVtZW50OiAnQ1JFQVRFICgpJ30pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5ydW4oe2N5cGhlcjogJ0NSRUFURSAoKSd9KSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBuaWNlbHkgZm9yIGlsbGVnYWwgYm9va21hcmsnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbih7fSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oNDIpKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKFtdKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbihbJ2Jvb2ttYXJrJ10pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBjcmVhdGlvbiBvZiBhICcgKyBuZW80ai5zZXNzaW9uLlJFQUQgKyAnIHNlc3Npb24nLCBkb25lID0+IHtcbiAgICBjb25zdCByZWFkU2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKG5lbzRqLnNlc3Npb24uUkVBRCk7XG4gICAgcmVhZFNlc3Npb24ucnVuKCdSRVRVUk4gMScpLnRoZW4oKCkgPT4ge1xuICAgICAgcmVhZFNlc3Npb24uY2xvc2UoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBjcmVhdGlvbiBvZiBhICcgKyBuZW80ai5zZXNzaW9uLldSSVRFICsgJyBzZXNzaW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3Qgd3JpdGVTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24obmVvNGouc2Vzc2lvbi5XUklURSk7XG4gICAgd3JpdGVTZXNzaW9uLnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICB3cml0ZVNlc3Npb24uY2xvc2UoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIGZvciBpbGxlZ2FsIHNlc3Npb24gbW9kZScsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4gZHJpdmVyLnNlc3Npb24oJ0lMTEVHQUxfTU9ERScpKS50b1Rocm93KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVsZWFzZSBjb25uZWN0aW9uIHRvIHRoZSBwb29sIGFmdGVyIHJ1bicsIGRvbmUgPT4ge1xuICAgIHdpdGhRdWVyeUluVG1wU2Vzc2lvbihkcml2ZXIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlkbGVDb25uZWN0aW9uc0JlZm9yZSA9IGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKTtcblxuICAgICAgc2Vzc2lvbi5ydW4oJ1JFVFVSTiAxJykudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkbGVDb25uZWN0aW9uc0FmdGVyID0gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpO1xuICAgICAgICBleHBlY3QoaWRsZUNvbm5lY3Rpb25zQmVmb3JlKS50b0VxdWFsKGlkbGVDb25uZWN0aW9uc0FmdGVyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVsZWFzZSBjb25uZWN0aW9uIHRvIHRoZSBwb29sIGFmdGVyIHJ1biBmYWlsdXJlJywgZG9uZSA9PiB7XG4gICAgd2l0aFF1ZXJ5SW5UbXBTZXNzaW9uKGRyaXZlciwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQmVmb3JlID0gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpO1xuXG4gICAgICBzZXNzaW9uLnJ1bignUkVUVVJOIDEwIC8gMCcpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQWZ0ZXIgPSBpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcik7XG4gICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbnNCZWZvcmUpLnRvRXF1YWwoaWRsZUNvbm5lY3Rpb25zQWZ0ZXIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gdG8gdGhlIHBvb2wgd2hlbiByZXN1bHQgaXMgY29uc3VtZWQnLCBkb25lID0+IHtcbiAgICB3aXRoUXVlcnlJblRtcFNlc3Npb24oZHJpdmVyLCAoKSA9PiB7XG4gICAgICBjb25zdCBpZGxlQ29ubmVjdGlvbnNCZWZvcmUgPSBpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcik7XG5cbiAgICAgIHNlc3Npb24ucnVuKCdVTldJTkQgcmFuZ2UoMCwgMTApIEFTIHggUkVUVVJOIHggKyAxJykuc3Vic2NyaWJlKHtcbiAgICAgICAgb25OZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gb25lIGxlc3MgaWRsZSBjb25uZWN0aW9uLCBvbmUgY29ubmVjdGlvbiBpcyB1c2VkIGZvciB0aGUgY3VycmVudCBxdWVyeVxuICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlIC0gMSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGVkOiAoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVsZWFzZSBjb25uZWN0aW9uIHRvIHRoZSBwb29sIHdoZW4gcmVzdWx0IGZhaWxzJywgZG9uZSA9PiB7XG4gICAgd2l0aFF1ZXJ5SW5UbXBTZXNzaW9uKGRyaXZlciwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQmVmb3JlID0gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpO1xuXG4gICAgICBzZXNzaW9uLnJ1bignVU5XSU5EIHJhbmdlKDEwLCAwLCAtMSkgQVMgeCBSRVRVUk4gMTAgLyB4Jykuc3Vic2NyaWJlKHtcbiAgICAgICAgb25OZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gb25lIGxlc3MgaWRsZSBjb25uZWN0aW9uLCBvbmUgY29ubmVjdGlvbiBpcyB1c2VkIGZvciB0aGUgY3VycmVudCBxdWVyeVxuICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlIC0gMSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IGlnbm9yZWRFcnJvciA9PiB7XG4gICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZWQ6ICgpID0+IHtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVsZWFzZSBjb25uZWN0aW9uIHRvIHRoZSBwb29sIHdoZW4gdHJhbnNhY3Rpb24gY29tbWl0cycsIGRvbmUgPT4ge1xuICAgIHdpdGhRdWVyeUluVG1wU2Vzc2lvbihkcml2ZXIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlkbGVDb25uZWN0aW9uc0JlZm9yZSA9IGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKTtcblxuICAgICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgIHR4LnJ1bignVU5XSU5EIHJhbmdlKDAsIDEwKSBBUyB4IFJFVFVSTiB4ICsgMScpLnN1YnNjcmliZSh7XG4gICAgICAgIG9uTmV4dDogKCkgPT4ge1xuICAgICAgICAgIC8vIG9uZSBsZXNzIGlkbGUgY29ubmVjdGlvbiwgb25lIGNvbm5lY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb25cbiAgICAgICAgICBleHBlY3QoaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpKS50b0JlKGlkbGVDb25uZWN0aW9uc0JlZm9yZSAtIDEpO1xuICAgICAgICB9LFxuICAgICAgICBvbkVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlZDogKCkgPT4ge1xuICAgICAgICAgIC8vIG9uZSBsZXNzIGlkbGUgY29ubmVjdGlvbiwgb25lIGNvbm5lY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb25cbiAgICAgICAgICBleHBlY3QoaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpKS50b0JlKGlkbGVDb25uZWN0aW9uc0JlZm9yZSAtIDEpO1xuICAgICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSkudG9CZShpZGxlQ29ubmVjdGlvbnNCZWZvcmUpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWxlYXNlIGNvbm5lY3Rpb24gdG8gdGhlIHBvb2wgd2hlbiB0cmFuc2FjdGlvbiByb2xscyBiYWNrJywgZG9uZSA9PiB7XG4gICAgd2l0aFF1ZXJ5SW5UbXBTZXNzaW9uKGRyaXZlciwgKCkgPT4ge1xuICAgICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zQmVmb3JlID0gaWRsZUNvbm5lY3Rpb25Db3VudChkcml2ZXIpO1xuXG4gICAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgdHgucnVuKCdVTldJTkQgcmFuZ2UoMCwgMTApIEFTIHggUkVUVVJOIHggKyAxJykuc3Vic2NyaWJlKHtcbiAgICAgICAgb25OZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gb25lIGxlc3MgaWRsZSBjb25uZWN0aW9uLCBvbmUgY29ubmVjdGlvbiBpcyB1c2VkIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvblxuICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlIC0gMSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGVkOiAoKSA9PiB7XG4gICAgICAgICAgLy8gb25lIGxlc3MgaWRsZSBjb25uZWN0aW9uLCBvbmUgY29ubmVjdGlvbiBpcyB1c2VkIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvblxuICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlIC0gMSk7XG4gICAgICAgICAgdHgucm9sbGJhY2soKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChpZGxlQ29ubmVjdGlvbkNvdW50KGRyaXZlcikpLnRvQmUoaWRsZUNvbm5lY3Rpb25zQmVmb3JlKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXBkYXRlIGxhc3QgYm9va21hcmsgYWZ0ZXIgZXZlcnkgcmVhZCB0eCBjb21taXQnLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuXG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oJ1JFVFVSTiA0MiBhcyBhbnN3ZXInKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBjb25zdCByZWNvcmRzID0gcmVzdWx0LnJlY29yZHM7XG4gICAgICBleHBlY3QocmVjb3Jkcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QocmVjb3Jkc1swXS5nZXQoJ2Fuc3dlcicpLnRvTnVtYmVyKCkpLnRvRXF1YWwoNDIpO1xuXG4gICAgICB0eC5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgYm9va21hcmtBZnRlciA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3QoYm9va21hcmtBZnRlcikubm90LnRvQmVOdWxsKCk7XG4gICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS5ub3QudG9FcXVhbChib29rbWFya0JlZm9yZSk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXBkYXRlIGxhc3QgYm9va21hcmsgYWZ0ZXIgZXZlcnkgd3JpdGUgdHggY29tbWl0JywgZG9uZSA9PiB7XG4gICAgaWYgKCFzZXJ2ZXJJczMxT3JMYXRlcihkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJvb2ttYXJrQmVmb3JlID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcblxuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBib29rbWFya0FmdGVyID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcbiAgICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS5ub3QudG9CZU51bGwoKTtcbiAgICAgICAgZXhwZWN0KGJvb2ttYXJrQWZ0ZXIpLm5vdC50b0VxdWFsKGJvb2ttYXJrQmVmb3JlKTtcblxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgbG9zZSBsYXN0IGJvb2ttYXJrIGFmdGVyIHJ1bicsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICB0eC5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgICAgICBleHBlY3QoYm9va21hcmtCZWZvcmUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgIGV4cGVjdChib29rbWFya0JlZm9yZSkubm90LnRvQmVOdWxsKCk7XG5cbiAgICAgICAgc2Vzc2lvbi5ydW4oJ0NSRUFURSAoKScpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJvb2ttYXJrQWZ0ZXIgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgICAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS50b0VxdWFsKGJvb2ttYXJrQmVmb3JlKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29tbWl0IHJlYWQgdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzZXNzaW9uLnJlYWRUcmFuc2FjdGlvbih0eCA9PiB0eC5ydW4oJ1JFVFVSTiA0MiBBUyBhbnN3ZXInKSk7XG5cbiAgICByZXN1bHRQcm9taXNlLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhbnN3ZXInKS50b051bWJlcigpKS50b0VxdWFsKDQyKTtcblxuICAgICAgY29uc3QgYm9va21hcmtBZnRlciA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgICB2ZXJpZnlCb29rbWFyayhib29rbWFya0FmdGVyKTtcbiAgICAgIGV4cGVjdChib29rbWFya0FmdGVyKS5ub3QudG9FcXVhbChib29rbWFya0JlZm9yZSk7XG5cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb21taXQgd3JpdGUgdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzZXNzaW9uLndyaXRlVHJhbnNhY3Rpb24odHggPT4gdHgucnVuKCdDUkVBVEUgKG46Tm9kZSB7aWQ6IDQyfSkgUkVUVVJOIG4uaWQgQVMgYW5zd2VyJykpO1xuXG4gICAgcmVzdWx0UHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYW5zd2VyJykudG9OdW1iZXIoKSkudG9FcXVhbCg0Mik7XG4gICAgICBleHBlY3QocmVzdWx0LnN1bW1hcnkuY291bnRlcnMubm9kZXNDcmVhdGVkKCkpLnRvRXF1YWwoMSk7XG5cbiAgICAgIGNvbnN0IGJvb2ttYXJrQWZ0ZXIgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgICAgdmVyaWZ5Qm9va21hcmsoYm9va21hcmtBZnRlcik7XG4gICAgICBleHBlY3QoYm9va21hcmtBZnRlcikubm90LnRvRXF1YWwoYm9va21hcmtCZWZvcmUpO1xuXG4gICAgICBjb3VudE5vZGVzKCdOb2RlJywgJ2lkJywgNDIpLnRoZW4oY291bnQgPT4ge1xuICAgICAgICBleHBlY3QoY291bnQpLnRvRXF1YWwoMSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBjb21taXQgYWxyZWFkeSBjb21taXR0ZWQgcmVhZCB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRQcm9taXNlID0gc2Vzc2lvbi5yZWFkVHJhbnNhY3Rpb24odHggPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdHgucnVuKCdSRVRVUk4gNDIgQVMgYW5zd2VyJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh7cmVzdWx0OiByZXN1bHQsIGJvb2ttYXJrOiBzZXNzaW9uLmxhc3RCb29rbWFyaygpfSk7XG4gICAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXN1bHRQcm9taXNlLnRoZW4ob3V0Y29tZSA9PiB7XG4gICAgICBjb25zdCBib29rbWFyayA9IG91dGNvbWUuYm9va21hcms7XG4gICAgICBjb25zdCByZXN1bHQgPSBvdXRjb21lLnJlc3VsdDtcblxuICAgICAgdmVyaWZ5Qm9va21hcmsoYm9va21hcmspO1xuICAgICAgZXhwZWN0KHNlc3Npb24ubGFzdEJvb2ttYXJrKCkpLnRvRXF1YWwoYm9va21hcmspOyAvLyBleHBlY3QgYm9va21hcmsgdG8gbm90IGNoYW5nZVxuXG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYW5zd2VyJykudG9OdW1iZXIoKSkudG9FcXVhbCg0Mik7XG5cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY29tbWl0IGFscmVhZHkgY29tbWl0dGVkIHdyaXRlIHRyYW5zYWN0aW9uJywgZG9uZSA9PiB7XG4gICAgaWYgKCFzZXJ2ZXJJczMxT3JMYXRlcihkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzZXNzaW9uLnJlYWRUcmFuc2FjdGlvbih0eCA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0eC5ydW4oJ0NSRUFURSAobjpOb2RlIHtpZDogNDJ9KSBSRVRVUk4gbi5pZCBBUyBhbnN3ZXInKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdHguY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHtyZXN1bHQ6IHJlc3VsdCwgYm9va21hcms6IHNlc3Npb24ubGFzdEJvb2ttYXJrKCl9KTtcbiAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJlc3VsdFByb21pc2UudGhlbihvdXRjb21lID0+IHtcbiAgICAgIGNvbnN0IGJvb2ttYXJrID0gb3V0Y29tZS5ib29rbWFyaztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG91dGNvbWUucmVzdWx0O1xuXG4gICAgICB2ZXJpZnlCb29rbWFyayhib29rbWFyayk7XG4gICAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkudG9FcXVhbChib29rbWFyayk7IC8vIGV4cGVjdCBib29rbWFyayB0byBub3QgY2hhbmdlXG5cbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdhbnN3ZXInKS50b051bWJlcigpKS50b0VxdWFsKDQyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuc3VtbWFyeS5jb3VudGVycy5ub2Rlc0NyZWF0ZWQoKSkudG9FcXVhbCgxKTtcblxuICAgICAgY291bnROb2RlcygnTm9kZScsICdpZCcsIDQyKS50aGVuKGNvdW50ID0+IHtcbiAgICAgICAgZXhwZWN0KGNvdW50KS50b0VxdWFsKDEpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY29tbWl0IHJvbGxlZCBiYWNrIHJlYWQgdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcbiAgICBpZiAoIXNlcnZlcklzMzFPckxhdGVyKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuICAgIGNvbnN0IHJlc3VsdFByb21pc2UgPSBzZXNzaW9uLnJlYWRUcmFuc2FjdGlvbih0eCA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICB0eC5ydW4oJ1JFVFVSTiA0MiBBUyBhbnN3ZXInKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdHgucm9sbGJhY2soKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICB9KS5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJlc3VsdFByb21pc2UudGhlbihyZXN1bHQgPT4ge1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2Fuc3dlcicpLnRvTnVtYmVyKCkpLnRvRXF1YWwoNDIpO1xuICAgICAgZXhwZWN0KHNlc3Npb24ubGFzdEJvb2ttYXJrKCkpLnRvQmUoYm9va21hcmtCZWZvcmUpOyAvLyBleHBlY3QgYm9va21hcmsgdG8gbm90IGNoYW5nZVxuXG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGNvbW1pdCByb2xsZWQgYmFjayB3cml0ZSB0cmFuc2FjdGlvbicsIGRvbmUgPT4ge1xuICAgIGlmICghc2VydmVySXMzMU9yTGF0ZXIoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IHNlc3Npb24ucmVhZFRyYW5zYWN0aW9uKHR4ID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHR4LnJ1bignQ1JFQVRFIChuOk5vZGUge2lkOiA0Mn0pIFJFVFVSTiBuLmlkIEFTIGFuc3dlcicpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICB0eC5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiByZWplY3QoZXJyb3IpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0UHJvbWlzZS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnYW5zd2VyJykudG9OdW1iZXIoKSkudG9FcXVhbCg0Mik7XG4gICAgICBleHBlY3QocmVzdWx0LnN1bW1hcnkuY291bnRlcnMubm9kZXNDcmVhdGVkKCkpLnRvRXF1YWwoMSk7XG4gICAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkudG9CZShib29rbWFya0JlZm9yZSk7IC8vIGV4cGVjdCBib29rbWFyayB0byBub3QgY2hhbmdlXG5cbiAgICAgIGNvdW50Tm9kZXMoJ05vZGUnLCAnaWQnLCA0MikudGhlbihjb3VudCA9PiB7XG4gICAgICAgIGV4cGVjdChjb3VudCkudG9FcXVhbCgwKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHNlcnZlcklzMzFPckxhdGVyKGRvbmUpIHtcbiAgICAvLyBsYXp5IHdheSBvZiBjaGVja2luZyB0aGUgdmVyc2lvbiBudW1iZXJcbiAgICAvLyBpZiBzZXJ2ZXIgaGFzIGJlZW4gc2V0IHdlIGtub3cgaXQgaXMgYXQgbGVhc3QgMy4xXG4gICAgaWYgKCFzZXJ2ZXJNZXRhZGF0YSkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvdW50Tm9kZXMobGFiZWwsIHByb3BlcnR5S2V5LCBwcm9wZXJ0eVZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNlc3Npb24ucnVuKGBNQVRDSCAobjogJHtsYWJlbH0geyR7cHJvcGVydHlLZXl9OiAke3Byb3BlcnR5VmFsdWV9fSkgUkVUVVJOIGNvdW50KG4pIEFTIGNvdW50YCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICByZXNvbHZlKHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQnKS50b051bWJlcigpKTtcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IHJlamVjdChlcnJvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gd2l0aFF1ZXJ5SW5UbXBTZXNzaW9uKGRyaXZlciwgY2FsbGJhY2spIHtcbiAgICBjb25zdCB0bXBTZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcbiAgICByZXR1cm4gdG1wU2Vzc2lvbi5ydW4oJ1JFVFVSTiAxJykudGhlbigoKSA9PiB7XG4gICAgICB0bXBTZXNzaW9uLmNsb3NlKGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5ld1Nlc3Npb25XaXRoQ29ubmVjdGlvbihjb25uZWN0aW9uKSB7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gbmV3IFNpbmdsZUNvbm5lY3Rpb25Qcm92aWRlcihQcm9taXNlLnJlc29sdmUoY29ubmVjdGlvbikpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU2Vzc2lvbihSRUFELCBjb25uZWN0aW9uUHJvdmlkZXIpO1xuICAgIHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpOyAvLyBmb3JjZSBzZXNzaW9uIHRvIGFjcXVpcmUgbmV3IGNvbm5lY3Rpb25cbiAgICByZXR1cm4gc2Vzc2lvbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlkbGVDb25uZWN0aW9uQ291bnQoZHJpdmVyKSB7XG4gICAgY29uc3QgY29ubmVjdGlvblByb3ZpZGVyID0gZHJpdmVyLl9jb25uZWN0aW9uUHJvdmlkZXI7XG4gICAgY29uc3QgYWRkcmVzcyA9IGNvbm5lY3Rpb25Qcm92aWRlci5fYWRkcmVzcztcbiAgICBjb25zdCBjb25uZWN0aW9uUG9vbCA9IGNvbm5lY3Rpb25Qcm92aWRlci5fY29ubmVjdGlvblBvb2w7XG4gICAgY29uc3QgaWRsZUNvbm5lY3Rpb25zID0gY29ubmVjdGlvblBvb2wuX3Bvb2xzW2FkZHJlc3NdO1xuICAgIHJldHVybiBpZGxlQ29ubmVjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZnVuY3Rpb24gdmVyaWZ5Qm9va21hcmsoYm9va21hcmspIHtcbiAgICBleHBlY3QoYm9va21hcmspLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KGJvb2ttYXJrKS5ub3QudG9CZU51bGwoKTtcbiAgfVxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBuZW80aiBmcm9tICcuLi8uLi9saWIvdjEnO1xuXG5kZXNjcmliZSgndHJhbnNhY3Rpb24nLCAoKSA9PiB7XG5cbiAgbGV0IGRyaXZlcjtcbiAgbGV0IHNlc3Npb247XG4gIGxldCBzZXJ2ZXI7XG4gIGxldCBvcmlnaW5hbFRpbWVvdXQ7XG5cbiAgYmVmb3JlRWFjaChkb25lID0+IHtcbiAgICAvLyBtYWtlIGphc21pbmUgdGltZW91dCBoaWdoIGVub3VnaCB0byB0ZXN0IHVucmVhY2hhYmxlIGJvb2ttYXJrc1xuICAgIG9yaWdpbmFsVGltZW91dCA9IGphc21pbmUuREVGQVVMVF9USU1FT1VUX0lOVEVSVkFMO1xuICAgIGphc21pbmUuREVGQVVMVF9USU1FT1VUX0lOVEVSVkFMID0gNjAwMDA7XG5cbiAgICBkcml2ZXIgPSBuZW80ai5kcml2ZXIoXCJib2x0Oi8vbG9jYWxob3N0XCIsIG5lbzRqLmF1dGguYmFzaWMoXCJuZW80alwiLCBcIm5lbzRqXCIpKTtcbiAgICBkcml2ZXIub25Db21wbGV0ZWQgPSBtZXRhID0+IHtcbiAgICAgIHNlcnZlciA9IG1ldGFbJ3NlcnZlciddO1xuICAgIH07XG4gICAgc2Vzc2lvbiA9IGRyaXZlci5zZXNzaW9uKCk7XG5cbiAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChuKSBERVRBQ0ggREVMRVRFIG5cIikudGhlbihkb25lKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBqYXNtaW5lLkRFRkFVTFRfVElNRU9VVF9JTlRFUlZBTCA9IG9yaWdpbmFsVGltZW91dDtcbiAgICBkcml2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb21taXQgc2ltcGxlIGNhc2UnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMilcIikudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKHQxOlRYTm9kZTEpLCAodDI6VFhOb2RlMikgUkVUVVJOIGNvdW50KHQxKSwgY291bnQodDIpXCIpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MSknKS50b0ludCgpKS50b0JlKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDIpJykudG9JbnQoKSkudG9CZSgxKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGludGVyYWN0aXZlIHNlc3Npb24nLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlJFVFVSTiAnZm9vJyBBUyByZXNcIikudGhlbihyZXN1bHQgPT4ge1xuICAgICAgdHgucnVuKFwiQ1JFQVRFICh7bmFtZToge3BhcmFtfX0pXCIsIHtwYXJhbTogcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdyZXMnKX0pLnRoZW4oKCkgPT4ge1xuICAgICAgICB0eC5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBzZXNzaW9uLnJ1bihcIk1BVENIIChhIHtuYW1lOidmb28nfSkgUkVUVVJOIGNvdW50KGEpXCIpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudChhKScpLnRvSW50KCkpLnRvQmUoMSk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmVzIHdpdGggc3Vic2NyaWJlJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oJ1RISVMgSVMgTk9UIENZUEhFUicpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBleHBlY3QoZXJyb3IuY29kZSkudG9FcXVhbCgnTmVvLkNsaWVudEVycm9yLlN0YXRlbWVudC5TeW50YXhFcnJvcicpO1xuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGFuZGxlIGZhaWx1cmVzIHdpdGggY2F0Y2gnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bignVEhJUyBJUyBOT1QgQ1lQSEVSJylcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBvbkVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvRXF1YWwoJ05lby5DbGllbnRFcnJvci5TdGF0ZW1lbnQuU3ludGF4RXJyb3InKTtcbiAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhbmRsZSBmYWlsdXJlcyBvbiBjb21taXQnLCBkb25lID0+IHtcbiAgICAvLyBXaGVuXG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKS5jYXRjaChzdGF0ZW1lbnRFcnJvciA9PiB7XG4gICAgICAgIGV4cGVjdFN5bnRheEVycm9yKHN0YXRlbWVudEVycm9yKTtcblxuICAgICAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUyKVwiKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgdHguY29tbWl0KCkuY2F0Y2goY29tbWl0RXJyb3IgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KGNvbW1pdEVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBjb21taXR0aW5nIG9uIGEgZmFpbGVkIHF1ZXJ5JywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHR4LmNvbW1pdCgpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgd2hlbiBjb21taXR0aW5nIHdoZW4gYW5vdGhlciBzdGF0ZW1lbnQgZmFpbHMnLCBkb25lID0+IHtcbiAgICAvLyBXaGVuXG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0eC5jb21taXQoKVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBleHBlY3QoZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYW5kbGUgcm9sbGJhY2tzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTIpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0eC5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHNlc3Npb24ucnVuKFwiTUFUQ0ggKHQxOlRYTm9kZTEpLCAodDI6VFhOb2RlMikgUkVUVVJOIGNvdW50KHQxKSwgY291bnQodDIpXCIpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdjb3VudCh0MSknKS50b0ludCgpKS50b0JlKDApO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgnY291bnQodDIpJykudG9JbnQoKSkudG9CZSgwKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIGNvbW1pdHRpbmcgb24gYSByb2xsZWQgYmFjayBxdWVyeScsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMSlcIikudGhlbigoKSA9PiB7XG4gICAgICB0eC5yb2xsYmFjaygpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0eC5jb21taXQoKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgZXhwZWN0KGVycm9yLmVycm9yKS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBydW5uaW5nIG9uIGEgcm9sbGVkIGJhY2sgdHJhbnNhY3Rpb24nLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucm9sbGJhY2soKS50aGVuKCgpID0+IHtcbiAgICAgICAgdHgucnVuKFwiUkVUVVJOIDQyXCIpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICBleHBlY3QoZXJyb3IuZXJyb3IpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB3aGVuIHJ1bm5pbmcgd2hlbiBhIHByZXZpb3VzIHN0YXRlbWVudCBmYWlsZWQnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihcIlRISVMgSVMgTk9UIENZUEhFUlwiKVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdHgucnVuKFwiUkVUVVJOIDQyXCIpXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChlcnJvci5lcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgdHgucm9sbGJhY2soKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gdHJ5aW5nIHRvIHJvbGwgYmFjayBhIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9uJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eC5ydW4oXCJDUkVBVEUgKDpUWE5vZGUxKVwiKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LnJvbGxiYWNrKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LnJvbGxiYWNrKCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGV4cGVjdChlcnJvci5lcnJvcikudG9CZURlZmluZWQoKTtcbiAgICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwcm92aWRlIGJvb2ttYXJrIG9uIGNvbW1pdCcsIGRvbmUgPT4ge1xuICAgIGlmIChuZW80alZlcnNpb25PbGRlclRoYW4zMShkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgZXhwZWN0KHNlc3Npb24ubGFzdEJvb2ttYXJrKCkpLm5vdC50b0JlRGVmaW5lZCgpO1xuICAgIHR4LnJ1bihcIkNSRUFURSAoOlRYTm9kZTEpXCIpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgucnVuKFwiQ1JFQVRFICg6VFhOb2RlMilcIikudGhlbigoKSA9PiB7XG4gICAgICAgIHR4LmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGV4cGVjdFZhbGlkTGFzdEJvb2ttYXJrKHNlc3Npb24pO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KS5jYXRjaChjb25zb2xlLmxvZyk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhdmUgYm9va21hcmsgd2hlbiB0eCBpcyByb2xsZWQgYmFjaycsIGRvbmUgPT4ge1xuICAgIGlmIChuZW80alZlcnNpb25PbGRlclRoYW4zMShkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV4cGVjdChzZXNzaW9uLmxhc3RCb29rbWFyaygpKS5ub3QudG9CZURlZmluZWQoKTtcbiAgICBjb25zdCB0eDEgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIHR4MS5ydW4oJ0NSRUFURSAoKScpLnRoZW4oKCkgPT4ge1xuICAgICAgdHgxLmNvbW1pdCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBleHBlY3RWYWxpZExhc3RCb29rbWFyayhzZXNzaW9uKTtcbiAgICAgICAgY29uc3QgYm9va21hcmtCZWZvcmUgPSBzZXNzaW9uLmxhc3RCb29rbWFyaygpO1xuXG4gICAgICAgIGNvbnN0IHR4MiA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgICB0eDIucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0eDIucm9sbGJhY2soKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGV4cGVjdFZhbGlkTGFzdEJvb2ttYXJrKHNlc3Npb24pO1xuICAgICAgICAgICAgY29uc3QgYm9va21hcmtBZnRlciA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG4gICAgICAgICAgICBleHBlY3QoYm9va21hcmtBZnRlcikudG9FcXVhbChib29rbWFya0JlZm9yZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHR4MyA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgICAgICAgICAgdHgzLnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHR4My5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBleHBlY3RWYWxpZExhc3RCb29rbWFyayhzZXNzaW9uKTtcbiAgICAgICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBubyBib29rbWFyayB3aGVuIHR4IGZhaWxzJywgZG9uZSA9PiB7XG4gICAgaWYgKG5lbzRqVmVyc2lvbk9sZGVyVGhhbjMxKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXhwZWN0KHNlc3Npb24ubGFzdEJvb2ttYXJrKCkpLm5vdC50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IHR4MSA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgdHgxLnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICB0eDEuY29tbWl0KCkudGhlbigoKSA9PiB7XG4gICAgICAgIGV4cGVjdFZhbGlkTGFzdEJvb2ttYXJrKHNlc3Npb24pO1xuICAgICAgICBjb25zdCBib29rbWFya0JlZm9yZSA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCk7XG5cbiAgICAgICAgY29uc3QgdHgyID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG5cbiAgICAgICAgdHgyLnJ1bignUkVUVVJOJykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGV4cGVjdFN5bnRheEVycm9yKGVycm9yKTtcbiAgICAgICAgICBjb25zdCBib29rbWFya0FmdGVyID0gc2Vzc2lvbi5sYXN0Qm9va21hcmsoKTtcbiAgICAgICAgICBleHBlY3QoYm9va21hcmtBZnRlcikudG9FcXVhbChib29rbWFya0JlZm9yZSk7XG5cbiAgICAgICAgICBjb25zdCB0eDMgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgICB0eDMucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHR4My5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgZXhwZWN0VmFsaWRMYXN0Qm9va21hcmsoc2Vzc2lvbik7XG4gICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgZm9yIGludmFsaWQgYm9va21hcmsnLCBkb25lID0+IHtcbiAgICBpZiAobmVvNGpWZXJzaW9uT2xkZXJUaGFuMzEoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbnZhbGlkQm9va21hcmsgPSAnaGksIHRoaXMgaXMgYW4gaW52YWxpZCBib29rbWFyayc7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oaW52YWxpZEJvb2ttYXJrKTtcbiAgICB0eC5ydW4oJ1JFVFVSTiAxJykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvQmUoJ05lby5DbGllbnRFcnJvci5UcmFuc2FjdGlvbi5JbnZhbGlkQm9va21hcmsnKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJ1biBxdWVyeSBmb3IgdW5yZWFjaGFibGUgYm9va21hcmsnLCBkb25lID0+IHtcbiAgICBpZiAobmVvNGpWZXJzaW9uT2xkZXJUaGFuMzEoZG9uZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eDEgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eDEucnVuKCdDUkVBVEUgKCknKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICBleHBlY3QocmVzdWx0LnN1bW1hcnkuY291bnRlcnMubm9kZXNDcmVhdGVkKCkpLnRvQmUoMSk7XG5cbiAgICAgIHR4MS5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgZXhwZWN0VmFsaWRMYXN0Qm9va21hcmsoc2Vzc2lvbik7XG5cbiAgICAgICAgY29uc3QgdW5yZWFjaGFibGVCb29rbWFyayA9IHNlc3Npb24ubGFzdEJvb2ttYXJrKCkgKyBcIjBcIjtcbiAgICAgICAgY29uc3QgdHgyID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKHVucmVhY2hhYmxlQm9va21hcmspO1xuICAgICAgICB0eDIucnVuKCdDUkVBVEUgKCknKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBtZXNzYWdlLmluZGV4T2YoJ0RhdGFiYXNlIG5vdCB1cCB0byB0aGUgcmVxdWVzdGVkIHZlcnNpb24nKSA9PT0gMDtcbiAgICAgICAgICBleHBlY3QoZXhwZWN0ZWRQcmVmaXgpLnRvQmVUcnV0aHkoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByb2xsYmFjayB3aGVuIHZlcnkgZmlyc3QgcnVuIGZhaWxzJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHgxID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgdHgxLnJ1bignUkVUVVJOIGZvbycpLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGV4cGVjdFN5bnRheEVycm9yKGVycm9yKTtcblxuICAgICAgY29uc3QgdHgyID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICB0eDIucnVuKCdSRVRVUk4gMScpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdLmdldCgwKS50b051bWJlcigpKS50b0VxdWFsKDEpO1xuICAgICAgICB0eDIuY29tbWl0KCkudGhlbihkb25lKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJvbGxiYWNrIHdoZW4gc29tZSBydW4gZmFpbHMnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eDEgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eDEucnVuKCdDUkVBVEUgKDpQZXJzb24pJykudGhlbigoKSA9PiB7XG4gICAgICB0eDEucnVuKCdSRVRVUk4gZm9vJykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBleHBlY3RTeW50YXhFcnJvcihlcnJvcik7XG5cbiAgICAgICAgY29uc3QgdHgyID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHR4Mi5ydW4oJ01BVENIIChuOlBlcnNvbikgUkVUVVJOIGNvdW50KG4pJykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoMCkudG9OdW1iZXIoKSkudG9FcXVhbCgwKTtcbiAgICAgICAgICB0eDIuY29tbWl0KCkudGhlbihkb25lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIGNvbW1pdCB0cmFuc2FjdGlvbiB0aGF0IGhhZCBydW4gZmFpbHVyZXMnLCBkb25lID0+IHtcbiAgICBjb25zdCB0eDEgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICB0eDEucnVuKCdDUkVBVEUgKDpQZXJzb24pJykudGhlbigoKSA9PiB7XG4gICAgICB0eDEucnVuKCdSRVRVUk4gZm9vJykuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBleHBlY3RTeW50YXhFcnJvcihlcnJvcik7XG4gICAgICAgIHR4MS5jb21taXQoKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBlcnJvck1lc3NhZ2UuaW5kZXhPZignQ2Fubm90IGNvbW1pdCBzdGF0ZW1lbnRzIGluIHRoaXMgdHJhbnNhY3Rpb24nKTtcbiAgICAgICAgICBleHBlY3QoaW5kZXgpLm5vdC50b0JlTGVzc1RoYW4oMCk7XG5cbiAgICAgICAgICBjb25zdCB0eDIgPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICAgICAgICB0eDIucnVuKCdNQVRDSCAobjpQZXJzb24pIFJFVFVSTiBjb3VudChuKScpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoMCkudG9OdW1iZXIoKSkudG9FcXVhbCgwKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBleHBvc2Ugc2VydmVyIGluZm8gb24gc3VjY2Vzc2Z1bCBxdWVyeScsIGRvbmUgPT4ge1xuICAgIGlmIChuZW80alZlcnNpb25PbGRlclRoYW4zMShkb25lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXRlbWVudCA9ICdSRVRVUk4gMSc7XG5cbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihzdGF0ZW1lbnQpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGNvbnN0IHN1bSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgICAgZXhwZWN0KHN1bS5zZXJ2ZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3VtLnNlcnZlci5hZGRyZXNzKS50b0VxdWFsKCdsb2NhbGhvc3Q6NzY4NycpO1xuICAgICAgZXhwZWN0KHN1bS5zZXJ2ZXIudmVyc2lvbikudG9CZURlZmluZWQoKTtcbiAgICAgIHR4LmNvbW1pdCgpLnRoZW4oZG9uZSk7XG4gICAgfSkuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGV4cG9zZSBzZXJ2ZXIgaW5mbyBvbiBzdWNjZXNzZnVsIHF1ZXJ5IHVzaW5nIG9ic2VydmVyJywgZG9uZSA9PiB7XG4gICAgaWYgKG5lbzRqVmVyc2lvbk9sZGVyVGhhbjMxKGRvbmUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gR2l2ZW5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSAnUkVUVVJOIDEnO1xuXG4gICAgLy8gV2hlbiAmIFRoZW5cbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIHR4LnJ1bihzdGF0ZW1lbnQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgb25OZXh0OiByZWNvcmQgPT4ge1xuICAgICAgICB9LFxuICAgICAgICBvbkVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGVkOiBzdW1tYXJ5ID0+IHtcbiAgICAgICAgICBjb25zdCBzZXJ2ZXIgPSBzdW1tYXJ5LnNlcnZlcjtcblxuICAgICAgICAgIGV4cGVjdChzZXJ2ZXIpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgZXhwZWN0KHNlcnZlci5hZGRyZXNzKS50b0VxdWFsKCdsb2NhbGhvc3Q6NzY4NycpO1xuICAgICAgICAgIGV4cGVjdChzZXJ2ZXIudmVyc2lvbikudG9CZURlZmluZWQoKTtcblxuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCBuaWNlbHkgZm9yIGlsbGVnYWwgc3RhdGVtZW50JywgKCkgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG5cbiAgICBleHBlY3QoKCkgPT4gdHgucnVuKCkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiB0eC5ydW4obnVsbCkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiB0eC5ydW4oe30pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gdHgucnVuKDQyKSkudG9UaHJvd0Vycm9yKFR5cGVFcnJvcik7XG4gICAgZXhwZWN0KCgpID0+IHR4LnJ1bihbXSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICAgIGV4cGVjdCgoKSA9PiB0eC5ydW4oWydDUkVBVEUgKCknXSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuXG4gICAgZXhwZWN0KCgpID0+IHR4LnJ1bih7c3RhdGVtZW50OiAnQ1JFQVRFICgpJ30pKS50b1Rocm93RXJyb3IoVHlwZUVycm9yKTtcbiAgICBleHBlY3QoKCkgPT4gdHgucnVuKHtjeXBoZXI6ICdDUkVBVEUgKCknfSkpLnRvVGhyb3dFcnJvcihUeXBlRXJyb3IpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjY2VwdCBhIHN0YXRlbWVudCBvYmplY3QgJywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB7dGV4dDogXCJSRVRVUk4gMSBBUyBhXCJ9O1xuXG4gICAgdHgucnVuKHN0YXRlbWVudCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXS5nZXQoJ2EnKS50b0ludCgpKS50b0JlKDEpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pLmNhdGNoKGNvbnNvbGUubG9nKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBvcGVuIHdoZW4gbmVpdGhlciBjb21taXR0ZWQgbm9yIHJvbGxlZCBiYWNrJywgKCkgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG4gICAgZXhwZWN0KHR4LmlzT3BlbigpKS50b0JlVHJ1dGh5KCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGJlIG9wZW4gYWZ0ZXIgY29tbWl0JywgZG9uZSA9PiB7XG4gICAgY29uc3QgdHggPSBzZXNzaW9uLmJlZ2luVHJhbnNhY3Rpb24oKTtcblxuICAgIHR4LnJ1bignQ1JFQVRFICgpJykudGhlbigoKSA9PiB7XG4gICAgICB0eC5jb21taXQoKS50aGVuKCgpID0+IHtcbiAgICAgICAgZXhwZWN0KHR4LmlzT3BlbigpKS50b0JlRmFsc3koKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGJlIG9wZW4gYWZ0ZXIgcm9sbGJhY2snLCBkb25lID0+IHtcbiAgICBjb25zdCB0eCA9IHNlc3Npb24uYmVnaW5UcmFuc2FjdGlvbigpO1xuXG4gICAgdHgucnVuKCdDUkVBVEUgKCknKS50aGVuKCgpID0+IHtcbiAgICAgIHR4LnJvbGxiYWNrKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGV4cGVjdCh0eC5pc09wZW4oKSkudG9CZUZhbHN5KCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBiZSBvcGVuIGFmdGVyIHJ1biBlcnJvcicsIGRvbmUgPT4ge1xuICAgIGNvbnN0IHR4ID0gc2Vzc2lvbi5iZWdpblRyYW5zYWN0aW9uKCk7XG5cbiAgICB0eC5ydW4oJ1JFVFVSTicpLmNhdGNoKCgpID0+IHtcbiAgICAgIGV4cGVjdCh0eC5pc09wZW4oKSkudG9CZUZhbHN5KCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGV4cGVjdFN5bnRheEVycm9yKGVycm9yKSB7XG4gICAgZXhwZWN0KGVycm9yLmNvZGUpLnRvQmUoJ05lby5DbGllbnRFcnJvci5TdGF0ZW1lbnQuU3ludGF4RXJyb3InKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGVjdFZhbGlkTGFzdEJvb2ttYXJrKHNlc3Npb24pIHtcbiAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3Qoc2Vzc2lvbi5sYXN0Qm9va21hcmsoKSkubm90LnRvQmVOdWxsKCk7XG4gIH1cblxuICBmdW5jdGlvbiBuZW80alZlcnNpb25PbGRlclRoYW4zMShkb25lKSB7XG4gICAgLy9sYXp5IHdheSBvZiBjaGVja2luZyB0aGUgdmVyc2lvbiBudW1iZXJcbiAgICAvL2lmIHNlcnZlciBoYXMgYmVlbiBzZXQgd2Uga25vdyBpdCBpcyBhdCBsZWFzdFxuICAgIC8vMy4xICh0b2RvIGFjdHVhbGx5IHBhcnNlIHRoZSB2ZXJzaW9uIHN0cmluZylcbiAgICBpZiAoIXNlcnZlcikge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufSk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAwMi0yMDE3IFwiTmVvIFRlY2hub2xvZ3ksXCIsXCJcbiAqIE5ldHdvcmsgRW5naW5lIGZvciBPYmplY3RzIGluIEx1bmQgQUIgW2h0dHA6Ly9uZW90ZWNobm9sb2d5LmNvbV1cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBOZW80ai5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxudmFyIG5lbzRqID0gcmVxdWlyZShcIi4uLy4uL2xpYi92MVwiKTtcblxuZGVzY3JpYmUoJ2Zsb2F0aW5nIHBvaW50IHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgMS4wICcsIHRlc3RWYWwoIDEgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgZmxvYXQgMC4wICcsIHRlc3RWYWwoIDAuMCApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBwcmV0dHkgYmlnIGZsb2F0ICcsIHRlc3RWYWwoIDMuNDAyODIzNWUrMzggKSApOyAvLyBNYXggMzItYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZWFsbHkgYmlnIGZsb2F0ICcsIHRlc3RWYWwoIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4ICkgKTsgLy8gTWF4IDY0LWJpdFxuICBpdCgnc2hvdWxkIHN1cHBvcnQgcHJldHR5IHNtYWxsIGZsb2F0ICcsIHRlc3RWYWwoIDEuNGUtNDUgKSApOyAvLyBNaW4gMzItYml0XG4gIGl0KCdzaG91bGQgc3VwcG9ydCByZWFsbHkgc21hbGwgZmxvYXQgJywgdGVzdFZhbCggNC45ZS0zMjQgKSApOyAvLyBNaW4gNjQtYml0XG59KTtcblxuZGVzY3JpYmUoJ2ludGVnZXIgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBpbnRlZ2VyIDEgJywgdGVzdFZhbCggbmVvNGouaW50KDEpICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgMCAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoMCkgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciAtMSAnLCB0ZXN0VmFsKCBuZW80ai5pbnQoLTEpICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGludGVnZXIgbGFyZ2VyIHRoYW4gSlMgTnVtYmVycyBjYW4gbW9kZWwnLCB0ZXN0VmFsKCBuZW80ai5pbnQoXCIweDdmZmZmZmZmZmZmZmZmZmZcIikgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgaW50ZWdlciBzbWFsbGVyIHRoYW4gSlMgTnVtYmVycyBjYW4gbW9kZWwnLCB0ZXN0VmFsKCBuZW80ai5pbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIikgKSApO1xufSk7XG5cbmRlc2NyaWJlKCdib29sZWFuIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgdHJ1ZSAnLCAgdGVzdFZhbCggdHJ1ZSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBmYWxzZSAnLCB0ZXN0VmFsKCBmYWxzZSApICk7XG59KTtcblxuZGVzY3JpYmUoJ3N0cmluZyB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IHN0cmluZyAnLCAgIHRlc3RWYWwoIFwiXCIgKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgc2ltcGxlIHN0cmluZyAnLCAgdGVzdFZhbCggXCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGF3ZXNvbWUgc3RyaW5nICcsIHRlc3RWYWwoIFwiQWxsIG1ha3Qgw6V0IFRlbmdpbCwgdsOlciBiZWZyaWFyZS5cIiApICk7XG59KTtcblxuZGVzY3JpYmUoJ2xpc3QgdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBlbXB0eSBsaXN0cyAnLCAgIHRlc3RWYWwoIFtdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHNwYXJzZSBsaXN0cyAnLCAgIHRlc3RWYWwoIFsgdW5kZWZpbmVkLCA0IF0sIFsgbnVsbCwgNCBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGZsb2F0IGxpc3RzICcsICAgdGVzdFZhbCggWyAxLDIsMyBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGJvb2xlYW4gbGlzdHMgJywgdGVzdFZhbCggWyB0cnVlLCBmYWxzZSBdICkgKTtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHN0cmluZyBsaXN0cyAnLCAgdGVzdFZhbCggWyBcIlwiLCBcImhlbGxvIVwiIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgbGlzdCBsaXN0cyAnLCAgICB0ZXN0VmFsKCBbIFtdLCBbMSwyLDNdIF0gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgbWFwIGxpc3RzICcsICAgICB0ZXN0VmFsKCBbIHt9LCB7YToxMn0gXSApICk7XG59KTtcblxuZGVzY3JpYmUoJ21hcCB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IGVtcHR5IG1hcHMgJywgdGVzdFZhbCgge30gKSApO1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgYmFzaWMgbWFwcyAnLCB0ZXN0VmFsKCB7YToxLCBiOnt9LCBjOltdLCBkOntlOjF9fSApICk7XG4gIGl0KCdzaG91bGQgc3VwcG9ydCBzcGFyc2UgbWFwcyAnLCB0ZXN0VmFsKCB7Zm9vOiB1bmRlZmluZWQsIGJhcjogbnVsbH0sIHtiYXI6IG51bGx9ICkgKTtcbn0pO1xuXG5kZXNjcmliZSgnbm9kZSB2YWx1ZXMnLCBmdW5jdGlvbigpIHtcbiAgaXQoJ3Nob3VsZCBzdXBwb3J0IHJldHVybmluZyBub2RlcyAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFIChuOlVzZXIge25hbWU6J0xpc2EnfSkgUkVUVVJOIG4sIGlkKG4pXCIpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgIHZhciBub2RlID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCduJyk7XG5cbiAgICAgICAgZXhwZWN0KCBub2RlLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IG5hbWU6XCJMaXNhXCIgfSApO1xuICAgICAgICBleHBlY3QoIG5vZGUubGFiZWxzICkudG9FcXVhbCggW1wiVXNlclwiXSApO1xuICAgICAgICAvLyBleHBlY3QoIG5vZGUuaWRlbnRpdHkgKS50b0VxdWFsKCByc1swXVsnaWQobiknXSApOyAvLyBUT0RPXG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG5cbiAgICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncmVsYXRpb25zaGlwIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIHJlbGF0aW9uc2hpcHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gR2l2ZW5cbiAgICB2YXIgZHJpdmVyID0gbmVvNGouZHJpdmVyKFwiYm9sdDovL2xvY2FsaG9zdFwiLCBuZW80ai5hdXRoLmJhc2ljKFwibmVvNGpcIiwgXCJuZW80alwiKSk7XG4gICAgdmFyIHNlc3Npb24gPSBkcml2ZXIuc2Vzc2lvbigpO1xuXG4gICAgLy8gV2hlblxuICAgIHNlc3Npb24ucnVuKFwiQ1JFQVRFICgpLVtyOlVzZXIge25hbWU6J0xpc2EnfV0tPigpIFJFVFVSTiByLCBpZChyKVwiKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICB2YXIgcmVsID0gcmVzdWx0LnJlY29yZHNbMF0uZ2V0KCdyJyk7XG5cbiAgICAgICAgZXhwZWN0KCByZWwucHJvcGVydGllcyApLnRvRXF1YWwoIHsgbmFtZTpcIkxpc2FcIiB9ICk7XG4gICAgICAgIGV4cGVjdCggcmVsLnR5cGUgKS50b0VxdWFsKCBcIlVzZXJcIiApO1xuICAgICAgICAvLyBleHBlY3QoIHJlbC5pZGVudGl0eSApLnRvRXF1YWwoIHJzWzBdWydpZChyKSddICk7IC8vIFRPRE9cbiAgICAgICAgZHJpdmVyLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcblxuICAgICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdwYXRoIHZhbHVlcycsIGZ1bmN0aW9uKCkge1xuICBpdCgnc2hvdWxkIHN1cHBvcnQgcmV0dXJuaW5nIHBhdGhzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vIEdpdmVuXG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIC8vIFdoZW5cbiAgICBzZXNzaW9uLnJ1bihcIkNSRUFURSBwPSg6VXNlciB7IG5hbWU6J0xpc2EnIH0pPC1bcjpLTk9XUyB7c2luY2U6MTIzNC4wfV0tKCkgUkVUVVJOIHBcIilcbiAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICB2YXIgcGF0aCA9IHJlc3VsdC5yZWNvcmRzWzBdLmdldCgncCcpO1xuXG4gICAgICAgIGV4cGVjdCggcGF0aC5zdGFydC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgZXhwZWN0KCBwYXRoLmVuZC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyB9ICk7XG5cbiAgICAgICAgLy8gQWNjZXNzaW5nIHBhdGggc2VnbWVudHNcbiAgICAgICAgZXhwZWN0KCBwYXRoLmxlbmd0aCApLnRvRXF1YWwoIDEgKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIHNlZ21lbnQgPSBwYXRoLnNlZ21lbnRzW2ldO1xuICAgICAgICAgIC8vIFRoZSBkaXJlY3Rpb24gb2YgdGhlIHBhdGggc2VnbWVudCBnb2VzIGZyb20gbGlzYSB0byB0aGUgYmxhbmsgbm9kZVxuICAgICAgICAgIGV4cGVjdCggc2VnbWVudC5zdGFydC5wcm9wZXJ0aWVzICkudG9FcXVhbCggeyBuYW1lOlwiTGlzYVwiIH0gKTtcbiAgICAgICAgICBleHBlY3QoIHNlZ21lbnQuZW5kLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IH0gKTtcbiAgICAgICAgICAvLyBXaGljaCBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgcmVsYXRpb25zaGlwIGl0c2VsZiFcbiAgICAgICAgICBleHBlY3QoIHNlZ21lbnQucmVsYXRpb25zaGlwLnByb3BlcnRpZXMgKS50b0VxdWFsKCB7IHNpbmNlOiAxMjM0IH0gKTtcbiAgICAgICAgfVxuICAgICAgICBkcml2ZXIuY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyKSB7IGNvbnNvbGUubG9nKGVycik7IH0pO1xuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiB0ZXN0VmFsKCB2YWwsIGV4cGVjdGVkICkge1xuICByZXR1cm4gZnVuY3Rpb24oIGRvbmUgKSB7XG4gICAgdmFyIGRyaXZlciA9IG5lbzRqLmRyaXZlcihcImJvbHQ6Ly9sb2NhbGhvc3RcIiwgbmVvNGouYXV0aC5iYXNpYyhcIm5lbzRqXCIsIFwibmVvNGpcIikpO1xuICAgIHZhciBzZXNzaW9uID0gZHJpdmVyLnNlc3Npb24oKTtcblxuICAgIHNlc3Npb24ucnVuKFwiUkVUVVJOIHt2YWx9IGFzIHZcIiwge3ZhbDogdmFsfSlcbiAgICAgIC50aGVuKCBmdW5jdGlvbiggcmVzdWx0ICkge1xuICAgICAgICBleHBlY3QoIHJlc3VsdC5yZWNvcmRzWzBdLmdldCgndicpICkudG9FcXVhbCggZXhwZWN0ZWQgfHwgdmFsICk7XG4gICAgICAgIGRyaXZlci5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsgY29uc29sZS5sb2coZXJyKTsgfSk7XG4gIH1cbn1cbiJdfQ== diff --git a/lib/v1/session.js b/lib/v1/session.js index 80260fdf2..af2bc3b6b 100644 --- a/lib/v1/session.js +++ b/lib/v1/session.js @@ -213,7 +213,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails. @@ -233,7 +233,7 @@ var Session = function () { * delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's * maxTransactionRetryTime property in milliseconds. * - * @param {function(Transaction)} transactionWork - callback that executes operations against + * @param {function(tx: Transaction): Promise} transactionWork - callback that executes operations against * a given {@link Transaction}. * @return {Promise} resolved promise as returned by the given function or rejected promise when given * function or commit fails.