diff --git a/Gruntfile.js b/Gruntfile.js index 59d4dc3a2..adc5e7545 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -26,7 +26,7 @@ module.exports = function(grunt) { tasks: ['markdown'] }, scripts: { - files: ['**/*.js', '**/*.html', '!**/node_modules/**', '!browser/bundle.js', '!browser/testdata.js', '!browser/vendor-bundle.js', '!docs/**', '!*.md', '!README.html', '!CONTRIBUTING.html'], + files: ['**/*.js', '**/*.html', '!**/node_modules/**', '!browser/bundle.js', '!browser/testdata.js', '!docs/**', '!*.md', '!README.html', '!CONTRIBUTING.html'], tasks: ['shell'], }, }, diff --git a/browser/build.js b/browser/build.js index ffd62b94d..5c8fb635a 100644 --- a/browser/build.js +++ b/browser/build.js @@ -63,12 +63,6 @@ var createBitcore = function(opts) { opts.dir = opts.dir || ''; - // concat browser vendor files - var cwd = process.cwd(); - process.chdir(opts.dir + 'browser'); - exec('sh concat.sh', puts); - process.chdir(cwd); - if (!opts.includeall && !opts.includemain && (!opts.submodules || opts.submodules.length === 0)) { if (!opts.stdout) console.log('Must use either -s or -a or -m option. For more info use the --help option'); process.exit(1); diff --git a/browser/concat.sh b/browser/concat.sh deleted file mode 100755 index f747c6684..000000000 --- a/browser/concat.sh +++ /dev/null @@ -1,7 +0,0 @@ -#! /bin/bash - -cd vendor/ -cat browser-adapter.js crypto-2.0.js crypto-3.1.js jsbn.js jsbn2.js prng4.js util.js rng.js ec.js sec.js ecdsa.js eckey.js > vendor-bundle.js -mv vendor-bundle.js ../ -cd ../ - diff --git a/browser/testdata.js b/browser/testdata.js index e69de29bb..6d9b485a0 100644 --- a/browser/testdata.js +++ b/browser/testdata.js @@ -0,0 +1,1366 @@ +require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + * @license MIT + */ + +var base64 = require('base64-js') +var ieee754 = require('ieee754') + +exports.Buffer = Buffer +exports.SlowBuffer = Buffer +exports.INSPECT_MAX_BYTES = 50 +Buffer.poolSize = 8192 + +/** + * If `Buffer._useTypedArrays`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (compatible down to IE6) + */ +Buffer._useTypedArrays = (function () { + // Detect if browser supports Typed Arrays. Supported browsers are IE 10+, Firefox 4+, + // Chrome 7+, Safari 5.1+, Opera 11.6+, iOS 4.2+. If the browser does not support adding + // properties to `Uint8Array` instances, then that's the same as no `Uint8Array` support + // because we need to be able to add all the node Buffer API methods. This is an issue + // in Firefox 4-29. Now fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=695438 + try { + var buf = new ArrayBuffer(0) + var arr = new Uint8Array(buf) + arr.foo = function () { return 42 } + return 42 === arr.foo() && + typeof arr.subarray === 'function' // Chrome 9-10 lack `subarray` + } catch (e) { + return false + } +})() + +/** + * Class: Buffer + * ============= + * + * The Buffer constructor returns instances of `Uint8Array` that are augmented + * with function properties for all the node `Buffer` API functions. We use + * `Uint8Array` so that square bracket notation works as expected -- it returns + * a single octet. + * + * By augmenting the instances, we can avoid modifying the `Uint8Array` + * prototype. + */ +function Buffer (subject, encoding, noZero) { + if (!(this instanceof Buffer)) + return new Buffer(subject, encoding, noZero) + + var type = typeof subject + + // Workaround: node's base64 implementation allows for non-padded strings + // while base64-js does not. + if (encoding === 'base64' && type === 'string') { + subject = stringtrim(subject) + while (subject.length % 4 !== 0) { + subject = subject + '=' + } + } + + // Find the length + var length + if (type === 'number') + length = coerce(subject) + else if (type === 'string') + length = Buffer.byteLength(subject, encoding) + else if (type === 'object') + length = coerce(subject.length) // assume that object is array-like + else + throw new Error('First argument needs to be a number, array or string.') + + var buf + if (Buffer._useTypedArrays) { + // Preferred: Return an augmented `Uint8Array` instance for best performance + buf = Buffer._augment(new Uint8Array(length)) + } else { + // Fallback: Return THIS instance of Buffer (created by `new`) + buf = this + buf.length = length + buf._isBuffer = true + } + + var i + if (Buffer._useTypedArrays && typeof subject.byteLength === 'number') { + // Speed optimization -- use set if we're copying from a typed array + buf._set(subject) + } else if (isArrayish(subject)) { + // Treat array-ish objects as a byte array + for (i = 0; i < length; i++) { + if (Buffer.isBuffer(subject)) + buf[i] = subject.readUInt8(i) + else + buf[i] = subject[i] + } + } else if (type === 'string') { + buf.write(subject, 0, encoding) + } else if (type === 'number' && !Buffer._useTypedArrays && !noZero) { + for (i = 0; i < length; i++) { + buf[i] = 0 + } + } + + return buf +} + +// STATIC METHODS +// ============== + +Buffer.isEncoding = function (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'binary': + case 'base64': + case 'raw': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.isBuffer = function (b) { + return !!(b !== null && b !== undefined && b._isBuffer) +} + +Buffer.byteLength = function (str, encoding) { + var ret + str = str + '' + switch (encoding || 'utf8') { + case 'hex': + ret = str.length / 2 + break + case 'utf8': + case 'utf-8': + ret = utf8ToBytes(str).length + break + case 'ascii': + case 'binary': + case 'raw': + ret = str.length + break + case 'base64': + ret = base64ToBytes(str).length + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = str.length * 2 + break + default: + throw new Error('Unknown encoding') + } + return ret +} + +Buffer.concat = function (list, totalLength) { + assert(isArray(list), 'Usage: Buffer.concat(list, [totalLength])\n' + + 'list should be an Array.') + + if (list.length === 0) { + return new Buffer(0) + } else if (list.length === 1) { + return list[0] + } + + var i + if (typeof totalLength !== 'number') { + totalLength = 0 + for (i = 0; i < list.length; i++) { + totalLength += list[i].length + } + } + + var buf = new Buffer(totalLength) + var pos = 0 + for (i = 0; i < list.length; i++) { + var item = list[i] + item.copy(buf, pos) + pos += item.length + } + return buf +} + +// BUFFER INSTANCE METHODS +// ======================= + +function _hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + assert(strLen % 2 === 0, 'Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; i++) { + var byte = parseInt(string.substr(i * 2, 2), 16) + assert(!isNaN(byte), 'Invalid hex string') + buf[offset + i] = byte + } + Buffer._charsWritten = i * 2 + return i +} + +function _utf8Write (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(utf8ToBytes(string), buf, offset, length) + return charsWritten +} + +function _asciiWrite (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(asciiToBytes(string), buf, offset, length) + return charsWritten +} + +function _binaryWrite (buf, string, offset, length) { + return _asciiWrite(buf, string, offset, length) +} + +function _base64Write (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(base64ToBytes(string), buf, offset, length) + return charsWritten +} + +function _utf16leWrite (buf, string, offset, length) { + var charsWritten = Buffer._charsWritten = + blitBuffer(utf16leToBytes(string), buf, offset, length) + return charsWritten +} + +Buffer.prototype.write = function (string, offset, length, encoding) { + // Support both (string, offset, length, encoding) + // and the legacy (string, encoding, offset, length) + if (isFinite(offset)) { + if (!isFinite(length)) { + encoding = length + length = undefined + } + } else { // legacy + var swap = encoding + encoding = offset + offset = length + length = swap + } + + offset = Number(offset) || 0 + var remaining = this.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + encoding = String(encoding || 'utf8').toLowerCase() + + var ret + switch (encoding) { + case 'hex': + ret = _hexWrite(this, string, offset, length) + break + case 'utf8': + case 'utf-8': + ret = _utf8Write(this, string, offset, length) + break + case 'ascii': + ret = _asciiWrite(this, string, offset, length) + break + case 'binary': + ret = _binaryWrite(this, string, offset, length) + break + case 'base64': + ret = _base64Write(this, string, offset, length) + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = _utf16leWrite(this, string, offset, length) + break + default: + throw new Error('Unknown encoding') + } + return ret +} + +Buffer.prototype.toString = function (encoding, start, end) { + var self = this + + encoding = String(encoding || 'utf8').toLowerCase() + start = Number(start) || 0 + end = (end !== undefined) + ? Number(end) + : end = self.length + + // Fastpath empty strings + if (end === start) + return '' + + var ret + switch (encoding) { + case 'hex': + ret = _hexSlice(self, start, end) + break + case 'utf8': + case 'utf-8': + ret = _utf8Slice(self, start, end) + break + case 'ascii': + ret = _asciiSlice(self, start, end) + break + case 'binary': + ret = _binarySlice(self, start, end) + break + case 'base64': + ret = _base64Slice(self, start, end) + break + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + ret = _utf16leSlice(self, start, end) + break + default: + throw new Error('Unknown encoding') + } + return ret +} + +Buffer.prototype.toJSON = function () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function (target, target_start, start, end) { + var source = this + + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (!target_start) target_start = 0 + + // Copy 0 bytes; we're done + if (end === start) return + if (target.length === 0 || source.length === 0) return + + // Fatal error conditions + assert(end >= start, 'sourceEnd < sourceStart') + assert(target_start >= 0 && target_start < target.length, + 'targetStart out of bounds') + assert(start >= 0 && start < source.length, 'sourceStart out of bounds') + assert(end >= 0 && end <= source.length, 'sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) + end = this.length + if (target.length - target_start < end - start) + end = target.length - target_start + start + + var len = end - start + + if (len < 100 || !Buffer._useTypedArrays) { + for (var i = 0; i < len; i++) + target[i + target_start] = this[i + start] + } else { + target._set(this.subarray(start, start + len), target_start) + } +} + +function _base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function _utf8Slice (buf, start, end) { + var res = '' + var tmp = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) { + if (buf[i] <= 0x7F) { + res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) + tmp = '' + } else { + tmp += '%' + buf[i].toString(16) + } + } + + return res + decodeUtf8Char(tmp) +} + +function _asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; i++) + ret += String.fromCharCode(buf[i]) + return ret +} + +function _binarySlice (buf, start, end) { + return _asciiSlice(buf, start, end) +} + +function _hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; i++) { + out += toHex(buf[i]) + } + return out +} + +function _utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i+1] * 256) + } + return res +} + +Buffer.prototype.slice = function (start, end) { + var len = this.length + start = clamp(start, len, 0) + end = clamp(end, len, len) + + if (Buffer._useTypedArrays) { + return Buffer._augment(this.subarray(start, end)) + } else { + var sliceLen = end - start + var newBuf = new Buffer(sliceLen, undefined, true) + for (var i = 0; i < sliceLen; i++) { + newBuf[i] = this[i + start] + } + return newBuf + } +} + +// `get` will be removed in Node 0.13+ +Buffer.prototype.get = function (offset) { + console.log('.get() is deprecated. Access using array indexes instead.') + return this.readUInt8(offset) +} + +// `set` will be removed in Node 0.13+ +Buffer.prototype.set = function (v, offset) { + console.log('.set() is deprecated. Access using array indexes instead.') + return this.writeUInt8(v, offset) +} + +Buffer.prototype.readUInt8 = function (offset, noAssert) { + if (!noAssert) { + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'Trying to read beyond buffer length') + } + + if (offset >= this.length) + return + + return this[offset] +} + +function _readUInt16 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') + } + + var len = buf.length + if (offset >= len) + return + + var val + if (littleEndian) { + val = buf[offset] + if (offset + 1 < len) + val |= buf[offset + 1] << 8 + } else { + val = buf[offset] << 8 + if (offset + 1 < len) + val |= buf[offset + 1] + } + return val +} + +Buffer.prototype.readUInt16LE = function (offset, noAssert) { + return _readUInt16(this, offset, true, noAssert) +} + +Buffer.prototype.readUInt16BE = function (offset, noAssert) { + return _readUInt16(this, offset, false, noAssert) +} + +function _readUInt32 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } + + var len = buf.length + if (offset >= len) + return + + var val + if (littleEndian) { + if (offset + 2 < len) + val = buf[offset + 2] << 16 + if (offset + 1 < len) + val |= buf[offset + 1] << 8 + val |= buf[offset] + if (offset + 3 < len) + val = val + (buf[offset + 3] << 24 >>> 0) + } else { + if (offset + 1 < len) + val = buf[offset + 1] << 16 + if (offset + 2 < len) + val |= buf[offset + 2] << 8 + if (offset + 3 < len) + val |= buf[offset + 3] + val = val + (buf[offset] << 24 >>> 0) + } + return val +} + +Buffer.prototype.readUInt32LE = function (offset, noAssert) { + return _readUInt32(this, offset, true, noAssert) +} + +Buffer.prototype.readUInt32BE = function (offset, noAssert) { + return _readUInt32(this, offset, false, noAssert) +} + +Buffer.prototype.readInt8 = function (offset, noAssert) { + if (!noAssert) { + assert(offset !== undefined && offset !== null, + 'missing offset') + assert(offset < this.length, 'Trying to read beyond buffer length') + } + + if (offset >= this.length) + return + + var neg = this[offset] & 0x80 + if (neg) + return (0xff - this[offset] + 1) * -1 + else + return this[offset] +} + +function _readInt16 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to read beyond buffer length') + } + + var len = buf.length + if (offset >= len) + return + + var val = _readUInt16(buf, offset, littleEndian, true) + var neg = val & 0x8000 + if (neg) + return (0xffff - val + 1) * -1 + else + return val +} + +Buffer.prototype.readInt16LE = function (offset, noAssert) { + return _readInt16(this, offset, true, noAssert) +} + +Buffer.prototype.readInt16BE = function (offset, noAssert) { + return _readInt16(this, offset, false, noAssert) +} + +function _readInt32 (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } + + var len = buf.length + if (offset >= len) + return + + var val = _readUInt32(buf, offset, littleEndian, true) + var neg = val & 0x80000000 + if (neg) + return (0xffffffff - val + 1) * -1 + else + return val +} + +Buffer.prototype.readInt32LE = function (offset, noAssert) { + return _readInt32(this, offset, true, noAssert) +} + +Buffer.prototype.readInt32BE = function (offset, noAssert) { + return _readInt32(this, offset, false, noAssert) +} + +function _readFloat (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset + 3 < buf.length, 'Trying to read beyond buffer length') + } + + return ieee754.read(buf, offset, littleEndian, 23, 4) +} + +Buffer.prototype.readFloatLE = function (offset, noAssert) { + return _readFloat(this, offset, true, noAssert) +} + +Buffer.prototype.readFloatBE = function (offset, noAssert) { + return _readFloat(this, offset, false, noAssert) +} + +function _readDouble (buf, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset + 7 < buf.length, 'Trying to read beyond buffer length') + } + + return ieee754.read(buf, offset, littleEndian, 52, 8) +} + +Buffer.prototype.readDoubleLE = function (offset, noAssert) { + return _readDouble(this, offset, true, noAssert) +} + +Buffer.prototype.readDoubleBE = function (offset, noAssert) { + return _readDouble(this, offset, false, noAssert) +} + +Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'trying to write beyond buffer length') + verifuint(value, 0xff) + } + + if (offset >= this.length) return + + this[offset] = value +} + +function _writeUInt16 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'trying to write beyond buffer length') + verifuint(value, 0xffff) + } + + var len = buf.length + if (offset >= len) + return + + for (var i = 0, j = Math.min(len - offset, 2); i < j; i++) { + buf[offset + i] = + (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { + _writeUInt16(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { + _writeUInt16(this, value, offset, false, noAssert) +} + +function _writeUInt32 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'trying to write beyond buffer length') + verifuint(value, 0xffffffff) + } + + var len = buf.length + if (offset >= len) + return + + for (var i = 0, j = Math.min(len - offset, 4); i < j; i++) { + buf[offset + i] = + (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { + _writeUInt32(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { + _writeUInt32(this, value, offset, false, noAssert) +} + +Buffer.prototype.writeInt8 = function (value, offset, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset < this.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7f, -0x80) + } + + if (offset >= this.length) + return + + if (value >= 0) + this.writeUInt8(value, offset, noAssert) + else + this.writeUInt8(0xff + value + 1, offset, noAssert) +} + +function _writeInt16 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 1 < buf.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7fff, -0x8000) + } + + var len = buf.length + if (offset >= len) + return + + if (value >= 0) + _writeUInt16(buf, value, offset, littleEndian, noAssert) + else + _writeUInt16(buf, 0xffff + value + 1, offset, littleEndian, noAssert) +} + +Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { + _writeInt16(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { + _writeInt16(this, value, offset, false, noAssert) +} + +function _writeInt32 (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') + verifsint(value, 0x7fffffff, -0x80000000) + } + + var len = buf.length + if (offset >= len) + return + + if (value >= 0) + _writeUInt32(buf, value, offset, littleEndian, noAssert) + else + _writeUInt32(buf, 0xffffffff + value + 1, offset, littleEndian, noAssert) +} + +Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { + _writeInt32(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { + _writeInt32(this, value, offset, false, noAssert) +} + +function _writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 3 < buf.length, 'Trying to write beyond buffer length') + verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + + var len = buf.length + if (offset >= len) + return + + ieee754.write(buf, value, offset, littleEndian, 23, 4) +} + +Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { + _writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { + _writeFloat(this, value, offset, false, noAssert) +} + +function _writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + assert(value !== undefined && value !== null, 'missing value') + assert(typeof littleEndian === 'boolean', 'missing or invalid endian') + assert(offset !== undefined && offset !== null, 'missing offset') + assert(offset + 7 < buf.length, + 'Trying to write beyond buffer length') + verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + + var len = buf.length + if (offset >= len) + return + + ieee754.write(buf, value, offset, littleEndian, 52, 8) +} + +Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { + _writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { + _writeDouble(this, value, offset, false, noAssert) +} + +// fill(value, start=0, end=buffer.length) +Buffer.prototype.fill = function (value, start, end) { + if (!value) value = 0 + if (!start) start = 0 + if (!end) end = this.length + + if (typeof value === 'string') { + value = value.charCodeAt(0) + } + + assert(typeof value === 'number' && !isNaN(value), 'value is not a number') + assert(end >= start, 'end < start') + + // Fill 0 bytes; we're done + if (end === start) return + if (this.length === 0) return + + assert(start >= 0 && start < this.length, 'start out of bounds') + assert(end >= 0 && end <= this.length, 'end out of bounds') + + for (var i = start; i < end; i++) { + this[i] = value + } +} + +Buffer.prototype.inspect = function () { + var out = [] + var len = this.length + for (var i = 0; i < len; i++) { + out[i] = toHex(this[i]) + if (i === exports.INSPECT_MAX_BYTES) { + out[i + 1] = '...' + break + } + } + return '' +} + +/** + * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. + * Added in Node 0.12. Only available in browsers that support ArrayBuffer. + */ +Buffer.prototype.toArrayBuffer = function () { + if (typeof Uint8Array !== 'undefined') { + if (Buffer._useTypedArrays) { + return (new Buffer(this)).buffer + } else { + var buf = new Uint8Array(this.length) + for (var i = 0, len = buf.length; i < len; i += 1) + buf[i] = this[i] + return buf.buffer + } + } else { + throw new Error('Buffer.toArrayBuffer not supported in this browser') + } +} + +// HELPER FUNCTIONS +// ================ + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +var BP = Buffer.prototype + +/** + * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods + */ +Buffer._augment = function (arr) { + arr._isBuffer = true + + // save reference to original Uint8Array get/set methods before overwriting + arr._get = arr.get + arr._set = arr.set + + // deprecated, will be removed in node 0.13+ + arr.get = BP.get + arr.set = BP.set + + arr.write = BP.write + arr.toString = BP.toString + arr.toLocaleString = BP.toString + arr.toJSON = BP.toJSON + arr.copy = BP.copy + arr.slice = BP.slice + arr.readUInt8 = BP.readUInt8 + arr.readUInt16LE = BP.readUInt16LE + arr.readUInt16BE = BP.readUInt16BE + arr.readUInt32LE = BP.readUInt32LE + arr.readUInt32BE = BP.readUInt32BE + arr.readInt8 = BP.readInt8 + arr.readInt16LE = BP.readInt16LE + arr.readInt16BE = BP.readInt16BE + arr.readInt32LE = BP.readInt32LE + arr.readInt32BE = BP.readInt32BE + arr.readFloatLE = BP.readFloatLE + arr.readFloatBE = BP.readFloatBE + arr.readDoubleLE = BP.readDoubleLE + arr.readDoubleBE = BP.readDoubleBE + arr.writeUInt8 = BP.writeUInt8 + arr.writeUInt16LE = BP.writeUInt16LE + arr.writeUInt16BE = BP.writeUInt16BE + arr.writeUInt32LE = BP.writeUInt32LE + arr.writeUInt32BE = BP.writeUInt32BE + arr.writeInt8 = BP.writeInt8 + arr.writeInt16LE = BP.writeInt16LE + arr.writeInt16BE = BP.writeInt16BE + arr.writeInt32LE = BP.writeInt32LE + arr.writeInt32BE = BP.writeInt32BE + arr.writeFloatLE = BP.writeFloatLE + arr.writeFloatBE = BP.writeFloatBE + arr.writeDoubleLE = BP.writeDoubleLE + arr.writeDoubleBE = BP.writeDoubleBE + arr.fill = BP.fill + arr.inspect = BP.inspect + arr.toArrayBuffer = BP.toArrayBuffer + + return arr +} + +// slice(start, end) +function clamp (index, len, defaultValue) { + if (typeof index !== 'number') return defaultValue + index = ~~index; // Coerce to integer. + if (index >= len) return len + if (index >= 0) return index + index += len + if (index >= 0) return index + return 0 +} + +function coerce (length) { + // Coerce length to a number (possibly NaN), round up + // in case it's fractional (e.g. 123.456) then do a + // double negate to coerce a NaN to 0. Easy, right? + length = ~~Math.ceil(+length) + return length < 0 ? 0 : length +} + +function isArray (subject) { + return (Array.isArray || function (subject) { + return Object.prototype.toString.call(subject) === '[object Array]' + })(subject) +} + +function isArrayish (subject) { + return isArray(subject) || Buffer.isBuffer(subject) || + subject && typeof subject === 'object' && + typeof subject.length === 'number' +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + var b = str.charCodeAt(i) + if (b <= 0x7F) + byteArray.push(str.charCodeAt(i)) + else { + var start = i + if (b >= 0xD800 && b <= 0xDFFF) i++ + var h = encodeURIComponent(str.slice(start, i+1)).substr(1).split('%') + for (var j = 0; j < h.length; j++) + byteArray.push(parseInt(h[j], 16)) + } + } + return byteArray +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; i++) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; i++) { + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(str) +} + +function blitBuffer (src, dst, offset, length) { + var pos + for (var i = 0; i < length; i++) { + if ((i + offset >= dst.length) || (i >= src.length)) + break + dst[i + offset] = src[i] + } + return i +} + +function decodeUtf8Char (str) { + try { + return decodeURIComponent(str) + } catch (err) { + return String.fromCharCode(0xFFFD) // UTF 8 invalid char + } +} + +/* + * We have to make sure that the value is a valid integer. This means that it + * is non-negative. It has no fractional component and that it does not + * exceed the maximum allowed value. + */ +function verifuint (value, max) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value >= 0, 'specified a negative value for writing an unsigned value') + assert(value <= max, 'value is larger than maximum value for type') + assert(Math.floor(value) === value, 'value has a fractional component') +} + +function verifsint (value, max, min) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value <= max, 'value larger than maximum allowed value') + assert(value >= min, 'value smaller than minimum allowed value') + assert(Math.floor(value) === value, 'value has a fractional component') +} + +function verifIEEE754 (value, max, min) { + assert(typeof value === 'number', 'cannot write a non-number as a number') + assert(value <= max, 'value larger than maximum allowed value') + assert(value >= min, 'value smaller than minimum allowed value') +} + +function assert (test, message) { + if (!test) throw new Error(message || 'Failed assertion') +} + +},{"base64-js":3,"ieee754":4}],3:[function(require,module,exports){ +var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + +;(function (exports) { + 'use strict'; + + var Arr = (typeof Uint8Array !== 'undefined') + ? Uint8Array + : Array + + var PLUS = '+'.charCodeAt(0) + var SLASH = '/'.charCodeAt(0) + var NUMBER = '0'.charCodeAt(0) + var LOWER = 'a'.charCodeAt(0) + var UPPER = 'A'.charCodeAt(0) + + function decode (elt) { + var code = elt.charCodeAt(0) + if (code === PLUS) + return 62 // '+' + if (code === SLASH) + return 63 // '/' + if (code < NUMBER) + return -1 //no match + if (code < NUMBER + 10) + return code - NUMBER + 26 + 26 + if (code < UPPER + 26) + return code - UPPER + if (code < LOWER + 26) + return code - LOWER + 26 + } + + function b64ToByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + + if (b64.length % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + var len = b64.length + placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(b64.length * 3 / 4 - placeHolders) + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? b64.length - 4 : b64.length + + var L = 0 + + function push (v) { + arr[L++] = v + } + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) + push((tmp & 0xFF0000) >> 16) + push((tmp & 0xFF00) >> 8) + push(tmp & 0xFF) + } + + if (placeHolders === 2) { + tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) + push(tmp & 0xFF) + } else if (placeHolders === 1) { + tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) + push((tmp >> 8) & 0xFF) + push(tmp & 0xFF) + } + + return arr + } + + function uint8ToBase64 (uint8) { + var i, + extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes + output = "", + temp, length + + function encode (num) { + return lookup.charAt(num) + } + + function tripletToBase64 (num) { + return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) + } + + // go through the array every three bytes, we'll deal with trailing stuff later + for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { + temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output += tripletToBase64(temp) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + switch (extraBytes) { + case 1: + temp = uint8[uint8.length - 1] + output += encode(temp >> 2) + output += encode((temp << 4) & 0x3F) + output += '==' + break + case 2: + temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) + output += encode(temp >> 10) + output += encode((temp >> 4) & 0x3F) + output += encode((temp << 2) & 0x3F) + output += '=' + break + } + + return output + } + + exports.toByteArray = b64ToByteArray + exports.fromByteArray = uint8ToBase64 +}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) + +},{}],4:[function(require,module,exports){ +exports.read = function(buffer, offset, isLE, mLen, nBytes) { + var e, m, + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + nBits = -7, + i = isLE ? (nBytes - 1) : 0, + d = isLE ? -1 : 1, + s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity); + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); +}; + +exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c, + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), + i = isLE ? 0 : (nBytes - 1), + d = isLE ? 1 : -1, + s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); + + buffer[offset + i - d] |= s * 128; +}; + +},{}],"CoCQri":[function(require,module,exports){ +(function (Buffer){ +var fs = require('fs'); + +var dataValid = JSON.parse(Buffer("WwogICAgWwogICAgICAgICIxQUdOYTE1WlFYQVpVZ0ZpcUoyaTdaMkRQVTJKNmhXNjJpIiwgCiAgICAgICAgIjY1YTE2MDU5ODY0YTJmZGJjN2M5OWE0NzIzYTgzOTViYzZmMTg4ZWIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNDTU5GeE4xb0hCYzRSMUVwYm9BTDV5ekhHZ0U2MTFYb3UiLCAKICAgICAgICAiNzRmMjA5ZjZlYTkwN2UyZWE0OGY3NGZhZTA1NzgyYWU4YTY2NTI1NyIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibW85bmNYaXNNZUFvWHdxY1Y1RVd1eW5jYm1DY1FONHJWcyIsIAogICAgICAgICI1M2MwMzA3ZDY4NTFhYTBjZTc4MjViYTg4M2M2YmQ5YWQyNDJiNDg2IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJOMkpENndiNTZBZks0dGZtTTZQd2RWbW9ZazJkQ0tmNEJyIiwgCiAgICAgICAgIjYzNDlhNDE4ZmM0NTc4ZDEwYTM3MmI1NGI0NWMyODBjYzhjNDM4MmYiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUtkM05CVUFkVW5oeXplbkV3Vkx5OXBCS3hTd1h2RTlGTVB5UjRVS1p2cGU2RTNBZ0xyIiwgCiAgICAgICAgImVkZGJkYzExNjhmMWRhZWFkYmQzZTQ0YzFlM2Y4ZjVhMjg0YzIwMjlmNzhhZDI2YWY5ODU4M2E0OTlkZTViMTkiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkt6NlVKbVFBQ0ptTHRhUWo1QTNKQWdlNGtWVE5ROGdidlh1d2JtQ2o3YnNhYWJ1ZGIzUkQiLCAKICAgICAgICAiNTVjOWJjY2I5ZWQ2ODQ0NmQxYjc1MjczYmJjZTg5ZDdmZTAxM2E4YWNkMTYyNTUxNDQyMGZiMmFjYTFhMjFjNCIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MjEzcUphYjJITkVwTXBZTkJhN3dIR0ZLS2JrRG4yNGpwQU5EczJodU4zeWk0SjExa28iLCAKICAgICAgICAiMzZjYjkzYjlhYjFiZGFiZjdmYjlmMmMwNGYxYjljYzg3OTkzMzUzMGFlNzg0MjM5OGVlZjVhNjNhNTY4MDBjMiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVHBCNFlpeUtpQmNQeG5lZnNEcGJuRHhGRGZmanFKb2I4d0dDRURYeGdRN3pRb01YSmRIIiwgCiAgICAgICAgImI5ZjQ4OTJjOWU4MjgyMDI4ZmVhMWQyNjY3YzRkYzUyMTM1NjRkNDFmYzU3ODM4OTZhMGQ4NDNmYzE1MDg5ZjMiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxQXg0Z1p0YjdnQWl0MlRpdndlalpIWXROTkxUMThQVVhKIiwgCiAgICAgICAgIjZkMjMxNTZjYmJkY2M4MmE1YTQ3ZWVlNGMyYzdjNTgzYzE4YjZiZjQiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNRallYaFRrdnVqOHFQYVhIVFRXYjV3alhoZHNMQUFXVnkiLCAKICAgICAgICAiZmNjNTQ2MGRkNmUyNDg3YzdkNzViMTk2MzYyNWRhMGU4ZjRjNTk3NSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibjNaZGR4ekx2QVk5bzcxODRUQjRjNkZKYXNBeWJzdzRIWiIsIAogICAgICAgICJmMWQ0NzBmOWIwMjM3MGZkZWMyZTZiNzA4YjA4YWM0MzFiZjdhNWY3IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJOQkZOSlRrdE5hN0dadXNHYkRiR0tSWlR4ZEs5VlZlejNuIiwgCiAgICAgICAgImM1NzkzNDJjMmM0YzkyMjAyMDVlMmNkYzI4NTYxNzA0MGM5MjRhMGEiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUs0OTRYWndwczJiR3llTDcxcFdpZDRub2lTTkEyY2ZDaWJydlJXcWNIU3B0b0ZuN3JjIiwgCiAgICAgICAgImEzMjZiOTVlYmFlMzAxNjQyMTdkN2E3ZjU3ZDcyYWIyYjU0ZTNiZTY0OTI4YTE5ZGEwMjEwYjk1NjhkNDAxNWUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwxUnJyblhrY0t1dDVERU13dER0aGp3UmNUVHdFRDM2dGh5TDFEZWJWckt1d3ZvaGpNTmkiLCAKICAgICAgICAiN2Q5OThiNDVjMjE5YTFlMzhlOTllN2NiZDMxMmVmNjdmNzdhNDU1YTliNTBjNzMwYzI3ZjAyYzZmNzMwZGZiNCIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5M0RWS3lGWXdTTjZ3RW8zRTJmQ3JGUFVwMTdGdHJ0TmkyTGY3bjRHM2dhckZiMTZDUmoiLCAKICAgICAgICAiZDZiY2EyNTZiNWFiYzU2MDJlYzJlMWMxMjFhMDhiMGRhMjU1NjU4NzQzMGJjZjdlMTg5OGFmMjIyNDg4NTIwMyIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVERWS3RNR1ZZV1RIQ2IxQUZqbVZiRWJXanZLcEtxS2dNYVIzUUp4VG9NU1FBaG1DZVROIiwgCiAgICAgICAgImE4MWNhNGU4ZjkwMTgxZWM0YjYxYjZhN2ViOTk4YWYxN2IyY2IwNGRlOGEwM2I1MDRiOWUzNGM0YzYxZGI3ZDkiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxQzViU2oxaUVHVWdTVGJ6aXltRzdDbjE4RU5RdVQzNnZ2IiwgCiAgICAgICAgIjc5ODdjY2FhNTNkMDJjODg3MzQ4N2VmOTE5Njc3Y2QzZGI3YTY5MTIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNBbk54YWJZR29UeFlpVEVad0ZFbmVyVW9lRlhLMlpva3MiLCAKICAgICAgICAiNjNiY2M1NjVmOWU2OGVlMDE4OWRkNWNjNjdmMWIwZTVmMDJmNDVjYiIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibjNMbkpYQ3FiUGpnaHVWczhwaDlDWXNBZTRTaDRqOTd3ayIsIAogICAgICAgICJlZjY2NDQ0YjViMTdmMTRlOGZhZTZlN2UxOWIwNDVhNzhjNTRmZDc5IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJOQjcyWHRranBuQVRNZ2d1aTgzYUV0UGF3eXlLdm5iWDJvIiwgCiAgICAgICAgImMzZTU1ZmNlY2VhYTQzOTFlZDJhOTY3N2Y0YTRkMzRlYWNkMDIxYTAiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUthQlc5dk50V05oYzNaRUR5TkNpWExQZFZQSENpa1J4U0JXd1Y5TnJwTExhNExzWGk5IiwgCiAgICAgICAgImU3NWQ5MzZkNTYzNzdmNDMyZjQwNGFhYmI0MDY2MDFmODkyZmQ0OWRhOTBlYjZhYzU1OGE3MzNjOTNiNDcyNTIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwxYXh6YlN5eW5OWUE4bUNBaHp4a2lwS2tmSHRBWFlGNFlRbmhTS2NMVjhZWEE4NzRmZ1QiLCAKICAgICAgICAiODI0OGJkMDM3NWYyZjc1ZDdlMjc0YWU1NDRmYjkyMGY1MTc4NDQ4MDg2NmIxMDIzODQxOTBiMWFkZGZiYWE1YyIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MjdDblVrVWJhc1l0RHdZd1ZuMmo4R2RUdUFDTm5La2paMXJwWmQyeUJCMUNMY25YcG8iLCAKICAgICAgICAiNDRjNGY2YTA5NmVhYzUyMzgyOTFhOTRjYzI0YzAxZTNiMTliOGQ4Y2VmNzI4NzRhMDc5ZTAwYTI0MjIzN2E1MiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVWNmQ01SamlRZjg1WU16elFFazlkMXM1QTRLN3hMNVNtQkNMcmV6cVhGdVRWZWZ5aFk3IiwgCiAgICAgICAgImQxZGU3MDcwMjBhOTA1OWQ2ZDNhYmFmODVlMTc5NjdjNjU1NTE1MTE0M2RiMTNkYmIwNmRiNzhkZjBmMTVjNjkiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxR3FrNFR2NzlQOTFDYzFTVFF0VTNzMVc2Mjc3TTJDVld1IiwgCiAgICAgICAgImFkYzFjYzIwODFhMjcyMDZmYWUyNTc5MmYyOGJiYzU1YjgzMTU0OWQiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjMzdnQ4VmlINWpzcjExNUFHa1c2Y0VtRXo5TXB2SlN3RGsiLCAKICAgICAgICAiMTg4ZjkxYTkzMTk0N2VkZGQ3NDMyZDZlNjE0Mzg3ZTMyYjI0NDcwOSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibWhhTWNCeE5oNWNxWG00YVRRNkVjVmJLdGZMNkxHeUsySCIsIAogICAgICAgICIxNjk0ZjViYzFhNzI5NWI2MDBmNDAwMThhNjE4YTZlYTQ4ZWViNDk4IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJNeGdQcVgxaVRoVzNvWlZrOUtvRmNFNU00SnBpRVRzc1ZOIiwgCiAgICAgICAgIjNiOWIzZmQ3YTUwZDRmMDhkMWE1YjBmNjJmNjQ0ZmE3MTE1YWUyZjMiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUh0SDZHZGN3Q0pBNGdnV0VMMUIzanpCQlVCOEhQaUJpOVNCYzVoOWk0V2s0UFNlQXBSIiwgCiAgICAgICAgIjA5MTAzNTQ0NWVmMTA1ZmExYmIxMjVlY2NmYjE4ODJmM2ZlNjk1OTIyNjU5NTZhZGU3NTFmZDA5NTAzM2Q4ZDAiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwyeFNZbU1lVm8zWmVrM1pUc3Y5eFVyWFZBbXJXeEo4VWE0Y3c4cGtmYlFoY0VGaGtYVDgiLCAKICAgICAgICAiYWIyYjRiY2RmYzkxZDM0ZGVlMGFlMmE4YzZiNjY2OGRhZGFlYjNhODhiOTg1OTc0MzE1NmY0NjIzMjUxODdhZiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MnhGRXZlMVo5TjhaNjQxS1FRUzdCeUNTYjhrR2pzRHp3NmZBbWpITjFMWkdLUVh5TXEiLCAKICAgICAgICAiYjQyMDQzODljZWYxOGJiZTJiMzUzNjIzY2JmOTNlODY3OGZiYzkyYTQ3NWI2NjRhZTk4ZWQ1OTRlNmNmMDg1NiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVk02NXRkWXUxWUszN3ROb0F5R29KVFIxM1ZCWUZ2YTF2ZzlGTHVQQXNKaWpHdkc2TkVBIiwgCiAgICAgICAgImU3YjIzMDEzM2YxYjU0ODk4NDMyNjAyMzZiMDZlZGNhMjVmNjZhZGIxYmU0NTVmYmQzOGQ0MDEwZDQ4ZmFlZWYiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxSndNV0JWTHRpcXRzY2JhUkhhaTRwcUhva2hGQ2J0b0I0IiwgCiAgICAgICAgImM0YzFiNzI0OTFlZGUxZWVkYWNhMDA2MTg0MDdlZTBiNzcyY2FkMGQiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNRQ3p2Zkw0WlJ2bUpGaVdXQlZ3eGZkYU5CVDhFdHhCNXkiLCAKICAgICAgICAiZjZmZTY5YmNiNTQ4YTgyOWNjZTRjNTdiZjZmZmY4YWYzYTU5ODFmOSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibWl6WGl1Y1hSQ3NFcmlRQ0hVa0NxZWY5cGg5cXRQYlpaNiIsIAogICAgICAgICIyNjFmODM1NjhhMDk4YTg2Mzg4NDRiZDdhZWNhMDM5ZDVmMjM1MmMwIiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJORVdEekhXd1k1WlpwOENRV2JCN291Tk1McUNpYTZZUmRhIiwgCiAgICAgICAgImU5MzBlMTgzNGE0ZDIzNDcwMjc3Mzk1MWQ2MjdjY2U4MmZiYjVkMmUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUtRbURyeU1ORGNpc1R6UnAzekVxOWU0YXdSbUpyRVZVMWo1dkZSVEtwUk5ZUHFZck1nIiwgCiAgICAgICAgImQxZmFiN2FiNzM4NWFkMjY4NzIyMzdmMWViOTc4OWFhMjVjYzk4NmJhY2M2OTVlMDdhYzU3MWQ2Y2RhYzhiYzAiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwzOUZ5N0FDMkhoajk1Z2gzWWIyQVU1WUhoMW1RU0FIZ3BOaXh2bTI3cG9pemNKeUx0VWkiLCAKICAgICAgICAiYjBiYmVkZTMzZWYyNTRlODM3NmFjZWIxNTEwMjUzZmMzNTUwZWZkMGZjZjg0ZGNkMGM5OTk4YjI4OGYxNjZiMyIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MWNUVlVjZ3lkcXlaTGdhQU5wZjFmdkw1NUZINTNRTW00QnNuQ0FEVk5ZdVd1cWRWeXMiLCAKICAgICAgICAiMDM3ZjQxOTJjNjMwZjM5OWQ5MjcxZTI2YzU3NTI2OWIxZDE1YmU1NTNlYTFhNzIxN2YwY2I4NTEzY2VmNDFjYiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjUXNwZlN6c2dMZWlKR0IydTh2ckFpV3BDVTRNeFVUNkpzZVdvMlNqWHk0UWJ6bjJmd0R3IiwgCiAgICAgICAgIjYyNTFlMjA1ZThhZDUwOGJhYjU1OTZiZWUwODZlZjE2Y2Q0YjIzOWUwY2MwYzVkN2M0ZTYwMzU0NDFlN2Q1ZGUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxOWRjYXdvS2NaZFF6MzY1V3BYV01oWDZRQ1VwUjlTWTRyIiwgCiAgICAgICAgIjVlYWRhZjliYjcxMjFmMGYxOTI1NjFhNWE2MmY1ZTVmNTQyMTAyOTIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjM3U3A2UnYzeTRrVmQxblExSlY1cGZxWGNjSE55Wm0xeDMiLCAKICAgICAgICAiM2YyMTBlNzI3N2M4OTljM2ExNTVjYzFjOTBmNDEwNmNiZGRlZWM2ZSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibXlvcWNnWWllaHVmcnNubmtxZHFicDY5ZGRkVkRNb3BKdSIsIAogICAgICAgICJjOGEzYzJhMDlhMjk4NTkyYzNlMTgwZjAyNDg3Y2Q5MWJhMzQwMGI1IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJON0Z1d3VVdW9UQnJERmRyQVo5S3hCbXRxTUx4Y2U5aTFDIiwgCiAgICAgICAgIjk5YjMxZGY3YzkwNjhkMTQ4MWI1OTY1NzhkZGJiNGQzYmQ5MGJhZWIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUtMNnpFYU10UFJYWktvMWJiTXE3SkRqam8xYkp1UWNzZ0wzM2plM29ZOHVTSkNSNWI0IiwgCiAgICAgICAgImM3NjY2ODQyNTAzZGI2ZGM2ZWEwNjFmMDkyY2ZiOWMzODg0NDg2MjlhNmZlODY4ZDA2OGM0MmE0ODhiNDc4YWUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkt3VjlLQWZ3Ynd0NTF2ZVpXTnNjUlRlWnM5Q0twb2p5dTFNc1BuYUtURjVrejY5SDFVTjIiLCAKICAgICAgICAiMDdmMDgwM2ZjNTM5OWU3NzM1NTVhYjFlODkzOTkwN2U5YmFkYWNjMTdjYTEyOWU2N2EyZjVmMmZmODQzNTFkZCIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5M044N0Q2dXhTQnp3WHZwb2twemc4RkZtZlFQbXZYNHhIb1dRZTNwTGRZcGJpd1Q1WVYiLCAKICAgICAgICAiZWE1NzdhY2ZiNWQxZDE0ZDNiN2IxOTVjMzIxNTY2ZjEyZjg3ZDJiNzdlYTNhNTNmNjhkZjdlYmY4NjA0YTgwMSIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjTXhYdXNTaWhhWDU4d3BKM3ROdXVVY1pFUUd0NkRLSjF3RXB4eXM4OEZGYVFDWWprdTloIiwgCiAgICAgICAgIjBiM2IzNGYwOTU4ZDhhMjY4MTkzYTk4MTRkYTkyYzNlOGI1OGI0YTQzNzhhNTQyODYzZTM0YWMyODljZDgzMGMiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxM3AxaWpMd3NucmN1eXFjVHZKWGtxMkFTZFhxY25FQkxFIiwgCiAgICAgICAgIjFlZDQ2NzAxN2YwNDNlOTFlZDRjNDRiNGU4ZGQ2NzRkYjIxMWM0ZTYiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNBTEpIOVk5NTFWQ0djVlpZQWRwQTNLY2hvUDlNY0VqMUciLCAKICAgICAgICAiNWVjZTBjYWRkZGM0MTViMTk4MGYwMDE3ODU5NDcxMjBhY2RiMzZmYyIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdCl0K","base64")); +var dataInvalid = JSON.parse(Buffer("WwogICAgWwogICAgICAgICIiCiAgICBdLCAKICAgIFsKICAgICAgICAieCIKICAgIF0sIAogICAgWwogICAgICAgICIzN3FnZWtMcENDSHJRdVNqdlgzZnM0OTZGV1RHc0hGSGl6akpBczZOUGNSNDdhZWZubkNXRUNBaEhWNkUzZzRZTjd1N1l1d29kNVkiCiAgICBdLCAKICAgIFsKICAgICAgICAiZHpiN1ZWMVVpNTVCQVJ4djdBVHhBdENVZUpzQU5Lb3ZER1dGVmdwVGJocTlndlBxUDN5diIKICAgIF0sIAogICAgWwogICAgICAgICJNdU51N1pBRURGaUh0aGl1bm03ZFBqd0txclZOQ00zbUF6NnJQOXpGdmVRdTE0WUE4Q3hFeFNKVEhjVlA5REVybjZ1ODRFNkVqN1MiCiAgICBdLCAKICAgIFsKICAgICAgICAiclBwUXBZa255TlE1QUVIdVk2SDhpakpKclljMm5ES0trOWpqbUtFWHNXenlBUWNGR3BETFUyWnZzbW9pOEpMUjdoQXdveTNSUVdmIgogICAgXSwgCiAgICBbCiAgICAgICAgIjRVYzNGbU42TlE2ekxCSzVRUUJYUkJVUkVhYUh3Q1pZc0dDdWVIYXV1RG1KcFpLbjZqa0Vza01CMlppMkNOZ3RiNXI2ZXBXRUZmVUpxIgogICAgXSwgCiAgICBbCiAgICAgICAgIjdhUWdSNURGUTI1dnlYbXFaQVdtblZDakwzUGtCY2RWa0JVcGpyak1UY2doSHgzRTh3YiIKICAgIF0sIAogICAgWwogICAgICAgICIxN1FwUHByamVnNjlmVzFEVjhEY1lZQ0t2V2pZaFh2V2tvdjZNSjFpVFR2TUZqNndlQXFXN3d5YlplSDU3V1ROeFhWQ1JINHZlVnMiCiAgICBdLCAKICAgIFsKICAgICAgICAiS3h1QUNEdml6OFh2cG4xeEFoOU1mb3B5U1pOdXlhallNWld6MTZEdjJtSEhyeXpuV1VwMyIKICAgIF0sIAogICAgWwogICAgICAgICI3bkszR1NtcWRYSlF0ZG9odkdmSjdLc1NtbjNUbUdxRXh1ZzQ5NTgzYkRBTDkxcFZTR3E1eFM5U0hvQVlMM1d2M2lqS1RpdDY1dGgiCiAgICBdLCAKICAgIFsKICAgICAgICAiY1RpdmRCbXE3YmF5M1JGR0VCQnVOZk1oMlAxcERDZ1JZTjJXYnhtZ3dyNGtpM2pOVUwydmEiCiAgICBdLCAKICAgIFsKICAgICAgICAiZ2pNVjR2ak5qeU1ybmE0ZnNBcjhiV3hBYnd0bU1VQlhKUzN6TDROSnQ1cWpvenBiUUxtQWZLMXVBM0NxdVNxc1pRTXBvRDFnMm5rIgogICAgXSwgCiAgICBbCiAgICAgICAgImVtWG0xbmFCTW9WelBqYms3eHBlVFZNRnk0b0RFZTI1VW1veUdnS0VCMWdHV3NLOGtSR3MiCiAgICBdLCAKICAgIFsKICAgICAgICAiN1ZUaFFuTlJqMW8zWnl2YzdYSFBScmpEZjhqMm9pdlBUZURYblJQWVdlWUdFNHBYZVJKRFpnZjI4cHB0aTVoc0hXWFMyR1NvYmRxeW8iCiAgICBdLCAKICAgIFsKICAgICAgICAiMUc5dTZvQ1ZDUGgybzhtM3Q1NUFDaVl2RzF5NUJIZXdVa0RTZGlRYXJEY1lYWGhGSFlkek1kWWZVQWhmeG41dk5aQndwZ1VOcHNvIgogICAgXSwgCiAgICBbCiAgICAgICAgIjMxUVE3Wk1Ma1NjRGlCNFZ5Wmp1cHRyN0FFYzlqMVNqc3RGN3BSb0xoSFRHa1c0UTJ5OVhFTG9iUW1oaFd4ZVJ2cWN1a0dkMVhDcSIKICAgIF0sIAogICAgWwogICAgICAgICJESHFLU25weGE4WmRReUg4a2VBaHZMVHJma3lCTVF4cW5nY1FBNU44TFE5S1Z0MjVrbUdOIgogICAgXSwgCiAgICBbCiAgICAgICAgIjJMVUhjSlBid0xDeTlHTEgxcVhtZm1Bd3ZhZFd3NGJwNFBDcERmZHVMcVYxN3M2aURjeTFpbVV3aFFKaEFvTm9OMVhObXdlaUpQNGkiCiAgICBdLCAKICAgIFsKICAgICAgICAiN1VTUnpCWEFubWNrOGZYOUhtVzdSQWI0cXQ5MlZGWDZzb0NudHM5czc0d3htNGdndVZodEc1b2Y4ZlpHYk5QSkE4M2lySFZZNmJDb3MiCiAgICBdLCAKICAgIFsKICAgICAgICAiMURHZXpvN0JmVmViWnhBYk5UM1hHdWpkZUh5Tk5CRjN2bmZpY1lvVFNwNFBmSzJRYU1MOWJIekFNeGtlM3dkS2RIWVdtc01USlZ1IgogICAgXSwgCiAgICBbCiAgICAgICAgIjJEMTJEcURaS3dDeHhrenMxWkFUSld2Z0pHaFE0Y0ZpM1dyaXpRNXpMQXloTjVIeHVBSjF5TVlhSnA4R3VZc1RMTHhUQXo2b3RDZmIiCiAgICBdLCAKICAgIFsKICAgICAgICAiOEFGSnp1VHVqWGp3MVo2TTNmV2hRMXVqRFc3enNWNGVQZVZqVm83RDFlZ0VScVNXOW5aIgogICAgXSwgCiAgICBbCiAgICAgICAgIjE2M1ExN3FMYlRDdWU4WVkzQXZqcFVob3R1YW9kTG0ydXFNaHBZaXJzS2pWcW54SlJXVEVveXdNVlkzTmJCQUh1aEFKMmNGOUdBWiIKICAgIF0sIAogICAgWwogICAgICAgICIyTW5tZ2lSSDRlR0x5TGM5ZUFxU3R6azdkRmdCakZ0VUN0dSIKICAgIF0sIAogICAgWwogICAgICAgICI0NjFRUTJzWVd4VTdIMlBWNG9Cd0pHTmNoOFhWVFlZYlp4VSIKICAgIF0sIAogICAgWwogICAgICAgICIyVUN0djUzVnR0bVFZa1ZVNFZNdFhCMzFSRXZRZzRBQnpzNDFBRUtaOFVjQjdEQWZWemRrVjlKREVyd0d3eWo1QVVITGttZ1plb2JzIgogICAgXSwgCiAgICBbCiAgICAgICAgImNTTmpBc25oZ3RpRk1pNk10ZnZnc2NNQjJDYmhuMnYxRlVZZnZpSjFDZGpmaWR2bWVXNm1uIgogICAgXSwgCiAgICBbCiAgICAgICAgImdtc293Mlk2RVdBRkRGRTFDRTRIZDNUcHUyQnZmbUJmRzFTWHN1UkFSYm50MVdqa1puRmgxcUdUaXB0V1dianNxMlE2cXZwZ0pWaiIKICAgIF0sIAogICAgWwogICAgICAgICJua3NVS1NrelM3NnY4RXNTZ296WEdNb1FGaUNvQ0h6Q1ZhakZLQVhxeks1b245WkpZVkhNRDVDS3dnbVgzUzNjN00xVTN4YWJVbnkiCiAgICBdLCAKICAgIFsKICAgICAgICAiTDNmYXZLMVV6RkdnZHpZQkYyb0JUNXRiYXlDbzR2dFZCTEpoZzJpWXVNZWVQeFdHOFNRYyIKICAgIF0sIAogICAgWwogICAgICAgICI3VnhMeEdHdFlUNk45OUdkRWZpNnh6NTZ4ZFE4blAyZEcxQ2F2dVh4N1JmMlBydk5NVEJOZXZqa2ZnczlKbWtjR202RVhwajhpcHlQWiIKICAgIF0sIAogICAgWwogICAgICAgICIybWJad0ZYRjZjeFNoYUNvMmN6VFJCNjJXVHg5THhoVHRwUCIKICAgIF0sIAogICAgWwogICAgICAgICJkQjdjd1lkY1BTZ2l5QXdLV0wzSndDVndTazZlcFUydHh3IgogICAgXSwgCiAgICBbCiAgICAgICAgIkhQaEZVaFVBaDhaUVFpc0g4UVFXYWZBeHRRWWp1M1NGVFgiCiAgICBdLCAKICAgIFsKICAgICAgICAiNGN0QUg2QWtIenE1aW9pTTFtOVQzRTJoaVlFZXY1bVRzQiIKICAgIF0sIAogICAgWwogICAgICAgICJIbjF1Rmk0ZE5leFdycUFScGpNcWdUNmNYMVVzTlB1VjNjSGRHZzlFeHlYdzhIVEthZGJrdFJEdGRlVm1ZM00xQnhKU3RpTDR2akoiCiAgICBdLCAKICAgIFsKICAgICAgICAiU3EzZkRidnV0QUJtbkFISEV4SkRnUExRbjQ0S25OQzdVc1h1VDdLWmVjcGFZRE1VOVR4cyIKICAgIF0sIAogICAgWwogICAgICAgICI2VHFXeXJxZGdVRVlEUVUxYUNoTXVGTU1FaW1IWDQ0cUhGekNVZ0dmcXhHZ1pOTVVWV0oiCiAgICBdLCAKICAgIFsKICAgICAgICAiZ2lxSm83b1dxRnhOS1d5cmdjQnhBVkhYbmpKMXQ2Y0dvRWZmY2U1WTF5N3U2NDlOb2o1d0o0bW1pVUFLRVZWcllBR2cyS1BCM1k0IgogICAgXSwgCiAgICBbCiAgICAgICAgImNOekhZNWU4dmNtTTNRVkpVY2pDeWlLTVlmZVl2eXVlcTVxQ01WM2txY3lTb0x5R0xZVUsiCiAgICBdLCAKICAgIFsKICAgICAgICAiMzd1VGU1NjhFWWM5V0xvSEVkOWpYRXZVaVdicTVMRkxzY055cXZBekxVNXZCQXJVSkE2ZXlka0xtbk13SkRqa0w1a1hjMlZLN2lnIgogICAgXSwgCiAgICBbCiAgICAgICAgIkVzWWJHNHRXV1dZNDVHMzFub3g4MzhxTmR6a3NiUHlTV2MiCiAgICBdLCAKICAgIFsKICAgICAgICAibmJ1emhmd01vTnpBM1BhRm55TGNSeEU5YlRKUERralo2UmY2WTZvMmNrWFpmelp6WEJUIgogICAgXSwgCiAgICBbCiAgICAgICAgImNRTjlQb3haZUNXSzF4NTZ4bno2UVlBc3ZSMTFYQWNlM0VocDNnTVVkZlNRNTNZMm1QengiCiAgICBdLCAKICAgIFsKICAgICAgICAiMUdtM04zcmtlZjZpTWJ4NHZvQnpheHRYY21taU1UcVpQaGN1QWVwUnpZVUpRVzRxUnBFbkh2TW9qem9mNDJoakZSZjhQRTJqUGRlIgogICAgXSwgCiAgICBbCiAgICAgICAgIjJUQXEydHVONng2bTIzM2JwVDd5cWRZUVBFTGRUREpuMWVVIgogICAgXSwgCiAgICBbCiAgICAgICAgIm50RXRubkdocVBpaTRqb0FCdkJ0U0VKRzZCeGpUMnRVWnFFOFBjVllnazNSSHBneGdIRENReE5iTEpmN2FyZGYxZERrMm9DUTdDZiIKICAgIF0sIAogICAgWwogICAgICAgICJLeTFZam9aTmdRMTk2SEpWM0hwZGtlY2ZoUkJtUlpkTUprODlIaTVLR2ZwZlB3UzJiVWJmZCIKICAgIF0sIAogICAgWwogICAgICAgICIyQTFxMVlzTVpvd2FiYnZ0YTdrVHkyRmQ2cU40cjVaQ2VHM3FMcHZaQk16Q2l4TVVka04yWTRkSEIxd1BzWkFlVlhVR0Q4M01mUkVEIgogICAgXQpdCg==","base64")); +var dataEncodeDecode = JSON.parse(Buffer("WwpbIiIsICIiXSwKWyI2MSIsICIyZyJdLApbIjYyNjI2MiIsICJhM2dWIl0sClsiNjM2MzYzIiwgImFQRXIiXSwKWyI3MzY5NmQ3MDZjNzkyMDYxMjA2YzZmNmU2NzIwNzM3NDcyNjk2ZTY3IiwgIjJjRnVwamhuRXNTbjU5cUhYc3RtSzJmZnBMdjIiXSwKWyIwMGViMTUyMzFkZmNlYjYwOTI1ODg2YjY3ZDA2NTI5OTkyNTkxNWFlYjE3MmMwNjY0NyIsICIxTlMxN2lhZzlqSmdUSEQxVlhqdkxDRW5adVEzckpERTlMIl0sClsiNTE2YjZmY2QwZiIsICJBQm5MVG1nIl0sClsiYmY0Zjg5MDAxZTY3MDI3NGRkIiwgIjNTRW8zTFdMb1BudEMiXSwKWyI1NzJlNDc5NCIsICIzRUZVN20iXSwKWyJlY2FjODljYWQ5MzkyM2MwMjMyMSIsICJFSkRNOGRyZlhBNnV5QSJdLApbIjEwYzg1MTFlIiwgIlJ0NXptIl0sClsiMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCAiMTExMTExMTExMSJdCl0K","base64")); +var dataTxValid = JSON.parse(Buffer("WwpbIlRoZSBmb2xsb3dpbmcgYXJlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvbnMgd2hpY2ggYXJlIHZhbGlkLiJdLApbIlRoZXkgYXJlIGluIHRoZSBmb3JtIl0sClsiW1tbcHJldm91dCBoYXNoLCBwcmV2b3V0IGluZGV4LCBwcmV2b3V0IHNjcmlwdFB1YktleV0sIFtpbnB1dCAyXSwgLi4uXSwiXSwKWyJzZXJpYWxpemVkVHJhbnNhY3Rpb24sIGVuZm9yY2VQMlNIXSJdLApbIk9iamVjdHMgdGhhdCBhcmUgb25seSBhIHNpbmdsZSBzdHJpbmcgKGxpa2UgdGhpcyBvbmUpIGFyZSBpZ25vcmVkIl0sCgpbIlRoZSBmb2xsb3dpbmcgaXMgMjNiMzk3ZWRjY2QzNzQwYTc0YWRiNjAzYzk3NTYzNzBmYWZjZGU5YmNjNDQ4M2ViMjcxZWNhZDA5YTk0ZGQ2MyJdLApbIkl0IGlzIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QgYmVjYXVzZSBpdCBjb250YWlucyBhbiBpbnZhbGlkbHktZW5jb2RlZCBzaWduYXR1cmUgd2hpY2ggT3BlblNTTCBhY2NlcHRzIl0sClsiU2VlIGh0dHA6Ly9yNi5jYS9ibG9nLzIwMTExMTE5VDIxMTUwNFouaHRtbCJdLApbIkl0IGlzIGFsc28gdGhlIGZpcnN0IE9QX0NIRUNLTVVMVElTSUcgdHJhbnNhY3Rpb24gaW4gc3RhbmRhcmQgZm9ybSJdLApbW1siNjBhMjBiZDkzYWE0OWFiNGIyOGQ1MTRlYzEwYjA2ZTE4MjljZTY4MThlYzA2Y2QzYWFiZDAxM2ViY2RjNGJiMSIsIDAsICIxIDB4NDEgMHgwNGNjNzFlYjMwZDY1M2MwYzMxNjM5OTBjNDdiOTc2ZjNmYjNmMzdjY2NkY2JlZGIxNjlhMWRmZWY1OGJiZmJmYWZmN2Q4YTQ3M2U3ZTJlNmQzMTdiODdiYWZlOGJkZTk3ZTNjZjhmMDY1ZGVjMDIyYjUxZDExZmNkZDBkMzQ4YWM0IDB4NDEgMHgwNDYxY2JkY2M1NDA5ZmI0YjRkNDJiNTFkMzMzODEzNTRkODBlNTUwMDc4Y2I1MzJhMzRiZmEyZmNmZGViN2Q3NjUxOWFlY2M2Mjc3MGY1YjBlNGVmODU1MTk0NmQ4YTU0MDkxMWFiZTNlNzg1NGEyNmYzOWY1OGIyNWMxNTM0MmFmIDIgT1BfQ0hFQ0tNVUxUSVNJRyJdXSwKIjAxMDAwMDAwMDFiMTRiZGNiYzNlMDFiZGFhZDM2Y2MwOGU4MWU2OWM4MmUxMDYwYmMxNGU1MThkYjJiNDlhYTQzYWQ5MGJhMjYwMDAwMDAwMDA0OTAwNDczMDQ0MDIyMDNmMTZjNmY0MDE2MmFiNjg2NjIxZWYzMDAwYjA0ZTc1NDE4YTBjMGNiMmQ4YWViZWFjODk0YWUzNjBhYzFlNzgwMjIwZGRjMTVlY2RmYzM1MDdhYzQ4ZTE2ODFhMzNlYjYwOTk2NjMxYmY2YmY1YmMwYTA2ODJjNGRiNzQzY2U3Y2EyYjAxZmZmZmZmZmYwMTQwNDIwZjAwMDAwMDAwMDAxOTc2YTkxNDY2MGQ0ZWYzYTc0M2UzZTY5NmFkOTkwMzY0ZTU1NWMyNzFhZDUwNGI4OGFjMDAwMDAwMDAiLCB0cnVlXSwKClsiVGhlIGZvbGxvd2luZyBpcyBhIHR3ZWFrZWQgZm9ybSBvZiAyM2IzOTdlZGNjZDM3NDBhNzRhZGI2MDNjOTc1NjM3MGZhZmNkZTliY2M0NDgzZWIyNzFlY2FkMDlhOTRkZDYzIl0sClsiSXQgaGFzIGFuIGFyYml0cmFyeSBleHRyYSBieXRlIHN0dWZmZWQgaW50byB0aGUgc2lnbmF0dXJlIGF0IHBvcyBsZW5ndGggLSAyIl0sCltbWyI2MGEyMGJkOTNhYTQ5YWI0YjI4ZDUxNGVjMTBiMDZlMTgyOWNlNjgxOGVjMDZjZDNhYWJkMDEzZWJjZGM0YmIxIiwgMCwgIjEgMHg0MSAweDA0Y2M3MWViMzBkNjUzYzBjMzE2Mzk5MGM0N2I5NzZmM2ZiM2YzN2NjY2RjYmVkYjE2OWExZGZlZjU4YmJmYmZhZmY3ZDhhNDczZTdlMmU2ZDMxN2I4N2JhZmU4YmRlOTdlM2NmOGYwNjVkZWMwMjJiNTFkMTFmY2RkMGQzNDhhYzQgMHg0MSAweDA0NjFjYmRjYzU0MDlmYjRiNGQ0MmI1MWQzMzM4MTM1NGQ4MGU1NTAwNzhjYjUzMmEzNGJmYTJmY2ZkZWI3ZDc2NTE5YWVjYzYyNzcwZjViMGU0ZWY4NTUxOTQ2ZDhhNTQwOTExYWJlM2U3ODU0YTI2ZjM5ZjU4YjI1YzE1MzQyYWYgMiBPUF9DSEVDS01VTFRJU0lHIl1dLAoiMDEwMDAwMDAwMWIxNGJkY2JjM2UwMWJkYWFkMzZjYzA4ZTgxZTY5YzgyZTEwNjBiYzE0ZTUxOGRiMmI0OWFhNDNhZDkwYmEyNjAwMDAwMDAwMDRBMDA0ODMwNDQwMjIwM2YxNmM2ZjQwMTYyYWI2ODY2MjFlZjMwMDBiMDRlNzU0MThhMGMwY2IyZDhhZWJlYWM4OTRhZTM2MGFjMWU3ODAyMjBkZGMxNWVjZGZjMzUwN2FjNDhlMTY4MWEzM2ViNjA5OTY2MzFiZjZiZjViYzBhMDY4MmM0ZGI3NDNjZTdjYTJiYWIwMWZmZmZmZmZmMDE0MDQyMGYwMDAwMDAwMDAwMTk3NmE5MTQ2NjBkNGVmM2E3NDNlM2U2OTZhZDk5MDM2NGU1NTVjMjcxYWQ1MDRiODhhYzAwMDAwMDAwIiwgdHJ1ZV0sCgpbIlRoZSBmb2xsb3dpbmcgaXMgYzk5YzQ5ZGE0YzM4YWY2NjlkZWE0MzZkM2U3Mzc4MGRmZGI2YzFlY2Y5OTU4YmFhNTI5NjBlOGJhZWUzMGU3MyJdLApbIkl0IGlzIG9mIGludGVyZXN0IGJlY2F1c2UgaXQgY29udGFpbnMgYSAwLXNlcXVlbmNlIGFzIHdlbGwgYXMgYSBzaWduYXR1cmUgb2YgU0lHSEFTSCB0eXBlIDAgKHdoaWNoIGlzIG5vdCBhIHJlYWwgdHlwZSkiXSwKW1tbIjQwNmIyYjA2YmNkMzRkM2M4NzMzZTZiNzlmN2EzOTRjOGE0MzFmYmY0ZmY1YWM3MDVjOTNmNDA3NmJiNzc2MDIiLCAwLCAiRFVQIEhBU0gxNjAgMHgxNCAweGRjNDRiMTE2NDE4ODA2N2MzYTMyZDQ3ODBmNTk5NmZhMTRhNGYyZDkgRVFVQUxWRVJJRlkgQ0hFQ0tTSUciXV0sCiIwMTAwMDAwMDAxMDI3NmI3NmIwN2Y0OTM1YzcwYWNmNTRmYmYxZjQzOGE0YzM5N2E5ZmI3ZTYzMzg3M2M0ZGQzYmMwNjJiNmI0MDAwMDAwMDAwOGM0OTMwNDYwMjIxMDBkMjM0NTlkMDNlZDdlOTUxMWE0N2QxMzI5MmQzNDMwYTA0NjI3ZGU2MjM1YjZlNTFhNDBmOWNkMzg2ZjJhYmUzMDIyMTAwZTdkMjViMDgwZjBiYjhkOGQ1Zjg3OGJiYTdkNTRhZDJmZGE2NTBlYThkMTU4YTMzZWUzY2JkMTE3NjgxOTFmZDAwNDEwNGIwZTJjODc5ZTRkYWY3YjlhYjY4MzUwMjI4YzE1OTc2NjY3NmExNGY1ODE1MDg0YmExNjY0MzJhYWI0NjE5OGQ0Y2NhOThmYTNlOTk4MWQwYTkwYjJlZmZjNTE0Yjc2Mjc5NDc2NTUwYmEzNjYzZmRjYWZmOTRjMzg0MjBlOWQ1MDAwMDAwMDAwMTAwMDkzZDAwMDAwMDAwMDAxOTc2YTkxNDlhN2IwZjNiODBjNmJhYWVlZGNlMGEwODQyNTUzODAwZjgzMmJhMWY4OGFjMDAwMDAwMDAiLCB0cnVlXSwKClsiQSBuZWFybHktc3RhbmRhcmQgdHJhbnNhY3Rpb24gd2l0aCBDSEVDS1NJR1ZFUklGWSAxIGluc3RlYWQgb2YgQ0hFQ0tTSUciXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiRFVQIEhBU0gxNjAgMHgxNCAweDViNjQ2MjQ3NTQ1NDcxMGYzYzIyZjVmZGYwYjQwNzA0YzkyZjI1YzMgRVFVQUxWRVJJRlkgQ0hFQ0tTSUdWRVJJRlkgMSJdXSwKIjAxMDAwMDAwMDEwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2YTQ3MzA0NDAyMjA2NzI4OGVhNTBhYTc5OTU0M2E1MzZmZjkzMDZmOGUxY2JhMDViOWM2YjEwOTUxMTc1YjkyNGY5NjczMjU1NWVkMDIyMDI2ZDdiNTI2NWYzOGQyMTU0MTUxOWU0YTFlNTUwNDRkNWI5ZTE3ZTE1Y2RiYWYyOWFlMzc5MmU5OWU4ODNlN2EwMTIxMDNiYThjOGI4NmRlYTEzMWMyMmFiOTY3ZTZkZDk5YmRhZThlZmY3YTFmNzVhMmMzNWYxZjk0NDEwOWUzZmU1ZTIyZmZmZmZmZmYwMTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggdGhlIHNpZ25hdHVyZSBkdXBsaWNhdGVkIGluIHRoZSBzY3JpcHRQdWJLZXkgd2l0aCB0aGUgcHJvcGVyIHB1c2hkYXRhIHByZWZpeCJdLApbW1siMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMCIsIDAsICJEVVAgSEFTSDE2MCAweDE0IDB4NWI2NDYyNDc1NDU0NzEwZjNjMjJmNWZkZjBiNDA3MDRjOTJmMjVjMyBFUVVBTFZFUklGWSBDSEVDS1NJR1ZFUklGWSAxIDB4NDcgMHgzMDQ0MDIyMDY3Mjg4ZWE1MGFhNzk5NTQzYTUzNmZmOTMwNmY4ZTFjYmEwNWI5YzZiMTA5NTExNzViOTI0Zjk2NzMyNTU1ZWQwMjIwMjZkN2I1MjY1ZjM4ZDIxNTQxNTE5ZTRhMWU1NTA0NGQ1YjllMTdlMTVjZGJhZjI5YWUzNzkyZTk5ZTg4M2U3YTAxIl1dLAoiMDEwMDAwMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhNDczMDQ0MDIyMDY3Mjg4ZWE1MGFhNzk5NTQzYTUzNmZmOTMwNmY4ZTFjYmEwNWI5YzZiMTA5NTExNzViOTI0Zjk2NzMyNTU1ZWQwMjIwMjZkN2I1MjY1ZjM4ZDIxNTQxNTE5ZTRhMWU1NTA0NGQ1YjllMTdlMTVjZGJhZjI5YWUzNzkyZTk5ZTg4M2U3YTAxMjEwM2JhOGM4Yjg2ZGVhMTMxYzIyYWI5NjdlNmRkOTliZGFlOGVmZjdhMWY3NWEyYzM1ZjFmOTQ0MTA5ZTNmZTVlMjJmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJUaGUgZm9sbG93aW5nIGlzIGY3ZmRkMDkxZmE2ZDhmNWU3YThjMjQ1OGY1YzM4ZmFmZmZmMmQzZjE0MDZiNmU0ZmUyYzk5ZGNjMGQyZDFjYmIiXSwKWyJJdCBjYXVnaHQgYSBidWcgaW4gdGhlIHdvcmthcm91bmQgZm9yIDIzYjM5N2VkY2NkMzc0MGE3NGFkYjYwM2M5NzU2MzcwZmFmY2RlOWJjYzQ0ODNlYjI3MWVjYWQwOWE5NGRkNjMgaW4gYW4gb3Zlcmx5IHNpbXBsZSBpbXBsZW1lbnRhdGlvbiJdLApbW1siYjQ2NGU4NWRmMmEyMzg0MTZmOGJkYWUxMWQxMjBhZGQ2MTAzODBlYTA3ZjRlZjE5YzVmOWRmZDQ3MmY5NmMzZCIsIDAsICJEVVAgSEFTSDE2MCAweDE0IDB4YmVmODBlY2YzYTQ0NTAwZmRhMWJjOTIxNzZlNDQyODkxNjYyYWVkMiBFUVVBTFZFUklGWSBDSEVDS1NJRyJdLApbImI3OTc4Y2M5NmU1OWE4YjEzZTA4NjVkM2Y5NTY1NzU2MWE3ZjcyNWJlOTUyNDM4NjM3NDc1OTIwYmFjOWViMjEiLCAxLCAiRFVQIEhBU0gxNjAgMHgxNCAweGJlZjgwZWNmM2E0NDUwMGZkYTFiYzkyMTc2ZTQ0Mjg5MTY2MmFlZDIgRVFVQUxWRVJJRlkgQ0hFQ0tTSUciXV0sCiIwMTAwMDAwMDAyM2Q2Y2Y5NzJkNGRmZjljNTE5ZWZmNDA3ZWE4MDAzNjFkZDBhMTIxZGUxZGE4YjZmNDEzOGEyZjI1ZGU4NjRiNDAwMDAwMDAwOGE0NzMwNDQwMjIwZmZkYTQ3YmZjNzc2YmNkMjY5ZGE0ODMyNjI2YWMzMzJhZGZjYTZkZDgzNWU4ZWNkODNjZDFlYmU3ZDcwOWIwZTAyMjA0OWNmZmExY2RjMTAyYTBiNTZlMGUwNDkxMzYwNmM3MGFmNzAyYTExNDlkYzNiMzA1YWI5NDM5Mjg4ZmVlMDkwMDE0MTA0MjY2YWJiMzZkNjZlYjQyMThhNmRkMzFmMDliYjkyY2YzY2ZhODAzYzdlYTcyYzFmYzgwYTUwZjkxOTI3M2U2MTNmODk1Yjg1NWZiNzQ2NWNjYmM4OTE5YWQxYmQ0YTMwNmM3ODNmMjJjZDMyMjczMjc2OTRjNGZhNGMxYzQzOWFmZmZmZmZmZjIxZWJjOWJhMjA1OTQ3Mzc4NjQzNTJlOTViNzI3ZjFhNTY1NzU2ZjlkMzY1MDgzZWIxYTg1OTZlYzk4Yzk3YjcwMTAwMDAwMDhhNDczMDQ0MDIyMDUwM2ZmMTBlOWYxZTBkZTczMTQwN2E0YTI0NTUzMWM5ZmYxNzY3NmVkYTQ2MWY4Y2VlYjhjMDYwNDlmYTJjODEwMjIwYzAwOGFjMzQ2OTQ1MTAyOThmYTYwYjNmMDAwZGYwMWNhYTI0NGYxNjViNzI3ZDQ4OTZlYjg0ZjgxZTQ2YmNjNDAxNDEwNDI2NmFiYjM2ZDY2ZWI0MjE4YTZkZDMxZjA5YmI5MmNmM2NmYTgwM2M3ZWE3MmMxZmM4MGE1MGY5MTkyNzNlNjEzZjg5NWI4NTVmYjc0NjVjY2JjODkxOWFkMWJkNGEzMDZjNzgzZjIyY2QzMjI3MzI3Njk0YzRmYTRjMWM0MzlhZmZmZmZmZmYwMWYwZGE1MjAwMDAwMDAwMDAxOTc2YTkxNDg1N2NjZDQyZGRlZDZkZjMyOTQ5ZDQ2NDZkZmExMGE5MjQ1OGNmYWE4OGFjMDAwMDAwMDAiLCB0cnVlXSwKClsiVGhlIGZvbGxvd2luZyB0ZXN0cyBmb3IgdGhlIHByZXNlbmNlIG9mIGEgYnVnIGluIHRoZSBoYW5kbGluZyBvZiBTSUdIQVNIX1NJTkdMRSJdLApbIkl0IHJlc3VsdHMgaW4gc2lnbmluZyB0aGUgY29uc3RhbnQgMSwgaW5zdGVhZCBvZiBzb21ldGhpbmcgZ2VuZXJhdGVkIGJhc2VkIG9uIHRoZSB0cmFuc2FjdGlvbiwiXSwKWyJ3aGVuIHRoZSBpbnB1dCBkb2luZyB0aGUgc2lnbmluZyBoYXMgYW4gaW5kZXggZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIG91dHB1dCBpbmRleCJdLApbW1siMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMCIsIDAsICJEVVAgSEFTSDE2MCAweDE0IDB4ZTUyYjQ4MmYyZmFhOGVjYmYwZGIzNDRmOTNjODRhYzkwODU1N2YzMyBFUVVBTFZFUklGWSBDSEVDS1NJRyJdLCBbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAiLCAwLCAiMSJdXSwKIjAxMDAwMDAwMDIwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTUxZmZmZmZmZmYwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2YjQ4MzA0NTAyMjEwMGM5Y2RkMDg3OThhMjhhZjlkMWJhZjQ0YTZjNzdiY2M3ZTI3OWY0N2RjNDg3YzhjODk5OTExYmM0OGZlYWZmY2MwMjIwNTAzYzVjNTBhZTM5OThhNzMzMjYzYzVjMGY3MDYxYjQ4M2UyYjU2YzRjNDFiNDU2ZTdkMmY1YTc4YTc0YzA3NzAzMjEwMmQ1YzI1YWRiNTFiNjEzMzlkMmIwNTMxNTc5MWUyMWJiZTgwZWE0NzBhNDlkYjAxMzU3MjA5ODNjOTA1YWFjZTBmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJBbiBpbnZhbGlkIFAyU0ggVHJhbnNhY3Rpb24iXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiSEFTSDE2MCAweDE0IDB4N2EwNTJjODQwYmE3M2FmMjY3NTVkZTQyY2YwMWNjOWUwYTQ5ZmVmMCBFUVVBTCJdXSwKIjAxMDAwMDAwMDEwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTA4NTc2ODYxNzQyMDY5NzMyMGZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgZmFsc2VdLAoKWyJBIHZhbGlkIFAyU0ggVHJhbnNhY3Rpb24gdXNpbmcgdGhlIHN0YW5kYXJkIHRyYW5zYWN0aW9uIHR5cGUgcHV0IGZvcnRoIGluIEJJUCAxNiJdLApbW1siMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMCIsIDAsICJIQVNIMTYwIDB4MTQgMHg4ZmViYmVkNDA0ODM2NjFkZTY5NThkOTU3NDEyZjgyZGVlZDhlMmY3IEVRVUFMIl1dLAoiMDEwMDAwMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZlNDkzMDQ2MDIyMTAwYzY2YzljZGY0YzQzNjA5NTg2ZDE1NDI0YzU0NzA3MTU2ZTMxNmQ4OGIwYTE1MzRjOWU2YjBkNGYzMTE0MDYzMTAyMjEwMDljMGZlNTFkYmM5YzRhYjdjYzI1ZDNmZGJlY2NmNjY3OWZlNjgyN2YwOGVkZjJiNGE5ZjE2ZWUzZWIwZTQzOGEwMTIzMjEwMzM4ZTgwMzQ1MDlhZjU2NGM2MjY0NGMwNzY5MTk0MmUwYzA1Njc1MjAwOGExNzNjODlmNjBhYjJhODhhYzJlYmZhY2ZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgdHJ1ZV0sCgpbIlRlc3RzIGZvciBDaGVja1RyYW5zYWN0aW9uKCkiXSwKWyJNQVhfTU9ORVkgb3V0cHV0Il0sCltbWyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwIiwgMCwgIkhBU0gxNjAgMHgxNCAweDMyYWZhYzI4MTQ2MmI4MjJhZGJlYzUwOTRiOGQ0ZDMzN2RkNWJkNmEgRVFVQUwiXV0sCiIwMTAwMDAwMDAxMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmU0OTMwNDYwMjIxMDBlMWVhZGJhMDBkOTI5NmM3NDNjYjZlY2M3MDNmZDlkZGM5YjNjZDEyOTA2MTc2YTIyNmFlNGMxOGQ2YjAwNzk2MDIyMTAwYTcxYWVmN2QyODc0ZGVmZjY4MWJhNjA4MGYxYjI3OGJhYzdiYjk5YzYxYjA4YTg1ZjQzMTE5NzBmZmU3ZjYzZjAxMjMyMTAzMGMwNTg4ZGM0NGQ5MmJkY2JmOGU3MjA5MzQ2Njc2NmZkYzI2NWVhZDhkYjY0NTE3YjBjNTQyMjc1YjcwZmZmYmFjZmZmZmZmZmYwMTAwNDAwNzVhZjA3NTA3MDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiTUFYX01PTkVZIG91dHB1dCArIDAgb3V0cHV0Il0sCltbWyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwIiwgMCwgIkhBU0gxNjAgMHgxNCAweGI1NThjYmY0OTMwOTU0YWE2YTM0NDM2M2ExNTY2OGQ3NDc3YWU3MTYgRVFVQUwiXV0sCiIwMTAwMDAwMDAxMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmQ0ODMwNDUwMjIwMjdkZWNjYzE0YWE2NjY4ZTc4YThjOWRhMzQ4NGZiY2Q0ZjlkY2M5YmI3ZDFiODUxNDYzMTRiMjFiOWFlNGQ4NjAyMjEwMGQwYjQzZGVjZThjZmIwNzM0OGRlMGNhOGJjNWI4NjI3NmZhODhmN2YyMTM4MzgxMTI4YjdjMzZhYjJlNDIyNjQwMTIzMjEwMjliYjEzNDYzZGRkNWQyY2MwNWRhNmU4NGUzNzUzNmNiOTUyNTcwM2NmZDhmNDNhZmRiNDE0OTg4OTg3YTkyZjZhY2ZmZmZmZmZmMDIwMDQwMDc1YWYwNzUwNzAwMDE1MTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiQ29pbmJhc2Ugb2Ygc2l6ZSAyIl0sClsiTm90ZSB0aGUgaW5wdXQgaXMganVzdCByZXF1aXJlZCB0byBtYWtlIHRoZSB0ZXN0ZXIgaGFwcHkiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCAtMSwgIjEiXV0sCiIwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmZmZmZmZmMDI1MTUxZmZmZmZmZmYwMTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiQ29pbmJhc2Ugb2Ygc2l6ZSAxMDAiXSwKWyJOb3RlIHRoZSBpbnB1dCBpcyBqdXN0IHJlcXVpcmVkIHRvIG1ha2UgdGhlIHRlc3RlciBoYXBweSJdLApbW1siMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIC0xLCAiMSJdXSwKIjAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmZmZmZmZmY2NDUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxZmZmZmZmZmYwMTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiU2ltcGxlIHRyYW5zYWN0aW9uIHdpdGggZmlyc3QgaW5wdXQgaXMgc2lnbmVkIHdpdGggU0lHSEFTSF9BTEwsIHNlY29uZCB3aXRoIFNJR0hBU0hfQU5ZT05FQ0FOUEFZIl0sCltbWyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwIiwgMCwgIjB4MjEgMHgwMzVlN2YwZDRkMDg0MWJjZDU2YzM5MzM3ZWQwODZiMWE2MzNlZTc3MGMxZmZkZDk0YWM1NTJhOTVhYzJjZTBlZmMgQ0hFQ0tTSUciXSwKICBbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAiLCAwLCAiMHgyMSAweDAzNWU3ZjBkNGQwODQxYmNkNTZjMzkzMzdlZDA4NmIxYTYzM2VlNzcwYzFmZmRkOTRhYzU1MmE5NWFjMmNlMGVmYyBDSEVDS1NJRyJdXSwKICIwMTAwMDAwMDAyMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDk0ODMwNDUwMjIxMDBkMTgwZmQyZWI5MTQwYWViNDIxMGM5MjA0ZDNmMzU4NzY2ZWI1Mzg0MmIyYTk0NzNkYjY4N2ZhMjRiMTJhM2NjMDIyMDc5NzgxNzk5Y2Q0ZjAzOGI4NTEzNWJiZTQ5ZWMyYjU3ZjMwNmIyYmIxNzEwMWIxN2Y3MWYwMDBmY2FiMmI2ZmIwMWZmZmZmZmZmMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDg0NzMwNDQwMjIwNWY3NTMwNjUzZWVhOWIzODY5OWU0NzYzMjBhYjEzNWI3NDc3MWUxYzQ4YjgxYTVkMDQxZTJjYTg0YjliZTdhODAyMjAwYWM4ZDFmNDBmYjAyNjY3NGZlNWE1ZWRkM2RlYTcxNWMyN2JhYTliYWNhNTFlZDQ1ZWE3NTBhYzlkYzBhNTVlODFmZmZmZmZmZjAxMDEwMDAwMDAwMDAwMDAwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJTYW1lIGFzIGFib3ZlLCBidXQgd2UgY2hhbmdlIHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGZpcnN0IGlucHV0IHRvIGNoZWNrIHRoYXQgU0lHSEFTSF9BTllPTkVDQU5QQVkgaXMgYmVpbmcgZm9sbG93ZWQiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiMHgyMSAweDAzNWU3ZjBkNGQwODQxYmNkNTZjMzkzMzdlZDA4NmIxYTYzM2VlNzcwYzFmZmRkOTRhYzU1MmE5NWFjMmNlMGVmYyBDSEVDS1NJRyJdLAogIFsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMCIsIDAsICIweDIxIDB4MDM1ZTdmMGQ0ZDA4NDFiY2Q1NmMzOTMzN2VkMDg2YjFhNjMzZWU3NzBjMWZmZGQ5NGFjNTUyYTk1YWMyY2UwZWZjIENIRUNLU0lHIl1dLAogIjAxMDAwMDAwMDIwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTQ4MzA0NTAyMjAzYTBmNWYwZTFmMmJkYmNkMDRkYjMwNjFkMThmM2FmNzBlMDdmNGY0NjdjYmMxYjgxMTZmMjY3MDI1ZjUzNjBiMDIyMTAwYzc5MmI2ZTIxNWFmYzVhZmM3MjFhMzUxZWM0MTNlNzE0MzA1Y2I3NDlhYWUzZDdmZWU3NjYyMTMxMzQxOGRmMTAxMDEwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0ODQ3MzA0NDAyMjA1Zjc1MzA2NTNlZWE5YjM4Njk5ZTQ3NjMyMGFiMTM1Yjc0NzcxZTFjNDhiODFhNWQwNDFlMmNhODRiOWJlN2E4MDIyMDBhYzhkMWY0MGZiMDI2Njc0ZmU1YTVlZGQzZGVhNzE1YzI3YmFhOWJhY2E1MWVkNDVlYTc1MGFjOWRjMGE1NWU4MWZmZmZmZmZmMDEwMTAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgdHJ1ZV0sCgpbImFmZDljMTdmODkxMzU3N2VjMzUwOTUyMGJkNmU1ZDYzZTljMGZkMmE1ZjcwYzc4Nzk5M2IwOTdiYTZjYTlmYWUgd2hpY2ggaGFzIHNldmVyYWwgU0lHSEFTSF9TSU5HTEUgc2lnbmF0dXJlcyJdLApbW1siNjNjZmE1YTA5ZGM1NDBiZjYzZTUzNzEzYjgyZDllYTM2OTJjYTk3Y2Q2MDhjMzg0ZjJhYTg4ZTUxYTBhYWM3MCIsIDAsICJEVVAgSEFTSDE2MCAweDE0IDB4ZGNmNzJjNGZkMDJmNWE5ODdjZjliMDJmMmZhYmZjYWMzMzQxYTg3ZCBFUVVBTFZFUklGWSBDSEVDS1NJRyJdLAogWyIwNGU4ZDBmY2YzODQ2YzY3MzQ0NzdiOThmMGYzZDRiYWRmYjc4ZjAyMGVlMDk3YTBiZTVmZTM0NzY0NWI4MTdkIiwgMSwgIkRVUCBIQVNIMTYwIDB4MTQgMHhkY2Y3MmM0ZmQwMmY1YTk4N2NmOWIwMmYyZmFiZmNhYzMzNDFhODdkIEVRVUFMVkVSSUZZIENIRUNLU0lHIl0sCiBbImVlMTM3N2FmZjVkMDU3OTkwOWUxMTc4MmUxZDJmNWY3Yjg0ZDI2NTM3YmU3ZjU1MTZkZDRlNDMzNzMwOTFmM2YiLCAxLCAiRFVQIEhBU0gxNjAgMHgxNCAweGRjZjcyYzRmZDAyZjVhOTg3Y2Y5YjAyZjJmYWJmY2FjMzM0MWE4N2QgRVFVQUxWRVJJRlkgQ0hFQ0tTSUciXV0sCiAiMDEwMDAwMDAwMzcwYWMwYTFhZTU4OGFhZjI4NGMzMDhkNjdjYTkyYzY5YTM5ZTJkYjgxMzM3ZTU2M2JmNDBjNTlkYTBhNWNmNjMwMDAwMDAwMDZhNDczMDQ0MDIyMDM2MGQyMGJhZmYzODIwNTkwNDBiYTliZTk4OTQ3ZmQ2NzhmYjA4YWFiMmJiMGMxNzJlZmE5OTZmZDhlY2U5YjcwMjIwMWI0ZmIwZGU2N2YwMTVjOTBlN2FjOGExOTNhZWFiNDg2YTFmNTg3ZTBmNTRkMGZiOTU1MmVmN2Y1Y2U2Y2FlYzAzMjEwMzU3OWNhMmU2ZDEwNzUyMmYwMTJjZDAwYjUyYjlhNjVmYjQ2ZjBjNTdiOWI4YjZlMzc3YzQ4ZjUyNmE0NDc0MWFmZmZmZmZmZjdkODE1YjY0NDdlMzVmYmVhMDk3ZTAwZTAyOGZiN2RmYmFkNGYzZjA5ODdiNDczNDY3NmM4NGYzZmNkMGU4MDQwMTAwMDAwMDZiNDgzMDQ1MDIyMTAwYzcxNDMxMGJlMWUzYTlmZjFjNWY3Y2FjYzY1YzJkOGU3ODFmYzNhODhjZWIwNjNjNjE1M2JmOTUwNjUwODAyMTAyMjAwYjJkMDk3OWM3NmUxMmJiNDgwZGE2MzVmMTkyY2M4ZGM2ZjkwNTM4MGRkNGFjMWZmMzVhNGY2OGY0NjJmZmZkMDMyMTAzNTc5Y2EyZTZkMTA3NTIyZjAxMmNkMDBiNTJiOWE2NWZiNDZmMGM1N2I5YjhiNmUzNzdjNDhmNTI2YTQ0NzQxYWZmZmZmZmZmM2YxZjA5NzMzM2U0ZDQ2ZDUxZjVlNzdiNTMyNjRkYjhmN2Y1ZDJlMTgyMTdlMTA5OTk1N2QwZjVhZjc3MTNlZTAxMDAwMDAwNmM0OTMwNDYwMjIxMDBiNjYzNDk5ZWY3MzI3M2EzNzg4ZGVhMzQyNzE3YzI2NDBhYzQzYzVhMWNmODYyYzllMDliMjA2ZmNiM2Y2YmI4MDIyMTAwYjA5OTcyZTc1OTcyZDkxNDhmMmJkZDQ2MmU1Y2I2OWI1N2MxMjE0Yjg4ZmM1NWNhNjM4Njc2YzA3Y2ZjMTBkODAzMjEwMzU3OWNhMmU2ZDEwNzUyMmYwMTJjZDAwYjUyYjlhNjVmYjQ2ZjBjNTdiOWI4YjZlMzc3YzQ4ZjUyNmE0NDc0MWFmZmZmZmZmZjAzODA4NDFlMDAwMDAwMDAwMDE5NzZhOTE0YmZiMjgyYzcwYzQxOTFmNDViNWE2NjY1Y2FkMTY4MmYyYzljZmRmYjg4YWM4MDg0MWUwMDAwMDAwMDAwMTk3NmE5MTQ5ODU3Y2MwN2JlZDMzYTVjZjEyYjljNWUwNTAwYjY3NWQ1MDBjODExODhhY2UwZmQxYzAwMDAwMDAwMDAxOTc2YTkxNDQzYzUyODUwNjA2Yzg3MjQwM2MwNjAxZTY5ZmEzNGIyNmY2MmRiNGE4OGFjMDAwMDAwMDAiLCB0cnVlXSwKCiBbImRkYzQ1NGExYzBjMzVjMTg4Yzk4OTc2YjE3NjcwZjY5ZTU4NmQ5YzBmMzU5M2VhODc5OTI4MzMyZjBhMDY5ZTcsIHdoaWNoIHNwZW5kcyBhbiBpbnB1dCB0aGF0IHB1c2hlcyB1c2luZyBhIFBVU0hEQVRBMSB0aGF0IGlzIG5lZ2F0aXZlIHdoZW4gcmVhZCBhcyBzaWduZWQiXSwKIFtbWyJjNTUxMGE1ZGQ5N2EyNWY0MzE3NWFmMWZlNjQ5YjcwN2IxZGY4ZTFhNDE0ODliYWMzM2EyMzA4NzAyN2EyZjQ4IiwgMCwgIjB4NGMgMHhhZSAweDYwNjU2MzY4NmYyMDIyNTUzMjQ2NzM2NDQ3NTY2YjU4MzEyYjVhNTM2ZTU4NzU3NDM1NjU0Mjc5MzA2Njc5NDc3ODYyNTQ1NjQxNTY3NTUzNGE2YzM3NmE2YTMzNDg3ODQxNjk0NTMyNTM2NDY2NzY1NzczNGY1MzQ3NGYzNjYzMzMzODU4NGQ3NDM5NDM1YzZlNTQzMjQ5NTg0OTY3MzA2YTQ4Njk1NjMwNGYzNzZlNzc1MjM2NjQ0NTQ2NjczZDNkMjIyMDNlMjA3NDNiMjA2ZjcwNjU2ZTczNzM2YzIwNjU2ZTYzMjAyZDcwNjE3MzczMjA3MDYxNzM3MzNhNWIzMTRhNTY0ZDc3NTE0MzJkNzA3MjY5NzY2YjY1NzkyZDY4NjU3ODVkMjAyZDY0MjAyZDYxNjU3MzJkMzIzNTM2MmQ2MzYyNjMyMDJkNjEyMDJkNjk2ZTIwNzQ2MCBEUk9QIERVUCBIQVNIMTYwIDB4MTQgMHhiZmQ3NDM2YjYyNjVhYTlkZTUwNmY4YTk5NGY4ODFmZjA4Y2MyODcyIEVRVUFMVkVSSUZZIENIRUNLU0lHIl1dLAogIjAxMDAwMDAwMDE0ODJmN2EwMjg3MzBhMjMzYWM5YjQ4NDExYThlZGZiMTA3Yjc0OWU2MWZhZjc1MzFmNDI1N2FkOTVkMGE1MWM1MDAwMDAwMDA4YjQ4MzA0NTAyMjEwMGJmMGJiYWU5YmRlNTFhZDJiMjIyZTg3ZmJmNjc1MzBmYmFmYzI1YzkwMzUxOWExZTVkY2M1MmEzMmZmNTg0NGUwMjIwMjhjNGQ5YWQ0OWIwMDZkZDU5OTc0MzcyYTU0MjkxZDU3NjRiZTU0MTU3NGJiMGM0ZGMyMDhlYzUxZjgwYjcxOTAxNDEwNDlkZDRhYWQ2Mjc0MWRjMjdkNWYyNjdmN2I3MDY4MmVlZTIyZTdlOWMxOTIzYjljMDk1N2JkYWUwYjk2Mzc0NTY5YjQ2MGViOGQ1YjQwZDk3MmU4YzdjMGFkNDQxZGUzZDk0YzRhMjk4NjRiMjEyZDU2MDUwYWNiOTgwYjcyYjJiZmZmZmZmZmYwMTgwOTY5ODAwMDAwMDAwMDAxOTc2YTkxNGUzMzZkMDAxN2E5ZDI4ZGU5OWQxNjQ3MmY2Y2E2ZDVhM2E4ZWJjOTk4OGFjMDAwMDAwMDAiLCB0cnVlXSwKClsiQ29ycmVjdCBzaWduYXR1cmUgb3JkZXIiXSwKWyJOb3RlIHRoZSBpbnB1dCBpcyBqdXN0IHJlcXVpcmVkIHRvIG1ha2UgdGhlIHRlc3RlciBoYXBweSJdLApbW1siYjNkYTAxZGQ0YWFlNjgzYzdhZWU0ZDVkOGI1MmE1NDBhNTA4ZTExMTVmNzdjZDdmYTlhMjkxMjQzZjUwMTIyMyIsIDAsICJIQVNIMTYwIDB4MTQgMHhiMWNlOTkyOThkNWYwNzM2NGI1N2IxZTVjOWNjMDBiZTBiMDRhOTU0IEVRVUFMIl1dLAoiMDEwMDAwMDAwMTIzMTI1MDNmMjQ5MWEyYTk3ZmNkNzc1ZjExZTEwOGE1NDBhNTUyOGI1ZDRkZWU3YTNjNjhhZTRhZGQwMWRhYjMwMDAwMDAwMGZkZmUwMDAwNDgzMDQ1MDIyMTAwZjY2NDliMGVkZGZkZmQ0YWQ1NTQyNjY2MzM4NTA5MGQ1MWVlODZjMzQ4MWJkYzZiMGMxOGVhNmMwZWNlMmMwYjAyMjA1NjFjMzE1YjA3Y2ZmYTZmN2RkOWRmOTZkYmFlOTIwMGMyZGVlMDliZjkzY2MzNWNhMDVlNmNkZjYxMzM0MGFhMDE0ODMwNDUwMjIwN2FhY2VlODIwZTA4YjBiMTc0ZTI0OGFiZDhkN2EzNGVkNjNiNWRhM2FiZWRiOTk5MzRkZjlmZGRkNjVjMDVjNDAyMjEwMGRmZTg3ODk2YWI1ZWUzZGY0NzZjMjY1NWY5ZmJlNWJkMDg5ZGNjYmVmM2U0ZWEwNWI1ZDEyMTE2OWZlN2Y1ZjQwMTRjNjk1MjIxMDMxZDExZGIzODk3MmI3MTJhOWZlMWZjMDIzNTc3YzdhZTNkZGI0YTMwMDQxODdkNDFjNDUxMjFlZWNmZGJiNWI3MjEwMjA3ZWMzNjkxMWI2YWQyMzgyODYwZDMyOTg5YzdiODcyOGU5NDg5ZDdiYmM5NGE2YjU1MDllZjAwMjliZTEyODgyMTAyNGVhOWZhYzA2ZjY2NmE0YWRjM2ZjMTM1N2I3YmVjMWZkMGJkZWNlMmI5ZDA4NTc5MjI2YThlYmRlNTMwNThlNDUzYWVmZmZmZmZmZjAxODAzODAxMDAwMDAwMDAwMDE5NzZhOTE0YzliOTljZGRmODQ3ZDEwNjg1YTRmYWJhYTBiYWY1MDVmN2MzZGZhYjg4YWMwMDAwMDAwMCIsIHRydWVdLAoKWyJjYzYwYjFmODk5ZWMwYTY5YjdjM2YyNWRkZjMyYzQ1MjQwOTZhOWM1YjAxY2JkODRjNmQwMzEyYTBjNDc4OTg0LCB3aGljaCBpcyBhIGZhaXJseSBzdHJhbmdlIHRyYW5zYWN0aW9uIHdoaWNoIHJlbGllcyBvbiBPUF9DSEVDS1NJRyByZXR1cm5pbmcgMCB3aGVuIGNoZWNraW5nIGEgY29tcGxldGVseSBpbnZhbGlkIHNpZyBvZiBsZW5ndGggMCJdLApbW1siY2JlYmM0ZGE3MzFlODk5NWZlOTdmNmZhZGNkNzMxYjM2YWQ0MGU1ZWNiMzFlMzhlOTA0ZjZlNTk4MmZhMDlmNyIsIDAsICIweDIxMDIwODVjNjYwMDY1NzU2NmFjYzJkNjM4MmE0N2JjM2YzMjQwMDhkMmFhMTA5NDBkZDc3MDVhNDhhYTJhNWE1ZTMzYWM3YzIxMDNmNWQwZmI5NTVmOTVkZDZiZTYxMTVjZTg1NjYxZGI0MTJlYzZhMDhhYmNiZmNlN2RhMGJhODI5N2M2Y2MwZWM0YWM3YzUzNzlhODIwZDY4ZGY5ZTMyYTE0N2NmZmEzNjE5M2M2ZjdjNDNhMWM4YzY5Y2RhNTMwZTFjNmRiMzU0YmZhYmRjZmVmYWYzYzg3NTM3OWE4MjBmNTMxZjMwNDFkMzEzNjcwMWVhMDkwNjdjNTNlNzE1OWM4ZjliMjc0NmE1NmMzZDgyOTY2YzU0YmJjNTUzMjI2ODc5YTU0Nzk4Mjc3MDEyMDAxMjJhNTlhNTM3OTgyNzcwMTIwMDEyMmE1OWE2MzUzNzk4Mjc3NTM3OTgyNzc4Nzc5Njc5YTY4Il1dLAoiMDEwMDAwMDAwMWY3MDlmYTgyNTk2ZTRmOTA4ZWUzMzFjYjVlMGVkNDZhYjMzMWQ3ZGNmYWY2OTdmZTk1ODkxZTczZGFjNGViY2IwMDAwMDAwMDhjMjBjYTQyMDk1ODQwNzM1ZTg5MjgzZmVjMjk4ZTYyYWMyZGRlYTliNWYzNGE4Y2JiNzA5N2FkOTY1Yjg3NTY4MTAwMjAxYjFiMDFkYzgyOTE3N2RhNGExNDU1MWQyZmM5NmE5ZGIwMGM2NTAxZWRmYTEyZjIyY2Q5Y2VmZDMzNWMyMjdmNDgzMDQ1MDIyMTAwYTlkZjYwNTM2ZGY1NzMzZGQwZGU2YmM5MjFmYWIwYjNlZWU2NDI2NTAxYjQzYTIyOGFmYTJjOTAwNzJlYjVjYTAyMjAxYzc4Yjc0MjY2ZmFjN2QxZGI1ZGVmZjA4MGQ4YTQwMzc0MzIwM2YxMDlmYmNhYmY2ZDVhNzYwYmY4NzM4NmQyMDEwMGZmZmZmZmZmMDFjMDc1NzkwMDAwMDAwMDAwMjMyMTAzNjExZjlhNDVjMThmMjhmMDZmMTkwNzZhZDU3MWMzNDRjODJjZThmY2ZlMzQ0NjRjZjgwODUyMTdhMmQyOTRhNmFjMDAwMDAwMDAiLCB0cnVlXSwKClsiRW1wdHkgcHVia2V5Il0sCltbWyIyMjkyNTdjMjk1ZTdmNTU1NDIxYzFiZmVjODUzOGRkMzBhNGI1YzM3YzFjODgxMGJiZTgzY2FmYTc4MTE2NTJjIiwgMCwgIjB4MDAgQ0hFQ0tTSUcgTk9UIl1dLAoiMDEwMDAwMDAwMTJjNjUxMTc4ZmFjYTgzYmUwYjgxYzhjMTM3NWM0YjBhZDM4ZDUzYzhmZTFiMWM0MjU1ZjVlNzk1YzI1NzkyMjIwMDAwMDAwMDQ5NDgzMDQ1MDIyMTAwZDYwNDQ1NjIyODRhYzc2Yzk4NTAxOGZjNGE5MDEyNzg0NzcwOGM5ZWRiMjgwOTk2YzUwN2IyOGJhYmRjNGIyYTAyMjAzZDc0ZWNhM2YxYTRkMWVlYTdmZjc3YjUyOGZkZTZkNWRjMzI0ZWMyZGJmZGI5NjRiYTg4NWY2NDNiOTcwNGNkMDFmZmZmZmZmZjAxMDEwMDAwMDAwMDAwMDAwMDIzMjEwMmMyNDEwZjg4OTFhZTkxOGNhYjRmZmM0YmI0YTNiMDg4MWJlNjdjN2ExZTdmYWE4YjVhY2Y5YWI4OTMyZWMzMGNhYzAwMDAwMDAwIiwgdHJ1ZV0sCgpbIkVtcHR5IHNpZ25hdHVyZSJdLApbW1siOWNhOTNjZmQ4ZTM4MDZiOWQ5ZTJiYTFjZjY0ZTNjYzY5NDZlZTAxMTk2NzBiMTc5NmEwOTkyOGQxNGVhMjVmNyIsIDAsICIweDIxIDB4MDI4YTFkNjY5NzVkYmRmOTc4OTdlM2E0YWVmNDUwZWJlYjViNTI5M2U0YTBiNGE2ZDNhMmRhYWEwYjJiMTEwZTAyIENIRUNLU0lHIE5PVCJdXSwKIjAxMDAwMDAwMDFmNzI1ZWExNDhkOTIwOTZhNzliMTcwOTYxMWUwNmU5NGM2M2M0ZWY2MWNiYWUyZDliOTA2Mzg4ZWZkM2NhOTljMDAwMDAwMDAwMTAwZmZmZmZmZmYwMTAxMDAwMDAwMDAwMDAwMDAyMzIxMDI4YTFkNjY5NzVkYmRmOTc4OTdlM2E0YWVmNDUwZWJlYjViNTI5M2U0YTBiNGE2ZDNhMmRhYWEwYjJiMTEwZTAyYWMwMDAwMDAwMCIsIHRydWVdLAoKW1tbIjQ0NGUwMGVkNzg0MGQ0MWYyMGVjZDljMTFkM2Y5MTk4MjMyNmM3MzFhMDJmM2MwNTc0ODQxNGE0ZmE5ZTU5YmUiLCAwLCAiMSAweDAwIDB4MjEgMHgwMjEzNmIwNDc1OGIwYjZlMzYzZTdhNmZiZTgzYWFmNTI3YTE1M2RiMmIwNjBkMzZjYzI5ZjdmODMwOWJhNmU0NTggMiBDSEVDS01VTFRJU0lHIl1dLAoiMDEwMDAwMDAwMWJlNTk5ZWZhYTQxNDg0NzQwNTNjMmZhMDMxYzcyNjIzOTg5MTNmMWRjMWQ5ZWMyMDFmZDQ0MDc4ZWQwMDRlNDQwMDAwMDAwMDQ5MDA0NzMwNDQwMjIwMjJiMjk3MDZjYjJlZDllZjBjYjNjOTdiNzI2NzdjYTJkZmQ3YjQxNjBmN2I0YmViM2JhODA2YWE4NTZjNDAxNTAyMjAyZDFlNTI1ODI0MTJlYmEyZWQ0NzRmMWY0MzdhNDI3NjQwMzA2ZmQzODM4NzI1ZmFiMTczYWRlN2ZlNGVhZTRhMDFmZmZmZmZmZjAxMDEwMDAwMDAwMDAwMDAwMDIzMjEwM2FjNGJiYTdlN2NhM2U4NzNlZWE0OWUwODEzMmFkMzBjN2YwMzY0MGI2NTM5ZTliNTk5MDNjZjE0ZmQwMTZiYmJhYzAwMDAwMDAwIiwgdHJ1ZV0sCgpbW1siZTE2YWJiZTgwYmYzMGMwODBmNjM4MzBjOGRiZjY2OWRlYWVmMDg5NTc0NDZlOTU5NDAyMjdkOGM1ZTZkYjYxMiIsIDAsICIxIDB4MjEgMHgwMzkwNTM4MGM3MDEzZTM2ZTZlMTlkMzA1MzExYzFiODFmY2U2NTgxZjVlZTFjODZlZjA2MjdjNjhjOTM2MmZjOWYgMHgwMCAyIENIRUNLTVVMVElTSUciXV0sCiIwMTAwMDAwMDAxMTJiNjZkNWU4YzdkMjI0MDU5ZTk0Njc0OTUwOGVmZWE5ZDY2YmY4ZDBjODM2MzBmMDgwY2YzMGJlOGJiNmFlMTAwMDAwMDAwNDkwMDQ3MzA0NDAyMjA2ZmZlM2YxNGNhZjM4YWQ1YzE1NDQ0MjhlOTlkYTc2ZmZhNTQ1NTY3NWVjOGQ5NzgwZmFjMjE1Y2ExNzk1MzUyMDIyMDc3OTUwMjk4NWUxOTRkODRiYWEzNmI5YmQ0MGEwZGJkOTgxMTYzZmExOTFlYjg4NGFlODNmYzViZDFjODZiMTEwMWZmZmZmZmZmMDEwMTAwMDAwMDAwMDAwMDAwMjMyMTAzOTA1MzgwYzcwMTNlMzZlNmUxOWQzMDUzMTFjMWI4MWZjZTY1ODFmNWVlMWM4NmVmMDYyN2M2OGM5MzYyZmM5ZmFjMDAwMDAwMDAiLCB0cnVlXSwKCltbWyJlYmJjZjRiZmNlMTMyOTJiZDc5MWQ2YTY1YTJhODU4ZDU5YWRiZjczN2UzODdlNDAzNzBkNGU2NGNjNzBlZmIwIiwgMCwgIjIgMHgyMSAweDAzM2JjYWEwYTYwMmYwZDQ0Y2M5ZDU2MzdjNmU1MTViMDQ3MWRiNTE0YzAyMDg4MzgzMGI3Y2VmZDczYWYwNDE5NCAweDIxIDB4MDNhODhiMzI2Zjg3NjdmNGYxOTJjZTI1MmFmZTMzYzk0ZDI1YWIxZDI0ZjI3ZjE1OWIzY2IzYWE2OTFmZmUxNDIzIDIgQ0hFQ0tNVUxUSVNJRyBOT1QiXV0sCiIwMTAwMDAwMDAxYjBlZjcwY2M2NDRlMGQzNzQwN2UzODdlNzNiZmFkNTk4ZDg1MmE1YWE2ZDY5MWQ3MmIyOTEzY2ViZmY0YmNlYjAwMDAwMDAwNGEwMDQ3MzA0NDAyMjA2OGNkNDg1MWZjN2Y5YTg5MmFiOTEwZGY3YTI0ZTYxNmYyOTNiY2I1YzVmYmRmYmMzMDRhMTk0YjI2YjYwZmJhMDIyMDc4ZTZkYTEzZDhjYjg4MWEyMjkzOWI5NTJjMjRmODhiOTdhZmQwNmI0YzQ3YTQ3ZDdmODA0YzlhMzUyYTZkNmQwMTAwZmZmZmZmZmYwMTAxMDAwMDAwMDAwMDAwMDAyMzIxMDMzYmNhYTBhNjAyZjBkNDRjYzlkNTYzN2M2ZTUxNWIwNDcxZGI1MTRjMDIwODgzODMwYjdjZWZkNzNhZjA0MTk0YWMwMDAwMDAwMCIsIHRydWVdLAoKW1tbImJhNGNkN2FlMmFkNGQ0ZDEzZWJmYzhhYjFkOTNhNjNlNGE2NTYzZjI1MDg5YTE4YmYwZmM2OGYyODJhYTg4YzEiLCAwLCAiMiAweDIxIDB4MDM3YzYxNWQ3NjFlNzFkMzg5MDM2MDliZjRmNDY4NDcyNjZlZGMyZmIzNzUzMjA0N2Q3NDdiYTQ3ZWFhZTVmZmUxIDB4MjEgMHgwMmVkYzgyM2NkNjM0ZjJjNDAzM2Q5NGY1NzU1MjA3Y2I2YjYwYzRiMWYxZjA1NmFkNzQ3MWM0N2RlNWYyZTRkNTAgMiBDSEVDS01VTFRJU0lHIE5PVCJdXSwKIjAxMDAwMDAwMDFjMTg4YWE4MmYyNjhmY2YwOGJhMTg5NTBmMjYzNjU0YTNlYTY5MzFkYWJjOGJmM2VkMWQ0ZDQyYWFlZDc0Y2JhMDAwMDAwMDA0YjAwMDA0ODMwNDUwMjIxMDA5NDAzNzg1NzZlMDY5YWNhMjYxYTZiMjZmYjM4MzQ0ZTQ0OTdjYTY3NTFiYjEwOTA1Yzc2YmI2ODlmNDIyMmIwMDIyMDQ4MzM4MDZiMDE0YzI2ZmQ4MDE3MjdiNzkyYjEyNjAwMDNjNTU3MTBmODdjNWFkYmQ3YTljYjU3NDQ2ZGJjOTgwMWZmZmZmZmZmMDEwMTAwMDAwMDAwMDAwMDAwMjMyMTAzN2M2MTVkNzYxZTcxZDM4OTAzNjA5YmY0ZjQ2ODQ3MjY2ZWRjMmZiMzc1MzIwNDdkNzQ3YmE0N2VhYWU1ZmZlMWFjMDAwMDAwMDAiLCB0cnVlXSwKClsiTWFrZSBkaWZmcyBjbGVhbmVyIGJ5IGxlYXZpbmcgYSBjb21tZW50IGhlcmUgd2l0aG91dCBjb21tYSBhdCB0aGUgZW5kIl0KXQo=","base64")); +var dataTxInvalid = JSON.parse(Buffer("WwpbIlRoZSBmb2xsb3dpbmcgYXJlIGRlc2VyaWFsaXplZCB0cmFuc2FjdGlvbnMgd2hpY2ggYXJlIGludmFsaWQuIl0sClsiVGhleSBhcmUgaW4gdGhlIGZvcm0iXSwKWyJbW1twcmV2b3V0IGhhc2gsIHByZXZvdXQgaW5kZXgsIHByZXZvdXQgc2NyaXB0UHViS2V5XSwgW2lucHV0IDJdLCAuLi5dLCJdLApbInNlcmlhbGl6ZWRUcmFuc2FjdGlvbiwgZW5mb3JjZVAyU0hdIl0sClsiT2JqZWN0cyB0aGF0IGFyZSBvbmx5IGEgc2luZ2xlIHN0cmluZyAobGlrZSB0aGlzIG9uZSkgYXJlIGlnbm9yZWQiXSwKClsiMGUxYjU2ODhjZjE3OWNkOWY3Y2JkYTFmYWMwMDkwZjZlNjg0YmJmOGNkOTQ2NjYwMTIwMTk3YzNmMzY4MTgwOSBidXQgd2l0aCBleHRyYSBqdW5rIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHNjcmlwdFB1YktleSJdLApbW1siNmNhN2VjN2IxODQ3ZjZiZGJkNzM3MTc2MDUwZTZhMDhkNjZjY2Q1NWJiOTRhZDI0ZjQwMTgwMjQxMDdhNTgyNyIsIDAsICIweDQxIDB4MDQzYjY0MGU5ODNjOTY5MGExNGMwMzlhMjAzN2VjYzM0NjdiMjdhMGRjZDU4ZjE5ZDc2YzdiYzExOGQwOWZlYzQ1YWRjNTM3MGExYzViZjgwNjdjYTlmNTU1N2E0Y2Y4ODVmZGIwZmUwZGNjOWMzYTcxMzcyMjYxMDZmYmM3NzlhNSBDSEVDS1NJRyBWRVJJRlkgMSJdXSwKIjAxMDAwMDAwMDEyNzU4N2ExMDI0ODAwMWY0MjRhZDk0YmI1NWNkNmNkNjA4NmEwZTA1NzY3MTczYmRiZGY2NDcxODdiZWNhNzZjMDAwMDAwMDA0OTQ4MzA0NTAyMjAxYjgyMmFkMTBkNmFkYzFhMzQxYWU4ODM1YmUzZjcwYTI1MjAxYmJmZjMxZjU5Y2JiOWM1MzUzYTVmMGVjYTE4MDIyMTAwZWE3YjJmNzA3NGU5YWE5Y2Y3MGFhOGQwZmZlZTEzZTZiNDVkZGRhYmYxYWI5NjFiZGEzNzhiY2RiNzc4ZmE0NzAxZmZmZmZmZmYwMTAwZjIwNTJhMDEwMDAwMDAxOTc2YTkxNGZjNTBjNTkwN2Q4NmZlZDQ3NGJhNWNlOGIxMmE2NmUwYTRjMTM5ZDg4OGFjMDAwMDAwMDAiLCB0cnVlXSwKClsiVGhpcyBpcyB0aGUgbmVhcmx5LXN0YW5kYXJkIHRyYW5zYWN0aW9uIHdpdGggQ0hFQ0tTSUdWRVJJRlkgMSBpbnN0ZWFkIG9mIENIRUNLU0lHIGZyb20gdHhfdmFsaWQuanNvbiJdLApbImJ1dCB3aXRoIHRoZSBzaWduYXR1cmUgZHVwbGljYXRlZCBpbiB0aGUgc2NyaXB0UHViS2V5IHdpdGggYSBub24tc3RhbmRhcmQgcHVzaGRhdGEgcHJlZml4Il0sClsiU2VlIEZpbmRBbmREZWxldGUsIHdoaWNoIHdpbGwgb25seSByZW1vdmUgaWYgaXQgdXNlcyB0aGUgc2FtZSBwdXNoZGF0YSBwcmVmaXggYXMgaXMgc3RhbmRhcmQiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiRFVQIEhBU0gxNjAgMHgxNCAweDViNjQ2MjQ3NTQ1NDcxMGYzYzIyZjVmZGYwYjQwNzA0YzkyZjI1YzMgRVFVQUxWRVJJRlkgQ0hFQ0tTSUdWRVJJRlkgMSAweDRjIDB4NDcgMHgzMDQ0MDIyMDY3Mjg4ZWE1MGFhNzk5NTQzYTUzNmZmOTMwNmY4ZTFjYmEwNWI5YzZiMTA5NTExNzViOTI0Zjk2NzMyNTU1ZWQwMjIwMjZkN2I1MjY1ZjM4ZDIxNTQxNTE5ZTRhMWU1NTA0NGQ1YjllMTdlMTVjZGJhZjI5YWUzNzkyZTk5ZTg4M2U3YTAxIl1dLAoiMDEwMDAwMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZhNDczMDQ0MDIyMDY3Mjg4ZWE1MGFhNzk5NTQzYTUzNmZmOTMwNmY4ZTFjYmEwNWI5YzZiMTA5NTExNzViOTI0Zjk2NzMyNTU1ZWQwMjIwMjZkN2I1MjY1ZjM4ZDIxNTQxNTE5ZTRhMWU1NTA0NGQ1YjllMTdlMTVjZGJhZjI5YWUzNzkyZTk5ZTg4M2U3YTAxMjEwM2JhOGM4Yjg2ZGVhMTMxYzIyYWI5NjdlNmRkOTliZGFlOGVmZjdhMWY3NWEyYzM1ZjFmOTQ0MTA5ZTNmZTVlMjJmZmZmZmZmZjAxMDAwMDAwMDAwMDAwMDAwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCB0aGUgc2lnIGluIHRoZSBzY3JpcHRTaWcgYWxzbyBwdXNoZWQgd2l0aCB0aGUgc2FtZSBub24tc3RhbmRhcmQgT1BfUFVTSERBVEEiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiRFVQIEhBU0gxNjAgMHgxNCAweDViNjQ2MjQ3NTQ1NDcxMGYzYzIyZjVmZGYwYjQwNzA0YzkyZjI1YzMgRVFVQUxWRVJJRlkgQ0hFQ0tTSUdWRVJJRlkgMSAweDRjIDB4NDcgMHgzMDQ0MDIyMDY3Mjg4ZWE1MGFhNzk5NTQzYTUzNmZmOTMwNmY4ZTFjYmEwNWI5YzZiMTA5NTExNzViOTI0Zjk2NzMyNTU1ZWQwMjIwMjZkN2I1MjY1ZjM4ZDIxNTQxNTE5ZTRhMWU1NTA0NGQ1YjllMTdlMTVjZGJhZjI5YWUzNzkyZTk5ZTg4M2U3YTAxIl1dLAoiMDEwMDAwMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZiNGM0NzMwNDQwMjIwNjcyODhlYTUwYWE3OTk1NDNhNTM2ZmY5MzA2ZjhlMWNiYTA1YjljNmIxMDk1MTE3NWI5MjRmOTY3MzI1NTVlZDAyMjAyNmQ3YjUyNjVmMzhkMjE1NDE1MTllNGExZTU1MDQ0ZDViOWUxN2UxNWNkYmFmMjlhZTM3OTJlOTllODgzZTdhMDEyMTAzYmE4YzhiODZkZWExMzFjMjJhYjk2N2U2ZGQ5OWJkYWU4ZWZmN2ExZjc1YTJjMzVmMWY5NDQxMDllM2ZlNWUyMmZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgdHJ1ZV0sCgpbIkFuIGludmFsaWQgUDJTSCBUcmFuc2FjdGlvbiJdLApbW1siMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMCIsIDAsICJIQVNIMTYwIDB4MTQgMHg3YTA1MmM4NDBiYTczYWYyNjc1NWRlNDJjZjAxY2M5ZTBhNDlmZWYwIEVRVUFMIl1dLAoiMDEwMDAwMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MDg1NzY4NjE3NDIwNjk3MzIwZmZmZmZmZmYwMTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiVGVzdHMgZm9yIENoZWNrVHJhbnNhY3Rpb24oKSJdLApbIk5vIGlucHV0cyJdLApbW1siMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMCIsIDAsICJIQVNIMTYwIDB4MTQgMHg3YTA1MmM4NDBiYTczYWYyNjc1NWRlNDJjZjAxY2M5ZTBhNDlmZWYwIEVRVUFMIl1dLAoiMDEwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJObyBvdXRwdXRzIl0sCltbWyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwIiwgMCwgIkhBU0gxNjAgMHgxNCAweDA1YWI5ZTE0ZDk4Mzc0MjUxM2YwZjQ1MWUxMDVmZmI0MTk4ZDFkZDQgRVFVQUwiXV0sCiIwMTAwMDAwMDAxMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmQ0ODMwNDUwMjIxMDBmMTY3MDMxMDRhYWI0ZTQwODgzMTdjODYyZGFlYzgzNDQwMjQyNDExYjAzOWQxNDI4MGUwM2RkMzNiNDg3YWI4MDIyMDEzMThhN2JlMjM2NjcyYzVjNTYwODNlYjdhNWExOTViYzU3YTQwYWY3OTIzZmY4NTQ1MDE2Y2QzYjU3MWUyYTYwMTIzMjEwM2M0MGU1ZDMzOWRmM2YzMGJmNzUzZTdlMDQ0NTBhZTRlZjc2YzllNDU1ODdkMWQ5OTNiZGM0Y2QwNmYwNjUxYzdhY2ZmZmZmZmZmMDAwMDAwMDAwMCIsIHRydWVdLAoKWyJOZWdhdGl2ZSBvdXRwdXQiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiSEFTSDE2MCAweDE0IDB4YWU2MDlhY2E4MDYxZDc3YzVlMTExZjZiYjYyNTAxYTZiYmUyYmZkYiBFUVVBTCJdXSwKIjAxMDAwMDAwMDEwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ZDQ4MzA0NTAyMjAwNjMyMjJjYmIxMjg3MzFmYzA5ZGUwZDczMjM3NDY1MzkxNjY1NDRkNmMxZGY4NGQ4NjdjY2VhODRiY2M4OTAzMDIyMTAwYmY1NjhlODU1Mjg0NGRlNjY0Y2Q0MTY0OGEwMzE1NTQzMjdhYTg4NDRhZjM0YjRmMjczOTdjNjViOTJjMDRkZTAxMjMyMTAyNDNlYzM3ZGVlMGUyZTA1M2E5Yzk3NmY0MzE0N2U3OWJjN2Q5ZGM2MDZlYTUxMDEwYWYxYWM4MGRiNmIwNjllMWFjZmZmZmZmZmYwMWZmZmZmZmZmZmZmZmZmZmYwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiTUFYX01PTkVZICsgMSBvdXRwdXQiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiSEFTSDE2MCAweDE0IDB4MzJhZmFjMjgxNDYyYjgyMmFkYmVjNTA5NGI4ZDRkMzM3ZGQ1YmQ2YSBFUVVBTCJdXSwKIjAxMDAwMDAwMDEwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ZTQ5MzA0NjAyMjEwMGUxZWFkYmEwMGQ5Mjk2Yzc0M2NiNmVjYzcwM2ZkOWRkYzliM2NkMTI5MDYxNzZhMjI2YWU0YzE4ZDZiMDA3OTYwMjIxMDBhNzFhZWY3ZDI4NzRkZWZmNjgxYmE2MDgwZjFiMjc4YmFjN2JiOTljNjFiMDhhODVmNDMxMTk3MGZmZTdmNjNmMDEyMzIxMDMwYzA1ODhkYzQ0ZDkyYmRjYmY4ZTcyMDkzNDY2NzY2ZmRjMjY1ZWFkOGRiNjQ1MTdiMGM1NDIyNzViNzBmZmZiYWNmZmZmZmZmZjAxMDE0MDA3NWFmMDc1MDcwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJNQVhfTU9ORVkgb3V0cHV0ICsgMSBvdXRwdXQiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiSEFTSDE2MCAweDE0IDB4YjU1OGNiZjQ5MzA5NTRhYTZhMzQ0MzYzYTE1NjY4ZDc0NzdhZTcxNiBFUVVBTCJdXSwKIjAxMDAwMDAwMDEwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ZDQ4MzA0NTAyMjAyN2RlY2NjMTRhYTY2NjhlNzhhOGM5ZGEzNDg0ZmJjZDRmOWRjYzliYjdkMWI4NTE0NjMxNGIyMWI5YWU0ZDg2MDIyMTAwZDBiNDNkZWNlOGNmYjA3MzQ4ZGUwY2E4YmM1Yjg2Mjc2ZmE4OGY3ZjIxMzgzODExMjhiN2MzNmFiMmU0MjI2NDAxMjMyMTAyOWJiMTM0NjNkZGQ1ZDJjYzA1ZGE2ZTg0ZTM3NTM2Y2I5NTI1NzAzY2ZkOGY0M2FmZGI0MTQ5ODg5ODdhOTJmNmFjZmZmZmZmZmYwMjAwNDAwNzVhZjA3NTA3MDAwMTUxMDAwMTAwMDAwMDAwMDAwMDAxNTEwMDAwMDAwMCIsIHRydWVdLAoKWyJEdXBsaWNhdGUgaW5wdXRzIl0sCltbWyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwIiwgMCwgIkhBU0gxNjAgMHgxNCAweDIzNmQwNjM5ZGI2MmIwNzczZmQ4YWMzNGRjODVhZTE5ZTlhYmE4MGEgRVFVQUwiXV0sCiIwMTAwMDAwMDAyMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNmM0NzMwNDQwMjIwNGJiMTE5NzA1M2QwZDc3OTliZjFiMzBjZDUwM2M0NGI1OGQ2MjQwY2NjYmRjODViNmZlNzZkMDg3OTgwMjA4ZjAyMjA0YmVlZWQ3ODIwMDE3OGZmYzZjNzQyMzdiYjc0YjNmMjc2YmJiNDA5OGI1NjA1ZDgxNDMwNGZlMTI4YmYxNDMxMDEyMzIxMDM5ZTg4MTVlMTU5NTJhN2MzZmFkYTE5MDVmOGNmNTU0MTk4MzcxMzNiZDc3NTZjMGVmMTRmYzhkZmU1MGMwZGVhYWNmZmZmZmZmZjAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZjNDczMDQ0MDIyMDIzMDY0ODlhZmVmNTJhNmY2MmU5MGJmNzUwYmJjZGY0MGMwNmY1YzZiMTM4Mjg2ZTZiNmI4NjE3NmJiOTM0MTgwMjIwMGRiYTk4NDg2ZWE2ODM4MGY0N2ViYjE5YTdkZjE3M2I5OWU2YmM5YzY4MWQ2Y2NmM2JkZTMxNDY1ZDFmMTZiMzAxMjMyMTAzOWU4ODE1ZTE1OTUyYTdjM2ZhZGExOTA1ZjhjZjU1NDE5ODM3MTMzYmQ3NzU2YzBlZjE0ZmM4ZGZlNTBjMGRlYWFjZmZmZmZmZmYwMTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiQ29pbmJhc2Ugb2Ygc2l6ZSAxIl0sClsiTm90ZSB0aGUgaW5wdXQgaXMganVzdCByZXF1aXJlZCB0byBtYWtlIHRoZSB0ZXN0ZXIgaGFwcHkiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCAtMSwgIjEiXV0sCiIwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmZmZmZmZmMDE1MWZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgdHJ1ZV0sCgpbIkNvaW5iYXNlIG9mIHNpemUgMTAxIl0sClsiTm90ZSB0aGUgaW5wdXQgaXMganVzdCByZXF1aXJlZCB0byBtYWtlIHRoZSB0ZXN0ZXIgaGFwcHkiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCAtMSwgIjEiXV0sCiIwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmZmZmZmZmNjU1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxZmZmZmZmZmYwMTAwMDAwMDAwMDAwMDAwMDAwMTUxMDAwMDAwMDAiLCB0cnVlXSwKClsiTnVsbCB0eGluIl0sCltbWyIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgLTEsICJIQVNIMTYwIDB4MTQgMHgwMmRhZTdkYmJkYTU2MDk3OTU5Y2JhNTliMTk4OWRkM2U0NzkzN2JmIEVRVUFMIl1dLAoiMDEwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmZmZmZmZmZjZlNDkzMDQ2MDIyMTAwODZmMzllMDI4ZTQ2ZGFmYThlMWUzYmU2MzkwNjQ2NWY0Y2YwMzhmYmU1ZWQ2NDAzZGMzZTc0YWU4NzZlNjQzMTAyMjEwMGM0NjI1YzY3NWNmYzVjN2UzYTBlMGQ3ZWFlYzkyYWMyNGRhMjBjNzNhODhlYjQwZDA5MjUzZTUxYWM2ZGVmNTIwMTIzMjEwM2ExODNkZGM0MWU4NDc1M2FjYTQ3NzIzYzk2NWQxYjVjOGIwZTJiNTM3OTYzNTE4MzU1ZTZkZDZjZjg0MTVlNTBhY2ZmZmZmZmZmMDEwMDAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgdHJ1ZV0sCgpbIlNhbWUgYXMgdGhlIHRyYW5zYWN0aW9ucyBpbiB2YWxpZCB3aXRoIG9uZSBpbnB1dCBTSUdIQVNIX0FMTCBhbmQgb25lIFNJR0hBU0hfQU5ZT05FQ0FOUEFZLCBidXQgd2Ugc2V0IHRoZSBfQU5ZT05FQ0FOUEFZIHNlcXVlbmNlIG51bWJlciwgaW52YWxpZGF0aW5nIHRoZSBTSUdIQVNIX0FMTCBzaWduYXR1cmUiXSwKW1tbIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAiLCAwLCAiMHgyMSAweDAzNWU3ZjBkNGQwODQxYmNkNTZjMzkzMzdlZDA4NmIxYTYzM2VlNzcwYzFmZmRkOTRhYzU1MmE5NWFjMmNlMGVmYyBDSEVDS1NJRyJdLAogIFsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMCIsIDAsICIweDIxIDB4MDM1ZTdmMGQ0ZDA4NDFiY2Q1NmMzOTMzN2VkMDg2YjFhNjMzZWU3NzBjMWZmZGQ5NGFjNTUyYTk1YWMyY2UwZWZjIENIRUNLU0lHIl1dLAogIjAxMDAwMDAwMDIwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTQ4MzA0NTAyMjAzYTBmNWYwZTFmMmJkYmNkMDRkYjMwNjFkMThmM2FmNzBlMDdmNGY0NjdjYmMxYjgxMTZmMjY3MDI1ZjUzNjBiMDIyMTAwYzc5MmI2ZTIxNWFmYzVhZmM3MjFhMzUxZWM0MTNlNzE0MzA1Y2I3NDlhYWUzZDdmZWU3NjYyMTMxMzQxOGRmMTAxMDEwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0ODQ3MzA0NDAyMjAyMDFkYzJkMDMwZTM4MGU4ZjljZmI0MWI0NDJkOTMwZmE1YTY4NWJiMmM4ZGI1OTA2NjcxZjg2NTUwN2QwNjcwMDIyMDE4ZDllN2E4ZDRjOGQ4NmE3M2MyYTcyNGVlMzhlZjk4M2VjMjQ5ODI3ZTBlNDY0ODQxNzM1OTU1YzcwN2VjZTk4MTAxMDAwMDAwMDEwMTAwMDAwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgdHJ1ZV0sCgpbIkluY29ycmVjdCBzaWduYXR1cmUgb3JkZXIiXSwKWyJOb3RlIHRoZSBpbnB1dCBpcyBqdXN0IHJlcXVpcmVkIHRvIG1ha2UgdGhlIHRlc3RlciBoYXBweSJdLApbW1siYjNkYTAxZGQ0YWFlNjgzYzdhZWU0ZDVkOGI1MmE1NDBhNTA4ZTExMTVmNzdjZDdmYTlhMjkxMjQzZjUwMTIyMyIsIDAsICJIQVNIMTYwIDB4MTQgMHhiMWNlOTkyOThkNWYwNzM2NGI1N2IxZTVjOWNjMDBiZTBiMDRhOTU0IEVRVUFMIl1dLAoiMDEwMDAwMDAwMTIzMTI1MDNmMjQ5MWEyYTk3ZmNkNzc1ZjExZTEwOGE1NDBhNTUyOGI1ZDRkZWU3YTNjNjhhZTRhZGQwMWRhYjMwMDAwMDAwMGZkZmUwMDAwNDgzMDQ1MDIyMDdhYWNlZTgyMGUwOGIwYjE3NGUyNDhhYmQ4ZDdhMzRlZDYzYjVkYTNhYmVkYjk5OTM0ZGY5ZmRkZDY1YzA1YzQwMjIxMDBkZmU4Nzg5NmFiNWVlM2RmNDc2YzI2NTVmOWZiZTViZDA4OWRjY2JlZjNlNGVhMDViNWQxMjExNjlmZTdmNWY0MDE0ODMwNDUwMjIxMDBmNjY0OWIwZWRkZmRmZDRhZDU1NDI2NjYzMzg1MDkwZDUxZWU4NmMzNDgxYmRjNmIwYzE4ZWE2YzBlY2UyYzBiMDIyMDU2MWMzMTViMDdjZmZhNmY3ZGQ5ZGY5NmRiYWU5MjAwYzJkZWUwOWJmOTNjYzM1Y2EwNWU2Y2RmNjEzMzQwYWEwMTRjNjk1MjIxMDMxZDExZGIzODk3MmI3MTJhOWZlMWZjMDIzNTc3YzdhZTNkZGI0YTMwMDQxODdkNDFjNDUxMjFlZWNmZGJiNWI3MjEwMjA3ZWMzNjkxMWI2YWQyMzgyODYwZDMyOTg5YzdiODcyOGU5NDg5ZDdiYmM5NGE2YjU1MDllZjAwMjliZTEyODgyMTAyNGVhOWZhYzA2ZjY2NmE0YWRjM2ZjMTM1N2I3YmVjMWZkMGJkZWNlMmI5ZDA4NTc5MjI2YThlYmRlNTMwNThlNDUzYWVmZmZmZmZmZjAxODAzODAxMDAwMDAwMDAwMDE5NzZhOTE0YzliOTljZGRmODQ3ZDEwNjg1YTRmYWJhYTBiYWY1MDVmN2MzZGZhYjg4YWMwMDAwMDAwMCIsIHRydWVdLAoKWyJFbXB0eSBzdGFjayB3aGVuIHdlIHRyeSB0byBydW4gQ0hFQ0tTSUciXSwKW1tbImFkNTAzZjcyYzE4ZGY1ODAxZWU2NGQ3NjA5MGFmZTRjNjA3ZmIyYjgyMmU5YjdiNjNjNTgyNmM1MGUyMmZjM2IiLCAwLCAiMHgyMSAweDAyN2MzYTk3NjY1YmYyODNhMTAyYTU4N2E2MmEzMGEwYzEwMmQ0ZDNiMTQxMDE1ZTJjYWU2ZjY0ZTI1NDMxMTNlNSBDSEVDS1NJRyBOT1QiXV0sCiIwMTAwMDAwMDAxM2JmYzIyMGVjNTI2NTgzY2I2YjdlOTIyYjhiMjdmNjA0Y2ZlMGEwOTc2NGRlNjFlODBmNThkYzE3MjNmNTBhZDAwMDAwMDAwMDBmZmZmZmZmZjAxMDEwMDAwMDAwMDAwMDAwMDIzMjEwMjdjM2E5NzY2NWJmMjgzYTEwMmE1ODdhNjJhMzBhMGMxMDJkNGQzYjE0MTAxNWUyY2FlNmY2NGUyNTQzMTEzZTVhYzAwMDAwMDAwIiwgdHJ1ZV0sCgpbIk1ha2UgZGlmZnMgY2xlYW5lciBieSBsZWF2aW5nIGEgY29tbWVudCBoZXJlIHdpdGhvdXQgY29tbWEgYXQgdGhlIGVuZCJdCl0K","base64")); +var dataScriptValid = JSON.parse(Buffer("WwpbIjB4MDEgMHgwYiIsICIxMSBFUVVBTCIsICJwdXNoIDEgYnl0ZSJdLApbIjB4MDIgMHg0MTdhIiwgIidBeicgRVFVQUwiXSwKWyIweDRiIDB4NDE3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhN2E3YTdhIiwKICInQXp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6JyBFUVVBTCIsICJwdXNoIDc1IGJ5dGVzIl0sCgpbIjB4NGMgMHgwMSAweDA3IiwiNyBFUVVBTCIsICIweDRjIGlzIE9QX1BVU0hEQVRBMSJdLApbIjB4NGQgMHgwMTAwIDB4MDgiLCI4IEVRVUFMIiwgIjB4NGQgaXMgT1BfUFVTSERBVEEyIl0sClsiMHg0ZSAweDAxMDAwMDAwIDB4MDkiLCI5IEVRVUFMIiwgIjB4NGUgaXMgT1BfUFVTSERBVEE0Il0sCgpbIjB4NGMgMHgwMCIsIjAgRVFVQUwiXSwKWyIweDRkIDB4MDAwMCIsIjAgRVFVQUwiXSwKWyIweDRlIDB4MDAwMDAwMDAiLCIwIEVRVUFMIl0sClsiMHg0ZiAxMDAwIEFERCIsIjk5OSBFUVVBTCJdLApbIjAiLCAiSUYgMHg1MCBFTkRJRiAxIiwgIjB4NTAgaXMgcmVzZXJ2ZWQgKG9rIGlmIG5vdCBleGVjdXRlZCkiXSwKWyIweDUxIiwgIjB4NWYgQUREIDB4NjAgRVFVQUwiLCAiMHg1MSB0aHJvdWdoIDB4NjAgcHVzaCAxIHRocm91Z2ggMTYgb250byBzdGFjayJdLApbIjEiLCJOT1AiXSwKWyIwIiwgIklGIFZFUiBFTFNFIDEgRU5ESUYiLCAiVkVSIG5vbi1mdW5jdGlvbmFsIChvayBpZiBub3QgZXhlY3V0ZWQpIl0sClsiMCIsICJJRiBSRVNFUlZFRCBSRVNFUlZFRDEgUkVTRVJWRUQyIEVMU0UgMSBFTkRJRiIsICJSRVNFUlZFRCBvayBpbiB1bi1leGVjdXRlZCBJRiJdLAoKWyIxIiwgIkRVUCBJRiBFTkRJRiJdLApbIjEiLCAiSUYgMSBFTkRJRiJdLApbIjEiLCAiRFVQIElGIEVMU0UgRU5ESUYiXSwKWyIxIiwgIklGIDEgRUxTRSBFTkRJRiJdLApbIjAiLCAiSUYgRUxTRSAxIEVORElGIl0sCgpbIjEgMSIsICJJRiBJRiAxIEVMU0UgMCBFTkRJRiBFTkRJRiJdLApbIjEgMCIsICJJRiBJRiAxIEVMU0UgMCBFTkRJRiBFTkRJRiJdLApbIjEgMSIsICJJRiBJRiAxIEVMU0UgMCBFTkRJRiBFTFNFIElGIDAgRUxTRSAxIEVORElGIEVORElGIl0sClsiMCAwIiwgIklGIElGIDEgRUxTRSAwIEVORElGIEVMU0UgSUYgMCBFTFNFIDEgRU5ESUYgRU5ESUYiXSwKClsiMSAwIiwgIk5PVElGIElGIDEgRUxTRSAwIEVORElGIEVORElGIl0sClsiMSAxIiwgIk5PVElGIElGIDEgRUxTRSAwIEVORElGIEVORElGIl0sClsiMSAwIiwgIk5PVElGIElGIDEgRUxTRSAwIEVORElGIEVMU0UgSUYgMCBFTFNFIDEgRU5ESUYgRU5ESUYiXSwKWyIwIDEiLCAiTk9USUYgSUYgMSBFTFNFIDAgRU5ESUYgRUxTRSBJRiAwIEVMU0UgMSBFTkRJRiBFTkRJRiJdLAoKWyIwIiwgIklGIDAgRUxTRSAxIEVMU0UgMCBFTkRJRiIsICJNdWx0aXBsZSBFTFNFJ3MgYXJlIHZhbGlkIGFuZCBleGVjdXRlZCBpbnZlcnRzIG9uIGVhY2ggRUxTRSBlbmNvdW50ZXJlZCJdLApbIjEiLCAiSUYgMSBFTFNFIDAgRUxTRSBFTkRJRiJdLApbIjEiLCAiSUYgRUxTRSAwIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMSBFTFNFIDAgRUxTRSAxIEVORElGIEFERCAyIEVRVUFMIl0sClsiJycgMSIsICJJRiBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVORElGIDB4MTQgMHg2OGNhNGZlYzczNjI2NGMxM2I4NTliYWM0M2Q1MTczZGY2ODcxNjgyIEVRVUFMIl0sCgpbIjEiLCAiTk9USUYgMCBFTFNFIDEgRUxTRSAwIEVORElGIiwgIk11bHRpcGxlIEVMU0UncyBhcmUgdmFsaWQgYW5kIGV4ZWN1dGlvbiBpbnZlcnRzIG9uIGVhY2ggRUxTRSBlbmNvdW50ZXJlZCJdLApbIjAiLCAiTk9USUYgMSBFTFNFIDAgRUxTRSBFTkRJRiJdLApbIjAiLCAiTk9USUYgRUxTRSAwIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiTk9USUYgMSBFTFNFIDAgRUxTRSAxIEVORElGIEFERCAyIEVRVUFMIl0sClsiJycgMCIsICJOT1RJRiBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVMU0UgRUxTRSBTSEExIEVORElGIDB4MTQgMHg2OGNhNGZlYzczNjI2NGMxM2I4NTliYWM0M2Q1MTczZGY2ODcxNjgyIEVRVUFMIl0sCgpbIjAiLCAiSUYgMSBJRiBSRVRVUk4gRUxTRSBSRVRVUk4gRUxTRSBSRVRVUk4gRU5ESUYgRUxTRSAxIElGIDEgRUxTRSBSRVRVUk4gRUxTRSAxIEVORElGIEVMU0UgUkVUVVJOIEVORElGIEFERCAyIEVRVUFMIiwgIk5lc3RlZCBFTFNFIEVMU0UiXSwKWyIxIiwgIk5PVElGIDAgTk9USUYgUkVUVVJOIEVMU0UgUkVUVVJOIEVMU0UgUkVUVVJOIEVORElGIEVMU0UgMCBOT1RJRiAxIEVMU0UgUkVUVVJOIEVMU0UgMSBFTkRJRiBFTFNFIFJFVFVSTiBFTkRJRiBBREQgMiBFUVVBTCJdLAoKWyIwIiwgIklGIFJFVFVSTiBFTkRJRiAxIiwgIlJFVFVSTiBvbmx5IHdvcmtzIGlmIGV4ZWN1dGVkIl0sCgpbIjEgMSIsICJWRVJJRlkiXSwKClsiMTAgMCAxMSBUT0FMVFNUQUNLIERST1AgRlJPTUFMVFNUQUNLIiwgIkFERCAyMSBFUVVBTCJdLApbIidnYXZpbl93YXNfaGVyZScgVE9BTFRTVEFDSyAxMSBGUk9NQUxUU1RBQ0siLCAiJ2dhdmluX3dhc19oZXJlJyBFUVVBTFZFUklGWSAxMSBFUVVBTCJdLAoKWyIwIElGRFVQIiwgIkRFUFRIIDEgRVFVQUxWRVJJRlkgMCBFUVVBTCJdLApbIjEgSUZEVVAiLCAiREVQVEggMiBFUVVBTFZFUklGWSAxIEVRVUFMVkVSSUZZIDEgRVFVQUwiXSwKWyIwIERST1AiLCAiREVQVEggMCBFUVVBTCJdLApbIjAiLCAiRFVQIDEgQUREIDEgRVFVQUxWRVJJRlkgMCBFUVVBTCJdLApbIjAgMSIsICJOSVAiXSwKWyIxIDAiLCAiT1ZFUiBERVBUSCAzIEVRVUFMVkVSSUZZIl0sClsiMjIgMjEgMjAiLCAiMCBQSUNLIDIwIEVRVUFMVkVSSUZZIERFUFRIIDMgRVFVQUwiXSwKWyIyMiAyMSAyMCIsICIxIFBJQ0sgMjEgRVFVQUxWRVJJRlkgREVQVEggMyBFUVVBTCJdLApbIjIyIDIxIDIwIiwgIjIgUElDSyAyMiBFUVVBTFZFUklGWSBERVBUSCAzIEVRVUFMIl0sClsiMjIgMjEgMjAiLCAiMCBST0xMIDIwIEVRVUFMVkVSSUZZIERFUFRIIDIgRVFVQUwiXSwKWyIyMiAyMSAyMCIsICIxIFJPTEwgMjEgRVFVQUxWRVJJRlkgREVQVEggMiBFUVVBTCJdLApbIjIyIDIxIDIwIiwgIjIgUk9MTCAyMiBFUVVBTFZFUklGWSBERVBUSCAyIEVRVUFMIl0sClsiMjIgMjEgMjAiLCAiUk9UIDIyIEVRVUFMIl0sClsiMjIgMjEgMjAiLCAiUk9UIERST1AgMjAgRVFVQUwiXSwKWyIyMiAyMSAyMCIsICJST1QgRFJPUCBEUk9QIDIxIEVRVUFMIl0sClsiMjIgMjEgMjAiLCAiUk9UIFJPVCAyMSBFUVVBTCJdLApbIjIyIDIxIDIwIiwgIlJPVCBST1QgUk9UIDIwIEVRVUFMIl0sClsiMjUgMjQgMjMgMjIgMjEgMjAiLCAiMlJPVCAyNCBFUVVBTCJdLApbIjI1IDI0IDIzIDIyIDIxIDIwIiwgIjJST1QgRFJPUCAyNSBFUVVBTCJdLApbIjI1IDI0IDIzIDIyIDIxIDIwIiwgIjJST1QgMkRST1AgMjAgRVFVQUwiXSwKWyIyNSAyNCAyMyAyMiAyMSAyMCIsICIyUk9UIDJEUk9QIERST1AgMjEgRVFVQUwiXSwKWyIyNSAyNCAyMyAyMiAyMSAyMCIsICIyUk9UIDJEUk9QIDJEUk9QIDIyIEVRVUFMIl0sClsiMjUgMjQgMjMgMjIgMjEgMjAiLCAiMlJPVCAyRFJPUCAyRFJPUCBEUk9QIDIzIEVRVUFMIl0sClsiMjUgMjQgMjMgMjIgMjEgMjAiLCAiMlJPVCAyUk9UIDIyIEVRVUFMIl0sClsiMjUgMjQgMjMgMjIgMjEgMjAiLCAiMlJPVCAyUk9UIDJST1QgMjAgRVFVQUwiXSwKWyIxIDAiLCAiU1dBUCAxIEVRVUFMVkVSSUZZIDAgRVFVQUwiXSwKWyIwIDEiLCAiVFVDSyBERVBUSCAzIEVRVUFMVkVSSUZZIFNXQVAgMkRST1AiXSwKWyIxMyAxNCIsICIyRFVQIFJPVCBFUVVBTFZFUklGWSBFUVVBTCJdLApbIi0xIDAgMSAyIiwgIjNEVVAgREVQVEggNyBFUVVBTFZFUklGWSBBREQgQUREIDMgRVFVQUxWRVJJRlkgMkRST1AgMCBFUVVBTFZFUklGWSJdLApbIjEgMiAzIDUiLCAiMk9WRVIgQUREIEFERCA4IEVRVUFMVkVSSUZZIEFERCBBREQgNiBFUVVBTCJdLApbIjEgMyA1IDciLCAiMlNXQVAgQUREIDQgRVFVQUxWRVJJRlkgQUREIDEyIEVRVUFMIl0sClsiMCIsICJTSVpFIDAgRVFVQUwiXSwKWyIxIiwgIlNJWkUgMSBFUVVBTCJdLApbIjEyNyIsICJTSVpFIDEgRVFVQUwiXSwKWyIxMjgiLCAiU0laRSAyIEVRVUFMIl0sClsiMzI3NjciLCAiU0laRSAyIEVRVUFMIl0sClsiMzI3NjgiLCAiU0laRSAzIEVRVUFMIl0sClsiODM4ODYwNyIsICJTSVpFIDMgRVFVQUwiXSwKWyI4Mzg4NjA4IiwgIlNJWkUgNCBFUVVBTCJdLApbIjIxNDc0ODM2NDciLCAiU0laRSA0IEVRVUFMIl0sClsiMjE0NzQ4MzY0OCIsICJTSVpFIDUgRVFVQUwiXSwKWyItMSIsICJTSVpFIDEgRVFVQUwiXSwKWyItMTI3IiwgIlNJWkUgMSBFUVVBTCJdLApbIi0xMjgiLCAiU0laRSAyIEVRVUFMIl0sClsiLTMyNzY3IiwgIlNJWkUgMiBFUVVBTCJdLApbIi0zMjc2OCIsICJTSVpFIDMgRVFVQUwiXSwKWyItODM4ODYwNyIsICJTSVpFIDMgRVFVQUwiXSwKWyItODM4ODYwOCIsICJTSVpFIDQgRVFVQUwiXSwKWyItMjE0NzQ4MzY0NyIsICJTSVpFIDQgRVFVQUwiXSwKWyItMjE0NzQ4MzY0OCIsICJTSVpFIDUgRVFVQUwiXSwKWyInYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIiwgIlNJWkUgMjYgRVFVQUwiXSwKCgpbIjIgLTIgQUREIiwgIjAgRVFVQUwiXSwKWyIyMTQ3NDgzNjQ3IC0yMTQ3NDgzNjQ3IEFERCIsICIwIEVRVUFMIl0sClsiLTEgLTEgQUREIiwgIi0yIEVRVUFMIl0sCgpbIjAgMCIsIkVRVUFMIl0sClsiMSAxIEFERCIsICIyIEVRVUFMIl0sClsiMSAxQUREIiwgIjIgRVFVQUwiXSwKWyIxMTEgMVNVQiIsICIxMTAgRVFVQUwiXSwKWyIxMTEgMSBBREQgMTIgU1VCIiwgIjEwMCBFUVVBTCJdLApbIjAgQUJTIiwgIjAgRVFVQUwiXSwKWyIxNiBBQlMiLCAiMTYgRVFVQUwiXSwKWyItMTYgQUJTIiwgIi0xNiBORUdBVEUgRVFVQUwiXSwKWyIwIE5PVCIsICJOT1AiXSwKWyIxIE5PVCIsICIwIEVRVUFMIl0sClsiMTEgTk9UIiwgIjAgRVFVQUwiXSwKWyIwIDBOT1RFUVVBTCIsICIwIEVRVUFMIl0sClsiMSAwTk9URVFVQUwiLCAiMSBFUVVBTCJdLApbIjExMSAwTk9URVFVQUwiLCAiMSBFUVVBTCJdLApbIi0xMTEgME5PVEVRVUFMIiwgIjEgRVFVQUwiXSwKWyIxIDEgQk9PTEFORCIsICJOT1AiXSwKWyIxIDAgQk9PTEFORCIsICJOT1QiXSwKWyIwIDEgQk9PTEFORCIsICJOT1QiXSwKWyIwIDAgQk9PTEFORCIsICJOT1QiXSwKWyIxNiAxNyBCT09MQU5EIiwgIk5PUCJdLApbIjEgMSBCT09MT1IiLCAiTk9QIl0sClsiMSAwIEJPT0xPUiIsICJOT1AiXSwKWyIwIDEgQk9PTE9SIiwgIk5PUCJdLApbIjAgMCBCT09MT1IiLCAiTk9UIl0sClsiMTYgMTcgQk9PTE9SIiwgIk5PUCJdLApbIjExIDEwIDEgQUREIiwgIk5VTUVRVUFMIl0sClsiMTEgMTAgMSBBREQiLCAiTlVNRVFVQUxWRVJJRlkgMSJdLApbIjExIDEwIDEgQUREIiwgIk5VTU5PVEVRVUFMIE5PVCJdLApbIjExMSAxMCAxIEFERCIsICJOVU1OT1RFUVVBTCJdLApbIjExIDEwIiwgIkxFU1NUSEFOIE5PVCJdLApbIjQgNCIsICJMRVNTVEhBTiBOT1QiXSwKWyIxMCAxMSIsICJMRVNTVEhBTiJdLApbIi0xMSAxMSIsICJMRVNTVEhBTiJdLApbIi0xMSAtMTAiLCAiTEVTU1RIQU4iXSwKWyIxMSAxMCIsICJHUkVBVEVSVEhBTiJdLApbIjQgNCIsICJHUkVBVEVSVEhBTiBOT1QiXSwKWyIxMCAxMSIsICJHUkVBVEVSVEhBTiBOT1QiXSwKWyItMTEgMTEiLCAiR1JFQVRFUlRIQU4gTk9UIl0sClsiLTExIC0xMCIsICJHUkVBVEVSVEhBTiBOT1QiXSwKWyIxMSAxMCIsICJMRVNTVEhBTk9SRVFVQUwgTk9UIl0sClsiNCA0IiwgIkxFU1NUSEFOT1JFUVVBTCJdLApbIjEwIDExIiwgIkxFU1NUSEFOT1JFUVVBTCJdLApbIi0xMSAxMSIsICJMRVNTVEhBTk9SRVFVQUwiXSwKWyItMTEgLTEwIiwgIkxFU1NUSEFOT1JFUVVBTCJdLApbIjExIDEwIiwgIkdSRUFURVJUSEFOT1JFUVVBTCJdLApbIjQgNCIsICJHUkVBVEVSVEhBTk9SRVFVQUwiXSwKWyIxMCAxMSIsICJHUkVBVEVSVEhBTk9SRVFVQUwgTk9UIl0sClsiLTExIDExIiwgIkdSRUFURVJUSEFOT1JFUVVBTCBOT1QiXSwKWyItMTEgLTEwIiwgIkdSRUFURVJUSEFOT1JFUVVBTCBOT1QiXSwKWyIxIDAgTUlOIiwgIjAgTlVNRVFVQUwiXSwKWyIwIDEgTUlOIiwgIjAgTlVNRVFVQUwiXSwKWyItMSAwIE1JTiIsICItMSBOVU1FUVVBTCJdLApbIjAgLTIxNDc0ODM2NDcgTUlOIiwgIi0yMTQ3NDgzNjQ3IE5VTUVRVUFMIl0sClsiMjE0NzQ4MzY0NyAwIE1BWCIsICIyMTQ3NDgzNjQ3IE5VTUVRVUFMIl0sClsiMCAxMDAgTUFYIiwgIjEwMCBOVU1FUVVBTCJdLApbIi0xMDAgMCBNQVgiLCAiMCBOVU1FUVVBTCJdLApbIjAgLTIxNDc0ODM2NDcgTUFYIiwgIjAgTlVNRVFVQUwiXSwKWyIwIDAgMSIsICJXSVRISU4iXSwKWyIxIDAgMSIsICJXSVRISU4gTk9UIl0sClsiMCAtMjE0NzQ4MzY0NyAyMTQ3NDgzNjQ3IiwgIldJVEhJTiJdLApbIi0xIC0xMDAgMTAwIiwgIldJVEhJTiJdLApbIjExIC0xMDAgMTAwIiwgIldJVEhJTiJdLApbIi0yMTQ3NDgzNjQ3IC0xMDAgMTAwIiwgIldJVEhJTiBOT1QiXSwKWyIyMTQ3NDgzNjQ3IC0xMDAgMTAwIiwgIldJVEhJTiBOT1QiXSwKClsiMjE0NzQ4MzY0NyAyMTQ3NDgzNjQ3IFNVQiIsICIwIEVRVUFMIl0sClsiMjE0NzQ4MzY0NyBEVVAgQUREIiwgIjQyOTQ5NjcyOTQgRVFVQUwiLCAiPjMyIGJpdCBFUVVBTCBpcyB2YWxpZCJdLApbIjIxNDc0ODM2NDcgTkVHQVRFIERVUCBBREQiLCAiLTQyOTQ5NjcyOTQgRVFVQUwiXSwKClsiJyciLCAiUklQRU1EMTYwIDB4MTQgMHg5YzExODVhNWM1ZTlmYzU0NjEyODA4OTc3ZWU4ZjU0OGIyMjU4ZDMxIEVRVUFMIl0sClsiJ2EnIiwgIlJJUEVNRDE2MCAweDE0IDB4MGJkYzlkMmQyNTZiM2VlOWRhYWUzNDdiZTZmNGRjODM1YTQ2N2ZmZSBFUVVBTCJdLApbIidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiciLCAiUklQRU1EMTYwIDB4MTQgMHhmNzFjMjcxMDljNjkyYzFiNTZiYmRjZWI1YjlkMjg2NWIzNzA4ZGJjIEVRVUFMIl0sClsiJyciLCAiU0hBMSAweDE0IDB4ZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOSBFUVVBTCJdLApbIidhJyIsICJTSEExIDB4MTQgMHg4NmY3ZTQzN2ZhYTVhN2ZjZTE1ZDFkZGNiOWVhZWFlYTM3NzY2N2I4IEVRVUFMIl0sClsiJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyIsICJTSEExIDB4MTQgMHgzMmQxMGM3YjhjZjk2NTcwY2EwNGNlMzdmMmExOWQ4NDI0MGQzYTg5IEVRVUFMIl0sClsiJyciLCAiU0hBMjU2IDB4MjAgMHhlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1IEVRVUFMIl0sClsiJ2EnIiwgIlNIQTI1NiAweDIwIDB4Y2E5NzgxMTJjYTFiYmRjYWZhYzIzMWIzOWEyM2RjNGRhNzg2ZWZmODE0N2M0ZTcyYjk4MDc3ODVhZmVlNDhiYiBFUVVBTCJdLApbIidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiciLCAiU0hBMjU2IDB4MjAgMHg3MWM0ODBkZjkzZDZhZTJmMWVmYWQxNDQ3YzY2Yzk1MjVlMzE2MjE4Y2Y1MWZjOGQ5ZWQ4MzJmMmRhZjE4YjczIEVRVUFMIl0sClsiJyciLCAiRFVQIEhBU0gxNjAgU1dBUCBTSEEyNTYgUklQRU1EMTYwIEVRVUFMIl0sClsiJyciLCAiRFVQIEhBU0gyNTYgU1dBUCBTSEEyNTYgU0hBMjU2IEVRVUFMIl0sClsiJyciLCAiTk9QIEhBU0gxNjAgMHgxNCAweGI0NzJhMjY2ZDBiZDg5YzEzNzA2YTQxMzJjY2ZiMTZmN2MzYjlmY2IgRVFVQUwiXSwKWyInYSciLCAiSEFTSDE2MCBOT1AgMHgxNCAweDk5NDM1NTE5OWU1MTZmZjc2YzRmYTRhYWIzOTMzN2I5ZDg0Y2YxMmIgRVFVQUwiXSwKWyInYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIiwgIkhBU0gxNjAgMHg0YyAweDE0IDB4YzI4NmExYWYwOTQ3ZjU4ZDFhZDc4NzM4NWIxYzJjNGE5NzZmOWU3MSBFUVVBTCJdLApbIicnIiwgIkhBU0gyNTYgMHgyMCAweDVkZjZlMGUyNzYxMzU5ZDMwYTgyNzUwNThlMjk5ZmNjMDM4MTUzNDU0NWY1NWNmNDNlNDE5ODNmNWQ0Yzk0NTYgRVFVQUwiXSwKWyInYSciLCAiSEFTSDI1NiAweDIwIDB4YmY1ZDNhZmZiNzNlZmQyZWM2YzM2YWQzMTEyZGQ5MzNlZmVkNjNjNGUxY2JmZmNmYTg4ZTI3NTljMTQ0ZjJkOCBFUVVBTCJdLApbIidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiciLCAiSEFTSDI1NiAweDRjIDB4MjAgMHhjYTEzOWJjMTBjMmY2NjBkYTQyNjY2ZjcyZTg5YTIyNTkzNmZjNjBmMTkzYzE2MTEyNGE2NzIwNTBjNDM0NjcxIEVRVUFMIl0sCgoKWyIxIiwiTk9QMSBOT1AyIE5PUDMgTk9QNCBOT1A1IE5PUDYgTk9QNyBOT1A4IE5PUDkgTk9QMTAgMSBFUVVBTCJdLApbIidOT1BfMV90b18xMCcgTk9QMSBOT1AyIE5PUDMgTk9QNCBOT1A1IE5PUDYgTk9QNyBOT1A4IE5PUDkgTk9QMTAiLCInTk9QXzFfdG9fMTAnIEVRVUFMIl0sCgpbIjAiLCAiSUYgMHhiYSBFTFNFIDEgRU5ESUYiLCAib3Bjb2RlcyBhYm92ZSBOT1AxMCBpbnZhbGlkIGlmIGV4ZWN1dGVkIl0sClsiMCIsICJJRiAweGJiIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhiYyBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4YmQgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGJlIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhiZiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4YzAgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGMxIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhjMiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4YzMgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGM0IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhjNSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4YzYgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGM3IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhjOCBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4YzkgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGNhIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhjYiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4Y2MgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGNkIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhjZSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4Y2YgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGQwIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhkMSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZDIgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGQzIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhkNCBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZDUgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGQ2IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhkNyBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZDggRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGQ5IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhkYSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZGIgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGRjIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhkZCBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZGUgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGRmIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhlMCBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZTEgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGUyIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhlMyBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZTQgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGU1IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhlNiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZTcgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGU4IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhlOSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZWEgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGViIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhlYyBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZWQgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGVlIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhlZiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZjAgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGYxIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhmMiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZjMgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGY0IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhmNSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZjYgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGY3IEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhmOCBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZjkgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGZhIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhmYiBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZmMgRUxTRSAxIEVORElGIl0sClsiMCIsICJJRiAweGZkIEVMU0UgMSBFTkRJRiJdLApbIjAiLCAiSUYgMHhmZSBFTFNFIDEgRU5ESUYiXSwKWyIwIiwgIklGIDB4ZmYgRUxTRSAxIEVORElGIl0sCgpbIk5PUCIsCiInYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYiciLAoiNTIwIGJ5dGUgcHVzaCJdLApbIjEiLAoiMHg2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjEiLAoiMjAxIG9wY29kZXMgZXhlY3V0ZWQuIDB4NjEgaXMgTk9QIl0sClsiMSAyIDMgNCA1IDB4NmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmIiwKIjEgMiAzIDQgNSAweDZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZiIsCiIxLDAwMCBzdGFjayBzaXplICgweDZmIGlzIDNEVVApIl0sClsiMSBUT0FMVFNUQUNLIDIgVE9BTFRTVEFDSyAzIDQgNSAweDZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZiIsCiIxIDIgMyA0IDUgNiA3IDB4NmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmIiwKIjEsMDAwIHN0YWNrIHNpemUgKGFsdHN0YWNrIGNsZWFyZWQgYmV0d2VlbiBzY3JpcHRTaWcvc2NyaXB0UHViS2V5KSJdLApbIidhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAweDZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZiIsCiInYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYScgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgMHg2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmIDJEVVAgMHg2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjEiLAoiTWF4LXNpemUgKDEwLDAwMC1ieXRlKSwgbWF4LXB1c2goNTIwIGJ5dGVzKSwgbWF4LW9wY29kZXMoMjAxKSwgbWF4IHN0YWNrIHNpemUoMSwwMDAgaXRlbXMpLiAweDZmIGlzIDNEVVAsIDB4NjEgaXMgTk9QIl0sCgpbIjAiLAoiSUYgMHg1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwNTA1MDUwIEVORElGIDEiLAoiPjIwMSBvcGNvZGVzLCBidXQgUkVTRVJWRUQgKDB4NTApIGRvZXNuJ3QgY291bnQgdG93YXJkcyBvcGNvZGUgbGltaXQuIl0sCgpbIk5PUCIsIjEiXSwKClsiMSIsICIweDAxIDB4MDEgRVFVQUwiLCAiVGhlIGZvbGxvd2luZyBpcyB1c2VmdWwgZm9yIGNoZWNraW5nIGltcGxlbWVudGF0aW9ucyBvZiBCTl9ibjJtcGkiXSwKWyIxMjciLCAiMHgwMSAweDdGIEVRVUFMIl0sClsiMTI4IiwgIjB4MDIgMHg4MDAwIEVRVUFMIiwgIkxlYXZlIHJvb20gZm9yIHRoZSBzaWduIGJpdCJdLApbIjMyNzY3IiwgIjB4MDIgMHhGRjdGIEVRVUFMIl0sClsiMzI3NjgiLCAiMHgwMyAweDAwODAwMCBFUVVBTCJdLApbIjgzODg2MDciLCAiMHgwMyAweEZGRkY3RiBFUVVBTCJdLApbIjgzODg2MDgiLCAiMHgwNCAweDAwMDA4MDAwIEVRVUFMIl0sClsiMjE0NzQ4MzY0NyIsICIweDA0IDB4RkZGRkZGN0YgRVFVQUwiXSwKWyIyMTQ3NDgzNjQ4IiwgIjB4MDUgMHgwMDAwMDA4MDAwIEVRVUFMIl0sClsiLTEiLCAiMHgwMSAweDgxIEVRVUFMIiwgIk51bWJlcnMgYXJlIGxpdHRsZS1lbmRpYW4gd2l0aCB0aGUgTVNCIGJlaW5nIGEgc2lnbiBiaXQiXSwKWyItMTI3IiwgIjB4MDEgMHhGRiBFUVVBTCJdLApbIi0xMjgiLCAiMHgwMiAweDgwODAgRVFVQUwiXSwKWyItMzI3NjciLCAiMHgwMiAweEZGRkYgRVFVQUwiXSwKWyItMzI3NjgiLCAiMHgwMyAweDAwODA4MCBFUVVBTCJdLApbIi04Mzg4NjA3IiwgIjB4MDMgMHhGRkZGRkYgRVFVQUwiXSwKWyItODM4ODYwOCIsICIweDA0IDB4MDAwMDgwODAgRVFVQUwiXSwKWyItMjE0NzQ4MzY0NyIsICIweDA0IDB4RkZGRkZGRkYgRVFVQUwiXSwKWyItMjE0NzQ4MzY0OCIsICIweDA1IDB4MDAwMDAwODA4MCBFUVVBTCJdLAoKWyIyMTQ3NDgzNjQ3IiwgIjFBREQgMjE0NzQ4MzY0OCBFUVVBTCIsICJXZSBjYW4gZG8gbWF0aCBvbiA0LWJ5dGUgaW50ZWdlcnMsIGFuZCBjb21wYXJlIDUtYnl0ZSBvbmVzIl0sClsiMjE0NzQ4MzY0NyIsICIxQUREIDEiXSwKWyItMjE0NzQ4MzY0NyIsICIxQUREIDEiXSwKClsiMSIsICIweDAyIDB4MDEwMCBFUVVBTCBOT1QiLCAiTm90IHRoZSBzYW1lIGJ5dGUgYXJyYXkuLi4iXSwKWyIxIiwgIjB4MDIgMHgwMTAwIE5VTUVRVUFMIiwgIi4uLiBidXQgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwiXSwKWyIxMSIsICIweDRjIDB4MDMgMHgwYjAwMDAgTlVNRVFVQUwiXSwKWyIwIiwgIjB4MDEgMHg4MCBFUVVBTCBOT1QiXSwKWyIwIiwgIjB4MDEgMHg4MCBOVU1FUVVBTCIsICJaZXJvIG51bWVyaWNhbGx5IGVxdWFscyBuZWdhdGl2ZSB6ZXJvIl0sClsiMCIsICIweDAyIDB4MDA4MCBOVU1FUVVBTCJdLApbIjB4MDMgMHgwMDAwODAiLCAiMHgwNCAweDAwMDAwMDgwIE5VTUVRVUFMIl0sClsiMHgwMyAweDEwMDA4MCIsICIweDA0IDB4MTAwMDAwODAgTlVNRVFVQUwiXSwKWyIweDAzIDB4MTAwMDAwIiwgIjB4MDQgMHgxMDAwMDAwMCBOVU1FUVVBTCJdLAoKWyJOT1AiLCAiTk9QIDEiLCAiVGhlIGZvbGxvd2luZyB0ZXN0cyBjaGVjayB0aGUgaWYoc3RhY2suc2l6ZSgpIDwgTikgdGVzdHMgaW4gZWFjaCBvcGNvZGUiXSwKWyIxIiwgIklGIDEgRU5ESUYiLCAiVGhleSBhcmUgaGVyZSB0byBjYXRjaCBjb3B5LWFuZC1wYXN0ZSBlcnJvcnMiXSwKWyIwIiwgIk5PVElGIDEgRU5ESUYiLCAiTW9zdCBvZiB0aGVtIGFyZSBkdXBsaWNhdGVkIGVsc2V3aGVyZSwiXSwKWyIxIiwgIlZFUklGWSAxIiwgImJ1dCwgaGV5LCBtb3JlIGlzIGFsd2F5cyBiZXR0ZXIsIHJpZ2h0PyJdLAoKWyIwIiwgIlRPQUxUU1RBQ0sgMSJdLApbIjEiLCAiVE9BTFRTVEFDSyBGUk9NQUxUU1RBQ0siXSwKWyIwIDAiLCAiMkRST1AgMSJdLApbIjAgMSIsICIyRFVQIl0sClsiMCAwIDEiLCAiM0RVUCJdLApbIjAgMSAwIDAiLCAiMk9WRVIiXSwKWyIwIDEgMCAwIDAgMCIsICIyUk9UIl0sClsiMCAxIDAgMCIsICIyU1dBUCJdLApbIjEiLCAiSUZEVVAiXSwKWyJOT1AiLCAiREVQVEggMSJdLApbIjAiLCAiRFJPUCAxIl0sClsiMSIsICJEVVAiXSwKWyIwIDEiLCAiTklQIl0sClsiMSAwIiwgIk9WRVIiXSwKWyIxIDAgMCAwIDMiLCAiUElDSyJdLApbIjEgMCIsICJQSUNLIl0sClsiMSAwIDAgMCAzIiwgIlJPTEwiXSwKWyIxIDAiLCAiUk9MTCJdLApbIjEgMCAwIiwgIlJPVCJdLApbIjEgMCIsICJTV0FQIl0sClsiMCAxIiwgIlRVQ0siXSwKClsiMSIsICJTSVpFIl0sCgpbIjAgMCIsICJFUVVBTCJdLApbIjAgMCIsICJFUVVBTFZFUklGWSAxIl0sCgpbIjAiLCAiMUFERCJdLApbIjIiLCAiMVNVQiJdLApbIi0xIiwgIk5FR0FURSJdLApbIi0xIiwgIkFCUyJdLApbIjAiLCAiTk9UIl0sClsiLTEiLCAiME5PVEVRVUFMIl0sCgpbIjEgMCIsICJBREQiXSwKWyIxIDAiLCAiU1VCIl0sClsiLTEgLTEiLCAiQk9PTEFORCJdLApbIi0xIDAiLCAiQk9PTE9SIl0sClsiMCAwIiwgIk5VTUVRVUFMIl0sClsiMCAwIiwgIk5VTUVRVUFMVkVSSUZZIDEiXSwKWyItMSAwIiwgIk5VTU5PVEVRVUFMIl0sClsiLTEgMCIsICJMRVNTVEhBTiJdLApbIjEgMCIsICJHUkVBVEVSVEhBTiJdLApbIjAgMCIsICJMRVNTVEhBTk9SRVFVQUwiXSwKWyIwIDAiLCAiR1JFQVRFUlRIQU5PUkVRVUFMIl0sClsiLTEgMCIsICJNSU4iXSwKWyIxIDAiLCAiTUFYIl0sClsiLTEgLTEgMCIsICJXSVRISU4iXSwKClsiMCIsICJSSVBFTUQxNjAiXSwKWyIwIiwgIlNIQTEiXSwKWyIwIiwgIlNIQTI1NiJdLApbIjAiLCAiSEFTSDE2MCJdLApbIjAiLCAiSEFTSDI1NiJdLApbIk5PUCIsICJDT0RFU0VQQVJBVE9SIDEiXSwKClsiTk9QIiwgIk5PUDEgMSJdLApbIk5PUCIsICJOT1AyIDEiXSwKWyJOT1AiLCAiTk9QMyAxIl0sClsiTk9QIiwgIk5PUDQgMSJdLApbIk5PUCIsICJOT1A1IDEiXSwKWyJOT1AiLCAiTk9QNiAxIl0sClsiTk9QIiwgIk5PUDcgMSJdLApbIk5PUCIsICJOT1A4IDEiXSwKWyJOT1AiLCAiTk9QOSAxIl0sClsiTk9QIiwgIk5PUDEwIDEiXSwKClsiMCAweDAxIDEiLCAiSEFTSDE2MCAweDE0IDB4ZGExNzQ1ZTliNTQ5YmQwYmZhMWE1Njk5NzFjNzdlYmEzMGNkNWE0YiBFUVVBTCIsICJWZXJ5IGJhc2ljIFAyU0giXSwKWyIweDRjIDAgMHgwMSAxIiwgIkhBU0gxNjAgMHgxNCAweGRhMTc0NWU5YjU0OWJkMGJmYTFhNTY5OTcxYzc3ZWJhMzBjZDVhNGIgRVFVQUwiXSwKClsiMHg0MCAweDQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyIiwKIjB4NGQgMHg0MDAwIDB4NDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDIgRVFVQUwiLAoiQmFzaWMgUFVTSCBzaWduZWRuZXNzIGNoZWNrIl0sCgpbIjB4NGMgMHg0MCAweDQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyIiwKIjB4NGQgMHg0MDAwIDB4NDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDIgRVFVQUwiLAoiQmFzaWMgUFVTSERBVEExIHNpZ25lZG5lc3MgY2hlY2siXQpdCg==","base64")); +var dataScriptInvalid = JSON.parse(Buffer("WwpbIiIsICIiXSwKWyIiLCAiTk9QIl0sClsiTk9QIiwgIiJdLApbIk5PUCIsIk5PUCJdLAoKWyIweDRjMDEiLCIweDAxIE5PUCIsICJQVVNIREFUQTEgd2l0aCBub3QgZW5vdWdoIGJ5dGVzIl0sClsiMHg0ZDAyMDBmZiIsIjB4MDEgTk9QIiwgIlBVU0hEQVRBMiB3aXRoIG5vdCBlbm91Z2ggYnl0ZXMiXSwKWyIweDRlMDMwMDAwMDBmZmZmIiwiMHgwMSBOT1AiLCAiUFVTSERBVEE0IHdpdGggbm90IGVub3VnaCBieXRlcyJdLAoKWyIxIiwgIklGIDB4NTAgRU5ESUYgMSIsICIweDUwIGlzIHJlc2VydmVkIl0sClsiMHg1MiIsICIweDVmIEFERCAweDYwIEVRVUFMIiwgIjB4NTEgdGhyb3VnaCAweDYwIHB1c2ggMSB0aHJvdWdoIDE2IG9udG8gc3RhY2siXSwKWyIwIiwiTk9QIl0sClsiMSIsICJJRiBWRVIgRUxTRSAxIEVORElGIiwgIlZFUiBub24tZnVuY3Rpb25hbCJdLApbIjAiLCAiSUYgVkVSSUYgRUxTRSAxIEVORElGIiwgIlZFUklGIGlsbGVnYWwgZXZlcnl3aGVyZSJdLApbIjAiLCAiSUYgRUxTRSAxIEVMU0UgVkVSSUYgRU5ESUYiLCAiVkVSSUYgaWxsZWdhbCBldmVyeXdoZXJlIl0sClsiMCIsICJJRiBWRVJOT1RJRiBFTFNFIDEgRU5ESUYiLCAiVkVSTk9USUYgaWxsZWdhbCBldmVyeXdoZXJlIl0sClsiMCIsICJJRiBFTFNFIDEgRUxTRSBWRVJOT1RJRiBFTkRJRiIsICJWRVJOT1RJRiBpbGxlZ2FsIGV2ZXJ5d2hlcmUiXSwKClsiMSBJRiIsICIxIEVORElGIiwgIklGL0VORElGIGNhbid0IHNwYW4gc2NyaXB0U2lnL3NjcmlwdFB1YktleSJdLApbIjEgSUYgMCBFTkRJRiIsICIxIEVORElGIl0sClsiMSBFTFNFIDAgRU5ESUYiLCAiMSJdLApbIjAgTk9USUYiLCAiMTIzIl0sCgpbIjAiLCAiRFVQIElGIEVORElGIl0sClsiMCIsICJJRiAxIEVORElGIl0sClsiMCIsICJEVVAgSUYgRUxTRSBFTkRJRiJdLApbIjAiLCAiSUYgMSBFTFNFIEVORElGIl0sClsiMCIsICJOT1RJRiBFTFNFIDEgRU5ESUYiXSwKClsiMCAxIiwgIklGIElGIDEgRUxTRSAwIEVORElGIEVORElGIl0sClsiMCAwIiwgIklGIElGIDEgRUxTRSAwIEVORElGIEVORElGIl0sClsiMSAwIiwgIklGIElGIDEgRUxTRSAwIEVORElGIEVMU0UgSUYgMCBFTFNFIDEgRU5ESUYgRU5ESUYiXSwKWyIwIDEiLCAiSUYgSUYgMSBFTFNFIDAgRU5ESUYgRUxTRSBJRiAwIEVMU0UgMSBFTkRJRiBFTkRJRiJdLAoKWyIwIDAiLCAiTk9USUYgSUYgMSBFTFNFIDAgRU5ESUYgRU5ESUYiXSwKWyIwIDEiLCAiTk9USUYgSUYgMSBFTFNFIDAgRU5ESUYgRU5ESUYiXSwKWyIxIDEiLCAiTk9USUYgSUYgMSBFTFNFIDAgRU5ESUYgRUxTRSBJRiAwIEVMU0UgMSBFTkRJRiBFTkRJRiJdLApbIjAgMCIsICJOT1RJRiBJRiAxIEVMU0UgMCBFTkRJRiBFTFNFIElGIDAgRUxTRSAxIEVORElGIEVORElGIl0sCgpbIjEiLCAiSUYgUkVUVVJOIEVMU0UgRUxTRSAxIEVORElGIiwgIk11bHRpcGxlIEVMU0VzIl0sClsiMSIsICJJRiAxIEVMU0UgRUxTRSBSRVRVUk4gRU5ESUYiXSwKClsiMSIsICJFTkRJRiIsICJNYWxmb3JtZWQgSUYvRUxTRS9FTkRJRiBzZXF1ZW5jZSJdLApbIjEiLCAiRUxTRSBFTkRJRiJdLApbIjEiLCAiRU5ESUYgRUxTRSJdLApbIjEiLCAiRU5ESUYgRUxTRSBJRiJdLApbIjEiLCAiSUYgRUxTRSBFTkRJRiBFTFNFIl0sClsiMSIsICJJRiBFTFNFIEVORElGIEVMU0UgRU5ESUYiXSwKWyIxIiwgIklGIEVORElGIEVORElGIl0sClsiMSIsICJJRiBFTFNFIEVMU0UgRU5ESUYgRU5ESUYiXSwKClsiMSIsICJSRVRVUk4iXSwKWyIxIiwgIkRVUCBJRiBSRVRVUk4gRU5ESUYiXSwKClsiMSIsICJSRVRVUk4gJ2RhdGEnIiwgImNhbm9uaWNhbCBwcnVuYWJsZSB0eG91dCBmb3JtYXQiXSwKWyIwIElGIiwgIlJFVFVSTiBFTkRJRiAxIiwgInN0aWxsIHBydW5hYmxlIGJlY2F1c2UgSUYvRU5ESUYgY2FuJ3Qgc3BhbiBzY3JpcHRTaWcvc2NyaXB0UHViS2V5Il0sCgpbIjAiLCAiVkVSSUZZIDEiXSwKWyIxIiwgIlZFUklGWSJdLApbIjEiLCAiVkVSSUZZIDAiXSwKClsiMSBUT0FMVFNUQUNLIiwgIkZST01BTFRTVEFDSyAxIiwgImFsdCBzdGFjayBub3Qgc2hhcmVkIGJldHdlZW4gc2lnL3B1YmtleSJdLAoKWyJJRkRVUCIsICJERVBUSCAwIEVRVUFMIl0sClsiRFJPUCIsICJERVBUSCAwIEVRVUFMIl0sClsiRFVQIiwgIkRFUFRIIDAgRVFVQUwiXSwKWyIxIiwgIkRVUCAxIEFERCAyIEVRVUFMVkVSSUZZIDAgRVFVQUwiXSwKWyJOT1AiLCAiTklQIl0sClsiTk9QIiwgIjEgTklQIl0sClsiTk9QIiwgIjEgMCBOSVAiXSwKWyJOT1AiLCAiT1ZFUiAxIl0sClsiMSIsICJPVkVSIl0sClsiMCAxIiwgIk9WRVIgREVQVEggMyBFUVVBTFZFUklGWSJdLApbIjE5IDIwIDIxIiwgIlBJQ0sgMTkgRVFVQUxWRVJJRlkgREVQVEggMiBFUVVBTCJdLApbIk5PUCIsICIwIFBJQ0siXSwKWyIxIiwgIi0xIFBJQ0siXSwKWyIxOSAyMCAyMSIsICIwIFBJQ0sgMjAgRVFVQUxWRVJJRlkgREVQVEggMyBFUVVBTCJdLApbIjE5IDIwIDIxIiwgIjEgUElDSyAyMSBFUVVBTFZFUklGWSBERVBUSCAzIEVRVUFMIl0sClsiMTkgMjAgMjEiLCAiMiBQSUNLIDIyIEVRVUFMVkVSSUZZIERFUFRIIDMgRVFVQUwiXSwKWyJOT1AiLCAiMCBST0xMIl0sClsiMSIsICItMSBST0xMIl0sClsiMTkgMjAgMjEiLCAiMCBST0xMIDIwIEVRVUFMVkVSSUZZIERFUFRIIDIgRVFVQUwiXSwKWyIxOSAyMCAyMSIsICIxIFJPTEwgMjEgRVFVQUxWRVJJRlkgREVQVEggMiBFUVVBTCJdLApbIjE5IDIwIDIxIiwgIjIgUk9MTCAyMiBFUVVBTFZFUklGWSBERVBUSCAyIEVRVUFMIl0sClsiTk9QIiwgIlJPVCAxIl0sClsiTk9QIiwgIjEgUk9UIDEiXSwKWyJOT1AiLCAiMSAyIFJPVCAxIl0sClsiTk9QIiwgIjAgMSAyIFJPVCJdLApbIk5PUCIsICJTV0FQIDEiXSwKWyIxIiwgIlNXQVAgMSJdLApbIjAgMSIsICJTV0FQIDEgRVFVQUxWRVJJRlkiXSwKWyJOT1AiLCAiVFVDSyAxIl0sClsiMSIsICJUVUNLIDEiXSwKWyIxIDAiLCAiVFVDSyBERVBUSCAzIEVRVUFMVkVSSUZZIFNXQVAgMkRST1AiXSwKWyJOT1AiLCAiMkRVUCAxIl0sClsiMSIsICIyRFVQIDEiXSwKWyJOT1AiLCAiM0RVUCAxIl0sClsiMSIsICIzRFVQIDEiXSwKWyIxIDIiLCAiM0RVUCAxIl0sClsiTk9QIiwgIjJPVkVSIDEiXSwKWyIxIiwgIjIgMyAyT1ZFUiAxIl0sClsiTk9QIiwgIjJTV0FQIDEiXSwKWyIxIiwgIjIgMyAyU1dBUCAxIl0sCgpbIidhJyAnYiciLCAiQ0FUIiwgIkNBVCBkaXNhYmxlZCJdLApbIidhJyAnYicgMCIsICJJRiBDQVQgRUxTRSAxIEVORElGIiwgIkNBVCBkaXNhYmxlZCJdLApbIidhYmMnIDEgMSIsICJTVUJTVFIiLCAiU1VCU1RSIGRpc2FibGVkIl0sClsiJ2FiYycgMSAxIDAiLCAiSUYgU1VCU1RSIEVMU0UgMSBFTkRJRiIsICJTVUJTVFIgZGlzYWJsZWQiXSwKWyInYWJjJyAyIDAiLCAiSUYgTEVGVCBFTFNFIDEgRU5ESUYiLCAiTEVGVCBkaXNhYmxlZCJdLApbIidhYmMnIDIgMCIsICJJRiBSSUdIVCBFTFNFIDEgRU5ESUYiLCAiUklHSFQgZGlzYWJsZWQiXSwKClsiTk9QIiwgIlNJWkUgMSJdLAoKWyInYWJjJyIsICJJRiBJTlZFUlQgRUxTRSAxIEVORElGIiwgIklOVkVSVCBkaXNhYmxlZCJdLApbIjEgMiAwIElGIEFORCBFTFNFIDEgRU5ESUYiLCAiTk9QIiwgIkFORCBkaXNhYmxlZCJdLApbIjEgMiAwIElGIE9SIEVMU0UgMSBFTkRJRiIsICJOT1AiLCAiT1IgZGlzYWJsZWQiXSwKWyIxIDIgMCBJRiBYT1IgRUxTRSAxIEVORElGIiwgIk5PUCIsICJYT1IgZGlzYWJsZWQiXSwKWyIyIDAgSUYgMk1VTCBFTFNFIDEgRU5ESUYiLCAiTk9QIiwgIjJNVUwgZGlzYWJsZWQiXSwKWyIyIDAgSUYgMkRJViBFTFNFIDEgRU5ESUYiLCAiTk9QIiwgIjJESVYgZGlzYWJsZWQiXSwKWyIyIDIgMCBJRiBNVUwgRUxTRSAxIEVORElGIiwgIk5PUCIsICJNVUwgZGlzYWJsZWQiXSwKWyIyIDIgMCBJRiBESVYgRUxTRSAxIEVORElGIiwgIk5PUCIsICJESVYgZGlzYWJsZWQiXSwKWyIyIDIgMCBJRiBNT0QgRUxTRSAxIEVORElGIiwgIk5PUCIsICJNT0QgZGlzYWJsZWQiXSwKWyIyIDIgMCBJRiBMU0hJRlQgRUxTRSAxIEVORElGIiwgIk5PUCIsICJMU0hJRlQgZGlzYWJsZWQiXSwKWyIyIDIgMCBJRiBSU0hJRlQgRUxTRSAxIEVORElGIiwgIk5PUCIsICJSU0hJRlQgZGlzYWJsZWQiXSwKClsiMCAxIiwiRVFVQUwiXSwKWyIxIDEgQUREIiwgIjAgRVFVQUwiXSwKWyIxMSAxIEFERCAxMiBTVUIiLCAiMTEgRVFVQUwiXSwKClsiMjE0NzQ4MzY0OCAwIEFERCIsICJOT1AiLCAiYXJpdGhtZXRpYyBvcGVyYW5kcyBtdXN0IGJlIGluIHJhbmdlIFstMl4zMS4uLjJeMzFdICJdLApbIi0yMTQ3NDgzNjQ4IDAgQUREIiwgIk5PUCIsICJhcml0aG1ldGljIG9wZXJhbmRzIG11c3QgYmUgaW4gcmFuZ2UgWy0yXjMxLi4uMl4zMV0gIl0sClsiMjE0NzQ4MzY0NyBEVVAgQUREIiwgIjQyOTQ5NjcyOTQgTlVNRVFVQUwiLCAiTlVNRVFVQUwgbXVzdCBiZSBpbiBudW1lcmljIHJhbmdlIl0sClsiJ2FiY2RlZicgTk9UIiwgIjAgRVFVQUwiLCAiTk9UIGlzIGFuIGFyaXRobWV0aWMgb3BlcmFuZCJdLAoKWyIyIERVUCBNVUwiLCAiNCBFUVVBTCIsICJkaXNhYmxlZCJdLApbIjIgRFVQIERJViIsICIxIEVRVUFMIiwgImRpc2FibGVkIl0sClsiMiAyTVVMIiwgIjQgRVFVQUwiLCAiZGlzYWJsZWQiXSwKWyIyIDJESVYiLCAiMSBFUVVBTCIsICJkaXNhYmxlZCJdLApbIjcgMyBNT0QiLCAiMSBFUVVBTCIsICJkaXNhYmxlZCJdLApbIjIgMiBMU0hJRlQiLCAiOCBFUVVBTCIsICJkaXNhYmxlZCJdLApbIjIgMSBSU0hJRlQiLCAiMSBFUVVBTCIsICJkaXNhYmxlZCJdLAoKWyIxIiwiTk9QMSBOT1AyIE5PUDMgTk9QNCBOT1A1IE5PUDYgTk9QNyBOT1A4IE5PUDkgTk9QMTAgMiBFUVVBTCJdLApbIidOT1BfMV90b18xMCcgTk9QMSBOT1AyIE5PUDMgTk9QNCBOT1A1IE5PUDYgTk9QNyBOT1A4IE5PUDkgTk9QMTAiLCInTk9QXzFfdG9fMTEnIEVRVUFMIl0sCgpbIjB4NTAiLCIxIiwgIm9wY29kZSAweDUwIGlzIHJlc2VydmVkIl0sClsiMSIsICJJRiAweGJhIEVMU0UgMSBFTkRJRiIsICJvcGNvZGVzIGFib3ZlIE5PUDEwIGludmFsaWQgaWYgZXhlY3V0ZWQiXSwKWyIxIiwgIklGIDB4YmIgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGJjIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhiZCBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4YmUgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGJmIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhjMCBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4YzEgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGMyIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhjMyBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4YzQgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGM1IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhjNiBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4YzcgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGM4IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhjOSBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4Y2EgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGNiIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhjYyBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4Y2QgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGNlIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhjZiBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZDAgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGQxIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhkMiBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZDMgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGQ0IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhkNSBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZDYgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGQ3IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhkOCBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZDkgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGRhIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhkYiBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZGMgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGRkIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhkZSBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZGYgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGUwIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhlMSBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZTIgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGUzIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhlNCBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZTUgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGU2IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhlNyBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZTggRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGU5IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhlYSBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZWIgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGVjIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhlZCBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZWUgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGVmIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhmMCBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZjEgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGYyIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhmMyBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZjQgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGY1IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhmNiBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZjcgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGY4IEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhmOSBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZmEgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGZiIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhmYyBFTFNFIDEgRU5ESUYiXSwKWyIxIiwgIklGIDB4ZmQgRUxTRSAxIEVORElGIl0sClsiMSIsICJJRiAweGZlIEVMU0UgMSBFTkRJRiJdLApbIjEiLCAiSUYgMHhmZiBFTFNFIDEgRU5ESUYiXSwKClsiMSBJRiAxIEVMU0UiLCAiMHhmZiBFTkRJRiIsICJpbnZhbGlkIGJlY2F1c2Ugc2NyaXB0U2lnIGFuZCBzY3JpcHRQdWJLZXkgYXJlIHByb2Nlc3NlZCBzZXBhcmF0ZWx5Il0sCgpbIk5PUCIsICJSSVBFTUQxNjAiXSwKWyJOT1AiLCAiU0hBMSJdLApbIk5PUCIsICJTSEEyNTYiXSwKWyJOT1AiLCAiSEFTSDE2MCJdLApbIk5PUCIsICJIQVNIMjU2Il0sCgpbIk5PUCIsCiInYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInIiwKIj41MjAgYnl0ZSBwdXNoIl0sClsiMCIsCiJJRiAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInIEVORElGIDEiLAoiPjUyMCBieXRlIHB1c2ggaW4gbm9uLWV4ZWN1dGVkIElGIGJyYW5jaCJdLApbIjEiLAoiMHg2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MSIsCiI+MjAxIG9wY29kZXMgZXhlY3V0ZWQuIDB4NjEgaXMgTk9QIl0sClsiMCIsCiJJRiAweDYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjEgRU5ESUYgMSIsCiI+MjAxIG9wY29kZXMgaW5jbHVkaW5nIG5vbi1leGVjdXRlZCBJRiBicmFuY2guIDB4NjEgaXMgTk9QIl0sClsiMSAyIDMgNCA1IDB4NmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmIiwKIjEgMiAzIDQgNSA2IDB4NmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmIiwKIj4xLDAwMCBzdGFjayBzaXplICgweDZmIGlzIDNEVVApIl0sClsiMSAyIDMgNCA1IDB4NmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmIiwKIjEgVE9BTFRTVEFDSyAyIFRPQUxUU1RBQ0sgMyA0IDUgNiAweDZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZiIsCiI+MSwwMDAgc3RhY2srYWx0c3RhY2sgc2l6ZSJdLApbIk5PUCIsCiIwICdhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYicgJ2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmInICdiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJyAweDZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmY2ZjZmNmYgMkRVUCAweDYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MSIsCiIxMCwwMDEtYnl0ZSBzY3JpcHRQdWJLZXkiXSwKClsiTk9QMSIsIk5PUDEwIl0sCgpbIjEiLCJWRVIiLCAiT1BfVkVSIGlzIHJlc2VydmVkIl0sClsiMSIsIlZFUklGIiwgIk9QX1ZFUklGIGlzIHJlc2VydmVkIl0sClsiMSIsIlZFUk5PVElGIiwgIk9QX1ZFUk5PVElGIGlzIHJlc2VydmVkIl0sClsiMSIsIlJFU0VSVkVEIiwgIk9QX1JFU0VSVkVEIGlzIHJlc2VydmVkIl0sClsiMSIsIlJFU0VSVkVEMSIsICJPUF9SRVNFUlZFRDEgaXMgcmVzZXJ2ZWQiXSwKWyIxIiwiUkVTRVJWRUQyIiwgIk9QX1JFU0VSVkVEMiBpcyByZXNlcnZlZCJdLApbIjEiLCIweGJhIiwgIjB4YmEgPT0gT1BfTk9QMTAgKyAxIl0sCgpbIjIxNDc0ODM2NDgiLCAiMUFERCAxIiwgIldlIGNhbm5vdCBkbyBtYXRoIG9uIDUtYnl0ZSBpbnRlZ2VycyJdLApbIi0yMTQ3NDgzNjQ4IiwgIjFBREQgMSIsICJCZWNhdXNlIHdlIHVzZSBhIHNpZ24gYml0LCAtMjE0NzQ4MzY0OCBpcyBhbHNvIDUgYnl0ZXMiXSwKClsiMSIsICIxIEVORElGIiwgIkVORElGIHdpdGhvdXQgSUYiXSwKWyIxIiwgIklGIDEiLCAiSUYgd2l0aG91dCBFTkRJRiJdLApbIjEgSUYgMSIsICJFTkRJRiIsICJJRnMgZG9uJ3QgY2Fycnkgb3ZlciJdLAoKWyJOT1AiLCAiSUYgMSBFTkRJRiIsICJUaGUgZm9sbG93aW5nIHRlc3RzIGNoZWNrIHRoZSBpZihzdGFjay5zaXplKCkgPCBOKSB0ZXN0cyBpbiBlYWNoIG9wY29kZSJdLApbIk5PUCIsICJOT1RJRiAxIEVORElGIiwgIlRoZXkgYXJlIGhlcmUgdG8gY2F0Y2ggY29weS1hbmQtcGFzdGUgZXJyb3JzIl0sClsiTk9QIiwgIlZFUklGWSAxIiwgIk1vc3Qgb2YgdGhlbSBhcmUgZHVwbGljYXRlZCBlbHNld2hlcmUsIl0sCgpbIk5PUCIsICJUT0FMVFNUQUNLIDEiLCAiYnV0LCBoZXksIG1vcmUgaXMgYWx3YXlzIGJldHRlciwgcmlnaHQ/Il0sClsiMSIsICJGUk9NQUxUU1RBQ0siXSwKWyIxIiwgIjJEUk9QIDEiXSwKWyIxIiwgIjJEVVAiXSwKWyIxIDEiLCAiM0RVUCJdLApbIjEgMSAxIiwgIjJPVkVSIl0sClsiMSAxIDEgMSAxIiwgIjJST1QiXSwKWyIxIDEgMSIsICIyU1dBUCJdLApbIk5PUCIsICJJRkRVUCAxIl0sClsiTk9QIiwgIkRST1AgMSJdLApbIk5PUCIsICJEVVAgMSJdLApbIjEiLCAiTklQIl0sClsiMSIsICJPVkVSIl0sClsiMSAxIDEgMyIsICJQSUNLIl0sClsiMCIsICJQSUNLIDEiXSwKWyIxIDEgMSAzIiwgIlJPTEwiXSwKWyIwIiwgIlJPTEwgMSJdLApbIjEgMSIsICJST1QiXSwKWyIxIiwgIlNXQVAiXSwKWyIxIiwgIlRVQ0siXSwKClsiTk9QIiwgIlNJWkUgMSJdLAoKWyIxIiwgIkVRVUFMIDEiXSwKWyIxIiwgIkVRVUFMVkVSSUZZIDEiXSwKClsiTk9QIiwgIjFBREQgMSJdLApbIk5PUCIsICIxU1VCIDEiXSwKWyJOT1AiLCAiTkVHQVRFIDEiXSwKWyJOT1AiLCAiQUJTIDEiXSwKWyJOT1AiLCAiTk9UIDEiXSwKWyJOT1AiLCAiME5PVEVRVUFMIDEiXSwKClsiMSIsICJBREQiXSwKWyIxIiwgIlNVQiJdLApbIjEiLCAiQk9PTEFORCJdLApbIjEiLCAiQk9PTE9SIl0sClsiMSIsICJOVU1FUVVBTCJdLApbIjEiLCAiTlVNRVFVQUxWRVJJRlkgMSJdLApbIjEiLCAiTlVNTk9URVFVQUwiXSwKWyIxIiwgIkxFU1NUSEFOIl0sClsiMSIsICJHUkVBVEVSVEhBTiJdLApbIjEiLCAiTEVTU1RIQU5PUkVRVUFMIl0sClsiMSIsICJHUkVBVEVSVEhBTk9SRVFVQUwiXSwKWyIxIiwgIk1JTiJdLApbIjEiLCAiTUFYIl0sClsiMSAxIiwgIldJVEhJTiJdLAoKWyJOT1AiLCAiUklQRU1EMTYwIDEiXSwKWyJOT1AiLCAiU0hBMSAxIl0sClsiTk9QIiwgIlNIQTI1NiAxIl0sClsiTk9QIiwgIkhBU0gxNjAgMSJdLApbIk5PUCIsICJIQVNIMjU2IDEiXSwKClsiTk9QIDB4MDEgMSIsICJIQVNIMTYwIDB4MTQgMHhkYTE3NDVlOWI1NDliZDBiZmExYTU2OTk3MWM3N2ViYTMwY2Q1YTRiIEVRVUFMIiwgIlRlc3RzIGZvciBTY3JpcHQuSXNQdXNoT25seSgpIl0sClsiTk9QMSAweDAxIDEiLCAiSEFTSDE2MCAweDE0IDB4ZGExNzQ1ZTliNTQ5YmQwYmZhMWE1Njk5NzFjNzdlYmEzMGNkNWE0YiBFUVVBTCJdLAoKWyIwIDB4MDEgMHg1MCIsICJIQVNIMTYwIDB4MTQgMHhlY2U0MjRhNmJiNmRkZjRkYjU5MmMwZmFlZDYwNjg1MDQ3YTM2MWIxIEVRVUFMIiwgIk9QX1JFU0VSVkVEIGluIFAyU0ggc2hvdWxkIGZhaWwiXSwKWyIwIDB4MDEgVkVSIiwgIkhBU0gxNjAgMHgxNCAweDBmNGQ3ODQ1ZGI5NjhmMmE4MWI1MzBiNmYzYzFkNjI0NmQ0YzdlMDEgRVFVQUwiLCAiT1BfVkVSIGluIFAyU0ggc2hvdWxkIGZhaWwiXQpdCg==","base64")); +var dataUnspent = JSON.parse(Buffer("WwogIHsKICAgICJhZGRyZXNzIjogIm1xU2pUYWQyVEtiUGNLUTNKcTRrZ0NrS2F0eU40NFVNZ1oiLAogICAgInR4aWQiOiAiMmFjMTY1ZmE3YTNhMmI1MzVkMTA2YTAwNDFjNzU2OGQwM2I1MzFlNThhZWNjZGQzMTk5ZDcyODlhYjEyY2ZjMSIsCiAgICAic2NyaXB0UHViS2V5IjogIjc2YTkxNDZjZTRlMTE2M2ViMTg5MzliMTQ0MGM0Mjg0NGQ1ZjAyNjFjMDMzODI4OGFjIiwKICAgICJ2b3V0IjogMSwKICAgICJhbW91bnQiOiAwLjAxLAogICAgImNvbmZpcm1hdGlvbnMiOjcKICB9LAogIHsKICAgICJhZGRyZXNzIjogIm1xU2pUYWQyVEtiUGNLUTNKcTRrZ0NrS2F0eU40NFVNZ1oiLAogICAgInR4aWQiOiAiMmFjMTY1ZmE3YTNhMmI1MzVkMTA2YTAwNDFjNzU2OGQwM2I1MzFlNThhZWNjZGQzMTk5ZDcyODlhYjEyY2ZjMiIsCiAgICAic2NyaXB0UHViS2V5IjogIjc2YTkxNDZjZTRlMTE2M2ViMTg5MzliMTQ0MGM0Mjg0NGQ1ZjAyNjFjMDMzODI4OGFjIiwKICAgICJ2b3V0IjogMCwKICAgICJjb25maXJtYXRpb25zIjogMSwKICAgICJhbW91bnQiOiAwLjEKICB9LAogIHsKICAgICJhZGRyZXNzIjogIm1xU2pUYWQyVEtiUGNLUTNKcTRrZ0NrS2F0eU40NFVNZ1oiLAogICAgInR4aWQiOiAiMmFjMTY1ZmE3YTNhMmI1MzVkMTA2YTAwNDFjNzU2OGQwM2I1MzFlNThhZWNjZGQzMTk5ZDcyODlhYjEyY2ZjMyIsCiAgICAic2NyaXB0UHViS2V5IjogIjc2YTkxNDZjZTRlMTE2M2ViMTg5MzliMTQ0MGM0Mjg0NGQ1ZjAyNjFjMDMzODI4OGFjIiwKICAgICJ2b3V0IjogMywKICAgICJjb25maXJtYXRpb25zIjogMCwKICAgICJhbW91bnQiOiAxCiAgfQpdCgo=","base64")); +var dataUnspentSign = JSON.parse(Buffer("eyAKICAidW5zcGVudCI6IFsKICAgIHsKICAgICAgImFkZHJlc3MiOiAibjRnMlRGYVFvOFVnZWR3cGtZZGNRRkY2eEUyRWk5Q3p2eSIsCiAgICAgICJ0eGlkIjogIjJhYzE2NWZhN2EzYTJiNTM1ZDEwNmEwMDQxYzc1NjhkMDNiNTMxZTU4YWVjY2RkMzE5OWQ3Mjg5YWIxMmNmYzEiLAogICAgICAic2NyaXB0UHViS2V5IjogIjc2YTkxNGZlMDIxYmFjNDY5YTVjNDk5MTViMmE4ZmZhNzM5MGE5Y2U1NTgwZjk4OGFjIiwKICAgICAgInZvdXQiOiAxLAogICAgICAiYW1vdW50IjogMS4wMTAxLAogICAgICAiY29uZmlybWF0aW9ucyI6NwogICAgfSwKICAgIHsKICAgICAgImFkZHJlc3MiOiAibWhOQ1Q5VHdaQUdGMXRMUHBaZHFma1RtdEJrWTI4MllEVyIsCiAgICAgICJ0eGlkIjogIjJhYzE2NWZhN2EzYTJiNTM1ZDEwNmEwMDQxYzc1NjhkMDNiNTMxZTU4YWVjY2RkMzE5OWQ3Mjg5YWIxMmNmYzIiLAogICAgICAic2NyaXB0UHViS2V5IjogIjc2YTkxNDE0NDg1MzRjYjFhMWVjNDQ2NjViMGViMjMyNmU1NzA4MTRhZmUzZjE4OGFjIiwKICAgICAgInZvdXQiOiAwLAogICAgICAiY29uZmlybWF0aW9ucyI6IDEsCiAgICAgICJhbW91bnQiOiAxMAogICAgfSwKICAgIHsKICAgICAgImFkZHJlc3MiOiAibjQ0aG4yOHpBb29acG44bXBXS3pBVGJhYnFhSERLOW9OSiIsCiAgICAgICJ0eGlkIjogIjJhYzE2NWZhN2EzYTJiNTM1ZDEwNmEwMDQxYzc1NjhkMDNiNTMxZTU4YWVjY2RkMzE5OWQ3Mjg5YWIxMmNmYzMiLAogICAgICAic2NyaXB0UHViS2V5IjogIjc2YTkxNGY3NTNmNThiMWZiMWRhYWE1NTM0YjEwYWY4NWNhOTIxMGYzNDQ1ZDI4OGFjIiwKICAgICAgInZvdXQiOiAzLAogICAgICAiY29uZmlybWF0aW9ucyI6IDAsCiAgICAgICJhbW91bnQiOiA1CiAgICB9CiAgXSwKICAia2V5U3RyaW5ncyI6IFsKICAgICJjU3E3eW80ZnZzYk15V1ZOOTQ1VlVHVVdNYVNhelpQV3FCVkpaeW9Hc0htTnE2VzRIVkJWIiwKICAgICJjUGE4N1Znd1pmb3dHWllhRWVub1FlSmdSZktXNlBoWjFSNjVFSFRrTjFLMTljU3ZjOTJHIiwKICAgICJjUFE5RFNiQlJMdmE5YXY1bnFlRjVBR3JoM2RzZFc4cDJFNWpTNFA4YkRXWkFvUVRlZUtCIgogIF0sCiAgInVuc3BlbnRQdWJLZXkiOiBbCiAgICB7CiAgICAgICJhZGRyZXNzIjogIm1xcW5uOTN4TjgxZVpUTHFqN1drMmNhY0JCVFI4YWdGWjUiLAogICAgICAic2NyaXB0UHViS2V5IjogIjIxMDJhYTg2OWZmNzE5ZjIzZDk5NTlkY2EzNDBjYmYzYjcyNzcwMjk0YzY0MDA1ZTUzZTA0Mjk5NDhhYTZlOTcwMWQxYWMiLAogICAgICAidHhpZCI6ICIyYWMxNjVmYTdhM2EyYjUzNWQxMDZhMDA0MWM3NTY4ZDAzYjUzMWU1OGFlY2NkZDMxOTlkNzI4OWFiMTJjZmMxIiwKICAgICAgInZvdXQiOiAxLAogICAgICAiYW1vdW50IjogMSwKICAgICAgImNvbmZpcm1hdGlvbnMiOjcKICAgIH0KICBdLAogICJrZXlTdHJpbmdzUHViS2V5IjogWwogICAgImNUU3ZoSzJiM1h4SmV6bURqVk41eDFLVEN0dWk0TmFMaHZiNzhudnBycFZBaXFIZ1F2TW0iCiAgXSwKICAidW5zcGVudE11bHRpIjogWwogICAgewogICAgICAiYWRkcmVzcyI6IFsKICAgICAgICAibjRKQVpjNGNKaW1RYmt5NXd4WlVFRGVBRlp0R2FacmpXSyIsCiAgICAgICAgIm1zZ2U1bXVObUJTUkRuNW5zYVJjSENVNmRnMnppbUE4d1EiLAogICAgICAgICJtdno5TWpvY3B5WGRnWHFSY1pZYXpzZEU4aVRoZHZqZGhrIiwKICAgICAgICAibWlRR1oyZ3liUWU3VXZVUURCWXNnY2N0VXRlaWo1cFRwbSIsCiAgICAgICAgIm11OWttaEdyelJFS3NXYVhVRVVyc1JMTE1HNFVNUHkxTEYiCiAgICAgIF0sCiAgICAgICJzY3JpcHRQdWJLZXkiOiAiNTMyMTAzYmYwMjVlYjQxMDQwN2FlYzVhNjdjOTc1Y2UyMjJlMzYzYmI4OGM2OWJiMWFjY2U0NWQyMGQ4NTYwMmRmMmVjNTIxMDNkNzZkZDZkOTkxMjdmNGI3MzNlNzcyZjBjMGEwOWM1NzNhYzdlNGQ2OWI4YmY1MDI3MjI5MmRhMmUwOTNkZTJjMjEwM2RkOWFjZDhkZDE4MTZjODI1ZDZiMDczOTMzOWMxNzFhZTJjYjEwZWZiNTM2OTk2ODA1Mzc4NjViMDcwODZlOWIyMTAyMzcxY2FiYmFmNDY2YzNhNTM2MDM0YjRiZGE2NGFkNTE1ODA3YmZmZDg3NDg4ZjQ0ZjkzYzIzNzNkNGQxODljOTIxMDI2NGNkNDQ0MzU4ZjhkNTdmODYzN2E3MzA5Zjk3MzY4MDZmNDg4M2FlYmM0ZmU3ZGE0YmFkMWU0YjM3ZjJkMTJjNTVhZSIsCiAgICAgICJ0eGlkIjogIjJhYzE2NWZhN2EzYTJiNTM1ZDEwNmEwMDQxYzc1NjhkMDNiNTMxZTU4YWVjY2RkMzE5OWQ3Mjg5YWIxMmNmYzEiLAogICAgICAidm91dCI6IDEsCiAgICAgICJhbW91bnQiOiAxLAogICAgICAiY29uZmlybWF0aW9ucyI6NwogICAgfQogIF0sCiAgImtleVN0cmluZ3NNdWx0aSI6IFsKICAgICJjUDZKQkh1UWY3eXFlcXRkS1JkMjJpYkYzVmVoRHY3RzZCZHp4U05BQmdydjNqRkpVR29OIiwKICAgICJjUWZSd0Y3WExTTTV4R1VwRjhQWnZvYjJNWnlVTHZaUEEyajVjYXQyUktESnJqYTdGdENaIiwKICAgICJjVWtZdWI0anRGVll5bUhoMzh5TU1XMzZuSkI0cFhHNVB6ZDVRalJlc3E3OWtBbmRrSmNnIiwKICAgICJjTXlCZ293c3lySlJ1Zm9LV29iNzNyTVFCMVBCcURkd0Z0OHo0VEo2QVBOMkhrbVgxVHRtIiwKICAgICJjTjl5WkNvbTZoQVpwSHRDcDhvdkUxekZhN1JxRGYzQ3I0VzZBd0gydHA1OUpqaDlKY1h1IgogIF0sCiAgImNvbW1lbnQiOiAic2NyaXB0IHB1YmtleSBjYW4gYmUgb2J0YWluZWQgZnJvbTogYml0Y29pbmQgY3JlYXRlcmF3dHJhbnNhY3Rpb24gJ1t7XCJ0eGlkXCI6IFwiMmFjMTY1ZmE3YTNhMmI1MzVkMTA2YTAwNDFjNzU2OGQwM2I1MzFlNThhZWNjZGQzMTk5ZDcyODlhYjEyY2ZjMVwiLFwidm91dFwiOjF9XScgJ3tcIjJORlczamExdGR6YTRiMVdUeUc5Zmt6NmNCdFJmNHFFRkJoXCI6MC4wOH0nIGFuZCB0aGVuIGRlY29kaW5nIHRoZSBnZW5lcmF0ZWQgdHJhbnNhY3Rpb24gaGV4IHVzaW5nIGJpdGNvaW5kIGRlY29kZXJhd3RyYW5zYWN0aW9uIiwKICAidW5zcGVudFAyc2giOiBbCiAgICB7CiAgICAgICJhZGRyZXNzIjogIjJOREpiend6c21SZ0QybzVISFhQaHVxNWc2dGtLVGpZa2Q2IiwKICAgICAgInNjcmlwdFB1YktleSI6ICJhOTE0ZGMwNjIzNDc2YWVmYjA0OTA2NmIwOWIwMTQ3YTAyMmU2ZWI4NDI5MTg3IiwKICAgICAgInR4aWQiOiAiMmFjMTY1ZmE3YTNhMmI1MzVkMTA2YTAwNDFjNzU2OGQwM2I1MzFlNThhZWNjZGQzMTk5ZDcyODlhYjEyY2ZjMSIsCiAgICAgICJ2b3V0IjogMSwKICAgICAgImFtb3VudCI6IDEsCiAgICAgICJjb25maXJtYXRpb25zIjo3CiAgICB9CiAgXSwKICAia2V5U3RyaW5nc1Ayc2giOiBbCiAgICAiY01wS3dHcjVveEVhY045NVdGS05FcTZ0VGN2aTExcmVnRndTM211SHZHWVZ4TVBKWDhKQSIsCiAgICAiY1ZmMzJtOU1SNHZ4Y1B3S05KdVBlcFVlOFhySEQyejYzZUNrNzZkNm5qUkd5Q2tYcGtTTSIsCiAgICAiY1Eyc1ZSRlg0alFZTUxoV3l6ejZqVFEyeGp1NTFQMzY5NjhlY1huUGhSTEtMSDY3N2VLUiIsCiAgICAiY1N3N3g5RVJjbWVXQ1UzeVZCVDZOejdiOUppWjV5alVCN0pNaEJVdjlVTTdyU2FEcHdYOSIsCiAgICAiY1JRQk04cU00WlhKR1AxRGU0RDVSdEptN1E2Rk5XUVNNeDdZRXh4emduMmVoak0zaGF4VyIKICBdCn0KCg==","base64")); +var dataSigCanonical = JSON.parse(Buffer("WwogICAgIjMwMDYwMjAxMDAwMjAxMDAwMSIsCiAgICAiMzAwODAyMDIwMGZmMDIwMjAwZmYwMSIsCiAgICAiMzA0NDAyMjAzOTMyYzg5MmUyZTU1MGYzYWY4ZWU0Y2U5YzIxNWE4N2Y5YmI4MzFkY2FjODdiMjgzOGUyYzJlYWE4OTFkZjBjMDIyMDMwYjYxZGQzNjU0MzEyNWQ1NmI5ZjlmM2ExZjkzNTMxODllNWFmMzNjZGRhOGQ3N2E1MjA5YWVjMDM5NzhmYTAwMSIsCiAgICAiMzA0NTAyMjAwNzYwNDViZTZmOWVjYTI4ZmYxZWM2MDZiODMzZDBiODdlNzBiMmE2MzBmNWUzYTQ5NmIxMTA5NjdhNDBmOTBhMDIyMTAwOGZmZmQ1OTk5MTBlZWZlMDBiYzgwM2M2ODhjMmVjYTFkMmJhN2Y2YjE4MDYyMGVhYTAzNDg4ZTY1ODVkYjZiYTAxIiwKICAgICIzMDQ2MDIyMTAwODc2MDQ1YmU2ZjllY2EyOGZmMWVjNjA2YjgzM2QwYjg3ZTcwYjJhNjMwZjVlM2E0OTZiMTEwOTY3YTQwZjkwYTAyMjEwMDhmZmZkNTk5OTEwZWVmZTAwYmM4MDNjNjg4YzJlY2ExZDJiYTdmNmIxODA2MjBlYWEwMzQ4OGU2NTg1ZGI2YmEwMSIKXQo=","base64")); +var dataSigNonCanonical = JSON.parse(Buffer("WwogICAgIm5vbi1oZXggc3RyaW5ncyBhcmUgaWdub3JlZCIsCgogICAgInRvbyBzaG9ydDoiLCAgICAiMzAwNTAyMDFGRjAyMDAwMSIsCiAgICAidG9vIGxvbmc6IiwgICAgICIzMDQ3MDIyMTAwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMWJhNjEwNTAyMjIwMDAwMmQ1ODc2MjYyYzI4OGJlYjUxMWQwNjE2OTFiZjI2Nzc3MzQ0YjcwMmIwMGY4ZmUyODYyMWZlNGU1NjY2OTVlZDAxIiwKICAgICJoYXNodHlwZToiLCAgICAgIjMwNDQwMjIwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMWJhNjEwNTAyMjAyZDU4NzYyNjJjMjg4YmViNTExZDA2MTY5MWJmMjY3NzczNDRiNzAyYjAwZjhmZTI4NjIxZmU0ZTU2NjY5NWVkMTEiLAogICAgInR5cGU6IiwgICAgICAgICAiMzE0NDAyMjA1OTkwZTA1ODRiMmIyMzhlMWRmYWFkOGQ2ZWQ2OWVjYzFhNGExM2FjODVmYzBiMzFkMGRmMzk1ZWIxYmE2MTA1MDIyMDJkNTg3NjI2MmMyODhiZWI1MTFkMDYxNjkxYmYyNjc3NzM0NGI3MDJiMDBmOGZlMjg2MjFmZTRlNTY2Njk1ZWQwMSIsCiAgICAidG90YWwgbGVuZ3RoOiIsICIzMDQ1MDIyMDU5OTBlMDU4NGIyYjIzOGUxZGZhYWQ4ZDZlZDY5ZWNjMWE0YTEzYWM4NWZjMGIzMWQwZGYzOTVlYjFiYTYxMDUwMjIwMmQ1ODc2MjYyYzI4OGJlYjUxMWQwNjE2OTFiZjI2Nzc3MzQ0YjcwMmIwMGY4ZmUyODYyMWZlNGU1NjY2OTVlZDAxIiwKICAgICJTIGxlbiBvb2I6IiwgICAgIjMwMUYwMTIwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMTAxIiwKICAgICJSK1M6IiwgICAgICAgICAgIjMwNDUwMjIwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMWJhNjEwNTAyMjAyZDU4NzYyNjJjMjg4YmViNTExZDA2MTY5MWJmMjY3NzczNDRiNzAyYjAwZjhmZTI4NjIxZmU0ZTU2NjY5NWVkMDAwMSIsCgogICAgIlIgdHlwZToiLCAgICAgICAiMzA0NDAxMjA1OTkwZTA1ODRiMmIyMzhlMWRmYWFkOGQ2ZWQ2OWVjYzFhNGExM2FjODVmYzBiMzFkMGRmMzk1ZWIxYmE2MTA1MDIyMDJkNTg3NjI2MmMyODhiZWI1MTFkMDYxNjkxYmYyNjc3NzM0NGI3MDJiMDBmOGZlMjg2MjFmZTRlNTY2Njk1ZWQwMSIsCiAgICAiUiBsZW4gPSAwOiIsICAgICIzMDI0MDIwMDAyMjAyZDU4NzYyNjJjMjg4YmViNTExZDA2MTY5MWJmMjY3NzczNDRiNzAyYjAwZjhmZTI4NjIxZmU0ZTU2NjY5NWVkMDEiLAogICAgIlI8MDoiLCAgICAgICAgICAiMzA0NDAyMjA4OTkwZTA1ODRiMmIyMzhlMWRmYWFkOGQ2ZWQ2OWVjYzFhNGExM2FjODVmYzBiMzFkMGRmMzk1ZWIxYmE2MTA1MDIyMDJkNTg3NjI2MmMyODhiZWI1MTFkMDYxNjkxYmYyNjc3NzM0NGI3MDJiMDBmOGZlMjg2MjFmZTRlNTY2Njk1ZWQwMSIsCiAgICAiUiBwYWRkZWQ6IiwgICAgICIzMDQ1MDIyMTAwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMWJhNjEwNTAyMjAyZDU4NzYyNjJjMjg4YmViNTExZDA2MTY5MWJmMjY3NzczNDRiNzAyYjAwZjhmZTI4NjIxZmU0ZTU2NjY5NWVkMDEiLAoKCiAgICAiUyB0eXBlOiIsICAgICAgICIzMDQ0MDIyMDU5OTBlMDU4NGIyYjIzOGUxZGZhYWQ4ZDZlZDY5ZWNjMWE0YTEzYWM4NWZjMGIzMWQwZGYzOTVlYjFiYTYxMDUwMTIwMmQ1ODc2MjYyYzI4OGJlYjUxMWQwNjE2OTFiZjI2Nzc3MzQ0YjcwMmIwMGY4ZmUyODYyMWZlNGU1NjY2OTVlZDAxIiwKICAgICJTIGxlbiA9IDA6IiwgICAgIjMwMjQwMjIwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMWJhNjEwNTAyMDAwMSIsCiAgICAiUzwwOiIsICAgICAgICAgICIzMDQ0MDIyMDU5OTBlMDU4NGIyYjIzOGUxZGZhYWQ4ZDZlZDY5ZWNjMWE0YTEzYWM4NWZjMGIzMWQwZGYzOTVlYjFiYTYxMDUwMjIwZmQ1ODc2MjYyYzI4OGJlYjUxMWQwNjE2OTFiZjI2Nzc3MzQ0YjcwMmIwMGY4ZmUyODYyMWZlNGU1NjY2OTVlZDAxIiwKICAgICJTIHBhZGRlZDoiLCAgICAgIjMwNDUwMjIwNTk5MGUwNTg0YjJiMjM4ZTFkZmFhZDhkNmVkNjllY2MxYTRhMTNhYzg1ZmMwYjMxZDBkZjM5NWViMWJhNjEwNTAyMjEwMDJkNTg3NjI2MmMyODhiZWI1MTFkMDYxNjkxYmYyNjc3NzM0NGI3MDJiMDBmOGZlMjg2MjFmZTRlNTY2Njk1ZWQwMSIKXQo=","base64")); +var dataBase58KeysValid = JSON.parse(Buffer("WwogICAgWwogICAgICAgICIxQUdOYTE1WlFYQVpVZ0ZpcUoyaTdaMkRQVTJKNmhXNjJpIiwgCiAgICAgICAgIjY1YTE2MDU5ODY0YTJmZGJjN2M5OWE0NzIzYTgzOTViYzZmMTg4ZWIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNDTU5GeE4xb0hCYzRSMUVwYm9BTDV5ekhHZ0U2MTFYb3UiLCAKICAgICAgICAiNzRmMjA5ZjZlYTkwN2UyZWE0OGY3NGZhZTA1NzgyYWU4YTY2NTI1NyIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibW85bmNYaXNNZUFvWHdxY1Y1RVd1eW5jYm1DY1FONHJWcyIsIAogICAgICAgICI1M2MwMzA3ZDY4NTFhYTBjZTc4MjViYTg4M2M2YmQ5YWQyNDJiNDg2IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJOMkpENndiNTZBZks0dGZtTTZQd2RWbW9ZazJkQ0tmNEJyIiwgCiAgICAgICAgIjYzNDlhNDE4ZmM0NTc4ZDEwYTM3MmI1NGI0NWMyODBjYzhjNDM4MmYiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUtkM05CVUFkVW5oeXplbkV3Vkx5OXBCS3hTd1h2RTlGTVB5UjRVS1p2cGU2RTNBZ0xyIiwgCiAgICAgICAgImVkZGJkYzExNjhmMWRhZWFkYmQzZTQ0YzFlM2Y4ZjVhMjg0YzIwMjlmNzhhZDI2YWY5ODU4M2E0OTlkZTViMTkiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkt6NlVKbVFBQ0ptTHRhUWo1QTNKQWdlNGtWVE5ROGdidlh1d2JtQ2o3YnNhYWJ1ZGIzUkQiLCAKICAgICAgICAiNTVjOWJjY2I5ZWQ2ODQ0NmQxYjc1MjczYmJjZTg5ZDdmZTAxM2E4YWNkMTYyNTUxNDQyMGZiMmFjYTFhMjFjNCIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MjEzcUphYjJITkVwTXBZTkJhN3dIR0ZLS2JrRG4yNGpwQU5EczJodU4zeWk0SjExa28iLCAKICAgICAgICAiMzZjYjkzYjlhYjFiZGFiZjdmYjlmMmMwNGYxYjljYzg3OTkzMzUzMGFlNzg0MjM5OGVlZjVhNjNhNTY4MDBjMiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVHBCNFlpeUtpQmNQeG5lZnNEcGJuRHhGRGZmanFKb2I4d0dDRURYeGdRN3pRb01YSmRIIiwgCiAgICAgICAgImI5ZjQ4OTJjOWU4MjgyMDI4ZmVhMWQyNjY3YzRkYzUyMTM1NjRkNDFmYzU3ODM4OTZhMGQ4NDNmYzE1MDg5ZjMiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxQXg0Z1p0YjdnQWl0MlRpdndlalpIWXROTkxUMThQVVhKIiwgCiAgICAgICAgIjZkMjMxNTZjYmJkY2M4MmE1YTQ3ZWVlNGMyYzdjNTgzYzE4YjZiZjQiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNRallYaFRrdnVqOHFQYVhIVFRXYjV3alhoZHNMQUFXVnkiLCAKICAgICAgICAiZmNjNTQ2MGRkNmUyNDg3YzdkNzViMTk2MzYyNWRhMGU4ZjRjNTk3NSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibjNaZGR4ekx2QVk5bzcxODRUQjRjNkZKYXNBeWJzdzRIWiIsIAogICAgICAgICJmMWQ0NzBmOWIwMjM3MGZkZWMyZTZiNzA4YjA4YWM0MzFiZjdhNWY3IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJOQkZOSlRrdE5hN0dadXNHYkRiR0tSWlR4ZEs5VlZlejNuIiwgCiAgICAgICAgImM1NzkzNDJjMmM0YzkyMjAyMDVlMmNkYzI4NTYxNzA0MGM5MjRhMGEiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUs0OTRYWndwczJiR3llTDcxcFdpZDRub2lTTkEyY2ZDaWJydlJXcWNIU3B0b0ZuN3JjIiwgCiAgICAgICAgImEzMjZiOTVlYmFlMzAxNjQyMTdkN2E3ZjU3ZDcyYWIyYjU0ZTNiZTY0OTI4YTE5ZGEwMjEwYjk1NjhkNDAxNWUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwxUnJyblhrY0t1dDVERU13dER0aGp3UmNUVHdFRDM2dGh5TDFEZWJWckt1d3ZvaGpNTmkiLCAKICAgICAgICAiN2Q5OThiNDVjMjE5YTFlMzhlOTllN2NiZDMxMmVmNjdmNzdhNDU1YTliNTBjNzMwYzI3ZjAyYzZmNzMwZGZiNCIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5M0RWS3lGWXdTTjZ3RW8zRTJmQ3JGUFVwMTdGdHJ0TmkyTGY3bjRHM2dhckZiMTZDUmoiLCAKICAgICAgICAiZDZiY2EyNTZiNWFiYzU2MDJlYzJlMWMxMjFhMDhiMGRhMjU1NjU4NzQzMGJjZjdlMTg5OGFmMjIyNDg4NTIwMyIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVERWS3RNR1ZZV1RIQ2IxQUZqbVZiRWJXanZLcEtxS2dNYVIzUUp4VG9NU1FBaG1DZVROIiwgCiAgICAgICAgImE4MWNhNGU4ZjkwMTgxZWM0YjYxYjZhN2ViOTk4YWYxN2IyY2IwNGRlOGEwM2I1MDRiOWUzNGM0YzYxZGI3ZDkiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxQzViU2oxaUVHVWdTVGJ6aXltRzdDbjE4RU5RdVQzNnZ2IiwgCiAgICAgICAgIjc5ODdjY2FhNTNkMDJjODg3MzQ4N2VmOTE5Njc3Y2QzZGI3YTY5MTIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNBbk54YWJZR29UeFlpVEVad0ZFbmVyVW9lRlhLMlpva3MiLCAKICAgICAgICAiNjNiY2M1NjVmOWU2OGVlMDE4OWRkNWNjNjdmMWIwZTVmMDJmNDVjYiIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibjNMbkpYQ3FiUGpnaHVWczhwaDlDWXNBZTRTaDRqOTd3ayIsIAogICAgICAgICJlZjY2NDQ0YjViMTdmMTRlOGZhZTZlN2UxOWIwNDVhNzhjNTRmZDc5IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJOQjcyWHRranBuQVRNZ2d1aTgzYUV0UGF3eXlLdm5iWDJvIiwgCiAgICAgICAgImMzZTU1ZmNlY2VhYTQzOTFlZDJhOTY3N2Y0YTRkMzRlYWNkMDIxYTAiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUthQlc5dk50V05oYzNaRUR5TkNpWExQZFZQSENpa1J4U0JXd1Y5TnJwTExhNExzWGk5IiwgCiAgICAgICAgImU3NWQ5MzZkNTYzNzdmNDMyZjQwNGFhYmI0MDY2MDFmODkyZmQ0OWRhOTBlYjZhYzU1OGE3MzNjOTNiNDcyNTIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwxYXh6YlN5eW5OWUE4bUNBaHp4a2lwS2tmSHRBWFlGNFlRbmhTS2NMVjhZWEE4NzRmZ1QiLCAKICAgICAgICAiODI0OGJkMDM3NWYyZjc1ZDdlMjc0YWU1NDRmYjkyMGY1MTc4NDQ4MDg2NmIxMDIzODQxOTBiMWFkZGZiYWE1YyIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MjdDblVrVWJhc1l0RHdZd1ZuMmo4R2RUdUFDTm5La2paMXJwWmQyeUJCMUNMY25YcG8iLCAKICAgICAgICAiNDRjNGY2YTA5NmVhYzUyMzgyOTFhOTRjYzI0YzAxZTNiMTliOGQ4Y2VmNzI4NzRhMDc5ZTAwYTI0MjIzN2E1MiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVWNmQ01SamlRZjg1WU16elFFazlkMXM1QTRLN3hMNVNtQkNMcmV6cVhGdVRWZWZ5aFk3IiwgCiAgICAgICAgImQxZGU3MDcwMjBhOTA1OWQ2ZDNhYmFmODVlMTc5NjdjNjU1NTE1MTE0M2RiMTNkYmIwNmRiNzhkZjBmMTVjNjkiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxR3FrNFR2NzlQOTFDYzFTVFF0VTNzMVc2Mjc3TTJDVld1IiwgCiAgICAgICAgImFkYzFjYzIwODFhMjcyMDZmYWUyNTc5MmYyOGJiYzU1YjgzMTU0OWQiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjMzdnQ4VmlINWpzcjExNUFHa1c2Y0VtRXo5TXB2SlN3RGsiLCAKICAgICAgICAiMTg4ZjkxYTkzMTk0N2VkZGQ3NDMyZDZlNjE0Mzg3ZTMyYjI0NDcwOSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibWhhTWNCeE5oNWNxWG00YVRRNkVjVmJLdGZMNkxHeUsySCIsIAogICAgICAgICIxNjk0ZjViYzFhNzI5NWI2MDBmNDAwMThhNjE4YTZlYTQ4ZWViNDk4IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJNeGdQcVgxaVRoVzNvWlZrOUtvRmNFNU00SnBpRVRzc1ZOIiwgCiAgICAgICAgIjNiOWIzZmQ3YTUwZDRmMDhkMWE1YjBmNjJmNjQ0ZmE3MTE1YWUyZjMiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUh0SDZHZGN3Q0pBNGdnV0VMMUIzanpCQlVCOEhQaUJpOVNCYzVoOWk0V2s0UFNlQXBSIiwgCiAgICAgICAgIjA5MTAzNTQ0NWVmMTA1ZmExYmIxMjVlY2NmYjE4ODJmM2ZlNjk1OTIyNjU5NTZhZGU3NTFmZDA5NTAzM2Q4ZDAiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwyeFNZbU1lVm8zWmVrM1pUc3Y5eFVyWFZBbXJXeEo4VWE0Y3c4cGtmYlFoY0VGaGtYVDgiLCAKICAgICAgICAiYWIyYjRiY2RmYzkxZDM0ZGVlMGFlMmE4YzZiNjY2OGRhZGFlYjNhODhiOTg1OTc0MzE1NmY0NjIzMjUxODdhZiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MnhGRXZlMVo5TjhaNjQxS1FRUzdCeUNTYjhrR2pzRHp3NmZBbWpITjFMWkdLUVh5TXEiLCAKICAgICAgICAiYjQyMDQzODljZWYxOGJiZTJiMzUzNjIzY2JmOTNlODY3OGZiYzkyYTQ3NWI2NjRhZTk4ZWQ1OTRlNmNmMDg1NiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjVk02NXRkWXUxWUszN3ROb0F5R29KVFIxM1ZCWUZ2YTF2ZzlGTHVQQXNKaWpHdkc2TkVBIiwgCiAgICAgICAgImU3YjIzMDEzM2YxYjU0ODk4NDMyNjAyMzZiMDZlZGNhMjVmNjZhZGIxYmU0NTVmYmQzOGQ0MDEwZDQ4ZmFlZWYiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxSndNV0JWTHRpcXRzY2JhUkhhaTRwcUhva2hGQ2J0b0I0IiwgCiAgICAgICAgImM0YzFiNzI0OTFlZGUxZWVkYWNhMDA2MTg0MDdlZTBiNzcyY2FkMGQiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNRQ3p2Zkw0WlJ2bUpGaVdXQlZ3eGZkYU5CVDhFdHhCNXkiLCAKICAgICAgICAiZjZmZTY5YmNiNTQ4YTgyOWNjZTRjNTdiZjZmZmY4YWYzYTU5ODFmOSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibWl6WGl1Y1hSQ3NFcmlRQ0hVa0NxZWY5cGg5cXRQYlpaNiIsIAogICAgICAgICIyNjFmODM1NjhhMDk4YTg2Mzg4NDRiZDdhZWNhMDM5ZDVmMjM1MmMwIiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJORVdEekhXd1k1WlpwOENRV2JCN291Tk1McUNpYTZZUmRhIiwgCiAgICAgICAgImU5MzBlMTgzNGE0ZDIzNDcwMjc3Mzk1MWQ2MjdjY2U4MmZiYjVkMmUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUtRbURyeU1ORGNpc1R6UnAzekVxOWU0YXdSbUpyRVZVMWo1dkZSVEtwUk5ZUHFZck1nIiwgCiAgICAgICAgImQxZmFiN2FiNzM4NWFkMjY4NzIyMzdmMWViOTc4OWFhMjVjYzk4NmJhY2M2OTVlMDdhYzU3MWQ2Y2RhYzhiYzAiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkwzOUZ5N0FDMkhoajk1Z2gzWWIyQVU1WUhoMW1RU0FIZ3BOaXh2bTI3cG9pemNKeUx0VWkiLCAKICAgICAgICAiYjBiYmVkZTMzZWYyNTRlODM3NmFjZWIxNTEwMjUzZmMzNTUwZWZkMGZjZjg0ZGNkMGM5OTk4YjI4OGYxNjZiMyIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5MWNUVlVjZ3lkcXlaTGdhQU5wZjFmdkw1NUZINTNRTW00QnNuQ0FEVk5ZdVd1cWRWeXMiLCAKICAgICAgICAiMDM3ZjQxOTJjNjMwZjM5OWQ5MjcxZTI2YzU3NTI2OWIxZDE1YmU1NTNlYTFhNzIxN2YwY2I4NTEzY2VmNDFjYiIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjUXNwZlN6c2dMZWlKR0IydTh2ckFpV3BDVTRNeFVUNkpzZVdvMlNqWHk0UWJ6bjJmd0R3IiwgCiAgICAgICAgIjYyNTFlMjA1ZThhZDUwOGJhYjU1OTZiZWUwODZlZjE2Y2Q0YjIzOWUwY2MwYzVkN2M0ZTYwMzU0NDFlN2Q1ZGUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxOWRjYXdvS2NaZFF6MzY1V3BYV01oWDZRQ1VwUjlTWTRyIiwgCiAgICAgICAgIjVlYWRhZjliYjcxMjFmMGYxOTI1NjFhNWE2MmY1ZTVmNTQyMTAyOTIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjM3U3A2UnYzeTRrVmQxblExSlY1cGZxWGNjSE55Wm0xeDMiLCAKICAgICAgICAiM2YyMTBlNzI3N2M4OTljM2ExNTVjYzFjOTBmNDEwNmNiZGRlZWM2ZSIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAibXlvcWNnWWllaHVmcnNubmtxZHFicDY5ZGRkVkRNb3BKdSIsIAogICAgICAgICJjOGEzYzJhMDlhMjk4NTkyYzNlMTgwZjAyNDg3Y2Q5MWJhMzQwMGI1IiwgCiAgICAgICAgewogICAgICAgICAgICAiYWRkclR5cGUiOiAicHVia2V5IiwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiB0cnVlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjJON0Z1d3VVdW9UQnJERmRyQVo5S3hCbXRxTUx4Y2U5aTFDIiwgCiAgICAgICAgIjk5YjMxZGY3YzkwNjhkMTQ4MWI1OTY1NzhkZGJiNGQzYmQ5MGJhZWIiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJzY3JpcHQiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IHRydWUKICAgICAgICB9CiAgICBdLCAKICAgIFsKICAgICAgICAiNUtMNnpFYU10UFJYWktvMWJiTXE3SkRqam8xYkp1UWNzZ0wzM2plM29ZOHVTSkNSNWI0IiwgCiAgICAgICAgImM3NjY2ODQyNTAzZGI2ZGM2ZWEwNjFmMDkyY2ZiOWMzODg0NDg2MjlhNmZlODY4ZDA2OGM0MmE0ODhiNDc4YWUiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiBmYWxzZSwgCiAgICAgICAgICAgICJpc1ByaXZrZXkiOiB0cnVlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIkt3VjlLQWZ3Ynd0NTF2ZVpXTnNjUlRlWnM5Q0twb2p5dTFNc1BuYUtURjVrejY5SDFVTjIiLCAKICAgICAgICAiMDdmMDgwM2ZjNTM5OWU3NzM1NTVhYjFlODkzOTkwN2U5YmFkYWNjMTdjYTEyOWU2N2EyZjVmMmZmODQzNTFkZCIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IHRydWUsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogdHJ1ZSwgCiAgICAgICAgICAgICJpc1Rlc3RuZXQiOiBmYWxzZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICI5M044N0Q2dXhTQnp3WHZwb2twemc4RkZtZlFQbXZYNHhIb1dRZTNwTGRZcGJpd1Q1WVYiLCAKICAgICAgICAiZWE1NzdhY2ZiNWQxZDE0ZDNiN2IxOTVjMzIxNTY2ZjEyZjg3ZDJiNzdlYTNhNTNmNjhkZjdlYmY4NjA0YTgwMSIsIAogICAgICAgIHsKICAgICAgICAgICAgImlzQ29tcHJlc3NlZCI6IGZhbHNlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICJjTXhYdXNTaWhhWDU4d3BKM3ROdXVVY1pFUUd0NkRLSjF3RXB4eXM4OEZGYVFDWWprdTloIiwgCiAgICAgICAgIjBiM2IzNGYwOTU4ZDhhMjY4MTkzYTk4MTRkYTkyYzNlOGI1OGI0YTQzNzhhNTQyODYzZTM0YWMyODljZDgzMGMiLCAKICAgICAgICB7CiAgICAgICAgICAgICJpc0NvbXByZXNzZWQiOiB0cnVlLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IHRydWUsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogdHJ1ZQogICAgICAgIH0KICAgIF0sIAogICAgWwogICAgICAgICIxM3AxaWpMd3NucmN1eXFjVHZKWGtxMkFTZFhxY25FQkxFIiwgCiAgICAgICAgIjFlZDQ2NzAxN2YwNDNlOTFlZDRjNDRiNGU4ZGQ2NzRkYjIxMWM0ZTYiLCAKICAgICAgICB7CiAgICAgICAgICAgICJhZGRyVHlwZSI6ICJwdWJrZXkiLCAKICAgICAgICAgICAgImlzUHJpdmtleSI6IGZhbHNlLCAKICAgICAgICAgICAgImlzVGVzdG5ldCI6IGZhbHNlCiAgICAgICAgfQogICAgXSwgCiAgICBbCiAgICAgICAgIjNBTEpIOVk5NTFWQ0djVlpZQWRwQTNLY2hvUDlNY0VqMUciLCAKICAgICAgICAiNWVjZTBjYWRkZGM0MTViMTk4MGYwMDE3ODU5NDcxMjBhY2RiMzZmYyIsIAogICAgICAgIHsKICAgICAgICAgICAgImFkZHJUeXBlIjogInNjcmlwdCIsIAogICAgICAgICAgICAiaXNQcml2a2V5IjogZmFsc2UsIAogICAgICAgICAgICAiaXNUZXN0bmV0IjogZmFsc2UKICAgICAgICB9CiAgICBdCl0K","base64")); +var dataBase58KeysInvalid = JSON.parse(Buffer("WwogICAgWwogICAgICAgICIiCiAgICBdLCAKICAgIFsKICAgICAgICAieCIKICAgIF0sIAogICAgWwogICAgICAgICIzN3FnZWtMcENDSHJRdVNqdlgzZnM0OTZGV1RHc0hGSGl6akpBczZOUGNSNDdhZWZubkNXRUNBaEhWNkUzZzRZTjd1N1l1d29kNVkiCiAgICBdLCAKICAgIFsKICAgICAgICAiZHpiN1ZWMVVpNTVCQVJ4djdBVHhBdENVZUpzQU5Lb3ZER1dGVmdwVGJocTlndlBxUDN5diIKICAgIF0sIAogICAgWwogICAgICAgICJNdU51N1pBRURGaUh0aGl1bm03ZFBqd0txclZOQ00zbUF6NnJQOXpGdmVRdTE0WUE4Q3hFeFNKVEhjVlA5REVybjZ1ODRFNkVqN1MiCiAgICBdLCAKICAgIFsKICAgICAgICAiclBwUXBZa255TlE1QUVIdVk2SDhpakpKclljMm5ES0trOWpqbUtFWHNXenlBUWNGR3BETFUyWnZzbW9pOEpMUjdoQXdveTNSUVdmIgogICAgXSwgCiAgICBbCiAgICAgICAgIjRVYzNGbU42TlE2ekxCSzVRUUJYUkJVUkVhYUh3Q1pZc0dDdWVIYXV1RG1KcFpLbjZqa0Vza01CMlppMkNOZ3RiNXI2ZXBXRUZmVUpxIgogICAgXSwgCiAgICBbCiAgICAgICAgIjdhUWdSNURGUTI1dnlYbXFaQVdtblZDakwzUGtCY2RWa0JVcGpyak1UY2doSHgzRTh3YiIKICAgIF0sIAogICAgWwogICAgICAgICIxN1FwUHByamVnNjlmVzFEVjhEY1lZQ0t2V2pZaFh2V2tvdjZNSjFpVFR2TUZqNndlQXFXN3d5YlplSDU3V1ROeFhWQ1JINHZlVnMiCiAgICBdLCAKICAgIFsKICAgICAgICAiS3h1QUNEdml6OFh2cG4xeEFoOU1mb3B5U1pOdXlhallNWld6MTZEdjJtSEhyeXpuV1VwMyIKICAgIF0sIAogICAgWwogICAgICAgICI3bkszR1NtcWRYSlF0ZG9odkdmSjdLc1NtbjNUbUdxRXh1ZzQ5NTgzYkRBTDkxcFZTR3E1eFM5U0hvQVlMM1d2M2lqS1RpdDY1dGgiCiAgICBdLCAKICAgIFsKICAgICAgICAiY1RpdmRCbXE3YmF5M1JGR0VCQnVOZk1oMlAxcERDZ1JZTjJXYnhtZ3dyNGtpM2pOVUwydmEiCiAgICBdLCAKICAgIFsKICAgICAgICAiZ2pNVjR2ak5qeU1ybmE0ZnNBcjhiV3hBYnd0bU1VQlhKUzN6TDROSnQ1cWpvenBiUUxtQWZLMXVBM0NxdVNxc1pRTXBvRDFnMm5rIgogICAgXSwgCiAgICBbCiAgICAgICAgImVtWG0xbmFCTW9WelBqYms3eHBlVFZNRnk0b0RFZTI1VW1veUdnS0VCMWdHV3NLOGtSR3MiCiAgICBdLCAKICAgIFsKICAgICAgICAiN1ZUaFFuTlJqMW8zWnl2YzdYSFBScmpEZjhqMm9pdlBUZURYblJQWVdlWUdFNHBYZVJKRFpnZjI4cHB0aTVoc0hXWFMyR1NvYmRxeW8iCiAgICBdLCAKICAgIFsKICAgICAgICAiMUc5dTZvQ1ZDUGgybzhtM3Q1NUFDaVl2RzF5NUJIZXdVa0RTZGlRYXJEY1lYWGhGSFlkek1kWWZVQWhmeG41dk5aQndwZ1VOcHNvIgogICAgXSwgCiAgICBbCiAgICAgICAgIjMxUVE3Wk1Ma1NjRGlCNFZ5Wmp1cHRyN0FFYzlqMVNqc3RGN3BSb0xoSFRHa1c0UTJ5OVhFTG9iUW1oaFd4ZVJ2cWN1a0dkMVhDcSIKICAgIF0sIAogICAgWwogICAgICAgICJESHFLU25weGE4WmRReUg4a2VBaHZMVHJma3lCTVF4cW5nY1FBNU44TFE5S1Z0MjVrbUdOIgogICAgXSwgCiAgICBbCiAgICAgICAgIjJMVUhjSlBid0xDeTlHTEgxcVhtZm1Bd3ZhZFd3NGJwNFBDcERmZHVMcVYxN3M2aURjeTFpbVV3aFFKaEFvTm9OMVhObXdlaUpQNGkiCiAgICBdLCAKICAgIFsKICAgICAgICAiN1VTUnpCWEFubWNrOGZYOUhtVzdSQWI0cXQ5MlZGWDZzb0NudHM5czc0d3htNGdndVZodEc1b2Y4ZlpHYk5QSkE4M2lySFZZNmJDb3MiCiAgICBdLCAKICAgIFsKICAgICAgICAiMURHZXpvN0JmVmViWnhBYk5UM1hHdWpkZUh5Tk5CRjN2bmZpY1lvVFNwNFBmSzJRYU1MOWJIekFNeGtlM3dkS2RIWVdtc01USlZ1IgogICAgXSwgCiAgICBbCiAgICAgICAgIjJEMTJEcURaS3dDeHhrenMxWkFUSld2Z0pHaFE0Y0ZpM1dyaXpRNXpMQXloTjVIeHVBSjF5TVlhSnA4R3VZc1RMTHhUQXo2b3RDZmIiCiAgICBdLCAKICAgIFsKICAgICAgICAiOEFGSnp1VHVqWGp3MVo2TTNmV2hRMXVqRFc3enNWNGVQZVZqVm83RDFlZ0VScVNXOW5aIgogICAgXSwgCiAgICBbCiAgICAgICAgIjE2M1ExN3FMYlRDdWU4WVkzQXZqcFVob3R1YW9kTG0ydXFNaHBZaXJzS2pWcW54SlJXVEVveXdNVlkzTmJCQUh1aEFKMmNGOUdBWiIKICAgIF0sIAogICAgWwogICAgICAgICIyTW5tZ2lSSDRlR0x5TGM5ZUFxU3R6azdkRmdCakZ0VUN0dSIKICAgIF0sIAogICAgWwogICAgICAgICI0NjFRUTJzWVd4VTdIMlBWNG9Cd0pHTmNoOFhWVFlZYlp4VSIKICAgIF0sIAogICAgWwogICAgICAgICIyVUN0djUzVnR0bVFZa1ZVNFZNdFhCMzFSRXZRZzRBQnpzNDFBRUtaOFVjQjdEQWZWemRrVjlKREVyd0d3eWo1QVVITGttZ1plb2JzIgogICAgXSwgCiAgICBbCiAgICAgICAgImNTTmpBc25oZ3RpRk1pNk10ZnZnc2NNQjJDYmhuMnYxRlVZZnZpSjFDZGpmaWR2bWVXNm1uIgogICAgXSwgCiAgICBbCiAgICAgICAgImdtc293Mlk2RVdBRkRGRTFDRTRIZDNUcHUyQnZmbUJmRzFTWHN1UkFSYm50MVdqa1puRmgxcUdUaXB0V1dianNxMlE2cXZwZ0pWaiIKICAgIF0sIAogICAgWwogICAgICAgICJua3NVS1NrelM3NnY4RXNTZ296WEdNb1FGaUNvQ0h6Q1ZhakZLQVhxeks1b245WkpZVkhNRDVDS3dnbVgzUzNjN00xVTN4YWJVbnkiCiAgICBdLCAKICAgIFsKICAgICAgICAiTDNmYXZLMVV6RkdnZHpZQkYyb0JUNXRiYXlDbzR2dFZCTEpoZzJpWXVNZWVQeFdHOFNRYyIKICAgIF0sIAogICAgWwogICAgICAgICI3VnhMeEdHdFlUNk45OUdkRWZpNnh6NTZ4ZFE4blAyZEcxQ2F2dVh4N1JmMlBydk5NVEJOZXZqa2ZnczlKbWtjR202RVhwajhpcHlQWiIKICAgIF0sIAogICAgWwogICAgICAgICIybWJad0ZYRjZjeFNoYUNvMmN6VFJCNjJXVHg5THhoVHRwUCIKICAgIF0sIAogICAgWwogICAgICAgICJkQjdjd1lkY1BTZ2l5QXdLV0wzSndDVndTazZlcFUydHh3IgogICAgXSwgCiAgICBbCiAgICAgICAgIkhQaEZVaFVBaDhaUVFpc0g4UVFXYWZBeHRRWWp1M1NGVFgiCiAgICBdLCAKICAgIFsKICAgICAgICAiNGN0QUg2QWtIenE1aW9pTTFtOVQzRTJoaVlFZXY1bVRzQiIKICAgIF0sIAogICAgWwogICAgICAgICJIbjF1Rmk0ZE5leFdycUFScGpNcWdUNmNYMVVzTlB1VjNjSGRHZzlFeHlYdzhIVEthZGJrdFJEdGRlVm1ZM00xQnhKU3RpTDR2akoiCiAgICBdLCAKICAgIFsKICAgICAgICAiU3EzZkRidnV0QUJtbkFISEV4SkRnUExRbjQ0S25OQzdVc1h1VDdLWmVjcGFZRE1VOVR4cyIKICAgIF0sIAogICAgWwogICAgICAgICI2VHFXeXJxZGdVRVlEUVUxYUNoTXVGTU1FaW1IWDQ0cUhGekNVZ0dmcXhHZ1pOTVVWV0oiCiAgICBdLCAKICAgIFsKICAgICAgICAiZ2lxSm83b1dxRnhOS1d5cmdjQnhBVkhYbmpKMXQ2Y0dvRWZmY2U1WTF5N3U2NDlOb2o1d0o0bW1pVUFLRVZWcllBR2cyS1BCM1k0IgogICAgXSwgCiAgICBbCiAgICAgICAgImNOekhZNWU4dmNtTTNRVkpVY2pDeWlLTVlmZVl2eXVlcTVxQ01WM2txY3lTb0x5R0xZVUsiCiAgICBdLCAKICAgIFsKICAgICAgICAiMzd1VGU1NjhFWWM5V0xvSEVkOWpYRXZVaVdicTVMRkxzY055cXZBekxVNXZCQXJVSkE2ZXlka0xtbk13SkRqa0w1a1hjMlZLN2lnIgogICAgXSwgCiAgICBbCiAgICAgICAgIkVzWWJHNHRXV1dZNDVHMzFub3g4MzhxTmR6a3NiUHlTV2MiCiAgICBdLCAKICAgIFsKICAgICAgICAibmJ1emhmd01vTnpBM1BhRm55TGNSeEU5YlRKUERralo2UmY2WTZvMmNrWFpmelp6WEJUIgogICAgXSwgCiAgICBbCiAgICAgICAgImNRTjlQb3haZUNXSzF4NTZ4bno2UVlBc3ZSMTFYQWNlM0VocDNnTVVkZlNRNTNZMm1QengiCiAgICBdLCAKICAgIFsKICAgICAgICAiMUdtM04zcmtlZjZpTWJ4NHZvQnpheHRYY21taU1UcVpQaGN1QWVwUnpZVUpRVzRxUnBFbkh2TW9qem9mNDJoakZSZjhQRTJqUGRlIgogICAgXSwgCiAgICBbCiAgICAgICAgIjJUQXEydHVONng2bTIzM2JwVDd5cWRZUVBFTGRUREpuMWVVIgogICAgXSwgCiAgICBbCiAgICAgICAgIm50RXRubkdocVBpaTRqb0FCdkJ0U0VKRzZCeGpUMnRVWnFFOFBjVllnazNSSHBneGdIRENReE5iTEpmN2FyZGYxZERrMm9DUTdDZiIKICAgIF0sIAogICAgWwogICAgICAgICJLeTFZam9aTmdRMTk2SEpWM0hwZGtlY2ZoUkJtUlpkTUprODlIaTVLR2ZwZlB3UzJiVWJmZCIKICAgIF0sIAogICAgWwogICAgICAgICIyQTFxMVlzTVpvd2FiYnZ0YTdrVHkyRmQ2cU40cjVaQ2VHM3FMcHZaQk16Q2l4TVVka04yWTRkSEIxd1BzWkFlVlhVR0Q4M01mUkVEIgogICAgXQpdCg==","base64")); +var dataSighash = JSON.parse(Buffer("WwoJWyJyYXdfdHJhbnNhY3Rpb24sIHNjcmlwdCwgaW5wdXRfaW5kZXgsIGhhc2hUeXBlLCBzaWduYXR1cmVfaGFzaCAocmVzdWx0KSJdLAogIFsiMDEwMDAwMDAwMWIxNGJkY2JjM2UwMWJkYWFkMzZjYzA4ZTgxZTY5YzgyZTEwNjBiYzE0ZTUxOGRiMmI0OWFhNDNhZDkwYmEyNjAwMDAwMDAwMDQ5MDA0NzMwNDQwMjIwM2YxNmM2ZjQwMTYyYWI2ODY2MjFlZjMwMDBiMDRlNzU0MThhMGMwY2IyZDhhZWJlYWM4OTRhZTM2MGFjMWU3ODAyMjBkZGMxNWVjZGZjMzUwN2FjNDhlMTY4MWEzM2ViNjA5OTY2MzFiZjZiZjViYzBhMDY4MmM0ZGI3NDNjZTdjYTJiMDFmZmZmZmZmZjAxNDA0MjBmMDAwMDAwMDAwMDE5NzZhOTE0NjYwZDRlZjNhNzQzZTNlNjk2YWQ5OTAzNjRlNTU1YzI3MWFkNTA0Yjg4YWMwMDAwMDAwMCIsICI1MTQxMDRjYzcxZWIzMGQ2NTNjMGMzMTYzOTkwYzQ3Yjk3NmYzZmIzZjM3Y2NjZGNiZWRiMTY5YTFkZmVmNThiYmZiZmFmZjdkOGE0NzNlN2UyZTZkMzE3Yjg3YmFmZThiZGU5N2UzY2Y4ZjA2NWRlYzAyMmI1MWQxMWZjZGQwZDM0OGFjNDQxMDQ2MWNiZGNjNTQwOWZiNGI0ZDQyYjUxZDMzMzgxMzU0ZDgwZTU1MDA3OGNiNTMyYTM0YmZhMmZjZmRlYjdkNzY1MTlhZWNjNjI3NzBmNWIwZTRlZjg1NTE5NDZkOGE1NDA5MTFhYmUzZTc4NTRhMjZmMzlmNThiMjVjMTUzNDJhZjUyYWUiLCAwLCAxLCAiYzIxNDY5ZjM5NmQyNjY1MDdmZDMzOTI5MmJkOGZmMGE2ZDRiMjk1MzhiOTE0MjY1Mzg3YTRkMTdlNDgzOWQyNSJdLAoJWyI5MDdjMmJjNTAzYWRlMTFjYzNiMDRlYjI5MThiNmY1NDdiMDYzMGFiNTY5MjczODI0NzQ4Yzg3ZWExNGIwNjk2NTI2YzY2YmE3NDAyMDAwMDAwMDRhYjY1YWJhYmZkMWY5YmRkNGVmMDczYzdhZmM0YWUwMGRhOGE2NmY0MjljOTE3YTAwODFhZDFlMWRhYmNlMjhkMzczZWFiODFkODYyOGRlODAyMDAwMDAwMDk2YWFiNTI1M2FiNTIwMDAwNTJhZDA0MmI1ZjI1ZWZiMzNiZWVjOWYzMzY0ZThhOTEzOWU4NDM5ZDlkN2UyNjUyOWMzYzMwYjZjM2ZkODlmODY4NGNmZDY4ZWEwMjAwMDAwMDA5YWI1MzUyNjUwMDYzNmE1MmFiNTk5YWMyZmUwMmE1MjZlZDA0MDAwMDAwMDAwODUzNTMwMDUxNjM1MjUxNTE2NDM3MGUwMTAwMDAwMDAwMDMwMDYzMDBhYjJlYzIyOSIsICIiLCAyLCAxODY0MTY0NjM5LCAiMzFhZjE2N2E2Y2YzZjlkNWY2ODc1Y2FhNGQzMTcwNGNlYjBlYmEwNzhkMTMyYjc4ZGFiNTJjM2I4OTk3MzE3ZSJdLAoJWyJhMGFhMzEyNjA0MTYyMWE2ZGVhNWI4MDAxNDFhYTY5NmRhZjI4NDA4OTU5ZGZiMmRmOTYwOTVkYjlmYTQyNWFkM2Y0MjdmMmY2MTAzMDAwMDAwMDE1MzYwMjkwZTljNjA2M2ZhMjY5MTJjMmU3ZmI2YTBhZDgwZjFjNWZlYTE3NzFkNDJmMTI5NzYwOTJlN2E4NWE0MjI5ZmRiNmU4OTAwMDAwMDAwMDFhYmMxMDlmNmU0NzY4OGFjMGU0NjgyOTg4Nzg1NzQ0NjAyYjhjODcyMjhmY2VmMDY5NTA4NWVkZjE5MDg4YWYxYTlkYjEyNmU5MzAwMDAwMDAwMDY2NTUxNmFhYzUzNmFmZmZmZmZmZjhmZTUzZTA4MDZlMTJkZmQwNWQ2N2FjNjhmNDc2OGZkYmUyM2ZjNDhhY2UyMmE1YWE4YmEwNGM5NmQ1OGUyNzUwMzAwMDAwMDA5YWM1MWFiYWM2M2FiNTE1MzY1MDUyNGFhNjgwNDU1Y2U3YjAwMDAwMDAwMDAwMDQ5OWU1MDAzMDAwMDAwMDAwODYzNmEwMGFjNTI2NTYzYWM1MDUxZWUwMzAwMDAwMDAwMDNhYmFjYWJkMmI2ZmUwMDAwMDAwMDAwMDM1MTY1NjM5MTBmYjZiNSIsICI2NSIsIDAsIC0xMzkxNDI0NDg0LCAiNDhkNmExYmQyY2Q5ZWVjNTRlYjg2NmZjNzEyMDk0MThhOTUwNDAyYjVkN2U1MjM2M2JmYjc1Yzk4ZTE0MTE3NSJdLAoJWyI2ZTdlOWQ0YjA0Y2UxN2FmYTFlODU0NmI2MjdiYjhkODlhNmE3ZmVmZDlkODkyZWM4YTE5MmQ3OWMyY2VhZmMwMTY5NGE2YTdlNzAzMDAwMDAwMDk1M2FjNmE1MTAwNjM1MzYzNmEzM2JjZWQxNTQ0Zjc5N2YwOGNlZWQwMmYxMDhkYTIyY2QyNGM5ZTc4MDlhNDQ2YzYxZWIzODk1OTE0NTA4YWM5MWYwNzA1M2EwMTAwMDAwMDA1NTE2M2FiNTE2YWZmZmZmZmZmMTFkYzU0ZWVlOGY5ZTRmZjBiY2Y2YjFhMWEzNWIxY2QxMGQ2MzM4OTU3MTM3NTUwMWFmNzQ0NDA3M2JjZWMzYzAyMDAwMDAwMDQ2YWFiNTM1MTRhODIxZjBjZTM5NTZlMjM1ZjcxZTRjNjlkOTFhYmUxZTkzZmI3MDNiZDMzMDM5YWM1NjcyNDllZDMzOWJmMGJhMDg4M2VmMzAwMDAwMDAwMDkwMDYzYWI2NTAwMDA2NWFjNjU0YmVjM2NjNTA0YmNmNDk5MDIwMDAwMDAwMDA1YWI2YTUyYWJhYzY0ZWIwNjAxMDAwMDAwMDAwNzZhNmE1MzUxNjUwMDUzYmJiYzEzMDEwMDAwMDAwMDA1NmE2YWFiNTNhYmQ2ZTEzODAxMDAwMDAwMDAwMjZhNTFjNGU1MDliOCIsICJhY2FiNjU1MTUxIiwgMCwgNDc5Mjc5OTA5LCAiMmEzZDk1YjA5MjM3YjcyMDM0YjIzZjJkMmJiMjlmYTMyYTU4YWI1YzZhYTcyZjZhYWZkZmExNzhhYjFkZDAxYyJdLAoJWyI3MzEwN2NiZDAyNWMyMmViYzhjM2UwYTQ3YjJhNzYwNzM5MjE2YTUyOGRlOGQ0ZGFiNWQ0NWNiZWIzMDUxY2ViYWU3M2IwMWNhMTAyMDAwMDAwMDdhYjYzNTM2NTZhNjM2YWZmZmZmZmZmZTI2ODE2ZGZmYzY3MDg0MWU2YTZjOGM2MWM1ODZkYTQwMWRmMTI2MWEzMzBhNmM2YjNkZDlmOWEwNzg5YmM5ZTAwMDAwMDAwMDgwMGFjNjU1MmFjNmFhYzUxZmZmZmZmZmYwMTc0YThmMDAxMDAwMDAwMDAwNGFjNTI1MTUxMDAwMDAwMDAiLCAiNTE2M2FjNjM2MzUxNTFhYyIsIDEsIDExOTA4NzQzNDUsICIwNmUzMjhkZTI2M2E4N2IwOWJlYWJlMjIyYTIxNjI3YTZlYTVjN2Y1NjAwMzBkYTMxNjEwYzQ2MTFmNGE0NmJjIl0sCglbImU5M2JiZjY5MDJiZTg3MjkzM2NiOTg3ZmMyNmJhMGY5MTRmY2ZjMmY2Y2U1NTUyNTg1NTRkZDk5MzlkMTIwMzJhODUzNmM4ODAyMDMwMDAwMDAwNDUzYWM1MzUzZWFiYjY0NTFlMDc0ZTZmZWY5ZGUyMTEzNDdkNmE0NTkwMGVhNWFhZjI2MzZlZjc5NjdmNTY1ZGNlNjZmYTQ1MTgwNWM1Y2QxMDAwMDAwMDAwMzUyNTI1M2ZmZmZmZmZmMDQ3ZGMzZTYwMjAwMDAwMDAwMDc1MTY1NjVhYzY1NmFhYmVjOWVlYTAxMDAwMDAwMDAwMTYzM2U0NmU2MDAwMDAwMDAwMDAwMTUwODBhMDMwMDAwMDAwMDAxYWIwMDAwMDAwMCIsICI1MzAwYWM2YTUzYWI2YSIsIDEsIC04ODY1NjI3NjcsICJmMDNhYTRmYzVmOTdlODI2MzIzZDBkYWEwMzM0M2ViZjhhMzRlZDY3YTFjZTE4NjMxZjhiODhlNWM5OTJlNzk4Il0sCglbIjUwODE4ZjRjMDFiNDY0NTM4YjFlN2U3ZjVhZTRlZDk2YWQyM2M2OGM4MzBlNzhkYTlhODQ1YmMxOWI1YzNiMGIyMGJiODJlNWU5MDMwMDAwMDAwNzYzNTI2YTYzNjU1MzUyZmZmZmZmZmYwMjNiM2Y5YzA0MDAwMDAwMDAwODYzMDA1MTUxNmE2YTUxNjNhODNjYWYwMTAwMDAwMDAwMDU1M2FiNjU1MTAwMDAwMDAwMDAiLCAiNmFhYyIsIDAsIDk0Njc5NTU0NSwgIjc0NjMwNmYzMjJkZTJiNGI1OGZmZTdmYWFlODNmNmE3MjQzM2MyMmY4ODA2MmNkZGU4ODFkNGRkOGE1YTRlMmQiXSwKCVsiYTkzZTkzNDQwMjUwZjk3MDEyZDQ2NmE2Y2MyNDgzOWY1NzJkZWYyNDFjODE0ZmU2YWU5NDQ0MmNmNThlYTMzZWIwZmRkOWJjYzEwMzAwMDAwMDA2MDA2MzZhMDA2NWFjZmZmZmZmZmY1ZGVlM2E2ZTdlNWFkNjMxMGRlYTNlNWIzZGRkYTFhNTZiZjhkZTdkM2I3NTg4OWZjMDI0YjVlMjMzZWMxMGY4MDMwMDAwMDAwN2FjNTM2MzUyNTNhYjUzZmZmZmZmZmYwMTYwNDY4YjA0MDAwMDAwMDAwODAwNTI2YTUzMDBhYzUyNmEwMDAwMDAwMCIsICJhYzAwNjM2YTUzIiwgMSwgMTc3MzQ0MjUyMCwgIjVjOWQzYTJjZTkzNjViYjcyY2ZhYmJhYTQ1NzljODQzYmI4YWJmMjAwOTQ0NjEyY2Y4YWU0YjU2YTkwOGJjYmQiXSwKCVsiY2U3ZDM3MWYwNDc2ZGRhOGI4MTFkNGJmM2I2NGQ1Zjg2MjA0NzI1ZGVlYWEzOTM3ODYxODY5ZDViMjc2NmVhN2QxN2M1N2U0MGIwMTAwMDAwMDAzNTM1MjY1ZmZmZmZmZmY3ZTdlOTE4OGY3NmMzNGE0NmQwYmJlODU2YmRlNWNiMzJmMDg5YTA3YTcwZWE5NmUxNWU5MmFiYjM3ZTQ3OWExMDEwMDAwMDAwNmFiNjU1MmFiNjU1MjI1YmNhYjA2ZDFjMjg5NjcwOWYzNjRiMWUzNzI4MTRkODQyYzljNjcxMzU2YTFhYTVjYTRlMDYwNDYyYzY1YWU1NWFjYzAyZDAwMDAwMDAwMDZhYmFjMDA2M2FjNTI4MWIzM2UzMzJmOTZiZWViZGJjNmEzNzllYmU2YWVhMzZhZjExNWMwNjc0NjFlYjk5ZDIyYmExYWZiZjU5NDYyYjU5YWUwYmQwMjAwMDAwMDA0YWI2MzUzNjViZTE1YzIzODAxNzI0YTE3MDQwMDAwMDAwMDA5NjUwMDZhNjVhYzAwMDAwMDUyY2E1NTU1NzIiLCAiNTNhYjUzMDA1MWFiIiwgMSwgMjAzMDU5ODQ0OSwgImMzMzZiMmY3ZDM3MDJmYmJkZWZmYzAxNGQxMDZjNjllMzQxM2M3YzcxZTQzNmJhNzU2MmQ4YTdhMjg3MWYxODEiXSwKCVsiZDNiNzQyMWUwMTFmNGRlMGYxY2VhOWJhNzQ1OGJmMzQ4NmJlZTcyMjUxOWVmYWI3MTFhOTYzZmE4YzEwMDk3MGNmNzQ4OGI3YmIwMjAwMDAwMDAzNTI1MzUyZGNkNjFiMzAwMTQ4YmU1ZDA1MDAwMDAwMDAwMDAwMDAwMDAwIiwgIjUzNTI1MTUzNmFhYzUzNmEiLCAwLCAtMTk2MDEyODEyNSwgIjI5YWE2ZDJkNzUyZDMzMTBlYmEyMDQ0Mjc3MGFkMzQ1YjdmNmEzNWY5NjE2MWVkZTVmMDdiMzNlOTIwNTNlMmEiXSwKCVsiMDRiYWM4YzUwMzM0NjAyMzU5MTlhOWM2M2M0MmIyZGI4ODRjN2M4ZjJlZDhmY2Q2OWZmNjgzYTBhMmNjY2Q5Nzk2MzQ2YTA0MDUwMjAwMDAwMDAzNjU1MzUxZmNhZDNhMmM1YTdjYmFkZWI0ZWM3YWNjOTgzNmMzZjVjM2U3NzZlNWM1NjYyMjBmN2Y5NjVjZjE5NGY4ZWY5OGVmYjVlMzUzMDIwMDAwMDAwNzUyNmEwMDY1NTI1MjY1MjZhMmY1NWJhNWY2OTY5OWVjZTc2NjkyNTUyYjM5OWJhOTA4MzAxOTA3YzU3NjNkMjhhMTViMDg1ODFiMjMxNzljYjAxZWFjMDMwMDAwMDAwNzUzNjNhYjZhNTE2MzUxMDczOTQyYzIwMjVhYTk4YTA1MDAwMDAwMDAwNzY1MDA2YWFiYWM2NWFiZDdmZmE2MDMwMDAwMDAwMDA0NTE2YTY1NTIwMDAwMDAwMCIsICI1M2FjNjM2NWFjNTI2YSIsIDEsIDc2NDE3NDg3MCwgImJmNWZkYzMxNGRlZDIzNzJhMGFkMDc4NTY4ZDc2YzUwNjRiZjJhZmZiZGUwNzY0YzMzNTAwOWU1NjYzNDQ4MWIiXSwKCVsiYzM2M2E3MGMwMWFiMTc0MjMwYmJlNGFmZTBjM2VmYTJkN2YyZmVhZjE3OTQzMTM1OWFkZWRjY2YzMGQxZjY5ZWZlMGM4NmVkMzkwMjAwMDAwMDAyYWI1MTU1ODY0OGZlMDIzMTMxOGIwNDAwMDAwMDAwMDE1MTY2MjE3MDAwMDAwMDAwMDAwOGFjNTMwMDAwNmE2M2FjYWMwMDAwMDAwMCIsICIiLCAwLCAyMTQ2NDc5NDEwLCAiMTkxYWIxODBiMGQ3NTM3NjM2NzE3MTdkMDUxZjEzOGQ0ODY2YjdjYjBkMWQ0ODExNDcyZTY0ZGU1OTVkMmM3MCJdLAoJWyI4ZDQzN2E3MzA0ZDg3NzIyMTBhOTIzZmQ4MTE4N2M0MjVmYzI4YzE3YTUwNTI1NzE1MDFkYjA1YzdlODliMTE0NDhiMzY2MThjZDAyMDAwMDAwMDI2YTYzNDBmZWMxNGFkMmM5Mjk4ZmRlMTQ3N2YxZTgzMjVlNTc0N2I2MWI3ZTJmZjJhNTQ5ZjNkMTMyNjg5NTYwYWI2YzQ1ZGQ0M2MzMDEwMDAwMDAwOTYzYWMwMGFjMDAwMDUxNTE2YTQ0N2VkOTA3YTdlZmZmZWJlYjEwMzk4OGJmNWY5NDdmYzY4OGFhYjJjNmE3OTE0ZjQ4MjM4Y2Y5MmMzMzdmYWQ0YTc5MzQ4MTAyMDAwMDAwMDg1MzUyYWM1MjZhNTE1MjUxNzQzNmVkZjJkODBlM2VmMDY3MjUyMjdjOTcwYTgxNmIyNWQwYjU4ZDJjZDNjMTg3YTdhZjJjZWE2NmQ2YjI3YmE2OWJmMzNhMDMwMDAwMDAwNzAwMDA2M2FiNTI2NTUzZjNmMGQ2MTQwMzg2ODE1ZDAzMDAwMDAwMDAwM2FiNjMwMGRlMTM4ZjAwMDAwMDAwMDAwOTAwNTI1MTUzNTE1MjY1YWJhYzFmODcwNDAzMDAwMDAwMDAwMzZhYWM2NTAwMDAwMDAwIiwgIjUxIiwgMywgLTMxNTc3OTY2NywgImI2NjMyYWM1MzU3OGE3NDFhZThjMzZkOGI2OWU3OWYzOWI4OTkxM2EyYzc4MWNkZjFiZjQ3YThjMjlkOTk3YTUiXSwKCVsiZmQ4Nzg4NDAwMzFlODJmZGJlMWFkMWQ3NDVkMTE4NTYyMmIwMDYwYWM1NjYzODI5MGVjNGY2NmIxYmVlZjQ0NTA4MTcxMTRhMmMwMDAwMDAwMDA5NTE2YTYzYWI1MzY1MDA1MWFiZmZmZmZmZmYzN2I3YTEwMzIyYjU0MThiZmQ2NGZiMDljZDhhMjdkZGY1NzczMWFlYjFmMWY5MjBmZmRlN2NiMmRmYjZjZGI3MDMwMDAwMDAwODUzNmE1MzY1YWM1MzUxNTM2OWVjYzAzNGYxNTk0NjkwZGJlMTg5MDk0ZGM4MTZkNmQ1N2VhNzU5MTdkZTc2NGNiZjhlY2NjZTQ2MzJjYmFiZTdlMTE2Y2QwMTAwMDAwMDAzNTE1MzUyZmZmZmZmZmYwMzU3NzdmYzAwMDAwMDAwMDAwMzUxNTIwMGFiZTkxNDAzMDAwMDAwMDAwNTAwNjMwMDUxNjViZWQ2ZDEwMjAwMDAwMDAwMDc2MzAwNTM2MzYzYWI2NTE5NWU5MTEwIiwgIjYzNTI2NSIsIDAsIDE3Mjk3ODc2NTgsICI2ZTM3MzVkMzdhNGIyOGM0NTkxOTU0M2FhYmNiNzMyZTdhM2UxODc0ZGI1MzE1YWJiN2NjNmIxNDNkNjJmZjEwIl0sCglbImY0MGE3NTA3MDJhZjA2ZWZmZjNlYTY4ZTVkNTZlNDJiYzQxY2RiOGI2MDY1Yzk4ZjEyMjFmZTA0YTMyNWE4OThjYjYxZjNkN2VlMDMwMDAwMDAwMzYzYWNhY2ZmZmZmZmZmYjU3ODgxNzRhZWY3OTc4ODcxNmY5NmFmNzc5ZDc5NTkxNDdhMGMyZTBlNWJmYjZjMmRiYTJkZjViNGI5Nzg5NDAzMDAwMDAwMDk2NTUxMDA2NTUzNTE2M2FjNmFmZmZmZmZmZjA0NDVlNmZkMDIwMDAwMDAwMDA5NmFhYzUzNjM2NTUyNmE1MjZhYTY1NDZiMDAwMDAwMDAwMDA4YWNhYjY1NmE2NTUyNTM1MTQxYTBmZDAxMDAwMDAwMDAwMGM4OTdlYTAzMDAwMDAwMDAwODUyNjUwMGFiNTI2YTZhNjMxYjM5ZGJhMyIsICIwMGFiYWI1MTYzYWMiLCAxLCAtMTc3ODA2NDc0NywgImQ3NmQwZmMwYWJmYTcyZDY0NmRmODg4YmNlMDhkYjk1N2U2MjdmNzI5NjI2NDcwMTZlZWFlNWE4NDEyMzU0Y2YiXSwKCVsiYTYzYmM2NzMwNDljNzUyMTFhYTJjMDllY2MzOGUzNjBlYWE1NzE0MzVmZWRkMmFmMTExNmI1YzFmYTNkMDYyOWMyNjllY2NjYmYwMDAwMDAwMDA4YWM2NWFiNTE2MzUyYWM1MmZmZmZmZmZmYmYxYTc2ZmRkYTdmNDUxYTVmMGJhZmYwZjljY2QwZmU5MTM2NDQ0YzA5NGJiOGM1NDRiMWFmMGZhMjc3NGIwNjAxMDAwMDAwMDQ2MzUzNTI1M2ZmZmZmZmZmMTNkNmI3YzNkZGNlZWYyNTVkNjgwZDg3MTgxZTEwMDg2NGVlYjExYTViYjZhMzUyOGNiMGQ3MGQ3ZWUyYmJiYzAyMDAwMDAwMDU2YTAwNTJhYmFiOTUxMjQxODA5NjIzMzEzYjE5OGJiNTIwNjQ1YzE1ZWM5NmJmY2M3NGEyYjBmM2RiN2FkNjFkNDU1Y2MzMmRiMDRhZmM1Y2M3MDIwMDAwMDAwMTYzMDljOWFlMjUwMTRkOTQ3MzAyMDAwMDAwMDAwNGFiYWI2YWFjM2JiMWU4MDMiLCAiIiwgMywgLTIzMjg4MTcxOCwgIjZlNDhmM2RhM2E0YWMwN2ViNDA0M2EyMzJkZjlmODRlMTEwNDg1ZDdjNzY2OWRkMTE0ZjY3OWMyN2QxNWI5N2UiXSwKCVsiNGM1NjVlZmUwNGU3ZDMyYmFjMDNhZTM1OGQ2MzE0MGMxY2ZlOTVkZTE1ZTMwYzViODRmMzFiYjBiNjViYjU0MmQ2MzdmNDllMGYwMTAwMDAwMDA1NTFhYmFiNTM2MzQ4YWUzMmIzMWM3ZDMxMzIwMzBhNTEwYTFiMWFhY2Y3YjdjM2YxOWNlOGRjNDk5NDRlZjkzZTVmYTVmZTJkMzU2YjRhNzNhMDAxMDAwMDAwMDlhYmFjNjM1MTYzYWMwMGFiNTE0YzhiYzU3YjZiODQ0ZTA0NTU1YzBhNGY0ZmI0MjZkZjEzOTQ3NWNkMjM5NmFlNDE4YmM3MDE1ODIwZTg1MmY3MTE1MTliYzIwMjAwMDAwMDA4NmEwMDUxMDAwMGFiYWM1MjQ4OGZmNGFlYzcyY2JjZmNjOTg3NTljNThlMjBhOGQyZDk3MjVhYTRhODBmODM5NjRlNjliYzRlNzkzYTRmZjI1Y2Q3NWRjNzAxMDAwMDAwMDg2YTUyYWM2YWFjNTM1MTUzMmVjNmIxMDgwMjQ2M2UwMjAwMDAwMDAwMDAwNTUzMDA1MjY1NTIzZTA4NjgwMTAwMDAwMDAwMDAyZjM5YTZiMCIsICIiLCAzLCA3MDcxMjc4NCwgImM2MDc2YjZhNDVlNmZjZmJhMTRkM2RmNDdhMzRmNmFhZGJhY2ZiYTEwN2U5NTYyMWQ4ZDdjOWMwZTQwNTE4ZWQiXSwKCVsiMTIzM2Q1ZTcwMzQwM2IzYjhiNGRhZTg0NTEwZGRmYzEyNmI0ODM4ZGNiNDdkM2IyM2RmODE1YzBiM2EwN2I1NWJmMzA5ODExMGUwMTAwMDAwMDAxNjNjNWM1NTUyODA0MWY0ODBmNDBjZjY4YTg3NjJkNmVkM2VmZTJiZDQwMjc5NWQ1MjMzZTVkOTRiZjVkZGVlNzE2NjUxNDQ4OTgwMzAwMDAwMDA5NjU1MjUxNjU2NTUxNTE2NTZhZmZmZmZmZmY2MzgxNjY3ZTc4YmI3NGQwODgwNjI1OTkzYmVjMGVhM2JkNDEzOTZmMmJjY2NjM2NjMDk3YjI0MGU1ZTkyZDZhMDEwMDAwMDAwOTYzNjNhY2FjNmE2MzUzNjM2NWZmZmZmZmZmMDQ2MTBhZDYwMjAwMDAwMDAwMDY1MjUxYWI2NWFiNTJlOTBkNjgwMjAwMDAwMDAwMDQ2MzUxNTE2YWUzMGU5ODAxMDAwMDAwMDAwOGFiYWI1MjUyMDA2MzY1NmE2NzE4NTYwMTAwMDAwMDAwMDRhYzZhYWM1MTRjODRlMzgzIiwgIjZhYWJhYjYzNjMwMCIsIDEsIC0xMTQ5OTY4MTMsICJhZWI4YzVhNjJlOGEwYjU3MmMyOGYyMDI5ZGIzMjg1NGMwYjYxNGRiZWNlZjBlYWE3MjZhYmViYjQyZWViYjhkIl0sCglbIjBjNjk3MDIxMDNiMjVjZWFlZDQzMTIyY2MyNjcyZGU4NGEzYjlhYTQ5ODcyZjJhNWJiNDU4ZTE5YTUyZjhjYzc1OTczYWJiOWYxMDIwMDAwMDAwNTUzNjU2NTZhYWNmZmZmZmZmZjNmZmIxY2YwZjc2ZDllMzM5N2RlMDk0MjAzOGM4NTZiMGViYmVhMzU1ZGM5ZDhmMmIwNjAzNmUxOTA0NGIwNDUwMTAwMDAwMDAwZmZmZmZmZmY0Yjc3OTNmNDE2OTYxN2M1NGI3MzRmMmNkOTA1ZWQ2NWYxY2UzZDM5NmVjZDE1YjZjNDI2YTY3NzE4NmNhMDYyMDIwMDAwMDAwODY1NTI2MzUyNjU1MTAwNmExODFhMjViNzAzMjQwY2NlMDEwMDAwMDAwMDA0NjM1MmFiNTNkZWUyMjkwMzAwMDAwMDAwMDg2NTUyNmE2YTUxNmE1MTAwNWUxMjE2MDIwMDAwMDAwMDA4NTJhYjUyYWJhYmFjNjU1MjAwMDAwMDAwIiwgIjZhNTE2YWFiNjMiLCAxLCAtMjA0MDAxMjc3MSwgImE2ZTZjYjY5ZjQwOWVjMTRlMTBkZDQ3NmYzOTE2N2MyOWU1ODZlOTliZmFjOTNhMzdlZDJjMjMwZmNjMWRiYmUiXSwKCVsiZmQyMjY5MjgwMmRiOGFlNmFiMDk1YWVhZTM4NjczMDVhOTU0Mjc4ZjdjMDc2YzU0MmYwMzQ0YjI1OTE3ODllN2UzM2U0ZDI5ZjQwMjAwMDAwMDAxNTFmZmZmZmZmZmI5NDA5MTI5Y2ZlZDlkMzIyNmYzYjZiYWI3YTJjODNmOTlmNDhkMDM5MTAwZWViNTc5NmYwMDkwM2IwZTVlNWUwMTAwMDAwMDA2NjU2NTUyYWM2M2FiZDIyNmFiYWMwNDAzZTY0OTAwMDAwMDAwMDAwN2FiYWI1MWFjNTEwMGFjODAzNWYxMDAwMDAwMDAwMDA5NTE2NTAwNmE2MzUyNmE1MjUxMGQ0MmRiMDMwMDAwMDAwMDA3NjM1MzY1YWM2YTYzYWIyNGVmNTkwMTAwMDAwMDAwMDQ1M2FiNmEwMDAwMDAwMDAwIiwgIjUzNmE1MjUxNmFhYzZhIiwgMSwgMzA5MzA5MTY4LCAiN2NhMGY3NWU2NTMwZWM5ZjgwZDAzMWZjMzUxM2NhNGVjZDY3ZjIwY2IzOGI0ZGFjYzZhMWQ4MjVjM2NkYmZkYiJdLAoJWyJhNDNmODVmNzAxZmZhNTRhM2NjNTcxNzc1MTBmM2VhMjhlY2I2ZGIwZDQ0MzFmYzc5MTcxY2FkNzA4YTYwNTRmNmU1YjRmODkxNzAwMDAwMDAwMDhhYzZhMDA2YTUzNjU1MTY1MmJlYmVhYTIwMTNlNzc5YzA1MDAwMDAwMDAwNjY1YWM1MzYzNjM1MTAwMDAwMDAwIiwgImFjIiwgMCwgMjAyODk3ODY5MiwgIjU4Mjk0ZjBkN2YyZTY4ZmUxZmQzMGMwMTc2NGZlMTYxOWJjYzc5NjFkNjg5Njg5NDRhMGUyNjNhZjY1NTA0MzciXSwKCVsiYzJiMGI5OTAwMWFjZmVjZjdkYTczNmRlMGZmYWVmODEzNGE5Njc2ODExNjAyYTYyOTliYTVhMjU2M2EyM2JiMDllOGNiZWRmOTMwMDAwMDAwMDAyNjMwMGZmZmZmZmZmMDQyOTk3YzUwMzAwMDAwMDAwMDQ1MjUyNTM2YTI3MjQzNzAzMDAwMDAwMDAwNzY1NTM1M2FiNjM2M2FjNjYzNzUyMDMwMDAwMDAwMDAyYWI2YTZkNWM5MDAwMDAwMDAwMDAwNjZhNmE1MjY1YWJhYjAwMDAwMDAwIiwgIjUyYWM1MjUxNjM1MTUyNTEiLCAwLCAtODk0MTgxNzIzLCAiOGIzMDAwMzJhMTkxNWE0YWMwNWNlYTJmN2Q0NGMyNmYyYTA4ZDEwOWE3MTYwMjYzNmYxNTg2NjU2M2VhYWZkYyJdLAoJWyI4MmY5ZjEwMzA0YzE3YTlkOTU0Y2YzMzgwZGI4MTc4MTRhOGM3MzhkMmM4MTFmMDQxMjI4NGIyYzc5MWVjNzU1MTVmMzhjNGY4YzAyMDAwMDAwMDI2NWFiNTcyOWNhN2RiMWI3OWFiZWU2NmM4YTc1NzIyMWYyOTI4MGQwNjgxMzU1Y2I1MjIxNDk1MjVmMzZkYTc2MDU0OGRiZDcwODBhMDEwMDAwMDAwMTUxMGI0NzdiZDljZTlhZDViYjgxYzAzMDYyNzNhM2E3ZDA1MWUwNTNmMDRlY2YzYTFkYmVkYTU0M2UyMDYwMWE1NzU1YzBjZmFlMDMwMDAwMDAwNDUxYWM2NTZhZmZmZmZmZmY3MTE0MWEwNDEzNGY2YzI5MmMyZTBkNDE1ZTY3MDVkZmQ4ZGNlZTg5MmIwZDA4MDc4MjhkNWFlYjdkMTFmNWVmMDMwMDAwMDAwMTUyMGI2YzZkYzgwMmE2ZjNkZDAwMDAwMDAwMDAwNTZhYWI1MTUxNjNiZmI2ODAwMzAwMDAwMDAwMDE1MzAwMDAwMDAwIiwgIiIsIDMsIC02MzU3Nzk0NDAsICJkNTVlZDFlNmM1MzUxMGYyNjA4NzE2YzEyMTMyYTExZmI1ZTY2MmVjNjc0MjFhNTEzYzA3NDUzN2VlY2NjMzRiIl0sCglbIjhlZGNmNWExMDE0YjYwNGU1M2YwZDEyZmUxNDNjZjQyODRmODZkYzc5YTYzNGE5ZjE3ZDdlOWY4NzI1ZjdiZWI5NWU4ZmZjZDI0MDMwMDAwMDAwNDZhYWJhYzUyZmZmZmZmZmYwMWM0MDJiNTA0MDAwMDAwMDAwNWFiNmE2MzUyNTEwMDAwMDAwMCIsICI2MzUxNTI1MjUxYWNhYmFiNmEiLCAwLCAxNTIwMTQ3ODI2LCAiMjc2NWJiZGNkM2ViYjhiMWEzMTZjMDQ2NTZiMjhkNjM3ZjgwYmZmYmU5YjA0MDY2MTQ4MWQzZGM4M2VlYTZkNiJdLAoJWyIyMDc0YmFkNTAxMTg0N2YxNGRmNWVhN2I0YWZkODBjZDU2YjAyYjk5NjM0ODkzYzZlM2Q1YWFhZDQxY2E3YzhlZThlNTA5OGRmMDAzMDAwMDAwMDI2YTZhZmZmZmZmZmYwMThhZDU5NzAwMDAwMDAwMDAwOTAwYWM2NTZhNTI2NTUxNjM1MzAwMDAwMDAwIiwgIjY1NjM1MjY1IiwgMCwgLTE4MDQ2NzExODMsICI2NjNjOTk5YTUyMjg4Yzk5OTliZmYzNmM5ZGEyZjhiNzhkNWM2MWI4MzQ3NTM4Zjc2YzE2NGNjYmE5ODY4ZDBhIl0sCglbIjcxMDBiMTEzMDJlNTU0ZDRlZjI0OWVlNDE2ZTc1MTBhNDg1ZTQzYjJiYTRiODgxMmQ4ZmU1NTI5ZmUzM2VhNzVmMzZkMzkyYzQ0MDMwMDAwMDAwMjAwMDBmZmZmZmZmZjNkMDFhMzdlMDc1ZTlhNzcxNWE2NTdhZTFiZGYxZTQ0YjQ2ZTIzNmFkMTZmZDJmNGM3NGViOWJmMzcwMzY4ODEwMDAwMDAwMDA3NjM2NTUzYWM1MzYzNjVmZmZmZmZmZjAxZGI2OTZhMDQwMDAwMDAwMDA2NTIwMGFjNjU2YWFjMDAwMDAwMDAiLCAiNjMwMDUxNTEiLCAwLCAtMTIxMDQ5OTUwNywgImI5YzNhZWU4NTE1YTRhM2I0MzlkZTFmZmM5YzE1NjgyNGJkYTEyY2I3NWJmZTViYzg2MzE2NGU4ZmQzMWJkN2EiXSwKCVsiMDJjMTAxNzgwMjA5MWQxY2IwOGZlYzUxMmRiN2IwMTJmZTQyMjBkNTdhNWYxNWY5ZTc2NzYzNThiMDEyNzg2ZTEyMDliY2ZmOTUwMTAwMDAwMDA0YWNhYjYzNTJmZmZmZmZmZjc5OWJjMjgyNzI0YTk3MGE2ZmVhMTgyODk4NGQwYWViMGYxNmI2Nzc3NmZhMjEzY2JkYzQ4MzhhMmYxOTYxYTMwMTAwMDAwMDA5NTE1MTZhNTM2NTUyYWI2YWFiZmZmZmZmZmYwMTZjN2I0YjAzMDAwMDAwMDAwODY1YWJhYzUyNTNhYzUzNTJiNzAxOTVhZCIsICI2NTY1NTIwMDUxNmEiLCAwLCAtMjQxNjI2OTU0LCAiYmU1NjdjYjQ3MTcwYjM0ZmY4MWM2NmMxMTQyY2I5ZDI3ZjliNjg5OGEzODRkNmRmYzRmY2UxNmI3NWI2Y2IxNCJdLAoJWyJjYjMxNzg1MjAxMzZjZDI5NDU2OGI4M2JiMjUyMGY3OGZlY2M1MDc4OThmNGEyZGIyNjc0NTYwZDcyZmQ2OWI5ODU4Zjc1YjNiNTAyMDAwMDAwMDY2YWFjMDA1MTUxMDBmZmZmZmZmZjAzYWIwMDVhMDEwMDAwMDAwMDA1NjM1MjYzNjMwMDZlMzgzNjAzMDAwMDAwMDAwMWFiZmJkYTMyMDAwMDAwMDAwMDA2NjVhYjAwNjUwMDY1MDAwMDAwMDAiLCAiYWI1MTZhMDA2MzAwNmE1MzAwIiwgMCwgMTE4MjEwOTI5OSwgIjIxNDllNzljM2Y0NTEzZGE0ZTQzNzg2MDhlNDk3ZGNmZGZjN2YyN2MyMWE4MjY4NjhmNzI4YWJkMmI4YTYzN2EiXSwKCVsiMThhNGIwYzAwNDcwMmNmMGUzOTY4NmFjOThhYWI3OGFkNzg4MzA4ZjFkNDg0YjFkZGZlNzBkYzE5OTcxNDhiYTBlMjg1MTVjMzEwMzAwMDAwMDAwZmZmZmZmZmYwNTI3NWE1MmEyM2M1OWRhOTExMjkwOTMzNjRlMjc1ZGE1NjE2YzQwNzBkOGEwNWI5NmRmNWEyMDgwZWYyNTk1MDAwMDAwMDAwOTZhYWM1MTY1NmE2YWFjNTNhYjY2ZTY0OTY2YjNiMzZhMDdkZDJiYjQwMjQyZGQ0YTM3NDNkMzAyNmU3ZTFlMGQ5ZTllMThmMTFkMDY4NDY0Yjk4OTY2MTMyMTAzMDAwMDAwMDI2NWFjMzgzMzM5YzRmYWU2MzM3OWNhZmI2M2IwYmFiMmVjYTcwZTFmNWZjN2Q4NTdlYjVjODhjY2Q2YzA0NjUwOTM5MjRiYmE4YjJhMDAwMDAwMDAwMzAwNjM2YWI1ZTA1NDU0MDJiYzJjNGMwMTAwMDAwMDAwMDBjZDQxYzAwMjAwMDAwMDAwMDAwMDAwMDAwMCIsICJhYmFjNjM1MjUzNjU2YTAwIiwgMywgMjA1MjM3MjIzMCwgIjMyZGI4NzdiNmIxY2E1NTZjOWU4NTk0NDIzMjk0MDZmMGY4MjQ2NzA2NTIyMzY5ODM5OTc5YTlmN2EyMzVhMzIiXSwKCVsiMWQ5YzVkZjIwMTM5OTA0YzU4MjI4NWUxZWE2M2RlYzkzNDI1MWMwZjljZjVjNDdlODZhYmZiMmIzOTRlYmM1NzQxN2E4MWY2N2MwMTAwMDAwMDAzNTM1MTUyMjJiYTcyMjUwNDgwMGQzNDAyMDAwMDAwMDAwMzUzNjU2YTNjMGI0YTAyMDAwMDAwMDAwMDBmYjhkMjA1MDAwMDAwMDAwNzYzMDBhYjAwNTIwMDUxNjQ2MmYzMDQwMDAwMDAwMDAxNTIwMDAwMDAwMCIsICJhYjY1IiwgMCwgLTIxMDg1NDExMiwgImVkZjczZTIzOTY2OTRlNThmNmI2MTlmNjg1OTViMGMxY2RjYjU2YTliMzE0Nzg0NWI2ZDZhZmRiNWE4MGI3MzYiXSwKCVsiNDUwNGNiMTkwNGM3YTRhY2YzNzVkZGFlNDMxYTc0ZGU3MmQ1NDM2ZWZjNzMzMTJjZjhlOTkyMWY0MzEyNjdlYTY4NTJmOTcxNGEwMTAwMDAwMDA2NmE2NTZhNjU2NTUzYTJmYmQ1ODdjMDk4YjNhMWM1YmQxZDY0ODBmNzMwYTBkNmQ5YjUzNzk2NmUyMGVmYzBlMzUyZDk3MTU3NmQwZjg3ZGYwZDZkMDEwMDAwMDAwMTYzMjFhZWVjM2M0ZGNjODE5ZjEyOTBlZGI0NjNhNzM3MTE4ZjM5YWI1NzY1ODAwNTQ3NTIyNzA4YzQyNTMwNmViZmNhM2YzOTY2MDMwMDAwMDAwNTUzMDBhYzY1NmExZDA5MjgxZDA1YmZhYzU3YjVlYjE3ZWIzZmE4MWZmY2VkZmJjZDNhOTE3ZjFiZTA5ODVjOTQ0ZDQ3M2QyYzM0ZDI0NWViMzUwMzAwMDAwMDA3NjU2YTUxNTI1MTUyYWMyNjMwNzhkOTAzMmY0NzBmMDUwMDAwMDAwMDA2NmFhYzAwMDAwMDUyZTEyZGE2MDIwMDAwMDAwMDAwMzQ4ODQxMDIwMDAwMDAwMDA3NjM2NTAwNjMwMGFiNTM5OTgxZTQzMiIsICI1MjUzNmE1MjUyNmEiLCAxLCAtMzE5MDkxMTksICJmMGEyZGVlZTdmZDhhM2E5ZmFkNjkyN2U3NjNkZWQxMWM5NDBlZTQ3ZTllNmQ0MTBmOTRmZGE1MDAxZjgyZTBjIl0sCglbIjE0YmM3YzNlMDMzMjJlYzBmMTMxMWY0MzI3ZTkzMDU5Yzk5NjI3NTMwMjU1NDQ3MzEwNGYzZjdiNDZjYTE3OWJmYWM5ZWY3NTM1MDMwMDAwMDAwMTZhZmZmZmZmZmY5ZDQwNWVhZWZmYTFjYTU0ZDlhMDU0NDFhMjk2ZTVjYzNhM2UzMmJiODMwN2FmYWYxNjdmN2I1NzE5MGIwN2UwMDMwMDAwMDAwOGFiYWI1MWFiNTI2M2FiYWI0NTUzM2FhMjQyYzYxYmNhOTBkZDE1ZDQ2MDc5YTBhYjA4NDFkODVkZjY3YjI5YmE4N2YyMzkzY2Q3NjRhNjk5N2MzNzJiNTUwMzAwMDAwMDA0NTIwMDUyNjNmZmZmZmZmZjAyNTBmNDBlMDIwMDAwMDAwMDA2NTE1MTZhMDA2MzYzMGU5NWFiMDAwMDAwMDAwMDA0NmE1MTUxYWMwMDAwMDAwMCIsICI2YTY1MDA1MTUxIiwgMCwgLTE0NjA5NDcwOTUsICJhYTQxOGQwOTY5MjkzOTRjOTE0N2JlODgxOGQ4YzlkYWZlNmQxMDU5NDVhYjljZDdlYzY4MmRmNTM3YjVkZDc5Il0sCglbIjJiM2JkMGRkMDRhMTgzMmY4OTNiZjQ5YTc3NmNkNTY3ZWM0YjQzOTQ1OTM0ZjQ3ODZiNjE1ZDZjYjg1MGRmYzAzNDliMzMzMDFhMDAwMDAwMDAwNTY1YWMwMDAwNTFjZjgwYzY3MGY2ZGRhZmFiNjM0MTFhZGI0ZDkxYTY5YzExZDlhYzU4ODg5OGNiZmI0Y2IxNjA2MTgyMWNjMTA0MzI1Yzg5NTEwMzAwMDAwMDAyNTE2M2ZmZmZmZmZmYTllMmQ3NTA2ZDJkN2Q1M2I4ODJiZDM3N2JiY2M5NDFmN2EwZjIzZmQxNWQyZWRiZWYzY2Q5ZGY4YTRjMzlkMTAyMDAwMDAwMDlhYzYzMDA2YTUyNTI2YTUyNjVmZmZmZmZmZjQ0YzA5OWNkZjEwYjEwY2U4N2Q0YjM4NjU4ZDAwMmZkNmVhMTdhZTRhOTcwMDUzYzA1NDAxZDg2ZDZlNzVmOTkwMDAwMDAwMDA5NjNhYjUzNTI2YTUyNTJhYjYzZmZmZmZmZmYwMzVhZjY5YzAxMDAwMDAwMDAwMTAwYmE5YjhiMDQwMDAwMDAwMDAwNGNlYWQxMDUwMDAwMDAwMDAyNmE1MjBiNzdkNjY3IiwgImFiNTJhYmFjNTI2NTUzIiwgMywgLTE5NTUwNzgxNjUsICJlYjljZWVjYzNiNDAxMjI0Y2I3OWE0NGQyM2FhOGY0MjhlMjlmMTQwNWRhZjY5YjRlMDE5MTBiODQ4ZWYxNTIzIl0sCglbIjM1ZGYxMWYwMDRhNDhiYTQzOWFiYTg3OGZlOWRmMjBjYzkzNWI0YTc2MWMyNjJiMWI3MDdlNmYyYjMzZTJiYjc1NjVjZDY4YjEzMDAwMDAwMDAwMGZmZmZmZmZmYjJhMmY5OWFiZjY0MTYzYmI1N2NhOTAwNTAwYjg2M2Y0MGMwMjYzMmRmZDllYTI1OTA4NTRjNWZiNDgxMWRhOTAyMDAwMDAwMDZhYzAwNjM2MzYzNmFmZmZmZmZmZmFmOWQ4OWIyYThkMjY3MGNhMzdjOGY3YzE0MDYwMGI4MTI1OWYyZTAzN2NiNDU5MDU3OGVjNmUzN2FmOGJmMjAwMDAwMDAwMDA1YWJhYzZhNjU1MjcwYTQ3NTFlYjU1MWYwNThhOTMzMDFmZmVkYTJlMjUyYjY2MTRhMWZkZDBlMjgzZTFkOWZlNTNjOTZjNWJiYWFmYWFjNTdiODAzMDAwMDAwMDE1M2ZmZmZmZmZmMDIwZDlmM2IwMjAwMDAwMDAwMDEwMGVkNzAwODAzMDAwMDAwMDAwNGFiYWMwMDAwMDAwMDAwMDAiLCAiYWJhYyIsIDMsIDU5Mzc5MzA3MSwgIjg4ZmRlZTFjMmQ0YWVlYWQ3MWQ2MjM5NmUyOGRjNGQwMGU1YTIzNDk4ZWVhNjY4NDRiOWY1ZDI2ZDFmMjEwNDIiXSwKCVsiYTA4ZmY0NjYwNDlmYjc2MTllMjU1MDJlYzIyZmVkZmIyMjllYWExZmUyNzVhYTBiNWEyMzE1NGIzMTg0NDFiZjU0Nzk4OWQwNTEwMDAwMDAwMDA1YWI1MzYzNjM2YWZmZmZmZmZmMmIwZTMzNWNiNTM4Mzg4Njc1MWNkYmQ5OTNkYzA3MjA4MTc3NDVhNmIxYzliOGFiM2QxNTU0N2ZjOWFhZmQwMzAwMDAwMDAwMDk2NTY1NmE1MzZhNTI2NTZhNTMyYjUzZDEwNTg0YzI5MGQzYWMxYWI3NGFiMGExOTIwMWE0YTAzOWNiNTlkYzU4NzE5ODIxYzAyNGY2YmYyZWIyNjMyMmIzM2YwMTAwMDAwMDA5NjVhYzZhYWMwMDUzYWI2MzUzZmZmZmZmZmYwNDhkZWNiYTZlYmJkMmRiODFlNDE2ZTM5ZGRlMWY4MjFiYTY5MzI5NzI1ZTcwMmJjZGVhMjBjNWNjMGVjYzY0MDIwMDAwMDAwODYzNjNhYjUzNTFhYzY1NTE0NjZlMzc3YjA0NjhjMGZhMDAwMDAwMDAwMDA2NTFhYjUzYWM2YTUxMzQ2MWM2MDEwMDAwMDAwMDA4NjM2YTYzNjM2NTUzNTEwMGVlYjNkYzAxMDAwMDAwMDAwNjUyNmE1MmFjNTE2YTQzZjM2MjAxMDAwMDAwMDAwNTAwMDA2MzUzNjUwMDAwMDAwMCIsICIwMDYzNTE2YSIsIDEsIC0xMTU4OTExMzQ4LCAiZjZhMWVjYjUwYmQ3YzI1OTRlYmVjZWE1YTFhYTIzYzkwNTA4NzU1M2U0MDQ4NmRhZGU3OTNjMmYxMjdmZGZhZSJdLAoJWyI1YWMyZjE3ZDAzYmM5MDJlMmJhYzI0Njk5MDdlYzdkMDFhNjJiNTcyOTM0MGJjNThjMzQzYjcxNDViNjZlNmI5N2Q0MzRiMzBmYTAwMDAwMDAwMDE2M2ZmZmZmZmZmNDQwMjhhYTY3NDE5MmNhYTBkMGI0ZWJmZWI5NjljMjg0Y2IxNmI4MGMzMTJkMDk2ZWZkODBjNmM2YjA5NGNjYTAwMDAwMDAwMDc2M2FjYWJhYzUxNmE1MmZmZmZmZmZmMTBjODA5MTA2ZTA0YjEwZjliNDMwODU4NTU1MjEyNzBmYjQ4YWI1NzkyNjZlNzQ3NDY1N2M2YzYyNTA2MmQyZDAzMDAwMDAwMDM1MTYzNjU5NWEwYTk3MDA0YTFiNjk2MDMwMDAwMDAwMDA0NjVhYjAwNTM1MmFkNjgwMTAwMDAwMDAwMDg2MzZhNTI2M2FjYWM1MTAwZGE3MTA1MDEwMDAwMDAwMDAyYWNhYjkwMzI1MjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgIjZhNmFhYjUxNmE2MzUyNjM1MyIsIDIsIDE1MTg0MDA5NTYsICJmN2VmYjc0YjFkY2M0OWQzMTZiNDljNjMyMzAxYmM0NmY5OGQzMzNjNDI3ZTU1MzM4YmU2MGM3ZWYwZDk1M2JlIl0sCglbImFlYjJlMTE5MDJkYzM3NzBjMjE4Yjk3ZjBiMTk2MGQ2ZWU3MDQ1OWVjYjZhOTVlZmYzZjA1Mjk1ZGMxZWY0YTA4ODRmMTBiYTQ2MDMwMDAwMDAwNTUxNjM1MjUyNjM5M2U5YjFiM2U2YWU4MzQxMDJkNjk5ZGRkMzg0NWExZTE1OWFhN2NmNzYzNWVkYjVjMDIwMDNmNzgzMGZlZTM3ODhiNzk1ZjIwMTAwMDAwMDA5YWIwMDZhNTI2NTUzYWMwMDZhZDg4MDljNTcwNDY5MjkwZTA0MDAwMDAwMDAwNTAwMDBhYmFiMDBiMTBmZDUwNDAwMDAwMDAwMDhhYjY1NTI2M2FiYWM1M2FiNjMwYjE4MDMwMDAwMDAwMDAwOWQ5OTkzMDQwMDAwMDAwMDAyNTE2MzAwMDAwMDAwIiwgIjUzNTFhYmFiYWM2YTY1IiwgMCwgMTA4NDg1Mjg3MCwgImYyMjg2MDAxYWYwYjAxNzBjYmRhZDkyNjkzZDBhNWViYWE4MjYyYTRhOWQ2NmUwMDJmNmQ3OWE4Yzk0MDI2ZDEiXSwKCVsiOTg2MGNhOWEwMjk0ZmY0ODEyNTM0ZGVmOGMzYTNlM2RiMzViODE3ZTFhMmRkYjdmMGJmNjczZjcwZWFiNzFiYjc5ZTkwYTJmMzEwMDAwMDAwMDA4NmE2MzY1NTFhY2FjNTE2NWZmZmZmZmZmZWQ0ZDZkM2NkOWZmOWIyZDQ5MGUwYzA4OTczOTEyMTE2MWExNDQ1ODQ0YzNlMjA0Mjk2ODE2YWIwNmUwYTgzNzAyMDAwMDAwMDM1MTAwYWM4OGQwZGI1MjAxYzNiNTlhMDUwMDAwMDAwMDA1YWM2YTAwNTFhYjAwMDAwMDAwIiwgIjUzNTI2M2FiMDA2YTUyNmFhYiIsIDEsIC05NjIwODgxMTYsICIzMGRmMjQ3M2UxNDAzZTJiOGU2MzdlNTc2ODI1Zjc4NTUyOGQ5OThhZjEyN2Q1MDE1NTZlNWY3ZjVlZDg5YTJhIl0sCglbIjRkZGFhNjgwMDI2ZWM0ZDgwNjA2NDAzMDRiODY4MjNmMWFjNzYwYzI2MGNlZjgxZDg1YmQ4NDc5NTI4NjNkNjI5YTMwMDJiNTRiMDIwMDAwMDAwODUyNjM2NTYzNmE2NTZhYWI2NTQ1Nzg2MWZjNmMyNGJkYzc2MGM4YjJlOTA2YjY2NTZlZGFmOWVkMjJiNWY1MGUxZmIyOWVjMDc2Y2VhZGQ5ZThlYmNiNmIwMDAwMDAwMDAxNTJmZmZmZmZmZjAzM2ZmMDRmMDAwMDAwMDAwMDA1NTE1MjZhMDA2NTdhMWQ5MDAzMDAwMDAwMDAwMDIxNTNhZjA0MDAwMDAwMDAwMzAwNmE2MzAwMDAwMDAwIiwgImFiNTI2YTUzYWNhYmFiIiwgMCwgMTA1NTMxNzYzMywgIjdmMjFiNjIyNjdlZDUyNDYyZTM3MWE5MTdlYjM1NDI1NjlhNDA0OWI5ZGZjYTJkZTNjNzU4NzJiMzk1MTBiMjYiXSwKCVsiMDFlNzZkY2QwMmFkNTRjYmM4YzcxZDY4ZWFmM2ZhN2M4ODNiNjVkNzQyMTdiMzBiYTgxZjFmNTE0NGVmODBiNzA2YzBkYzgyY2EwMDAwMDAwMDAzNTJhYjZhMDc4ZWMxOGJjZDA1MTQ4MjVmZWNlZDJlOGI4ZWExY2NiMzQ0MjlmYWU0MWM3MGNjMGI3M2EyNzk5ZTg1NjAzNjEzYzY4NzAwMDIwMDAwMDAwODYzNjNhYjYzNjU1MzZhNTNmZmZmZmZmZjA0M2FjZWE5MDAwMDAwMDAwMDAxNmFkMjBlMTgwMzAwMDAwMDAwMDEwMGZhMDA4MzAyMDAwMDAwMDAwNTYzNTI1MTUzNTFlODY0ZWUwMDAwMDAwMDAwMDg2NTUzNTI1M2FiNmE2NTUxZDBjNDY2NzIiLCAiNmE2MzY1YWJhY2FiIiwgMCwgLTE0MjA1NTkwMDMsICI4YWYwYjRjYmRiYzAxMWJlODQ4ZWRmNGRiZDJjZGU5NmYwNTc4ZDY2MmNmZWJjNDIyNTI0OTUzODcxMTQyMjRhIl0sCglbImZhMDBiMjY0MDI2NzBiOTc5MDYyMDM0MzRhYTk2N2NlMTU1OWQ5YmQwOTdkNTZkYmU3NjA0NjllNjAzMmU3YWI2MWFjY2I1NDE2MDEwMDAwMDAwNjYzNTE2MzYzMDA1MmZmZmZmZmZmZmUwZDNmNGYwZjgwOGZkOWNmYjE2MmU5ZjBjMDA0NjAxYWNmNzI1Y2Q3ZWE1NjgzYmJkYzlhOWE0MzNlZjE1YTAyMDAwMDAwMDVhYjUyNTM2NTYzZDA5YzdiZWYwNDkwNDBmMzA1MDAwMDAwMDAwMTUzYTdjN2I5MDIwMDAwMDAwMDA0YWM2M2FiNTI4NDdhMjUwMzAwMDAwMDAwMDU1M2FiMDA2NTUzOTBlZDgwMDEwMDAwMDAwMDA1MDA2NTUzYWI1Mjg2MDY3MWQ0IiwgIjUzNjU2NWFiNTIiLCAwLCA3OTkwMjI0MTIsICI0MGVkOGU3YmJiZDg5M2UxNWYzY2NlMjEwYWUwMmM5NzY2OTgxOGRlNTk0NmNhMzdlZWZjNzU0MTExNmUyYzc4Il0sCglbImNiNWMwNmRjMDFiMDIyZWU2MTA1YmE0MTBmMGViMTJiOWNlNWI1YWExODViMjg1MzI0OTJkODM5YTEwY2VmMzNkMDYxMzRiOTFiMDEwMDAwMDAwMTUzZmZmZmZmZmYwMmNlYzA1MzA0MDAwMDAwMDAwMDVlMWU0NTA0MDAwMDAwMDAwODY1NjU2NTUxYWNhY2FjNmEwMDAwMDAwMCIsICJhYjUzIiwgMCwgLTE1MTQyNTEzMjksICIxMzZiZWI5NTQ1OWZlNmIxMjZjZDZjZWZkNTRlYjVkOTcxNTI0YjBlODgzZTQxYTI5MmE3OGY3ODAxNWNiOGQ1Il0sCglbImYxMGEwMzU2MDMxY2Q1NjlkNjUyZGJjYThlN2E0ZDM2YzhkYTMzY2RmZjQyOGQwMDMzMzg2MDJiNzc2NGZlMmM5NmM1MDUxNzViMDEwMDAwMDAwNDY1YWM1MTZhZmZmZmZmZmZiYjU0NTYzYzcxMTM2ZmE5NDRlZTIwNDUyZDc4ZGM4NzA3M2FjMjM2NWJhMDdlNjM4ZGNlMjlhNWQxNzlkYTYwMDAwMDAwMDAwMzYzNTE1MmZmZmZmZmZmOWE0MTFkOGUyZDQyMWIxZTYwODU1NDBlZTI4MDk5MDFlNTkwOTQwYmJiNDE1MzJmYTM4YmQ3YTE2YjY4Y2MzNTAxMDAwMDAwMDc1MzUyNTE2MzUzNjU2MzYxOTVkZjE2MDNiNjFjNDUwMTAwMDAwMDAwMDJhYjY1YmY2YTMxMDQwMDAwMDAwMDAyNjM1MmZjYmJhMTAyMDAwMDAwMDAwMTZhYTMwYjdmZjAiLCAiNTM1MSIsIDAsIDE1NTI0OTU5MjksICI5ZWI4YWRmMmNhZWNiNGJmOWFjNTlkN2Y0NmJkMjBlODMyNTg0NzJkYjJmNTY5ZWU5MWFiYTRjZjVlZTc4ZTI5Il0sCglbImMzMzI1YzliMDEyZjY1OTQ2NjYyNmNhOGYzYzYxZGZkMzZmMzQ2NzBhYmMwNTQ0NzZiNzUxNmExODM5ZWM0M2NkMDg3MGFhMGMwMDAwMDAwMDAwNzUzNTI1MjY1MDA1MzUxZTdlM2YwNGIwMTEyNjUwNTAwMDAwMDAwMDAwMzYzYWM2MzAwMDAwMDAwIiwgImFjYWMiLCAwLCAtNjg5NjE0MzMsICI1Y2E3MGU3MjdkOTFiMWE0MmI3ODQ4OGFmMmVkNTUxNjQyYzMyZDNkZTQ3MTJhNTE2NzlmNjBmMTQ1NmE4NjQ3Il0sCglbIjIzMzNlNTRjMDQ0MzcwYThhZjE2Yjk3NTBhYzk0OWIxNTE1MjJlYTYwMjliYWNjOWEzNDI2MTU5OTU0OTU4MWM3YjRlNWVjZTQ3MDAwMDAwMDAwNzUxMDA1MjAwNjU2M2FiZmZmZmZmZmY4MDYzMGZjMDE1NWM3NTBjZTIwZDBjYTRhM2QwYzhlOGQ4M2IwMTRhNWI0MGYwYjBiZTBkZDRjNjNhYzI4MTI2MDIwMDAwMDAwNDY1MDAwMDAwZmZmZmZmZmYxYjVmMTQzM2QzOGNkYzQ5NDA5M2JiMWQ2MmQ4NGIxMGFiYmRhZTU3ZTNkMDRlODJlNjAwODU3YWIzYjFkYzk5MDMwMDAwMDAwMzUxNTEwMGI3NjU2NGJlMTNlNDg5MGE5MDhlYTc1MDhhZmRhZDkyZWMxYjIwMGE5YTY3OTM5ZmFkY2U2ZWI3YTI5ZWI0NTUwYTBhMjhjYjAzMDAwMDAwMDFhY2ZmZmZmZmZmMDI5MjZjOTMwMzAwMDAwMDAwMDE2MzczODAwMjAxMDAwMDAwMDAwMTUzZDI3ZWU3NDAiLCAiYWI2MzY1YWI1MTZhNTMiLCAzLCA1OTg2NTM3OTcsICIyYmUyN2E2ODZlYjc5NDBkZDMyYzQ0ZmYzYTk3YzFiMjhmZWI3YWI5YzVjMGIxNTkzYjJkNzYyMzYxY2ZjMmRiIl0sCglbImI1MDBjYTQ4MDExZWM1N2MyZTUyNTJlNWRhNjQzMjA4OTEzMDYwMzI0NWZmYmFmYjBlNGM1ZmZlNjA5MGZlYjYyOTIwN2VlYjBlMDEwMDAwMDAwNjUyYWI2YTYzNmFhYjgzMDJjOWQyMDQyYjQ0ZjQwNTAwMDAwMDAwMDE1Mjc4YzA1YTA1MDAwMDAwMDAwNGFjNTI1MTUyNGJlMDgwMDIwMDAwMDAwMDA3NjM2YWFjNjNhYzUyNTJjOTNhOWEwNDAwMDAwMDAwMDk2NWFiNjU1MzYzNmFhYjUzNTJkOTFmOWRkYiIsICI1MjAwNTEwMCIsIDAsIC0yMDI0Mzk0Njc3LCAiNDljOGE2OTQwYTQ2MWNjNzIyNTYzN2YxZTUxMmNkZDE3NGM5OWY5NmVjMDU5MzVhNTk2MzdlZGVkYzc3MTI0YyJdLAoJWyJmNTJmZjY0YjAyZWU5MWFkYjAxZjM5MzZjYzQyZTQxZTE2NzI3Nzg5NjJiNjhjZjAxMzI5M2Q2NDk1MzZiNTE5YmMzMjcxZGQyYzAwMDAwMDAwMDIwMDY1YWZlZTExMzEzNzg0ODQ5YTdjMTVmNDRhNjFjZDVmZDUxY2NmY2RhZTcwN2U1ODk2ZDEzMWIwODJkYzkzMjJhMTllMTI4NTg1MDEwMDAwMDAwMzZhYWM2NTRlOGNhODgyMDIyZGViN2MwMjAwMDAwMDAwMDYwMDZhNTE1MzUyYWJkM2RlZmMwMDAwMDAwMDAwMDE2MzAwMDAwMDAwIiwgIjYzNTIwMDYzIiwgMCwgMTEzMDk4OTQ5NiwgIjdmMjA4ZGY5YTU1MDdlOThjNjJjZWJjNWMxZTI0NDVlYjYzMmU5NTUyNzU5NDkyOWI5NTc3YjUzMzYzZTk2ZjYiXSwKCVsiYWI3ZDZmMzYwMjdhN2FkYzM2YTVjZjc1MjhmZTRmYjVkOTRiMmM5NjgwM2E0YjM4YTgzYTY3NWQ3ODA2ZGRhNjJiMzgwZGY4NmEwMDAwMDAwMDAzMDAwMDAwZmZmZmZmZmY1YmMwMDEzMWUyOWUyMjA1N2MwNGJlODU0Nzk0YjQ4NzdkZGE0MmU0MTZhN2EyNDcwNmI4MDJmZjlkYTUyMWIyMDAwMDAwMDAwN2FjNmEwMDY1YWM1MmFjOTU3Y2Y0NTUwMWI5ZjA2NTAxMDAwMDAwMDAwNTAwYWM2MzYzYWIyNWYxMTEwYiIsICIwMDUyNjUwMDUzNmE2MzUyNTMiLCAwLCA5MTEzMTY2MzcsICI1ZmEwOWQ0M2M4YWVmNmY2ZmEwMWMzODNhNjlhNWE2MWE2MDljZDA2ZTM3ZGNlMzVhMzlkYzllYWUzZGRmZTZjIl0sCglbImY5NDA4ODhmMDIzZGNlNjM2MDI2M2M4NTAzNzJlYjE0NWI4NjQyMjhmZGJiYjRjMTE4NjE3NGZhODNhYWI4OTBmZjM4ZjhjOWE5MDMwMDAwMDAwMGZmZmZmZmZmMDFlODBjY2RiMDgxZTdiYmFlMWM3NzY1MzFhZGNiZmI3N2YyZTVhN2QwZTVkMGQwZTJlNmM4NzU4NDcwZTg1ZjAwMDAwMDAwMDIwMDUzZmZmZmZmZmYwM2I0OTA4ODA1MDAwMDAwMDAwNDY1NmE1MmFiNDI4YmQ2MDQwMDAwMDAwMDA5NTE2MzAwNjVhYjYzYWM2MzZhMGNiYWNmMDQwMDAwMDAwMDA3MDA2M2FjNTI2NWFjNTNkNmUxNjYwNCIsICJhYzYzIiwgMCwgMzk5MDAyMTUsICI3MTNkZGVlZWZjZmUwNDkyOWU3YjY1OTNjNzkyYTRlZmJhZTg4ZDJiNTI4MGQxZjA4MzVkMjIxNGVkZGNiYWQ2Il0sCglbIjUzMGVjZDBiMDFlYzMwMmQ5N2VmNmYxYjVhNjQyMGI5YTIzOTcxNDAxM2UyMGQzOWFhMzc4OWQxOTFlZjYyM2ZjMjE1YWE4Yjk0MDIwMDAwMDAwNWFjNTM1MWFiNmEzODIzYWI4MjAyNTcyZWFhMDQwMDAwMDAwMDA3NTJhYjZhNTE1MjY1NjNmZDhhMjcwMTAwMDAwMDAwMDM2YTAwNjU4MWE3OThmMCIsICI1MjUxNTM2NTZhMDA2MyIsIDAsIDE3ODQ1NjI2ODQsICJmZTQyZjczYTg3NDI2NzZlNjQwNjk4MjIyYjFiZDZiOWMzMzhmZjFjY2Q3NjZkM2Q4OGQ3ZDNjNmM2YWM5ODdlIl0sCglbIjVkNzgxZDkzMDNhY2ZjY2U5NjRmNTA4NjVkZGZkZGFiNTI3ZWE5NzFhZWU5MTIzNGM4OGUxODQ5Nzk5ODVjMDBiNGRlMTUyMDRiMDEwMDAwMDAwM2FiNjM1MmEwMDljOGFiMDFmOTNjOGVmMjQ0NzM4NmM0MzRiNDQ5ODUzOGYwNjE4NDU4NjJjM2Y5ZDU3NTFhZDBmY2U1MmFmNDQyYjNhOTAyMDAwMDAwMDQ1MTY1YWJhYmI5MDljNjZiNWEzZTdjODFiM2M0NTM5NmI5NDRiZTEzYjhhYWNmYzAyMDRmM2YzYzEwNWE2NmZhOGZhNjQwMmYxYjVlZmRkYjAxMDAwMDAwMDk2YTY1YWM2MzZhYWNhYjY1NmFjM2M2NzdjNDAyYjc5ZmE0MDUwMDAwMDAwMDA0MDA2YWFiNTEzM2UzNTgwMjAwMDAwMDAwMDc1MWFiNjM1MTYzYWIwMDc4YzJlMDI1IiwgIjZhYWM1MTYzNmE2YTAwNTI2NSIsIDAsIC04ODIzMDY4NzQsICI1NTFjZTk3NWQ1ODY0N2YxMGFkZWZiM2U1MjlkOWJmOWNkYTM0NzUxNjI3ZWM0NWU2OTBmMTM1ZWYwMDM0Yjk1Il0sCglbIjI1ZWU1NGVmMDE4NzM4NzU2NGJiODZlMGFmOTZiYWVjNTQyODljYThkMTVlODFhNTA3YTJlZDY2NjhkYzkyNjgzMTExZGZiN2E1MDEwMDAwMDAwNDAwNTI2MzYzNGNlY2YxN2QwNDI5YWE0ZDAwMDAwMDAwMDAwNzYzNmE2YWFiYWI1MjYzZGFhNzU2MDEwMDAwMDAwMDAyNTFhYjRkZjcwYTAxMDAwMDAwMDAwMTUxOTgwYTg5MDQwMDAwMDAwMDA2NTI1M2FjNmEwMDYzNzdmZDI0ZTMiLCAiNjVhYiIsIDAsIDc5Nzg3NzM3OCwgIjA2OWYzOGZkNWQ0N2FiZmY0NmYwNGVlM2FlMjdkYjAzMjc1ZTlhYTQ3MzdmYTBkMmY1Mzk0Nzc5Zjk2NTQ4NDUiXSwKCVsiYTljNTdiMWEwMTg1NTFiY2JjNzgxYjI1NjY0MjUzMmJiYzA5OTY3ZjFjYmUzMGEyMjdkMzUyYTE5MzY1ZDIxOWQzZjExNjQ5YTMwMzAwMDAwMDA0NTE2NTUzNTJiMTQwOTQyMjAzMTgyODk0MDMwMDAwMDAwMDA2YWIwMGFjNmFhYjY1NGFkZDM1MDQwMDAwMDAwMDAwM2QzNzk1MDUwMDAwMDAwMDA1NTNhYmFjYWMwMGUxNzM5ZDM2IiwgIjUzNjMiLCAwLCAtMTA2OTcyMTAyNSwgIjZkYTMyNDE2ZGViNDVhMGQ3MjBhMWRiZTZkMzU3ODg2ZWFiYzQ0MDI5ZGQ1ZGI3NGQ1MGZlYWZmYmU3NjMyNDUiXSwKCVsiMDVjNGZiOTQwNDBmNTExOWRjMGIxMGFhOWRmMDU0ODcxZWQyM2M5OGM4OTBmMWU5MzFhOThmZmIwNjgzZGFjNDVlOTg2MTlmZGMwMjAwMDAwMDA3YWNhYjZhNTI1MjYzNTEzZTc0OTU2NTFjOTc5NGM0ZDYwZGE4MzVkMzAzZWI0ZWU2ZTg3MWY4MjkyZjZhZDBiMzJlODVlZjA4YzlkYzdhYTRlMDNjOWMwMTAwMDAwMDA1MDBhYjUyYWNhY2ZmZmZmZmZmZmVlOTUzMjU5Y2YxNGNlZDMyM2ZlOGQ1NjdlNGM1N2JhMzMxMDIxYTFlZjVhYzJmYTkwZjc3ODkzNDBkN2M1NTAxMDAwMDAwMDdhYzZhYWNhYzZhNmE1M2ZmZmZmZmZmMDhkOWRjODIwZDAwZjE4OTk4YWYyNDczMTlmOWRlNWMwYmJkNTJhNDc1ZWE1ODdmMTYxMDFhZjNhZmFiN2MyMTAxMDAwMDAwMDM1MzUzNjM1NjliY2E3YzA0NjhlMzRmMDAwMDAwMDAwMDA4NjM1MzYzNTNhYzUxYWM2NTg0ZTMxOTAxMDAwMDAwMDAwNjY1MDA1MmFiNmE1MzNkZWJlYTAzMDAwMDAwMDAwM2FjMDA1M2VlNzA3MDAyMDAwMDAwMDAwNmFjNTIwMDUyNTNhYzAwMDAwMDAwIiwgIjYzNTEwMDUyNTMiLCAyLCAxMzg2OTE2MTU3LCAiNzZjNDAxM2M0MGJmYTE0ODFiYWRkOWQzNDJiNmQ0YjgxMThkZTVhYjQ5Nzk5NWZhZmJmNzMxNDQ0NjllNWZmMCJdLAoJWyJjOTVhYjE5MTA0YjYzOTg2ZDczMDNmNDM2M2NhOGY1ZDJmYTg3YzIxZTNjNWQ0NjJiOTlmMWViY2I3YzQwMmZjMDEyZjUwMzQ3ODAwMDAwMDAwMDkwMDZhYWM2M2FjNjU2NTUyNjVmZmZmZmZmZmJlOTFhZmE2OGFmNDBhODcwMGZkNTc5Yzg2ZDRiNzA2YzI0ZTQ3ZjczNzlkYWQ2MTMzZGUzODlmODE1ZWY3ZjUwMTAwMDAwMDA0NmFhYzAwYWJmZmZmZmZmZjE1MjBkYjBkODFiZTRjNjMxODc4NDk0NjY4ZDI1ODM2OWYzMGI4ZjJiN2E3MWUyNTc3NjRlOWEyN2YyNGI0ODcwMTAwMDAwMDA3NmE1MTUxMDA1MzUzMDBiMGE5ODllMTE2NGRiOTQ5OTg0NWJhYzAxZDA3YTNhN2Q2ZDJjMmE3NmU0YzA0YWJlNjhmODA4YjZlMmVmNTA2OGNlNjU0MGUwMTAwMDAwMDA5YWM1MzYzNmE2M2FiNjU2NTZhZmZmZmZmZmYwMzA5YWFjNjA1MDAwMDAwMDAwNWFiNjU2MzY1NmE2MDY3ZTgwMjAwMDAwMDAwMDNhYzUzNmFlYzkxYzgwMzAwMDAwMDAwMDk2NTUyNTFhYjY1YWM2YTUzYWNjN2E0NWJjNSIsICI2MzUyNmE2NWFiYWMiLCAxLCA1MTIwNzkyNzAsICJmYjdlY2E4MWQ4MTYzNTRiNmFlZGVjOGNhZmM3MjFkNWIxMDczMzY2NTdhY2FmZDBkMjQ2MDQ5NTU2ZjllMDRiIl0sCglbImNhNjZhZTEwMDQ5NTMzYzJiMzlmMTQ0OTc5MWJkNmQzZjAzOWVmZTBhMTIxYWI3MzM5ZDM5ZWYwNWQ2ZGNiMjAwZWMzZmIyYjNiMDIwMDAwMDAwNDY1MDA2YTUzZmZmZmZmZmY1MzRiOGY5N2YxNWNjN2ZiNGY0Y2VhOWJmNzk4NDcyZGM5MzEzNWNkNWI4MDllNGNhN2ZlNDYxN2E2MTg5NTk4MDEwMDAwMDAwMGRkZDgzYzFkYzk2ZjY0MDkyOWRkNWU2ZjExNTFkYWIxYWE2NjkxMjg1OTFmMTUzMzEwZDM5OTNlNTYyY2M3NzI1YjZhZTNkOTAzMDAwMDAwMDQ2YTUyNTM2NTgyZjhjY2RkYjgwODZkODU1MGYwOTEyODAyOWUxNzgyYzNmMjYyNDQxOWFiZGVhZjc0ZWNiMjQ4ODljYzQ1YWMxYTY0NDkyYTAxMDAwMDAwMDI1MTZhNDg2N2I0MTUwMmVlNmNjZjAzMDAwMDAwMDAwNzUyYWNhY2FiNTJhYjZhNGI3YmE4MDAwMDAwMDAwMDA3NTE1MWFiMDA1MjUzNjMwMDAwMDAwMCIsICI2NTUzIiwgMiwgLTYyOTY5MjU3LCAiODA4NWU5MDQxNjRhYjlhOGMyMGY1OGYwZDM4N2Y2YWRiM2RmODU1MzJlMTE2NjJjMDNiNTNjM2RmOGM5NDNjYiJdLAoJWyJiYTY0NmQwYjA0NTM5OTlmMGM3MGNiMDQzMGQ0Y2FiMGUyMTIwNDU3YmI5MTI4ZWQwMDJiNmU5NTAwZTljN2Y4ZDdiYWEyMGFiZTAyMDAwMDAwMDE2NTJhNGU0MjkzNWIyMWRiMDJiNTZiZjZmMDhlZjRiZTVhZGIxM2MzOGJjNmEwYzMxODdlZDdmNjE5NzYwN2JhNmEyYzQ3YmM4YTAzMDAwMDAwMDQwMDUyNTE2YWZmZmZmZmZmYTU1YzNjYmZjMTliMTY2NzU5NGFjODY4MWJhNWQxNTk1MTRiNjIzZDA4ZWQ0Njk3ZjU2Y2U4ZmNkOWNhNWIwYjAwMDAwMDAwMDk2YTZhNTI2M2FjNjU1MjYzYWI2NjcyOGMyNzIwZmRlYWJkZmRmOGQ5ZmIyYmZlODhiMjk1ZDNiODc1OTBlMjZhMWU0NTZiYWQ1OTkxOTY0MTY1Zjg4OGMwM2EwMjAwMDAwMDA2NjMwMDUxYWMwMGFjZmZmZmZmZmYwMTc2ZmFmZTAxMDAwMDAwMDAwNzAwNjNhY2FjNjU1MTUyMDAwMDAwMDAiLCAiNjMiLCAxLCAyMDAyMzIyMjgwLCAiOWRiNGUzMjAyMDgxODVlZTcwZWRiNDc2NGVlMTk1ZGVjYTAwYmE0NjQxMmQ1NTI3ZDk3MDBjMWNmMWMzZDA1NyJdLAoJWyIyZGRiOGY4NDAzOWY5ODNiNDVmNjRhN2E3OWI3NGZmOTM5ZTNiNTk4YjM4ZjQzNmRlZjdlZGQ1NzI4MmQwODAzYzdlZjM0OTY4ZDAyMDAwMDAwMDI2YTUzN2ViMDBjNDE4N2RlOTZlNmUzOTdjMDVmMTE5MTUyNzBiY2MzODM5NTk4Nzc4NjhiYTkzYmFjNDE3ZDlmNmVkOWY2MjdhNzkzMDMwMDAwMDAwNDUxNjU1MWFiZmZmZmZmZmZhY2MxMmYxYmI2N2JlM2FlOWYxZDQzZTU1ZmRhOGI4ODUzNDBhMGRmMTE3NTM5MmE4YmJkOWY5NTlhZDM2MDUwMDMwMDAwMDAwMjUxNjNmZmZmZmZmZjAyZmYwZjQ3MDAwMDAwMDAwMDAwNzBiZDk5MDQwMDAwMDAwMDAzYWM1M2FiZjg0NDBiNDIiLCAiIiwgMiwgLTM5MzkyMzAxMSwgIjAxMzNmMWExNjEzNjNiNzFkZmIzYTkwMDY1YzcxMjhjNTZiZDAwMjhiNTU4YjYxMDE0MmRmNzllMDU1YWI1YzciXSwKCVsiYjIxZmMxNTQwM2I0YmRhYTk5NDIwNDQ0NGI1OTMyM2E3Yjg3MTRkZDQ3MWJkN2Y5NzVhNGU0YjdiNDg3ODdlNzIwY2JkMWY1ZjAwMDAwMDAwMDAwZmZmZmZmZmYzMTE1MzMwMDFjYjg1Yzk4YzFkNThkZTBhNWZiZjI3Njg0YTY5YWY4NTBkNTJlMjIxOTdiMGRjOTQxYmM2Y2E5MDMwMDAwMDAwNzY1YWI2MzYzYWI1MzUxYThhZTJjMmM3MTQxZWNlOWE0ZmY3NWM0M2I3ZWE5ZDk0ZWM3OWI3ZTI4ZjYzZTAxNWFjNTg0ZDk4NGE1MjZhNzNmZTFlMDRlMDEwMDAwMDAwNzUyNjM1MjUzNmE1MzY1ZmZmZmZmZmYwMmEwYTllYTAzMDAwMDAwMDAwMmFiNTJjZmM0ZjMwMDAwMDAwMDAwMDQ2NTUyNTI1M2U4ZTBmMzQyIiwgIjAwMDAwMCIsIDEsIDEzMDUyNTM5NzAsICJkMWRmMWY0YmJhMjQ4NGNmZjhhODE2MDEyYmI2ZWM5MWM2OTNlOGNhNjlmZTg1MjU1ZTAwMzE3MTEwODFjNDZhIl0sCglbImQxNzA0ZDY2MDFhY2Y3MTBiMTlmYTc1M2UzMDdjZmNlZTI3MzVlYWRhMGQ5ODJiNWRmNzY4NTczZGY2OTBmNDYwMjgxYWFkMTJkMDAwMDAwMDAwNzY1NjMwMDAwNTEwMGFjZmZmZmZmZmYwMjMyMjA1NTA1MDAwMDAwMDAwMzUxYWI2MzJjYTFiYzAzMDAwMDAwMDAwMTYzMDAwMDAwMDAiLCAiYWM2NWFiNjVhYjUxIiwgMCwgMTY1MTc5NjY0LCAiNDBiNGYwM2M2ODI4OGJkYzk5NjAxMWIwZjBkZGI0YjQ4ZGMzYmU2NzYyZGI3Mzg4YmRjODI2MTEzMjY2Y2Q2YyJdLAoJWyJkMmY2YzA5NjAyNWNjOTA5OTUyYzI0MDBiZDgzYWMzZDUzMmJmYThhMWY4ZjNlNzNjNjliMWZkN2I4OTEzMzc5NzkzZjNjZTkyMjAyMDAwMDAwMDc2YTAwYWI2YTUzNTE2YWRlNTMzMmQ4MWQ1OGIyMmVkNDdiMmEyNDlhYjNhMmNiM2E2Y2U5YTZiNWE2ODEwZTE4ZTNlMTI4M2MxYTFiM2JkNzNlM2FiMDAzMDAwMDAwMDJhY2FiZmZmZmZmZmYwMWE5YjJkNDA1MDAwMDAwMDAwNTYzNTJhYmFiMDBkYzRiN2Y2OSIsICJhYjAwNjUiLCAwLCAtNzgwMTkxODQsICIyZWYwMjVlOTA3ZjBmYTQ1NGEyYjQ4YTRmM2I4MTM0NmJhMmIyNTI3NjliNWMzNWQ3NDJkMGM4OTg1ZTBiZjVlIl0sCglbIjNlNmRiMWExMDE5NDQ0ZGJhNDYxMjQ3MjI0YWQ1OTMzYzk5NzI1NmQxNWM1ZDM3YWRlM2Q3MDA1MDZhMGJhMGE1NzgyNDkzMGQ3MDEwMDAwMDAwODUyYWI2NTAwYWIwMGFjMDBmZmZmZmZmZjAzMzg5MjQyMDIwMDAwMDAwMDAxYWJhODQ2NWEwMjAwMDAwMDAwMDg2YTZhNjM2YTUxMDBhYjUyMzk0ZTYwMDMwMDAwMDAwMDA5NTNhYzUxNTI2MzUxMDAwMDUzZDIxZDk4MDAiLCAiYWJhYmFiYWNhYjUzYWI2NSIsIDAsIDE2NDM2NjE4NTAsICIxZjhhM2FjYTU3M2E2MDlmNGFlYTBjNjk1MjJhODJmY2I0ZTE1ODM1NDQ5ZGEyNGEwNTg4NmRkYzYwMWY0ZjZhIl0sCglbImY4MjFhMDQyMDM2YWQ0MzYzNGQyOTkxM2I3N2MwZmM4N2I0YWY1OTNhYzg2ZTlhODE2YTlkODNmZDE4ZGZjZmM4NGUxZTFkNTcxMDIwMDAwMDAwNzZhNjNhYzUyMDA2MzUxZmZmZmZmZmZiY2RhZjQ5MGZjNzUwODYxMDllMmY4MzJjODk4NTcxNmIzYTYyNGE0MjJjZjk0MTJmZTYyMjdjMTA1ODVkMjEyMDMwMDAwMDAwOTUyNTJhYmFiNTM1MmFjNTI2YWZmZmZmZmZmMmVmZWQwMWE0YjczYWQ0NmM3ZjdiYzdmYTNiYzQ4MGY4ZTMyZDc0MTI1MmYzODllYWNhODg5YTJlOWQyMDA3ZTAwMDAwMDAwMDM1M2FjNTNmZmZmZmZmZjAzMmFjOGIzMDIwMDAwMDAwMDA5NjM2MzAwMDAwMDYzNTE2MzAwZDNkOWYyMDQwMDAwMDAwMDA2NTEwMDY1YWM2NTZhYWZhNWRlMDAwMDAwMDAwMDA2NjM1MmFiNTMwMGFjOTA0MmI1N2QiLCAiNTI1MzY1IiwgMSwgNjY3MDY1NjExLCAiMGQxN2E5MmM4ZDUwNDFiYTA5YjUwNmRkZjlmZDQ4OTkzYmUzODlkMDAwYWFkNTRmOWNjMmE0NGZjYzcwNDI2YiJdLAoJWyI1OGUzZjBmNzA0YTE4NmVmNTVkMzkxOTA2MTQ1OTkxMGRmNTQwNmE5MTIxZjM3NWU3NTAyZjNiZTg3MmE0NDljM2YyYmIwNTgzODAxMDAwMDAwMDBmMGU4NThkYTNhYzU3YjZjOTczZjg4OWFkODc5ZmZiMmJkNjQ1ZTkxYjc3NDAwNmRmYTM2NmM3NGUyNzk0YWFmYzhiYmM4NzEwMTAwMDAwMDA3NTFhYzY1NTE2YTUxNTEzMWE2OGYxMjBmZDg4Y2EwODY4N2NlYjQ4MDBlMWUzZmJmZWE3NTMzZDM0Yzg0ZmVmNzBjYzVhOTZiNjQ4ZDU4MDM2OTUyNmQwMDAwMDAwMDA2MDBhYzAwNTE1MzYzZjYxOTFkNWIzZTQ2MGZhNTQxYTMwYTZlODMzNDVkZWRmYTNlZDMxYWQ4NTc0ZDQ2ZDdiYmVjZDNjOTA3NGU2YmE1Mjg3YzI0MDIwMDAwMDAwMTUxZTNlMTlkNjYwNDE2MjYwMjAxMDAwMDAwMDAwNDAwNTEwMGFjNzFlMTcxMDEwMDAwMDAwMDAwNjViNWU5MDMwMDAwMDAwMDA0MDA1M2FiNTNmNmI3ZDEwMTAwMDAwMDAwMDIwMGFjMDAwMDAwMDAiLCAiNjU2M2FiIiwgMSwgLTY2OTAxODYwNCwgIjgyMjFkNWRmYjc1ZmMzMDFhODBlOTE5ZTE1OGUwYjFkMWU4NmZmYjA4ODcwYTMyNmM4OTQwOGQ5YmMxNzM0NmIiXSwKCVsiZWZlYzFjY2UwNDRhNjc2YzFhM2Q5NzNmODEwZWRiNWE5NzA2ZWI0Y2Y4ODhhMjQwZjJiNWZiMDg2MzZiZDJkYjQ4MjMyN2NmNTAwMDAwMDAwMDA1YWI1MTY1NmE1MmZmZmZmZmZmNDZlZjAxOWQ3YzAzZDk0NTZlNTEzNGViMGE3YjU0MDhkMjc0YmQ4ZTMzZTgzZGY0NGZhYjk0MTAxZjdjNWI2NTAyMDAwMDAwMDlhYzUxMDAwMDYzNTM2MzAwNTE0MDdhYWRmNmY1YWFmZmJkMzE4ZmRiYmM5Y2FlNGJkODgzZTY3ZDUyNGRmMDZiYjAwNmNlMmY3YzdlMjcyNTc0NGFmYjc2OTYwMTAwMDAwMDA1NTM2YWFiNTNhY2VjMGQ2NGVhZTA5ZTJmYTFhN2M0OTYwMzU0MjMwZDUxMTQ2Y2Y2ZGM0NWVlOGE1MWY0ODllMjA1MDhhNzg1Y2JlNmNhODZmYzAwMDAwMDAwMDY1MTUzNmE1MTYzMDBmZmZmZmZmZjAxNGVmNTk4MDIwMDAwMDAwMDA2NjM2YWFjNjU1MjY1YTZhZTFiNzUiLCAiNTM1MTZhNTM2MzUyNjU2M2FiIiwgMiwgLTE4MjM5ODIwMTAsICIxM2U4YjVhYjRlNWIyY2VlZmYwMDQ1YzYyNWUxOTg5OGJkYTJkMzlmZDdhZjY4MmUyZDE1MjEzMDNjZmUxMTU0Il0sCglbIjNjNDM2YzI1MDE0NDJhNWI3MDBjYmMwNjIyZWU1MTQzYjM0YjFiODAyMWVhN2JiYzI5ZTQxNTRhYjFmNWJkZmIzZGZmOWQ2NDA1MDEwMDAwMDAwODZhYWI1MjUxYWM1MjUyYWNmZmZmZmZmZjAxNzBiOWEyMDMwMDAwMDAwMDA2NmFhYjYzNTE1MjUxMTRiMTM3OTEiLCAiNjNhY2FiYWI1MmFiNTFhYzY1IiwgMCwgLTIxNDA2MTI3ODgsICI4N2RkZjFmOWFjYjY2NDA0NDhlOTU1YmQxOTY4ZjczOGI0YjNlMDczOTgzYWY3YjgzMzk0YWI3NTU3ZjVjZDYxIl0sCglbImQ2MmYxODNlMDM3ZTBkNTJkY2Y3M2Y5YjMxZjcwNTU0YmNlNGY2OTNkMzZkMTc1NTJkMGUyMTcwNDFlMDFmMTVhZDM4NDBjODM4MDAwMDAwMDAwOTYzYWNhYzZhNmE2YTYzYWI2M2ZmZmZmZmZmYWJkZmIzOTViNmI0ZTYzZTAyYTc2MzgzMGY1MzZmYzA5YTM1ZmY4YTBjZjYwNDAyMWMzYzc1MWZlNGM4OGY0ZDAzMDAwMDAwMDZhYjYzYWI2NWFjNTNhYTRkMzBkZTk1YTIzMjdiY2NmOTAzOWZiMWFkOTc2Zjg0ZTBiNGEwOTM2ZDgyZTY3ZWFmZWJjMTA4OTkzZjFlNTdkOGFlMzkwMDAwMDAwMDAxNjVmZmZmZmZmZjA0MzY0YWQzMDUwMDAwMDAwMDAzNmEwMDUxNzlmZDg0MDEwMDAwMDAwMDA3YWI2MzZhYWM2MzYzNTE5YjkwMjMwMzAwMDAwMDAwMDg1MTAwNjUwMDY1NjNhYzZhY2QyYTRhMDIwMDAwMDAwMDAwMDAwMDAwMDAiLCAiNTIiLCAxLCA1OTUwMjAzODMsICJkYTg0MDVkYjI4NzI2ZGM0ZTBmODJiNjFiMmJmZDgyYjFiYWE0MzZiNGU1OTMwMDMwNWNjM2IwOTBiMTU3NTA0Il0sCglbIjQ0YzIwMGE1MDIxMjM4ZGU4ZGU3ZDgwZTdjY2U5MDU2MDYwMDE1MjRlMjFjOGQ4NjI3ZTI3OTMzNTU1NGNhODg2NDU0ZDY5MmU2MDAwMDAwMDAwNTAwYWNhYzUyYWJiYjhkMWRjODc2YWJiMWY1MTRlOTZiMjFjNmU4M2Y0MjljNjZhY2NkOTYxODYwZGMzYWVkNTA3MWUxNTNlNTU2ZTZjZjA3NmQwMjAwMDAwMDA1NjU1MzUyNmE1MTg3MGE5MjhkMDM2MGE1ODAwNDAwMDAwMDAwMDQ1MTZhNTM1MjkwZTFlMzAyMDAwMDAwMDAwODUxYWI2YTAwNTEwMDY1YWNkZDdmYzUwNDAwMDAwMDAwMDc1MTUzNjNhYjY1NjM2YWJiMWVjMTgyIiwgIjYzNjMiLCAwLCAtNzg1NzY2ODk0LCAiZWQ1M2NjNzY2Y2Y3Y2I4MDcxY2VjOTc1MjQ2MDc2M2I1MDRiMjE4MzQ0MjMyOGM1YTk3NjFlYjAwNWM2OTUwMSJdLAoJWyJkNjgyZDUyZDAzNGU5YjA2MjU0NGU1ZjhjNjBmODYwYzE4ZjAyOWRmOGI0NzcxNmNhYmI2YzFiNGE0YjMxMGEwNzA1ZTc1NDU1NjAyMDAwMDAwMDQwMDY1NmEwMDE2ZWViODhlZWY2OTI0ZmVkMjA3ZmJhN2RkZDMyMWZmM2Q4NGYwOTkwMmZmOTU4YzgxNWEyYmYyYmI2OTJlYjUyMDMyYzRkODAzMDAwMDAwMDc2MzY1YWM1MTZhNTIwMDk5Nzg4ODMxZjhjOGViMjU1MjM4OTgzOWNmYjgxYTlkYzU1ZWNkMjUzNjdhY2FkNGUwM2NmYmIwNjUzMGY4Y2NjZjgyODAyNzAxMDAwMDAwMDg1MjUzNjU1MzAwNjU2YTUzZmZmZmZmZmYwMmQ1NDMyMDA1MDAwMDAwMDAwNTZhNTEwMDUyYWMwMzk3OGIwNTAwMDAwMDAwMDcwMGFjNTE1MjUzNjNhY2ZkYzRmNzg0IiwgIiIsIDIsIC02OTYwMzUxMzUsICJlMWEyNTY4NTQwOTk5MDcwNTBjZmVlNzc3OGYyMDE4MDgyZTczNWExZjFhM2Q5MTQzNzU4NDg1MGE3NGM4N2JiIl0sCglbImU4YzBkZWM1MDI2NTc1ZGRmMzEzNDNjMjBhZWVjYTg3NzBhZmIzM2Q0ZTU2MmFhOGVlNTJlZWRhNmI4ODgwNmZkZmQ0ZmUwYTk3MDMwMDAwMDAwOTUzYWNhYmFiNjVhYjUxNjU1MmZmZmZmZmZmZGRlMTIyYzJjM2U5NzA4ODc0Mjg2NDY1ZjgxMDVmNDMwMTllODM3NzQ2Njg2ZjQ0MjY2NjYyOTA4OGE5NzBlMDAxMDAwMDAwMDE1M2ZmZmZmZmZmMDFmOThlZWUwMTAwMDAwMDAwMDI1MjUxZmU4NzM3OWEiLCAiNjMiLCAxLCA2MzM4MjYzMzQsICJhYmU0NDEyMDkxNjVkMjViYzZkODM2OGYyZTdlN2RjMjEwMTkwNTY3MTlmZWYxYWNlNDU1NDJhYTJlZjI4MmUyIl0sCglbImIyODhjMzMxMDExYzE3NTY5MjkzYzFlNjQ0OGUzM2E2NDIwNWZjOWRjNmUzNWJjNzU2YTFhYzhiOTdkMThlOTEyZWE4OGRjMDc3MDIwMDAwMDAwNzYzNTMwMGFjNmFhY2FiZmMzYzg5MDkwM2EzY2NmODA0MDAwMDAwMDAwNDY1NjUwMGFjOWM2NWM5MDQwMDAwMDAwMDA5YWI2YTZhYWJhYjY1YWJhYzYzYWM1Zjc3MDIwMDAwMDAwMDAzNjUwMDUyMDAwMDAwMDAiLCAiNTI2YTYzIiwgMCwgMTU3NDkzNzMyOSwgIjBkZDFiZDVjMjU1MzNiZjVmMjY4YWEzMTZjZTQwZjk3NDUyY2NhMjA2MWYwYjEyNmE1OTA5NGNhNWI2NWY3YTAiXSwKCVsiZmMwYTA5MjAwM2NiMjc1ZmE5YTI1YTcyY2Y4NWQ2OWMxOWU0NTkwYmZkZTM2YzJiOTFjZDJjOWM1NjM4NWY1MWNjNTQ1NTMwMjEwMDAwMDAwMDA0YWI1MzAwNjNmZmZmZmZmZjcyOWIwMDZlYjZkMTRkNmU1ZTMyYjFjMzc2YWNmMWM2MjgzMGE1ZDkyNDZkYTM4ZGJkYjRkYjlmNTFmZDFjNzQwMjAwMDAwMDA0NjM2MzY1MDBmZmZmZmZmZjBhZTY5NWM2ZDEyYWI3ZGNiOGQzZDRiNTQ3YjAzZjE3OGM3MjY4NzY1ZDFkZTlhZjg1MjNkMjQ0ZTM4MzZiMTIwMzAwMDAwMDAxNTFmZmZmZmZmZjAxMTVjMWUyMDEwMDAwMDAwMDA2NmE2YWFiYWM2YTZhMWZmNTlhZWMiLCAiYWIwMDUzYWMiLCAwLCA5MzE4MzEwMjYsICI3M2ZlMjIwOTljODI2YzM0YTc0ZWRmNDU1OTFmNWQ3YjNhODg4YzgxNzhjZDA4ZmFjZGZkOTZhOWE2ODEyNjFjIl0sCglbIjBmY2FlN2UwMDRhNzFhNGE3YzhmNjZlOTQ1MGMwYzE3ODUyNjg2NzlmNWYxYTJlZTBmYjNlNzI0MTNkNzBhOTA0OWVjZmY3NWRlMDIwMDAwMDAwNDUyMDA1MjUxZmZmZmZmZmY5OWM4MzYzYzRiOTVlN2VjMTNiOGMwMTdkN2JiNmU4MGY3YzA0YjExODdkNjA3Mjk2MWUxYzI0NzliMWRjMDMyMDIwMDAwMDAwMGZmZmZmZmZmN2NmMDNiM2Q2NmFiNTNlZDc0MGE3MGM1YzM5MmI4NGY3ODBmZmY1NDcyYWVlODI5NzFhYzNiZmVlYjA5YjJkZjAyMDAwMDAwMDZhYjUyNjU2MzZhMDA1OGU0ZmU5MjU3ZDdjN2M3ZTgyZmYxODc3NTdjNmVhZGMxNGNjZWI2NjY0ZGJhMmRlMDNhMDE4MDk1ZmQzMDA2NjgyYTViOTYwMDAwMDAwMDA1NjM1MzUzNmE2MzZkZTI2YjIzMDNmZjc2ZGUwMTAwMDAwMDAwMDFhY2RjMGEyZTAyMDAwMDAwMDAwMWFiMGE1M2VkMDIwMDAwMDAwMDA3NTMwMDYzYWI1MTUxMDA4ODQxNzMwNyIsICJhYzZhYWNhYjUxNjU1MzUyNTMiLCAyLCAtOTAyMTYwNjk0LCAiZWVhOTZhNDhlZTU3MmFlYTMzZDc1ZDA1ODdjZTk1NGZjZmI0MjU1MzFhN2RhMzlkZjI2ZWY5YTY2MzUyMDFiZSJdLAoJWyI2MTI3MDE1MDA0MTQyNzExMzhlMzBhNDZiN2E1ZDk1YzcwYzc4Y2M0NWJmOGU0MDQ5MWRhYzIzYTZhMWI2NWE1MWFmMDRlNmI5NDAyMDAwMDAwMDQ1MTY1NTE1M2ZmZmZmZmZmZWI3MmRjMGU0OWIyZmFkMzA3NWMxOWUxZTZlNGIzODdmMTM2NWRjYTQzZDUxMGY2YTAyMTM2MzE4ZGRlY2I3ZjAyMDAwMDAwMDM1MzYzNTJlMTE1ZmZjNGY5YmFlMjVlZjViYWY1MzRhODkwZDE4MTA2ZmIwNzA1NWM0ZDdlYzk1NTNiYTg5ZWQxYWMyMTAxNzI0ZTUwNzMwMzAwMDAwMDA4MDA2MzAwNjU2M2FjYWJhYzJmZjA3ZjY5YTA4MGNmNjFhOWQxOWY4NjgyMzllNmE0ODE3YzBlZWI2YTRmMzNmZTI1NDA0NWQ4YWYyYmNhMjg5YTg2OTVkZTAzMDAwMDAwMDA0MzA3MzZjNDA0ZDMxNzg0MDUwMDAwMDAwMDA4NmEwMGFiYWM1MzUxYWI2NTMwNmUwNTAzMDAwMDAwMDAwOTYzYWIwMDUxNTM2YWFiYWI2YTZjOGFjYTAxMDAwMDAwMDAwNTY1NTE2MzUxYWI1ZGNmOTYwMTAwMDAwMDAwMDE2YTAwMDAwMDAwIiwgImFiIiwgMiwgLTYwNDU4MTQzMSwgIjVlYzgwNWU3NGVlOTM0YWE4MTVjYTVmNzYzNDI1Nzg1YWUzOTAyODJkNDZiNWY2ZWEwNzZiNmFkNjI1NWE4NDIiXSwKCVsiNmI2OGJhMDAwMjNiYjRmNDQ2MzY1ZWEwNGQ2OGQ0ODUzOWFhZTY2ZjViMDRlMzFlNmIzOGI1OTRkMjcyM2FiODJkNDQ1MTI0NjAwMDAwMDAwMDAyMDBhY2ZmZmZmZmZmNWRmYzZmZWJiNDg0ZmZmNjljOWVlYjdjN2ViOTcyZTkxYjZkOTQ5Mjk1NTcxYjgyMzViMWRhODk1NWYzMTM3YjAyMDAwMDAwMDg1MWFjNjM1MjUxNmE1MzUzMjU4MjhjOGEwMzM2NWRhODAxMDAwMDAwMDAwODAwNjM2YWFiYWM2NTUxYWIwZjU5NGQwMzAwMDAwMDAwMDk2M2FjNTM2MzY1YWM2MzYzNmE0NTMyOWUwMTAwMDAwMDAwMDVhYmFjNTM1MjZhMDAwMDAwMDAiLCAiMDA1MTUxIiwgMCwgMTMxNzAzODkxMCwgIjQyZjViYTZmNWZlMWUwMGU2NTJhMDhjNDY3MTU4NzFkYzRiNDBkODlkOTc5OWZkN2MwZWE3NThmODZlYWI2YTciXSwKCVsiYWZmNTg1MGMwMTY4YTY3Mjk2Y2M3OTBjMWIwNGE5ZWQ5YWQxYmEwNDY5MjYzYTk0MzJmY2I1MzY3NmQxYmI0ZTBlZWE4ZWExNDEwMTAwMDAwMDA1YWM2NTUyNmE1MzdkNWZjYjFkMDFkOWMyNmQwMjAwMDAwMDAwMDY1MjY1YWI1MTUzYWNjMDYxN2NhMSIsICI1MWFiNjUwMDYzIiwgMCwgMTcxMjk4MTc3NCwgIjg0NDlkNTI0NzA3MTMyNWU1ZjhlZGNjOTNjYjk2NjZjMGZlY2FiYjEzMGNlMGU1YmVmMDUwNTc1NDg4NDc3ZWIiXSwKCVsiZTZkNmI5ZDgwNDJjMjdhZWM5OWFmOGMxMmI2YzFmN2E4MDQ1M2UyMjUyYzAyNTE1ZTFmMzkxZGExODVkZjA4NzRlMTMzNjk2YjUwMzAwMDAwMDA2YWM1MTY1NjUwMDY1ZmZmZmZmZmY2YTRiNjBhNWJmZTdhZjcyYjE5OGVhYTNjZGUyZTAyYWE1ZmEzNmJkZjVmMjRlYmNlNzlmNmVjYjUxZjNiNTU0MDAwMDAwMDAwNjUyNjU2YWFiYWJhYzJlYzRjNWE2Y2ViZjg2ODY2YjFmY2M0YzViZDVmNGIxOTc4NWE4ZWVhMmNkZmU1ODg1MWZlYmY4N2ZlYWNmNmYzNTUzMjRhODAxMDAwMDAwMDE1MzcxMDAxNDUxNDlhYzFlMjg3Y2VmNjJmNmY1MzQzNTc5MTg5ZmFkODQ5ZGQzM2YyNWMyNWJmY2E4NDFjYjY5NmYxMGM1YTM0NTAzMDAwMDAwMDQ2YTYzNmE2M2RmOWQ3YzRjMDE4ZDk2ZTIwMTAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgIjUzYWIiLCAxLCAtMTkyNDc3NzU0MiwgImY5OGY5NWQwYzVlYzNhYzNlNjk5ZDgxZjZjNDQwZDJlNzg0M2VhYjE1MzkzZWIwMjNiYzVhNjI4MzVkNmRjZWEiXSwKCVsiMDQ2YWMyNWUwMzBhMzQ0MTE2NDg5Y2M0ODAyNTY1OWEzNjNkYTYwYmMzNmIzYTg3ODRkZjEzN2E5M2I5YWZlYWI5MWEwNGMxZWQwMjAwMDAwMDA5NTFhYjAwMDA1MjZhNjVhYzUxZmZmZmZmZmY2YzA5NGEwMzg2OWZkZTU1YjlhOGM0OTQyYTk5MDY2ODNmMGE5NmUyZDNlNWEwM2M3MzYxNGVhMzIyM2IyYzI5MDIwMDAwMDAwNTAwYWI2MzZhNmFmZmZmZmZmZjNkYTdhYTVlY2VmOTA3MTYwMDg2NjI2NzY3NGI1NGFmMTc0MGM1YWViODhhMjkwYzQ1OWNhYTI1N2EyNjgzY2IwMDAwMDAwMDA0YWI2NTY1YWI3ZTJhMWI5MDAzMDFiOTE2MDMwMDAwMDAwMDA1YWJhYzYzNjU2MzA4ZjRlZDAzMDAwMDAwMDAwODUyYWI1M2FjNjNhYzUxYWM3M2Q2MjAwMjAwMDAwMDAwMDNhYjAwMDA4ZGViMTI4NSIsICI2YSIsIDIsIDEyOTk1MDUxMDgsICJmNzllNmI3NzZlMjU5MmJhZDQ1Y2EzMjhjNTRhYmYxNDA1MGMyNDFkOGY4MjJkOTgyYzM2ZWE4OTBmZDQ1NzU3Il0sCglbImJkNTE1YWNkMDEzMGIwYWM0N2MyZDg3ZjhkNjU5NTNlYzdkNjU3YWY4ZDk2YWY1ODRmYzEzMzIzZDBjMTgyYTJlNWY5YTk2NTczMDAwMDAwMDAwNjUyYWM1MWFjYWM2NWZmZmZmZmZmMDQ2N2FhZGUwMDAwMDAwMDAwMDM2NTUzNjNkYzU3N2QwNTAwMDAwMDAwMDY1MTUyNTJhYjUzMDAxMzdmNjAwMzAwMDAwMDAwMDc1MzUxNjM1MzAwNjUwMDRjZGM4NjA1MDAwMDAwMDAwMzZhNTI2NTI0MWJmNTNlIiwgImFjYWIiLCAwLCA2MjEwOTA2MjEsICI3NzFkNGQ4N2YxNTkxYTEzZDc3ZTUxODU4YzE2ZDc4ZjE5NTY3MTJmZTA5YTQ2ZmYxYWJjYWJiYzFlN2FmNzExIl0sCglbImZmMWFlMzcxMDMzOTcyNDVhYzBmYTFjMTE1YjA3OWZhMjA5MzA3NTdmNWI2NjIzZGIzNTc5Y2I3NjYzMzEzYzJkYzRhM2ZmZGIzMDAwMDAwMDAwNzYzNTM2NTZhMDAwMDUzZmZmZmZmZmY4M2M1OWUzOGU1YWQ5MTIxNmVlMWEzMTJkMTViNDI2N2JhZTJkZDJlNTdkMWEzZmQ1YzJmMGY4MDllZWI1ZDQ2MDEwMDAwMDAwODAwYWJhYjZhNmE1M2FiNTFmZmZmZmZmZjlkNWU3MDZjMDMyYzFlMGNhNzU5MTVmOGM2Njg2ZjY0ZWM5OTVlYmNkMjUzOTUwOGI3ZGQ4YWJjM2U0ZDdkMmEwMTAwMDAwMDAwNmIyYmRjZGEwMmE4ZmUwNzA1MDAwMDAwMDAwNDUyNTMwMDAwMTllMzFkMDQwMDAwMDAwMDA3MDBhYjYzYWNhYjUyNmEwMDAwMDAwMCIsICI1MzY1NmFhYjZhNTI1MjUxIiwgMCwgODgxOTM4ODcyLCAiNzI2YmI4OGNkZjNhZjJmNzYwM2EzMWYzM2QyNjEyNTYyMzA2ZDA4OTcyYTQ0MTJhNTVkYmJjMGUzMzYzNzIxYyJdLAoJWyJmZjU0MDBkZDAyZmVjNWJlYjlhMzk2ZTFjYmVkYzgyYmVkYWUwOWVkNDRiYWU2MGJhOWJlZjJmZjM3NWE2ODU4MjEyNDc4ODQ0YjAzMDAwMDAwMDI1MjUzZmZmZmZmZmYwMWU0NmMyMDM1NzdhNzlkMTE3MmRiNzE1ZTljYzYzMTZiOWNmYzU5YjVlNWU0ZDkxOTlmZWYyMDFjNmY5ZjBmMDAwMDAwMDAwOTAwYWI2NTUyNjU2YTUxNjVhY2ZmZmZmZmZmMDJlOGNlNjIwNDAwMDAwMDAwMDI1MTUzMTJjZTNlMDAwMDAwMDAwMDAyNTE1MTNmMTE5MzE2IiwgIiIsIDAsIDE1NDE1ODE2NjcsICIxZTBkYTQ3ZWVkYmJiMzgxYjBlMGRlYmJiNzZlMTI4ZDA0MmUwMmU2NWIxMTEyNWUxN2ZkMTI3MzA1ZmM2NWNkIl0sCglbIjI4ZTNkYWE2MDNjMDM2MjZhZDkxZmZkMGZmOTI3YTEyNmUyOGQyOWRiNTAxMjU4OGI4MjlhMDZhNjUyZWE0YThhNTczMjQwNzAzMDIwMDAwMDAwNGFiNjU1MmFjZmZmZmZmZmY4ZTY0MzE0NmQzZDA1NjhmYzJhZDg1NGZkNzg2NGQ0M2Y2ZjE2Yjg0ZTM5NWRiODJiNzM5ZjZmNWM4NGQ5N2I0MDAwMDAwMDAwNDUxNTE2NTUyNmIwMWMyZGMxNDY5ZGIwMTk4YmQ4ODRlOTVkOGYyOTA1NmM0OGQ3ZTc0ZmY5ZmQzN2E5ZGVjNTNlNDRiODc2OWE2Yzk5YzAzMDIwMDAwMDAwOWFiMDA2YTUxNmE1MzYzMDA2NWVlYTg3Mzg5MDEwMDIzOTgwMDAwMDAwMDAwMDdhYzUzNjM1MTZhNTFhYmVhZWYxMmY1IiwgIjUyYWI1MjUxNTI1M2FiIiwgMiwgMTY4NzM5MDQ2MywgIjU1NTkxMzQ2YWVjNjUyOTgwODg1YTU1OGNjNWZjMmUzZjhkMjFjYmQwOWYzMTRhNzk4ZTVhN2VhZDUxMTNlYTYiXSwKCVsiYjU0YmY1YWMwNDNiNjJlOTc4MTdhYmI4OTI4OTIyNjkyMzFiOWIyMjBiYTA4YmM4ZGJjNTcwOTM3Y2QxZWE3Y2RjMTNkOTY3NmMwMTAwMDAwMDA0NTFhYjUzNjVhMTBhZGI3YjM1MTg5ZTFlOGMwMGI4NjI1MGY3NjkzMTk2NjgxODliNzk5M2Q2YmRhYzAxMjgwMGYxNzQ5MTUwNDE1YjJkZWIwMjAwMDAwMDAzNjU1MzAwZmZmZmZmZmY2MGI5ZjRmYjlhN2UxNzA2OWZkMDA0MTZkNDIxZjgwNGUyZWYyZjJjNjdkZTRjYTA0ZTAyNDFiOWY5YzFjYzVkMDIwMDAwMDAwM2FiNmFhY2ZmZmZmZmZmZjA0ODE2ODQ2MWNjZTFkNDA2MDFiNDJmYmM1YzRmOTA0YWNlMGQzNTY1NGI3Y2MxOTM3Y2NmNTNmZTc4NTA1YTAxMDAwMDAwMDg1MjY1NjM1MjUyNjVhYmFjZmZmZmZmZmYwMWRiZjRlNjA0MDAwMDAwMDAwN2FjYWM2NTY1NTM2MzY1MDAwMDAwMDAiLCAiNjMiLCAyLCA4ODIzMDIwNzcsICJmNWIzOGIwZjA2ZTI0NmU0N2NlNjIyZTVlZTI3ZDU1MTJjNTA5ZjhhYzBlMzk2NTFiMzM4OTgxNWVmZjJhYjkzIl0sCglbImViZjYyOGIzMDM2MGJhYjNmYTRmNDdjZTllMGRjYmU5Y2VhZjY2NzUzNTBlNjM4YmFmZjBjMmMxOTdiMjQxOWY4ZTRmYjE3ZTE2MDAwMDAwMDAwNDUyNTE2MzY1YWM0ZDkwOWE3OWJlMjA3YzZlNWZiNDRmYmUzNDhhY2M0MmZjN2ZlN2VmMWQwYmFhMGU0NzcxYTNjNGE2ZWZkZDdlMmMxMThiMDEwMDAwMDAwM2FjYWNhY2ZmZmZmZmZmYTYxNjZlOTEwMWYwMzk3NTcyMWEzMDY3ZjE2MzZjYzM5MGQ3MjYxN2JlNzJlNWMzYzRmNzMwNTcwMDRlZTBlZTAxMDAwMDAwMDg2MzYzNmE2YTUxNmE1MjUyYzFiMWU4MjEwMmQ4ZDU0NTAwMDAwMDAwMDAwMTUzMzI0YzkwMDQwMDAwMDAwMDAxNTMwODM4NDkxMyIsICIwMDYzNTE2YTUxIiwgMSwgLTE2NTg0MjgzNjcsICJlYjJkOGRlYTM4ZTkxNzVkNGQzM2RmNDFmNDA4N2M2ZmVhMDM4YTcxNTcyZTNiYWQxZWExNjYzNTNiZjIyMTg0Il0sCglbImQ2YTg1MDAzMDNmMTUwN2IxMjIxYTkxYWRiNjQ2MmZiNjJkNzQxYjMwNTJlNWU3Njg0ZWE3Y2QwNjFhNWZjMGIwZTkzNTQ5ZmE1MDEwMDAwMDAwNGFjYWI2NWFjZmZmZmZmZmZmZGVjNzliZjdlMTM5YzQyOGM3Y2ZkNGIzNTQzNWFlOTQzMzYzNjdjN2I1ZTFmOGU5ODI2ZmNiMGViYWFhZWEzMDMwMDAwMDAwMGZmZmZmZmZmZDExNWZkYzAwNzEzZDUyYzM1ZWE5MjgwNTQxNGJkNTdkMWU1OWQwZTZkM2I3OWE3N2VlMThhMzIyODI3OGFkYTAyMDAwMDAwMDQ1MzAwNTE1MWZmZmZmZmZmMDQwMjMxNTEwMzAwMDAwMDAwMDg1MTAwYWM2YTZhMDAwMDYzYzYwNDFjMDQwMDAwMDAwMDA4MDAwMDUzNmE2NTYzYWNhYzEzOGEwYjA0MDAwMDAwMDAwMjYzYWJkMjVmYmUwMzAwMDAwMDAwMDkwMDY1NmEwMDY1NmFhYzUxMDAwMDAwMDAwMCIsICJhYzUyNmFhYzZhMDAiLCAxLCAtMjAwNzk3MjU5MSwgIjEzZDEyYTUxNTk4YjM0ODUxZTcwNjZjZDkzYWI4YzUyMTJkNjBjNmVkMmRhZTA5ZDkxNjcyYzEwY2NkN2Y4N2MiXSwKCVsiNjU4Y2IxYzEwNDk1NjRlNzI4MjkxYTU2ZmE3OTk4N2E0ZWQzMTQ2Nzc1ZmNlMDc4YmQyZTg3NWQxYTVjYTgzYmFmNjE2NmE4MjMwMjAwMDAwMDA1NmE2NTYzNTFhYjIxNzBlN2QwODI2Y2JkYjQ1ZmRhMDQ1N2NhNzY4OTc0NWZkNzA1NDFlMjEzN2JiNGY1MmU3YjQzMmRjZmUyMTEyODA3YmQ3MjAzMDAwMDAwMDcwMDZhMDA1MjUzNjM1MWZmZmZmZmZmODcxNWNhMjk3NzY5NmFiZjg2ZDQzM2Q1YzkyMGVmMjY5NzRmNTBlOWY0YTIwYzU4NGZlY2JiNjhlNTMwYWY1MTAxMDAwMDAwMDA5ZTQ5ZDg2NDE1NWJmMWQzYzc1NzE4NmQyOWYzMzg4ZmQ4OWM3ZjU1Y2M0ZDkxNThiNGNmNzRjYTI3YTM1YTFkZDkzZjk0NTUwMjAwMDAwMDA5NmE1MzUzNTNhYzY1NjM1MTUxMGQyOWZhODcwMjMwYjgwOTA0MDAwMDAwMDAwNmFiNmE2YTUyNmE2MzNiNDFkYTA1MDAwMDAwMDAwNGFiNmE2YTY1ZWQ2M2JmNjIiLCAiNTJhY2FiYWMiLCAyLCAtMTc3NDA3MzI4MSwgIjUzYWIxOTdmYTdlMjdiOGEzZjk5ZmY0ODMwNWU2NzA4MWViOTBlOTVkODlkN2U5MmQ4MGNlZTI1YTAzYTY2ODkiXSwKCVsiZTkyNDkyY2MwMWFlYzRlNjJkZjY3ZWEzYmM2NDVlMmUzZjYwMzY0NWIzYzViMzUzZTRhZTk2N2I1NjJkMjNkNmUwNDNiYWRlY2QwMTAwMDAwMDAzYWNhYjY1ZmZmZmZmZmYwMmM3ZTVlYTA0MDAwMDAwMDAwMmFiNTJlMWU1ODQwMTAwMDAwMDAwMDU1MzYzNjU1MTUxOTVkMTYwNDciLCAiNjU1MSIsIDAsIC00MjQ5MzA1NTYsICI5M2MzNDYyN2Y1MjZkNzNmNGJlYTA0NDM5MmQxYTk5Nzc2YjQ0MDlmN2QzZDgzNWYyM2IwM2MzNThmNWE2MWMyIl0sCglbIjAyZTI0MmRiMDRiZTJkOGNlZDkxNzk5NTdlOThjZWUzOTVkNDc2Nzk2NmY3MTQ0OGRkMDg0NDI2ODQ0Y2JjNmQxNWYyMTgyZTg1MDMwMDAwMDAwMjAwNjUwYzhmZmNlM2RiOWRlOWMzZjljZGI5MTA0YzdjYjI2NjQ3YTc1MzFhZDFlYmY3NTkxYzI1OWE5Yzk5ODU1MDNiZTUwZjhkZTMwMDAwMDAwMDA3YWM2YTUxNjM2YTYzNTNmZmZmZmZmZmEyZTMzZTdmZjA2ZmQ2NDY5OTg3ZGRmOGE2MjY4NTNkYmYzMGMwMTcxOWVmYjI1OWFlNzY4ZjA1MWY4MDNjZDMwMzAwMDAwMDAwZmZmZmZmZmZmZDY5ZDhhZWFkOTQxNjgzY2EwYjFlZTIzNWQwOWVhZGU5NjBlMGIxZGYzY2Q5OWY4NTBhZmMwYWYxYjczZTA3MDMwMDAwMDAwMWFiNjBiYjYwMmEwMTE2NTk2NzAxMDAwMDAwMDAwNzYzNjM1MjYzMDBhY2FjMDAwMDAwMDAiLCAiNjM1M2FiNTE1MjUxIiwgMywgMTQ1MTEwMDU1MiwgImJiYzkwNjliODYxNWYzYTUyYWM4YTc3MzU5MDk4ZGNjNmMxYmE4OGM4MzcyZDVkNWZlMDgwYjk5ZWI3ODFlNTUiXSwKCVsiYjI4ZDVmNWUwMTVhN2YyNGQ1ZjllN2IwNGE4M2NkMDcyNzdkNDUyZTg5OGY3OGI1MGFhZTQ1MzkzZGZiODdmOTRhMjZlZjU3NzIwMjAwMDAwMDA4YWJhYmFjNjMwMDUzYWM1MmZmZmZmZmZmMDQ2NDc1ZWQwNDAwMDAwMDAwMDhhYjUxMDA1MjYzNjNhYzY1Yzk4MzRhMDQwMDAwMDAwMDAyNTFhYmFlMjZiMzAxMDAwMDAwMDAwNDAwMDBhYzY1Y2VlZmI5MDAwMDAwMDAwMDAwMDAwMDAwMDAiLCAiYWM2NTUxYWM2YTUzNjU1MyIsIDAsIC0xNzU2NTU4MTg4LCAiNTg0OGQ5MzQ5MTA0NGQ3ZjIxODg0ZWVmN2EyNDRmZTdkMzg4ODZmOGFlNjBkZjQ5Y2UwZGZiMmEzNDJjZDUxYSJdLAoJWyJlZmI4YjA5ODAxZjY0NzU1M2I5MTkyMmE1ODc0ZjhlNGJiMmVkOGRkYjM1MzZlZDJkMmVkMDY5OGZhYzVlMGUzYTI5ODAxMjM5MTAzMDAwMDAwMDk1MmFjMDA1MjYzYWM1MjAwNmFmZmZmZmZmZjA0Y2RmYTBmMDUwMDAwMDAwMDA3YWM1M2FiNTFhYmFjNjViNjhkMWIwMjAwMDAwMDAwMDU1M2FiNjVhYzAwZDA1N2Q1MDAwMDAwMDAwMDAxNmE5ZTFmZGEwMTAwMDAwMDAwMDdhYzYzYWM1MzY1NTJhYzAwMDAwMDAwIiwgIjZhYWMiLCAwLCAxOTQ3MzIyOTczLCAiNjAzYTliNjFjZDMwZmNlYTQzZWYwYTVjMThiODhjYTM3MjY5MGI5NzFiMzc5ZWU5ZTAxOTA5YzMzNjI4MDUxMSJdLAoJWyI2OGE1OWZiOTAxYzIxOTQ2Nzk3ZTdkMDdhNGEzZWE4Njk3OGNlNDNkZjA0Nzk4NjBkNzExNmFjNTE0YmE5NTU0NjBiYWU3OGZmZjAwMDAwMDAwMDFhYmZmZmZmZmZmMDM5NzliZTgwMTAwMDAwMDAwMDM2NTUzNjM5MzAwYmMwNDAwMDAwMDAwMDgwMDY1NTIwMDZhNjU2NTY1Y2ZhNzhkMDAwMDAwMDAwMDA3NjU1MmFjYWI2M2FiNTEwMDAwMDAwMCIsICJhYjY1YWIiLCAwLCA5OTU1ODM2NzMsICIzYjMyMGRkNDdmMjcwMjQ1MmE0OWExMjg4YmRjNzRhMTlhNGI4NDliMTMyYjZjYWQ5YTFkOTQ1ZDg3ZGZiYjIzIl0sCglbIjY3NzYxZjJhMDE0YTE2ZjM5NDBkY2IxNGEyMmJhNWRjMDU3ZmNmZmRjZDJjZjYxNTBiMDFkNTE2YmUwMGVmNTVlZjdlYjA3YTgzMDEwMDAwMDAwNDYzNmE2YTUxZmZmZmZmZmYwMWFmNjdiZDA1MDAwMDAwMDAwODUyNjU1MzUyNjMwMDUxMDAwMDAwMDAwMCIsICI2YTAwIiwgMCwgMTU3MDk0MzY3NiwgIjA3OWZhNjJlOWQ5ZDc2NTRkYThiNzRiMDY1ZGEzMTU0ZjNlNjNjMzE1ZjI1NzUxYjRkODk2NzMzYTFkNjc4MDciXSwKCVsiZTIwZmU5NjMwMjQ5NmViNDM2ZWVlOThjZDVhMzJlMWM0OWYyYTM3OWNlYjcxYWRhOGE0OGM1MzgyZGY3YzhjZDg4YmRjNDdjZWQwMzAwMDAwMDAxNjU1NmFhMGUxODA2NjA5MjVhODQxYjQ1N2FlZDBhYWU0N2ZjYTJhOTJmYTFkN2FmZWRhNjQ3YWJmNjcxOThhMzkwMmE3YzgwZGQwMDAwMDAwMDA4NTE1MmFjNjM2YTUzNTI2NWJkMTgzMzVlMDE4MDNjODEwMTAwMDAwMDAwMDQ2NTAwYWM1MmYzNzEwMjVlIiwgIjYzNjNhYiIsIDEsIC02NTEyNTQyMTgsICIyOTIxYTBlNWUzYmE4M2M1N2JhNTdjMjU1NjkzODBjMTc5ODZiZjM0YzM2NmVjMjE2ZDQxODhkNWJhOGIwYjQ3Il0sCglbIjRlMWJkOWZhMDExZmU3YWExNGVlZThlNzhmMjdjOWZkZTUxMjdmOTlmNTNkODZiYzY3YmRhYjIzY2E4OTAxMDU0ZWU4YThiNmViMDMwMDAwMDAwOWFjNTM1MTUzMDA2YTZhMDA2M2ZmZmZmZmZmMDQ0MjMzNjcwNTAwMDAwMDAwMDAwYTY2NzIwNTAwMDAwMDAwMDY1MmFiNjM2YTUxYWJlNWJmMzUwMzAwMDAwMDAwMDM1MzUzNTFkNTc5ZTUwNTAwMDAwMDAwMDcwMDYzMDA2NWFiNTFhYzM0MTlhYzMwIiwgIjUyYWJhYzUyIiwgMCwgLTE4MDc1NjM2ODAsICI0YWFlNjY0OGY4NTY5OTRiZWQyNTJkMzE5OTMyZDc4ZGI1NWRhNTBkMzJiOTAwODIxNmQ1MzY2YjQ0YmZkZjhhIl0sCglbImVjMDJmYmVlMDMxMjBkMDJmZGUxMjU3NDY0OTY2MGM0NDFiNDBkMzMwNDM5MTgzNDMwYzZmZWI0MDQwNjRkNGY1MDdlNzA0ZjNjMDEwMDAwMDAwMGZmZmZmZmZmZTEwOGQ5OWM3YTRlNWY3NWNjMzVjMDVkZWJiNjE1ZDUyZmFjNmUzMjQwYTY5NjRhMjljMTcwNGQ5ODAxN2ZiNjAyMDAwMDAwMDJhYjYzZmZmZmZmZmZmNzI2ZWM4OTAwMzg5NzdhZGZjOWRhZGJlYWY1ZTQ4NmQ1ZmNiNjVkYzIzYWNmZjBkZDkwYjYxYjhlMjc3MzQxMDAwMDAwMDAwMmFjNjVlOWRhY2U1NTAxMGY4ODFiMDEwMDAwMDAwMDA1YWMwMGFiNjUwMDAwMDAwMDAwIiwgIjUxYWM1MjUxNTJhYzY1NTIiLCAyLCAtMTU2NDA0NjAyMCwgIjNmOTg4OTIyZDhjZDExYzdhZGZmMWE4M2NlOTQ5OTAxOWU1YWI1ZjQyNDc1MmQ4ZDM2MWNmMTc2MmUwNDI2OWIiXSwKCVsiMjNkYmRjYzEwMzljOTliZjExOTM4ZDhlM2NjZWM1M2I2MGM2YzFkMTBjOGViNmMzMTE5N2Q2MmM2YzRlMmFmMTdmNTIxMTVjM2EwMzAwMDAwMDA4NjM2MzUyMDAwMDYzYWJhYmZmZmZmZmZmMTc4MjM4ODBlMWRmOTNlNjNhZDk4YzI5YmZhYzEyZTM2ZWZkNjAyNTQzNDZjYWM5ZDNmOGFkYTAyMGFmYzA2MjAzMDAwMDAwMDNhYjYzNjMxYzI2ZjAwMmFjNjZlODZjZDIyYTI1ZTNlZDNjYjM5ZDk4MmY0N2M1MTE4ZjAzMjUzMDU0ODQyZGFhZGM4OGE2YzQxYTJlMTUwMDAwMDAwMDA5NmEwMGFiNjM2YTUzNjM1MTYzMTk1MzE0ZGUwMTU1NzBmZDAxMDAwMDAwMDAwOTZhNTI2M2FjYWI1MjAwMDA1MzAwMDAwMDAwIiwgImFiYWJhYzZhNjU1MyIsIDEsIDExNTg2MzI5LCAiYmQzNmE1MGUwZTBhNGVjYmYyNzA5ZTY4ZGFlZjQxZWRkYzFjMGM5NzY5ZWZhZWU1NzkxMGU5OWMwYTFkMTM0MyJdLAoJWyIzM2IwM2JmMDAyMjJjN2NhMzVjMmY4ODcwYmJkZWYyYTU0M2I3MDY3N2U0MTNjZTUwNDk0YWM5YjIyZWE2NzMyODdiNmFhNTVjNTAwMDAwMDAwMDVhYjAwMDA2YTUyZWU0ZDk3YjUyN2ViMGI0MjdlNDUxNGVhNGE3NmM4MWU2OGMzNDkwMGEyMzgzOGQzZTU3ZDBlZGI1NDEwZTYyZWViOGM5MmI2MDAwMDAwMDAwNTUzYWM2YWFjYWM0MmU1OWUxNzAzMjYyNDVjMDAwMDAwMDAwMDA5NjU2NTUzNTM2YWFiNTE2YWFiYjFhMTA2MDMwMDAwMDAwMDA4NTJhYjUyYWI2YTUxNjUwMGNjODljODAyMDAwMDAwMDAwNzYzYWM2YTYzYWM1MTYzMDAwMDAwMDAiLCAiIiwgMCwgNTU3NDE2NTU2LCAiNDFiZWFkMWIwNzNlMWU5ZmVlMDY1ZGQ2MTJhNjE3Y2EwNjg5ZThmOWQzZmVkOWQwYWNmYTk3Mzk4ZWJiNDA0YyJdLAoJWyI4MTNlZGExMTAzYWM4MTU5ODUwYjQ1MjRlZjY1ZTQ2NDRlMGZjMzBlZmU1N2E1ZGIwYzAzNjVhMzA0NDZkNTE4ZDliOWFhOGZkZDAwMDAwMDAwMDM2NTY1NjVjMmYxZTg5NDQ4YjM3NGI4ZjEyMDU1NTU3OTI3ZDViMzMzMzljNTIyMjhmNzEwODIyODE0OTkyMGUwYjc3ZWYwYmNkNjlkYTYwMDAwMDAwMDA2YWJhYzAwYWI2M2FiODJjZGI3OTc4ZDI4NjMwYzVlMWRjNjMwZjMzMmM0MjQ1NTgxZjc4NzkzNmYwYjFlODRkMzhkMzM4OTIxNDE5NzRjNzViNDc1MDMwMDAwMDAwNGFjNTNhYjY1ZmZmZmZmZmYwMTM3ZWRmYjAyMDAwMDAwMDAwMDAwMDAwMDAwIiwgIjAwNjMiLCAxLCAtMTk0ODU2MDU3NSwgIjcxZGZjZDJlYjdmMmU2NDczYWVkNDdiMTZhNmQ1ZmNiZDBhZjIyODEzZDg5MmU5NzY1MDIzMTUxZTA3NzcxZWMiXSwKCVsiOWU0NWQ5YWEwMjQ4YzE2ZGJkN2Y0MzVlOGM1NGFlMWFkMDg2ZGU1MGM3YjI1Nzk1YTcwNGYzZDhlNDVlMTg4NjM4NmM2NTNmYmYwMTAwMDAwMDAyNTM1MmZiNGExYWNlZmRkMjc3NDdiNjBkMWZiNzliOTZkMTRmYjg4NzcwYzc1ZTBkYTk0MWI3ODAzYTUxM2U2ZDRjOTA4YzY0NDVjNzAxMDAwMDAwMDE2M2ZmZmZmZmZmMDE0MDY5YTgwMTAwMDAwMDAwMDE1MjBhNzk0ZmIzIiwgIjUxYWMwMDUzNjMiLCAxLCAtNzE5MTEzMjg0LCAiMGQzMWEyMjFjNjliZDMyMmVmNzE5M2RkNzM1OWRkZmVmZWM5ZTBhMTUyMWQ0YTg3NDAzMjZkNDZlNDRhNWQ2YSJdLAoJWyIzNmU0MjAxODA0NDY1MjI4NmIxOWE5MGU1ZGQ0ZjhkOWYzNjFkMDc2MGQwODBjNWM1YWRkMTk3MDI5NmZmMGYxZGU2MzAyMzNjODAxMDAwMDAwMDIwMGFjMzkyNjBjNzYwNjAxN2QyMjQ2ZWUxNGRkYjc2MTE1ODYxNzgwNjdlNmE0YmUzOGU3ODhlMzNmMzlhM2E5NWE1NWExM2E2Nzc1MDEwMDAwMDAwMzUyYWM2MzhiZWE3ODRmN2MyMzU0ZWQwMmVhMGI5M2YwMjQwY2RmYjkxNzk2ZmE3NzY0OWJlZWU2ZjcwMjdjYWE3MDc3OGIwOTFkZWVlNzAwMDAwMDAwMDY2YTY1YWM2NTYzNjNmZmZmZmZmZjRkOWQ3N2FiNjc2ZDcxMTI2N2VmNjUzNjNmMmQxOTJlMWJkNTVkM2NkMzdmMjI4MGEzNGM3MmU4YjRjNTU5ZDcwMDAwMDAwMDA1NmEwMDZhYWIwMDAwMTc2NGUxMDIwZDMwMjIwMTAwMDAwMDAwMDg1MjUyNTE2YWFjYWIwMDUzNDcyMDk3MDQwMDAwMDAwMDA5NjM1MzUzYWI2YTYzNmE1MTAwYTU2NDA3YTEiLCAiMDA2YTUzNjU1MWFiNTNhYiIsIDAsIDgyNzI5NjAzNCwgImRhZWMyYWY1NjIyYmJlMjIwYzc2MmRhNzdiYWIxNGRjNzVlN2QyOGFhMWFkZTliN2YxMDA3OThmN2YwZmQ5N2EiXSwKCVsiNWUwNjE1OWEwMjc2MmI1ZjNhNWVkY2RmYzkxZmQ4OGMzYmZmMDhiMjAyZTY5ZWI1YmE3NDc0M2U5ZjQyOTFjNDA1OWFiMDA4MjAwMDAwMDAwMDAxYWMzNDhmNTQ0NmJiMDY5ZWY5NzdmODlkYmU5MjU3OTVkNTlmYjVkOTg1NjI2NzliYWZkNjFmNWY1ZjMxNTBjMzU1OTU4Mjk5MmQwMDAwMDAwMDA4YWI1MTY1NTE1MzUzYWJhYzc2MmZjNjc3MDM4NDdlYzYwMTAwMDAwMDAwMDBlMjAwY2YwNDAwMDAwMDAwMDJhYmFjYTY0Yjg2MDEwMDAwMDAwMDA4NTIwMDAwNTE1MzYzYWNhYmI4MmI0OTFiIiwgImFiNTM1MjUzNTJhYjZhIiwgMCwgLTYxODE5NTA1LCAiNzVhN2RiMGRmNDE0ODVhMjhiZjZhNzdhMzdjYTE1ZmE4ZWNjYzk1YjVkNjAxNGE3MzFmZDhhZGI5YWRhMGYxMiJdLAoJWyJhMTk0ODg3MjAxM2I1NDNkNmQ5MDJjY2RlZWFkMjMxYzU4NTE5NTIxNGNjZjVkMzlmMTM2MDIzODU1OTU4NDM2YTQzMjY2OTExNTAxMDAwMDAwMDg2YWFjMDA2YTZhNmE1MTUxNDk1MWM5YjIwMzhhNTM4YTA0MDAwMDAwMDAwNDUyNTI2NTYzYzBmMzQ1MDUwMDAwMDAwMDA3NTI2YTUyNTJhYzUyNmFmOWJlOGUwMzAwMDAwMDAwMDc1MmFjYWM1MWFiMDA2MzA2MTk4ZGIyIiwgImFiNjM1MyIsIDAsIC0zMjYzODQwNzYsICJjZWQ3ZWY4NGFhZDQwOTdlMWViOTYzMTBlMGQxYzhlNTEyY2ZjYjM5MmEwMWQ5MDEwNzEzNDU5YjIzYmMwY2Y0Il0sCglbImMzZWZhYmJhMDNjYjY1NmYxNTRkMWUxNTlhYTRhMWE0YmY5NDIzYTUwNDU0ZWJjZWYwN2JjM2M0MmEzNWZiOGFkODQwMTQ4NjRkMDAwMDAwMDAwMGQxY2M3M2QyNjA5ODA3NzU2NTBjYWEyNzJlOTEwM2RjNjQwOGJkYWNhZGRhZGE2YjljNjdjODhjZWJhNmFiYWE5Y2FhMmY3ZDAyMDAwMDAwMDU1MzUzNmE1MjY1ZmZmZmZmZmY5Zjk0NmU4MTc2ZDliMTFmZjg1NGI3NmVmY2NhMGE0YzIzNmQyOWI2OWZiNjQ1YmEyOWQ0MDY0ODA0Mjc0MzhlMDEwMDAwMDAwNjZhMDA2NTAwNTMwMGZmZmZmZmZmMDQwNDE5YzAwMTAwMDAwMDAwMDNhYjZhNjNjZGI1YjYwMTAwMDAwMDAwMDkwMDYzMDBhYjUzNTI2NTZhNjNmOWZlNWUwNTAwMDAwMDAwMDRhY2FjNTM1MjYxMWI5ODAxMDAwMDAwMDAwODZhMDBhY2FjMDAwMDZhNTEyZDdmMGM0MCIsICIwMDUzIiwgMCwgLTU5MDg5OTExLCAiYzUwMzAwMWMxNmZiZmY4MmE5OWExOGQ4OGZlMTg3MjBhZjYzNjU2ZmNjZDg1MTFiY2ExYzNkMGQ2OWJkN2ZjMCJdLAoJWyJlZmI1NWMyZTA0YjIxYTBjMjVlMGUyOWY2NTg2YmU5ZWYwOWYyMDA4Mzg5ZTUyNTdlYmYyZjUyNTEwNTFjZGM2YTc5ZmNlMmRhYzAyMDAwMDAwMDM1MTAwNmFmZmZmZmZmZmFiYTczZTViNmU2YzYyMDQ4YmE1Njc2ZDE4YzMzY2NiY2I1OTg2NjQ3MGJiNzkxMWNjYWZiMjIzOGNmZDQ5MzgwMjAwMDAwMDAyNjU2M2ZmZmZmZmZmZTYyZDdjYjg2NThhNmVjYThhOGJhYmViMGYxZjRmYTUzNWI2MmY1ZmMwZWM3MGViMDExMTE3NGU3MmJiZWM1ZTAzMDAwMDAwMDlhYmFiYWJhYzUxNjM2NTUyNmFmZmZmZmZmZmJmNTY4Nzg5ZTY4MTAzMmQzZTNiZTc2MTY0MmYyNWU0NmMyMDMyMmZhODAzNDZjMTE0NmNiNDdhYzk5OWNmMWIwMzAwMDAwMDAwYjNkYmQ1NTkwMjUyODgyODAxMDAwMDAwMDAwMWFiMGFhYzdiMDEwMDAwMDAwMDAxNTMwMDAwMDAwMCIsICJhY2FjNTIiLCAzLCAxNjM4MTQwNTM1LCAiZTg0NDQ0ZDkxNTgwZGE0MWM4YTdkY2Y2ZDMyMjI5YmIxMDZmMWJlMGM4MTFiMjI5Mjk2N2VhZDVhOTZjZTlkNCJdLAoJWyI5MWQzYjIxOTAzNjI5MjA5Yjg3N2IzZTFhZWYwOWNkNTlhY2E2YTVhMGRiOWI4M2U2YjM0NzJhY2VlYzNiYzIxMDllNjRhYjg1YTAyMDAwMDAwMDM1MzAwNjVmZmZmZmZmZmNhNWY5MmRlMmYxYjdkODQ3OGI4MjYxZWFmMzJlNTY1NmI5ZWFiYmM1OGRjYjIzNDU5MTJlOTA3OWEzM2M0Y2QwMTAwMDAwMDA3MDBhYjY1YWIwMDUzNmFkNTMwNjExZGE0MWJiZDUxYTM4OTc4OGM0NjY3OGEyNjVmZTg1NzM3YjhkMzE3YTgzYThmZjdhODM5ZGViZDE4ODkyYWU1YzgwMzAwMDAwMDA3YWI2YWFjNjVhYjUxMDA4Yjg2YzUwMTAzOGI4YTlhMDUwMDAwMDAwMDAyNjM1MjViM2Y3YTA0MDAwMDAwMDAwN2FiNTM1MzUzYWIwMGFiZDRlM2ZmMDQwMDAwMDAwMDA2NjVhYzUxYWI2NTYzMGI3YjY1NmYiLCAiNjU1MTUyNTE1MTUxNmEwMCIsIDIsIDQ5OTY1NzkyNywgImVmNGJkNzYyMmViN2IyYmJiYmRjNDg2NjNjMWJjOTBlMDFkNWJkZTkwZmY0Y2I5NDY1OTZmNzgxZWI0MjBhMGMiXSwKCVsiNWQ1YzQxYWQwMzE3YWE3ZTQwYTUxM2Y1MTQxYWQ1ZmM2ZTE3ZDM5MTZlZWJlZTRkZGI0MDBkZGFiNTk2MTc1YjQxYTExMWVhZDIwMTAwMDAwMDA1NTM2YTUyNjVhY2ZmZmZmZmZmOTAwZWNiNWUzNTVjNWM5ZjI3OGMyYzZlYTE1YWMxNTU4YjA0MTczOGU0YmZmZTVhZTA2YTkzNDZkNjZkNWIyYjAwMDAwMDAwMDgwMDAwYWI2MzZhNjVhYjZhZmZmZmZmZmY5OWY0ZTA4MzA1ZmE1YmQ4ZTM4ZmI5Y2ExOGI3M2Y3YTMzYzYxZmY3YjNjNjhlNjk2YjMwYTA0ZmVhODdmM2NhMDAwMDAwMDAwMTYzZDNkMTc2MGQwMTlmYzEzYTAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgImFiNTNhY2FiYWI2YWFjNmE1MiIsIDIsIDEwMDc0NjE5MjIsICI0MDEyZjVmZjJmMTIzOGEwZWI4NDg1NDA3NDY3MGI0NzAzMjM4ZWJjMTViZmNkY2Q0N2ZmYTg0OTgxMDVmY2Q5Il0sCglbImNlZWNmYTZjMDJiN2UzMzQ1NDQ1YjgyMjI2YjE1YjdhMDk3NTYzZmE3ZDE1ZjNiMGM5NzkyMzJiMTM4MTI0YjYyYzBiZTAwNzg5MDIwMDAwMDAwOWFiYWM1MTUzNmE2MzUyNTI1M2ZmZmZmZmZmYmFlNDgxY2NiNGYxNWQ5NGRiNWVjMGQ4ODU0YzI0YzFjYzg2NDJiZDBjNjMwMGVkZTk4YTkxY2ExM2E0NTM5YTAyMDAwMDAwMDFhYzUwYjA4MTNkMDIzMTEwZjUwMjAwMDAwMDAwMDZhY2FiYWM1MjY1NjNlMmIwZDAwNDAwMDAwMDAwMDk2NTZhYWMwMDYzNTE2YTUzNjMwMDAwMDAwMCIsICIwMDYzNTI2NTAwIiwgMCwgLTE4NjIwNTM4MjEsICJlMTYwMGU2ZGY4YTYxNjBhNzlhYzMyYWE0MGJiNDY0NGRhYTg4YjVmNzZjMGQ3ZDEzYmYwMDMzMjcyMjNmNzBjIl0sCglbImFlNjJkNWZkMDM4MGM0MDgzYTI2NjQyMTU5ZjUxYWYyNGJmNTVkYzY5MDA4ZTZiNzc2OTQ0MmI2YTY5YTYwM2VkZDk4MGEzMzAwMDAwMDAwMDAwNWFiNTEwMGFiNTNmZmZmZmZmZjQ5ZDA0ODMyNGQ4OTlkNGI4ZWQ1ZTczOWQ2MDRmNTgwNmExMTA0ZmVkZTRjYjlmOTJjYzgyNWE3ZmE3YjRiZmUwMjAwMDAwMDA1NTM2YTAwMDA1M2ZmZmZmZmZmNDJlNWNlYTU2NzNjNjUwODgxZDBiNDAwNWZhNDU1MGZkODZkZTVmMjE1MDljNDU2NGEzNzlhMGI3MjUyYWMwZTAwMDAwMDAwMDc1MzAwMDA1MjZhNTM1MjVmMjZhNjhhMDNiZmFjYzMwMTAwMDAwMDAwMDBlMjQ5NmYwMDAwMDAwMDAwMDlhYjUyNTNhY2FjNTI2MzY1NjNiMTFjYzYwMDAwMDAwMDAwMDcwMDUxMDA2NTUyNmE2YTAwMDAwMDAwIiwgImFiYWIiLCAxLCAtMTYwMDEwNDg1NiwgIjA1Y2YwZWM5YzYxZjFhMTVmNjUxYTBiM2M1YzIyMWFhNTQzNTUzY2U2YzgwNDU5M2Y0M2JiNWM1MGJiOTFmZmIiXSwKCVsiZjA2ZjY0YWYwNGZkY2I4MzA0NjRiNWVmZGIzZDVlZTI1ODY5YjA3NDQwMDUzNzU0ODFkN2I5ZDcxMzZhMGViODgyOGFkMWYwMjQwMjAwMDAwMDAzNTE2NTYzZmZmZmZmZmZmZDNiYTE5MmRhYmU5YzRlYjYzNGExZTMwNzlmY2E0ZjA3MmVlNWNlYjRiNTdkZWI2YWRlNTUyNzA1M2E5MmM1MDAwMDAwMDAwMTY1ZmZmZmZmZmYzOWY0MzQwMWEzNmJhMTNhNWM2ZGQ3ZjExOTBlNzkzOTMzYWUzMmVlM2JmM2U3YmZiOTY3YmU1MWU2ODFhZjc2MDMwMDAwMDAwOTY1MDAwMDUzNjU1MjYzNmE1MjhlMzRmNTBiMjExODM5NTJjYWQ5NDVhODNkNGQ1NjI5NGI1NTI1ODE4M2UxNjI3ZDZlOGZiM2JlYjg0NTdlYzM2Y2FkYjA2MzAwMDAwMDAwMDVhYmFiNTMwMDUyMzM0YTcxMjgwMTRiYmZkMTAxMDAwMDAwMDAwODUzNTJhYjAwNmE2MzY1NmFmYzQyNGE3YyIsICI1MzY1MDA1MTYzNTI1M2FjMDAiLCAyLCAzMTMyNTUwMDAsICJkMzA5ZGE1YWZkOTFiN2FmYTI1N2NmZDYyZGYzY2E5ZGYwMzZiNmE5ZjRiMzhmNTY5N2QxZGFhMWY1ODczMTJiIl0sCglbIjZkZmQyZjk4MDQ2YjA4ZTdlMmVmNWZmZjE1M2UwMDU0NWZhZjcwNzY2OTkwMTI5OTNjN2EzMGNiMWE1MGVjNTI4MjgxYTkwMjJmMDMwMDAwMDAwMTUyZmZmZmZmZmYxZjUzNWU0ODUxOTIwYjk2OGU2YzQzN2Q4NGQ2ZWNmNTg2OTg0ZWJkZGI3ZDVkYjZhZTAzNWJkMDJiYTIyMmE4MDEwMDAwMDAwNjUxMDA2YTUzYWI1MTYwNTA3MmFjYjNlMTc5MzlmYTA3MzdiYzNlZTQzYmMzOTNiNGFjZDU4NDUxZmM0ZmZlZWVkYzA2ZGY5ZmM2NDk4Mjg4MjJkNTAxMDAwMDAwMDI1MzUyNWE0OTU1MjIxNzE1ZjI3Nzg4ZDMwMjM4MjExMmNmNjA3MTliZTlhZTE1OWM1MWYzOTQ1MTliZDVmN2U3MGE0Zjk4MTZjNzAyMDIwMDAwMDAwOTUyNmE2YTUxNjM2YWFiNjU2YTM2ZDNhNWZmMDQ0NTU0OGUwMTAwMDAwMDAwMDg2YTZhMDA1MTZhNTI2NTUxNjcwMzBiMDUwMDAwMDAwMDA0YWM2YTYzNTI1Y2ZkYTgwMzAwMDAwMDAwMDBlMTU4MjAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwIiwgIjUzNTI2M2FjNmE2NTUxNTE1MyIsIDMsIDU4NTc3NDE2NiwgIjcyYjdkYTEwNzA0YzNjYTdkMWRlYjYwYzMxYjcxOGVlMTJjNzBkYzlkZmI5YWUzNDYxZWRjZTUwNzg5ZmUyYmEiXSwKCVsiMTg3ZWFmZWQwMTM4OWE0NWU3NWU5ZGRhNTI2ZDNhY2JiZDQxZTY0MTQ5MzZiMzM1NjQ3M2QxZjk3OTNkMTYxNjAzZWZkYjQ1NjcwMTAwMDAwMDAyYWIwMGZmZmZmZmZmMDQzNzFjODIwMjAwMDAwMDAwMDU2MzYzMDA2MzUyM2IzYmRlMDIwMDAwMDAwMDA3NTM1MTY1NjMwMDYzMDBlOWU3NjUwMTAwMDAwMDAwMDU1MTZhYWM2NTZhMzczZjk4MDUwMDAwMDAwMDA2NjU1MjUzNTJhY2FiMDhkNDY3NjMiLCAiYWIiLCAwLCAxMjI0NTc5OTIsICIzOTNhYTZjNzU4ZTBlZWQxNWZhNGFmNmQ5ZTJkN2M2M2Y0OTA1NzI0NmRiYjkyYjQyNjhlYzI0ZmM4NzMwMWNhIl0sCglbIjdkNTBiOTc3MDM1ZDUwNDExZDgxNGQyOTZkYTlmNzk2NWRkYzU2ZjMyNTA5NjFjYTViYTgwNWNhZGQwNDU0ZTdjNTIxZTMxYjAzMDAwMDAwMDAwMDNkMDQxNmMyY2YxMTVhMzk3YmFjZjYxNTMzOWYwZTU0ZjZjMzVmZmVjOTVhYTAwOTI4NGQzODM5MGJkZGUxNTk1Y2M3YWE3YzAxMDAwMDAwMDVhYjUyYWM1MzY1ZmZmZmZmZmY0MjMyYzZlNzk2NTQ0ZDVhYzg0OGM5ZGM4ZDI1Y2ZhNzRlMzJlODQ3YTVmYzc0Yzc0ZDhmMzhjYTUxMTg4NTYyMDMwMDAwMDAwNjUzYWM1MTAwNmE1MWZmZmZmZmZmMDE2YmQ4YmIwMDAwMDAwMDAwMDQ2NWFiNTI1MzE2MzUyNmYzIiwgIjUxYWI1MjZhMDAwMDUzNTMiLCAxLCAtMTMxMTMxNjc4NSwgIjYwYjc1NDQzMTliNDJlNDE1OTk3NmMzNWMzMmMyNjQ0ZjBhZGY0MmVmZjEzYmUxZGMyZjcyNmZjMGI2YmI0OTIiXSwKCVsiMmE0NWNkMTAwMWJmNjQyYTIzMTVkNGE0MjdlZGRjYzFlMmIwMjA5YjFjNmFiZDJkYjgxYTgwMGM1ZjFhZjMyODEyZGU0MjAzMjcwMjAwMDAwMDA1MDA1MTUyNTIwMGZmZmZmZmZmMDMyMTc3ZGIwNTAwMDAwMDAwMDU1MzAwNTFhYmFjNDkxODZmMDAwMDAwMDAwMDA0YWI2YWFiMDA2NDVjMDAwMDAwMDAwMDAwMDc2NTY1NTI2M2FjYWJhYzAwMDAwMDAwIiwgIjZhNjUiLCAwLCAtMTc3NDcxNTcyMiwgIjZhOWFjM2Y3ZGE0Yzc3MzVmYmM5MWY3MjhiNTJlY2JkNjAyMjMzMjA4Zjk2YWM1NTkyNjU2MDc0YTVkYjExOGEiXSwKCVsiNDc5MzU4YzIwMjQyN2YzYzhkMTllMmVhM2RlZjZkNmQzZWYyMjgxYjRhOTNjZDc2MjE0ZjBjN2Q4ZjA0MGFhMDQyZmUxOWY3MWYwMzAwMDAwMDAxYWJmZmZmZmZmZmEyNzA5YmU1NTZjZjZlY2FhNWVmNTMwZGY5ZTRkMDU2ZDBlZDU3Y2U5NmRlNTVhNWIxZjM2OWZhNDBkNGU3NGEwMjAwMDAwMDA3MDAwMDZhNTE2MzUzNjVjNDI2YmUzZjAyYWY1Nzg1MDUwMDAwMDAwMDAzNjNhYjYzZmQ4ZjU5MDUwMDAwMDAwMDA2NTE1M2FiYWM1MzYzMmRmYjE0YjMiLCAiNTIwMDYzYWI1MSIsIDEsIC03NjMyMjY3NzgsICJjZmUxNDc5ODJhZmFjZGUwNDRjZTY2MDA4Y2JjNWIxZTlmMGZkOWI4ZWQ1MmI1OWZjN2MwZmVjZjk1YTM5YjBlIl0sCglbIjc2MTc5YThlMDNiZWM0MDc0N2FkNjVhYjBmOGEyMWJjMGQxMjViNWMzYzE3YWQ1NTY1NTU2ZDVjYjAzYWRlN2M4M2I0ZjMyZDk4MDMwMDAwMDAwMTUxZmZmZmZmZmY5OWI5MDA1MDRlMGMwMmI5N2E2NWUyNGYzYWQ4NDM1ZGZhNTRlM2MzNjhmNGU2NTQ4MDNiNzU2ZDAxMWQyNDE1MDIwMDAwMDAwM2FjNTM1MzYxN2EwNGFjNjFiYjZjZjY5N2NmYTQ3MjY2NTdiYTM1ZWQwMDMxNDMyZGE4YzBmZmIyNTJhMTkwMjc4ODMwZjliZDU0ZjAzMjAxMDAwMDAwMDY2NTY1NTEwMDUxNTNjOGU4ZmM4ODAzNjc3Yzc3MDIwMDAwMDAwMDA3YWM2NTUzNTM1MjUzYWM3MGY0NDIwMzAwMDAwMDAwMDE1MzViZTBmMjAyMDAwMDAwMDAwMjYzMDBiZjQ2Y2IzYSIsICI2YWFiNTIiLCAxLCAtNTg0OTU2NzMsICIzNWU5NGIzNzc2YTY3MjlkMjBhYTJmM2RkZWViMDZkM2FhZDFjMTRjYzRjZGU1MmZkMjFhNGVmYzIxMmVhMTZjIl0sCglbIjc1YWU1M2MyMDQyZjc1NDYyMjNjZTVkNWY5ZTAwYTk2OGRkYzY4ZDUyZTg5MzJlZjIwMTNmYTQwY2U0ZThjNmVkMGI2MTk1Y2RlMDEwMDAwMDAwNTY1NjNhYzYzMDA3OWRhMDQ1MmMyMDY5NzM4MmUzZGJhNmY0ZmMzMDBkYTVmNTJlOTVhOWRjYTM3OWJiNzkyOTA3ZGI4NzJiYTc1MWI4MDI0ZWUwMzAwMDAwMDA5NjU1MTUxNTM2NTAwMDA1MTYzZmZmZmZmZmZlMDkxYjZkNDNmNTFmZjAwZWZmMGNjZmJjOTliNzJkM2FmZjIwOGUwZjQ0YjQ0ZGZhNWUxYzczMjJjZmMwYzVmMDEwMDAwMDAwNzUyMDAwMDUzNjNhYjYzZmZmZmZmZmY3ZTk2YzNiODM0NDMyNjBhYzVjZmQxODI1ODU3NGZiYzQyMjVjNjMwZDM5NTBkZjgxMmJmNTFkY2VhZWIwZjkxMDMwMDAwMDAwNjUzNjU2NTUxNjU2MzlhNmJmNzBiMDFiM2UxNDMwNTAwMDAwMDAwMDU2MzUzMDA2M2FjMDAwMDAwMDAiLCAiNjMwMGFiMDBhYyIsIDIsIDk4MjQyMjE4OSwgImVlNGVhNDlkMmFhZTBkYmJhMDVmMGI5Nzg1MTcyZGE1NDQwOGViMWVjNjdkMzY3NTlmZjdlZDI1YmZjMjg3NjYiXSwKCVsiMWNkZmEwMWUwMWUxYjgwNzhlOWMyYjBjYTUwODIyNDliZDE4ZmRiOGI2MjllYWQ2NTlhZGVkZjlhMGRkNWEwNDAzMTg3MWJhMTIwMjAwMDAwMDA4NTI1MzUxNTM2NTY1YWI2YWZmZmZmZmZmMDExZTI4NDMwMjAwMDAwMDAwMDc2YTUzNjM2MzZhYWM1MmIyZmViZDRhIiwgImFiYWNhYzYzNjU2MzAwIiwgMCwgMzg3Mzk2MzUwLCAiMjk5ZGNhYWMyYmRhYTYyN2ViYTBkZmQ3NDc2N2VlNmM2ZjI3YzkyMDBiNDlkYThmZjYyNzBiMTA0MTY2OWU3ZSJdLAoJWyJjYzI4YzE4MTAxMTNkZmE2ZjBmY2Q5YzdkOWM5YTMwZmI2ZjFkNzc0MzU2YWJlYjUyN2E4NjUxZjI0ZjRlNmIyNWNmNzYzYzRlMDAzMDAwMDAwMDNhYjYzNmFmZmZmZmZmZjAyZGZjNjA1MDAwMDAwMDAwMDA4MDA1MzYzNjM1MWFiMDA1MmFmZDU2OTAzMDAwMDAwMDAwNDUzYWI1MjY1ZjZjOTBkOTkiLCAiMDA2NTUxYWJhY2FjYWMiLCAwLCAxMjk5MjgwODM4LCAiYTRjMDc3MzIwNGFiNDE4YTkzOWUyM2Y0OTNiZDRiM2U4MTczNzVkMTMzZDMwNzYwOWU5NzgyZjJjYzM4ZGJjZiJdLAoJWyJjYTgxNmU3ODAyY2Q0M2Q2NmI5Mzc0Y2Q5YmY5OWE4ZGEwOTQwMmQ2OWM2ODhkOGRjYzUyODNhY2U4ZjE0N2UxNjcyYjc1N2UwMjAyMDAwMDAwMDU1MTZhYWJhYjUyNDBmYjA2Yzk1YzkyMjM0MjI3OWZjZDg4YmE2Y2Q5MTU5MzNlMzIwZDdiZWNhYzAzMTkyZTA5NDFlMDM0NWI3OTIyM2U4OTU3MDMwMDAwMDAwNDAwNTE1MWFjMzUzZWNiNWQwMjY0ZGZiZDAxMDAwMDAwMDAwNWFjNmFhY2FiYWJkNWQ3MDAwMTAwMDAwMDAwMDc1MmFjNTNhYzZhNTE1MWVjMjU3ZjcxIiwgIjYzYWMiLCAxLCA3NzQ2OTU2ODUsICJjYzE4MGM0Zjc5N2MxNmE2Mzk5NjJlN2FlYzU4ZWM0YjIwOTg1M2Q4NDIwMTBlNGQwOTA4OTViMjJlN2E3ODYzIl0sCglbImI0MmI5NTUzMDM5NDJmZWRkN2RjNzdiYmQ5MDQwYWEwZGU4NThhZmExMDBmMzk5ZDYzYzdmMTY3Yjc5ODZkNmMyMzc3ZjY2YTc0MDMwMDAwMDAwNjZhYWMwMDUyNTEwMGZmZmZmZmZmMDU3N2QwNGI2NDg4MDQyNWEzMTc0MDU1Zjk0MTkxMDMxYWQ2YjRjYTZmMzRmNmRhOWJlN2MzNDExZDhiNTFmYzAwMDAwMDAwMDMwMDUyNmE2MzkxZTFjZjBmMjJlNDVlZjFjNDQyOTg1MjNiNTE2YjNlMTI0OWRmMTUzNTkwZjU5MmZjYjVjNWZjNDMyZGM2NmYzYjU3Y2IwMzAwMDAwMDA0NmE2YWFjNjVmZmZmZmZmZjAzOTNhNmM5MDAwMDAwMDAwMDA0NTE2YTY1YWNhNjc0YWMwNDAwMDAwMDAwMDQ2YTUyNTM1MmM4MmMzNzAwMDAwMDAwMDAwMzAwNTM1MzhlNTc3Zjg5IiwgIiIsIDEsIC0xMjM3MDk0OTQ0LCAiNTY2OTUzZWI4MDZkNDBhOWZiNjg0ZDQ2YzFiZjhjNjlkZWE4NjI3MzQyNGQ1NjJiZDQwN2I5NDYxYzg1MDlhZiJdLAoJWyI5MmM5ZmUyMTAyMDFlNzgxYjcyNTU0YTBlZDVlMjI1MDdmYjAyNDM0ZGRiYWE2OWFmZjZlNzRlYThiYWQ2NTYwNzFmMTkyM2YzZjAyMDAwMDAwMDU2YTYzYWM2YTUxNDQ3MGNlZjk4NWJhODNkY2I4ZWVlMjA0NDgwN2JlZGJmMGQ5ODNhZTIxMjg2NDIxNTA2YWUyNzYxNDIzNTljOGM2YTM0ZDY4MDIwMDAwMDAwODYzYWM2MzUyNTI2NTAwNmFhNzk2ZGQwMTAyY2EzZjlkMDUwMDAwMDAwMDA4MDBhYmFiNTJhYjUzNTM1M2NkNWM4MzAxMDAwMDAwMDAwN2FjMDA1MjUyNTIwMDUzMjJhYzc1ZWUiLCAiNTE2NSIsIDAsIDk3ODc5OTcxLCAiNmU2MzA3Y2VmNGYzYTliMzg2Zjc1MWE2ZjQwYWNlYmFiMTJhMGU3ZTE3MTcxZDI5ODkyOTNjYmVjN2ZkNDVjMiJdLAoJWyJjY2NhMWQ1YjAxZTQwZmUyYzZiM2VlMjRjNjYwMjUyMTM0NjAxZGFiNzg1YjhmNTViZDYyMDFmZmFmMmZkZGM3YjNlMjE5MjMyNTAzMDAwMDAwMDM2NTUzNTEwMDQ5NmQ0NzAzYjRiNjY2MDMwMDAwMDAwMDA2NjU1MzUyNTNhYzYzMzAxMzI0MDAwMDAwMDAwMDAxNTIxMmQyYTUwMjAwMDAwMDAwMDk1MWFiYWM2MzYzNTM2MzZhNTMzN2I4MjQyNiIsICIwMDUyIiwgMCwgLTE2OTE2MzAxNzIsICI1NzdiZjJiMzUyMGI0MGFlZjQ0ODk5YTIwZDM3ODMzZjFjZGVkNmIxNjdlNGQ2NDhmYzVhYmUyMDNlNDNiNjQ5Il0sCglbImJjMWE3YTNjMDE2OTFlMmQwYzQyNjYxMzZmMTJlMzkxNDIyZjkzNjU1YzcxODMxZDkwOTM1ZmJkYTdlODQwZTUwNzcwYzYxZGEyMDAwMDAwMDAwODYzNTI1M2FiYWM1MTYzNTNmZmZmZmZmZjAzMWYzMmFhMDIwMDAwMDAwMDAzNjM2NTYzNzg2ZGJjMDIwMDAwMDAwMDAwM2U5NTBmMDAwMDAwMDAwMDA1NjM1MTZhNjU1MTg0YjhhMWRlIiwgIjUxNTM2YSIsIDAsIC0xNjI3MDcyOTA1LCAiNzMwYmMyNTY5OWI0NjcwM2Q3NzE4ZmQ1ZjVjMzRjNGI1ZjAwZjU5NGE5OTY4ZGRjMjQ3ZmE3ZDUxNzUxMjRlZCJdLAoJWyIwNzZkMjA5ZTAyZDkwNGE2YzQwNzEzYzcyMjVkMjNlN2MyNWQ0MTMzYzNjMzQ3NzgyOGY5OGM3ZDZkYmQ2ODc0NDAyM2RiYjY2YjAzMDAwMDAwMDc1M2FiMDA1MzY1NjVhY2ZmZmZmZmZmMTA5NzVmMWI4ZGI4ODYxY2E5NGM4Y2M3YzdjZmYwODZkZGNkODNlMTBiNWZmZmQ0ZmM4ZjJiZGIwM2Y5NDYzYzAxMDAwMDAwMDBmZmZmZmZmZjAyOWRmZjc2MDEwMDAwMDAwMDA2NTI2MzY1NTMwMDUxYTNiZTYwMDQwMDAwMDAwMDAwMDAwMDAwMDAiLCAiNTE1MjUzYWM2NWFjYWNhYyIsIDEsIC0xMjA3NTAyNDQ1LCAiNjZjNDg4NjAzYjJiYzUzZjBkMjI5OTRhMWYwZjY2ZmIyOTU4MjAzMTAyZWJhMzBmZTFkMzdiMjdhNTVkZTdhNSJdLAoJWyI2OTBmZDFmODA0NzZkYjFmOWVlYmU5MTMxN2YyZjEzMGE2MGNiYzFmNGZlYWRkOWQ2NDc0ZDQzOGU5Y2I3ZjkxZTQ5OTQ2MDBhZjAzMDAwMDAwMDRhYjUzNmE2M2ExNWNlOWZhNjYyMmQwYzQxNzFkODk1YjQyYmZmODg0ZGM2ZThhNzQ1MmY4MjdmZGM2OGEyOWMzYzg4ZTZmZGVlMzY0ZWFmNTAwMDAwMDAwMDJhYjUyZmZmZmZmZmYwMjJkYzM5ZDNjMDk1NmIyNGQ3ZjQxMGIxZTM4Nzg1OWU3YTcyOTU1ZjQ1ZDZmZmIxZTg4NGQ3Nzg4OGQxOGZlMDMwMDAwMDAwNWFjNmE2MzY1NmFmZmZmZmZmZmYxMGIwNmJjZTE4MDBmNWM0OTE1M2QyNDc0OGZkZWZiMGJmNTE0YzEyODYzMjQ3ZDEwNDJkNTYwMThjM2UyNWMwMzAwMDAwMDA4NmE2M2FjNjM2NTUzNmE1MmZmZmZmZmZmMDMxZjE2MmYwNTAwMDAwMDAwMDYwMDAwNjU1MjY1YWJmZmJjZDQwNTAwMDAwMDAwMDQ1MTUxYWMwMDFhOWM4YzA1MDAwMDAwMDAwNjUyYWM1MzY1NmE2MzAwMDAwMDAwIiwgImFjNTFhYjYzYWNhYyIsIDAsIC02Nzk4NjAxMiwgIjA1MWMwZGY3YWM2ODhjMmM5MzA4MDhkYWJkZTFmNTAzMDBhZWExMTVmMmJiMzMzNGY0NzUzZDUxNjliNTFlNDYiXSwKCVsiNDlhYzJhZjAwMjE2YzAzMDdhMjllODNhYTVkZTE5NzcwZTZiMjA4NDVkZTMyOTI5MGJkNjljZjBlMGRiN2FlZDYxYWU0MWIzOTAwMjAwMDAwMDAzNTE2M2FjOGIyNTU4ZWY4NDYzNWJmYzU5NjM1MTUwZTkwYjYxZmM3NTNkMzRhY2ZkMTBkOTc1MzEwNDMwNTNlMjI5Y2Q3MjAxMzNjZDk1MDAwMDAwMDAwNDYzNTE2YTUxZmZmZmZmZmYwMjQ1ODQ3MTA0MDAwMDAwMDAwOGFiYWI2MzZhNTFhYzAwNjU1NDVhYTgwMDAwMDAwMDAwMDk2YTY1NTM1MTZhNTI2M2FjNmEwMDAwMDAwMCIsICI1MTUyNjMwMGFiNTM2MyIsIDEsIDE0NDk2Njg1NDAsICJkZGZkOTAyYmJhMzEyYTA2MTk3ODEwZGE5NmEwZGRjY2I1OTVmOTY2NzBiMjhkZWQ3ZGJhODhkOGNkMDQ2OWI4Il0sCglbImZhNGQ4NjhiMDI0YjAxMGJkNWRjZTQ2NTc2YzJmYjQ4OWFhNjBiYjc5N2RhYzNjNzJhNDgzNmY0OTgxMmM1YzU2NGMyNTg0MTRmMDMwMDAwMDAwMDdhOWIzYTU4NWUwNTAyN2JkZDg5ZWRiYWRmM2M4NWFjNjFmOGMzYTA0Yzc3M2ZhNzQ2NTE3YWU2MDBmZjFhOWQ2YjZjMDJmYjAyMDAwMDAwMDQ1MTUxNjNhYmZmZmZmZmZmMDFiMTdkMDIwNTAwMDAwMDAwMDQ2YTY1NTIwMDAwMDAwMDAwIiwgIjUzNjU2NWFiNjU2MzUzNjMiLCAwLCAtMTcxODk1MzM3MiwgIjk2YzJiMzJmMGEwMGE1OTI1ZGI3YmE3MmQwYjVkMzk5MjJmMzBlYTBmNzQ0M2IyMmJjMWI3MzQ4MDg1MTNjNDciXSwKCVsiY2FjNjM4MmQwNDYyMzc1ZTgzYjY3YzdhODZjOTIyYjU2OWE3NDczYmZjZWQ2N2YxN2FmZDk2YzNjZDJkODk2Y2YxMTNmZWJmOWUwMzAwMDAwMDAzMDA2YTUzZmZmZmZmZmZhYTQ5MTNiN2VhZTY4MjE0ODdkZDNjYTQzYTUxNGU5NGRjYmJmMzUwZjhjYzRjYWZmZjljMWE4ODcyMDcxMWI4MDAwMDAwMDAwOTZhNmE1MjUzMDBhY2FjNjM1M2ZmZmZmZmZmMTg0ZmM0MTA5YzM0ZWEyNzAxNGNjMmMxNTM2ZWY3ZWQxODIxOTUxNzk3YTcxNDFkZGFjZGQ2ZTQyOWZhZTZmZjAxMDAwMDAwMDU1MjUxNjU1MjAwZmZmZmZmZmY5ZTdiNzliNGU2ODM2ZTI5MGQ3YjQ4OWVhZDkzMWNiYTY1ZDEwMzBjY2MwNmYyMGJkNGNhNDZhNDAxOTViMzNjMDMwMDAwMDAwMDA4ZjZiYzgzMDRhMDlhMjcwNDAwMDAwMDAwMDU2MzY1NTM1MzUxMWRiYzczMDUwMDAwMDAwMDAwY2YzNGM1MDAwMDAwMDAwMDAwOTFmNzZlMDAwMDAwMDAwMDA4NTIwMGFiMDAwMDUxMDBhYmQwNzIwOGNiIiwgIjAwNjM2NTZhIiwgMiwgLTE0ODg3MzEwMzEsICJiZjA3ODUxOWZhODdiNzlmNDBhYmMzOGYxODMxNzMxNDIyNzIyYzU5Zjg4ZDg2Nzc1NTM1ZjIwOWNiNDFiOWIxIl0sCglbIjE3MTExNDY1MDJjMWEwYjgyZWFhNzg5Mzk3NmZlZmUwZmI3NThjM2YwZTU2MDQ0N2NlZjZlMWJkZTExZTQyZGU5MWExMjVmNzFjMDMwMDAwMDAwMDE1YmQ4YzA0NzAzYjQwMzA0OTZjNzQ2MTQ4MjQ4MWYyOTBjNjIzYmUzZTc2YWQyM2Q1N2E5NTU4MDdjOWU4NTFhYWFhMjAyNzAzMDAwMDAwMDBkMDRhYmFmMjAzMjZkY2I3MDMwMDAwMDAwMDAxNjMyMjI1MzUwNDAwMDAwMDAwMDc1MjYzYWMwMDUyMDA2M2RkZGFkOTAyMDAwMDAwMDAwMGFmMjNkMTQ4IiwgIjUyNTIwMDUzNTEwMDYzIiwgMCwgMTg1MjEyMjgzMCwgImUzM2Q1ZWUwOGMwZjNjMTMwYTQ0ZDdjZTI5NjA2NDUwMjcxYjY3NmY0YTgwYzUyYWI5ZmZhYjAwY2VjZjY3ZjgiXSwKCVsiOGQ1YjEyNGQwMjMxZmJmYzY0MGM3MDZkZGIxZDU3YmI0OWExOGJhOGNhMGUxMTAxZTMyYzdlNmU2NWEwZDRjNzk3MWQ5M2VhMzYwMTAwMDAwMDA4YWNhYmFjMDAwMGFiYWM2NWZmZmZmZmZmOGZlMGZkNzY5NjU5N2I4NDVjMDc5YzNlN2I4N2Q0YTQ0MTEwYzQ0NWEzMzBkNzAzNDJhNTUwMTk1NWUxN2RkNzAxMDAwMDAwMDRhYjUyNTM2M2VmMjJlOGE5MDM0NjYyOWYwMzAwMDAwMDAwMDk1MTZhMDBhYzYzYWNhYzUxNjU3YmQ1N2IwNTAwMDAwMDAwMDIwMGFjZmQ0Mjg4MDUwMDAwMDAwMDA5YWNhYjUzNTJhYjAwYWI2MzYzMDAwMDAwMDAiLCAiNTNhYzUyNjU1M2FiNjUiLCAwLCAxMjUzMTUyOTc1LCAiOGI1N2E3YzMxNzBjNmMwMmRkMTRhZTFkMzkyY2UzZDgyODE5N2IyMGU5MTQ1Yzg5YzFjZmQ1ZGUwNTBlMTU2MiJdLAoJWyIzODE0NmRjNTAyYzc0MzBlOTJiNjcwOGU5ZTEwN2I2MWNkMzhlNWU3NzNkOTM5NWU1YzhhZDg5ODZlN2U0YzAzZWUxYzFlMWU3NjAxMDAwMDAwMDBjODk2MmNlMmFjMWJiM2IxMjg1YzBiOWJhMDdmNGQyZTVjZTg3YzczOGM0MmFjMDU0OGNkOGNlYzExMDBlNjkyOGNkNmIwYjYwMTAwMDAwMDA3NjNhYjYzNmFhYjUyNTI3Y2NjZWZiZDA0ZTVmNmY4MDIwMDAwMDAwMDA2MDA2YWFiYWNhYzY1YWIyYzRhMDAwMDAwMDAwMDAzNTE2MzUyMDlhNmY0MDEwMDAwMDAwMDAyNmFhY2NlNTdkYzA0MDAwMDAwMDAwOGFiNTM1M2FiNTE2YTUxNmEwMDAwMDAwMCIsICJhYiIsIDAsIC0xMjA1OTc4MjUyLCAiM2NiNWIwMzBlN2RhMGI2MGNjY2U1YjRhN2YzNzkzZTZjYTU2ZjAzZTM3OTlmZTJkNmMzY2MyMmQ2ZDg0MWRjYiJdLAoJWyIyMmQ4MWM3NDA0Njk2OTVhNmE4M2E5YTQ4MjRmNzdlY2ZmODgwNGQwMjBkZjIzNzEzOTkwYWZjZTJiNzI1OTFlZDdkZTk4NTAwNTAyMDAwMDAwMDY1MzUyNTI2YTZhNmFmZmZmZmZmZjkwZGM4NWUxMTgzNzliMTAwNWQ3YmJjN2QyYjhiMGJhYjEwNGRhZDdlYWE0OWZmNWJlYWQ4OTJmMTdkOGMzYmEwMTAwMDAwMDA2NjU2NTYzMDBhYjUxZmZmZmZmZmY5NjUxOTM4NzllMWQ1NjI4YjUyMDA1ZDg1NjBhMzVhMmJhNTdhN2YxOTIwMWE0MDQ1YjdjYmFiODUxMzMzMTFkMDIwMDAwMDAwM2FjMDA1MzQ4YWYyMWExM2Y5YjRlMGFkOTBlZDIwYmY4NGU0NzQwYzhhOWQ3MTI5NjMyNTkwMzQ5YWZjMDM3OTk0MTRiNzZmZDZlODI2MjAwMDAwMDAwMDI1MzUzZmZmZmZmZmYwNGEwZDQwZDA0MDAwMDAwMDAwMDYwNzAyNzAwMDAwMDAwMDAwNjUyNjU1MTUxNTE2YWQzMWYxNTAyMDAwMDAwMDAwMzY1YWMwMDY5YTFhYzA1MDAwMDAwMDAwOTUxMDA2NTUzMDBhYjUzNTI1MTAwMDAwMDAwIiwgIjUxNjM2YTUyYWMiLCAwLCAtMTY0NDY4MDc2NSwgImFkZDdmNWRhMjcyNjJmMTNkYTZhMWUyY2MyZmVhZmRjODA5YmQ2NmE2N2ZiOGFlMmE2ZjVlNmJlOTUzNzNiNmYiXSwKCVsiYTI3ZGNiYzgwMWUzNDc1MTc0YTE4MzU4NjA4MmUwOTE0YzMxNGJjOWQ3OWQxNTcwZjI5YjU0NTkxZTVlMGRmZjA3ZmJiNDVhN2YwMDAwMDAwMDA0YWM1M2FiNTFmZmZmZmZmZjAyNzM0N2Y1MDIwMDAwMDAwMDA1NTM1MzUxYWI2M2QwZTVjOTAzMDAwMDAwMDAwOWFjNjVhYjZhNjM1MTUyMDBhYjdjZDYzMmVkIiwgImFjNjM2MzY1NTMiLCAwLCAtNjg2NDM1MzA2LCAiODgzYTZlYTNiMmNjNTNmZThhODAzYzIyOTEwNjM2NmNhMTRkMjVmZmJhYjlmZWY4MzY3MzQwZjY1YjIwMWRhNiJdLAoJWyJiMTIzZWQyMjA0NDEwZDRlOGFhYWE4Y2RiOTUyMzRjYTg2ZGFkOWZmNzdmYjRhZTBmZDRjMDZlYmVkMzY3OTRmMDIxNWVkZTAwNDAxMDAwMDAwMDJhYzYzZmZmZmZmZmYzYjU4YjgxYjE5YjkwZDhmNDAyNzAxMzg5YjIzOGMzYTg0ZmY5YmE5YWVlYTI5OGJiZjE1YjQxYTY3NjZkMjdhMDEwMDAwMDAwNTZhNjU1M2FiMDAxNTE4MjRkNDAxNzg2MTUzYjgxOTgzMWZiMTU5MjZmZjE5NDRlYTdiMDNkODg0OTM1YThiZGUwMWVkMDY5ZDVmZDgwMjIwMzEwMjAwMDAwMDAwZmZmZmZmZmZhOWM5ZDI0NmYxZWI4YjdiMzgyYTkwMzJiNTU1NjdlOWE5M2Y4NmM3N2Y0ZTMyYzA5MmFhMTczOGY3Zjc1NmMzMDEwMDAwMDAwMmFiNjVmZmZmZmZmZjAxMWEyYjQ4MDAwMDAwMDAwMDAwZWQ0NGQxZmIiLCAiNjMwMDUxYWI2MyIsIDIsIC0xMTE4MjYzODgzLCAiYjVkYWI5MTJiY2FiZWRmZjVmNjNmNmRkMzk1ZmMyY2YwMzBkODNlYjRkZDI4MjE0YmFiYTY4YTQ1YjRiZmZmMCJdLAoJWyIxMzM5MDUxNTAzZTE5NmY3MzA5NTVjNWEzOWFjZDZlZDI4ZGVjODliNGRhZGMzZjdjNzliMjAzYjM0NDUxMTI3MGU1NzQ3ZmE5OTAwMDAwMDAwMDQ1MTUxNjM2YWZmZmZmZmZmMzc4YzYwOTBlMDhhMzg5NWNlZGYxZDI1NDUzYmJlOTU1YTI3NDY1NzE3MjQ5MWZkMjg4N2VkNWM5YWNlY2E3YjAxMDAwMDAwMDBmZmZmZmZmZmNmN2NjM2MzNmRkZjlkNDc0OWVkZmE5Y2VmZWQ0OTZkMmY4NmU4NzBkZWI4MTRiZmNkM2I1NjM3YTU0OTY0NjEwMzAwMDAwMDA0NTEwMDYzMDBmZmZmZmZmZjA0ZGNmM2ZhMDEwMDAwMDAwMDA4NTI2YTYzMDA1MjYzYWNhYmI0MWQ4NDA0MDAwMDAwMDAwNGFiYWM1MTUzODAwZWZmMDIwMDAwMDAwMDA1NjU2YTUzNTM2NTEwNmM1ZTAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgImFiYWM1MzAwIiwgMiwgMjAxMzcxOTkyOCwgIjdmYzc0ZGUzOWNlNmNhNDZjYTI1ZDc2MGQzY2VjN2JiMjFmZDE0ZjdlZmUxYzQ0M2I1YWEyOTRmMmNiNWY1NDYiXSwKCVsiMDcyOGM2MDYwMTRjMWZkNjAwNWNjZjg3ODE5NmJhNzFhNTRlODZjYzhjNTNkNmRiNTAwYzNjYzBhYzM2OWEyNmZhYzZmY2JjMjEwMDAwMDAwMDA1YWI1M2FjNTM2NWJhOTY2ODI5MDE4MmQ3ODcwMTAwMDAwMDAwMDY2YTAwMDA1MzY1NTEwMDAwMDAwMCIsICI2NSIsIDAsIDE3ODk5NjE1ODgsICJhYjZiYWE2ZGEzYjJiYzg1Mzg2OGQxNjZmODk5NmFkMzFkNjNlZjk4MTE3OWY5MTA0ZjQ5OTY4ZmQ2MWM4NDI3Il0sCglbImExMTM0Mzk3MDM0YmY0MDY3YjZjODFjNTgxZTJiNzNmYjYzODM1YTA4ODE5YmEyNGU0ZTkyZGY3MzA3NGJmNzczYzk0NTc3ZGY3MDAwMDAwMDAwNDY1NTI1MjUxZmZmZmZmZmY4YjY2MDhmZWFhM2MxZjM1ZjQ5YzYzMzBhNzY5NzE2ZmEwMWM1YzZmNmUwY2RjMmViMTBkZmM5OWJiYzIxZTc3MDEwMDAwMDAwOTUyNjU2YWFjMDA1MzUyNjU1MTgwYTBiZGE0YmM3MjAwMmMyZWE4MjYyZTI2ZTAzMzkxNTM2ZWMzNjg2NzI1OGNhYjk2OGE2ZmQ2ZWM3NTIzYjY0ZmExZDhjMDAxMDAwMDAwMDU2YTUzYWM2MzUzZmZmZmZmZmYwNGRiZWVlZDA1MDAwMDAwMDAwNTUzNjUwMDUyYWJjZDVkMGUwMTAwMDAwMDAwMDQ2M2FiYWI1MTEwNGIyZTA1MDAwMDAwMDAwNjZhYWM1M2FjNTE2NTI4M2NhNzAxMDAwMDAwMDAwNDUzNTI1MmFiMDAwMDAwMDAiLCAiYWI1MTUxNTE1MTY1NTJhYiIsIDEsIC0zMjQ1OTg2NzYsICI5MTE3ODQ4MjExMmY5NGQxYzhlOTI5ZGU0NDNlNGI5Yzg5M2UxODY4Mjk5OGQzOTNjYTljYTc3OTUwNDEyNTg2Il0sCglbImJjZGFmYmFlMDRhYTE4ZWI3NTg1NWFlYjFmNTEyNGYzMDA0NDc0MTM1MWIzMzc5NDI1NGE4MDA3MDk0MGNiMTA1NTJmYTRmYThlMDMwMDAwMDAwMWFjZDA0MjNmZTZlM2YzZjg4YWU2MDZmMmU4Y2ZhYjdhNWVmODdjYWEyYThmMDQwMTc2NWZmOWE0N2Q3MThhZmNmYjQwYzAwOTliMDAwMDAwMDAwOGFjNjU2NWFiNTNhYzZhYWM2NDUzMDgwMDlkNjgwMjAyZDYwMGU0OTJiMzFlZTBhYjc3YzdjNTg4M2ViYWQ1MDY1ZjFjZTg3ZTRkZmU2NDUzZTU0MDIzYTAwMTAwMDAwMDAxNTFmZmZmZmZmZmI5ZDgxOGIxNDI0NTg5OWUxZDQ0MDE1MjgyN2M5NTI2OGE2NzZmMTRjMzM4OWZjNDdmNWExMWE3YjM4YjFiZGUwMzAwMDAwMDAyNjMwMGZmZmZmZmZmMDNjZGEyMjEwMjAwMDAwMDAwMDc1MWFjNTM1MjYzMDA1MTAwYTRkMjA0MDAwMDAwMDAwNDUyMDA1MzZhYzhiZWY0MDUwMDAwMDAwMDA3MDBhYjUxYWI2NTYzYWMwMDAwMDAwMCIsICI2NTUzNTE2YTUyNmFhYiIsIDEsIC0yMTExNDA5NzUzLCAiNWUxODQ5ZTczNjhjZjRmMDQyNzE4NTg2ZDliZDgzMWQ2MTQ3OWI3NzViYWI5N2FiYTlmNDUwMDQyYmQ5ODc2YSJdLAoJWyJlZDNiYjkzODAyZGRiZDA4Y2IwMzBlZjYwYTIyNDdmNzE1YTAyMjZkZTM5MGM5YzFhODFkNTJlODNmODY3NDg3OTA2NWI1Zjg3ZDAzMDAwMDAwMDNhYjY1NTJmZmZmZmZmZjA0ZDJjNWU2MGEyMWZiNmRhOGRlMjBiZjIwNmRiNDNiNzIwZTJhMjRjZTI2Nzc5YmNhMjU1ODRjM2Y3NjVkMWUwMjAwMDAwMDA4YWI2NTZhNmFhY2FiMDBhYjZlOTQ2ZGVkMDI1YTgxMWQwNDAwMDAwMDAwMDk1MWFiYWM2MzUyYWMwMGFiNTE0M2NmYTMwMzAwMDAwMDAwMDU2MzUyMDA2MzZhMDAwMDAwMDAiLCAiNTM1MmFjNjUwMDY1NTM1MzAwIiwgMSwgLTY2ODcyNzEzMywgImU5OTk1MDY1ZTFmZGRlZjcyYTc5NmVlZjUyNzRkZTYyMDEyMjQ5NjYwZGM5ZDIzM2E0ZjI0ZTAyYTI5NzljODciXSwKCVsiNTlmNDYyOWQwMzBmYTVkMTE1YzMzZThkNTVhNzllYTNjYmE4YzIwOTgyMWY5NzllZDBlMjg1Mjk5YTljNzJhNzNjNWJiYTAwMTUwMjAwMDAwMDAyNjM2YWZmZmZmZmZmZDhhY2EyMTc2ZGYzZjdhOTZkMGRjNGVlM2QyNGU2Y2VjZGUxNTgyMzIzZWVjMmViZWY5YTExZjgxNjJmMTdhYzAwMDAwMDAwMDdhYjY1NjVhY2FiNjU1M2ZmZmZmZmZmZWViYzEwYWY0Zjk5YzdhMjFjYmMxZDEwNzRiZDlmMGVlMDMyNDgyYTcxODAwZjQ0ZjI2ZWU2NzQ5MTIwOGUwNDAzMDAwMDAwMDY1MzUyYWM2NTYzNTFmZmZmZmZmZjA0MzRlOTU1MDQwMDAwMDAwMDA0YWI1MTUxNTJjYWYyYjMwNTAwMDAwMDAwMDM2NWFjMDA3YjE0NzMwMzAwMDAwMDAwMDNhYjUzMDAzM2RhOTcwNTAwMDAwMDAwMDYwMDUxNTM2YTUyNTNiYjA4YWI1MSIsICIiLCAyLCAzOTYzNDA5NDQsICIwZTljNDc5NzNlZjJjMjkyYjIyNTJjNjIzZjQ2NWJiYjkyMDQ2ZmUwYjg5M2VlYmY0ZTFjOWUwMmNiMDFjMzk3Il0sCglbIjI4NmUzZWI3MDQzOTAyYmFlNTE3M2FjM2IzOWI0NGM1OTUwYmMzNjNmNDc0Mzg2YTUwYjk4YzdiZGFiMjZmOThkYzgzNDQ5YzRhMDIwMDAwMDAwNzUyYWM2YTAwNTEwMDUxZmZmZmZmZmY0MzM5Y2Q2YTA3ZjVhNWEyY2I1ODE1ZTU4NDVkYTcwMzAwZjVjNzgzMzc4ODM2M2JmN2ZlNjc1OTVkMzIyNTUyMDEwMDAwMDAwMGZmZmZmZmZmZjljMmRkOGIwNmFkOTEwMzY1ZmZkZWUxYTk2NmYxMjQzNzhhMmI4MDIxMDY1Yzg3NjRmNjEzOGJiMWU5NTEzODAyMDAwMDAwMDVhYjUxNTNhYzZhZmZmZmZmZmYwMzcwMjAyYWJhN2E2OGRmODU0MzZlYTdjOTQ1MTM5NTEzMzg0ZWYzOTFmYTMzZDE2MDIwNDIwYjhhZDQwZTlhMDAwMDAwMDAwOTAwYWI1MTY1NTI2MzUzYWJhY2ZmZmZmZmZmMDIwYzE5MDcwMDAwMDAwMDAwMDRhYmFjNTI2YTFiNDkwYjA0MDAwMDAwMDAwMGRmMTUyOGY3IiwgIjUzNTNhYiIsIDMsIC0xNDA3NTI5NTE3LCAiMzIxNTRjMDkxNzRhOTkwNjE4M2FiZjI2NTM4YzM5ZTc4NDY4MzQ0Y2EwODQ4YmJkMDc4NWUyNGEzNTY1ZDkzMiJdLAoJWyIyZTI0NWNmODAxNzllMmU5NWNkMWIzNDk5NWMyYWZmNDlmZTQ1MTljZDdjZWU5M2FkNzU4N2Y3ZjdlODEwNWZjMmRmZjIwNmNkMzAyMDAwMDAwMDkwMDZhNjM1MTZhNjU1M2FiNTIzNTA0MzVhMjAxZDVlZDJkMDIwMDAwMDAwMDAzNTJhYjY1NTg1NTJjODkiLCAiMDBhYjUzIiwgMCwgLTIzMzkxNzgxMCwgIjQ2MDVhZTVmZDNkNTBmOWM0NWQzN2RiNzExOGE4MWE5ZWY2ZWI0NzVkMjMzM2Y1OWRmNWQzZTIxNmYxNTBkNDkiXSwKCVsiMzNhOTgwMDQwMjlkMjYyZjk1MTg4MWIyMGE4ZDc0NmM4YzcwN2VhODAyY2QyYzhiMDJhMzNiN2U5MDdjNTg2OTlmOTdlNDJiZTgwMTAwMDAwMDA3YWM1MzUzNjU1MmFiYWNkZWUwNGNjMDFkMjA1ZmQ4YTM2ODdmZGYyNjViMDY0ZDQyYWIzODA0NmQ3NmM3MzZhYWQ4ODY1Y2EyMTA4MjRiN2M2MjJlY2YwMjAwMDAwMDA3MDA2NTAwNmE1MzZhNmFmZmZmZmZmZjAxNDMxYzVkMDEwMDAwMDAwMDAwMjcwZDQ4ZWUiLCAiIiwgMSwgOTIxNTU0MTE2LCAiZmY5ZDczOTQwMDJmM2YxOTZlYTI1NDcyZWE2YzQ2Zjc1M2JkODc5YTcyNDQ3OTUxNTdiYjcyMzVjOTMyMjkwMiJdLAoJWyJhYWMxOGYyYjAyYjE0NGVkNDgxNTU3YzUzZjIxNDZhZTUyM2YyNGZjZGU0MGYzNDQ1YWIwMTkzYjZiMjc2YzMxNWRjMjg5NGQyMzAwMDAwMDAwMDc1MTY1NjUwMDAwNjM2YTIzMzUyNjk0N2RiZmZjNzZhZWM3ZGIxZTFiYWE2ODY4YWQ0Nzk5Yzc2ZTE0Nzk0ZGNiYWFlYzllNzEzYTgzOTY3ZjZhNjUxNzAyMDAwMDAwMDVhYmFjNjU1MWFiMjdkNTE4YmUwMWI2NTJhMzAwMDAwMDAwMDAwMTUzMDAwMDAwMDAiLCAiNTJhYzUzNTMiLCAxLCAxNTU5Mzc3MTM2LCAiNTlmYzI5NTliYjdiYjI0NTc2Y2M4YTIzNzk2MWVkOTViYmI5MDA2NzlkOTRkYTY1Njc3MzRjNDM5MGNiNmVmNSJdLAoJWyI1YWI3OTg4MTAzMzU1NWI2NWZlNThjOTI4ODgzZjcwY2U3MDU3NDI2ZmJkZDVjNjdkNzI2MGRhMGZlOGIxYjllNmEyNjc0Y2I4NTAzMDAwMDAwMDlhYzUxNmFhYzZhYWMwMDZhNmFmZmZmZmZmZmE1YmU5MjIzYjQzYzJiMWE0ZDEyMGI1YzViNmVjMDQ4NGY2Mzc5NTJhMzI1MjE4MWQwZjhlODEzZTc2ZTExNTgwMjAwMDAwMDAwZTRiNWNlYjgxMThjYjc3MjE1YmJlZWRjOWEwNzZhNGQwODdiYjljZDE0NzNlYTMyMzY4YjcxZGFlZWVhY2M0NTFlYzIwOTAxMDAwMDAwMDAwNWFjYWM1MTUzYWNlZDdkYzM0ZTAyYmM1ZDExMDMwMDAwMDAwMDA1YWM1MzYzMDA2YTU0MTg1ODAzMDAwMDAwMDAwNTUyYWIwMDYzNmEwMDAwMDAwMCIsICI1MTAwIiwgMSwgMTkyNzA2MjcxMSwgImU5ZjUzZDUzMWMxMmNjZTFjNTBhYmVkNGFjNTIxYTM3MmI0NDQ5YjZhMTJmOTMyN2M4MDAyMGRmNmJmZjY2YzAiXSwKCVsiNmMyYzhmYWMwMTI0YjBiN2Q0YjYxMGMzYzViOTFkZWUzMmI3YzkyN2FjNzFhYmRmMmQwMDg5OTBjYTFhYzQwZGUwZGZkNTMwNjYwMzAwMDAwMDA2YWJhYmFjNTI1MzY1NmJkN2VhZGEwMWQ4NDdlYzAwMDAwMDAwMDAwNGFjNTIwMDZhZjQyMzJlYzgiLCAiNmE2YTZhMDA1MSIsIDAsIC0zNDA4MDk3MDcsICJmYjUxZWI5ZDdlNDdkMzJmZjIwODYyMDUyMTRmOTBjN2MxMzllMDhjMjU3YTY0ODI5YWU0ZDJiMzAxMDcxYzZhIl0sCglbIjZlMzg4MGFmMDMxNzM1YTAwNTljMGJiNTE4MDU3NGE3ZGNjODhlNTIyYzhiNTY3NDZkMTMwZjhkNDVhNTIxODQwNDVmOTY3OTNlMDEwMDAwMDAwOGFjYWJhYzZhNTI2YTY1NTNmZmZmZmZmZmZlMDVmMTRjZGVmN2QxMmE5MTY5ZWMwZmQzNzUyNGI1ZmNkMzI5NWY3M2Y0OGNhMzVhMzZlNjcxZGE0YTJmNTYwMDAwMDAwMDA4MDA2YTUyNmE2MzUxYWI2M2ZmZmZmZmZmZGZiZDg2OWFjOWU0NzI2NDBhODRjYWYyOGJkZDgyZThjNjc5N2Y0MmQwM2I5OTgxN2E3MDVhMjRmZGUyNzM2NjAwMDAwMDAwMDEwMDkwYTA5MGE1MDNkYjk1NmIwNDAwMDAwMDAwMDk1MmFjNTNhYjZhNTM2YTYzYWIzNTgzOTAwMTAwMDAwMDAwMDk2NTZhNTIwMDUyNTE1M2FjNjUzNTNlZTIwNDAwMDAwMDAwMDc2MzUzMDA1MjUyNmFhYmE2YWQ4M2ZiIiwgIjUzNTE1MWFiNjMwMCIsIDIsIDIyMjAxNDAxOCwgIjU3YTM0ZGRlYjFiZjM2ZDI4YzcyOTRkZGEwNDMyZTkyMjhhOWM5ZTVjYzVjNjkyZGI5OGI2ZWQyZTIxOGQ4MjUiXSwKCVsiOGRmMWNkMTkwMjdkYjQyNDA3MThkY2FmNzBjZGVlMzNiMjZlYTNkZWNlNDlhZTY5MTczMzFhMDI4Yzg1YzVhMWZiN2VlM2U0NzUwMjAwMDAwMDA4NjVhYjZhMDA1MTAwNjM2MzYxNTc5ODhiYzg0ZDhkNTVhOGJhOTNjZGVhMDAxYjliZjlkMGZhNjViNWRiNDJiZTYwODRiNWIxZTE1NTZmMzYwMmY2NWQ0ZDAxMDAwMDAwMDVhYzAwYWIwMDUyMjA2Yzg1MjkwMmIyZmI1NDAzMDAwMDAwMDAwOGFjNTI1MjUzNmFhY2FjNTM3OGM0YTUwNTAwMDAwMDAwMDdhY2FiYWM1MzUxNjM1MzI3ODQ0MzllIiwgImFjYWI2YSIsIDAsIDExMDU2MjAxMzIsICJlZGI3Yzc0MjIzZDFmMTBmOWIzYjljMWRiODA2NGJjNDg3MzIxZmY3YmIzNDZmMjg3YzZiYzJmYWQ4MzY4MmRlIl0sCglbIjBlODAzNjgyMDI0Zjc5MzM3YjI1Yzk4ZjI3NmQ0MTJiYzI3ZTU2YTMwMGFhNDIyYzQyOTk0MDA0NzkwY2VlMjEzMDA4ZmYxYjgzMDMwMDAwMDAwODAwNTFhYzY1YWM2NTUxNjVmNDIxYTMzMTg5MmIxOWE0NGM5Zjg4NDEzZDA1N2ZlYTAzYzNjNGE2YzdkZTQ5MTFmZTZmZTc5Y2YyZTliM2IxMDE4NGIxOTEwMjAwMDAwMDA1NTI1MTYzNjMwMDk2Y2IxYzY3MDM5ODI3NzIwNDAwMDAwMDAwMDI1M2FjZjdkNWQ1MDIwMDAwMDAwMDA5NjM1MzZhNmE2MzZhNTM2M2FiMzgxMDkyMDIwMDAwMDAwMDAyYWM2YTkxMWNjZjMyIiwgIjY1NjUiLCAxLCAtMTQ5MjA5NDAwOSwgImYwNjcyNjM4YTBlNTY4YTkxOWU5ZDhhOWNiZDdjMDE4OWEzZTEzMjk0MGJlZWI1MmYxMTFhODlkY2MyZGFhMmMiXSwKCVsiN2Q3MTY2OWQwMzAyMmY5ZGQ5MGVkYWMzMjNjZGU5ZTU2MzU0YzY4MDRjNmI4ZTY4N2U5YWU2OTlmNDY4MDVhYWZiOGJjYWE2MzYwMDAwMDAwMDAyNTNhYmZmZmZmZmZmNjk4YTVmZGQzZDdmMmI4YjAwMGM2ODMzM2U0ZGQ1OGZhODA0NWIzZTJmNjg5Yjg4OWJlZWIzMTU2Y2VjZGI0OTAzMDAwMDAwMDk1MjUzNTNhYmFiMDA1MWFjYWJjNTNmMGFhODIxY2RkNjliNDczZWM2ZTZjZjQ1Y2Y5YjM4OTk2ZTFjOGY1MmMyNzg3OGEwMWVjOGJiMDJlOGNiMzFhZDI0ZTUwMDAwMDAwMDA1NTM1M2FiMDA1MmZmZmZmZmZmMDQ0N2EyMzQwMTAwMDAwMDAwMDU2NWFiNTNhYjUxMzNhYWEwMDMwMDAwMDAwMDA2NTE1MTYzNjU2NTYzMDU3ZDExMDMwMDAwMDAwMDA1NmE2YWFjYWM1MmNmMTNiNTAwMDAwMDAwMDAwMzUyNmE1MTAwMDAwMDAwIiwgIjZhNmE1MSIsIDEsIC0xMzQ5MjUzNTA3LCAiNzIyZWZkZDY5YTdkNTFkM2Q3N2JlZDBhYzU1NDQ1MDJkYTY3ZTQ3NWVhNTg1N2NkNWFmNmJkZjY0MGE2OTk0NSJdLAoJWyI5ZmY2MThlNjAxMzZmOGU2YmI3ZWFiYWFhYzdkNmUyNTM1ZjVmYmE5NTg1NGJlNmQyNzI2Zjk4NmVhYTk1MzdjYjI4M2M3MDFmZjAyMDAwMDAwMDI2YTY1ZmZmZmZmZmYwMTJkMWMwOTA1MDAwMDAwMDAwODY1YWIwMGFjNmE1MTZhNjUyZjlhZDI0MCIsICI1MTUxNTI1MzYzNTM1MWFjIiwgMCwgMTU3MTMwNDM4NywgIjY1OWNkMzIwMzA5NWQ0YTg2NzI2NDZhZGQ3ZDc3ODMxYTE5MjZmYzViNjYxMjg4MDE5Nzk5MzkzODM2OTVhNzkiXSwKCVsiOWZiZDQzYWMwMjVlMTQ2MmVjZDEwYjFhOTE4MmE4ZTBjNTQyZjZkMTA4OTMyMmE0MTgyMmFiOTQzNjFlMjE0ZWQ3ZTFkZmRkOGEwMjAwMDAwMDAyNjM1MTlkMDQzNzU4MTUzOGU4ZTBiNmFlYTc2NWJlZmY1YjRmM2E0YTIwMmZjYTZlNWQxOWIzNGMxNDEwNzhjNjY4OGY3MWJhNWI4ZTAxMDAwMDAwMDNhYzY1NTJmZmZmZmZmZjAyMDc3Nzc0MDUwMDAwMDAwMDA5NjU1MTUzNjU1MjYzYWNhYjZhMGFlNGUxMDEwMDAwMDAwMDAzNTE1MjUyNGM5NzEzNmIiLCAiNjM1MTUyYWIiLCAwLCAxOTY5NjIyOTU1LCAiZDgyZDRjY2Q5YjY3ODEwZjI2YTM3OGFkOTU5MmViN2EzMDkzNWNiYmQyN2U4NTliMDA5ODFhZWZkMGE3MmUwOCJdLAoJWyIwMTE3YzkyMDA0MzE0Yjg0ZWQyMjhmYzExZTI5OTllNjU3Zjk1M2I2ZGUzYjIzMzMzMWI1ZjBkMGNmNDBkNWNjMTQ5YjkzYzdiMzAzMDAwMDAwMDU1MTUyNjM1MTZhMDgzZThhZjFiZDU0MGU1NGJmNWIzMDlkMzZiYTgwZWQzNjFkNzdiYmY0YTE4MDVjN2FhNzM2NjdhZDlkZjRmOTdlMmRhNDEwMDIwMDAwMDAwNjAwYWI2MzUxYWI1MjRkMDRmMjE3OTQ1NWU3OTRiMmZjYjNkMjE0NjcwMDAxYzg4NWYwODAyZTRiNWUwMTVlZDEzYTkxNzUxNGE3NjE4ZjVmMzMyMjAzMDAwMDAwMDg2YTUzNmFhYjUxMDAwMDYzZWNmMDI5ZTY1YTRhMDA5YTVkNjc3OTZjOWYxZWIzNThiMGQ0YmQyNjIwYzhhZDczMzBmYjk4ZjVhODAyYWI5MmQwMDM4YjEwMDIwMDAwMDAwMzZhNjU1MWExODRhODg4MDRiMDQ0OTAwMDAwMDAwMDAwMDlhYjZhNTE1MjUzNTE2NTUyNmEzM2QxYWIwMjAwMDAwMDAwMDE1MThlOTIzMjAwMDAwMDAwMDAwMDI5MTNkZjA0MDAwMDAwMDAwOTUyYWJhYzYzNTM1MjUzNTNhYzhiMTliZmRmIiwgIjAwMDA1MWFiMDAwMCIsIDAsIDQ4OTQzMzA1OSwgIjhlZWJhYzg3ZTYwZGE1MjRiYmNjYWYyODVhNDQwNDNlMmM5MjMyODY4ZGRhNmM2MjcxYTUzYzE1M2U3ZjNhNTUiXSwKCVsiZTdmNTQ4MjkwM2Y5OGYwMjk5ZTA5ODRiMzYxZWZiMmZkZGNkOTk3OTg2OTEwMjI4MWU3MDVkMzAwMWE5ZDI4M2ZlOWYzZjNhMWUwMjAwMDAwMDAyNTM2NWZmZmZmZmZmY2M1YzdmZTgyZmVlYmFkMzJhMjI3MTVmYzMwYmM1ODRlZmM5Y2Q5Y2FkZDU3ZTViYzRiNmEyNjU1NDdlNjc2ZTAwMDAwMDAwMDFhYjU3OWQyMTIzNWJjMjI4MWUwOGJmNWU3ZjhmNjRkM2FmYjU1MjgzOWI5YWE1Yzc3Y2Y3NjJiYTIzNjZmZmZkN2ViYjc0ZTQ5NDAwMDAwMDAwMDU1MjYzYWI2MzYzM2RmODJjZjQwMTAwOTgyZTA1MDAwMDAwMDAwNDUzYWM1MzUzMDAwMDAwMDAiLCAiYWNhY2FiIiwgMiwgLTEzNjI5MzEyMTQsICIwNDZkZTY2NjU0NTMzMGU1MGQ1MzA4M2ViNzhjOTMzNjQxNjkwMmY5Yjk2Yzc3Y2M4ZDhlNTQzZGE2ZGZjN2U0Il0sCglbIjA5YWRiMmU5MDE3NWNhMGU4MTYzMjZhZTJkY2U3NzUwYzFiMjc5NDFiMTZmNjI3ODAyM2RiYzI5NDYzMmFiOTc5Nzc4NTJhMDlkMDMwMDAwMDAwNDY1YWIwMDZhZmZmZmZmZmYwMjc3MzljZjAxMDAwMDAwMDAwNzUxNTFhYjYzYWM2NWFiOGE1YmI2MDEwMDAwMDAwMDA2NTNhYzUxNTE1MjAwMTEzMTNjZGMiLCAiYWMiLCAwLCAtNzY4MzE3NTYsICI0NzhlZTA2NTAxYjQ5NjViNDBiZGJhNmNiYWFkOWI3NzliMzg1NTVhOTcwOTEyYmI3OTFiODZiNzE5MWM1NGJjIl0sCglbImY5NzM4Njc2MDJlMzBmODU3ODU1Y2QwMzY0YjViYmI4OTRjMDQ5ZjQ0YWJiZmQ2NjFkN2FlNWRiZmVhYWZjYTg5ZmFjODk1OWMyMDEwMDAwMDAwNWFiNTI1MzZhNTFmZmZmZmZmZmJlY2ViNjhhNDcxNWY5OWJhNTBlMTMxODg0ZDhkMjBmNGExNzkzMTM2OTExNTBhZGYwZWJmMjlkMDVmODc3MDMwMzAwMDAwMDA2NjM1MmFiMDBhYzYzZmZmZmZmZmYwMjFmZGRiOTAwMDAwMDAwMDAwMzZhNjU2MzIyYTE3NzAwMDAwMDAwMDAwODUyNjUwMGFjNTEwMGFjYWM4NDgzOTA4MyIsICI1MmFjYWI1M2FjIiwgMCwgMTQwNzg3OTMyNSwgImRiMDMyOTQzOTQ5MGVmYzY0YjcxMDRkNmQwMDliMDNmYmM2ZmFjNTk3Y2Y1NGZkNzg2ZmJiYjVmZDczYjkyYjQiXSwKCVsiZmQyMmViYWEwM2JkNTg4YWQxNjc5NWJlYTdkNGFhN2Y3ZDQ4ZGYxNjNkNzVlYTNhZmViZTcwMTdjZTJmMzUwZjZhMGMxY2IwYmIwMDAwMDAwMDA4NmFhYmFjNTE1MzUyNjM2M2ZmZmZmZmZmNDg4ZTBiYjIyZTI2YTU2NWQ3N2JhMDcxNzhkMTdkOGY4NTcwMjYzMGVlNjY1ZWMzNWQxNTJmYTA1YWYzYmRhMTAyMDAwMDAwMDQ1MTUxNjNhYmZmZmZmZmZmZWIyMTAzNTg0OWU4NWFkODRiMjgwNWUxMDY5YTkxYmIzNmM0MjVkYzljMjEyZDliYWU1MGE5NWI2YmZkZTEyMDAzMDAwMDAwMDFhYjVkZjI2MmZkMDJiNjk4NDgwNDAwMDAwMDAwMDhhYjYzNjM2MzZhNjM2M2FjZTIzYmYyMDEwMDAwMDAwMDA3NjU1MjYzNjM1MjUzNTM0MzQ4YzFkYSIsICIwMDYzNTM1MjY1NjM1MTZhMDAiLCAwLCAtMTQ5MTAzNjE5NiwgIjkyMzY0YmEzYzdhODVkNGU4ODg4NWI4Y2I5YjUyMGRkODFmYzI5ZTlkMmI3NTBkMDc5MDY5MGU5YzEyNDY2NzMiXSwKCVsiMTMwYjQ2MmQwMWRkNDlmYWMwMTlkYzQ0NDJkMGZiNTRlYWE2YjFjMmQxYWQwMTk3NTkwYjdkZjI2OTY5YTY3YWJkN2YzZmJiNGYwMTAwMDAwMDA4YWM2NWFiYWM1M2FiNjU2M2ZmZmZmZmZmMDM0NWY4MjUwMDAwMDAwMDAwMDRhYzUzYWNhYzlkNTgxNjAyMDAwMDAwMDAwMmFiYWJlZmY4ZTkwNTAwMDAwMDAwMDg2YWFiMDA2NTUyYWM2YTUzYTg5MmRjNTUiLCAiYWIwMDY1YWM1MzAwNTIiLCAwLCA5NDQ0ODM0MTIsICIxZjQyMDlmZDRjZTdmMTNkMTc1ZmRkNTIyNDc0YWU5YjM0Nzc2ZmUxMWE1ZjE3YTI3ZDA3OTZjNzdhMmE3YTlkIl0sCglbImY4ZTUwYzI2MDQ2MDliZTJhOTVmNmQwZjMxNTUzMDgxZjRlMWE0OWEwYTMwNzc3ZmU1MWViMWM1OTZjMWE5YTkyYzA1M2NmMjhjMDMwMDAwMDAwOTY1NmE1MWFjNTI1MjYzMDA1MmZmZmZmZmZmZjc5MmVkMDEzMmFlMmJkMmYxMWQ0YTJhYWI5ZDBjNGZiZGY5YTY2ZDlhZTJkYzQxMDhhZmNjZGMxNGQyYjE3MDAxMDAwMDAwMDdhYjZhNjU2M2FjNjM2YTdiZmIyZmExMTYxMjJiNTM5ZGQ2YTJhYjA4OWY4OGYzYmM1OTIzZTUwNTBjODI2MmMxMTJmZjljZTBhM2NkNTFjNmUzZTg0ZjAyMDAwMDAwMDY2NTUxYWM1MzUyNjUwZDVlNjg3ZGRmNGNjOWE0OTcwODdjYWJlY2Y3NGQyMzZhYTRmYzMwODFjM2Y2N2I2ZDMyM2NiYTc5NWUxMGU3YTE3MWI3MjUwMDAwMDAwMDA4NTI2MzUzNTFhYjYzNTEwMGZmZmZmZmZmMDJkZjU0MDkwMjAwMDAwMDAwMDhhYzZhNTNhY2FiNTE1MTAwNDE1Njk5MDIwMDAwMDAwMDA0NTE2MzY1NTIwMDAwMDAwMCIsICJhYzUzYWJhYzY1MDA1MzAwIiwgMCwgLTE3MzA2NTAwMCwgImI1OTZmMjA2ZDdlYmEyMmI3ZTJkMWI3YTRmNGNmNjljN2M1NDFiNmM4NGRjYzk0M2Y4NGUxOWE5OWE5MjMzMTAiXSwKCVsiMTgwMjBkZDEwMTdmMTQ5ZWVjNjViMmVjMjMzMDBkOGRmMGE3ZGQ2NGZjODU1OGIzNjkwNzcyM2MwM2NkMWJhNjcyYmJiMGY1MWQwMzAwMDAwMDA1YWI2NWFiNmE2M2ZmZmZmZmZmMDM3Y2Q3YWUwMDAwMDAwMDAwMDlhYjUxNmE2NTAwNTM1MmFjNjVmMWU0MzYwNDAwMDAwMDAwMDU2MzUzNTMwMDUzZjExOGYwMDQwMDAwMDAwMDA5NTM2MzYzYWIwMDY1MDBhYmFjMDAwMDAwMDAiLCAiNjNhYjUxYWNhYjUyYWMiLCAwLCAtNTUwNDEyNDA0LCAiZTE5Yjc5NmMxNGEwMzczNjc0OTY4ZTM0MmYyNzQxZDhiNTEwOTJhNWY4NDA5ZTliZmY3ZGNkNTJlNTZmY2JjYiJdLAoJWyJiMDQxNTQ2MTAzNjNmZGFkZTU1Y2ViNjk0MmQ1ZTVhNzIzMzIzODYzYjQ4YTBjYjA0ZmRjZjU2MjEwNzE3OTU1NzYzZjU2YjA4ZDAzMDAwMDAwMDlhYzUyNmE1MjUxNTE2MzUxNTFmZmZmZmZmZjkzYTE3NmU3NjE1MWE5ZWFiZGQ3YWYwMGVmMmFmNzJmOWU3YWY1ZWNiMGFhNGQ0NWQwMDYxOGYzOTRjZGQwM2MwMzAwMDAwMDAwNzRkODE4YjMzMmViZTA1ZGMyNGM0NGQ3NzZjZjlkMjc1YzYxZjQ3MWNjMDFlZmNlMTJmZDVhMTY0NjQxNTdmMTg0MmM2NWNiMDAwMDAwMDAwNjZhMDAwMGFjNjM1MmQzYzQxMzRmMDFkOGExYzAwMzAwMDAwMDAwMDU1MjAwMDAwMDUyMDAwMDAwMDAiLCAiNTIwMDY1NmE2NTYzNTEiLCAyLCAtOTc1Nzk1NywgIjZlM2U1YmE3N2Y3NjBiNmI1YjU1NTdiMTMwNDNmMTI2MjQxOGYzZGQyY2U3ZjAyOThiMDEyODExZmM4YWQ1YmMiXSwKCVsiOTc5NGIzY2UwMzNkZjdiMWUzMmRiNjJkMmYwOTA2YjU4OWVhY2RhY2Y1NzQzOTYzZGMyMjU1YjZiOWE2Y2JhMjExZmFkZDBkNDEwMjAwMDAwMDA2MDBhYjAwNjUwMDY1ZmZmZmZmZmZhYWUwMDY4N2E2YTQxMzExNTJiYmNhYWZlZGZhZWQ0NjFjODY3NTRiMGJkZTM5ZTJiZWY3MjBlNmQxODYwYTAzMDIwMDAwMDAwNzAwNjU1MTZhYWM2NTUyZmZmZmZmZmY1MGU0ZWY3ODRkNjIzMGRmNzQ4NmU5NzJlODkxOGQ5MTlmMDA1MDI1YmMyZDlhYWNiYTEzMGY1OGJlZDcwNTY3MDMwMDAwMDAwNzUyNjVhYjUyNjU2YTUyZmZmZmZmZmYwMmM2ZjFhOTAwMDAwMDAwMDAwNjAwNTI1MTAwNjM2M2NmNDUwYzA0MDAwMDAwMDAwOGFiYWI2MzUxMDA1M2FiYWMwMDAwMDAwMCIsICJhYzAwNjNhYmFiYWI1MTUzNTMiLCAxLCAyMDYzOTA1MDgyLCAiZmFkMDkyZmM5OGYxN2MyYzIwZTEwYmE5YThlYjQ0Y2MyYmNjOTY0YjAwNmY0ZGE0NWNiOWNlYjI0OWM2OTY5OCJdLAoJWyI5NDUzM2RiNzAxNWU3MGU4ZGY3MTUwNjZlZmE2OWRiYjljM2E0MmZmNzMzMzY3YzE4YzIyZmYwNzAzOTJmOTg4ZjNiOTM5MjA4MjAwMDAwMDAwMDY1MzUzNjM2MzYzMDBjZTRkYWMzZTAzMTY5YWY4MDMwMDAwMDAwMDA4MDA2NWFjNmE1M2FjNjVhYzM5YzA1MDAyMDAwMDAwMDAwNmFiYWNhYjZhYWNhYzcwOGEwMjA1MDAwMDAwMDAwNWFjNTI1MTUyMDAwMDAwMDAwMCIsICI2NTUzIiwgMCwgLTM2MDQ1ODUwNywgIjU0MThjZjA1OWI1ZjE1Nzc0ODM2ZWRkOTM1NzFlMGVlZDM4NTViYTY3YjJiMDhjOTlkY2NhYjY5ZGM4N2QzZTkiXSwKCVsiYzg1OTdhZGEwNGY1OTgzNmYwNmMyMjRhMjY0MGI3OWYzYThhN2I0MWVmM2VmYTI2MDI1OTJkZGRhMzhlNzU5N2RhNmM2MzlmZWUwMzAwMDAwMDA5MDA1MjUxNjM1MzUxYWNhYmFjZmZmZmZmZmY0YzUxOGYzNDdlZTY5NDg4NGI5ZDQwNzJjOWU5MTZiMWExZjBhN2ZjNzRhMWM5MGM2M2ZkZjhlNWExODViNmFlMDIwMDAwMDAwMDcxMTNhZjU1YWZiNDFhZjc1MThlYTYxNDY3ODZjN2M3MjY2NDFjNjhjODgyOWE1MjkyNWU4ZDRhZmQwN2Q4OTQ1ZjY4ZTcyMzAzMDAwMDAwMDhhYjAwYWI2NWFiNjUwMDYzZmZmZmZmZmZjMjhlNDZkNzU5ODMxMmM0MjBlMTFkZmFhZTEyYWRkNjhiNGQ4NWFkYjE4MmFlNWIyOGY4MzQwMTg1Mzk0YjYzMDAwMDAwMDAwMTY1ZmZmZmZmZmYwNGRiYWJiNzAxMDAwMDAwMDAwMGVlMmY2MDAwMDAwMDAwMDAwODUyYWI2NTAwYWI2YTUxYWNiNjJhMjcwMDAwMDAwMDAwMDlhYzUzNTE1MzAwYWMwMDZhNjM0NWZiNzUwNTAwMDAwMDAwMDc1MjUxNmEwMDUxNjM2YTAwMDAwMDAwIiwgIiIsIDMsIDE1MTk5Nzg3LCAiMGQ2NjAwM2FmZjViZjc4Y2Y0OTJlY2JjOGZkNDBjOTI4OTFhY2Q1OGQwYTI3MWJlOTA2MmUwMzU4OTdmMzE3ZSJdLAoJWyIxYTI4YzRmNzAyYzhlZmFhZDk2ZDg3OWIzOGVjNjVjNTI4M2I1YzA4NGI4MTlhZDdkYjFjMDg2ZTg1ZTMyNDQ2Yzc4MThkYzdhOTAzMDAwMDAwMDg2NTYzNTE1MzZhNTI1MTY1ZmE3OGNlZjg2Yzk4MmYxYWFjOWM1ZWI4YjcwN2FlZTgzNjZmNzQ1NzRjOGY0MmVmMjQwNTk5Yzk1NWVmNDQwMWNmNTc4YmUzMDIwMDAwMDAwMmFiNTE4ODkzMjkyMjA0YzQzMGViMDEwMDAwMDAwMDAxNjUwMzEzOGEwMzAwMDAwMDAwMDQwMDUzYWJhYzYwZTBlYjAxMDAwMDAwMDAwNTUyNTIwMGFiNjM1NjdjMmQwMzAwMDAwMDAwMDRhYmFiNTIwMDZjZjgxZTg1IiwgImFiNTE1MjUxNTIiLCAxLCAyMTE4MzE1OTA1LCAiNGU0YzlhNzgxZjYyNmI1OWIxZDNhZDhmMmM0ODhlYjZkZWU4YmIxOWI5YmMxMzhiZjBkYzMzZTc3OTkyMTBkNCJdLAoJWyJjNmM3YTg3MDAzZjc3MmJjYWU5ZjNhMGFjNWU0OTkwMDBiNjg3MDNlMTgwNGI5ZGRjM2U3MzA5OTY2MzU2NGQ1M2RkYzRlMWM2ZTAxMDAwMDAwMDc2YTUzNmE2YWFjNjM2MzZlMzEwMjEyMmY0YzMwMDU2ZWY4NzExYTZiZjExZjY0MWRkZmE2OTg0YzI1YWMzOGMzYjNlMjg2ZTc0ZTgzOTE5OGE4MGEzNDAxMDAwMDAwMDE2NTg2NzE5NWNkNDI1ODIxZGZhMmYyNzljYjEzOTAwMjk4MzRjMDZmMDE4YjFlNmFmNzM4MjNjODY3YmYzYTA1MjRkMWQ2OTIzYjAzMDAwMDAwMDVhY2FiNTNhYjY1ZmZmZmZmZmYwMmZhNGM0OTAxMDAwMDAwMDAwOGFiNjU2YTAwNTI2NTAwNTNlMDAxMTAwNDAwMDAwMDAwMDA4ODM2ZDk3MiIsICJhYzUyNjM1MWFjYWIiLCAxLCA5NzgxMjI4MTUsICJhODY5YzE4YTBlZGY1NjNkNmU1ZWRkZDVkNWFlODY4NmY0MWQwN2YzOTRmOTVjOWZlYjhiN2U1Mjc2MTUzMWNhIl0sCglbIjBlYTU4MGFjMDRjOTQ5NWFiNmFmM2I4ZDU5MTA4YmI0MTk0ZmNiOWFmOTBiMzUxMWM4M2Y3YmIwNDZkODdhZWRiZjg0MjMyMThlMDIwMDAwMDAwODUxNTJhY2FjMDA2MzYzYWI5MDYzZDdkYzI1NzA0ZTBjYWE1ZWRkZTFjNmYyZGQxMzdkZWQzNzlmZjU5N2UwNTViMjk3N2I5YzU1OWIwN2E3MTM0ZmNlZjIwMDAwMDAwMDAyMDBhY2E4OWU1MDE4MWY4NmU5ODU0YWUzYjQ1M2YyMzllMjg0N2NmNjczMDBmZmY4MDI3MDdjOGUzODY3YWU0MjFkZjY5Mjc0NDQ5NDAyMDAwMDAwMDU2MzY1YWJhYmFiZmZmZmZmZmY0N2E0NzYwYzg4MWE0ZDdlNTFjNjliNjk5Nzc3MDdiZDJmYjNiY2RjMzAwZjBlZmM2MWY1ODQwZTFhYzcyY2VlMDAwMDAwMDAwMGZmZmZmZmZmMDQ2MDE3OWEwMjAwMDAwMDAwMDRhYjUzYWI1MmE1MjUwYzA1MDAwMDAwMDAwOTY1NjVhY2FjNjM2NWFiNTJhYjZjMjgxZTAyMDAwMDAwMDAwOTUyNjM1MTAwYWMwMDY1NjM2NTRlNTUwNzA0MDAwMDAwMDAwNDY1NTI1MjY1MDAwMDAwMDAiLCAiYWI1MjY1NjNhY2FjNTNhYiIsIDIsIDE0MjY5NjQxNjcsICJiMWM1MGQ1OGI3NTNlOGY2Yzc1MTM3NTIxNThlOTgwMmNmMGE3MjllYmU0MzJiOTlhY2MwZmU1ZDliNGU5OTgwIl0sCglbImMzMzAyOGIzMDFkNTA5M2UxZTgzOTcyNzBkNzVhMGIwMDliMmE2NTA5YTAxODYxMDYxYWIwMjJjYTEyMmE2YmE5MzViODUxMzMyMDIwMDAwMDAwMGZmZmZmZmZmMDEzYmNmNWEwNTAwMDAwMDAwMDE1MjAwMDAwMDAwIiwgIiIsIDAsIC01MTM0MTMyMDQsICI2YjE0NTk1MzZmNTE0ODJmNWRiZjQyZDdlNTYxODk2NTU3NDYxZTFlM2I2YmY2Nzg3MWUyYjUxZmFhZTI4MzJjIl0sCglbIjQzYjI3Mjc5MDFhN2RkMDZkZDJhYmY2OTBhMWNjZWRjMGIwNzM5Y2I1NTEyMDA3OTY2NjlkOWEyNWYyNGY3MWQ4ZDEwMTM3OWY1MDMwMDAwMDAwMGZmZmZmZmZmMDQxOGUwMzEwNDAwMDAwMDAwMDA4NjNkNzcwMDAwMDAwMDAwMDg1MzUyYWM1MjY1NjNhYzUxNzQ5MjllMDQwMDAwMDAwMDA0YWM2NWFjMDBlYzMxYWMwMTAwMDAwMDAwMDY2YTUxYWJhYmFiNTMwMDAwMDAwMCIsICI2NSIsIDAsIC00OTI4NzQyODksICIxNTRmZjdhOWYwODc1ZWRjZmI5Zjg2NTdhMGI5OGRkOTYwMGZhYmVlM2M0M2ViODhhZjM3Y2Y5OTI4NmQ1MTZjIl0sCglbIjQ3NjNlZDQ0MDFjM2U2YWIyMDRiZWQyODA1MjhlODRkNTI4OGY5Y2FjNWZiOGEyZTdiZDY5OWM3Yjk4ZDRkZjRhYzBjNDBlNTUzMDMwMDAwMDAwNjZhNmFhY2FiNTE2NWZmZmZmZmZmMDE1YjU3ZjgwNDAwMDAwMDAwMDQ2YTYzNTM1MTAwMDAwMDAwIiwgImFjNTFhYmFiNTMiLCAwLCAtNTkyNjExNzQ3LCAiODQ5MDMzYTIzMjFiNTc1NWU1NmVmNDUyN2FlNmY1MWUzMGUzYmNhNTAxNDlkNTcwNzM2ODQ3OTcyM2Q3NDRmOCJdLAoJWyJkMjRmNjQ3YjAyZjcxNzA4YTg4MGU2ODE5YTFkYzkyOWMxYTUwYjE2NDQ3ZTE1OGY4ZmY2MmY5Y2NkNjQ0ZTBjYTNjNTkyNTkzNzAyMDAwMDAwMDUwMDUzNTM2YTAwZmZmZmZmZmY2Nzg2OGNkNTQxNGI2Y2E3OTIwMzBiMThkNjQ5ZGU1NDUwYTQ1NjQwNzI0MmIyOTZkOTM2YmNmM2RiNzllMDdiMDIwMDAwMDAwMDVhZjYzMTljMDE2MDIyZjUwMTAwMDAwMDAwMDM2YTUxNjMwMDAwMDAwMCIsICI2YWFiNTI2MzUzNTE2YTZhIiwgMCwgMTM1MDc4MjMwMSwgIjg1NTZmZTUyZDFkMDc4MjM2MWRjMjhiYWFmODc3NGIxM2YzY2U1ZWQ0ODZhZTBmMTI0YjY2NTExMWUwOGUzZTMiXSwKCVsiZmU2ZGRmM2EwMjY1N2U0MmE3NDk2ZWYxNzBiNGE4Y2FmMjQ1YjkyNWI5MWM3ODQwZmQyOGU0YTIyYzAzY2I0NTljYjQ5OGI4ZDYwMzAwMDAwMDA2NTI2MzY1NmE2NTAwNzFjZTZiZjhkOTA1MTA2ZjlmMWZhZjY0ODgxNjRmM2RlY2FjNjViZjNjNWFmZTFkY2VlMjBlNmJjM2NiNmQwNTI1NjE5ODVhMDMwMDAwMDAwMTYzMjk1YjExNzYwMTM0M2RiYjAwMDAwMDAwMDAwMjY1NjNkYmE1MjFkZiIsICIiLCAxLCAtMTY5NjE3OTkzMSwgImQ5Njg0Njg1Yzk5Y2U0OGYzOThmYjQ2N2E5MWExYTU5NjI5YTg1MGM0MjkwNDZmYjMwNzFmMWZhOWE1ZmU4MTYiXSwKCVsiYzYxNTIzZWYwMTI5YmIzOTUyNTMzY2JmMjJlZDc5N2ZhMjA4OGYzMDc4MzdkZDBiZTE4NDlmMjBkZWNmNzA5Y2Y5OGM2ZjAzMmYwMzAwMDAwMDAyNjU2M2MwZjFkMzc4MDQ0MzM4MzEwNDAwMDAwMDAwMDY2MzYzNTE2YTUxNjVhMTRmY2IwNDAwMDAwMDAwMDk1MTYzNTM2YTZhMDBhYjUzNjU3MjcxZDYwMjAwMDAwMDAwMDAxZDk1M2YwNTAwMDAwMDAwMDEwMDAwMDAwMDAwIiwgIjUzNTE2MzUzMDA1MTUzIiwgMCwgMTE0MTYxNTcwNywgIjdlOTc1YTcyZGI1YWRhYTNjNDhkNTI1ZDljMjhhYzExY2YxMTZkMGY4YjE2Y2UwOGY3MzVhZDc1YTgwYWVjNjYiXSwKCVsiYmEzZGFjNmMwMTgyNTYyYjBhMjZkNDc1ZmUxZTM2MzE1ZjA5MTNiNjg2OWJkYWQwZWNmMjFmMTMzOWE1ZmNiY2NkMzIwNTZjODQwMjAwMDAwMDAwZmZmZmZmZmYwNDMwMDM1MTA1MDAwMDAwMDAwMDIyMGVkNDA1MDAwMDAwMDAwODUxYWJhYzYzNjU2NWFjNTNkYmJkMTkwMjAwMDAwMDAwMDc2MzYzNjNhYzZhNTJhY2JiMDA1YTA1MDAwMDAwMDAwMTZhYmQwYzc4YTgiLCAiNjMwMDZhNjM1MTUxMDA1MzUyIiwgMCwgMTM1OTY1ODgyOCwgIjQ3YmM4YWIwNzAyNzNlMWY0YTA3ODljMzdiNDU1NjlhNmUxNmYzZjMwOTJkMWNlOTRkZGRjM2MzNGEyOGY5ZjQiXSwKCVsiYWMyN2U3ZjUwMjVmYzg3N2QxZDk5ZjdmYzE4ZGQ0Y2FkYmFmYTUwZTM0ZTE2NzY3NDhjYzg5YzIwMmY5M2FiZjM2ZWQ0NjM2MjEwMTAwMDAwMDAzNjMwMGFiZmZmZmZmZmY5NThjZDUzODE5NjJiNzY1ZTE0ZDg3ZmM5NTI0ZDc1MWU0NzUyZGQ2NjQ3MWY5NzNlZDM4YjlkNTYyZTUyNTYyMDEwMDAwMDAwMzAwNjUwMGZmZmZmZmZmMDJiNjcxMjAwNTAwMDAwMDAwMDRhYzUxNTE2YWRjMzMwYzAzMDAwMDAwMDAwMTUyMDAwMDAwMDAiLCAiNjU2MzUyIiwgMSwgMTUwNDk5OTEsICJmMzM3NDI1M2Q2NGFjMjY0MDU1YmRiY2MzMmUyNzQyNjQxNmJkNTk1YjdjNzkxNTkzNmM3MGY4MzllNTA0MDEwIl0sCglbImVkYjMwMTQwMDI5MTgyYjgwYzhjMzI1NWI4ODhmN2M3ZjA2MWM0MTc0ZDFkYjQ1ODc5ZGNhOThjOWFhYjhjOGZlZDY0N2E2ZmZjMDMwMDAwMDAwODZhNTM1MTAwNTJhYjYzMDBmZmZmZmZmZjgyZjY1ZjI2MWRiNjJkNTE3MzYyYzg4NmM0MjljOGZiYmVhMjUwYmNhYWQ5MzM1NmJlNmY4NmJhNTczZTlkOTMwMTAwMDAwMDAwZmZmZmZmZmYwNGRhYWYxNTA0MDAwMDAwMDAwMTZhODZkMTMwMDEwMDAwMDAwMDA5NmE2MzUzNTM1MjUyYWM1MTY1ZDRkZGFmMDAwMDAwMDAwMDAyYWJhYjVmMWM2MjAxMDAwMDAwMDAwMDAwMDAwMDAwIiwgImFiNmE2YTAwYWMiLCAwLCAtMjA1ODAxNzgxNiwgIjhkNzc5NDcwM2RhZDE4ZTJlNDBkODNmM2U2NTI2OTgzNGJiMjkzZTJkMmI4NTI1OTMyZDY5MjE4ODRiOGYzNjgiXSwKCVsiN2U1MDIwNzMwMzE0NmQxZjdhZDYyODQzYWU4MDE3NzM3YTY5ODQ5OGQ0YjkxMThjN2E4OWJiMDJlODM3MDMwN2ZhNGZhZGE0MWQwMDAwMDAwMDA3NTMwMDYzMDAwMDUxNTJiN2FmZWZjODU2NzRiMTEwNGJhMzNlZjJiZjM3YzZlZDI2MzE2YmFkYmMwYjRhYTZjYjhiMDA3MjJkYTRmODJmZjM1NTVhNmMwMjAwMDAwMDA5MDBhYzY1NjM2M2FjNTFhYzUyZmZmZmZmZmY5M2ZhYjg5OTczYmQzMjJjNWQ3YWQ3ZTJiOTI5MzE1NDUzZTVmN2FkYTMwNzJhMzZkOGUzM2NhOGJlYmVlNmUwMDIwMDAwMDAwMzAwYWNhYjkzMGRhNTJiMDQzODRiMDQwMDAwMDAwMDAwMDQ2NTAwNTJhYzQzNWUzODAyMDAwMDAwMDAwNzZhNmE1MTUyNjNhYjZhYTk0OTQ3MDUwMDAwMDAwMDA2MDBhYjZhNTI1MjUyYWY4YmE5MDEwMDAwMDAwMDA5NjU2NWFjYWI1MjYzNTM1MzZhMjc5YjE3YWQiLCAiYWNhYzAwNTI2MzUzNmFhYzYzIiwgMSwgLTM0NzU0MTMzLCAiNGU2MzU3ZGEwMDU3ZmI3ZmY3OWRhMmNjMGYyMGM1ZGYyN2ZmOGIyZjhhZjRjMTcwOWU2NTMwNDU5Zjc5NzJiMCJdLAoJWyJjMDU3NjRmNDAyNDRmYjRlYmU0YzU0ZjJjNTI5OGM3Yzc5OGFhOTBlNjJjMjk3MDlhY2NhMGI0YzJjNmVjMDg0MzBiMjYxNjc0NDAxMDAwMDAwMDhhY2FiNmE2NTY1MDA1MjUzZmZmZmZmZmZjMDJjMjQxOGYzOTgzMThlN2YzNGEzY2Y2NjlkMDM0ZWVmMjExMWVhOTViOWYwOTc4YjAxNDkzMjkzMjkzYTg3MDEwMDAwMDAwMGU1NjNlMmUwMDIzOGVlOGQwNDAwMDAwMDAwMDJhY2FiMDNmYjA2MDIwMDAwMDAwMDA3NjUwMGFjNjU2YTUxNmFhMzdmNTUzNCIsICI1MmFiNmEwMDY1IiwgMSwgLTIwMzMxNzY2NDgsICI4M2RlZWY0YTY5OGI2MmE3OWQ0ODc3ZGQ5YWZlYmMzMDExYTUyNzVkYmUwNmU4OTU2N2U5ZWY4NGU4YTRlZTE5Il0sCglbIjVhNTllMGI5MDQwNjU0YTM1OTZkNmRhYjgxNDY0NjIzNjNjZDY1NDk4OThjMjZlMjQ3NmIxZjZhZTQyOTE1ZjczZmQ5YWVkZmRhMDAwMDAwMDAwMzYzNjNhYmZmZmZmZmZmOWFjOWU5Y2E5MGJlMDE4N2JlMjIxNDI1MWZmMDhiYTExOGU2YmY1ZTJmZDFiYTU1MjI5ZDI0ZTUwYTUxMGQ1MzAxMDAwMDAwMDE2NWZmZmZmZmZmNDFkNDJkNzk5YWM0MTA0NjQ0OTY5OTM3NTIyODczYzA4MzRjYzJmY2RhYjdjZGJlY2Q4NGQyMTNjMGU5NmZkNjAwMDAwMDAwMDBmZmZmZmZmZmQ4MzhkYjJjMWE0ZjMwZTJlYWE3ODc2ZWY3Nzg0NzBmODcyOWZjZjI1OGFkMjI4YjM4OGRmMjQ4ODcwOWY4NDEwMzAwMDAwMDAwZmRmMmFjZTAwMmNlYjZkOTAzMDAwMDAwMDAwMjY1NjU0YzEzMTAwNDAwMDAwMDAwMDNhYzAwNjU3ZTkxYzBlYyIsICI1MzZhNjNhYyIsIDAsIDgyMTQ0NTU1LCAiOThjY2RlMmRjMTRkMTRmNWQ4YjFlZWVhNTM2NGJkMThmYzg0NTYwZmVjMmZjZWE4ZGU0ZDg4YjQ5YzAwNjk1ZSJdLAoJWyIxNTZlYmM4MjAyMDY1ZDBiMTE0OTg0ZWU5OGMwOTc2MDBjNzVjODU5YmZlZTEzYWY3NWRjOTNmNTdjMzEzYTg3N2VmYjA5ZjIzMDAxMDAwMDAwMDQ2MzUzNmE1MWZmZmZmZmZmODExMTRlOGE2OTdiZTNlYWQ5NDhiNDNiNTAwNTc3MGRkODdmZmIxZDVjY2Q0MDg5ZmE2YzhiMzNkMzAyOWU5YzAzMDAwMDAwMDY2YTUyNTE2NTYzNTFmZmZmZmZmZjAxYTg3ZjE0MDAwMDAwMDAwMDA1MDAwMGFjNTFhYzAwMDAwMDAwIiwgIjAwIiwgMCwgLTM2MjIyMTA5MiwgImE5MDNjODRkOGM1ZTcxMTM0ZDFhYjZkYzFlMjFhYzMwN2M0YzFhMzJjOTBjOTBmNTU2ZjI1N2I4YTBlYzFiZjUiXSwKCVsiMTVlMzc3OTMwMjNjN2NiZjQ2ZTA3MzQyODkwOGZjZTAzMzFlNDk1NTBmMmE0MmI5MjQ2ODgyNzg1MjY5M2YwNTMyYTAxYzI5ZjcwMjAwMDAwMDA3MDA1MzUzNjM2MzUxYWNmZmZmZmZmZjM4NDI2ZDljZWMwMzZmMDBlYjU2ZWMxZGNkMTkzNjQ3ZTU2YTc1NzcyNzg0MTdiOGE4NmE3OGFjNTMxOTliYzQwMzAwMDAwMDA1NjM1MzAwNmE1M2ZmZmZmZmZmMDRhMjVjZTEwMzAwMDAwMDAwMDkwMGFiNTM2NTY1NmE1MjZhNjNjOGVmZjcwMzAwMDAwMDAwMDQ1MjYzNTM1MzdhYjZkYjAyMDAwMDAwMDAwMTZhMTFhM2ZhMDIwMDAwMDAwMDA2NTFhY2FjYWI1MjY1MDAwMDAwMDAiLCAiNTNhYzZhYWI2YTY1NTEiLCAwLCAxMTE3NTMyNzkxLCAiODNjNjhiM2M1YTg5MjYwY2UxNmNlOGI0ZGJmMDJlMWY1NzNjNTMyZDlhNzJmNWVhNTdhYjQxOWZhMjYzMDIxNCJdLAoJWyJmN2EwOWYxMDAyNzI1MGZjMWI3MDM5OGZiNWM2YmZmZDJiZTk3MThkM2RhNzI3ZTg0MWE3MzU5NmZkZDYzODEwYzllNDUyMGE2YTAxMDAwMDAwMDk2M2FjNTE2YTYzNmE2NWFjYWMxZDJlMmM1N2FiMjhkMzExZWRjNGY4NThjMTY2Mzk3MmVlYmMzYmJjOTNlZDc3NDgwMTIyN2ZkYTY1MDIwYTdlYzE5NjVmNzgwMjAwMDAwMDA1YWM1MjUyNTE2YTgyOTlmZGRjMDFkY2JmNzIwMDAwMDAwMDAwMDQ2M2FjNjU1MTk2MGZkYTAzIiwgIjY1YWNhYjUxIiwgMSwgMjAxNzMyMTczNywgIjljNWZhMDJhYmZkMzRkMGY5ZGVjMzJiZjNlZGIxMDg5ZmNhNzAwMTZkZWJkYjQxZjRmNTRhZmZjYjEzYTJhMmEiXSwKCVsiNmQ5N2E5YTUwMjkyMjBlMDRmNGNjYzM0MmQ4Mzk0Yzc1MTI4MmMzMjhiZjFjMTMyMTY3ZmMwNTU1MWQ0Y2E0ZGE0Nzk1ZjZkNGUwMjAwMDAwMDA3NmEwMDUyYWI1MjUxNjVmZmZmZmZmZjk1MTZhMjA1ZTU1NWZhMmExNmI3M2U2ZGI2YzIyM2E5ZTc1OWE3ZTA5YzlhMTQ5YThmMzc2YzBhNzIzM2ZhMWIwMTAwMDAwMDA3YWNhYjUxYWI2M2FjNmFmZmZmZmZmZjA0ODY4YWVkMDQwMDAwMDAwMDA2NTJhYzY1YWM1MzZhMzk2ZWRmMDEwMDAwMDAwMDAwNDQzODZjMDAwMDAwMDAwMDA3NmFhYjUzNjM2NTUyMDA4OTRkNDgwMTAwMDAwMDAwMDFhYjhlYmVmYzIzIiwgIjYzNTE1MjZhYWM1MSIsIDEsIDE5NDM2NjY0ODUsICJmMGJkNGNhOGU5NzIwM2I5YjRlODZiYzI0YmRjOGExYTcyNmRiNWU5OWI5MTAwMGExNDUxOWRjODNmYzU1YzI5Il0sCglbIjhlM2ZkZGZiMDI4ZDllNTY2ZGZkZGEyNTFjZDg3NGNkM2NlNzJlOWRkZTgzN2Y5NTM0M2U5MGJkMmE5M2ZlMjFjNWRhZWI1ZWVkMDEwMDAwMDAwNDUxNTE1MjUxNDA1MTdkYzgxODE4MWYxZTc1NjRiOGIxMDEzZmQ2OGEyZjlhNTZiZDg5NDY5Njg2MzY3YTBlNzJjMDZiZTQzNWNmOTlkYjc1MDAwMDAwMDAwMzYzNTI1MWZmZmZmZmZmMDFjMDUxNzgwMzAwMDAwMDAwMDk2NTUyYWJhYmFjNmE2NWFjYWIwOTk3NjZlYiIsICI1MTYzYWI2YTUyYWJhYmFiNTEiLCAxLCAxMjk2Mjk1ODEyLCAiNTUwOWViYTAyOWNjMTFkN2RkMjgwOGI4YzllYjQ3YTE5MDIyYjhkOGI3Nzc4ODkzNDU5YmJjMTlhYjdlYTgyMCJdLAoJWyJhNjAzZjM3YjAyYTM1ZTVmMjVhYWU3M2QwYWRjMGI0YjQ3OWU2OGE3MzRjZjcyMjcyM2ZkNGUwMjY3YTI2NjQ0YzM2ZmFlZmRhYjAyMDAwMDAwMDBmZmZmZmZmZjQzMzc0YWQyNjgzOGJmNzMzZjgzMDI1ODViMGY5YzIyZTViODE3OTg4ODAzMGRlOWJkZGExODAxNjBkNzcwNjUwMjAwMDAwMDAxMDA0YzczMDljZTAxMzc5MDk5MDQwMDAwMDAwMDA1NTI2NTUyNTM2NTAwMDAwMDAwIiwgImFiYWJhYmFiMDA1MTUzIiwgMCwgMTQwOTkzNjU1OSwgIjRjYTczZGE0ZmNkNWYxYjEwZGEwNzk5ODcwNmZmZTE2NDA4YWE1ZGZmN2NlYzQwYjUyMDgxYTY1MTRlMzgyN2UiXSwKCVsiOWVlZWRhYTgwMzQ0NzFhM2EwZTMxNjU2MjBkMTc0MzIzNzk4NmYwNjBjNDQzNGYwOTVjMjI2MTE0ZGNiNGI0ZWM3ODI3NDcyOWYwMzAwMDAwMDA4NmE1MzY1NTEwMDUyYWM2YWZiNTA1YWYzNzM2ZTM0N2UzZjI5OWE1OGIxYjk2OGZjZTBkNzhmNzQ1N2Y0ZWFiNjkyNDBjYmM0MDg3MmZkNjFiNWJmOGIxMjAyMDAwMDAwMDJhYzUyZGY4MjQ3Y2Y5NzliOTVhNGM5N2VjYjhlZGYyNmIzODMzZjk2NzAyMGNkMmZiMjUxNDZhNzBlNjBmODJjOWVlNGIxNGU4OGIxMDMwMDAwMDAwMDg0NTllMmZhMDEyNWNiY2QwNTAwMDAwMDAwMDAwMDAwMDAwMCIsICI1MmFiNTM1MjAwNjM1MzUxNmEiLCAwLCAtMTgzMjU3NjY4MiwgImZiMDE4YWU1NDIwNmZkZDIwYzgzYWU1ODczZWM4MmI4ZTMyMGEyN2VkMGQwNjYyZGIwOWNkYThhMDcxZjk4NTIiXSwKCVsiMDU5MjFkN2MwNDhjZjI2Zjc2YzEyMTlkMDIzN2MyMjY0NTRjMmE3MTNjMThiZjE1MmFjYzgzYzhiMDY0N2E5NGIxMzQ3N2MwN2YwMzAwMDAwMDAzYWM1MjZhZmZmZmZmZmZmMmY0OTQ0NTNhZmEwY2FiZmZkMWJhMGE2MjZjNTZmOTA2ODEwODdhNWMxYmQ4MWQ2YWRlYjg5MTg0YjI3Yjc0MDIwMDAwMDAwMzZhNjM1MmZmZmZmZmZmMGFkMTBlMmQzY2UzNTU0ODFkMWIyMTUwMzA4MjBkYTQxMWQzZjU3MWMzZjE1ZThkYWYyMmZlMTUzNDJmZWQwNDAwMDAwMDAwMDA5NWYyOWY3YjkzZmY4MTRhOTgzNmY1NGRjNjg1MmVjNDE0ZTljNGUxNmE1MDY2MzY3MTVmNTY5MTUxNTU5MTAwY2NmZWMxZDEwMDAwMDAwMDA1NTI2MzY1NmE1M2ZmZmZmZmZmMDRmNGZmZWYwMTAwMDAwMDAwMDhhYzZhNmFhYmFjYWJhYjZhMGU2Njg5MDQwMDAwMDAwMDA2YWI1MzZhNTM1MmFiZTM2NGQwMDUwMDAwMDAwMDA5NjU1MzYzNjM2NTUyNTFhYjUzODA3ZTAwMDEwMDAwMDAwMDA0NTI2YWFiNjNmMTgwMDNlMyIsICI2MzYzYWM1MSIsIDMsIC0zNzU4OTEwOTksICIwMDFiMGIxNzZmMDQ1MWRmZTJkOTc4N2I0MjA5N2NlYjYyYzcwZDMyNGU5MjVlYWQ0YzU4YjA5ZWViZGY3ZjY3Il0sCglbImI5YjQ0ZDlmMDRiOWYxNWU3ODdkNzcwNGU2Nzk3ZDUxYmM0NjM4MjE5MGMzNmQ4ODQ1ZWM2OGRmZDYzZWU2NGNmN2E0NjdiMjFlMDAwMDAwMDAwOTZhYWMwMDUzMDA1MmFiNjM2YWJhMWJjYjExMGE4MGM1Y2JlMDczZjEyYzczOWUzYjIwODM2YWEyMTdhNDUwNzY0OGQxMzNhOGVlZGQzZjAyY2I1NWMxMzJiMjAzMDAwMDAwMDc2YTAwMDA2MzUyNjM1MmIxYzI4OGUzYTlmZjFmMmRhNjAzZjIzMGIzMmVmN2MwZDQwMmJkY2Y2NTI1NDVlMjMyMmFjMDFkNzI1ZDc1ZjUwMjQwNDhhZDAxMDAwMDAwMDBmZmZmZmZmZmZmZDg4MmQ5NjNiZTU1OTU2OWM5NGZlYmMwZWYyNDE4MDFkMDlkYzY5NTI3Yzk0OTAyMTBmMDk4ZWQ4MjAzYzcwMDAwMDAwMDA1NmEwMDYzMDBhYjkxMDkyOThkMDE3MTlkOWEwMzAwMDAwMDAwMDY2YTUyYWIwMDYzNjVkNzg5NGM1YiIsICJhYzYzNTE2NTAwNjM2MzZhIiwgMywgLTYyMjM1NTM0OSwgImFjODdiMWI5M2E2YmFhYjZiMmM2NjI0ZjEwZThlYmY2ODQ5YjAzNzhlZjk2NjBhMzMyOTA3M2U4ZjU1NTNjOGQiXSwKCVsiZmY2MDQ3M2IwMjU3NGY0NmQzZTQ5ODE0YzQ4NDA4MWQxYWRiOWIxNTM2N2JhODQ4NzI5MWZjNjcxNGZkNmUzMzgzZDViMzM1ZjAwMTAwMDAwMDAyNmE2YWUwYjgyZGEzZGM3N2U1MDMwZGIyM2Q3N2I1OGMzYzIwZmEwYjcwYWE3ZDM0MWEwZjk1ZjNmNzI5MTIxNjVkNzUxYWZkNTcyMzAzMDAwMDAwMDhhYzUzNjU2MzUxNmE2MzYzZmZmZmZmZmYwNGY4NmMwMjAwMDAwMDAwMDAwNTUzYWNhYjYzNmFiMTMxMTEwMDAwMDAwMDAwMDM1MTAwNjVmMGQzZjMwNTAwMDAwMDAwMDk1MWFiNTE2YTY1NTE2YWFiYWI3MzBhM2EwMTAwMDAwMDAwMDI1MTUyMDAwMDAwMDAiLCAiYWM2YSIsIDEsIDE4OTUwMzIzMTQsICIwNzY3ZTA5YmJhOGNkNjZkNTU5MTU2NzdhMWM3ODFhY2Q1MDU0ZjUzMGQ1Y2Y2ZGUyZDM0MzIwZDZjNDY3ZDgwIl0sCglbImYyMTgwMjYyMDRmNGY0ZmMzZDNiZDBlYWRhMDdjNTdiODg1NzBkNTQ0YTA0MzZhZTlmOGI3NTM3OTJjMGMyMzk4MTBiYjMwZmJjMDIwMDAwMDAwMjUzNmFmZmZmZmZmZjhhNDY4OTI4ZDZlYzRjYzEwYWEwZjczMDQ3Njk3OTcwZTk5ZmE2NGFlOGEzYjRkY2E3NTUxZGViMGI2MzkxNDkwMTAwMDAwMDA4NTFhYjUyMDA1MjY1MDA1MWZmZmZmZmZmYTk4ZGM1ZGYzNTcyODljOWY2ODczZDBmNWFmY2I1YjAzMGQ2MjllOGYyM2FhMDgyY2YwNmVjOWE5NWYzYjBjZjAwMDAwMDAwMDBmZmZmZmZmZmVhMmMyODUwYzUxMDc3MDVmZDM4MGQ2ZjI5YjAzZjUzMzQ4MmZkMDM2ZGI4ODczOTEyMmFhYzllZmYwNGUwYWEwMTAwMDAwMDAzNjU1MzZhMDNiZDM3ZGIwMzRhYzRjNDAyMDAwMDAwMDAwNzUxNTE1MjY1NTIwMGFjMzNiMjc3MDUwMDAwMDAwMDAxNTFlZmI3MWUwMDAwMDAwMDAwMDA3YjY1NDI1YiIsICI1MTUxNTEiLCAzLCAtMTc3MjI1MjA0MywgImRlMzVjODRhNThmMjQ1OGMzM2Y1NjRiOWU1OGJjNTdjM2UwMjhkNjI5Zjk2MWFkMWIzYzEwZWUwMjAxNjZlNWEiXSwKCVsiNDhlN2Q0MjEwM2IyNjBiMjc1NzdiNzA1MzBkMWFjMmZlZDI1NTFlOWRkNjA3Y2JjZjY2ZGNhMzRiYjhjMDM4NjJjZjhmNWZkNTQwMTAwMDAwMDA3NTE1MTUyNmFhY2FiMDBmZmZmZmZmZjFlM2QzYjg0MTU1MmY3YzZhODNlZTM3OWQ5ZDY2NjM2ODM2NjczY2UwYjBlZGE5NWFmOGYyZDI1MjNjOTE4MTMwMzAwMDAwMDA2NjVhY2FjMDA2MzY1ZmZmZmZmZmYzODhiM2MzODZjZDhjOWVmNjdjODNmM2VhZGRjNzlmMWZmOTEwMzQyNjAyYzkxNTJmZmU4MDAzYmNlNTFiMjhiMDEwMDAwMDAwODYzNjM2MzAwNmE2MzZhNTJmZmZmZmZmZjA0YjhmNjc3MDMwMDAwMDAwMDA4NTIwMDUzNTNhYzY1NTI1MjBjZWY3MjAyMDAwMDAwMDAwODUxNTFhYjYzNTJhYjAwYWI1MDk2ZDYwMzAwMDAwMDAwMDU1MTZhMDA1MTAwNjYyNTgyMDIwMDAwMDAwMDAxYWM2YzEzNzI4MCIsICI2YTY1IiwgMSwgMTUxMzYxODQyOSwgImUyZmEzZTE5NzZhZWQ4MmMwOTg3YWIzMGQ0NTQyZGEyY2IxY2ZmYzJmNzNiZTEzNDgwMTMyZGE4Yzg1NThkNWMiXSwKCVsiOTFlYmM0Y2YwMWJjMWUwNjhkOTU4ZDcyZWU2ZTk1NGIxOTZmMWQ4NWIzZmFmNzVhNTIxYjg4YTc4MDIxYzU0M2EwNmUwNTYyNzkwMDAwMDAwMDAyNjVhYjdjMTJkZjA1MDM4MzIxMjEwMzAwMDAwMDAwMDBjYzQxYTYwMTAwMDAwMDAwMDVhYjUyNjM1MTY1NDBhOTUxMDUwMDAwMDAwMDA2YWI2M2FiNjVhY2FjMDAwMDAwMDAiLCAiNTI2YTAwNjU2MzZhNmE2YWFjIiwgMCwgLTYxNDA0NjQ3OCwgIjdkZTRiYTg3NWIyZTU4NGE3YjY1ODgxOGMxMTJlNTFlZTVlODYyMjZmNWE4MGU1ZjZiMTU1MjhjODY0MDA1NzMiXSwKCVsiM2NkNDQ3NDIwMWJlN2E2YzI1NDAzYmYwMGNhNjJlMmFhOGY4ZjRmNzAwMTU0ZTFiYjRkMThjNjZmN2JiN2Y5Yjk3NTY0OWYwZGMwMTAwMDAwMDA2NTM1MTUxNTM1MTUzZmZmZmZmZmYwMWZlYmJlYjAwMDAwMDAwMDAwNjAwNTE1MTAwNmFhYzAwMDAwMDAwIiwgIiIsIDAsIC0xNjc0Njg3MTMxLCAiNmI3N2NhNzBjYzQ1MmNjODlhY2I4M2I2OTg1N2NkYTk4ZWZiZmMyMjE2ODhmZTgxNmVmNGNiNGZhZjE1MmY4NiJdLAoJWyI5MmZjOTVmMDAzMDdhNmIzZTI1NzJlMjI4MDExYjljOWVkNDFlNThkZGJhZWZlM2IxMzkzNDNkYmZiM2IzNDE4MmU5ZmNkYzNmNTAyMDAwMDAwMDJhY2FiODQ3YmYxOTM1ZmRlOGJjZmU0MWM3ZGQ5OTY4MzI4OTI5Mjc3MGU3ZjE2M2FkMDlkZWZmMGUwNjY1ZWQ0NzNjZDJiNTZiMGY0MDMwMDAwMDAwNjUxNjU1MWFiNjM1MTI5NGRhYjMxMmRkODdiOTMyN2NlMmU5NWViNDRiNzEyY2ZhZTBlNTBmZGExNWIwNzgxNmM4MjgyZTgzNjViNjQzMzkwZWFhYjAxMDAwMDAwMDI2YWFjZmZmZmZmZmYwMTZlMGI2YjA0MDAwMDAwMDAwMWFjMDAwMDAwMDAiLCAiNjUwMDY1YWNhYzAwNTMwMCIsIDIsIC0xODg1MTY0MDEyLCAiYmQ3ZDI2YmIzYTk4ZmM4YzkwYzk3MjUwMDYxOGJmODk0Y2IxYjRmZTM3YmY1NDgxZmY2MGVlZjQzOWQzYjk3MCJdLAoJWyI0ZGI1OTFhYjAxOGFkY2VmNWY0ZjNmMjA2MGU0MWY3ODI5Y2UzYTA3ZWE0MWQ2ODFlOGNiNzBhMGUzNzY4NTU2MWU0NzY3YWMzYjAwMDAwMDAwMDUwMDAwNTJhY2FiZDI4MGU2MzYwMWFlNmVmMjAwMDAwMDAwMDAwMzZhNjM2MzI2YzkwOGY3IiwgImFjNmE1MTUyNjMwMDYzMDA1MiIsIDAsIDg2Mjg3NzQ0NiwgIjM1NWNjYWYzMDY5N2M5YzViOTY2ZTYxOWE1NTRkMzMyM2Q3NDk0YzNlYTI4MGE5YjBkZmI3M2Y5NTNmNWMxY2IiXSwKCVsiNTAzZmQ1ZWYwMjllMWJlYjdiMjQyZDEwMDMyYWMyNzY4ZjlhMWFjYTBiMGZhZmZlNTFjZWMyNDc3MDY2NGVjNzA3ZWY3ZWRlNGYwMTAwMDAwMDA0NTI1M2FjNTMzNzVlMzUwY2M3Nzc0MWI4ZTk2ZWIxY2UyZDNjYTkxODU4YzA1MmU1ZjU4MzBhMDE5MzIwMGFlMmE0NWI0MTNkZGEzMTU0MWYwMDAwMDAwMDAzNTE2NTUzZmZmZmZmZmYwMTc1YTViYTA1MDAwMDAwMDAwMTUyMDAwMDAwMDAiLCAiNmFhYjY1NTEwMDUzYWI2NSIsIDEsIDE2MDMwODEyMDUsICIzNTNjYTk2MTljY2IwMjEwYWUxOGIyNGQwZTU3ZWZhN2FiZjhlNThmYTZmNzEwMjczOGU1MWU4ZTcyYzlmMGM0Il0sCglbImM4MGFiZWJkMDQyY2ZlYzNmNWMxOTU4ZWU2OTcwZDJiNDU4NmUwYWJlYzgzMDVlMWQ5OWViOWVlNjllY2M2YzJjYmQ3NjM3NDM4MDAwMDAwMDAwN2FjNTMwMDYzMDBhYzUxMGFjZWU5MzNiNDQ4MTdkYjc5MzIwZGY4MDk0YWYwMzlmZDgyMTExYzc3MjZkYTNiMzMyNjlkMzgyMDEyMzY5NGQ4NDllZTUwMDEwMDAwMDAwNTZhNjVhYjUyNjU2MjY5OWJlYTg1MzBkYzkxNmY1ZDYxZjBiYWJlYTcwOWRhYzU3ODc3NGU4YTRkY2Q5YzY0MGVjM2FjZWI2Y2IyNDQzZjI0ZjMwMjAwMDAwMDAyMDA2M2VhNzgwZTllNTdkMWU0MjQ1YzFlNWRmMTliNDU4MmYxYmY3MDQwNDljNTY1NGY0MjZkNzgzMDY5YmNjMDM5ZjJkOGZhNjU5ZjAzMDAwMDAwMDg1MWFiNTM2MzUyMDAwMDZhOGQwMGRlMGIwMzY1NGU4NTAwMDAwMDAwMDAwNDYzYWI2MzUxNzhlYmJiMDQwMDAwMDAwMDA1NTEwMDYzNmFhYjIzOWYxZDAzMDAwMDAwMDAwNmFiMDA2MzAwNTM2NTAwMDAwMDAwIiwgIjY1NjVhYzUxNTEwMCIsIDMsIDE0NjA4NTEzNzcsICJiMzViYjFiNzJkMDJmYWI4NjZlZDZiYmJlYTk3MjZhYjMyZDk2OGQzM2E3NzY2ODZkZjNhYzE2YWE0NDU4NzFlIl0sCglbIjAzMzdiMmQ1MDQzZWI2OTQ5YTc2ZDY2MzJiOGJiMzkzZWZjN2ZlMjYxMzBkNzQwOWVmMjQ4NTc2NzA4ZTJkN2Y5ZDBjZWQ5ZDMxMDIwMDAwMDAwNzUzNTI2MzZhNTE2MzAwNzAzNDM4NGRmYTIwMGY1MjE2MDY5MGZlYTZjZTZjODJhNDc1YzBlZjFjYWY1YzllNWEzOWY4ZjlkZGMxYzgyOTdhNWFhMGViMDIwMDAwMDAwMjZhNTFmZmZmZmZmZjM4ZTUzNjI5ODc5OTYzMTU1MGY3OTMzNTc3OTVkNDMyZmIyZDQyMzFmNGVmZmExODNjNGUyZjYxYTgxNmJjZjAwMzAwMDAwMDA0NjNhYzUzMDA3MDZmMWNkMzQ1NDM0NGU1MjFmZGUwNWI1OWI5NmU4NzVjODI5NTI5NGRhNWQ4MWQ2Y2M3ZWZjZmU4MTI4ZjE1MGFhNTRkNjUwMzAwMDAwMDAwOGY0YTk4YzcwNGMxNTYxNjAwMDAwMDAwMDAwMDcyY2ZhNjAwMDAwMDAwMDAwMGU0M2RlZjAxMDAwMDAwMDAwMTAwY2YzMWNjMDUwMDAwMDAwMDA2NjM2NTUyNmE2NTAwY2JhYThlMmUiLCAiIiwgMywgMjAyOTUwNjQzNywgIjc2MTViNGE3YjNiZTg2NTYzM2EzMWUzNDZiYzNkYjBiY2M0MTA1MDJjODM1OGE2NWI4MTI3MDg5ZDgxYjAxZjgiXSwKCVsiNTlmNmNmZmQwMzQ3MzNmNDYxNmEyMGZlMTllYTZhYWY2YWJkZGIzMGI0MDhhM2E2YmQ4NmNkMzQzYWI2ZmU5MGRjNTgzMDBjYzkwMjAwMDAwMDAwZmZmZmZmZmZjODM1NDMwYTA0YzM4ODIwNjZhYmU3ZGVlYjBmYTFmZGFlZjAzNWQzMjMzNDYwYzY3ZDllYWJkYjA1ZTk1ZTVhMDIwMDAwMDAwODAwNjVhYzUzNTM1M2FiMDBmZmZmZmZmZjRiOWEwNDNlODlhZDFiNGExMjljODc3N2IwZThkODdhMDE0YTBhYjZhM2QwM2UxMzFjMjczMzdiYmRjYjQzYjQwMjAwMDAwMDA2NmE1MTAwYWJhYzZhZDllOWJmNjIwMTRiYjExODAxMDAwMDAwMDAwMTUyNmNiZTQ4NGYiLCAiYWI1MjYzNTJhYjY1IiwgMCwgMjEwMzUxNTY1MiwgIjRmMmNjZjk4MTU5ODYzOWJlYzU3Zjg4NWI0YzNkOGVhOGRiNDQ1ZWE2ZTYxY2ZkNDU3ODljNjkzNzQ4NjJlNWUiXSwKCVsiY2JjNzliMTAwMjBiMTVkNjA1NjgwYTI0ZWUxMWQ4MDk4YWQ5NGFlNTIwM2NiNmIwNTg5ZTQzMjgzMmUyMGMyN2I3MmE5MjZhZjIwMzAwMDAwMDA2YWI2NTUxNmE1M2FjYmI4NTRmMzE0NmU1NWM1MDhlY2UyNWZhM2Q5OWRiZmRlNjQxYTU4ZWQ4OGMwNTFhOGE1MWYzZGFjZGZmYjFhZmI4Mjc4MTRiMDIwMDAwMDAwMjYzNTJjNDNlNmVmMzAzMDI0MTBhMDIwMDAwMDAwMDAwZmY0YmQ5MDEwMDAwMDAwMDA2NTEwMGFiNjMwMDAwMDhhYThlMDQwMDAwMDAwMDA5NTI2NTUyNjU2NWFjNTM2NWFiYzUyYzhhNzciLCAiNTM1MjZhYWMwMDUxIiwgMCwgMjAyNjYyMzQwLCAiOTg0ZWZlMGQ4ZDEyZTQzODI3YjllNGIyN2U5N2IzNzc3ZWNlOTMwZmQxZjU4OWQ2MTZjNmY5YjcxZGFiNzEwZSJdLAoJWyI3YzA3NDE5MjAyZmE3NTZkMjkyODhjNTdiNWMyYjgzZjNjODQ3YTgwN2Y0YTlhNjUxYTNmNmNkNmM0NjAzNGFlMGFhM2E3NDQ2YjAyMDAwMDAwMDRhYjZhNjM2NWZmZmZmZmZmOWRhODNjZjQyMTliYjk2Yzc2ZjJkNzdkNWRmMzFjMTQxMWE0MjExNzFkOWI1OWVjMDJlNWMxMjE4ZjI5OTM1NDAzMDAwMDAwMDA4YzEzODc5MDAyZjhiMWFjMDQwMDAwMDAwMDA4NmE2MzUzNmE2MzY1NTM2NTNjNTg0ZjAyMDAwMDAwMDAwMDAwMDAwMDAwIiwgImFiYWM1M2FiNjU2MzYzIiwgMSwgLTEwMzg0MTk1MjUsICI0YTc0ZjM2NWExNjFiYzZjOWJkZGQyNDljYmQ3MGY1ZGFkYmUzZGU3MGVmNGJkNzQ1ZGNiNmVlMWNkMjk5ZmJkIl0sCglbIjM1MWNiYjU3MDIxMzQ2ZTA3NmQyYTI4ODlkNDkxZTliZmEyOGM1NDM4OGM5MWI0NmVlODY5NTg3NGFkOWFhNTc2ZjEyNDE4NzRkMDIwMDAwMDAwOGFiNjU2MzUyNTMwMDUxNmFmZmZmZmZmZmUxM2U2MWI4ODgwYjhjZDUyYmU0YTU5ZTAwZjk3MjNhNDcyMmVhNTgwMTNlYzU3OWY1YjM2OTNiOWUxMTViMTEwMDAwMDAwMDA5NjM2M2FiYWM1MjUyNjM1MzUxZmZmZmZmZmYwMjdmZWUwMjA0MDAwMDAwMDAwOGFiNmE1MjAwYWIwMDZhNjViODVmMTMwMjAwMDAwMDAwMDg2YTUyNjMwMDUzYWI1MmFiMDAwMDAwMDAiLCAiYWI2YWFiNjUiLCAxLCA1ODY0MTU4MjYsICIwOGJiYjc0NmE1OTY5OTFhYjdmNTNhNzZlMTlhY2FkMDg3ZjE5Y2YzZTFkYjU0MDU0YWFiNDAzYzQzNjgyZDA5Il0sCglbImE4MjUyZWE5MDNmMWU4ZmY5NTNhZGIxNmMxZDE0NTVhNTAzNjIyMmM2ZWE5ODIwN2ZjMjE4MThmMGVjZTJlMWZhYzMxMGY5YTAxMDAwMDAwMDAwOTUxNjNhYzYzNTM2M2FjMDAwMGJlNjYxOWU5ZmZmY2RlNTBhMDQxMzA3ODgyMTI4M2NlMzM0MGIzOTkzYWQwMGI1OTk1MGJhZTdhOWY5MzFhOWIwYTNhMDM1ZjAxMDAwMDAwMDQ2MzAwNTMwMGI4YjA1ODNmYmQ2MDQ5YTE3MTVlN2FkYWNmNzcwMTYyODExOTg5ZjJiZTIwYWYzM2Y1ZjYwZjI2ZWJhNjUzZGMyNmIwMjRhMDAwMDAwMDAwMDY1MjUzNTE2MzY1NTJmZmZmZmZmZjA0NmQyYWNjMDMwMDAwMDAwMDAyNjM2YTlhMmQ0MzA1MDAwMDAwMDAwODAwNjUwMDUxNjVhYjUzYWJlY2Y2MzIwNDAwMDAwMDAwMDA1MmI5ZWQwNTAwMDAwMDAwMDhhY2FjYWM1M2FiNjU2NTY1MDAwMDAwMDAiLCAiNjVhYjUzNjM1MjUzNjM2YTUxIiwgMiwgMTQ0MjYzOTA1OSwgIjhjYTExODM4Nzc1ODIyZjlhNWJlZWU1N2JkYjM1MmY0ZWU1NDhmMTIyZGU0YTVjYTYxYzIxYjAxYTFkNTAzMjUiXSwKCVsiMmYxYTQyNWMwNDcxYTUyMzkwNjhjNGYzOGY5ZGYxMzViMWQyNGJmNTJkNzMwZDQ0NjExNDRiOTdlYTYzNzUwNDQ5NWFlYzM2MDgwMTAwMDAwMDA1NTMwMDUxNTM2NWM3MTgwMWRkMWY0OWYzNzZkZDEzNGE5ZjUyM2UwYjRhZTYxMWE0YmIxMjJkOGIyNmRlNjZkOTUyMDNmMTgxZDA5MDM3OTc0MzAwMDAwMDAwMDI1MTUyZmZmZmZmZmY5YmRjZWE3YmM3MmI2ZTUyNjJlMjQyYzk0ODUxZTNhNWJmOGYzMTRiM2U1ZGUwZTM4OWZjOWU1YjNlYWRhYzAzMDAwMDAwMDAwOTUyNTI2NTY1NTE1MTAwNTE1M2ZmZmZmZmZmZGJiNTNjZTk5YjVhMjMyMGE0ZTZlMmQxM2IwMWU4OGVkODg1YTA5NTdkMjIyZTUwOGU5ZWM4ZTRmODM0OTZjYjAyMDAwMDAwMDc2MzUyMDBhYmFjNjNhYzA0Yzk2MjM3MDIwY2M1NDkwMTAwMDAwMDAwMDgwMDAwNTE2YTUxYWM2NTUzMDc0YTM2MDIwMDAwMDAwMDAyNTE1MjIyNTUyMGNhIiwgIjY1NTFhYjY1YWM2NTUxNmEiLCAxLCAtNDg5ODY5NTQ5LCAiOWJjNWJiNzcyYzU1MzgzMWZiNDBhYmU0NjYwNzRlNTlhNDY5MTU0Njc5YzdkZWUwNDJiOGVhMzAwMWMyMDM5MyJdLAoJWyJlZjNhY2ZkNDAyNGRlZmI0OGRlZjQxMWI4ZjhiYTJkYzQwOGRjOWVlOTdhNGU4YmRlNGQ2Y2I4ZTEwMjgwZjI5Yzk4YTZlOGU5MTAzMDAwMDAwMDM1MTAwNTEzZDUzODllM2Q2N2UwNzU0NjlkZmQ5ZjIwNGE3ZDE2MTc1NjUzYTE0OWJkNzg1MTYxOTYxMGQ3Y2E2ZWVjZTg1YTUxNmIyZGYwMzAwMDAwMDA1NTE2YWFjNjU1MmNhNjc4YmRmMDJmNDc3ZjAwMzAwMDAwMDAwMDA1N2U0NWIwMzAwMDAwMDAwMDU1MjUyNTI1MjUyYWYzNWMyMGEiLCAiNTE2NWFjNTNhYiIsIDEsIC0xOTAwODM5NTY5LCAiNzhlYjZiMjQzNjVhYzFlZGMzODZhYTRmZmQxNTc3MmY2MDEwNTk1ODFjODc3NmMzNGY5MmY4YTc3NjNjOWNjZiJdLAoJWyJmZjQ0NjhkYzAxMDg0NzVmYzhkNDk1OWE5NTYyODc5Y2U0YWI0ODY3YTQxOTY2NGJmNmUwNjVmMTdhZTI1MDQzZTYwMTZjNzA0ODAxMDAwMDAwMDBmZmZmZmZmZjAyMTMzYzZmMDQwMDAwMDAwMDAwMGJkMGE4MDIwMDAwMDAwMDA0MDA2YTUyMDAzNWFmYTRmNiIsICI1MWFjNjVhYiIsIDAsIC01Mzc2NjQ2NjAsICJmNmRhNTliOWRlYWM2M2U4MzcyODg1MGFjNzkxZGU2MWY1ZGZjYWVlZDM4NGViY2JiMjBlNDRhZmNkOGM4OTEwIl0sCglbIjRlODU5NGQ4MDNiMWQwYTI2OTExYTJiY2RkNDZkN2NiYzk4N2I3MDk1YTc2Mzg4NWIxYTk3Y2E5Y2JiNzQ3ZDMyYzVhYjlhYTkxMDMwMDAwMDAwMzUzYWM1M2EwY2M0YjIxNWUwN2YxZDY0OGI2ZWViNWNkYmU5ZmEzMmIwNzQwMGFhNzczYjk2OTZmNTgyY2ViZmQ5OTMwYWRlMDY3YjJiMjAwMDAwMDAwMDYwMDY1YWJhYjY1MDBmYzk5ODMzMjE2YjhlMjdhMDJkZWZkOWJlNDdmYWZhZTRlNGE5N2Y1MmE5ZDJhMjEwZDA4MTQ4ZDJhNGU1ZDAyNzMwYmNkNDYwMTAwMDAwMDA0NTE2MzUxYWMzN2NlM2FlMTAzM2JhYTU1MDQwMDAwMDAwMDA2MDA2YTYzNmE2M2FjYzYzYzk5MDQwMDAwMDAwMDAyNTI2NWViMTkxOTAzMDAwMDAwMDAwNTY1NmE2YTUxNmEwMDAwMDAwMCIsICIiLCAxLCAtNzUyMTcxNzgsICIwNGM1ZWU0ODUxNGNkMDMzYjgyYTI4ZTMzNmM0ZDA1MTA3NGY0NzdlZjI2NzVjZTBjZTRiYWZlNTY1ZWU5MDQ5Il0sCglbImE4ODgzMGE3MDIzZjEzZWQxOWFiMTRmZDc1NzM1OGViNmFmMTBkNjUyMGY5YTU0OTIzYTZkNjEzYWM0ZjJjMTFlMjQ5Y2RhOGFhMDMwMDAwMDAwODUxNjMwMDY1YWJhYmFiYWNmZmZmZmZmZjhmNWZlMGJjMDRhMzM1MDRjNGI0N2UzOTkxZDI1MTE4OTQ3YTAyNjFhOWZhNTIwMzU2NzMxZWVhYmQ1NjFkZDMwMjAwMDAwMDAzNjNhYmFiZmZmZmZmZmYwMzg0MDRiZDAxMDAwMDAwMDAwOGFiNTE1MzUxNmFhYjZhNjNkMzNhNTYwMTAwMDAwMDAwMDI2MzAwNDY0MmRjMDIwMDAwMDAwMDA5NjU1MTUyYWNhYzYzNjM1MjAwNGJlNmYzYWYiLCAiNTI1MzUzNjU2NTAwNmFhYjZhIiwgMCwgMTE3NDQxNzgzNiwgIjJlNDJlYWQ5NTNjOWY0ZjgxYjcyYzI3NTU3ZTZkYzdkNDhjMzdmZjJmNWM0NmMxZGJlOTc3OGZiMGQ3OWY1YjIiXSwKCVsiNDRlMWEyYjQwMTA3NjJhZjIzZDIwMjc4NjRjNzg0ZTM0ZWYzMjJiNmUyNGM3MDMwOGEyOGM4ZjIxNTdkOTBkMTdiOTljZDk0YTQwMTAwMDAwMDA4NTE2MzY1NjU2NTAwNjMwMGZmZmZmZmZmMDE5ODIzM2QwMjAwMDAwMDAwMDIwMDAwMDAwMDAwMDAiLCAiNTI1MjUxNTM2NTYzNjUiLCAwLCAxMTE5Njk2OTgwLCAiZDkwOTZkZTk0ZDcwYzYzMzdkYTYyMDJlNmU1ODgxNjZmMzFiZmY1ZDUxYmI1YWRjOTQ2ODU5NDU1OWQ2NTY5NSJdLAoJWyI0NGNhNjViOTAxMjU5MjQ1YWJkNTBhNzQ1MDM3YjE3ZWI1MWQ5Y2UxZjQxYWE3MDU2YjQ4ODgyODVmNDhjNmYyNmNiOTdiN2EyNTAyMDAwMDAwMDU1MjYzNjM2M2FiZmZmZmZmZmYwNDc4MjAzNTA0MDAwMDAwMDAwNDAwNTNhY2FiMTRmM2U2MDMwMDAwMDAwMDA2NTI2MzUxMDBhYjYzMGNlNjZjMDMwMDAwMDAwMDAwMDFiZGM3MDQwMDAwMDAwMDA3NjU2NTAwNjVhYzUxYWMzZTg4NjM4MSIsICI1MSIsIDAsIC0yNjMzNDA4NjQsICJlZDU2MjJhYzY0MmQxMWY5MGU2OGMwZmVlYTZhMmZlMzZkODgwZWNhZTZiOGMwZDg5YzRlYTRiM2QxNjJiZDkwIl0sCglbImNmYTE0N2QyMDE3ZmU4NDEyMjEyMmI0ZGRhMmYwZDYzMThlNTllNjBhNzIwN2EyZDAwNzM3YjVkODk2OTRkNDgwYTJjMjYzMjRiMDAwMDAwMDAwNjAwNjM1MTUyNjU1MmZmZmZmZmZmMDQ1NmI1YjgwNDAwMDAwMDAwMDgwMDUxNmFhYjUyNTM2M2FiMTY2NjMzMDAwMDAwMDAwMDA0NjU1MzYzYWIyNTRjMGUwMjAwMDAwMDAwMDk1MmFiNmE2YTAwYWI1MjUxNTEwOTdjMWIwMjAwMDAwMDAwMDk2NTZhNTJhYzYzMDA1MzAwNjVhZDBkNmU1MCIsICI2YTUzNTE2NWFjNmE1MzY1MDAiLCAwLCAtNTc0NjgzMTg0LCAiZjkyNmQ0MDM2ZWFjN2YwMTlhMmIwYjY1MzU2YzRlZTJmZTUwZTA4OWRkN2E3MGYxODQzYTlmN2JjNjk5N2IzNSJdLAoJWyI5MWM1ZDVmNjAyMmZlYTZmMjMwY2M0YWU0NDZjZTA0MGQ4MzEzMDcxYzVhYzE3NDljODI5ODJjYzE5ODhjOTRjYjE3MzhhYTQ4NTAzMDAwMDAwMDE2YTE5ZTIwNGYzMGNiNDVkZDI5ZTY4ZmY0YWUxNjBkYTAzN2U1ZmM5MzUzOGUyMWExMWI5MmQ5ZGQ1MWNmMGI1ZWZhY2JhNGRkNzAwMDAwMDAwMDU2NTZhNmFhYzUxZmZmZmZmZmYwM2RiMTI2OTA1MDAwMDAwMDAwOTUzMDA2YTUzYWI2NTYzNjM2YTM2YTI3MzAzMDAwMDAwMDAwNjY1NmE1MjY1NjU1MmIwM2VkZTAwMDAwMDAwMDAwMzUyNTE2NTAwMDAwMDAwIiwgIjUzMDA1MjUyNmEwMCIsIDEsIDE0MzczMjg0NDEsICIyNTVjMTI1YjYwZWU4NWY0NzE4YjI5NzIxNzRjODM1ODhlZTIxNDk1OGMzNjI3ZjUxZjEzYjVmYjU2YzhjMzE3Il0sCglbIjAzZjIwZGMyMDJjODg2OTA3YjYwN2UyNzg3MzFlYmM1ZDczNzNjMzQ4YzhjNjZjYWMxNjc1NjBmMTliMzQxYjc4MmRmYjYzNGNiMDMwMDAwMDAwNzZhNTFhYzZhYWI2M2FiZWEzZThkZTdhZGI5ZjU5OWM5Y2FiYTk1YWEzZmE4NTJlOTQ3ZmM4OGVkOTdlZTUwZTBhMGVjMGQxNGQxNjRmNDRjMDExNWMxMDEwMDAwMDAwNGFiNTE1MzUxNmZkZDY3OWUwNDE0ZWRiZDAwMDAwMDAwMDAwNWFjNjM2YTUzNTEyMDIxZjIwNDAwMDAwMDAwMDcwMDZhMDA1MTUzNmE1MmM3M2RiMjA1MDAwMDAwMDAwNTUyNTI2NWFjNTM2OTA0NmUwMDAwMDAwMDAwMDNhYjAwNmExZWY3YmQxZSIsICI1MjY1NmEiLCAwLCAxMzYwMjIzMDM1LCAiNWEwYTA1ZTMyY2U0Y2QwNTU4YWFiZDVkNzljZDVmY2JmZmE5NWMwNzEzNzUwNmU4NzVhOWFmY2JhNGJlZjVhMiJdLAoJWyJkOTYxMTE0MDAzNjg4MWI2MWUwMTYyNzA3ODUxMmJjMzM3ODM4NmUxZDQ3NjFmOTU5ZDQ4MGZkYjlkOTcxMGJlYmRkYmEyMDc5ZDAyMDAwMDAwMDc2MzUzNmFhYjUxNTNhYjgxOTI3MWI0MWUyMjhmNWIwNGRhYTFkNGU3MmM4ZTE5NTUyMzBhY2NkNzkwNjQwYjgxNzgzY2ZjMTY1MTE2YTlmNTM1YTc0YzAwMDAwMDAwMDE2M2ZmZmZmZmZmYTJlN2JiOWEyOGU4MTA2MjRjMjUxZmY1YmE2YjBmMDdhMzU2YWMwODIwNDhjZjlmMzllYzAzNmJiYTNkNDMxYTAyMDAwMDAwMDc2YTAwMDAwMGFjNjVhY2ZmZmZmZmZmMDE2NzhhODIwMDAwMDAwMDAwMDg1MzYzNTE1MTUzYWM2MzUxMDAwMDAwMDAiLCAiNTM1MzUzIiwgMiwgLTgyMjEzODUxLCAiNTJiOWUwNzc4MjA2YWY2ODk5OGNiYzRlYmRhYWQ1YTk0NjllMDRkMGEwYTZjZWYyNTFhYmZkYmI3NGUyZjAzMSJdLAoJWyI5OGIzYTBiZjAzNDIzM2FmZGNmMGRmOWQ0NmFjNjViZTg0ZWY4MzllNThlZTlmYTU5ZjMyZGFhYTdkNjg0YjZiZGFjMzAwODFjNjAyMDAwMDAwMDc2MzYzNTFhY2FiYWJhYmZmZmZmZmZmYzcxY2Y4MmRlZDRkMTU5M2U1ODI1NjE4ZGMxZDU3NTJhZTMwNTYwZWNmYWEwN2YxOTI3MzFkNjhlYTc2OGQwZjAxMDAwMDAwMDY2NTAwNTI2MzY1NjNmM2EyODg4ZGViNWRkZDE2MTQzMDE3N2NlMjk4MjQyYzFhODY4NDQ2MTliYzYwY2EyNTkwZDk4MjQzYjUzODViYzUyYTViOGYwMDAwMDAwMDA5NTM2NWFjYWNhYjUyMDA1MmFjNTBkNDcyMjgwMWMzYjhhNjAzMDAwMDAwMDAwMzUxNjU1MTdlNTYzYjY1IiwgIjUxIiwgMSwgLTE2ODk0MDY5MCwgImI2YjY4NGUyZDJlY2VjOGE4ZGNlNGVkM2ZjMTE0N2Y4YjJlNDU3MzI0NDQyMjJhYThmNTJkODYwYzJhMjdhOWQiXSwKCVsiOTdiZTRmNzcwMmRjMjBiMDg3YTFmZGQ1MzNjN2RlNzYyYTNmMjg2N2E4ZjQzOWJkZGYwZGNlYzlhMzc0ZGZkMDI3NmY5YzU1Y2MwMzAwMDAwMDAwY2RmYjFkYmU2NTgyNDk5NTY5MTI3YmRhNmNhNGFhZmYwMmMxMzJkYzczZTE1ZGNkOTFkNzNkYTc3ZTkyYTMyYTEzZDFhMGJhMDIwMDAwMDAwMmFiNTFmZmZmZmZmZjA0OGNmYmUyMDIwMDAwMDAwMDA5MDA1MTYzNTE1MTUzNjNhYzUzNTEyOGNlMDEwMDAwMDAwMDA3NmFhYzUzNjVhYjZhYWJjODRlODMwMjAwMDAwMDAwMDg2MzUzNmE1M2FiNmE2NTUyZjA1MTIzMDUwMDAwMDAwMDA2NmFhYzUzNTE1MzUxMDg0OGQ4MTMiLCAiYWM1MSIsIDAsIDIyOTU0MTQ3NCwgImU1ZGE5YTQxNmVhODgzYmUxZjhiOGIyZDE3ODQ2MzYzM2YxOWRlM2ZhODJhZTI1ZDQ0ZmZiNTMxZTM1YmRiYzgiXSwKCVsiMDg1YjZlMDQwNDBiNWJmZjgxZTI5YjY0NmYwZWQ0YTQ1ZTA1ODkwYThkMzI3ODBjNDlkMDk2NDNlNjljZGNjYjViZDgxMzU3NjcwMTAwMDAwMDAxYWJmZmZmZmZmZmE1Yzk4MWZlNzU4MzA3NjQ4ZTc4MzIxN2UzYjQzNDllMzFhNTU3NjAyMjI1ZTIzN2Y2MmI2MzZlYzI2ZGYxYTgwMzAwMDAwMDA0NjUwMDUyYWI0NzkyZTFkYTI5MzBjYzkwODIyYThkMmEwYTkxZWEzNDMzMTdiY2U1MzU2YjZhYThhYWU2YzM5NTYwNzZhYTMzYTUzNTFhOWMwMzAwMDAwMDA0YWJhYzUyNjVlMjdkZGJjZDQ3MmEyZjEzMzI1Y2M2YmU0MDA0OWQ1M2YzZTI2NmFjMDgyMTcyZjE3ZjZkZjgxN2RiMTkzNmQ5ZmY0OGMwMmIwMDAwMDAwMDAxNTJmZmZmZmZmZjAyMWFhNzY3MDUwMDAwMDAwMDA4NTM1MzYzNTE2M2FiNTFhYzE0ZDU4NDAwMDAwMDAwMDAwMWFjYTRkMTM2Y2MiLCAiNmE1MjUzMDA1MzYzNTI1MzZhIiwgMCwgLTEzOTg5MjU4NzcsICI0MWVjY2ExZTgxNTJlYzU1MDc0ZjRjMzlmOGYyYTcyMDRkZGE0OGU5ZWMxZTdmOTlkNWU3ZTQwNDRkMTU5ZDQzIl0sCglbImVlYzMyZmZmMDNjNmExOGIxMmNkN2I2MGI3YmRjMmRkNzRhMDg5NzdlNTNmZGQ3NTYwMDBhZjIyMTIyOGZlNzM2YmQ5YzQyZDg3MDEwMDAwMDAwNzAwNTM1M2FjNTE1MjY1ZmZmZmZmZmYwMzc5Mjk3OTFhMTg4ZTk5ODBlOGI5Y2MxNTRhZDFiMGQwNWZiMzIyOTMyNTAxNjk4MTk1YWI1YjIxOTQ4OGZjMDIwMDAwMDAwNzAwNjM1MTAwNjVhYjZhMGJmYzE3NmFhN2U4NGY3NzFlYTNkNDVhNmI5YzI0ODg3Y2VlYTcxNWEwZmYxMGVkZTYzZGI4ZjA4OWU5N2Q5MjcwNzViNGYxMDAwMDAwMDAwNTUxYWJhYjYzYWJmZmZmZmZmZjAyZWI5MzNjMDAwMDAwMDAwMDAwMjYyYzQyMDAwMDAwMDAwMDAzNjU2MzYzMjU0OWMyYjYiLCAiNjM1MiIsIDIsIDE0ODA0NDU4NzQsICJmZjhhNDAxNmRmZGQ5MThmNTNhNDVkM2ExZjYyYjEyYzQwN2NkMTQ3ZDY4Y2E1YzkyYjc1MjBlMTJjMzUzZmY1Il0sCglbIjk4ZWE3ZWFjMDMxM2Q5ZmIwMzU3M2ZiMmI4ZTcxODE4MGM3MGNlNjQ3YmViY2Y0OWI5N2E4NDAzODM3YTI1NTZjYjhjOTM3N2YzMDAwMDAwMDAwNGFjNTNhYzY1ZmZmZmZmZmY4Y2FhYzc3YTVlNTJmMGQ4MjEzZWY2Y2U5OThiZWRiYjUwY2ZkZjEwODk1NDc3MTAzMWMwZTBjZDJhNzg0MjM5MDAwMDAwMDAwMTAwNjZlOTlhNDQ5MzdlYmIzNzAxNWJlMzY5Mzc2MTA3OGFkNWM3M2FhNzNlYzYyM2FjNzMwMGI0NTM3NWNjOGVlZjM2MDg3ZWI4MDAwMDAwMDAwNzUxNTM1MmFjYWM1MTAwZmZmZmZmZmYwMTE0YTUxYjAyMDAwMDAwMDAwMDAwMDAwMDAwIiwgIjZhYWNhYiIsIDAsIDI0MzUyNzA3NCwgImJhZDc3OTY3Zjk4OTQxYWY0ZGQ1MmE4NTE3ZDVhZDFlMzIzMDdjMGQ1MTFlMTU0NjFlODY0NjVlMWI4YjUyNzMiXSwKCVsiM2FiNzBmNDYwNGU4ZmM3ZjlkZTM5NWVjM2U0YzNkZTBkNTYwMjEyZTg0YTYzZjhkNzUzMzNiNjA0MjM3YWE1MmExMGRhMTcxOTYwMDAwMDAwMDA3NjM1MjZhNjU1M2FjNjNhMjVkZTZmZDY2NTYzZDcxNDcxNzE2ZmU1OTA4N2JlMGRkZTk4ZTk2OWUyYjM1OTI4MmNmMTFmODJmMTRiMDBmMWMwYWM3MGYwMjAwMDAwMDA1MDA1MjUxNmFhY2RmZmVkNmJiNjg4OWExM2U0Njk1NmY0YjhhZjIwNzUyZjEwMTg1ODM4ZmQ0NjU0ZTMxOTFiZjQ5NTc5Yzk2MWY1NTk3YzM2YzAxMDAwMDAwMDVhYzYzNjM2M2FiYzNhMTc4NWJhZTViOGExYjRiZTVkMGNiZmFkYzI0MGI0ZjdhY2FhN2RmZWQ2YTY2ZTg1MjgzNWRmNWViOWFjM2M1NTM3NjY4MDEwMDAwMDAwMzZhNjU2MzA3MzNiNzUzMDIxODU2OTYwMjAwMDAwMDAwMDk1MjAwNmE2YTZhNTFhY2FiNTI3NzdmMDYwMzAwMDAwMDAwMDdhYzAwNjM1MzAwNTJhYmMwODI2N2M5IiwgIjAwMDAwMDUzNmFhYzAwMDAiLCAxLCAxOTE5MDk2NTA5LCAiZGYxYzg3Y2YzYmE3MGU3NTRkMTk2MThhMzlmZGJkMjk3MGRlZjBjMWJmYzQ1NzYyNjBjYmE1ZjAyNWI4NzUzMiJdLAoJWyJiZGI2YjRkNzA0YWYwYjcyMzRjZWQ2NzFjMDRiYTU3NDIxYWJhN2VhZDBhMTE3ZDkyNWQ3ZWJkNmNhMDc4ZWM2ZTdiOTNlZWE2NjAwMDAwMDAwMDI2NTY1ZmZmZmZmZmYzMjcwZjVhZDhmNDY0OTVkNjliOWQ3MWQ0YWIwMjM4Y2JmODZjYzQ5MDg5MjdmYmI3MGE3MWZhMzA0MzEwOGU2MDEwMDAwMDAwNzAwNTE2YTY1NjU1MTUyZmZmZmZmZmY2MDg1YTBmZGMwM2FlODU2N2QwNTYyYzU4NGU4YmZlMTNhMWJkMTA5NGM1MTg2OTBlYmNiMmI3YzZjZTVmMDQ1MDIwMDAwMDAwOTUyNTE1MzAwNTI1MzZhNTNhYmE1NzZhMzdmMmM1MTZhYWQ5OTExZjY4N2ZlODNkMGFlNzk4MzY4NmI2MjY5YjRkZDU0NzAxY2I1Y2U5ZWM5MWYwZTY4MjgzOTAzMDAwMDAwMDBmZmZmZmZmZjA0Y2M3NmNjMDIwMDAwMDAwMDAyNjU2YTAxZmZiNzAyMDAwMDAwMDAwMjUzYWI1MzQ2MTAwNDAwMDAwMDAwMDlhY2FiMDA2NTY1NTE2YTAwNTIxZjU1ZjUwNDAwMDAwMDAwMDAzODlkZmVlOSIsICI2YTUyNTE2NSIsIDAsIDEzMzYyMDQ3NjMsICI3MWMyOTQ1MjNjNDhmZDc3NDdlZWJlZmJmM2NhMDZlMjVkYjdiMzZiZmY2ZDk1YjQxYzUyMmZlY2IyNjRhOTE5Il0sCglbIjU0MjU4ZWRkMDE3ZDIyYjI3NGZiZjAzMTc1NTVhYWYxMTMxOGFmZmVmNWE1ZjBhZTQ1YTQzZDljYTRhYTY1MmM2ZTg1ZjhhMDQwMDEwMDAwMDAwOTUzYWM2NWFiNTI1MTY1NjUwMGZmZmZmZmZmMDMzMjFkNDUwMDAwMDAwMDAwMDg1MjY1NTI2YTUxNTI2YTUyOWVkZThiMDMwMDAwMDAwMDAzNjM1MTUxY2U2MDY1MDIwMDAwMDAwMDAxNTM0YzU2ZWMxYiIsICJhY2FjIiwgMCwgMjA5NDEzMDAxMiwgIjExMGQ5MGZlYTk0NzBkZmU2YzUwNDhmNDVjM2FmNWU4Y2MwY2I3N2RkNThmZDEzZDMzODI2OGUxYzI0YjFjY2MiXSwKCVsiY2UwZDMyMmUwNGYwZmZjNzc3NDIxOGIyNTE1MzBhN2I2NGViZWZjYTU1YzkwZGIzZDA2MjRjMGZmNGIzZjAzZjkxOGU4Y2Y2ZjYwMzAwMDAwMDAzNjU2NTAwZmZmZmZmZmY5Y2NlOTQzODcyZGE4ZDhhZjI5MDIyZDBiNjMyMWFmNWZlZmMwMDRhMjgxZDA3YjU5OGI5NWY2ZGNjMDdiMTgzMDIwMDAwMDAwN2FiYWI1MTUzNTFhY2FiOGQ5MjY0MTBlNjlkNzZiN2U1ODRhYWQxNDcwYTk3YjE0YjljODc5YzhiNDNmOWE5MjM4ZTUyYTJjMmZlZmMyMDAxYzU2YWY4MDEwMDAwMDAwNDAwYWI1MjUzY2QyY2QxZmUxOTJjZTNhOTNiNTQ3OGFmODJmYTI1MGMyNzA2NGRmODJiYTQxNmRmYjBkZWJmNGYwZWIzMDdhNzQ2YjY5Mjg5MDEwMDAwMDAwOTY1MDBhYmFjYWM2YTAwNjM1MTQyMTQ1MjQ1MDI5NDdlZmMwMjAwMDAwMDAwMDM1MjUxNjUyYzQwMzQwMTAwMDAwMDAwMDk2YTZhYWI1MjAwMDA1MjY1NmE1MjMxYzU0YyIsICI1MSIsIDIsIC0yMDkwMzIwNTM4LCAiMDMyMmNhNTcwNDQ2ODY5ZWM3ZWM2YWQ2NmQ5ODM4Y2ZmOTU0MDUwMDJkNDc0YzBkM2MxNzcwOGM3ZWUwMzljNiJdLAoJWyI0N2FjNTQ5NDAzMTM0MzA3MTJlYmIzMjAwNDY3OWQzYTUxMjI0MmMyYjMzZDU0OWJmNWJiYzg0MjBlYzFmZDA4NTBlZDUwZWI2ZDAzMDAwMDAwMDk1MzZhYWM2YTY1YWNhY2FiNTFmZmZmZmZmZmI4NDNlNDQyNjZjZTI0NjJmOTJlNmJmZjU0MzE2NjYxMDQ4YzhjMTdlY2IwOTJjYjQ5M2IzOWJmY2E5MTE3ODUwMDAwMDAwMDAxNTE5YWIzNDhjMDVlNzRlYmMzZjY3NDIzNzI0YTMzNzFkZDk5ZTNiY2ViNGYwOThmODg2MDE0OGY0OGFkNzAwMDAzMTNjNGMyMjMwMDAwMDAwMDA2NTMwMDY1NjU2NTY1MTJjMmQ4ZGMwMzNmM2M5NzAxMDAwMDAwMDAwMjYzNmFhOTkzYWEwMTAwMDAwMDAwMDY1MjYzNjVhYjUyNmFiN2NmNTYwMzAwMDAwMDAwMDc2YTAwNjVhYzZhNTI2NTAwMDAwMDAwIiwgIjAwNTM1MjUzNTMwMGFiNmEiLCAyLCA1OTUzMTk5MSwgIjhiNWIzZDAwZDljNjU4ZjA2MmZlNmM1Mjk4ZTU0YjFmZTRlZDNhM2VhYjJhODdhZjRmMzExOWVkYzQ3YjE2OTEiXSwKCVsiMjMzY2Q5MGIwNDM5MTZmYzQxZWI4NzBjNjQ1NDNmMDExMWZiMzFmM2M0ODZkYzcyNDU3Njg5ZGVhNThmNzVjMTZhZTU5ZTllYjIwMDAwMDAwMDA1MDA1MzZhNmE2YWZmZmZmZmZmOWFlMzBkZTc2YmU3Y2Q1N2ZiODEyMjBmY2U3OGQ3NGExM2IyZGJjYWQ0ZDAyM2YzY2FkYjNjOWEwZTQ1YTNjZTAwMDAwMDAwMDk2NWFjNjM1M2FjNTE2NTUxNTEzMDgzNDUxMmRmYjI5M2Y4N2NiMTg3OWQ4ZDFiMjBlYmFkOWQ3ZDNkNWMzZTM5OWEyOTFjZTg2YTNiNGQzMGU0ZTMyMzY4YTkwMjAwMDAwMDA0NTMwMDUxNjVmZmZmZmZmZjI2ZDg0YWU5M2ViNThjODExNThjOWIzYzNjYmMyNGE4NDYxNGQ3MzEwOTRmMzhkMGVlYTg2ODZkZWMwMjgyNGQwMzAwMDAwMDA1NjM2YTY1YWJhY2YwMmM3ODQwMDFhMGJkNWQwMzAwMDAwMDAwMDkwMDY1NTM1MWFiNjVhYzUxNmE0MTZlZjUwMyIsICIiLCAxLCAtMjk1MTA2NDc3LCAiYjc5ZjMxYzI4OWU5NWQ5ZGFkZWM0OGViZjg4ZTI3YzFkOTIwNjYxZTUwZDA5MGU0MjI5NTdmOTBmZjk0Y2I2ZSJdLAoJWyI5MjAwZTI2YjAzZmYzNmJjNGJmOTA4MTQzZGU1Zjk3ZDRkMDIzNThkYjY0MmJkNWE4NTQxZTZmZjcwOWM0MjBkMTQ4MmQ0NzFiNzAwMDAwMDAwMDhhYmFiNjU1MzZhNjM2NTUzZmZmZmZmZmY2MWJhNmQxNWY1NDUzYjUwNzlmYjQ5NGFmNGM0OGRlNzEzYTBjM2U3ZjY0NTRkNzQ1MDA3NGEyYTgwY2I2ZDg4MDMwMDAwMDAwN2FjNmEwMGFiNTE2NTUxNWRmYjc1NzRmYmNlODIyODkyYzJhY2I1ZDk3ODE4OGIxZDY1Zjk2OWU0ZmU4NzRiMDhkYjRjNzkxZDE3NjExMzI3MmE1Y2MxMDEwMDAwMDAwMGZmZmZmZmZmMDQyMDk1OGQwMDAwMDAwMDAwMDlhYzYzNTE2YTAwNjM1MTYzNTNkZDg4NTUwNTAwMDAwMDAwMDQ2NWFjMDAwMDdiNzllOTAxMDAwMDAwMDAwMDY2ZDhiZjAxMDAwMDAwMDAwNTUyNTI1MjAwNmEwMDAwMDAwMCIsICJhYzUxNTIiLCAwLCAyMDg5NTMxMzM5LCAiODllYzdmYWI3Y2ZlN2Q4ZDdkOTY5NTY2MTNjNDlkYzQ4YmYyOTUyNjljZmI0ZWE0NGY3MzMzZDg4YzE3MGU2MiJdLAoJWyI0NWYzMzViYTAxY2UyMDczYThiMDI3Mzg4NGViNWI0OGY1NmRmNDc0ZmMzZGZmMzEwZDk3MDZhOGFjNzIwMmNmNWFjMTg4MjcyMTAzMDAwMDAwMDI1MzYzZmZmZmZmZmYwNDlkODU5NTAyMDAwMDAwMDAwMzY1YWI2YThlOThiMTAzMDAwMDAwMDAwMmFjNTFmM2E4MDYwMzAwMDAwMDAwMDc1MjUzNTE1MWFjMDAwMDAzMDZlMzAzMDAwMDAwMDAwMjAwNTFiNThiMmIzYSIsICIiLCAwLCAxODk5NTY0NTc0LCAiNzhlMDEzMTBhMjI4ZjY0NWMyM2EyYWQwYWNiYjhkOTFjZWRmZjRlY2RmN2NhOTk3NjYyYzYwMzFlYjcwMmIxMSJdLAoJWyJkOGY2NTJhNjA0M2I0ZmFlYWRhMDVlMTRiODE3NTZjZDY5MjBjZmNmMzMyZTk3ZjQwODY5NjFkNDkyMzJhZDZmZmI2YmM2YzA5NzAwMDAwMDAwMDQ1MzUyNjU2M2ZmZmZmZmZmMWVhNGQ2MGU1ZTkxMTkzZmJiYzFhNDc2Yzg3ODVhNzlhNGMxMWVjNWU1ZDZjOTk1MGM2NjhjZWFjZmUwN2ExNTAyMDAwMDAwMDM1MmFiNTFmZmZmZmZmZmZlMDI5YTM3NDU5NWM0ZWRkMzgyODc1YThkZDNmMjBiOTgyMGFiYjNlOTNmODc3YjYyMjU5OGQxMWQwYjA5ZTUwMzAwMDAwMDA5NTM1MTAwMDA1MmFjNTE1MTUyZmZmZmZmZmY5ZDY1ZmVhNDkxYjk3OTY5OWNlYjEzY2FmMjQ3OWNkNDJhMzU0YmQ2NzRkZWQzOTI1ZTc2MDc1OGU4NWE3NTY4MDMwMDAwMDAwNDYzNjVhY2FiZmZmZmZmZmYwMTY5MDAxZDAwMDAwMDAwMDAwNjUxNjM2YTY1NjU2MzAwMDAwMDAwIiwgImFiMDA2MzYzMDAwMGFjIiwgMywgMTA1MDk2NTk1MSwgIjRjYzg1Y2JjMjg2M2VlN2RiY2UxNTQ5MGQ4Y2EyYzVkZWQ2MTk5ODI1N2I5ZWVhZmY5NjhmZTM4ZTlmMDA5YWUiXSwKCVsiNzE4NjYyYmUwMjZlMWRjZjY3Mjg2OWFjNjU4ZmQwYzg3ZDY4MzVjZmJiMzRiZDg1NGM0NGU1NzdkNTcwOGE3ZmFlY2RhOTZlMjYwMzAwMDAwMDA0NTI2YTYzNmE0ODk0OTMwNzMzNTNiNjc4NTQ5YWRjNzY0MDI4MWI5Y2JjYjIyNTAzN2Y4NDAwN2M1N2U1NWI4NzQzNjZiYjdiMGZhMDNiZGMwMDAwMDAwMDA5NTE2NWFiYWJhYzY1YWMwMDAwOGFiN2YyYTgwMmVhYTUzZDAwMDAwMDAwMDAwN2FjYWM1MTZhYWM1MjZhZTkyZjM4MDEwMDAwMDAwMDA1NmFhYzAwNTM2NTAwMDAwMDAwIiwgImFiMDAiLCAxLCA0MzI5NjA4OCwgIjJkNjQyY2VlZTkxMGFiZmYwYWYyMTE2YWY3NWIyZTExN2ZmYjc0NjliMmYxOWFkOGZlZjA4ZjU1ODQxNmQ4ZjciXSwKCVsiOTQwODNjODQwMjg4ZDQwYTY5ODNmYWNhODc2ZDQ1MmY3YzUyYTA3ZGU5MjY4YWQ4OTJlNzBhODFlMTUwZDYwMmE3NzNjMTc1YWQwMzAwMDAwMDAwN2VjMzYzN2Q3ZTExMDNlMmU3ZTBjNjE4OTZjYmJmOGQ3ZTIwNWIyZWNjOTNkZDBkNmQ3NTI3ZDM5Y2RiZjZkMzM1Nzg5ZjY2MDMwMDAwMDAwMGZmZmZmZmZmMDE5ZTFmN2IwMzAwMDAwMDAwMDgwMGFjMDA1MWFjYWMwMDUzNTM5Y2IzNjMiLCAiIiwgMSwgLTE4MzYxNDA1OCwgImExN2I2NmQ2YmI0MjdmNDI2NTNkMDgyMDdhMjJiMDIzNTNkZDE5Y2NmMmM3ZGU2YTlhM2EyYmRiN2M0OWM5ZTciXSwKCVsiMzBlMGQ0ZDIwNDkzZDBjZDBlNjQwYjc1N2M5YzQ3YTgyMzEyMGUwMTJiM2I2NGM5YzE4OTBmOWEwODdhZTRmMjAwMWNhMjJhNjEwMTAwMDAwMDAxNTJmOGYwNTQ2ODMwM2I4ZmNmYWFkMWZiNjA1MzRhMDhmZTkwZGFhNzliZmY1MTY3NTQ3MjUyOGViZTE0MzhiNmY2MGU3ZjYwYzEwMTAwMDAwMDA5NTI2YWFiNjU1MWFjNTEwMDUzZmZmZmZmZmZhYWFiNzM5NTdlYTIxMzNlMzIzMjk3OTUyMjFlZDQ0NTQ4YTBkM2E1NGQxY2Y5Yzk2ODI3ZTdjZmZkMTcwNmRmMDIwMDAwMDAwOWFiMDA1MjZhMDA1MjY1NTI2YWZmZmZmZmZmZDE5YTZmZTU0MzUyMDE1YmYxNzAxMTk3NDI4MjE2OTZmNjQwODNiNWYxNGZiNWM3ZDFiNWE3MjFhM2Q3Nzg2ODAxMDAwMDAwMDg1MjY1YWJhYmFiYWM1M2FiZmZmZmZmZmYwMjBmMzliZDAzMDAwMDAwMDAwNGFiNmFhYzUyMDQ5ZjZjMDUwMDAwMDAwMDA0YWI1MjUxNmFiYTViNGM2MCIsICI2YTYzNjU1MTZhNmE2NTUyNTMiLCAwLCAtNjI0MjU2NDA1LCAiOGUyMjFhNmM0YmY4MWNhMGQ4YTA0NjQ1NjI2NzRkY2QxNGE3NmEzMmE0YjdiYWY5OTQ1MGRkOTE5NWQ0MTFlNiJdLAoJWyJmOWM2OWQ5NDAyNzZlYzAwZjY1ZjlmZTA4MTIwZmM4OTM4NWQ3MzUwMzg4NTA4ZmQ4MGY0YTZiYTJiNWQ0NTk3YTllMjFjODg0ZjAxMDAwMDAwMDY2M2FiNjNhYmFiYWIxNTQ3M2FlNmQ4MmM3NDRjMDdmYzg3NmVjZDUzYmQwZjMwMThiMmRiZWRhZDc3ZDc1N2Q1YmRmMzgxMWIyM2QyOTRlOGMwMTcwMDAwMDAwMDAxYWJhZmFiYWJlMDAxNTdlZGUyMDUwMDAwMDAwMDA2YWM2YTUyNjM2MzUzMDAwMDAwMDAiLCAiYWI1MyIsIDEsIDYwNjU0NzA4OCwgIjcxNGQ4YjE0Njk5ODM1YjI2YjJmOTRjNThiNmVhNGM1M2RhM2Y3YWRmMGM2MmVhOTk2NmIxZTE3NTgyNzJjNDciXSwKCVsiNWMwYWMxMTIwMzJkNjg4NWI3YTkwNzFkM2M1ZjQ5M2FhMTZjNjEwYTRhNTcyMjhiMjQ5MTI1OGMzOGRlODMwMjAxNDI3NmU4YmUwMzAwMDAwMDAzMDBhYjZhMTc0NjgzMTUyMTUyNjJhZDVjNzM5M2JiNWUwYzVhNjQyOWZkMTkxMWY3OGY2ZjcyZGFmYmJiYjc4ZjMxNDlhNTA3M2UyNDc0MDMwMDAwMDAwM2FjNTEwMGZmZmZmZmZmMzNjN2ExNGEwNjJiZGVhMWJlM2M5YzhlOTczZjU0YWRlNTNmZTRhNjlkY2I1YWIwMTlkZjVmMzM0NTA1MGJlMDAxMDAwMDAwMDhhYzYzNjU1MTYzNTI2YWFiNDI4ZGVmYzAwMzNlYzM2MjAzMDAwMDAwMDAwNzY1NTE2MzY1NTM2YTAwYWU1NWIyMDAwMDAwMDAwMDAyYWI1M2Y0YzAwODA0MDAwMDAwMDAwOTUyNjU1MTZhNTM2NTYzNTM2YTAwMDAwMDAwIiwgIjZhMDA1MTUxMDA2YSIsIDIsIDI3Mjc0OTU5NCwgIjkxMDgyNDEwNjMwMzM3YTVkODlmZjE5MTQ1MDk3MDkwZjI1ZDRhMjBiZGQ2NTdiNGI5NTM5MjdiMmY2MmM3M2IiXSwKCVsiZTM2ODMzMjkwMjY3MjAwMTBiMDhkNGJlYzBmYWEyNDRmMTU5YWUxMGFhNTgyMjUyZGQwZjNmODAwNDZhNGUxNDUyMDdkNTRkMzEwMDAwMDAwMDA4NTJhY2FjNTI2NTZhYWNhYzNhYWYyYTUwMTc0MzhhZDZhZGZhM2Y5ZDA1ZjUzZWJlZDljZWIxYjEwZDgwOWQ1MDdiY2Y3NWUwNjA0MjU0YTgyNTlmYzI5YzAyMDAwMDAwMDY1MzUyNjU1MmFiNTFmOTI2ZTUyYzA0YjQ0OTE4MDMwMDAwMDAwMDAwZjc2NzljMDEwMDAwMDAwMDA5MDAwMDUyNTE1MjAwNTM2NTUzOWUzZjQ4MDUwMDAwMDAwMDA5NTE2NTAwYWI2MzUzNjNhYjAwODM5NmM5MDUwMDAwMDAwMDAyNTM2NTA1OTEwMjRmIiwgIjZhNjM2NSIsIDAsIDkwODc0NjkyNCwgIjQ1OGFlYzNiNTA4OWE1ODViNmJhZDlmOTlmZDM3YTJiNDQzZGM1YTJlZWZhYzJiN2U4YzViMDY3MDVlZmM5ZGIiXSwKCVsiNDhjNGFmYjIwNDIwNDIwOWUxZGY2ODA1ZjA2OTdlZGFhNDJjMDQ1MGJiYmQ3Njc5NDFmZTEyNWI5YmM0MDYxNGQ2M2Q3NTdlMjIwMzAwMDAwMDA2NmE1MzYzMDA1MTUyZGM4YjZhNjA1YTZkMTA4OGU2MzFhZjNjOTRiODE2NGUzNmU2MTQ0NWUyYzYwMTMwMjkyZDgxZGFiZDMwZDE1ZjU0YjM1NWE4MDIwMDAwMDAwMzZhNjM1M2ZmZmZmZmZmMWQwNWRjZWM0ZjNkZWRjZmQwMmMwNDJjZTVkMjMwNTg3ZWU5MmNiMjJiNTJiMWU1OTg2M2YzNzE3ZGYyMzYyZjAzMDAwMDAwMDU1MzY1NTJhYzUyZmZmZmZmZmZkNGQ3MWM0ZjBhN2Q1M2JhNDdiYjAyODljYTc5YjFlMzNkNGM1NjljMWU5NTFkZDYxMWZjOWM5YzFjYThiYzZjMDMwMDAwMDAwODY1NTM2YTY1YWI1MWFiYWNmZmZmZmZmZjA0MmY5YWE5MDUwMDAwMDAwMDA3NTM2NTUxNTM2NTYzNTFhYjkzZDgwMTAwMDAwMDAwMDI2NTUzMzc0NDBlMDMwMDAwMDAwMDAwNWQ0YzY5MDAwMDAwMDAwMDAxNTI3ODU4N2FjYiIsICJhYjAwNjU2NTUyNmE1MSIsIDAsIDE1MDIwNjQyMjcsICJiYmVkNzdmZjBmODA4YWE4YWJkOTQ2YmE5ZTdlYzFkZGIwMDNhOTY5ZmEyMjNkZWUwYWY3Nzk2NDNjYjg0MWE5Il0sCglbIjAwYjIwZmQxMDRkZDU5NzA1Yjg0ZDY3NDQxMDE5ZmEyNmM0YzNkZWM1ZmQzYjUwZWNhMWFhNTQ5ZTc1MGVmOWRkYjc3NGRjYWJlMDAwMDAwMDAwNjUxYWM2NTZhYWM2NWZmZmZmZmZmNTJkNDI0NmYyZGI1NjhmYzllZWExNDNlNGQyNjBjNjk4YTMxOWYwZDA2NzBmODRjOWM4MzM0MTIwNGZkZTQ4YjAyMDAwMDAwMDBmZmZmZmZmZmI4YWVhYmI4NWQzYmNiYzY3YjEzMmYxZmQ4MTViNDUxZWExMmRjZjdmYzE2OWMxYmMyZTJjZjQzM2ViNjc3N2EwMzAwMDAwMDA4NmE1MWFjNmFhYjY1NjNhY2Q1MTBkMjA5ZjQxM2RhMmNmMDM2YTMxYjBkZWYxZTRkY2Q4MTE1YWJmMmU1MTFhZmJjY2NiNWRkZjQxZDk3MDJmMjhjNTI5MDAxMDAwMDAwMDZhYzUyYWI2YTAwNjVmZmZmZmZmZjAzOWM4Mjc2MDAwMDAwMDAwMDA4YWI1MzY1NTIwMDY1NmE1MjQwMTU2MTAxMDAwMDAwMDAwM2FjYWIwMDgyYjcxNjAxMDAwMDAwMDAwMzUxMDBhYjAwMDAwMDAwIiwgIjUzNTI2NSIsIDEsIC05NDczNjc1NzksICIzMjEyYzZkNmRkOGQ5ZDNiMmFjOTU5ZGVjMTFmNDYzOGNjZGU5YmU2ZWQ1ZDM2OTU1NzY5Mjk0ZTIzMzQzZGEwIl0sCglbIjQ1NTEzMTg2MDIyMGFiYmFhNzIwMTU1MTkwOTBhNjY2ZmFmMTM3YTBmZWJjZTdlZGQ0OWRhMWVhZGE0MWZlYWIxNTA1YTAwMjhiMDIwMDAwMDAwMzYzNjVhYjQ1M2VhZDQyMjU3MjRlYjY5YmViNTkwZjJlYzU2YTc2OTNhNjA4ODcxZTBhYjBjMzRmNWU5NjE1N2Y5MGUwYTk2MTQ4ZjNjNTAyMDAwMDAwMDg1MjUxYWI1MTUzNTE2M2FjZmZmZmZmZmYwMjJkMTI0OTA0MDAwMDAwMDAwOWFiYWMwMGFjYWM2NTY1NjMwMDg4YjMxMDA0MDAwMDAwMDAwMGUzOTIwZTU5IiwgIjUxNTJhYjZhNTJhYzUxNTIiLCAwLCAyOTQzNzU3MzcsICJjNDBmZDdkZmE3MjMyMWFjNzk1MTY1MDI1MDA0NzhkMDlhMzVjYzIyY2MyNjRkNjUyYzdkMThiMTQ0MDBiNzM5Il0sCglbIjYyNGQyOGNiMDJjODc0NzkxNWU5YWYyYjEzYzc5YjQxN2ViMzRkMmZhMmE3MzU0Nzg5Nzc3MGFjZTA4YzZkZDlkZTUyODg0OGQzMDMwMDAwMDAwNjUxYWI2M2FiYWI1MzNjNjlkM2Y5Yjc1YjZlZjhlZDJkZjUwYzIyMTBmZDBiZjRlODg5YzQyNDc3ZDU4NjgyZjcxMWNiYWVjZTFhNjI2MTk0YmI4NTAzMDAwMDAwMDc2NWFjYWI1M2FjNTM1M2ZmZmZmZmZmMDE4Y2MyODAwNDAwMDAwMDAwMDlhYmFjYWJhYzUyNjM2MzUyYWM2ODU5NDA5ZSIsICJhYzUxYWMiLCAxLCAxMDA1MTQ0ODc1LCAiOTE5MTQ0YWFkYTUwZGI4Njc1YjdmOWE2ODQ5YzlkMjYzYjg2NDUwNTcwMjkzYTAzYzI0NWJkMWUzMDk1ZTI5MiJdLAoJWyI4ZjI4NDcxZDAyZjdkNDFiMmU3MGU5YjRjODA0ZjJkOTBkMjNmYjI0ZDUzNDI2ZmE3NDZiY2RjZmZmZWE4NjQ5MjViZGVhYmUzZTAyMDAwMDAwMDFhY2ZmZmZmZmZmNzZkMWQzNWQwNGRiMGU2NGQ2NTgxMGM4MDhmZTQwMTY4ZjhkMWYyMTQzOTAyYTFjYzU1MTAzNGZkMTkzYmUwZTAwMDAwMDAwMDFhY2ZmZmZmZmZmMDQ4YTU1NjUwMDAwMDAwMDAwMDUwMDUxNTE1MTZhZmFmYjYxMDQwMDAwMDAwMDA0NTI2M2FjNTM2NDhiYjMwNTAwMDAwMDAwMDg2MzYzNTE2YTZhNTE2NTUxMzI0NWRlMDEwMDAwMDAwMDAwMDAwMDAwMDAiLCAiNmEwMDUzNTEwMDUzIiwgMSwgLTE1MjUxMzc0NjAsICIzMDVmYzhmZjVkYzA0ZWJkOWI2NDQ4YjAzYzlhM2Q5NDVhMTE1NjcyMDZjOGQ1MjE0NjY2YjMwZWM2ZDBkNmNjIl0sCglbIjEwZWM1MGQ3MDQ2YjhiNDBlNDIyMmEzYzY0NDk0OTBlYmU0MTUxM2FhZDJlY2E3ODQ4Mjg0YTA4ZjMwNjlmMzM1MmMyYTk5NTRmMDAwMDAwMDAwOTUyNmFhYzY1NjM1MmFjYWM1M2ZmZmZmZmZmMGQ5NzlmMjM2MTU1YWE5NzI0NzJkNDNlZTZmOGNlMjJhMmQwNTJjNzQwZjEwYjU5MjExNDU0ZmYyMmNiN2ZkMDAyMDAwMDAwMDdhY2FjYWNhYjYzYWI1M2ZmZmZmZmZmYmJmOTdlYmRlODk2OWIzNTcyNWIyZTI0MDA5MmE5ODZhMmNiZmQ1OGRlNDhjNDQ3NWZlMDc3YmRkNDkzYTIwYzAxMDAwMDAwMDY2M2FiNTM2NWFiYWJmZmZmZmZmZjQ2MDA3MjJkMzNiOGRiYTMwMGQzYWQwMzdiY2ZjNjAzOGIxZGI4YWJmZTgwMDhhMTVhMWRlMmRhMjI2NDAwNzMwMjAwMDAwMDAzNTM1MWFjNmRiZGFmYWYwMjBkMGNjZjA0MDAwMDAwMDAwNjYzYWI2YTUxYWI2YWUwNmU1ZTAyMDAwMDAwMDAwMzZhYWJhYjAwMDAwMDAwIiwgIiIsIDAsIC0xNjU4OTYwMjMyLCAiMjQyMGRkNzIyZTIyOWVjY2FmYWU4NTA4ZTdiOGQ3NWM2OTIwYmZkYjNiNWJhYzdjYjhlMjM0MTk0ODA2MzdjMiJdLAoJWyJmZWY5OGI3MTAxYmY5OTI3N2IwOGE2ZWZmMTdkMDhmM2ZjYjg2MmUyMGUxMzEzOGE3N2Q2NmZiYTU1ZDU0ZjI2MzA0MTQzZTUzNjAxMDAwMDAwMDY1MTUzNjVhYmFiMDBmZmZmZmZmZjA0MjY1OTY1MDMwMDAwMDAwMDA0NjU1MjUyYWNlMmM3NzUwMTAwMDAwMDAwMDEwMDJiMjNiNDA0MDAwMDAwMDAwNzUxNmE1MTUzYWI1M2FjNDU2YTdhMDAwMDAwMDAwMDA3NTNhYjUyNTI1MWFjYWNiYTUyMTI5MSIsICI1MjZhYWNhY2FiMDBhYmFiNTMiLCAwLCAtMTYxNDA5NzEwOSwgIjQzNzBkMDVjMDdlMjMxZDY1MTVjN2U0NTRhNGU0MDEwMDBiOTkzMjlkMjJlZDdkZWYzMjM5NzZmYTFkMmVlYjUiXSwKCVsiMzRhMmI4ODMwMjUzNjYxYjM3M2I1MTk1NDY1NTJhMmMzYmZmNzQxNGVhMDA2MGRmMTgzYjEwNTI2ODNkNzhkOGY1NGU4NDI0NDIwMDAwMDAwMDAxNTJmZmZmZmZmZmQ5NjFhOGUzNGNmMzc0MTUxMDU4ZGZjZGRjODY1MDliMzM4MzJiYzU3MjY3YzYzNDg5ZjY5ZmYwMTE5OTY5N2MwMzAwMDAwMDAyYWJhY2JhODU2Y2ZiMDFiMTdjMmYwNTAwMDAwMDAwMDg1MTUzNjVhYzUzYWIwMDAwMDAwMDAwMDAiLCAiNTI2M2FiNjU2YSIsIDEsIC0yMTA0NDgwOTg3LCAiMmY5OTkzZTBhODRhNmNhNTYwZDZkMWNjMmI2M2ZmZTdmZDcxMjM2ZDljZmU3ZDgwOTQ5MWNlZjYyYmJmYWQ4NCJdLAoJWyI0MzU1OTI5MDAzOGYzMmZkYTg2NTgwZGQ4YTRiYzQ0MjJkYjg4ZGQyMmE2MjZiOGJkNGYxMGYxYzlkZDMyNWM4ZGM0OWJmNDc5ZjAxMDAwMDAwMDI2MzUxZmZmZmZmZmY0MDEzMzk1MzBlMWVkM2ZmZTk5NjU3OGExN2MzZWM5ZDZmY2NiMDcyM2RkNjNlN2IzZjM5ZTJjNDRiOTc2YjdiMDMwMDAwMDAwNmFiNmE2NTY1NmE1MWZmZmZmZmZmNmZiOWJhMDQxYzk2Yjg4NjQ4MjAwOWY1NmMwOWMyMmU3YjBkMzMwOTFmMmFjNTQxOGQwNTcwODk1MTgxNmNlNzAwMDAwMDAwMDU1MWFjNTI1MTAwZmZmZmZmZmYwMjA5MjFlNDA1MDAwMDAwMDAwMzUzNjU1MzM5ODZmNDA1MDAwMDAwMDAwMTZhMDAwMDAwMDAiLCAiNTJhYzUxIiwgMCwgMTc2OTc3MTgwOSwgIjAyMDQwMjgzZWYyMjkxZDhlMWY3OWJiNzFiZGFiZTdjMTU0NmM0MGQ3ZWQ2MTVjMzc1NjQzMDAwYThiOTYwMGQiXSwKCVsiNjg3OGE2YmQwMmU3ZTFjODA4MmQ1ZTNlZTFiNzQ2Y2ZlYmZhYzllOGI5N2U2MWNhYTllMDc1OWQ4YThlY2IzNzQzZTM2YTMwZGUwMTAwMDAwMDAyYWI1MzJhOTExYjBmMTJiNzNlMDA3MWY1ZDUwYjZiZGFmNzgzZjRiOWE2Y2U5MGVjMGNhZDllZWNjYTI3ZDVhYmFlMTg4MjQxZGRlYzAyMDAwMDAwMDE2NTFjNzc1OGQ4MDNmNzQ1N2IwNTAwMDAwMDAwMDM2NTUxNTE1ZjRlOTAwMDAwMDAwMDAwMDEwMDcwMjIwODAyMDAwMDAwMDAwMzUzNjVhY2M4NmI2OTQ2IiwgIjYzNTFhYiIsIDAsIC0xOTI5Mzc0OTk1LCAiZjI0YmU0OTljNTgyOTVmM2EwN2Y1ZjFjNmU1MDg0NDk2YWUxNjA0NTBiZDYxZmRiMjkzNGU2MTUyODk0NDhmMSJdLAoJWyIzNWI2ZmMwNjA0N2ViYWQwNDc4M2E1MTY3YWI1ZmM5ODc4YTAwYzRlYjVlN2Q3MGVmMjk3YzMzZDVhYmQ1MTM3YTJkZWE5OTEyNDAyMDAwMDAwMDM2YWFjYWNmZmZmZmZmZjIxZGMyOTE3NjM0MTlhNTg0YmRiM2VkNGY2ZjhjNjBiMjE4YWFhNWI5OTc4NGU0YmE4YWNmZWMwNDk5M2U1MGMwMzAwMDAwMDA0NmEwMGFjNmFmZmZmZmZmZjY5ZTA0ZDc3ZTRiNjYyYTgyZGI3MWE2OGRkNzJlZjBhZjQ4Y2E1YmViZGNiNDBmNWVkZjBjYWY1OTFiYjQxMDIwMjAwMDAwMDAwYjVkYjc4YTE2ZDkzZjVmMjRkN2Q5MzJmOTNhMjliYjRiNzg0ZmViZDBjYmIxOTQzZjkwMjE2ZGM4MGJiYTE1YTA1Njc2ODRiMDAwMDAwMDAwODUzYWI1MmFiNTEwMDAwNmExYmUyMjA4YTAyZjZiZGMxMDMwMDAwMDAwMDAyNjVhYjg1NTBlYTA0MDAwMDAwMDAwMzY1NjM2YTAwMDAwMDAwIiwgIiIsIDAsIC0xMTE0MTE0ODM2LCAiMWM4NjU1OTY5YjI0MWU3MTdiODQxNTI2Zjg3ZTZiZDY4YjIzMjk5MDViYTNmYzllOWY3MjUyNmMwYjNlYTIwYyJdLAoJWyJiZWJiOTBjMzAyYmY5MWZkNDUwMWQzMzU1NWE1ZmM1ZjJlMWJlMjgxZDliNzc0MzY4MDk3OWI2NWMzYzkxOTEwOGNjMmY1MTc1MTAxMDAwMDAwMDNhYmFiMDBmZmZmZmZmZjk2OWMzMDA1M2YxMjc2NTUwNTMyZDBhYTMzY2ZlODBjYTYzNzU4Y2QyMTViNzQwNDQ4YTljMDhhODQ4MjZmMzMwMzAwMDAwMDA1NjU2NWFiNTE1M2ZmZmZmZmZmMDRiZjZmMmEwNDAwMDAwMDAwMDU2NWFiNTI2NWFiOTAzZTc2MDEwMDAwMDAwMDAyNmE2YTcxMDNmYTAyMDAwMDAwMDAwNjUyNjU1MzUyNTM2NWIwNWIyYzAwMDAwMDAwMDAwNmFiMDAwMDAwNTM1MzAwMDAwMDAwIiwgIjUxNTEwMDUzYWI2MzYzNTE1MyIsIDEsIDEwODEyOTExNzIsICI5NDMzOGNkNDdhNDYzOWJlMzBhNzFlMjFhNzEwM2NlZTRjOTllZjcyOTdlMGVkZDU2YWFmNTdhMDY4YjAwNGRlIl0sCglbImFmNDgzMTlmMDMxYjRlZWI0MzE5NzE0YTI4NWY0NDI0NGYyODNjYmZmMzBkY2I5Mjc1YjA2ZjIzNDhjY2QwZDdmMDE1YjU0Zjg1MDAwMDAwMDAwNjYzNjNhYzY1YWM2YWZmZmZmZmZmMjU2MGE5ODE3ZWJiYzczOGFkMDFkMGM5YjljZjY1N2I4ZjkxNzliMWE3ZjA3M2ViMGI2NzUxNzQwOWQxMDgxODAyMDAwMDAwMDVhYzYzNjVhYjUyZmZmZmZmZmYwYmRkNjdjZDRlY2FlOTYyNDlhMmUyYTk2ZGIxNDkwZWU2NDVmMDQyZmQ5ZDU1NzlkZTk0NWUyMmI3OTlmNGQwMDMwMDAwMDAwODY1NTJhYjUxNTE1M2FiMDBjZjE4N2M4MjAyZTUxYWJmMDMwMDAwMDAwMDA2NjU1MjAwNmEwMGFiYWRmMzdkMDAwMDAwMDAwMDA0YWM2YTUzNTEwMDAwMDAwMCIsICI2M2FiNjUiLCAxLCAtMTg1NTU1NDQ0NiwgIjYwY2FmNDZhNzYyNWYzMDNjMDQ3MDZjZWM1MTVhNDRiNjhlYzMxOWVlOTIyNzNhY2I1NjZjY2E0ZjY2ODYxYzEiXSwKCVsiZjM1YmVmYmMwM2ZhZjhjMjVjYzRiYzBiOTJmNjIzOWY0NzdlNjYzYjQ0YjgzMDY1YzljYjdjZjIzMTI0MzAzMmNmMzY3Y2UzMTMwMDAwMDAwMDA1YWI2NTUyNmE1MTdjNGMzMzQxNDlhOWM5ZWRjMzllMjkyNzZhNGIzZmZiYmFiMzM3ZGU3OTA4ZWE2Zjg4YWYzMzEyMjhiZDkwMDg2YTY5MDBiYTAyMDAwMDAwMDE1MTI3OWQxOTk1MGQyZmU4MTk3OWI3MmNlM2EzM2M2ZDgyZWJiOTJmOWEyZTE2NGI2NDcxYWM4NTdmM2JiZDNjMGVhMjEzYjU0MjAxMDAwMDAwMDk1M2FiNTE2MzUzNjM1MjAwNjUwNTI2NTdjMjAzMDBhOWJhMDQwMDAwMDAwMDA0NTI2MzZhNmEwNTE2ZWEwMjAwMDAwMDAwMDg1MzUyNTM2NTYzNjVhYmFiY2ZkZDNmMDEwMDAwMDAwMDA4NjVhYzUxNmFhYzAwNTMwMDAwMDAwMDAwIiwgIiIsIDIsIC05OTc5MzUyMSwgImM4MzRhNTQ4NWU2OGRjMTNlZGI2Yzc5OTQ4Nzg0NzEyMTIyNDQwZDdmYTViYmFhNWNkMmZjM2Q0ZGFjODE4NWQiXSwKCVsiZDNkYTE4NTIwMjE2NjAxYWNmODg1NDE0NTM4Y2UyZmI0ZDkxMDk5N2VlYjkxNTgyY2FjNDJlYjY5ODJjOTM4MTU4OTU4Nzc5NGYwMzAwMDAwMDAwZmZmZmZmZmZmMWIxYzk4ODAzNTY4NTJlMTBjZjQxYzAyZTkyODc0OGRkOGZhZTJlOTg4YmU0ZTFjNGNiMzJkMGJmYWVhNmY3MDAwMDAwMDAwNDY1YWI2YWFiZmZmZmZmZmYwMmZiMGQ2OTA1MDAwMDAwMDAwMmFiYWJlZGE4NTgwNTAwMDAwMDAwMDg1MTYzNTI2NTY1YWM1MjUyMmI5MTNjOTUiLCAiYWMiLCAxLCAtMTI0Nzk3MzAxNywgIjk5YjMyYjU2NzlkOTFlMGY5Y2RkNjczN2FmZWIwNzQ1OTgwNmU1YWNkNzYzMGM2YTNiOWFiNWQ1NTBkMGMwMDMiXSwKCVsiODIxOGViNzQwMjI5YzY5NWMyNTJlMzYzMGZjNjI1N2M0MjYyNGY5NzRiYzg1NmI3YWY4MjA4ZGY2NDNhNmM1MjBlZjY4MWJmZDAwMDAwMDAwMDAyNTEwMDY2ZjMwZjI3MGEwOWIyYjQyMGUyNzRjMTRkMDc0MzAwMDhlNzg4NmVjNjIxYmE0NTY2NTA1NzEyMGFmY2U1OGJlZmNhOTYwMTAzMDAwMDAwMDQ1MjUxNTNhYjg0YzM4MGE5MDE1ZDk2MTAwMDAwMDAwMDAwMDc2YTUzMDBhY2FjNTI2NTAwMDAwMDAwIiwgImFjMDA1MjYzIiwgMCwgLTE4NTU2Nzk2OTUsICI1MDcxZjhhY2Y5NmFlYTQxYzc1MThiZDFiNWI2YmJlMTYyNThiNTI5ZGYwYzAzZjllMzc0YjgzYzY2Yjc0MmM2Il0sCglbIjExMjNlNzAxMDI0MDMxMDAxM2M3NGU1ZGVmNjBkOGUxNGRkNjdhZWRmZjVhNTdkMDdhMjRhYmM4NGQ5MzM0ODM0MzFiOGNmOGVhMDMwMDAwMDAwMzUzMDA1MWZjNjc3NWZmMWEyM2M2MjdhMmU2MDVkZDI1NjBlODRlMjdmNDIwODMwMDA3MWU5MGY0NTg5ZTc2MmFkOWM5ZmU4ZDBkYTk1ZTAyMDAwMDAwMDQ2NTY1NTIwMGZmZmZmZmZmMDQyNTE1OTgwMzAwMDAwMDAwMDRhYjY1YWI2MzlkMjhkOTA0MDAwMDAwMDAwOTY1NjM2MzZhYWNhYzUyNTE1MzQ3NGRmODAxMDAwMDAwMDAwODUxNTI1MTY1YWM1MTAwNmE3NWUyM2IwNDAwMDAwMDAwMDBlNWJkM2E0YSIsICI2MzYzNjM2NTY1IiwgMCwgLTQ2NzEyNDQ0OCwgIjljYjBkZDA0ZTlmZTI4N2IxMTJlOTRhMTY0NzU5MGQyN2U4YjE2NGNhMTNjNGZlNzBjNjEwZmQxM2Y4MmMyZmQiXSwKCVsiZmQ5MmZlMTAwMzA4M2M1MTc5Zjk3ZTc3YmY3ZDcxOTc1Nzg4MTM4MTQ3YWRiZGIyODMzMDY4MDJlMjYxYzBhZWUwODBmYTIyNjMwMjAwMDAwMDAwODYwYzY0M2JhOWExODE2YjliYWRmMzYwNzdiNDU1NGQxMTcyMGUyODRlMzk1YTExMjFiYzQ1Mjc5ZTE0OGIyMDY0YzY1ZTQ5MDIwMDAwMDAwNjUxYWI2YTUzNjM2YTJjNzEzMDg4ZDIwZjRiYzQwMDEyNjRkOTcyY2NlMDViOWZlMDA0ZGMzMzM3NmFkMjRkMGQwMTNlNDE3YjkxYTVmMWI2NzM0ZTAwMDAwMDAwMDEwMGZmZmZmZmZmMDJlMzA2NGMwNTAwMDAwMDAwMDY2NTUyMDA2YTUxNjViODZlODcwNTAwMDAwMDAwMDY2NWFiNjVhYjUzNTIyMDUyZWFkYiIsICIwMGFiNTM1MjUyNjUiLCAwLCA3NzYyMDMyNzcsICI0NzIwN2I0ODc3NzcyNzUzMmY2MmUwOWFmY2Q0MTA0ZWE2Njg3ZTcyM2M3NjU3YzMwNTA0ZmEyMDgxMzMxY2M4Il0sCglbImQxYjZhNzAzMDM4ZjE0ZDQxZmNjNWNjNDU0NTVmYWExMzVhNTMyMmJlNGJmMGY1Y2JjZDUyNjU3OGZjMjcwYTIzNmNhY2I4NTNmMDIwMDAwMDAwMWFiZmZmZmZmZmYxMzVhZWZmOTAyZmEzOGYyMDJjY2Y1YmQzNDQzN2ZmODljOWRjNTdhMDI4YjYyNDQ3YTBhMzg1NzkzODNlOGVmMDAwMDAwMDAwMGZmZmZmZmZmYWRmMzk4ZDJjODE4ZDBiOTBiYzQ3NGY1NDBjMzYxOGE0YTY0MzQ4MmVlYWI3M2QzNjEwMTk4N2UyZWMwMzM1OTAwMDAwMDAwMDA0YmQzMzIzNTA0ZTY5ZmMxMDAwMDAwMDAwMDA1NTE1MTUzNTI1MTc5MGFkYTAyMDAwMDAwMDAwNTYzYWI2YWFiNTIxMzM3YTcwNDAwMDAwMDAwMDk2M2FjNjNhYmFjYWM1MjY1NmExZTk4NjIwMTAwMDAwMDAwMDc2NTY1MDBhYzUxYWI2YThmNGVlNjcyIiwgImFiNTI1MTY1NjU2NWFjNjMiLCAyLCA4MjAwODM5NCwgImI4ZjNkMjU1NTQ5OTA5YzA3NTg4ZWNiYTEwYTAyZTU1YTJkNmYyMjA2ZDgzMWFmOWRhMWE3ZGFlNjRjZmJjOGIiXSwKCVsiODFkYWRhYTcwMTE1NTY2ODNkYjNmZTk1MjYyZjRmZGIyMDM5MWI3ZTc1YjdmZmNlZTUxYjE3NmFmNjRkODNjMDZmODU1NDVkNjIwMjAwMDAwMDA1YWI1MTUxYWI1MmZmZmZmZmZmMDQ0ODA1ZWYwMzAwMDAwMDAwMDY1MzUzNTE2MzUyNjM5NzAyYzgwMjAwMDAwMDAwMDkwMDUxNjM1MTUxNTI1MmFiNTI3MGRiMDgwNDAwMDAwMDAwMDlhYzUxNmFhYjUyNjU1M2FiYWM0YWFiYzkwNTAwMDAwMDAwMDk2MzY1YWIwMDUyNjM2YTUyNTEwMDAwMDAwMCIsICI2NTY1YWI2YTUxNTIiLCAwLCAtMjEyNjI5NDE1OSwgImFkMDFlYzlkNmRiYWUzMjVlYzNhOGUxZmQ5OGUyZDAzYjExODgzNzgyMTBlZmVmMDkzZGQ4YjBiMGVmM2YxOWQiXSwKCVsiM2I5MzdlMDUwMzJiODg5NWQyZjQ5NDVjYjdlMzY3OWJlMmZiZDE1MzExZTI0MTRmNDE4NDcwNmRiZmMwNTU4Y2Y3ZGU3YjRkMDAwMDAwMDAwMDAxNjM4YjkxYTEyNjY4YTNjM2NlMzQ5Nzg4Yzk2MWMyNmFhODkzYzg2MmYxZTYzMGYxOGQ4MGU3ODQzNjg2YjZlMWU2ZmMzOTYzMTAwMDAwMDAwMDA4NTI2MzUzNTNhYjY1YWM1MWVlYjA5ZGQxYzk2MDUzOTEyNThlZTZmNzRiOWFlMTdiNWU4YzJlZjAxMGRjNzIxYzU0MzNkY2RjNmU5M2ExNTkzZTNiNmQxNzAwMDAwMDAwMDg1MzY1YWM2NTUzNTI2MzUxZmZmZmZmZmYwMzA4YjE4ZTA0MDAwMDAwMDAwMjUzYWNiNmRkMDAwNDAwMDAwMDAwMDg1MzZhYWM1MTUzYWM1MTZhYjBhODgyMDEwMDAwMDAwMDA1MDBhYzAwNjUwMDgwNGUzZmYyIiwgIiIsIDAsIDQxNjE2NzM0MywgIjU5NWEzYzAyMjU0NTY0NjM0ZTgwODUyODNlYzRlYTdjMjM4MDhkYTk3Y2U5YzVkYTdhZWNkN2I1NTNlN2ZkN2YiXSwKCVsiYTQ4ZjI3Y2EwNDc5OTc0NzBkYTc0YzhlZTA4NmRkYWQ4MmYzNmQ5YzIyZTc5MGJkNmY4NjAzZWU2ZTI3YWQ0ZDMxNzRlYTg3NTQwMzAwMDAwMDA5NTE1M2FjNjM2YWFiNmFhY2FiZmZmZmZmZmZlZmM5MzYyOTRlNDY4ZDJjOWE5OWUwOTkwOWJhNTk5OTc4YThjMDg5MWFkNDdkYzAwYmE0MjQ3NjE2MjdjZWYyMDIwMDAwMDAwNTZhNTE2MzAwNTNmZmZmZmZmZjMwNGNhZTdlZDJkM2RiYjRmMmZiZDY3OWRhNDQyYWVkMDYyMjFmZmRhOWFlZTQ2MGEyOGNlZWM1YTkzOTlmNGUwMjAwMDAwMDAwZjViZGRmODJjOWMyNWZjMjljNTcyOTI3NGMxZmYwYjQzOTM0MzAzZTVmNTk1Y2U4NjMxNmZjNjZhZDI2M2I5NmNhNDZhYjhkMDEwMDAwMDAwMzUzNjUwMGQ3Y2YyMjZiMDE0NmIwMGMwNDAwMDAwMDAwMDIwMGFjNWMyMDE0Y2UiLCAiNTE1MTAwNjM2NTYzIiwgMCwgMTk5MTc5OTA1OSwgIjljMDUxYTcwOTJmZTE3ZmE2MmIxNzIwYmMyYzRjYjJmZmMxNTI3ZDlmYjBiMDA2ZDJlMTQyYmI4ZmUwN2JmM2MiXSwKCVsiMTgwY2Q1MzEwMWM1MDc0Y2YwYjdmMDg5ZDEzOWU4MzdmZTQ5OTMyNzkxZjczZmEyMzQyYmQ4MjNjNmRmNmEyZjcyZmU2ZGJhMTMwMzAwMDAwMDA3NmE2YTYzYWM1M2FjYWJmZmZmZmZmZjAzODUzYmMxMDIwMDAwMDAwMDA3YWM1MjZhNmE2YTZhMDAzYzRhODkwMzAwMDAwMDAwMDQ1MzUxNTE2M2EwZmJiZDAzMDAwMDAwMDAwNWFiNjU2YTUyNTMyNTNkNjRjZiIsICJhYzY1IiwgMCwgLTE1NDg0NTM5NzAsICI0ZDhlZmIzYjk5YjkwNjRkMmY2YmUzM2IxOTRhOTAzZmZhYmI5ZDBlN2JhYTk3YTQ4ZmNlYzAzODA3MmFhYzA2Il0sCglbImMyMWVjOGI2MDM3NmM0N2UwNTdmMmM3MWNhYTkwMjY5ODg4ZDBmZmQ1YzQ2YTQ3MTY0OTE0NGE5MjBkMGI0MDllNTZmMTkwYjcwMDAwMDAwMDAwOGFjYWM2YTUyNmE1MzYzNjVmZmZmZmZmZjVkMzE1ZDlkYThiZjY0M2E5YmExMTI5OTQ1MGIxZjg3MjcyZTYwMzBmZGIwYzhhZGMwNGU2YzFiZmM4N2RlOWEwMDAwMDAwMDAwZWE0M2E5YTE0MmU1ODMwYzk2YjBjZTgyNzY2M2FmMzZiMjNiMDI3NzI0NDY1OGY4ZjYwNmU5NTM4NDU3NGI5MTc1MGI4ZTk0MDAwMDAwMDAwNzUxNmE2M2FjMDA2M2FjZmZmZmZmZmYwMjNjNjFiZTA0MDAwMDAwMDAwNTUxNjVhYjUyNjMzMTNjYzgwMjAwMDAwMDAwMDYwMDZhNTM1MjY1NTFlZDhjM2Q1NiIsICI2YSIsIDEsIDExNjA2Mjc0MTQsICJhNjM4Y2MxN2ZkOTFmNGIxZTc3ODc3ZThkODI0NDhjODRiMmE0ZTEwMGRmMTM3M2Y3NzlkZTdhZDMyNjk1MTEyIl0sCglbIjEyOGNkOTBmMDRiNjZhNGNiYzc4YmY0ODc0OGY2ZWVjMGYwOGQ1MTkzZWU4ZDBhNmYyZThkM2U1ZjEzOGVkMTJjMmM4N2QwMWEzMDEwMDAwMDAwODUyMDBhYjZhYWMwMGFiMDBmZmZmZmZmZjA5ZmM4OGJiMTg1MWUzZGZiM2QzMDE3OWMzOGUxNWFlYjFiMzk5MjljN2M3NGY2YWNkMDcxOTk0ZWQ0ODA2NDkwMzAwMDAwMDAwZTdmYzVlYTEyZWM1NmY1NmMwZDc1OGVjZjRiYjg4YWE5NWYzYjA4MTc2YjMzNmRiM2I5YmVjMmY2ZTI3MzM2ZGNlMjhhZGJlMDMwMDAwMDAwNDAwNTMwMDUxZmZmZmZmZmZmZDZmZjFhZGNmMWZiZTBkODgzNDUxZWU0NjkwNGYxYjdlODgyMDI0M2QzOTU1NTliMmQ0ZWU4MTkwYTZlODkxMDAwMDAwMDAwMDgwZmIxYWU3MDJmODViNDAwMDAwMDAwMDAwMDM1MjAwYWI4ZDk2NTEwMTAwMDAwMDAwMDZhYjZhNTI1MzZhYWIwMDAwMDAwMCIsICJhYiIsIDEsIDE2Njc1OTgxOTksICJjMTBjY2M5ZGI4YTkyZDdkNGIxMzNhMjk4MDc4MmRhYjlkOWQxZDYzM2QwZGRlOWY5NjEyYWRhNTc3NzFmZDg5Il0sCglbImRhOTY5NWE0MDM0OTNkMzUxMWMxMGUxZmUxMjg2Zjk1NGRiMDM2NmI3NjY3YzkxZWYxOGFlNDU3ODA1NmMxYmY3NTIxMTRhYzU5MDEwMDAwMDAwMzUzNTE1MTk3ODhkOTFkZDFmOWM2MmRjMDA1ZDgwZWE1NGViMTNmNzEzMWNhNWFhY2UzZDVkMjlmOWI1OGNjYzVmYmM5YTI3ZTc3OTk1MDAxMDAwMDAwMDQ1M2FjNmEwMGZmZmZmZmZmZTI1NTZmZjI5ZWJlODNlYjQyYTMyYzdhOGQ5M2JjNTk4MDQzNTc4ZjQ5MWI1OTM1ODA1YTMzNjA4NTM4ODQ1YTAzMDAwMDAwMDI1MmFiNjVkMjFiM2IwMThmMjZjNDAzMDAwMDAwMDAwNmFjYWI1MTUzNTM1MmUxY2JjYjEwIiwgIjAwNjU2NWFiNTIiLCAyLCAtMTU1MDkyNzc5NCwgIjBjYTY3M2ExZWU2NmY5NjI1Y2ViOWFiMjc4ZWJlZjc3MmMxMTNjMTg4MTEyYjAyODI0NTcwYzE3ZmRmNDgxOTQiXSwKCVsiYjI0MDUxNzUwMTMzNDAyMTI0MDQyN2FkYjBiNDEzNDMzNjQxNTU1NDI0ZjZkMjQ2NDcyMTFlM2U2YmZiYjIyYTgwNDVjYmRhMmYwMDAwMDAwMDAwNzFiYWM4NjMwMTEyNzE3ODAyMDAwMDAwMDAwMDAwMDAwMDAwIiwgIjZhNTE2NWFiYWM1MjY1NjU1MSIsIDAsIDE3OTA0MTQyNTQsICIyYzhiZTU5NzYyMGQ5NWFiZDg4ZjljMWNmNDk2N2MxYWUzY2EyMzA5ZjNhZmVjODkyODA1OGM5NTk4NjYwZTllIl0sCglbIjk2YmFjNDM5MDMwNDRhMTk5YjRiM2VmZWVlYzVkMTk2ZWUyM2ZiMDU0OTU1NDFmYTJjZDZmYjY0MDVhOTQzMmQxNzIzMzYzNjYwMDEwMDAwMDAwMTUxZmZmZmZmZmZlNmNlMmI2NmNlMTQ4ODkxOGEzZTg4MGJlYmIwZTc1MDEyM2YwMDdjN2JjYmFjOGZjZDY3Y2U3NWNiNmZiYWU4MDMwMDAwMDAwMGZmZmZmZmZmOWMwOTU1YWEwN2Y1MDY0NTU4MzQ4OTVjMGM1NmJlNWEwOTUzOThmNDdjNjJhM2Q0MzFmZTEyNWIxNjFkNjY2YTAyMDAwMDAwMDU1MjAwMDBhYmFjN2ZmZGJjNTQwMjE2ZjJmMDA0MDAwMDAwMDAwMTY1YTI2ZGNlMDEwMDAwMDAwMDAxYWIwMDAwMDAwMCIsICI1MTUxYWI2NTZhNjU2YTZhNjMiLCAwLCAtNzA3MTIzMDY1LCAiMjZiMjJlMThkNWQ5MDgxZmRlOTYzMTU5NGE0ZjdjNDkwNjllZDJlNDI5ZjNkMDhjYWY5ZDgzNGY2ODVjY2FiMiJdLAoJWyJiOGZkMzk0MDAxZWQyNTVmNDlhZDQ5MWZlY2M5OTBiN2YzODY4OGU5YzgzN2NjYmM3NzE0ZGRiYmY1NDA0ZjQyNTI0ZTY4YzE4ZjAwMDAwMDAwMDdhYjYzNTM1MzUzNjNhYjA4MWUxNWVlMDI3MDZmN2QwNTAwMDAwMDAwMDg1MTUyMDA1MzUzNTE1MjYzNjRjN2VjMDQwMDAwMDAwMDA1NjM2YTUzYWNhYzkyMDZjYmUxIiwgIjY1NTM1MmFjIiwgMCwgLTEyNTE1Nzg4MzgsICI4ZTA2OTdkOGNkOGE5Y2NlYTgzN2ZkNzk4Y2M2YzVlZDI5ZjZmYmQxODkyZWU5YmNiNmM5NDQ3NzI3NzhhZjE5Il0sCglbImU0MmE3Njc0MDI2NDY3NzgyOWUzMGVkNjEwODY0MTYwYzdmOTcyMzJjMTY1MjhmZTU2MTBmYzA4ODE0YjIxYzM0ZWVmY2VhNjlkMDEwMDAwMDAwNjUzMDA2YTZhMDA1MmZmZmZmZmZmNjQ3MDQ2Y2Y0NGYyMTdkMDQwZTZhOGZmM2YyOTUzMTJhYjRkZDVhMGRmMjMxYzY2OTY4YWQxYzZkOGY0NDI4MDAwMDAwMDAwMDI1MzUyZmZmZmZmZmYwMTk5YTdmOTAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgIjY1NTI2MzAwNmEwMDUxNjMiLCAxLCAxMTIyNTA1NzEzLCAiN2NkYTQzZjFmZjkxOTFjNjQ2YzU2YTRlMjliMWE4YzZjYjNmN2IzMzFkYTY4ODNlZjJmMDQ4MGE1MTVkMDg2MSJdLAoJWyIwZjAzNGYzMjAyN2E4ZTA5NDExOTQ0M2FhOWNmZTExNzM3YzZkN2RkYTlhNTJiODM5YmMwNzNkY2MwMjM1Yjg0N2IyOGUwZmFiNjAyMDAwMDAwMDZhYzUzYWM1MzZhNjNlZWU2MzQ0N2RmZGFkODA0NzY5OTRiNjg3MDZlOTE2ZGYxYmQ5ZDdjYjRmM2E0ZjZiMTQzNjlkZTg0NTY0YmVhMmU4Njg4YmQwMzAwMDAwMDA1NjU2MzZhNjVhY2Y4NDM0NjYzMDIwYjM1ZmUwMTAwMDAwMDAwMDgwMGFiYWI2NTUxNjNhY2FiYjNkNmExMDMwMDAwMDAwMDAzNTNhY2FiMzQ1ZWVkYTAiLCAiNTI2YTUxYWM2M2FiNTEiLCAxLCA2NjAyMDIxNSwgIjQ0MzVlNjJmZjY1MzFhYzczNTI5YWFjOWNmODc4YTcyMTllMGI2ZTZjYWM3OWFmODQ4N2M1MzU1ZDFhZDZkNDMiXSwKCVsiYTJkZmE0NjkwMjE0YzFhYjI1MzMxODE1YTUxMjhmMTQzMjE5ZGU1MWE0N2FiZGM3Y2UyZDM2N2U2ODNlZWI5Mzk2MGEzMWFmOWYwMTAwMDAwMDAzNjM2MzZhZmZmZmZmZmY4YmUwNjI4YWJiMTg2MWIwNzhmY2MxOWMyMzZiYzRjYzcyNmZhNDkwNjhiODhhZDE3MGFkYjJhOTc4NjJlNzQ2MDIwMDAwMDAwNGFjNjU1MzYzZmZmZmZmZmYwNDQxZjExMTAzMDAwMDAwMDAwMTUzZGJhYjBjMDAwMDAwMDAwMDA5YWI1M2FjNTM2NTUyNmFhYjYzYWJiYjk1MDUwMDAwMDAwMDA0YWI1MjUxNmEyOWEwMjkwNDAwMDAwMDAwMDNhYzUyNmEwMDAwMDAwMCIsICI2YTUyYWM2MyIsIDEsIC0xMzAyMjEwNTY3LCAiOTEzMDYwYzc0NTRlNmM4MGY1YmEzODM1NDU0YjU0ZGIyMTg4ZTM3ZGM0Y2U3MmExNmIzN2QxMWE0MzBiM2QyMyJdLAoJWyI5ZGJjNTkxZjA0NTIxNjcwYWY4M2ZiM2JiNTkxYzVkNGRhOTkyMDZmNWQzOGUwMjAyODlmN2RiOTU0MTQzOTBkZGRiYmViNTY2ODAxMDAwMDAwMDRhYzUxMDBhY2ZmZmZmZmZmYjZhNDBiNWUyOWQ1ZTQ1OWY4ZTcyZDM5ZjgwMDA4OTUyOWYwODg5MDA2Y2FkM2Q3MzQwMTE5OTFkYThlZjA5ZDAxMDAwMDAwMDk1MjZhNTEwMGFjYWI1MzZhNTE1ZmM0Mjc0MzZkZjk3Y2M1MWRjODQ5NzY0MmZmYzg2ODg1N2VlMjQ1MzE0ZDI4YjM1NmJkNzBhZGJhNjcxYmQ2MDcxMzAxZmMwMDAwMDAwMDAwZmZmZmZmZmY0ODdlZmRlMmY2MjA1NjZhOWIwMTdiMmU2ZTZkNDI1MjVlNDA3MGY3M2E2MDJmODVjNmRmZDU4MzA0NTE4ZGIzMDAwMDAwMDAwNTUxNjM1MzAwNmE4ZDgwOTAxODAyNDQ5MDRhMDIwMDAwMDAwMDA0NmE2NTY1NmFiMWU5YzIwMzAwMDAwMDAwMDQ1MWFiNjNhYmEwNmE1NDQ5IiwgIiIsIDAsIC0xNDE0OTUzOTEzLCAiYmFlMTg5ZWIzZDY0YWVkYmMyOGE2YzI4ZjZjMGNjYmQ1ODQ3MmNhYWYwY2Y0NWE1YWFiYWUzZTAzMWRkMWZlYSJdLAoJWyIxMzQ1ZmIyYzA0YmIyMWEzNWFlMzNhM2Y5ZjI5NWJlY2UzNDY1MDMwOGE5ZDg5ODRhOTg5ZGZlNGM5Nzc3OTBiMGMyMWZmOWE3ZjAwMDAwMDAwMDZhYzUyYWM2YTAwNTNmZmZmZmZmZjdiYWVlOWU4NzE3ZDgxZDM3NWE0M2I2OTFlOTE1NzliZTUzODc1MzUwZGZlMjNiYTAwNThlYTk1MDAyOWZjYjcwMjAwMDAwMDA3NTNhYjUzYWI2M2FiNTJmZmZmZmZmZjY4NGI2YjM4MjhkZmI0YzhhOTIwNDNiNDliOGNiMTVkZDNhN2M5OGI5NzhkYTFkMzE0ZGNlNWI5NTcwZGFkZDIwMjAwMDAwMDA4NjM1M2FiNmE1MjAwYWM2M2QxYTg2NDdiZjY2N2NlYjJlYWU3ZWM3NTU2OWNhMjQ5ZmJmZDVkMWI1ODJhY2ZiZDdlMWZjZjU4ODYxMjFmY2E2OTljMDExZDAxMDAwMDAwMDNhYzAwNmFmZmZmZmZmZjA0OWIxZWIwMDMwMDAwMDAwMDAwMWU0NmRjMDEwMDAwMDAwMDA4MDA2NWFiNmE2YTYzMDA2NWNhOTViNDAzMDAwMDAwMDAwMzAwNTE1MjBjODQ5OTAxMDAwMDAwMDAwNmFiNmFhYzUyNmE2NTAwMDAwMDAwIiwgIjUzNTI2YWFjNjM2MzAwIiwgMiwgMTgwOTk3ODEwMCwgImNmZWFhMzY3OTBiYzM5ODc4M2Q0Y2E0NWU2MzU0ZTFlYTUyZWU3NGUwMDVkZjdmOWViZDEwYTY4MGU5NjA3YmYiXSwKCVsiN2Q3NWRjOGYwMTFlNWY5ZjczMTNiYTZhZWRlZjhkYmUxMGQwYTQ3MWFjYTg4YmJmYzBjNGE0NDhjZTQyNGEyYzU1ODBjZGExNTYwMzAwMDAwMDAzYWI1MTUyZmZmZmZmZmYwMTk5N2Y4ZTAyMDAwMDAwMDAwOTY1NTJhYzZhNjU2NTY1NjM1MzBkOTNiYmNjIiwgIjAwNjU2YTY1NjMiLCAwLCAxNDE0NDg1OTEzLCAiZWM5MWVkYTExNDlmNzViZmZiOTc2MTI1NjlhNzg4NTU0OThjNWQ1Mzg2ZDQ3Mzc1MmEyYzgxNDU0ZjI5N2ZhNyJdLAoJWyIxNDU5MTc5NTA0YjY5ZjAxYzA2NmU4YWRlNWUxMjRjNzQ4YWU1NjUyNTY2YjM0ZWQ2NzNlZWEzODU2OGM0ODNhNWE0YzQ4MzZjYTAxMDAwMDAwMDhhYzUzNTIwMDY1NjM2NTZhZmZmZmZmZmY1ZDRlMDM3ODgwYWIxOTc1Y2U5NWVhMzc4ZDI4NzRkY2Q0OWQ1ZTAxZTFjZGJmYWUzMzQzYTAxZjM4M2ZhMzU4MDAwMDAwMDAwOTUyNTFhYzUyYWM2YWFjNjUwMGZmZmZmZmZmN2RlM2FlN2Q5NzM3M2I3ZjJhZWI0YzU1MTM3YjVlOTQ3YjJkNWZiMzI1ZTg5MjUzMGNiNTg5YmM0ZjkyYWJkNTAzMDAwMDAwMDg2NTYzYWM1M2FiNTIwMDUyZmZmZmZmZmZiNGRiMzZhMzJkNmU1NDNlZjQ5ZjRiYWZkZTQ2MDUzY2I4NWIyYTZjNGYwZTE5ZmEwODYwZDkwODM5MDFhMTE5MDMwMDAwMDAwM2FiNTE1MzFiYmNmZTU1MDRhNmRiZGEwNDAwMDAwMDAwMDg1MzZhNTM2NWFiYWM2NTAwZDY2MGM4MDMwMDAwMDAwMDA5NjU2NWFiYWI2YTUzNTM2YTZhNTRlODRlMDEwMDAwMDAwMDAzYWNhYzUyZGYyY2NmMDUwMDAwMDAwMDAyNTM1MTIyMGM4NTdlIiwgIiIsIDIsIDE4NzkxODE2MzEsICIzYWFkMThhMjA5ZmFiOGRiNDQ5NTRlYjU1ZmQzY2M3Njg5YjVlYzljNzczNzNhNGQ1ZjRkYWU4ZjdhZTU4ZDE0Il0sCglbImQ5OGI3NzdmMDRiMWIzZjRkZTE2YjA3YTA1YzMxZDc5OTY1NTc5ZDBlZGRhMDU2MDBjMTE4OTA4ZDdjZjY0MmM5Y2Q2NzAwOTNmMDIwMDAwMDAwOTUzMDA1MzUxYWM2NWFiNTM2M2EyNjhjYWFkNjczM2I3ZDE3MTgwMDg5OTdmMjQ5ZTEzNzVlYjNhYjlmZTY4YWIwZmUxNzBkOGU3NDVlYTI0ZjU0Y2U2N2Y5YjAwMDAwMDAwMDY2NTAwNTE2YTUxNTFmZmZmZmZmZjdlZjgwNDBkZmNjODZhMDY1MWY1OTA3ZThiZmQxMDE3Yzk0MGY1MWNmOGQ1N2UzZDNmZTc4ZDU3ZTQwYjFlNjEwMjAwMDAwMDAzNTM1MjYzZmZmZmZmZmYzOTg0NmNmZWQ0YmFiYzA5OGZmNDY1MjU2YmEzODIwYzMwZDcxMDU4MTMxNmFmY2I2N2NkMzFjNjIzYjcwMzM2MDMwMDAwMDAwMWFjZmZmZmZmZmYwM2Q0MDUxMjAxMDAwMDAwMDAwNTYzMDAwMDZhNTIwMWE3M2QwNTAwMDAwMDAwMDRhYjYzNmE2YTI5NGM4YzAwMDAwMDAwMDAwNmFjNjU1MzY1NTNhYzAwMDAwMDAwIiwgIjYzNTI1MzUxYWJhYyIsIDEsIDIwMTg2OTQ3NjEsICI4Njk3MGFmMjNjODliNzJhNGY5ZDYyODFlNDZiOWVmNTIyMDgxNmJlZDcxZWJmMWFlMjBkZjUzZjM4ZmUxNmZmIl0sCglbImNhYmIxYjA2MDQ1YTg5NWU2ZGNmYzBjMWU5NzFlOTQxMzBjNDZmZWFjZTI4Njc1OWY2OWExNmQyOThjOGIwZjZmZDBhZmVmOGYyMDMwMDAwMDAwNGFjMDA2MzUyZmZmZmZmZmZhMjk5ZjVlZGFjOTAzMDcyYmZiN2QyOWI2NjNjMWRkMTM0NWMyYTMzNTQ2YTUwOGJhNWNmMTdhYWI5MTEyMzQ2MDIwMDAwMDAwNTZhNjU1MTUzNjVmZmZmZmZmZjg5YTIwZGMyZWUwNTI0YjM2MTIzMTA5MmEwNzBhY2UwMzM0M2IxNjJlNzE2MjQ3OWM5NmI3NTc3MzljODM5NGEwMzAwMDAwMDAyYWJhYjkyZWM1MjRkYWY3M2ZhYmVlNjNmOTVjMWI3OWZhOGI4NGU5MmQwZThiYWM1NzI5NWUxZDBhZGM1NWRjN2FmNTUzNGViZWE0MTAyMDAwMDAwMDE1MzRkNzBlNzliMDQ2NzRmNmYwMDAwMDAwMDAwMDYwMGFiYWNhYjUzNTE3ZDYwY2MwMjAwMDAwMDAwMDM1MjY1YWI5NmM1MWQwNDAwMDAwMDAwMDRhYzYzMDBhYzYyYTc4NzA1MDAwMDAwMDAwODAwNmE1MTY1NjNhYjYzNjM5ZTJlN2ZmNyIsICI2NTUxYWM2MzUxYWMiLCAzLCAxOTQyNjYzMjYyLCAiZDBjNGE3ODBlNGUwYmMyMmUyZjIzMWUyM2YwMWM5ZDUzNmIwOWY2ZTViZTUxYzEyM2QyMThlOTA2ZWM1MThiZSJdLAoJWyI4Yjk2ZDdhMzAxMzJmNjAwNWI1YmQzM2VhODJhYTMyNWUyYmNiNDQxZjQ2ZjYzYjVmY2ExNTlhYzcwOTQ0OTlmMzgwZjZiN2UyZTAwMDAwMDAwMDc2YWFjYWJhYzYzMDBhY2ZmZmZmZmZmMDE1ODA1NjcwMDAwMDAwMDAwMDQ2NTAwNTEwMGMzMTllNmQwIiwgIjUyMDA2YSIsIDAsIC0xMTAwNzMzNDczLCAiZmI0YmQyNmE5MWI1Y2YyMjVkZDNmMTcwZWIwOWJhZDBlYWMzMTRiYzFlNzQ1MDNjYzJhM2YzNzY4MzNmMTgzZSJdLAoJWyIxMTIxOTFiNzAxM2NmYmUxOGExNzVlYWYwOWFmN2E0M2NiYWMyYzM5NmYzNjk1YmJlMDUwZTFlNWY0MjUwNjAzMDU2ZDYwOTEwZTAyMDAwMDAwMDAxYzhhNWJiYTAzNzM4YTIyMDEwMDAwMDAwMDA1NTI1MzUyNjU2YTc3YTE0OTAxMDAwMDAwMDAwMjUxMDAwM2I1MjMwMjAwMDAwMDAwMDM1MWFjNTI3MjJiZThlNiIsICI2NWFjNjU2NSIsIDAsIC0xODQ3OTcyNzM3LCAiOGU3OTVhZWVmMThmNTEwZDExN2RmYTJiOWY0YTJiZDJlMjg0N2EzNDMyMDUyNzZjZWRkMmJhMTQ1NDhmZDYzZiJdLAoJWyJjZTZlMWE5ZTA0YjRjNzQ2MzE4NDI0NzA1ZWE2OTUxN2U1ZTAzNDMzNTdkMTMxYWQ1NWQwNzE1NjJkMGI2ZWJmZWRhZmQ2Y2I4NDAxMDAwMDAwMDM2NTY1NTNmZmZmZmZmZjY3YmQyZmE3OGUyZjUyZDlmODkwMGM1OGI4NGMyN2VmOWQ3Njc5ZjY3YTBhNmY3ODY0NWNlNjFiODgzZmI4ZGUwMDAwMDAwMDAxMDBkNjk5YTU2Yjk4NjFkOTliZTI4MzhlODUwNDg4NGFmNGQzMGI5MDliMTkxMTYzOWRkMGM1YWQ0N2M1NTdhMDc3MzE1NWQ0ZDMwMzAwMDAwMDA0NmE1MTUxYWJmZmZmZmZmZjlmZGI4NGI3N2MzMjY5MjFhODI2Njg1NGY3YmJkNWE3MTMwNWI1NDM4NWU3NDdmZTQxYWY4YTM5N2U3OGI3ZmEwMTAwMDAwMDA4NjNhY2FjNmE1MWFiMDBhYzBkMmU5YjlkMDQ5YjgxNzMwMTAwMDAwMDAwMDdhYzUzNTI2YTY1MDA2M2JhOWI3ZTAxMDAwMDAwMDAwODUyNmEwMDUyNTI2M2FjYWMwYWIzZmQwMzAwMDAwMDAwMDBlYThhMDMwMzAwMDAwMDAwMDIwMGFjYTYxYTk3YjkiLCAiIiwgMSwgLTEyNzY5NTI2ODEsICJiNmVkNGEzNzIxYmUzYzNjNzMwNWE1MTI4YzlkNDE4ZWZhNThlNDE5NTgwY2VjMGQ4M2YxMzNhOTNlM2EyMmM1Il0sCglbImE3NzIxZDk0MDIxNjUyZDkwYzc5YWFmNTAyMmQ5ODIxOTMzN2Q1MGY4MzYzODI0MDNlZDMxM2FkYjExMTZiYTUwN2FjMjhiMGIwMDEwMDAwMDAwNTUxYWM2MzAwYWI4OWU2ZDY0YTdhYTgxZmI5NTk1MzY4ZjA0ZDFiMzZkNzAyMGU3YWRmNTgwNzUzNWM4MGQwMTVmOTk0Y2NlMjk1NTRmZTg2OWIwMTAwMDAwMDA2NTM1M2FiNjM2NTAwZmZmZmZmZmYwMjQ5NDRjOTAxMDAwMDAwMDAwNDYzMDA2MzUzNjlkZjlmMDEwMDAwMDAwMDAwMDAwMDAwMDAiLCAiNjU2YTUzNjU1MWFiIiwgMCwgLTE3NDAxNTE2ODcsICI5MzU4OTJjNmYwMjk0OGYzYjA4YmNkNDYzYjZhY2I3NjliMDJjMTkxMmJlNDQ1MDEyNjc2OGIwNTVlOGYxODNhIl0sCglbIjJmNzM1M2RkMDJlMzk1YjBhNGQxNmRhMGY3NDcyZGI2MTg4NTdjZDNkZTViOWUyNzg5MjMyOTUyYTliMTU0ZDI0OTEwMjI0NWZkMDMwMDAwMDAwMTUxNjE3ZmQ4OGYxMDMyODBiODViMGExOTgxOThlNDM4ZTdjYWIxYTRjOTJiYTU4NDA5NzA5OTk3Y2M3YTY1YTYxOWViOWVlYzNjMDIwMDAwMDAwMzYzNmFhYmZmZmZmZmZmMDM5NzQ4MWMwMjAwMDAwMDAwMDQ1MzAwNjM2YTBkYzk3ODAzMDAwMDAwMDAwMDA5ZDM4OTAzMDAwMDAwMDAwM2FjNmE1MzEzNDAwN2JiIiwgIjAwMDA1MzY1NTI1MjZhIiwgMCwgLTE5MTI3NDYxNzQsICIzMGM0Y2Q0YmQ2YjI5MWY3ZTk0ODljYzRiNDQ0MGEwODNmOTNhNzY2NGVhMWY5M2U3N2E5NTk3ZGFiOGRlZDljIl0sCglbIjdkOTU0NzM2MDRmZDUyNjdkMGUxYmI4YzliOGJlMDZkN2U4M2ZmMThhZDU5N2U3YTU2OGEwYWEwMzNmYTViNGUxZTJiNmYxMDA3MDIwMDAwMDAwNDY1MDA2YTZhZmZmZmZmZmZhZWUwMDg1MDNiZmM1NzA4YmQ1NTdjN2U3OGQyZWFiNDg3ODIxNmE5ZjE5ZGFhODc1NTVmMTc1NDkwYzQwYWFmMDAwMDAwMDAwMjYzYWJmZmZmZmZmZmFiZDc0ZjBjZmY2ZTdjZWI5YWNjMmVlMjVlNjVhZjFhYmNlYmI1MGMwODMwNmU2Yzc4ZmE4MTcxYzM3NjEzZGQwMTAwMDAwMDA1NTJhY2FjYWJhYmZmZmZmZmZmNTRhMzA2OTM5M2Y3OTMwZmExYjMzMWNkZmYwY2I5NDVlYzIxYzExZDQ2MDVkOGVlZGJhMWQzZTA5NGM2YWUxZjAxMDAwMDAwMDI2MzAwZmZmZmZmZmYwMTgyZWRlYjA1MDAwMDAwMDAwOTUyNjM1M2FiNTE1MzUzMDA2NWEyNDdlOGNkIiwgIjUxNTE2YWFiMDAiLCAyLCAtNDI2MjEwNDMwLCAiMjcwN2NhNzE0YWYwOTQ5NGJiNGNmMDc5NGFiZTMzYzZjYmE1ZjI5ODkxZDYxOWU3NjA3MDI2OWQxZmE4ZTY5MCJdLAoJWyIyMjFkNDcxODAyM2Q5Y2E5ZmUxYWYxNzhkYmZjZTAyYjJiMzY5YmY4MjNlYTNmNDNmMDA4OTFiN2ZlZjk4ZTIxNWMwNmI5NGZkZDAwMDAwMDAwMDk1MTAwNTE1M2FiMDAwMDUxYWNmZmZmZmZmZmIxYzdhZDFjNjRiNzQ0MWJmNWU3MGNkMGY2ZWI0ZWM5NjgyMWQ2N2ZjNDk5N2Q5ZTZkZmRjZWFkZWNkMzZkZGUwMTAwMDAwMDA3MDA1MTUzNmE2MzUxNTNmZmZmZmZmZjA0ZTg4M2NkMDAwMDAwMDAwMDA4NTFhYjUzNjU1M2FiMDA1MmJiYjJmNzA0MDAwMDAwMDAwMDJmMWIyZTAzMDAwMDAwMDAwMTY1MjU5ZmNiMDAwMDAwMDAwMDAwMTBkYmRlOTkiLCAiYWIiLCAxLCA2NjU3MjEyODAsICI0YWJjZTc3NDMyYTg2ZGZlNjA4ZTdjMTY0NmMxOGI1MjUzYTM3MzM5MmZmOTYyZTI4OGUzYWI5NmJiYTFiYTFkIl0sCglbIjZmNjZjMGIzMDEzZTZhZTZhYWJhZTkzODJhNDMyNmRmMzFjOTgxZWFjMTY5YjZiYzRmNzQ2ZWRhYTdmYzFmOGM3OTZlZjRlMzc0MDAwMDAwMDAwNjY1YWI2YWFiYWM2YWZmZmZmZmZmMDE5MWM4ZDYwMzAwMDAwMDAwMDI1MjUzMDAwMDAwMDAiLCAiNmE1MzUyNTE2YTYzNTM1MmFiIiwgMCwgLTEyOTk2Mjk5MDYsICI0ODQxMWVmZWIxMzNjNmI3ZmVjNGU3YmRiZTYxM2Y4MjcwOTNjYjA2ZWEwZGJjYzJmZmNmZGUzYTlhYzQzNTZjIl0sCglbIjg5ZTc5MjhjMDQzNjNjYjUyMGVmZjQ0NjUyNTFmZDhlNDE1NTBjYmQwZDJjZGYxOGM0NTZhMGJlM2Q2MzQzODJhYmNmZDRhMjEzMDIwMDAwMDAwNmFjNTE2YTZhNjU2MzU1MDQyYTc5NjA2MWVkNzJkYjUyYWU0N2QxNjA3YjFjZWVmNmNhNmFlYTNiN2VlYTQ4ZTdlMDI0MjlmMzgyYjM3OGM0ZTUxOTAxMDAwMDAwMDg1MzUxYWI2MzUyYWI1MjUyZmZmZmZmZmY1MzYzMWNiZGE3OWI0MDE4MzAwMGQ2ZWRlMDExYzc3OGY3MDE0N2RjNmZhMWFlZDMzOTVkNGNlOWY3YThlNjk3MDEwMDAwMDAwOTZhNjU1M2FiNTI1MTZhNTJhYmFkMGRlNDE4ZDgwYWZlMDU5YWFiNWRhNzMyMzdlMGJlYjYwYWY0YWM0OTBjMzM5NGMxMmQ2NjY2NWQxYmFjMTNiZGYyOWFhODAwMDAwMDAwMDE1M2YyYjU5YWI2MDI3YTMzZWIwNDAwMDAwMDAwMDcwMDUzNTFhYzUxMDBhYzg4Yjk0MTAzMDAwMDAwMDAwM2FiMDA1MmUxZThhMTQzIiwgIjYzNjU2YSIsIDAsIDEyNTg1MzMzMjYsICJiNTc1YTA0YjBiYjU2ZTM4YmJmMjZlMWEzOTZhNzZiOTlmYjA5ZGIwMTUyNzY1MTY3M2EwNzNhNzVmMGE3YTM0Il0sCglbImNhMzU2ZTIwMDRiZWEwOGVjMmRkMmRmMjAzZGMyNzU3NjVkYzNmNjA3M2Y1NWM0NjUxM2E1ODhhN2FiY2M0Y2JkZTJmZjAxMWM3MDIwMDAwMDAwNTUzNTI1MTAwMDAzYWVmZWM0ODYwZWY1ZDZjMWM2YmU5M2UxM2JkMmQyYTQwYzZmYjczNjE2OTQxMzZhNzYyMGIwMjBlY2JhY2E5NDEzYmNkMmEwMzAwMDAwMDA5NjVhYzAwNTM2MzUyNTM1MTAwYWNlNDI4OWUwMGU5N2NhYWVhNzQxZjJiODljMTE0MzA2MDAxMWExZjkzMDkwZGMyMzBiZWUzZjA1ZTM0ZmJkOGQ4YjZjMzk5MDEwMDAwMDAwMzY1NTI2YWZmZmZmZmZmNDhmYzQ0NDIzOGJkYTdhNzU3Y2I2YTk4Y2I4OWZiNDQzMzg4MjlkM2UyNGU0NmE2MGEzNmQ0ZTI0YmEwNWQ5MDAyMDAwMDAwMDI2YTUzZmZmZmZmZmYwM2Q3MGI0NDAyMDAwMDAwMDAwNTZhNmE1MjZhYWM4NTNjOTcwMTAwMDAwMDAwMDI1MTUzMzU1NTIyMDIwMDAwMDAwMDAzNTE2MzUzMDAwMDAwMDAiLCAiMDA1MiIsIDMsIC01MjgxOTI0NjcsICJmYzkzY2MwNTZjNzBkNWUwMzM5MzNkNzMwOTY1ZjM2YWQ4MWVmNjRmMTc2MmU1N2YwYmM1NTA2YzViNTA3ZTI0Il0sCglbIjgyZDRmYTY1MDE3OTU4ZDUzZTU2MmZhYzA3M2RmMjMzYWIxNTRiZDBjZjZlNWExOGY1N2Y0YmFkZWE4MjAwYjIxNzk3NWUzMTAzMDIwMDAwMDAwNDYzNmFhYjUxYWMwODkxYTIwNDIyN2NjOTA1MDAwMDAwMDAwNjYzNTIwMDY1NTM2NWJmZWY4ODAyMDAwMDAwMDAwODY1NjUwMDUxNjM1MjUyYWNmYzJkMDkwNTAwMDAwMDAwMDZhYjY1YWM1MTUxNjM4MDE5NWUwMzAwMDAwMDAwMDdhYzUyNTI1MzUyNTEwMDYzZDUwNTcyIiwgIjUzIiwgMCwgLTcxMzU2NzE3MSwgImUwOTUwMDNjYTgyYWY4OTczOGMxODYzZjBmNTQ4OGVjNTZhOTZmYjgxZWE3ZGYzMzRmOTM0NGZjYjFkMGNmNDAiXSwKCVsiNzVmNjk0OTUwM2UwZTQ3ZGQ3MDQyNmVmMzIwMDJkNmNkYjU2NGE0NWFiZWRjMTU3NTQyNWExOGE4ODI4YmYzODVmYThlODA4ZTYwMDAwMDAwMDAzNmFhYmFiODJmOWZkMTRlOTY0N2Q3YTFiNTI4NGU2YzU1MTY5YzhiZDIyOGE3ZWEzMzU5ODdjZWYwMTk1ODQxZTgzZGE0NWVjMjhhYTJlMDMwMDAwMDAwMjUxNjM1MGRjNmZlMjM5ZDE1MGVmZGIxYjUxYWEyODhmZTg1ZjliOWY3NDFjNzI5NTZjMTFkOWRjZDE3Njg4OTk2M2Q2OTlhYmQ2M2YwMDAwMDAwMDAxYWI0MjlhNjNmNTAyNzc3ZDIwMDEwMDAwMDAwMDA3YWJhYzUyYWM1MTZhNTNkMDgxZDkwMjAwMDAwMDAwMDNhY2FjNjMwYzNjYzNhOCIsICI1MzUxNTI1MTY1NTE1MTAwMDAiLCAxLCA5NzM4MTQ5NjgsICJjNmVjMWI3Y2I1YzE2YTFiZmQ4YTM3OTBkYjIyN2QyYWNjODM2MzAwNTM0NTY0MjUyYjU3YmQ2NmFjZjk1MDkyIl0sCglbIjI0ZjI0Y2Q5MDEzMmIyMTYyZjkzOGYxYzIyZDNjYTVlN2RhYTgzNTE1ODgzZjMxYTYxYTUxNzdhZWJmOTlkN2RiNmJkZmMzOThjMDEwMDAwMDAwMTYzZmZmZmZmZmYwMWQ1NTYyZDAxMDAwMDAwMDAwMTYzMDAwMDAwMDAiLCAiNTI2NWFjNTE2NWFjNTI1MmFiIiwgMCwgMTA1NTEyOTEwMywgIjVlZWIwM2UwMzgwNmNkN2JmZDQ0YmJiYTY5YzMwZjg0YzJjNTEyMGRmOWU2OGNkOGZhY2M2MDVmY2ZiYzk2OTMiXSwKCVsiNWZmMmNhYzIwMTQyMzA2NGE0ZDg3YTk2Yjg4ZjE2NjliMzNhZGRkYzZmYTlhY2RjODQwYzBkOGEyNDM2NzFlMGU2ZGU0OWE1YjAwMzAwMDAwMDA1YWM2MzUzNjU1MzUzYjkxZGI1MDE4MGRiNWEwMzAwMDAwMDAwMDY2MzUzNTE1MTAwNmEwNDdhM2FmZiIsICI1MmFiNTFhYjUzNjUwMDUxNjMiLCAwLCAtMTMzNjYyNjU5NiwgImI4ZGI4ZDU3ZmU0MGFiM2E5OWNmMmY4ZWQ1N2RhN2E2NTA1MGZjYzFkMzRkNDI4MGUyNWZhZjEwMTA4ZDMxMTAiXSwKCVsiMTAwMTFmMTUwMjIwYWQ3NmE1MGNjYzdiYjFhMDE1ZWRhMGZmOTg3ZTY0Y2Q0NDdmODRiMGFmYjhkYzMwNjBiZGFlNWIzNmE2OTAwMjAwMDAwMDAwZmZmZmZmZmYxZTkyZGQ4MTRkZmFmYTgzMDE4N2JjOGU1YjkyNThkZTI0NDVlYzA3YjAyYzQyMGVlNTE4MWQwYjIwM2JiMzM0MDAwMDAwMDAwNTY1YWI1MzZhNjVmZmZmZmZmZjAxMjRlNjU0MDEwMDAwMDAwMDA4MDBhYjYzNjU1M2FiNTNhYzAwMDAwMDAwIiwgIjUzYWJhYjAwNTEiLCAwLCA0NDAyMjI3NDgsICJjNjY3NWJmMjI5NzM3ZTAwNWI1YzhmZmE2ZjgxZDllMmM0Mzk2ODQwOTIxYjYxNTEzMTZmNjdjNDMxNWE0MjcwIl0sCglbIjhiOTVlYzkwMDQ1NjY0OGQ4MjBhOWI4ZGYxZDhmODE2ZGI2NDdkZjhhOGRjOWY2ZTcxNTFlYmY2MDc5ZDkwZWUzZjY4NjEzNTJhMDIwMDAwMDAwODUyMDBhYjAwYWM1MzUxNTFmZmZmZmZmZjAzOWIxMGI4NDVmOTYxMjI1YWMwYmNhYWM0ZjVmZTE5OTEwMjlhMDUxYWEzZDA2YTM4MTFiNTc2Mjk3N2E2NzQwMzAwMDAwMDAzNTI1MmFiZmZmZmZmZmY4NTU5ZDY1ZjQwZDVlMjYxZjQ1YWVjOGFhZDNkMmM1NmM2MTE0YjIyYjI2ZjdlZTU0YTA2ZjA4ODFiZTNhN2Y1MDEwMDAwMDAwNzY1NjM1MjUyNTM2MzYzZmZmZmZmZmYzOGY4YjAwM2I1MGY2NDEyZmViMjMyMmIwNmIyNzAxOTdmODFhZDY5YzM2YWYwMmNhNTAwOGI5NGVlZTVmNjUwMDIwMDAwMDAwMTY1ZmZmZmZmZmYwMWFlMmIwMDAxMDAwMDAwMDAwMTYzOGViMTUzYTIiLCAiMDA1M2FiNTMwMGFjNTMiLCAyLCAxMjY2MDU2NzY5LCAiMjA1ZjM2NTNmMDE0MmIzNWNlM2VmMzk2MjU0NDJlZmViYWU5OGNkZThjYmYwNTE2Yjk3YjUxMDczYmIwNDc5ZiJdLAoJWyJiYWJiYjdlYTAxYWI1ZDU4NDcyN2NiNDQzOTNiMTdjZjY2NTIxNjA2ZGM4MWUyNWQ4NTI3M2JlMGQ1N2JhZDQzZThmNmI2ZDQzNTAxMDAwMDAwMDM2YTY1NmFiYTgzYTY4ODAzZmIwZjRhMDAwMDAwMDAwMDA1NTM2MzUzYWI2MzNmY2ZlNDAyMDAwMDAwMDAwOWFjMDBhY2FiNjM1MTAwNmE2NTE4MmEwYzAzMDAwMDAwMDAwNDUzYWM1MzYzYmVlNzRmNDQiLCAiNTM2YTZhNmE2MzY1YWM1MWFiIiwgMCwgLTc5OTE4NzYyNSwgIjMyNzVlOThkY2EzNzI0M2I5Nzc1MjVhMDdiNWQ4ZTM2OWQ2YzNiZGMwOGNiOTQ4MDI5YTYzNTU0N2QwZDFhNGUiXSwKCVsiZTg2YTI0YmMwM2U0ZmFlNzg0Y2RmODFiMjRkMTIwMzQ4Y2I1ZTUyZDkzN2NkOTA1NTQwMmZkYmE3ZTQzMjgxZTQ4MmU3N2ExYzEwMDAwMDAwMDA0NjM2MzAwNmFmZmZmZmZmZmE1NDQ3ZTliZGNkYWIyMmJkMjBkODhiMTk3OTVkNGM4ZmIyNjNmYmJmN2NlOGY0ZjlhODVmODY1OTUzYTYzMjUwMjAwMDAwMDA2NjNhYzUzNTM1MjUzZmZmZmZmZmY5ZjhiNjkzYmM4NGUwMTAxZmM3Mzc0OGUwNTEzYThjZWNkYzI2NDI3MGQ4YTRlZTFhMWI2NzE3NjA3ZWUxZWFhMDAwMDAwMDAwMjZhNTEzNDE3YmY5ODAxNThkODJjMDIwMDAwMDAwMDA5MDA1MjUzMDA1MzUxYWNhYzUyMDAwMDAwMDAiLCAiNjM1MzUxNjM2NTUzNmE2YSIsIDIsIC01NjM3OTI3MzUsICI1MDgxMjkyNzhlZjA3YjQzMTEyYWMzMmZhZjAwMTcwYWQzOGE1MDBlZWQ5NzYxNWE4NjBmZDU4YmFhYWQxNzRiIl0sCglbIjUzYmQ3NDk2MDM3OThlZDc4Nzk4ZWYwZjE4NjFiNDk4ZmM2MWRjZWUyZWUwZjJiMzdjZGRiMTE1YjExOGU3M2JjNmE1YTQ3YTAyMDEwMDAwMDAwOTZhNjM2NTZhNmFhYjZhMDAwMDA3ZmY2NzRhMGQ3NGY4YjRiZTlkMmU4ZTY1NDg0MGU5OWQ1MzMyNjNhZGJkZDBjZjA4M2ZhMWQ1ZGQzOGU0NGQyZDE2M2Q5MDAxMDAwMDAwMDdhYmFiNTI1MWFjNmE1MWM4YjZiNjNmNzQ0YTliOTI3M2NjZmRkNDdjZWIwNWQzYmU2NDAwYzFlZDBmNzI4M2QzMmIzNGE3ZjRmMDg4OWNjY2YwNmJlMzAwMDAwMDAwMDk1MTZhNTI2MzY1NTFhYjUxNmE5YWMxZmU2MzAzMGM2NzdlMDUwMDAwMDAwMDAwMjdiYzYxMDAwMDAwMDAwMDA4NjU2NTYzNmE2MzUxMDA1MjZlMmRjNjAyMDAwMDAwMDAwMTUzMDAwMDAwMDAiLCAiNjU1MjUzNmE1MTUzNTFhYiIsIDEsIC0xNjE3MDY2ODc4LCAiZmU1MTZkZjkyMjk5ZTk5NWI4ZTY0ODliZTgyNGM2ODM5NTQzMDcxZWM1ZTkyODYwNjBiMjYwMDkzNWJmMWYyMCJdLAoJWyI2OTFiZjlmYzAyOGNhMzA5OTAyMGI3OTE4NGU3MDAzOWNmNTNiM2M3YjNmZTY5NWQ2NjFmZDYyZDdiNDMzZTY1ZmVkYTIxNTA2MTAwMDAwMDAwMDNhYzYzYWJmZmZmZmZmZjJjODE0YzE1YjE0MmJjOTQ0MTkyYmRkY2NiOTBhMzkyY2QwNWI5NjhiNTk5YzFkOGNkOTlhNTVhMjhhMjQzZmQwMTAwMDAwMDA5YWI1MzAwNTI2YTUyMDBhYmFjOTg1MTZhNTgwM2RmZDM1NDA1MDAwMDAwMDAwNDY1NTJhYzUyMjgzODEyMDEwMDAwMDAwMDA0MDA1M2FiNmE0NDA5YTkwMzAwMDAwMDAwMDY2NTYzNmE1MzAwNjU4NzU5NjIxYiIsICI2NWFjNTE2NWFiIiwgMCwgLTM1OTk0MTQ0MSwgImQ1ODJjNDQyZTBlY2M0MDBjN2JhMzNhNTZjOTNhZDljOGNmZDQ1YWY4MjAzNTBhMTM2MjM1OTRiNzkzNDg2ZjAiXSwKCVsiNTM2YmM1ZTYwMjMyZWI2MDk1NDU4NzY2N2Q2YmNkZDE5YTQ5MDQ4ZDY3YTAyNzM4M2NjMGMyYTI5YTQ4Yjk2MGRjMzhjNWEwMzcwMzAwMDAwMDA1YWM2MzYzMDBhYmZmZmZmZmZmOGYxY2ZjMTAyZjM5YjFjOTM0OGEyMTk1ZDQ5NmU2MDJjNzdkOWY1N2UwNzY5ZGFiZGU3ZWFhZWRmOWM2OWUyNTAxMDAwMDAwMDZhY2FiYWI2YTYzNTFmZmZmZmZmZjA0MzJmNTZmMDQwMDAwMDAwMDA0NmE1MzY1NTE3ZmQ1NGIwNDAwMDAwMDAwMDM1MjY1NTM5NDg0ZTQwNTAwMDAwMDAwMDM1MzZhNTM3NmRjMjUwMjAwMDAwMDAwMDhhYzUzNmFhYjZhYWI1MzZhYjk3OGU2ODYiLCAiYWMwMDUxMDA2YTAwNmEwMDZhIiwgMCwgLTI3MzA3NDA4MiwgImYxNTFmMWVjMzA1ZjY5OGQ5ZmRjZTE4ZWEyOTJiMTQ1YTU4ZDkzMWYxNTE4Y2YyYTRjODM0ODRkOWE0Mjk2MzgiXSwKCVsiNzQ2MDZlYmEwMWMyZjk4Yjg2YzI5YmE1YTMyZGM3YTc4MDdjMmFiZTZlZDhkODk0MzViM2RhODc1ZDg3YzEyYWUwNTMyOWU2MDcwMjAwMDAwMDAzNTEwMDUyZmZmZmZmZmYwMmExZTJjNDAyMDAwMDAwMDAwNjUxNjU2MzUyNmE2M2M2OGJhZTA0MDAwMDAwMDAwOTUyYWI2MzYzYWIwMDAwNjM2M2ZlMTlhZTRmIiwgIjYzYWJhYmFjYWM1MzY1IiwgMCwgMTEyMzIzNDAwLCAiZDFiMWQ3OTAwMWI0YTAzMjQ5NjI2MDdiNzM5OTcyZDZmMzljMTQ5M2M0NTAwY2U4MTRmZDNiZDcyZDMyYTVhMCJdLAoJWyIyZWQ4MDVlMjAzOTllNTJiNWJjYzlkYzA3NWRhZDVjZjE5MDQ5ZmY1ZDdmM2RlMWE3N2FlZTkyODhlNTljNWY0OTg2NzUxNDgzZjAyMDAwMDAwMDE2NWZmZmZmZmZmOTY3NTMxYTU3MjZlN2E2NTNhOWRiNzViZDNkNTIwOGZhM2UyYzVlNmNkNTk3MGM0ZDNhYmE4NGViNjQ0YzcyYzAzMDAwMDAwMDBmZmZmZmZmZmQ3OTAzMGQyMGM2NWU1ZjhkM2M1NWI1NjkyZTViZGFhMmFlNzhjZmExOTM1YTAyODJlZmI5NzUxNWZlYWM0M2YwMzAwMDAwMDA0MDAwMDYzNjUyNjFhYjg4YzAyYmRmNjZhMDAwMDAwMDAwMDAzYWI2MzUxZDZhZDhiMDAwMDAwMDAwMDA1NTI1MTUyYWJhYzAwMDAwMDAwIiwgIjYzMDA1M2FiNTI2NSIsIDAsIDIwNzI4MTQ5MzgsICIxZDI1ZDE2ZDg0ZDU3OTNiZTFhZDVjZGEyZGU5YzljZjcwZTA0YTY2YzNkYWU2MThmMWE3Y2E0MDI2MTk4ZTdmIl0sCglbImZhYjc5NmVlMDNmNzM3ZjA3NjY5MTYwZDFmMWM4YmYwODAwMDQxMTU3ZTNhYzc5NjFmZWEzM2EyOTNmOTc2ZDc5Y2U0OWMwMmFiMDIwMDAwMDAwM2FjNTI1MmViMDk3ZWExYTZkMWE3YWU5ZGFjZTMzODUwNWJhNTU5ZTU3OWExZWU5OGEyZTlhZDk2ZjMwNjk2ZDYzMzdhZGNkYTVhODVmNDAzMDAwMDAwMDk2NTAwYWJhYjY1NmE2YTY1NjM5NmQ1ZDQxYTliMTFmNTcxZDkxZTQyNDJkZGMwY2YyNDIwZWNhNzk2YWQ0ODgyZWYxMjUxZTg0ZTQyYjkzMDM5OGVjNjlkZDgwMTAwMDAwMDA1NTI2NTUxYWM2YThlNWQwZGU4MDRmNzYzYmIwNDAwMDAwMDAwMDE1Mjg4MjcxYTAxMDAwMDAwMDAwMWFjZjJiZjI5MDUwMDAwMDAwMDAzMDBhYjUxYzk2NDE1MDAwMDAwMDAwMDA5NTI2NTUzNjM2MzYzNjVhYzUxMDAwMDAwMDAiLCAiMDBhYzUzNjU1MiIsIDAsIC0xODU0NTIxMTEzLCAiZjNiYmFiNzBiNzU5ZmU2Y2ZhZTFiZjM0OWNlMTA3MTZkYmM2NGY2ZTliMzI5MTY5MDRiZTQzODZlYjQ2MWYxZiJdLAoJWyJmMmI1MzlhNDAxZTRlODQwMjg2OWQ1ZTE1MDJkYmMzMTU2ZGJjZTkzNTgzZjUxNmE0OTQ3YjMzMzI2MGQ1YWYxYTM0ODEwYzZhMDAyMDAwMDAwMDM1MjUzNjNmZmZmZmZmZjAxZDMwNWUyMDAwMDAwMDAwMDA1YWNhYjUzNTIwMGEyNjVmZTc3IiwgIiIsIDAsIC0xNDM1NjUwNDU2LCAiNDE2MTdiMjczMjFhODMwYzcxMjYzOGRiYjE1NmRhZTIzZDRlZjE4MWM3YTA2NzI4Y2NiZjMxNTNlYzUzZDdkZCJdLAoJWyI5ZjEwYjFkODAzM2FlZTgxYWMwNGQ4NGNlZWUwYzAzNDE2YTc4NGQxMDE3YTJhZjhmOGEzNGQyZjU2Yjc2N2FlYTI4ZmY4OGM4ZjAyMDAwMDAwMDI1MzUyZmZmZmZmZmY3NDhjYjI5ODQzYmVhOGU5YzQ0ZWQ1ZmYyNThkZjFmYWY1NWZiYjkxNDY4NzBiOGQ3NjQ1NDc4NmM0NTQ5ZGUxMDAwMDAwMDAwMTZhNWJhMDg5NDE3MzA1NDI0ZDA1MTEyYzBjYTQ0NWJjNzEwNzMzOTA4M2U3ZGExNWU0MzAwNTBkNTc4ZjAzNGVjMGM1ODkyMjNiMDIwMDAwMDAwN2FiYWM1M2FjNjU2NWFiZmZmZmZmZmYwMjVhNGVjZDAxMDAwMDAwMDAwNjYzNjU2M2FiNjVhYjQwZDI3MDAwMDAwMDAwMDAwNTZhNjU1MzUyNjMzM2ZhMjk2YyIsICIiLCAwLCAtMzk1MDQ0MzY0LCAiMjBmZDBlZWU1YjU3MTZkNmNiYzBkZGY4NTI2MTRiNjg2ZTdhMTUzNDY5MzU3MDgwOWY2NzE5YjZmY2IwYTYyNiJdLAoJWyJhYjgxNzU1ZjAyYjMyNWNiZDIzNzdhY2Q0MTYzNzQ4MDZhYTUxNDgyZjljYzVjM2I3Mjk5MWU2NGY0NTlhMjVkMGRkYjUyZTY2NzAzMDAwMDAwMDM2YTAwYWI4NzI3MDU2ZDQ4YzAwY2M2ZTYyMjJiZTY2MDhjNzIxYmMyYjFlNjlkMGZmYmFkZDUxZDEzMWYwNWVjNTRiY2Q4MzAwM2FhYzUwMDAwMDAwMDAwMDNmMmNkYjYwNDU0NjMwZTAyMDAwMDAwMDAwNzUyNmFhYzYzMDAwMDAwZTllMjVjMDQwMDAwMDAwMDAzNTE2YTAwODhjOTdlMDAwMDAwMDAwMDA3NmE1MzUyNjU2NTUyNjM3NzFiNTgwNTAwMDAwMDAwMDg1MWFiMDBhYzY1NjU1MTUxMDAwMDAwMDAiLCAiNTE1MWFiMDBhYyIsIDAsIC0yMzA5MzExMjcsICJiYTBhMmM5ODdmY2RkNzRiNjkxNWY2NDYyZjYyYzNmMTI2YTA3NTBhYTcwMDQ4ZjdhYTIwZjcwNzI2ZTZhMjBiIl0sCglbIjdhMTdlMGVmMDM3OGRhYjRjNjAxMjQwNjM5MTM5MzM1ZGEzYjdkNjg0NjAwZmE2ODJmNTliNzM0NmVmMzkzODZmZTlhYmQ2OTM1MDAwMDAwMDAwNGFjNTI1MmFiODA3ZjI2ZmIzMjQ5MzI2ODEzZTE4MjYwYTYwM2I5YWQ2NmY0MWYwNWVhYTgxNDZmNjZiY2NhNDUyMTYyYTUwMmFhYzRhYThiMDIwMDAwMDAwMjZhNTM0ZWE0NjBmYWE3ZTNkNzg1NGVjNmM3MGQ3ZTc5NzAyNTY5N2I1NDdlYzUwMGIyYzA5Yzg3M2I0ZDU1MTc3NjdkM2YzNzIwNjYwMzAwMDAwMDAwZmZmZmZmZmYwMWIxMmU3YTAyMDAwMDAwMDAwOTAwYWIwMDZhYWI2NTY1NmE2Mzk5MWMwM2UyIiwgIjZhYWI2YSIsIDEsIC0xNTc3OTk0MTAzLCAiNjJjZDM0MTNkOWQ4MTlmYjczNTUzMzYzNjVjZjhhMmE5OTdmNzQzNmNjMDUwYTcxNDM5NzIwNDQzNDNiMzI4MSJdLAoJWyJmZjJlY2MwOTA0MWI0Y2Y1YWJiN2I3NjBlOTEwYjc3NTI2OGFiZWUyNzkyYzdmMjFjYzUzMDFkZDNmZWNjMWI0MjMzZWU3MGEyYzAyMDAwMDAwMDlhY2FjNTMwMDAwNmE1MTUyNmFmZmZmZmZmZmViMzljMTk1YTU0MjZhZmZmMzgzNzlmYzg1MzY5NzcxZTQ5MzM1ODcyMThlZjQ5NjhmM2YwNWM1MWQ2YjdjOTIwMDAwMDAwMDAxNjU0NTNhNWYwMzliOGRiZWY3YzFmZmRjNzBhYzM4M2I0ODFmNzJmOTlmNTJiMGIzYTU5MDNjODI1YzQ1Y2ZhNWQyYzA2NDJjZDUwMjAwMDAwMDAxNjU0YjUwMzhlNmM0OWRhZWE4YzBhOWFjODYxMWNmZTkwNGZjMjA2ZGFkMDNhNDFmYjRlNWIxZDZkODViMWVjYWQ3M2VjZDRjMDEwMjAwMDAwMDA5NmE1MTAwMDA1M2FiNjU2NTY1YmRiNTU0ODMwMmNjNzE5MjAwMDAwMDAwMDAwNDUyNjU1MjY1MjE0YTM2MDMwMDAwMDAwMDAzMDBhYjZhMDAwMDAwMDAiLCAiNTI1MTZhMDA2YTYzIiwgMSwgLTIxMTMyODkyNTEsICIzN2VkNmZhZTM2ZmNiMzM2MGM2OWNhYzhiMzU5ZGFhNjIyMzBmYzE0MTliMmNmOTkyYTMyZDhmM2UwNzlkY2ZmIl0sCglbIjcwYTg1Nzc4MDRlNTUzZTQ2MmE4NTkzNzU5NTdkYjY4Y2ZkZjcyNGQ2OGNhZWFjZjA4OTk1ZTgwZDdmYTkzZGI3ZWJjMDQ1MTlkMDIwMDAwMDAwNDUzNTJhYjUzNjE5ZjRmMmE0MjgxMDljNWZjZjlmZWU2MzRhMmFiOTJmNGEwOWRjMDFhNTAxNWU4ZWNiM2ZjMGQ5Mjc5YzRhNzdmYjI3ZTkwMDAwMDAwMDAwNmFiNmE1MTAwNmE2YWZmZmZmZmZmM2VkMWEwYTBkMDNmMjVjNWU4ZDI3OWJiNWQ5MzFiN2ViN2U5OWM4MjAzMzA2YTZjMzEwZGIxMTM0MTlhNjlhZDAxMDAwMDAwMDU2NTUxNjMwMGFiZmZmZmZmZmY2YmY2NjhkNGZmNTAwNWVmNzNhMWIwYzUxZjMyZTgyMzVlNjdhYjMxZmUwMTliZjEzMWUxMzgyMDUwYjM5YTYzMDAwMDAwMDAwNDUzNmE2NTYzZmZmZmZmZmYwMmZhZjBiYjAwMDAwMDAwMDAwMTYzY2YyYjRiMDUwMDAwMDAwMDA3NTJhYzYzNTM2M2FjYWMxNWFiMzY5ZiIsICJhYyIsIDAsIC0xMTc1ODA5MDMwLCAiMWM5ZDY4MTZjMjA4NjU4NDkwNzhmOTc3NzU0NGI1ZGRmMzdjODYyMGZlN2JkMTYxOGU0YjcyZmI3MmRkZGNhMSJdLAoJWyJhMzYwNGU1MzA0Y2FhNWE2YmEzYzI1N2MyMGI0NWRjZDQ2OGYyYzczMmE4Y2E1OTAxNmU3N2I2NDc2YWM3NDFjZThiMTZjYTgzNjAyMDAwMDAwMDRhY2FjNjU1M2ZmZmZmZmZmNjk1ZTcwMDY0OTU1MTdlMGI3OWJkNDc3MGY5NTUwNDA2MTBlNzRkMzVmMDFlNDFjOTkzMmFiOGNjZmEzYjU1ZDAzMDAwMDAwMDdhYzUyNTM1MTUzNjVhY2ZmZmZmZmZmNjE1MzEyMGVmYzVkNzNjZDk1OWQ3MjU2NmZjODI5YTRlYjAwYjNlZjFhNWJkMzU1OTY3N2ZiNWFhZTExNmUzODAwMDAwMDAwMDQwMGFiYWI1MmMyOWU3YWJkMDZmZjk4MzcyYTNhMDYyMjczODY2MDlhZGM3NjY1YTYwMmU1MTFjYWRjYjA2Mzc3Y2M2YWMwYjhmNjNkNGZkYjAzMDAwMDAwMDU1MTAwYWNhYmFjZmZmZmZmZmYwNDIwOTA3MzA1MDAwMDAwMDAwOWFiNTE2M2FjNTI1MjUzYWI2NTE0NDYyZTA1MDAwMDAwMDAwOTUyYWJhY2FiNjM2MzAwNjU2YTIwNjcyYzA0MDAwMDAwMDAwMjUxNTNiMjc2OTkwMDAwMDAwMDAwMDU2NTY1YWI2YTUzMDAwMDAwMDAiLCAiNTM1MSIsIDAsIDE0NjA4OTA1OTAsICIyNDljNDUxM2E0OTA3NmM2NjE4YWFiZjczNmRmZDVhZTIxNzJiZTQzMTE4NDRhNjJjZjMxMzk1MGI0YmE5NGJlIl0sCglbImM2YTcyZWQ0MDMzMTNiN2QwMjdmNjg2NGU3MDVlYzZiNWZhNTJlYjk5MTY5ZjhlYTdjZDg4NGY1Y2RiODMwYTE1MGNlYmFkZTg3MDEwMDAwMDAwOWFjNjNhYjUxNjU2NWFiNmE1MWZmZmZmZmZmMzk4ZDU4Mzg3MzVmZjQzYzM5MGNhNDE4NTkzZGJlNDNmMzQ0NWJhNjkzOTRhNmQ2NjViNWRjM2I0NzY5YjVkNzAwMDAwMDAwMDc1MjY1YWNhYjUxNTM2NWZmZmZmZmZmN2VlNTYxNmExZWUxMDVmZDE4MTg5ODA2YTQ3NzMwMGUyYTljZjgzNmJmODAzNTQ2NGU4MTkyYTBkNzg1ZWVhMzAzMDAwMDAwMDcwMGFjNmE1MTUxNmE1MmZmZmZmZmZmMDE4MDc1ZmQwMDAwMDAwMDAwMDE1MTAwMDAwMDAwIiwgIjAwNTI1MWFjYWM1MjUyIiwgMiwgLTY1NjA2NzI5NSwgIjJjYzFjNzUxNGZkYzUxMmZkNDVjYTdiYTRmN2JlOGE5ZmU2ZDMzMTgzMjhiYzFhNjFhZTZlNzY3NTA0N2U2NTQiXSwKCVsiOTNjMTJjYzMwMjcwZmM0MzcwYzk2MDY2NWI4Zjc3NGUwNzk0MmE2MjdjODNlNThlODYwZTM4YmQ2YjBhYTJjYjdhMmMxZTA2MDkwMTAwMDAwMDAzNjMwMGFiZmZmZmZmZmY0ZDliNjE4MDM1ZjkxNzVmNTY0ODM3ZjczM2EyYjEwOGMwZjQ2MmYyODgxODA5MzM3MmVlYzA3MGQ5ZjBhNTQ0MDMwMDAwMDAwMWFjZmZmZmZmZmYwMzljMjEzNzAyMDAwMDAwMDAwMTUyNTUwMDk5MDEwMDAwMDAwMDA1NTI2NWFiNjM2YTA3OTgwZTAzMDAwMDAwMDAwMDViYTBlOWQxIiwgIjY1NmE1MTAwIiwgMSwgMTg5NTQxODIsICI2YmVjYTBlMDM4OGY4MjRjYTMzYmYzNTg5MDg3YTNjOGFkMDg1N2Y5ZmU3Yjc2MDlhZTM3MDRiZWYwZWI4M2UyIl0sCglbIjk3YmRkYzYzMDE1ZjE3Njc2MTlkNTY1OThhZDBlYjVjN2U5Zjg4MGIyNGE5MjhmZWExZTA0MGU5NTQyOWM5MzBjMWRjNjUzYmRiMDEwMDAwMDAwOGFjNTNhY2FjMDAwMDUxNTJhYWE5NGViOTAyMzVlZDEwMDQwMDAwMDAwMDAwMjg3YmRkMDQwMDAwMDAwMDAxNmE4MDc3NjczYSIsICJhY2FjNmE1MzYzNTI2NTUyNTIiLCAwLCAtODEzNjQ5NzgxLCAiNTk5MGIxMzk0NTE4NDczNDNjOWJiODljZGJhMGU2ZGFlZTY4NTBiNjBlNWI3ZWE1MDViMDRlZmJhMTVmNWQ5MiJdLAoJWyJjYzNjOWRkMzAzNjM3ODM5ZmI3MjcyNzAyNjFkOGU5ZGRiOGEyMWI3ZjZjYmRjZjA3MDE1YmExZTVjZjAxZGMzYzNhMzI3NzQ1ZDAzMDAwMDAwMDBkMmQ3ODA0ZmUyMGE5ZmNhOTY1OWEwZTQ5ZjI1ODgwMDMwNDU4MDQ5OWU4NzUzMDQ2Mjc2MDYyZjY5ZGJiZGU4NWQxN2NkMjIwMTAwMDAwMDA5NjM1MjUzNmE1MjAwMDBhY2FiZmZmZmZmZmZiYzc1ZGZhOWI1ZjgxZjM1NTJlNDE0M2UwOGY0ODVkZmI5N2FlNjE4NzMzMGU2Y2Q2NzUyZGU2YzIxYmRmZDIxMDMwMDAwMDAwNjAwYWI1MzY1MDA2M2ZmZmZmZmZmMDMxM2QwMTQwNDAwMDAwMDAwMDk2NTY1NTE1MjUzNTI2YWFjYWMxNjdmMGEwNDAwMDAwMDAwMDhhY2FiMDA1MzUyNjM1MzZhOWE1MmY4MDMwMDAwMDAwMDA2YWJhYjUxNTFhYjYzZjc1YjY2ZjIiLCAiNmE2MzUzNTM2MzZhNjVhYzY1IiwgMSwgMzc3Mjg2NjA3LCAiZGJjNzkzNWQ3MTgzMjhkMjNkNzNmOGE2ZGM0ZjUzYTI2N2I4ZDRkOTgxNmQwMDkxZjMzODIzYmQxZjAyMzNlOSJdLAoJWyIyMzZmOTFiNzAyYjhmZmVhM2I4OTA3MDBiNmY5MWFmNzEzNDgwNzY5ZGRhNWEwODVhZTIxOWM4NzM3ZWJhZTkwZmYyNTkxNWEzMjAzMDAwMDAwMDU2MzAwYWM2MzAwODExYTZhMTAyMzBmMTJjOWZhYTI4ZGFlNWJlMmViZTkzZjM3YzA2YTc5ZTc2MjE0ZmViYTQ5YmIwMTdmYjI1MzA1ZmY4NGViMDIwMDAwMDAwMTAwZmZmZmZmZmYwNDFlMzUxNzAzMDAwMDAwMDAwMzUxYWMwMDRmZjUzZTA1MDAwMDAwMDAwM2FiNTM2MzZjMTQ2MDAxMDAwMDAwMDAwMGNiNTVmNzAxMDAwMDAwMDAwNjUxNTIwMDUxYWIwMDAwMDAwMDAwIiwgImFjYWM2MzZhNmFhYzUzMDAiLCAwLCA0MDY0NDg5MTksICI3OTNhM2QzYzM3ZjY0OTRmYWI3OWZmMTBjMTY3MDJkZTAwMmY2M2UzNGJlMjVkZDg1NjFmNDI0YjBlYTkzOGM0Il0sCglbIjIyZTEwZDIwMDNhYjRlYTk4NDlhMjgwMTkyMTExMzU4M2I3YzM1YzM3MTBmZjQ5YTYwMDM0ODkzOTU3ODlhN2NmYjFlNjA1MTkwMDEwMDAwMDAwNjUyNmE2NTUzNTE1MWZmZmZmZmZmODJmMjFlMjQ5ZWM2MGRiMzM4MzFkMzNiOWVhZDBkNTZmNjQ5NmRiNjQzMzdkY2I3ZjFjMzMyN2M0NzcyOWM0YTAyMDAwMDAwMDI1M2FiZmZmZmZmZmYxMzhmMDk4ZjBlNmE0Y2Y1MWRjM2U3YTNiNzQ5ZjQ4N2QxZWJkZTcxYjczYjczMWQxZDAyYWQxMTgwYWM3YjhjMDIwMDAwMDAwMzY1NjNhY2RhMjE1MDExMDI3YTk0ODQwMjAwMDAwMDAwMDc2MzUxNjU1MzAwMDBhYzRiZjZjYjA0MDAwMDAwMDAwNjZhYWNhYmFiNjVhYjNjZTNmMzJjIiwgImFiMDA1MmFiIiwgMiwgMTEzNjM1OTQ1NywgImI1YmQwODBiYmNiOGNkNjUyZjQ0MDQ4NDMxMWQ3YTNjYjZhOTczY2Q0OGYwM2M1YzAwZmQ2YmViNTJkZmMwNjEiXSwKCVsiYzQ3ZDVhZDYwNDg1Y2IyZjdhODI1NTg3Yjk1ZWE2NjVhNTkzNzY5MTkxMzgyODUyZjM1MTRhNDg2ZDdhN2ExMWQyMjBiNjJjNTQwMDAwMDAwMDA2NjM2NTUyNTNhY2FiOGMzY2YzMmIwMjg1YjA0MGU1MGRjZjY5ODdkZGY3YzM4NWIzNjY1MDQ4YWQyZjkzMTdiOWUwYzViYTA0MDVkOGZkZTQxMjliMDAwMDAwMDAwOTUyNTFhYjAwYWM2NTYzNTMwMGZmZmZmZmZmNTQ5ZmU5NjNlZTQxMGQ2NDM1YmIyZWQzMDQyYTdjMjk0ZDBjNzM4MmE4M2VkZWZiYTg1ODJhMjA2NGFmMzI2NTAwMDAwMDAwMDE1MmZmZmZmZmZmZjc3MzdhODVlMGU5NGMyZDE5Y2QxY2RlNDczMjhlY2UwNGIzZTMzY2Q2MGYyNGE4YTM0NWRhN2YyYTk2YTZkMDAwMDAwMDAwMDg2NWFiNmEwMDUxNjU2YWFiMjhmZjMwZDUwNDk2MTNlYTAyMDAwMDAwMDAwNWFjNTEwMDAwNjNmMDZkZjEwNTAwMDAwMDAwMDhhYzYzNTE2YWFiYWM1MTUzYWZlZjU5MDEwMDAwMDAwMDA3MDA2NTY1MDA2NTUyNTM2ODhiYzAwMDAwMDAwMDAwMDg2YWFiNTM1MjUyNmE1MzUyMWZmMWQ1ZmYiLCAiNTFhYzUyIiwgMiwgLTEyOTYwMTE5MTEsICIwYzFmZDQ0NDc2ZmYyOGJmNjAzYWQ0ZjMwNmU4YjZjN2YwMTM1YTQ0MWRjMzE5NGE2ZjIyN2NiNTQ1OTg2NDJhIl0sCglbIjBiNDNmMTIyMDMyZjE4MjM2NjU0MWU3ZWUxODU2MmViNWYzOWJjN2E4ZTVlMGQzYzM5OGY3ZTMwNmU1NTFjZGVmNzczOTQxOTE4MDMwMDAwMDAwODYzMDA2MzUxYWM1MWFjYWJmZmZmZmZmZmFlNTg2NjYwYzhmZjQzMzU1YjY4NWRmYTg2NzZhMzcwNzk5ODY1ZmJjNGI2NDFjNWE5NjJmMDg0OWExM2Q4MjUwMTAwMDAwMDA1YWJhYjYzYWNhYmZmZmZmZmZmMGIyYjZiODAwZDhlNzc4MDdjZjEzMGRlNjI4NmIyMzc3MTc5NTc2NTg0NDM2NzRkZjA0N2EyYWIxOGU0MTM4NjAxMDAwMDAwMDhhYjZhYWM2NTUyMDBhYjYzZmZmZmZmZmYwNGYxZGJjYTAzMDAwMDAwMDAwODAwNjM1MjUzYWI2NTZhNTJhNmVlZmQwMzAwMDAwMDAwMDM2MzY1NjU1ZDhjYTkwMjAwMDAwMDAwMDA1YTBkNTMwNDAwMDAwMDAwMDE1MzAwMDAwMDAwIiwgIjY1YWM2NWFjYWMiLCAwLCAzNTE0NDg2ODUsICI4NmYyNmUyMzgyMmFmZDFiZGZjOWZmZjkyODQwZmMxZTYwMDg5ZjEyZjU0NDM5ZTNhYjllNTE2N2QwMzYxZGNmIl0sCglbIjRiMGVjYzBjMDNiYTM1NzAwZDJhMzBhNzFmMjhlNDMyZmY2YWM3ZTM1NzUzM2I0OWY0ZTk3Y2YyOGYxMDcxMTE5YWQ2Yjk3ZjNlMDMwMDAwMDAwOGFjYWI1MTYzNjNhYzYzYWNmZmZmZmZmZmNkNmEyMDE5ZDk5YjVjMmQ2MzlkZGNhMGIxYWE1ZWE3YzEzMjZhMDcxMjU1ZWEyMjY5NjBiZDg4ZjQ1Y2E1N2QwMDAwMDAwMDA4NTI1MzY1NTM2MzAwNTM1M2ZmZmZmZmZmYmEyNTc2MzUxOTFjOWYyMTZkZTMyNzdiZTU0OGNiNWEyMzEzMTE0Y2IxYTRjNTYzYjAzYjRlZjZjMGY0ZjcwNDAzMDAwMDAwMDFhYmRhNTQyZWRmMDQ5NWNkYzQwMTAwMDAwMDAwMDI2MzUzYzA0OWU5MDMwMDAwMDAwMDA3NTI1MTZhNTNhYjY1NTEyYjBmOTMwNDAwMDAwMDAwMDk2M2FiNTE2YWFjNjU1MTY1NTJmYTllY2UwNTAwMDAwMDAwMDlhY2FiNjUwMDAwNTE1MjUzMDAwMDAwMDAwMCIsICI2NWFiNTE1MjUzNTI1MTAwNTIiLCAxLCAtMTM1NTQxNDU5MCwgIjNjZDg1Zjg0YWFlNmQ3MDI0MzZmM2Y5Yjg5ODBhZGNjMWY4ZjIwMmU5NTc3NTk1NDBhMjdkYTBhMzJmYzZjODciXSwKCVsiYWRhYWMwYTgwM2Y2NjgxMTM0NjI3MWM3MzMwMzZkNmUwZDQ1ZTE1YTliNjAyMDkyZTJlMDRhZDkzNTY0ZjE5NmU3ZjAyMGIwODgwMDAwMDAwMDA2MDA1MjZhNjM2YTAwNzAwZWMzZjlkYjA3YTNhNmNlOTEwYmYzMThjN2VjODdhODc2ZTFmMmEzMzY2Y2M2OWYyMGNkZTA5MjAzYjk5YzFjYjlkMTU4MDAwMDAwMDAwNTAwMDBhYzYzNmE0ZDBkZTU1NGViZTk1YzZjYzE0ZmFmNWZmNjM2MWQxZGViYTk0NzRiOGIwZmQzYjkzYzAxMWNkOTZhZWM3ODNhYmIzZjM2ODMwMjAwMDAwMDA1YWI2NTAwNTI1MWZmZmZmZmZmMDQ2NGViMTAwNTAwMDAwMDAwMDc1MjAwMDBhYjZhNjVhYjFiZWFhODAzMDAwMDAwMDAwMDVhMmYzMTA1MDAwMDAwMDAwNjUyNmFhYjY1YWM1MmJhN2RiMTAwMDAwMDAwMDAwNDUyNTFhYjZhMGNmYjQ2ZTciLCAiYWIwMDUxYWM1MjYzNmEiLCAxLCAtMTg0NzMzNzE2LCAiOTYxZmY0MTM4NTAzMzZkMzk4N2M1NTA0MDRmYzFkOTIzMjY2Y2EzNmNjOWZmZWU3MTEzZWRiM2E5ZmVhN2YzMCJdLAoJWyJhZjFjNGFiMzAxZWM0NjJmNzZlZTY5YmE0MTliMWIyNTU3YjdkZWQ2MzlmMzQ0MmEzNTIyZDRmOTE3MGIyZDY4NTk3NjVjM2RmNDAyMDAwMDAwMDE2YWZmZmZmZmZmMDFhNWNhNmMwMDAwMDAwMDAwMDhhYjUyNTM2YWFiMDAwMDUzMDAwMDAwMDAiLCAiNmE2MzUxIiwgMCwgMTEwMzA0NjAyLCAiZTg4ZWQyZWVhOTE0M2YyNTE3YjE1YzAzZGIwMDc2N2ViMDFhNWNlMTIxOTNiOTliOTY0YTM1NzAwNjA3ZTVmNCJdLAoJWyIwYmZkMzQyMTA0NTFjOTJjZGZhMDIxMjVhNjJiYTM2NTQ0OGUxMWZmMWRiM2ZiOGJjODRmMWM3ZTU2MTVkYTQwMjMzYThjZDM2ODAxMDAwMDAwMDI1MmFjOWEwNzBjZDg4ZGVjNWNmOWFlZDFlYWIxMGQxOTUyOTcyMGUxMmM1MmQzYTIxYjkyYzZmZGI1ODlkMDU2OTA4ZTQzZWE5MTBlMDIwMDAwMDAwOWFjNTE2YTUyNjU2YTZhNTE2NWZmZmZmZmZmYzNlZGNjYThkMmY2MWYzNGE1Mjk2YzQwNWM1ZjZiYzU4Mjc2NDE2YzcyMGM5NTZmZjI3N2YxZmI4MTU0MWRkZDAwMDAwMDAwMDMwMDYzYWJmZmZmZmZmZjgxMTI0NzkwNWNkZmM5NzNkMTc5YzAzMDE0YzAxZTM3ZDQ0ZTc4ZjA4NzIzMzQ0NGRmZGNlMWQxMzg5ZDk3YzMwMjAwMDAwMDA2NTE2MzAwMDA2M2FiMTcyNGEyNmUwMmNhMzdjOTAyMDAwMDAwMDAwODUxYWI1MzUyNTM1MmFjNTI5MDEyYTkwMTAwMDAwMDAwMDg1MjAwNTI1MjUzNTM1MzUzZmEzMjU3NWIiLCAiNTM1MmFjNjM1MSIsIDEsIC0xMDg3NzAwNDQ4LCAiYjhmMWUxZjM1ZTNlMTM2OGJkMTcwMDhjNzU2ZTU5Y2NlZDIxNmIzYzY5OWJjZDdiZWJkYjViNmM4ZWVjNDY5NyJdLAoJWyIyYzg0YzA2NDA0ODdhNGE2OTU3NTFkM2U0YmU0ODAxOWRiYWVhODVhNmU4NTRmNzk2ODgxNjk3MzgzZWE0NTUzNDdkMmIyNzY5MDAxMDAwMDAwMDU1MjY1NTI2NTAwZmZmZmZmZmY2YWFjMTc2ZDhhYTAwNzc4ZDQ5NmE3MjMxZWViN2QzMzM0ZjIwYzUxMmQzZGIxNjgzMjc2NDAyMTAwZDk4ZGU1MDMwMDAwMDAwNzAwNTM2YTUyNjM1MjZhYzFlZTljZWIxNzFjMGM5ODRlYmFmMTJjMjM0ZmQxNDg3ZmJmM2IzZDczYWEwNzU2OTA3ZjI2ODM3ZWZiYTc4ZDFiZWQzMzIwMDMwMDAwMDAwMWFiNGQ5ZThlYzBiZWQ4MzdjYjkyOWJiZWQ3NmVlODQ4OTU5Y2VjNTlkZTQ0YmQ3NjY3Yjc2MzFhNzQ0Zjg4MGQ1YzcxYTIwY2ZkMDEwMDAwMDAwNzAwNTM2MzUxNTMwMGFiZmZmZmZmZmYwMjM3NTNmYjAwMDAwMDAwMDAwMzY1NjU1MzJkMzg3MzA1MDAwMDAwMDAwOTAwNTE1MmFiNmE2M2FjYWI1MjAwMDAwMDAwIiwgImFiNjUwMDUzYWIiLCAwLCAtODc3OTQxMTgzLCAiYzQ5YWYyOTdkZmZlMmQ4MGRlZGRmMTBjZWVhODRiOTlmODU1NGJkMmQ1NWJiZGMzNGU0NDk3MjhjMzFmMDgzNSJdLAoJWyIxZjdlNGIxYjA0NWQzZWZhNmNkN2ExMWQ3ODczYThiYWI4ODZjMTliZDExZmNiNjcxMmYwOTQ4ZjJkYjNhN2JlNzZmZjc2YzhmMTAwMDAwMDAwMDk1MjY1YWI2YTAwNjVhYzUzNjNmZmZmZmZmZmRhYWZjZmE2MDI5MzM2Yzk5NzY4MGE1NDE3MjUxOTBmMDlhNmY2ZGEyMWU1NDU2MGVjYTRiNWI4YWU5ODdkYTEwMDAwMDAwMDA5NTJhYzUyYWNhYzUyNTE1MTY1ZmZmZmZmZmY4MjVhMzhkM2IxZTViYjRkMTBmMzM2NTNhYjNhYjY4ODJjN2FiZGFlYzc0NDYwMjU3ZDE1MjhjZTdiZTNmOThlMDEwMDAwMDAwNzUyNmEwMDZhNjU2YTYzYzE0YWRjOGYwNDk1M2E1ZDNkM2Y4OTIzN2YzOGI4NTdkZDM1NzcxMzg5NmQzNjIxNWY3ZThiNzdiMTFkOThlYTNjZGM5M2RmMDIwMDAwMDAwMTUyMTI0ODRmNjEwNGJmYWZhZTAzMDAwMDAwMDAwMjUyNjNhMmIwMTIwMDAwMDAwMDAwMDU2NTYzYWIwMDUxNmM0ZDI2MDUwMDAwMDAwMDA2NTNhYzY1MDA2NTUzMDFjYzkzMDMwMDAwMDAwMDAyYWNhYjE0NjQzYjFmIiwgIjYzYWNhYzUzYWIiLCAwLCAzMzM4MjQyNTgsICIxOGRhNmNlYjAxMWNkMzZmMTVhZDdkZDZjNTVlZjA3ZTZmNmVkNDg4ODFjZTNiYjMxNDE2ZDNjMjkwZDlhMGU5Il0sCglbIjQ2N2EzZTc2MDJlNmQxYTdhNTMxMTA2NzkxODQ1ZWMzOTA4YTI5YjgzMzU5OGU0MWY2MTBlZjgzZDAyYTdkYTNhMTkwMGJmMjk2MDAwMDAwMDAwNWFiNmE2MzYzNTNmZmZmZmZmZjAzMWRiNmRhYzZmMGJhZmFmZTcyM2I5MTk5NDIwMjE3YWQyYzk0MjIxYjY4ODA2NTRmMmIzNTExNGY0NGIxZGYwMTAwMDAwMDA5NjVhYjUyNjM2YTYzYWM2MzUyZmZmZmZmZmYwMmIzYjk1YzAxMDAwMDAwMDAwMjYzMDA3MDMyMTYwMzAwMDAwMDAwMDFhYjMyNjFjMGFhIiwgIjZhIiwgMCwgMjExMDg2OTI2NywgIjMwNzhiMWQxYTc3MTNjNmQxMDFjNjRhZmUzNWFkZmFlMDk3N2E1YWI0YzdlMDdhMGIxNzBiMDQxMjU4YWRiZjIiXSwKCVsiODcxM2JjNGYwMWI0MTExNDlkNTc1ZWJhZTU3NWY1ZGQ3ZTQ1NjE5OGQ2MWQyMzg2OTVkZjQ1OWRkOWI4NmM0ZTNiMjczNGI2MmUwMzAwMDAwMDA0YWJhYzYzNjNmZmZmZmZmZjAzYjU4MDQ5MDUwMDAwMDAwMDAyYWM2NTNjNzE0YzA0MDAwMDAwMDAwOTUzNjU2YTAwNTE1MTUyNmE1MjdiNWE5ZTAzMDAwMDAwMDAwNjUyYWM1MTAwNTI1MzAwMDAwMDAwIiwgIjUyIiwgMCwgLTY0NzI4MTI1MSwgIjBlMGJlZDFiZjJmZjI1NWFlZjZlNWM1ODdmODc5YWUwYmU2MjIyYWIzM2JkNzVlZTM2NWVjNmZiYjhhY2JlMzgiXSwKCVsiZjJiYThhODcwMWI5YzQwMWVmZTNkZDA2OTVkNjU1ZTIwNTMyYjkwYWMwMTQyNzY4Y2VlNGEzYmIwYTg5NjQ2NzU4ZjU0NGFhODEwMjAwMDAwMDAzNmE1MjUyNzg5OWY0ZTQwNDBjNmYwYjAzMDAwMDAwMDAwODYzNjU2NWFiNTMwMDUxYWI1MmI2MGMwMDAwMDAwMDAwMDk1MTUyMDBhYjYzMDA1M2FjNTNhNDljNWYwNDAwMDAwMDAwMDhhYjUzYWI1MTYzMDBhYjYzZmEyNzM0MDMwMDAwMDAwMDAxNTEwMDAwMDAwMCIsICJhYzYzYWJhYjUyNTEiLCAwLCAtMTMyODkzNjQzNywgImFiNjE0OTdhZmQzOWU2MWZlMDZiYzU2NzczMjY5MTk3MTZmOWIyMDA4M2M5ZjM0MTdkY2VhOTA1MDkwZTA0MTEiXSwKCVsiYjVhN2RmNjEwMjEwN2JlZGVkMzNhZTdmMWRlYzA1MzFkNDgyOWRmZjc0NzcyNjA5MjVhYTJjYmE1NDExOWI3YTA3ZDkyZDVhMWQwMjAwMDAwMDA0NmE1MTZhNTI4MDNiNjI1YzMzNGMxZDIxMDdhMzI2NTM4YTNkYjkyYzZjNmFlM2Y3YzM1MTZjZDkwYTA5YjYxOWVjNmY1OGQxMGU3N2JkNjcwMzAwMDAwMDA1NjU2MzAwNmE2M2ZmZmZmZmZmMDExNzQ4NGIwMzAwMDAwMDAwMDg1M2FjYWI1MjUyNmE2NWFiYzFiNTQ4YTEiLCAiYWMwMDZhNTI1MTAwIiwgMCwgMjA3NDM1OTkxMywgIjY4MDMzNmRiNTczNDdkODE4M2I4ODk4Y2QyN2E4M2YxYmE1ODg0MTU1YWVhZTVjZTIwYjQ4NDBiNzVlMTI4NzEiXSwKCVsiMjc4Y2IxNjIwNGI5ZGFkZjQwMDI2NjEwNjM5MmM0YWE5ZGYwMWJhMDNhZjk4OGM4MTM5ZGFlNGMxODE4YWMwMDlmMTNmYzVmMWEwMDAwMDAwMDA2NTIwMGFjNjU2YTUyZmZmZmZmZmZkMDA2YmJlYmQ4Y2JkN2JkZWFkMjRjZGRjOWJhZGZjYzZiYzBjMmU2M2MwMzdlNWMyOWFhODU4ZjVkMGYzZTdkMDEwMDAwMDAwNDZhMDA1MWFjZmZmZmZmZmZiYzYyYTVmNTdlNThkYTBiNjc5NTYwMDNhZTgxYWM5N2NiNGNiZDFkNjk0YzkxNGZjNDE1MTVjMDA4YzRkOGZkMDIwMDAwMDAwMTY1ZTMyOWM4NDRiY2MxNjE2NGJlNjRiNjRhODFjYmY0ZmZkNDFlZDI5MzRlMGRhYTAwNDBjY2I4MzY1YmFiMGIyYTllNDAxYzE4MDMwMDAwMDAwM2FiNTJhYmZmZmZmZmZmMDI1ODg0NjAwMzAwMDAwMDAwMDBhMjVhMTIwMzAwMDAwMDAwMDU1MzUxMDAwMDUzMDAwMDAwMDAiLCAiNjU1M2FiNmE1MzAwYWNhYjUxIiwgMywgOTg5NDA3NTQ2LCAiMWMyOWYxMTA1NzZmNGEzYjI1N2Y2NzQ1NGQ5OWRmYzBkZWU2MmVmNTUxN2NhNzAyODQ4Y2U0YmQyZWExYTFkNyJdLAoJWyI0OWViMjE3ODAyMGEwNGZjYTA4NjEyYzM0OTU5ZmQ0MTQ0NzMxOWMxOTBmYjdmZmVkOWY3MWMyMzVhYTc3YmVjMjg3MDNhYTE4MjAyMDAwMDAwMDNhYzYzNTNhYmFmZjMyNjA3MWYwN2VjNmI3N2ZiNjUxYWYwNmU4ZThiZDE3MTA2OGVjOTZiNTJlZDU4NGRlMWQ3MTQzN2ZlZDE4NmFlY2YwMzAwMDAwMDAxYWNmZmZmZmZmZjAzZGEzZGJlMDIwMDAwMDAwMDA2NTJhYzYzYWM2YWFiOGYzYjY4MDQwMDAwMDAwMDA5NmE1MzZhNjU2MzZhNTM1MTZhNTE3NTQ3MDEwMDAwMDAwMDAxNjUwMDAwMDAwMCIsICI2YTUzNjM2NSIsIDAsIDEyODM2OTEyNDksICJjNjcwMjE5YTkzMjM0OTI5ZjY2MmVjYjlhYTE0OGE4NWEyZDI4MWU4M2Y0ZTUzZDEwNTA5NDYxY2RlYTQ3OTc5Il0sCglbIjBmOTZjZWE5MDE5YjRiMzIzM2MwNDg1ZDViMWJhZDc3MGMyNDZmZThkNGE1OGZiMjRjM2I3ZGZkYjNiMGZkOTBlYTRlOGU5NDdmMDMwMDAwMDAwNjAwNmE1MTYzNTE1MzAzNTcxZTFlMDE5MDY5NTYwMzAwMDAwMDAwMDVhYjYzNTM1M2FiYWRjMGZiYmUiLCAiYWNhYyIsIDAsIC0xNDkxNDY5MDI3LCAiNzE2YTgxODBlNDE3MjI4Zjc2OWRjYjQ5ZTA0OTFlM2ZkYTYzYmFkZjNkNWVhMGNlZWFjNzk3MGQ0ODNkZDdlMiJdLAoJWyI5YTdkODU4NjA0NTc3MTcxZjVmZTNmM2ZkM2U1ZTAzOWM0YjBhMDY3MTdhNTM4MWU5OTc3ZDgwZTlmNTNlMDI1ZTBmMTZkMjg3NzAyMDAwMDAwMDc1MjYzNjU2NTUzNjM1M2ZmZmZmZmZmNTg2MmJkMDI4ZTgyNzZlNjNmMDQ0YmUxZGRkY2JiOGQwYzNmYTA5NzY3ODMwOGFiZjJiMGY0NTEwNGE5M2RiZDAxMDAwMDAwMDE1MzEyMDA2NjdiYThmZGQzYjI4ZTk4YTM1ZGE3M2QzZGRmZTUxZTIxMDMwM2Q4ZWI1ODBmOTIzZGU5ODhlZTYzMmQ3Nzc5Mzg5MjAzMDAwMDAwMDc1MjUyNjM2MzUyNjU2M2ZmZmZmZmZmZTk3NDRlYjQ0ZGIyNjU4ZjEyMDg0N2M3N2Y0Nzc4NmQyNjhjMzAyMTIwZDI2OWU2MDA0NDU1YWEzZWE1ZjVlMjAyMDAwMDAwMDlhYjYzMDA2MzZhYWI2NTY1NTFmZmZmZmZmZjAzYzYxYTNjMDIwMDAwMDAwMDA5YWI1MTZhNmFhYjZhYWI1M2FiNzM3ZjFhMDUwMDAwMDAwMDA4NTNhY2FiYWI2NTUzNjVhYjkyYTRhMDA0MDAwMDAwMDAwMTYzNjdlZGY2YzgiLCAiNTM1MzUyYWIiLCAzLCA2NTkzNDg1OTUsICJkMzZlZTc5ZmM4MGRiMmU2M2UwNWNkYzUwMzU3ZDE4NjE4MWI0MGFlMjBlMzcyMDg3ODI4NDIyOGExM2VlOGIzIl0sCglbIjE0OGU2ODQ4MDE5NmViNTI1MjlhZjhlODNlMTQxMjdjYmZkYmQ0YTE3NGU2MGE4NmFjMmQ4NmVhYzk2NjVmNDZmNDQ0N2NmN2FhMDEwMDAwMDAwNDUyMDBhYzUzOGY4Zjg3MTQwMWNmMjQwYzAzMDAwMDAwMDAwNjUyNTJhYjUyNjU2YTUyNjZjZjYxIiwgIiIsIDAsIC0zNDQzMTQ4MjUsICJlYWNjNDdjNWE1MzczNGQ2YWUzYWVkYmM2YTdjMGE3NWExNTY1MzEwODUxYjI5ZWYwMzQyZGM0NzQ1Y2ViNjA3Il0sCglbImUyYmMyOWQ0MDEzNjYwNjMxYmExNGVjZjc1YzYwZWM1ZTliZWQ3MjM3NTI0ZDhjMTBmNjZkMDY3NWRhYTY2ZDE0OTJjYjgzNDUzMDIwMDAwMDAwNGFjNTEwMDY1ZTQyZDBjOWUwNGYyYjI2YzAxMDAwMDAwMDAwOTUxNTI1MTUyYWNhYzY1YWJhYmEzNWI3NTA0MDAwMDAwMDAwOTUzYWM2YWFjMDA2NTAwNTNhYjk0Njg4YzA0MDAwMDAwMDAwNTYzNjU1MjY1NTNhMWJjZWQwMzAwMDAwMDAwMDE2YTAwMDAwMDAwIiwgIjY1YWIwMDYzNjU1MzUzIiwgMCwgLTg4ODQzMTc4OSwgIjU5YTM0YjNlZDNhMWNjZTBiMTA0ZGU4ZjdkNzMzZjJkMzg2ZmZjNzQ0NWVmYWU2NzY4MGNkOTBiYzkxNWY3ZTAiXSwKCVsiMGM4YTcwZDcwNDk0ZGNhNmFiMDViMmJjOTQxYjViNDMxYzQzYTI5MmJkOGYyZjAyZWFiNWUyNDBhNDA4Y2E3M2E2NzYwNDRhNDEwMzAwMDAwMDA1NmE1MWFiMDA2YWZmZmZmZmZmODQ0OTYwMDRlNTQ4MzZjMDM1ODIxZjE0NDM5MTQ5ZjIyZTFkYjgzNGYzMTViMjQ1ODhiYTJmMDMxNTExOTI2YzAxMDAwMDAwMDBmZmZmZmZmZmJiYzVlNzBlZDFjMzA2MGJhMWJmZTk5YzE2NTZhMzE1OGE3MzA3YzNjZThlYjM2MmVjMzJjNjY4NTk2ZDJiZDMwMDAwMDAwMDA5NjM2NTYzNjM1MzUxYWJhYjAwYjAzOTM0NGM2ZmM0ZjliZWMyNDMyMmU0NTQwN2FmMjcxYjJkM2RmZWM1ZjI1OWVlMmZjNzIyN2JjNTI4NWUyMmIzYmU4NWI0MDEwMDAwMDAwOWFjMDBhYjUzYWJhYzZhNTM1MmU1ZGRmY2ZmMDJkNTAyMzEwMjAwMDAwMDAwMDUwMDZhNTE1MzZhYjA4NmQ5MDIwMDAwMDAwMDA2YWJhYmFjNTFhYzZhMDAwMDAwMDAiLCAiYWJhYjYzNjU2NWFjYWM2YSIsIDMsIDI0MTU0NjA4OCwgIjY0M2E3YjRjOGQ4MzJlMTRkNWMxMDc2MmU3NGVjODRmMmMzZjdlZDk2YzAzMDUzMTU3ZjFiZWQyMjY2MTQ5MTEiXSwKCVsiZjk4Zjc5Y2YwMjc0Yjc0NWUxZDZmMzZkYTdjYmUyMDVhNzkxMzJhN2FkNDYyYmRjNDM0Y2ZiMWRjZDYyYTY5NzdjM2QyYTVkYmMwMTAwMDAwMDA1NTM1MTZhNTM2NWZmZmZmZmZmNGY4OWY0ODViNTNjZGFkN2ZiODBjYzFiN2UzMTRiOTczNWI5MzgzYmM5MmMxMjQ4YmIwZTVjNjE3M2E1NWMwZDAxMDAwMDAwMDM1MzY1NTI5M2Y5YjAxNDA0NWFkOTZkMDIwMDAwMDAwMDA5NjNhYzUyNmE1M2FjNjM2MzY1ZjRjMjc5MDQwMDAwMDAwMDA5NTI1MzY1NjM2MzUxNTI1MjZhMjc4OGYwMDMwMDAwMDAwMDAyNTE2YWZmNWFkZDAxMDAwMDAwMDAwODYzNTMwMDUxNjU1MzUxYWJkMDQ3MTZiYSIsICJhYjY1NTI1MzZhNTMiLCAxLCAtMjEyODg5OTk0NSwgIjU2ZDI5ZjVlMzAwZGRmZWQyY2Q4ZGNjZTVkNzk4MjZlMTkzOTgxZDBiNzBkYzc0ODc3NzJjOGEwYjNiOGQ3YjEiXSwKCVsiNmM3OTEzZjkwMmFhM2Y1ZjkzOWRkMTYxNTExNGNlOTYxYmVkYTdjMWUwZGQxOTViZTM2YTJmMGQ5ZDA0N2MyOGFjNjI3MzhjM2EwMjAwMDAwMDA0NTNhYmFjMDBmZmZmZmZmZjQ3N2JmMmM1YjVjNjczMzg4MTQ0N2FjMWVjYWZmM2E2ZjgwZDcwMTZlZWUzNTEzZjM4MmFkN2Y1NTQwMTViOTcwMTAwMDAwMDA3YWI2NTYzYWNhYjUxNTJmZmZmZmZmZjA0ZTU4ZmUxMDQwMDAwMDAwMDA5YWIwMDUyNmFhYmFiNTI2NTUzZTU5NzkwMDEwMDAwMDAwMDAyYWI1MjVhODM0YjAzMDAwMDAwMDAwMDM1ZmRhZjAyMDAwMDAwMDAwODY1NTFhYzY1NTE1MjAwYWIwMDAwMDAwMCIsICI2M2FjNTMiLCAxLCAxMjg1NDc4MTY5LCAiMTUzNmRhNTgyYTBiNmRlMDE3ODYyNDQ1ZTkxYmExNDE4MWJkNmJmOTUzZjRkZTJmNDZiMDQwZDM1MWE3NDdjOSJdLAoJWyI0NjI0YWE5MjA0NTg0ZjA2YThhMzI1Yzg0ZTNiMTA4Y2FmYjk3YTM4N2FmNjJkYzllYWI5YWZkODVhZTVlMmM3MWU1OTNhM2I2OTAyMDAwMDAwMDM2MzZhMDA1ZWIyYjQ0ZWFiYmFlY2E2MjU3YzQ0MmZlYTAwMTA3YzgwZTMyZTg3MTVhMTI5M2NjMTY0YTQyZTYyY2UxNGZlYTE0NjIyMGMwMjAwMDAwMDAwOTBiOWVlMzgxMDZlMzMxMDAzN2JmYzUxOWZkMjA5YmRiZDIxYzU4ODUyMmEwZTk2ZGY1ZmJhNGU5NzkzOTJiYzk5M2JmZTlmMDEwMDAwMDAwODYzNjM2MzZhNjM1MzUzYWI2ZjE5MDdkMjE4ZWY2ZjNjNzI5ZDkyMDBlMjNjMWRiZmYyZGY1OGI4YjEyODJjNjcxN2IyNmNmNzYwZWU0Yzg4MGQyM2Y0ZDEwMDAwMDAwMDA4NmE1MTZhNTM2YTUyNTE2M2ZmZmZmZmZmMDFkNmYxNjIwNTAwMDAwMDAwMDBlYmJhYjIwOCIsICI1MjUzNjVhYjAwNTMiLCAxLCAtMTUxNTQwOTMyNSwgIjZjZjljZDQwOWI3MTg1YjFmMTE4MTcxZjBhMzQyMTdhZjViNjEyZWE1NDE5NWVhMTg2NTA1YjY2N2MxOTMzN2YiXSwKCVsiMTY1NjJmYzUwM2YxY2Y5MTEzOTg3MDQwYzQwOGJmZDQ1MjNmMTUxMmRhNjk5YTJjYTZiYTEyMmRjNjU2NzdhNGM5YmY3NzYzODMwMDAwMDAwMDAzNjM2NTUyZmZmZmZmZmYxZWMxZmFiNWZmMDk5ZDFjOGU2YjA2ODE1NmY0ZTM5YjU1NDMyODZiYWI1M2M2ZDYxZTI1ODJkMWUwN2M5NmNmMDIwMDAwMDAwNDUxNjM2NTZhZmZmZmZmZmZkMGVmNDAwMDM1MjRkNTRjMDhjYjRkMTNhNWVlNjFjODRmYmIyOGNkZTllY2E3YTZkMTFiYTNhOTMzNWQ4YzYyMDEwMDAwMDAwNzYzNTE1MzUzNmE2MzAwZmJiODRmYzIwMTIwMDNhNjAxMDAwMDAwMDAwMzYzYWI2YTAwMDAwMDAwIiwgIjYzNjM2YTAwNmE2YWFiIiwgMCwgLTEzMTAyNjI2NzUsICIxZWZiZjNkMzdhOTJiYzAzZDllYjk1MGI3OTJmMzA3ZTk1NTA0ZjdjNDk5OGY2NjhhYTI1MDcwN2ViYjc1MmFjIl0sCglbIjUzMTY2NWQ3MDFmODZiYWNiZGI4ODFjMzE3ZWY2MGQ5Y2QxYmFlZmZiMjQ3NWU1N2QzYjI4MmNkOTIyNWUyYTNiZjljYmUwZGVkMDEwMDAwMDAwODYzMDBhYzUxNTI2M2FjYWJmZmZmZmZmZjA0NTNhODUwMDEwMDAwMDAwMDA4NjM1M2FjYWI1MTZhNjU2NWU1ZTkyMDA1MDAwMDAwMDAwMjZhNTJhNDRjYWEwMDAwMDAwMDAwMDQ1M2FjMDAwMDY1ZTQxYjA1MDAwMDAwMDAwNzY1MDBhYzAwNjU1MjZhYjQ0NzZmNGQiLCAiMDA2NTYzMDA2YWFiMDA2MzZhIiwgMCwgMTc3MDAxMzc3NywgIjA4OThiMjZkZDNjYTA4NjMyYTUxMzFmYTQ4ZWI1NWI0NDM4NmQwYzUwNzBjMjRkNmUzMjk2NzNkNWUzNjkzYjgiXSwKCVsiMGYxMjI3YTIwMTQwNjU1YTNkYTM2ZTQxM2I5YjVkMTA4YTg2NmY2ZjE0N2ViNDk0MGYwMzJmNWE4OTg1NGVhZTZkN2MzYTkxNjAwMTAwMDAwMDA5NTI1MzYzNTE1MTUzNTE1MjUzZTM3YTc5NDgwMTYxYWI2MTAyMDAwMDAwMDAwMWFiMDAwMDAwMDAiLCAiYWI2NTAwNTIwMCIsIDAsIC0xOTk2MzgzNTk5LCAiOTc5NzgyZGMzZjM2ZDkwOGQzN2Q3ZTQwNDZhMzhkMzA2YjRiMDhkZGM2MGE1ZWJhMzU1ZmUzZDZkYTFiMjlhOSJdLAoJWyIwNjNmZjZlYjAxYWZmOThkMGQyYTZkYjIyNDQ3NTAxMGVkYjYzNGMyZjNiNDYyNTcwODQ2NzZhZGViODQxNjVhNGZmODU1OGQ3NjAxMDAwMDAwMDY2MzUzMDA2YTUxNjVkZWIzMjYyYzA0MmQxMDljMDAwMDAwMDAwMDA3NjM2M2FiNTJhYzAwNTIwMGI5YzQwNTAwMDAwMDAwMDc1MTYzMDBhYzUxMDA2M2NmZmZjODAwMDAwMDAwMDAwMjAwNjM5ZTgxNTUwMTAwMDAwMDAwMDcwMDUyNmE1MmFjNjM2NWFjN2IwN2I4IiwgIjY1NjU1MmFiYWM2NTAwIiwgMCwgLTE1NTk4NDcxMTIsICI2NzRhNGJjYjA0MjQ3ZjhkYzk4NzgwZjE3OTJjYWM4NmI4YWVlNDFhODAwZmMxZTZmNTAzMmY2ZTFkY2NkZTY1Il0sCglbIjMzMjBmNjczMDEzMmY4MzBjNDY4MWQwY2FlNTQyMTg4ZTQxNzdjYWQ1ZDUyNmZhZTg0NTY1YzYwY2ViNWMwMTE4ZTg0NGY5MGJkMDMwMDAwMDAwMTYzZmZmZmZmZmYwMjU3ZWM1YTA0MDAwMDAwMDAwNTUyNTI1MWFjNjUzODM0NGQwMDAwMDAwMDAwMDI1MTUyMDAwMDAwMDAiLCAiNTM1MjY1NmE1M2FjNTE2YTY1IiwgMCwgNzg4MDUwMzA4LCAiM2FmYWNhY2EwZWY2YmU5ZDM5ZTcxZDdiMWIxMTg5OTRmOTllNGVhNTk3M2M5MTA3Y2E2ODdkMjhkOGViYTQ4NSJdLAoJWyJjMTNhYTRiNzAyZWVkZDdjZGUwOWQwNDE2ZTY0OWE4OTBkNDBlNjc1YWE5YjViNmQ2OTEyNjg2ZTIwZTliOWUxMGRiZDQwYWJiMTAwMDAwMDAwMDg2M2FiNjM1MzUxNTM1MWFjMTFkMjRkYzRjYzIyZGVkN2NkYmMxM2VkZDNmODdiZDRiMjI2ZWRhM2U0NDA4ODUzYTU3YmNkMWJlY2YyZGYyYTE2NzFmZDE2MDAwMDAwMDAwNDUxNjU1MTZhZmZmZmZmZmYwMWJhZWEzMDAxMDAwMDAwMDAwNzZhYWI1MmFiNTMwMDUzMDAwMDAwMDAiLCAiMDA2NSIsIDAsIC0xMTk1OTA4Mzc3LCAiMjQxYTIzZTdiMTk4MmQ1Zjc4OTE3ZWQ5N2E4Njc4MDg3YWNiYmZmZTdmNjI0YjgxZGY3OGE1ZmU1ZTQxZTc1NCJdLAoJWyJkOWE2ZjIwZTAxOWRkMWI1ZmFlODk3ZmI0NzI4NDM5MDNmOWMzYzIyOTNhMGZmYjU5Y2ZmMmI0MTNiYWU2ZWNlYWI1NzRhYWY5ZDAzMDAwMDAwMDY2M2FiMDA2YTUxNTEwMmY1NDkzOTAzMmRmNTEwMDEwMDAwMDAwMDA1NmE1MWFiNjU1MzBlYzI4ZjAxMDAwMDAwMDAwNGFjNTEwMDAwN2U4NzQ5MDUwMDAwMDAwMDA2NTEwMDUyNjVhYzZhMDAwMDAwMDAiLCAiYWJhY2FiNjNhY2FjYWJhYiIsIDAsIDI3MTQ2MzI1NCwgIjEzMjZhNDZmNGMyMWU3NjE5ZjMwYTk5MjcxOWE5MDVhYTE2MzJhYWY0ODFhNTdlMWNiZDdkN2MyMjEzOWI0MWUiXSwKCVsiMTU3YzgxYmYwNDkwNDMyYjNmY2IzZjlhNWI3OWU1ZjkxZjY3ZjA1ZWZiODlmYTFjODc0MGEzZmU3ZTliZGMxOGQ3Y2I2YWNkMjIwMzAwMDAwMDAyNjM1MWZmZmZmZmZmOTEyZTQ4ZTcyYmJjZjhhNTQwYjY5M2NmOGIwMjhlNTMyYTk1MGU2ZTYzYTI4ODAxZjZlYWFkMWFmY2M1MmFkMDAwMDAwMDAwMDBiMWE0YjE3MGEyYjllNjBlMGNhZDg4YTAwODUxMzczMDlmNjgwN2QyNWQ1YWZiNWMxZTFkMzJhYTEwYmExY2RmN2RmNTk2ZGQwMDAwMDAwMDA5NTI1MTY1NjU2YTUxYWI2NWFiMzY3NGZiYTMyYTc2ZmUwOWIyNzM2MThkNWYxNDEyNDQ2NTkzM2Y0MTkwYmE0ZTBmZDA5ZDgzOGRhYWZjNjIyM2IzMTY0MmFjMDAwMDAwMDAwODZhNTM1MzY1NTFhYzY1NjVmZmZmZmZmZjAxZmU5ZmI2MDMwMDAwMDAwMDA4YWI1MTY1NmE1MTY1NjM2YTAwMDAwMDAwIiwgImFiMDBhYjZhNjU1MSIsIDMsIC02NDM1NzYxNywgIjFkZGFhYjdmOTczNTUxZDcxZjE2YmQ3MGM0YzRlZGJmNzIyNWU2NGU3ODRhNmRhMGVlN2Y3YTlmZTRmMTJhMGIiXSwKCVsiYTI2OTJmZmYwM2IyMzg3ZjViYWNkNTY0MGM4NmJhN2RmNTc0YTBlZTllZDdmNjZmMjJjNzNjY2NhZWYzOTA3ZWFlNzkxY2JkMjMwMjAwMDAwMDA0NTM2MzYzYWJmZmZmZmZmZjRkOWZlN2U1YjM3NWRlODhiYTQ4OTI1ZDliMjAwNTQ0N2E2OWVhMmUwMDQ5NWE5NmVhZmIyZjE0NGFkNDc1YjQwMDAwMDAwMDA4MDAwMDUzMDAwMDUyNjM2NTM3MjU5YmVlM2NlZGQzZGNjMDdjOGY0MjM3Mzk2OTBjNTkwZGMxOTUyNzRhN2QzOThmYTE5NmFmMzdmM2U5YjRhMTQxM2Y4MTAwMDAwMDAwMDZhYzYzYWNhYzUyYWJmZmZmZmZmZjA0YzY1ZmU2MDIwMDAwMDAwMDA3NTE1MTUzNjM2NWFiNjU3MjM2ZmMwMjAwMDAwMDAwMDkwMDUyNjNhYjAwNjU2YTZhNTE5NWI4YjYwMzAwMDAwMDAwMDdhYzUxNjU2MzZhYWM2YTdkN2I2NjAxMDAwMDAwMDAwMmFjYWIwMDAwMDAwMCIsICI1MSIsIDIsIC04MjY1NDY1ODIsICI5MjUwMzdjN2RjNzYyNWYzZjEyZGM4MzkwNDc1NWEzNzAxNjU2MGRlOGUxY2RkMTUzYzg4MjcwYTcyMDFjZjE1Il0sCglbIjJjNWIwMDMyMDFiODg2NTRhYzJkMDJmZjY3NjI0NDZjYjVhNGFmNzc1ODZmMDVlNjVlZTVkNTQ2ODBjZWExMzI5MWVmY2Y5MzBkMDEwMDAwMDAwNWFiNTM2YTAwNmEzNzQyM2QyNTA0MTAwMzY3MDAwMDAwMDAwMDA0NTM2YTUxNTMzNTE0OTgwMDAwMDAwMDAwMDE1MjE2NmFlYjAzMDAwMDAwMDAwNDUyNTEwMDYzMjI2YzhlMDMwMDAwMDAwMDAwMDAwMDAwMDAiLCAiNjM1MjUxIiwgMCwgMTA2MDM0NDc5OSwgIjdlMDU4Y2E1ZGQwNzY0MGU0YWFlN2RlYTczMWNmYjdkN2ZlZjFiZmQwZDZkN2I2Y2UxMDlkMDQxZjRjYTJhMzEiXSwKCVsiZjk4MWI5ZTEwNGFjYjkzYjlhN2UyMzc1MDgwZjNlYTBlN2E5NGNlNTRjZDhmYjI1YzU3OTkyZmE4MDQyYmRmNDM3ODU3Mjg1OWYwMTAwMDAwMDAyNjMwMDA4NjA0ZmViYmE3ZTQ4MzdkYTc3MDg0ZDVkMWI4MTk2NWUwZWEwZGViNmQ2MTI3OGI2YmU4NjI3YjBkOWEyZWNkN2FlYjA2YTAzMDAwMDAwMDVhYzUzNTM1MzZhNDJhZjNlZjE1Y2U3YTJjZDYwNDgyZmMwZDE5MWM0MjM2ZTY2YjRiNDhjOTAxOGQ3ZGJlNGRiODIwZjU5MjVhYWQwZThiNTJhMDMwMDAwMDAwOGFiMDA2MzUxMDA1MjUxNjMwMTg2MzcxNWVmYzg2MDhiZjY5YzAzNDNmMThmYjgxYThiMGM3MjA4OThhMzU2M2VjYThmZTYzMDczNmMwNDQwYTE3OTEyOWQwMzAwMDAwMDA4NmFhYzZhNTJhYzZhNjNhYzQ0ZmVjNGMwMDQwODMyMGEwMzAwMDAwMDAwMDA2MmMyMWMwMzAwMDAwMDAwMDdhYzZhNjU1MjYzMDA2NTUzODM1ZjAxMDAwMDAwMDAwMTUzMDNjZDYwMDAwMDAwMDAwMDA1NTM1MjYzNTM2NTU4YjU5NmUwIiwgIjAwIiwgMCwgLTIxNDAzODU4ODAsICI0OTg3MGE5NjEyNjMzNTRjOWJhZjEwOGM2OTc5YjI4MjYxZjk5YjM3NGU5NzYwNWJhYTUzMmQ5ZmEzODQ4Nzk3Il0sCglbImU3NDE2ZGY5MDEyNjliN2FmMTRhMTNkOWQwNTA3NzA5YjNjZDc1MWY1ODZjZTlkNWRhOGQxNmExMjFlMWJkNDgxZjVhMDg2ZTExMDMwMDAwMDAwNTZhYWIwMDUyMDBmZmZmZmZmZjAxYWEyNjljMDQwMDAwMDAwMDA2YWNhYzZhNmE1MjYzZWU3MThkZTYiLCAiYWI1MjUzNjMiLCAwLCAxMzA5MTg2NTUxLCAiZWVhN2QyMjEyYmRhMmQ0MDhmZmYxNDZmOWFlNWU4NWU2YjY0MGE5M2I5MzYyNjIyYmI5ZDVlNmUzNjc5ODM4OSJdLAoJWyI0MDJhODE1OTAyMTkzMDczNjI1YWIxM2Q4NzYxOTBkMWJiYjcyYWVjYjBlYTczM2MzMzMwZjJhNGMyZmU2MTQ2ZjMyMmQ4ODQzYTAzMDAwMDAwMDg2NTZhYWIwMDAwNTM1MzYzZmZmZmZmZmZmOWRjY2RlYzVkODUwOWQ5Mjk3ZDI2ZGZjYjFlNzg5Y2YwMjIzNmM3N2RjNGI5MGViY2NiZjk0ZDFiNTgyMTE1MDMwMDAwMDAwMTUxMGJmMWY5NmEwM2M1YzE0NTAwMDAwMDAwMDAwMmFjNmFlMTFiMWMwMTAwMDAwMDAwMDU1MTYzNTE2YTUyMzljOGE2MDAwMDAwMDAwMDAzNjU2MzYzMDAwMDAwMDAiLCAiNjM1MzZhYWNhYiIsIDAsIC0xODExNDI0OTU1LCAiMDA5MDgwM2EyMDEwMmE3NzhhYjk2N2E3NDUzMmZhZWUxM2UwM2I3MDIwODNiMDkwYjE0OTdiYzIyNjdlZTJmZSJdLAoJWyJjNGI3MDJlNTAyZjFhNTRmMjM1MjI0ZjBlNmRlOTYxZDJlNTNiNTA2YWI0NWI5YTQwODA1ZDFkYWNkMzUxNDhmMGFjZjI0Y2E1ZTAwMDAwMDAwMDg1MjAwYWM2NWFjNTNhY2FiZjM0YmE2MDk5MTM1NjU4NDYwZGU5ZDliNDMzYjg0YTg1NjIwMzI3MjM2MzViYWYyMWNhMWRiNTYxZGNlMWMxM2EwNmY0NDA3MDAwMDAwMDAwODUxYWMwMDZhNjM1MTZhYWJmZmZmZmZmZjAyYTg1M2E2MDMwMDAwMDAwMDAxNjNkMTdhNjcwMzAwMDAwMDAwMDVhYjYzMDA2YTUyMDAwMDAwMDAiLCAiYWM1MzYzNTE1MTUzIiwgMSwgNDgwNzM0OTAzLCAiNWM0NmY3YWMzZDY0NjBhZjBkYTI4NDY4ZmNjNWIzYzg3ZjJiOTA5M2QwZjgzNzk1NGI3YzgxNzRiNGQ3YjZlNyJdLAoJWyI5YjgzZjc4NzA0ZjQ5MmI5YjM1M2EzZmFhZDhkOTNmNjg4ZTg4NTAzMGMyNzQ4NTZlNDAzNzgxODg0OGI5OWU0OTBhZmVmMjc3NzAyMDAwMDAwMDBmZmZmZmZmZjM2YjYwNjc1YTU4ODhjMGVmNGQ5ZTExNzQ0ZWNkOTBkOWZlOWU2ZDhhYmI0Y2ZmNTY2NmM4OThmZGNlOThkOWUwMDAwMDAwMDA1NmFhYjY1NjM1MjU5NjM3MGZjYTdhN2MxMzk3NTI5NzFlMTY5YTFhZjNlNjdkNzY1NmZjNGZjN2ZkM2I5ODQwOGU2MDdjMmYyYzgzNmM5ZjI3YzAzMDAwMDAwMDY1M2FjNTFhYjYzMDBhMDc2MWRlN2UxNTg5NDdmNDAxYjM1OTViN2RjMGZlN2I3NWZhOWM4MzNkMTNmMWFmNTdiOTIwNmU0MDEyZGUwYzQxYjgxMjQwMzAwMDAwMDA5NTM2NTZhNTNhYjUzNTEwMDUyMjQyZTVmNTYwMWJmODNiMzAxMDAwMDAwMDAwNDY1NTE2YTYzMDAwMDAwMDAiLCAiNjM1MTUyMDBhYzY1NjM2NSIsIDMsIC0xNTA4NzkzMTIsICI5Y2YwNTk5MDQyMWVhODUzNzgyZTRhMmM2NzExOGUwMzQzNDYyOWU3ZDUyYWIzZjFkNTVjMzdjZjdkNzJjZGM0Il0sCglbImY0OTJhOWRhMDRmODBiNjc5NzA4YzAxMjI0ZjY4MjAzZDVlYTI2NjhiMWY0NDJlYmJhMTZiMWFhNDMwMWQyZmU1YjRlMjU2OGYzMDEwMDAwMDAwOTUzMDA1MzUxNTI1MjYzYWI2NWZmZmZmZmZmOTNiMzRjM2YzN2Q0YTY2ZGYyNTViNTE0NDE5MTA1YjU2ZDdkNjBjMjRiZjM5NTQxNWVkYTNkM2Q4YWE1Y2QwMTAxMDAwMDAwMDIwMDY1ZmZmZmZmZmY5ZGJhMzRkYWJkYzRmMTY0M2IzNzJiNmI3N2ZkZjJiNDgyYjMzZWQ0MjU5MTRiYjRiMWE2MWU0ZmFkMzNjZjM5MDAwMDAwMDAwMmFiNTJmZmZmZmZmZmJiZjNkYzgyZjM5N2VmM2VlOTAyYzUxNDZjOGE4MGQ5YTEzNDRmYTZlMzhiN2FiY2UwZjE1N2JlN2FkYWVmYWUwMDAwMDAwMDA5NTE1MzUxMDA1MzY1MDA2YTUxZmZmZmZmZmYwMjEzNTliYTAxMDAwMDAwMDAwMDQwM2ZlYTAyMDAwMDAwMDAwOTUyMDBhYzYzNTNhYmFjNjM1MzAwMDAwMDAwIiwgIjAwYWM1MWFjYWNhYyIsIDAsIC0yMTE1MDc4NDA0LCAiZmQ0NGZjOTg2MzljYTMyYzkyNzkyOTE5NmZjM2YzNTk0NTc4ZjRjNGJkMjQ4MTU2YTI1YzA0YTY1YmYzYTlmMyJdLAoJWyIyZjczZTBiMzA0ZjE1NGQzYTAwZmRlMmZkZDQwZTc5MTI5NWUyOGQ2Y2I3NmFmOWMwZmQ4NTQ3YWNmMzc3MWEwMmUzYTkyYmEzNzAzMDAwMDAwMDg1MmFjNjM1MWFiNjU2NTYzOWFhOTU0NjdiMDY1Y2VjNjFiNmU3ZGM0ZDYxOTJiNTUzNmE3YzU2OTMxNWZiNDNmNDcwMDc4YjMxZWQyMmE1NWRhYjgyNjVmMDIwMDAwMDAwODAwNjU2MzZhNmFhYjZhNTNmZmZmZmZmZjllM2FkZGJmZjUyYjJhYWY5ZmU0OWM2NzAxNzM5NTE5OGE5YjcxZjBhYTY2OGM1Y2IzNTRkMDZjMjk1YTY5MWEwMTAwMDAwMDAwZmZmZmZmZmY0NWMyYjQwMTlhYmFmMDVjNWU0ODRkZjk4MmE0YTA3NDU5MjA0ZDEzNDNhNmVlNWJhZGFkZTM1ODE0MWY4Zjk5MDMwMDAwMDAwN2FjNTE2YTZhYWNhYzYzMDg2NTVjZDYwMWYzYmMyZjAwMDAwMDAwMDAwMTUyMDAwMDAwMDAiLCAiIiwgMCwgLTIwODIwNTM5MzksICI5YTk1ZTY5MmUxZjc4ZWZkM2U0NmJiOThmMTc4YTFlM2EwZWY2MGJkMDMwMWQ5ZjA2NGMwZTU3MDNkYzg3OWMyIl0sCglbIjVhNjBiOWI1MDM1NTNmM2MwOTlmNzc1ZGI1NmFmMzQ1NjMzMGYxZTQ0ZTY3MzU1YzRhYjI5MGQyMjc2NGI5MTQ0YTdiNWY5NTkwMDMwMDAwMDAwMzAwNTJhY2JkNjNlMDU2NGRlY2M4NjU5YWE1Mzg2OGJlNDhjMWJmY2RhMGE4Yzk4NTdiMGRiMzJhMjE3YmM4YjQ2ZDllNzMyM2ZlOTY0OTAyMDAwMDAwMDU1M2FjNjU1MWFiZDBlY2Y4MDYyMTFkYjk4OWJlYWQ5NmMwOWM3ZjNlYzVmNzNjMTQxMWQzMzI5ZDQ3ZDEyZjllNDY2NzhmMDliYWMwZGMzODNlMDIwMDAwMDAwMGZmZmZmZmZmMDE0OTRiYjIwMjAwMDAwMDAwMDUwMDUxNjU1MWFjMDAwMDAwMDAiLCAiYWMiLCAwLCAxMTY5OTQ3ODA5LCAiNjJhMzZjNmU4ZGEwMzcyMDJmYThhZWFlMDNlNTMzNjY1Mzc2ZDVhNGUwYTg1NGZjNDYyNGE3NWVjNTJlNGViMSJdLAoJWyI3ZTk4ZDM1MzA0NTU2OWM1MjM0N2NhMGZmMmZkYmE2MDg4MjllNzQ0ZjYxZWI3NzlmZmRiNTgzMGFhZTBlNmQ2ODU3YWIyNjkwZTAzMDAwMDAwMDc1MzY1YWNhYjY1NjM1MmZmZmZmZmZmYTg5MGRkMzc4MTg3NzZkMTJkYThkY2E1M2QwMmQyNDNlZjIzYjQ1MzVjNjcwMTZmNGM1ODEwM2VlZDg1MzYwZjAzMDAwMDAwMDA5M2RiYWNkYzI1Y2E2NWQyOTUxZTA0N2Q2MTAyYzRhN2RhNWUzN2YzZDVlM2M4Yjg3YzI5YjQ4OTM2MDcyNWRjZDExN2VlMjAwMzAwMDAwMDA1NmE2MzAwYWM1M2M3ZTk5ZmExZGMyYjhiNTE3MzMwMzRlNjU1NWY2ZDZkZTQ3ZGJiZjEwMjZlZmZhYzdkYjgwY2IyMDgwNjc4Njg3MzgwZGMxZTAyMDAwMDAwMDc1MzUyMDA1MjYzNTE2YWZmZmZmZmZmMDQ0MjMyNzIwNDAwMDAwMDAwMDhhYjYzNTNhYjY1NTEwMDUxZTBmNTNiMDUwMDAwMDAwMDA4NjMwMDUxNjU1MjYzNTE1MmY3NGE1ZjA0MDAwMDAwMDAwODUzYWNhYjAwNTNhYjUyYWIwZThlNWYwMDAwMDAwMDAwMDk1MWFjNTM2MzUxNmE2YWFiYWIwMDAwMDAwMCIsICI2YTUxNjNhYjUyIiwgMywgODkwMDA2MTAzLCAiNDc2ODY4Y2VjZDE3NjNjOTFkYWRlOThmMTdkZWZhNDJkMzEwNDk1NDdkZjQ1YWNmZmExY2M1YWU1YzNkNzVkNiJdLAoJWyJlMzY0OWFhNDA0MDVlNmZmZTM3N2RiYjFiYmJiNjcyYTQwZDg0MjRjNDMwZmE2NTEyYzYxNjUyNzNhMmI5YjZhZmE5OTQ5ZWM0MzAyMDAwMDAwMDc2MzAwNTJhYjY1NTE1M2EzNjVmNjJmMjc5MmZhOTBjNzg0ZWZlM2YwOTgxMTM0ZDcyYWFjMGIxZTE1NzgwOTcxMzJjN2YwNDA2NjcxNDU3YzMzMmI4NDAyMDAwMDAwMDM1M2FiNmFkNzgwZjQwY2Y1MWJlMjJiYjRmZjc1NTQzNDc3OWM3ZjFkZWY0OTk5ZTRmMjg5ZDJiZDIzZDE0MmYzNmI2NmZiZTVjZmJiNGIwMTAwMDAwMDA3NmE1MjUyYWJhYzUyYWIxNDMwZmZkYzY3MTI3YzljMGZjOTdkY2Q0YjU3OGRhYjY0ZjRmYjk1NTBkMmI1OWQ1OTk3NzM5NjIwNzdhNTYzZThiNjczMmMwMjAwMDAwMDAxNmFmZmZmZmZmZjA0Y2IyNjg3MDAwMDAwMDAwMDAyYWI2MzZlMzIwOTA0MDAwMDAwMDAwMjUyYWNmNzBlOTQwMTAwMDAwMDAwMDEwMGRjMzM5MzA1MDAwMDAwMDAwNmFiMDA2MzUzNmFhY2JjMjMxNzY1IiwgIjY1NTIwMDUzIiwgMywgLTIwMTYxOTY1NDcsICJmNjRmODA1ZjBmZjdmMjM3MzU5ZmE2YjBlNTgwODVmM2M3NjZkMTg1OTAwMzMzMjIyMzQ0NGZkMjkxNDQxMTJhIl0sCglbIjFkMDMzNTY5MDQwNzAwNDQxNjg2NjcyODMyYjUzMWFiNTVkYjg5YjUwZGMxZjlmYzAwZmI3MjIxOGI2NTJkYTlkY2ZiYzgzYmU5MDEwMDAwMDAwNjY1NTFhYzUyNmE2MzJiMzkwZjlhZDA2OGU1ZmRlZTY1NjNlODhlMmE4ZTRlMDk3NjNjODYxMDcyNzEzZGMwNjk4OTNkYzZiYmM5ZGIzZjAwZTI2NTAyMDAwMDAwMDk2YTUzNjM1MjY1NjU1MjUyNTJmZmZmZmZmZjhhMzZiZGQwYWFmMzhmNjcwNzU5MmQyMDNlMTQ0NzZjYTlmMjU5MDIxZTQ4NzEzNWM3ZTgzMjQyNDQwNTdlZDkwMzAwMDAwMDAwZWQzZmIyYTNkZmQ0ZDQ2YjVmMzYwM2ZlMDE0ODY1MzkxMTk4ODQ1N2JkMGVkN2Y3NDJiMDdjNDUyZjU0NzZjMjI4ZmY5ZjYwMDIwMDAwMDAwNzUyNmFhYzAwNTI1MTUyZmZmZmZmZmYwNGI4OGU0ODAzMDAwMDAwMDAwMGM3NTNkNjAyMDAwMDAwMDAwODUzNTEwMDAwMDA2NTUzNTE4ZmRhMjYwMzAwMDAwMDAwMDg1M2FjNTJhY2FjNTI2MzUzNDgzOWYxMDMwMDAwMDAwMDA2YWMwMDZhYWNhYzUzMDAwMDAwMDAiLCAiNTE2NTUzNjM1MzAwYWIwMDUyIiwgMSwgMjA3NTk1ODMxNiwgImMyY2VmYWVjMjI5MzEzNGFjYmNmNmQyYThiZjJiM2ViNDJlNGVjMDRlZThmOGJmMzBmZjIzZTY1NjgwNjc3YzEiXSwKCVsiNGM0YmU3NTQwMzQ0MDUwZTMwNDRmMGYxZDYyODAzOWEzMzRhN2MxZjdiNDU3MzQ2OWNmZWE0NjEwMWQ2ODg4YmI2MTYxZmU5NzEwMjAwMDAwMDAwZmZmZmZmZmZhYzg1YTRmZGFkNjQxZDhlMjg1MjNmNzhjZjViMGY0ZGM3NGU2YzVkOTAzYzEwYjM1OGRkMTNhNWExZmQ4YTA2MDAwMDAwMDAwMTYzZTBhZTc1ZDA1NjE2YjcyNDY3YjY5MWRjMjA3ZmUyZTY1ZWEzNWUyZWFkYjdlMDZlYTQ0MmIyYWRiOTcxNWYyMTJjMDkyNGYxMDIwMDAwMDAwMGZmZmZmZmZmMDE5NGRkZmUwMjAwMDAwMDAwMDI2NWFjMDAwMDAwMDAiLCAiMDAwMDY1MDAiLCAxLCAtNDc5OTIyNTYyLCAiZDY2OTI0ZDQ5ZjAzYTY5NjBkM2NhNDc5ZjM0MTVkNjM4YzQ1ODg5Y2U5YWIwNWUyNWI2NWFjMjYwYjUxZDYzNCJdLAoJWyIyMDJjMThlYjAxMmJjMGE5ODdlNjllMjA1YWVhNjNmMGYwYzA4OWY5NmRkOGYwZTlmY2RlMTk5ZjJmMzc4OTJiMWQ0ZTZkYTkwMzAyMDAwMDAwMDU1MzUyYWM2NTY1ZmZmZmZmZmYwMjU3ZTU0NTAxMDAwMDAwMDAwMjUzMDBhZDI1NzIwMzAwMDAwMDAwMDAwMDAwMDAwMCIsICI1MjAwNTJhYzZhMDA1MjY1IiwgMCwgMTY4MDU0Nzk3LCAiNTAyOTY3YTZmOTk5ZjdlZTI1NjEwYTQ0M2NhZjg2NTNkZGEyODhlNmQ2NDRhNzc1MzdiY2MxMTVhOGEyOTg5NCJdLAoJWyIzMmZhMGIwODA0ZTZlYTEwMWUxMzc2NjVhMDQxY2MyMzUwYjc5NGU1OWJmNDJkOWIwOTA4OGIwMWNkZTgwNmVjMWJiZWEwNzdkZjAyMDAwMDAwMDg1MTUxNTM2NTAwMDAwMDY1MDZhMTFjNTU5MDQyNThmYTQxOGU1N2I4OGIxMjcyNGI4MTE1MzI2MGQzZjRjOWYwODA0Mzk3ODlhMzkxYWIxNDdhYWJiMGZhMDAwMDAwMDAwNzAwMDA1MmFjNTFhYjUxMDk4NmYyYTE1YzBkNWUwNWQyMGRjODc2ZGQyZGFmYTQzNTI3NmQ1M2RhN2I0N2MzOTNmMjA5MDBlNTVmMTYzYjk3Y2UwYjgwMDAwMDAwMDAwOGFiNTI2YTUyMDA2NTYzNmE4MDg3ZGY3ZDRkOWM5ODVmYjQyMzA4ZmIwOWRjZTcwNDY1MDcxOTE0MGFhNjA1MGU4OTU1ZmE1ZDJlYTQ2YjQ2NGEzMzNmODcwMDAwMDAwMDA5NjM2MzAwNjM2YTY1NjUwMDZhZmZmZmZmZmYwMTk5NGEwZDA0MDAwMDAwMDAwMjUzNjUwMDAwMDAwMCIsICI1MTY1NjM1MzAwNjUiLCAyLCAtMTYzMDY4Mjg2LCAiZjU4NjM3Mjc3ZDJiYzQyZTE4MzU4ZGM1NWY3ZTg3ZTcwNDNmNWUzM2Y0Y2UxZmM5NzRlNzE1ZWYwZDNkMWMyYSJdLAoJWyJhZTIzNDI0ZDA0MGNkODg0ZWJmYjlhODE1ZDhmMTcxNzY5ODBhYjgwMTUyODVlMDNmZGRlODk5NDQ5ZjRhZTcxZTA0Mjc1ZTlhODAxMDAwMDAwMDdhYjAwNjU1MzUzMDA1M2ZmZmZmZmZmMDE4ZTA2ZGI2YWY1MTlkYWRjNTI4MGMwNzc5MWMwZmQzMzI1MTUwMDk1NWU0M2ZlNGFjNzQ3YTRkZjVjNTRkZjAyMDAwMDAwMDI1MWFjMzMwZTk3N2MwZmVjNjE0OWExNzY4ZTBkMzEyZmRiNTNlZDk5NTNhMzczN2Q3YjVkMDZhYWQ0ZDg2ZTk5NzAzNDZhNGZlZWI1MDMwMDAwMDAwOTUxYWI1MWFjNjU2M2FiNTI2YTY3Y2FiYzQzMWVlM2Q4MTExMjI0ZDVlY2RiYjdkNzE3YWE4ZmU4MmNlNGE2Mzg0MmM5YmQxYWE4NDhmMTExOTEwZTVhZTFlYjAxMDAwMDAwMDRhYzUxNTMwMGJmYjdlMGQ3MDQ4YWNkZGMwMzAwMDAwMDAwMDk2MzZhNTI1MzYzNmE2NTUzNjNhMzQyOGUwNDAwMDAwMDAwMDE1MjViOTljNjA1MDAwMDAwMDAwNDY1NTI2NWFiNzE3ZTZlMDIwMDAwMDAwMDAwZDk5MDExZWIiLCAiYWM2YTZhNTE2NTY1IiwgMSwgLTcxNjI1MTU0OSwgImIwOThlYjlhZmYxYmJkMzc1YzcwYTBjYmI5NDk3ODgyYWI1MWYzYWJmZWJiZjRlMWY4ZDc0YzA3MzlkYzc3MTciXSwKCVsiMDMwZjQ0ZmMwMWI0YTkyNjczMzVhOTU2NzdiZDE5MGMxYzEyNjU1ZTY0ZGY3NGFkZGM1M2I3NTM2NDEyNTlhZjFhNTQxNDZiYWEwMjAwMDAwMDAxNTJlMDA0YjU2YzA0YmExMTc4MDMwMDAwMDAwMDAyNmE1M2YxMjVmMDAxMDAwMDAwMDAwMjUxYWNkMmNjN2MwMzAwMDAwMDAwMDc2MzUzNjU2MzY1NTM2M2M5YjllNTA1MDAwMDAwMDAwMTUyMDAwMDAwMDAiLCAiYWMiLCAwLCAtMTM1MTgxODI5OCwgIjE5ZGQzMjE5MGVkMmEzN2JlMjJmMDIyNGE5YjU1YjkxZTM3MjkwNTc3YzZjMzQ2ZDM2ZDMyNzc0ZGIwMjE5YTMiXSwKCVsiYzA1ZjQ0OGYwMjgxNzc0MGIzMDY1MmM1NjgxYTNiMTI4MzIyZjlkYzk3ZDE2NmJkNDQwMmQzOWMzN2MwYjE0NTA2ZDhhZGI1ODkwMzAwMDAwMDAzNTM2MzUzZmZmZmZmZmZhMTg4YjQzMDM1NzA1NWJhMjkxYzY0OGY5NTFjZDJmOWIyOGEyZTc2MzUzYmVmMzkxYjcxYTg4OWJhNjhkNWZjMDIwMDAwMDAwNTY1NjU1MjZhNmFmZmZmZmZmZjAyNzQ1ZjczMDEwMDAwMDAwMDAxYWIzZWMzNGMwNDAwMDAwMDAwMDM2YWFjNTIwMDAwMDAwMCIsICI1MTY1NTE1MTAwNTMiLCAwLCAtMjY3ODc3MTc4LCAiM2ExYzY3NDJkNGMzNzRmMDYxYjFlYmUzMzBiMWUxNjlhMTEzYTE5NzkyYTFmZGRlOTc5YjUzZTA5NGNjNGEzYyJdLAoJWyIxNjNiYTQ1NzAzZGQ4YzJjNWExYzFmOGI4MDZhZmRjNzEwYTJhOGZjNDBjMDEzOGUyZDgzZTMyOWUwZTAyYTliNmM4MzdmZjZiODAwMDAwMDAwMDcwMDY1NTE1MWFiNmE1MjJiNDhiOGYxMzRlYjFhN2U2ZjVhNmZhMzE5Y2U5ZDExYjM2MzI3YmE0MjdiN2Q2NWVhZDNiNGE2YTY5Zjg1Y2RhOGJiY2QyMjAzMDAwMDAwMDU2MzY1NjU1MmFjZmZmZmZmZmZkYmNmNDk1NTIzMmJkMTFlZWYwY2M2OTU0ZjNmNjI3OTY3NWIyOTU2YjliY2MyNGYwOGMzNjA4OTQwMjdhNjAyMDEwMDAwMDAwNjY1MDAwMDY1MDBhYmZmZmZmZmZmMDRkMGNlOWQwMjAwMDAwMDAwMDA4MzgwNjUwMDAwMDAwMDAwMDE1MjMzZjM2MDA0MDAwMDAwMDAwMzAwNmFhYmVkY2YwODAxMDAwMDAwMDAwMDAwMDAwMDAwIiwgIjAwMDA2NTAwNjUwMGFjIiwgMCwgMjE2OTY1MzIzLCAiOWFmZTNmNDk3OGRmNmE4NmU5YThlYmQ2MmVmNmE5ZDQ4YTIyMDNmMDI2MjkzNDlmMTg2NGVmMmI4YjkyZmQ1NSJdLAoJWyIwN2Y3ZjU1MzA0NTNhMTJhZDBjN2ViOGZiYzNmMTQwYzdhYjY4MTgxNDRkNjdkMmQ4NzUyNjAwY2E1ZDlhOTM1OGUyZGZmODdkNDAwMDAwMDAwMDY2MzUyNmFhYjUyNmE5ZTU5OWMzNzlkNDU1ZTJkYTM2ZDBjZGU4OGQ5MzFhODYzYTNlOTdlMDFlOTNiOWVkYjY1ODU2ZjNkOTU4ZGMwOGI5MmI3MjAwMDAwMDAwMDAxNjViYmM4ZDY2ZGFlM2IxYjE3MGE2ZTI0NTdmNWIxNjE0NjVjYjg3MDZlMGU2ZmZjNmFmNTVkZWI5MTgzNjVmMTRjNWY0MGQ0ODkwMTAwMDAwMDAwYTdiZDc3YzA2OWVlNGI0ODYzOGUyMzYzZmNmMmE4NmIwMmJlYTAyMjA0N2JkOWZjYjE2ZDJiOTRhZDA2ODMwOGQxOWIzMWNiMDAwMDAwMDAwNjZhYWI1MzAwYWI1Mjk2NzJhYThmMDFkYmQ4YTIwNTAwMDAwMDAwMDY2MzUzNjM1MzAwNmEwMmU5OTkwMSIsICJhYzAwNjM1MTAwNmE2M2FiNjMiLCAxLCAxMTk3ODkzNTksICI2NjI5YTFlNzVjNmFlOGY0ZjlkNWY3MzQyNDZiNmE3MTY4MmE1ZWE1NzI0NjA0MGVmMDU4NGY2Yjk3OTE2MTc1Il0sCglbImZlNjQ3Zjk1MDMxMWJmOGYzYTRkOTBhZmQ3NTE3ZGYzMDZlMDRhMzQ0ZDJiMmEyZmVhMzY4OTM1ZmFmMTFmYTY4ODI1MDU4OTBkMDAwMDAwMDAwNWFiNTEwMDUxNmFmZmZmZmZmZjQzYzE0MDk0N2Q5Nzc4NzE4OTE5YzQ5YzA1MzU2NjdmYzZjYzcyN2Y1ODc2ODUxY2I4ZjdiNjQ2MDcxMGM3ZjYwMTAwMDAwMDAwZmZmZmZmZmZjZTRhYTVkOTBkN2FiOTNjYmVjMmU5NjI2YTQzNWFmY2YyYTY4ZGQ2OTNjMTViMGUxZWNlODFhOWZjYmUwMjVlMDMwMDAwMDAwMGZmZmZmZmZmMDJmMzQ4MDYwMjAwMDAwMDAwMDI1MTUyNjJlNTQ0MDMwMDAwMDAwMDA5NjU2MzUxNTFhYzY1NTM2MzYzNmRlNWNlMjQiLCAiNmEwMDUxMDBhYzUxNjM1MSIsIDIsIDk4OTY0MzUxOCwgIjgxOGE3Y2VhZjk2M2Y1MmI1YzQ4YTdmMDE2ODFhYzY2NTNjMjZiNjNhOWY0OTE4NTZmMDkwZDlkNjBmMmZmZTMiXSwKCVsiYTEwNTBmODYwNGQwZjlkMmZlZWZjZGI1MDUxYWUwMDUyZjM4ZTIxYmYzOWRhZjU4M2ZkMGMzOTAwZmFhM2VhYjVkNDMxYzBiYmUwMzAwMDAwMDA2NTM1MzZhMDA1MTUxNjgzZDI3ZTVjNmUwZGE4ZjIyMTI1ODIzZjMyZDVkOTg0NzdkODA5OGVmMzYyNjNiOTY5NGQ2MWQ0ZDg1ZDNmMmFjMDJiNzU3MDIwMDAwMDAwNzAwMDA1MjAwNTE2NWFiZmZmZmZmZmYwY2FkOTgxNTQyYmNiNTRhODdkOTQwMGFhNjNlNTE0YzdjNmZhYjcxNThjMmIxZmIzNzgyMWVhNzU1ZWIxNjJhMDIwMDAwMDAwMGI5NGZlYjUxMDBlNWVmM2JmOGVkOGQ0MzM1NmM4YThkNWFjNmM3ZTgwZDdmZjYwNDBmNGYwYWExOWFiYmU3ODNmNGY0NjEyNDAyMDAwMDAwMDc2MzY1MDAwMDAwNTI2NTU2ODZmZDcwMDQyYmUzYWQwMjAwMDAwMDAwMDQ2NWFiNjM2YTE1NjgwYjAwMDAwMDAwMDAwNGFjYWM1MzUxMTI3N2M3MDUwMDAwMDAwMDA0NTI2MzUyNTJkMjdhMDEwMjAwMDAwMDAwMDAwMDAwMDAwMCIsICI2YTZhYWNhYjY1NjU1MjUxIiwgMSwgLTk4MjE0NDY0OCwgImRmY2Y0ODQxMTE4MDE5ODllYjZkZjhkYzJiYWZiOTQ0ZDczNjVmZmViMzZhNTc1YTA4ZjMyNzBkM2VmMjRjOWYiXSwKCVsiY2VmNzMxNjgwNGMzZTc3ZmU2N2ZjNjIwN2ExZWE2YWU2ZWIwNmIzYmYxYjNhNDAxMGE0NWFlNWM3YWQ2NzdiYjhhNGViZDE2ZDkwMjAwMDAwMDA5YWM1MzZhNTE1MmFjNTI2MzAwNTMwMWFiOGEwZGEyYjNlMDY1NGQzMWEzMDI2NGY5MzU2YmExODUxYzgyMGE0MDNiZTI5NDhkMzVjYWZjN2Y5ZmU2N2EwNjk2MDMwMDAwMDAwNjUyNmE2MzYzNmE1M2ZmZmZmZmZmYmFkYTBkODU0NjUxOTlmYTQyMzJjNmU0MjIyZGY3OTA0NzBjNWI3YWZkNTQ3MDQ1OTVhNDhlZWRkN2E0OTE2YjAzMDAwMDAwMDg2NWFiNjNhYzAwNmEwMDZhYjI4ZGJhNGFkNTVlNThiNTM3NTA1M2Y3OGI4Y2RmNDg3OWY3MjNlYTQwNjhhZWQzZGQ0MTM4NzY2Y2I0ZDgwYWFiMGFmZjNkMDMwMDAwMDAwM2FjNmEwMGZmZmZmZmZmMDEwZjVkZDYwMTAwMDAwMDAwMDZhYjAwNmFhYjUxYWIwMDAwMDAwMCIsICIiLCAxLCA4ODkyODQyNTcsICJkMGYzMmE2ZGI0MzM3OGFmODRiMDYzYTY3MDZkNjE0ZTJkNjQ3MDMxY2YwNjY5OTdjNDhjMDRkZTNiNDkzYTk0Il0sCglbIjdiM2ZmMjgwMDRiYTNjNzU5MGVkNmUzNmY0NTQ1M2ViYjNmMTY2MzZmZTcxNmFjYjI0MThiYjI5NjNkZjU5NmE1MGVkOTU0ZDJlMDMwMDAwMDAwNjUyNTE1MTUyNjVhYmZmZmZmZmZmNzA2ZWUxNmUzMmUyMjE3OTQwMGM5ODQxMDEzOTcxNjQ1ZGFiZjYzYTNhNmQyZDVmZWI0MmY4M2FhNDY4OTgzZTAzMDAwMDAwMDY1M2FjNTFhYzUxNTJmZmZmZmZmZmEwM2ExNmU1ZTVkZTY1ZGZhODQ4YjlhNjRlZThiZjg2NTZjYzFmOTZiMDZhMTVkMzViZDVmM2QzMjYyOTg3NmUwMjAwMDAwMDAwNDNjMWEzOTY1NDQ4YjNiNDZmMGYwNjg5ZjEzNjhmM2IyOTgxMjA4YTM2OGVjNWMzMGRlZmIzNTU5NWVmOWNmOTVmZmQxMGU5MDIwMDAwMDAwMzZhYWM2NTI1M2E1YmJlMDQyZTkwNzIwNDAwMDAwMDAwMDgwMDAwNjU2NTY1NjM1MjYzNDIwM2I0MDIwMDAwMDAwMDAyNjU2MzM2YjNiNzAxMDAwMDAwMDAwMWFiN2EwNjNmMDEwMDAwMDAwMDAyNjUwMGEyMzNjYjc2IiwgIjAwNjU1MTYzNmE1M2FjNTI1MSIsIDEsIC0xMTQ0MjE2MTcxLCAiNjhjN2JkNzE3YjM5OWIxZWUzM2E2NTYyYTkxNjgyNWEyZmVkMzAxOWNkZjQ5MjA0MThiYjcyZmZkNzQwM2M4YyJdLAoJWyJkNWMxYjE2ZjAyNDhjNjBhM2RkY2NmN2ViZDFiM2YyNjAzNjBiYmRmMjIzMDU3N2QxYzIzNjg5MWExOTkzNzI1ZTI2MmUxYjZjYjAwMDAwMDAwMDM2MzYzNmFmZmZmZmZmZjBhMzIzNjJjZmU2OGQyNWIyNDNhMDE1ZmM5YWExNzJlYTljNmIwODdjOWUyMzE0NzRiYjAxODI0ZmQ2YmQ4YmMwMzAwMDAwMDA1YWI1MmFiNTE2YWZmZmZmZmZmMDQyMGQ5YTcwMjAwMDAwMDAwMDQ1MTUyNjU2YTQ1NzY1ZDAwMDAwMDAwMDAwNTUyNTI1MzZhNTI3N2JhZDEwMDAwMDAwMDAwMDI1MmFiM2YzZjM4MDMwMDAwMDAwMDA0NjNhY2FjNTIwMDAwMDAwMCIsICI1MjYzNmE1MmFiNjUiLCAxLCAxMzA1MTIzOTA2LCAiOTc4ZGMxNzhlY2QwM2Q0MDNiMDQ4MjEzZDkwNDY1Mzk3OWQxMWM1MTczMDM4MWM5NmM0MjA4ZTNlYTI0MjQzYSJdLAoJWyIxYmU4ZWU1NjA0YTk5MzdlYmVjZmZjODMyMTU1ZDliYTc4NjBkMGNhNDUxZWFjZWQ1OGNhMzY4ODk0NWEzMWQ5MzQyMGMyN2M0NjAxMDAwMDAwMDZhYmFjNTMwMDUzNTI4OGI2NTQ1OGFmMmYxN2NiYmY3YzVmYmNkY2ZiMzM0ZmZkODRjMTUxMGQ1NTAwZGM3ZDI1YTQzYzM2Njc5YjcwMmU4NTBmN2MwMjAwMDAwMDAzMDA1MzAwZmZmZmZmZmY3YzIzNzI4MWNiODU5NjUzZWI1YmIwYTY2ZGJiN2FlYjJhYzExZDk5YmE5ZWQwZjEyYzc2NmE4YWUyYTIxNTcyMDMwMDAwMDAwODZhYWJhYzUyNjM2NWFjYWJmZmZmZmZmZmYwOWQzZDY2Mzk4NDlmNDQyYTZhNTJhZDEwYTVkMGU0Y2IxZjRhNmIyMmE5OGE4ZjQ0MmY2MDI4MGM5ZTViZTgwMjAwMDAwMDA3YWIwMGFiNjU2NWFiNTJmZmZmZmZmZjAzOThmZTgzMDMwMDAwMDAwMDA1NTI2YWFiYWJhY2JkZDZlYzAxMDAwMDAwMDAwNTUzNTI1MmFiNmE4MmMxZTYwNDAwMDAwMDAwMDE2NTJiNzFjNDBjIiwgIjY1NjM1MjYzNTM2NTYzNTEiLCAyLCAtODUzNjM0ODg4LCAiMGQ5MzZjY2VkYTJmNTZjN2JiODdkOTBhN2I1MDhmNjIwODU3NzAxNGZmMjgwOTEwYTcxMDU4MDM1N2RmMjVmMyJdLAoJWyI5ZTBmOTljNTA0ZmJjYTg1OGMyMDljNmQ5MzcxZGRkNzg5ODViZTFhYjUyODQ1ZGIwNzIwYWY5YWU1ZTI2NjRkMzUyZjUwMzdkNDAxMDAwMDAwMDU1MmFjNTM2MzZhZmZmZmZmZmYwZTBjZTg2NmJjM2Y1YjBhNDk3NDhmNTk3YzE4ZmE0N2EyNDgzYjhhOTRjZWYxZDcyOTVkOWE1ZDM2ZDMxYWU3MDMwMDAwMDAwNjYzNTE1MjYzYWM2MzViYjVkMTY5ODMyNTE2NGNkZDNmN2YzZjc4MzE2MzVhMzU4OGYyNmQ0N2NjMzBiZjBmZWZkNTZjZDg3ZGM0ZTg0ZjE2MmFiNzAyMDAwMDAwMDM2YTYzNjVmZmZmZmZmZjg1YzJiMWE2MWRlNGJjYmQxZDUzMzJkNWY1OWYzMzhkZDVlOGFjY2JjNDY2ZmQ4NjBmOTZlZWYxZjU0YzI4ZWMwMzAwMDAwMDAxNjVmZmZmZmZmZjA0ZjVjYWJkMDEwMDAwMDAwMDA3MDAwMDUyYWM1MjY1NjNjMThmMTUwMjAwMDAwMDAwMDQ2NTUxMDA1MWRjOTE1NzA1MDAwMDAwMDAwODY1NTM2M2FjNTI1MjUzYWM1MDZiYjYwMDAwMDAwMDAwMDg2NTY1NmE1M2FiNjMwMDZhMDAwMDAwMDAiLCAiMDA2YTZhMDA1MiIsIDAsIDExODYzMjQ0ODMsICIyZjliNzM0ODYwMDMzNjUxMjY4NmU3MjcxYzUzMDE1ZDFjYjA5NmFiMWE1ZTBiY2U0OWFjZDM1YmNlYjQyYmM4Il0sCglbIjExY2U1MWY5MDE2NGI0YjU0YjkyNzhmMDMzN2Q5NWM1MGQxNmY2ODI4ZmNiNjQxZGY5YzdhMDQxYTJiMjc0YWE3MGIxMjUwZjJiMDAwMDAwMDAwOGFiNmE2YTY1MDA2NTUxNTI0YzlmZTdmNjA0YWY0NGJlMDUwMDAwMDAwMDA1NTI1MzY1MDA2NTIxZjc5YTAzMDAwMDAwMDAwMTUzMDZiYjRlMDQwMDAwMDAwMDAyNjVhYzk5NjExYTA1MDAwMDAwMDAwNzY1YWNhYjY1NjUwMDAwNmRjODY2ZDAiLCAiIiwgMCwgLTE3MTA0Nzg3NjgsICJjZmE0Yjc1NzM1NTliM2IxOTk0Nzg4ODBjODAxM2ZhNzEzY2E4MWNhODc1NGEzZmQ2OGE2ZDdlZTYxNDdkYzVhIl0sCglbIjg2YmMyMzNlMDJiYTNjNjQ3ZTM1NjU1OGU3MjUyNDgxYTc3Njk0OTFmYjQ2ZTg4M2RkNTQ3YTRjZTk4OThmYzlhMWNhMWI3Nzc5MDAwMDAwMDAwNmFiNTM1MWFiYWI1MWYwYzFkMDljMzc2OTZkNWM3YzI1Nzc4OGY1ZGZmNTU4M2Y0NzAwNjg3YmNiN2Q0YWNmYjQ4NTIxZGM5NTM2NTllMzI1ZmEzOTAzMDAwMDAwMDNhY2FjNTI4MGYyOTUyMzAyNzIyNWFmMDMwMDAwMDAwMDA5NjNhYmFjMDA2NWFiNjVhY2FiN2U1OWQ5MDQwMDAwMDAwMDAxNjU0OWRhYzg0NiIsICI1MzAwNmFhYzUyYWNhYyIsIDAsIDcxMTE1OTg3NSwgIjg4MDMzMGNjZGUwMDk5MTUwM2VhNTk4YTZkZmQ4MTEzNWM2Y2RhOWQzMTc4MjAzNTI3ODE0MTdmODkxMzRkODUiXSwKCVsiYmVhYzE1NWQwM2E4NTNiZjE4Y2Q1YzQ5MGJiMmEyNDViM2IyYTUwMWEzY2U1OTY3OTQ1YjBiZjM4OGZlYzJiYTlmMDRjMDNkNjgwMzAwMDAwMDAwMTJmZTk2MjgzYWVjNGQzYWFmZWQ4Zjg4OGIwZjE1MzRiZDkwM2Y5Y2QxYWY4NmE3ZTY0MDA2YTJmYTBkMmQzMDcxMWFmNzcwMDEwMDAwMDAwMTYzZmZmZmZmZmZkOTYzYTE5ZDE5YTI5MjEwNGI5MDIxYzUzNWQzZTMwMjkyNTU0M2ZiM2I1ZWQzOWZiMjEyNGVlMjNhOWRiMDAzMDIwMDAwMDAwNTY1MDBhYzYzYWNmZmZmZmZmZjAxYWQ2N2Y1MDMwMDAwMDAwMDAzMDBhYzUxODlmNzhkYjIiLCAiNTM1MzZhNjM2NTAwIiwgMiwgNzQ4OTkyODYzLCAiYmRlM2RkMDU3NTE2NGQ3ZWNlM2I1NzgzY2UwNzgzZmZkZGI3ZGY5OGYxNzhmZTY0Njg2ODMyMzAzMTRmMjg1YSJdLAoJWyI4MWRhYjM0YTAzOWM5ZTIyNWJhOGVmNDIxZWM4ZTBlOWQ0NmI1MTcyZTg5MjA1OGE5YWRlNTc5ZmUwZWIyMzlmN2Q5Yzk3ZDQ1YjAzMDAwMDAwMDlhYzY1NjU1MzUxYWI1MjYzNjNmZmZmZmZmZjEwYzBmYWFmN2Y1OTdmYzhiMDBiYmM2N2MzZmQ0YzZiNzBjYTZiMjI3MThkMTU5NDZiZjZiMDMyZTYyZGFlNTcwMDAwMDAwMDA1NTM2YTAwYWI2YTAyY2RkZWMzYWNmOTg1YmJlNjJjOTZmY2NmMTcwMTJhODcwMjZlZDYzZmM2NzU2ZmEzOWUyODZlYjRjMmRkNzliNTlkMzc0MDAzMDAwMDAwMDI1MTZhZmZmZmZmZmYwNGYxOGI4ZDAzMDAwMDAwMDAwNzUzYWJhYjUxNTI2MzY1NjQ0MTFjMDIwMDAwMDAwMDA0MDBhYjYzMDBlOTY1NzUwMzAwMDAwMDAwMDAxYmQyY2YwMjAwMDAwMDAwMDU2NWFiNTI2YWFiMDAwMDAwMDAiLCAiMDA2NTUxYWIiLCAwLCAtMTQ4ODE3NDQ4NSwgImEzZDY1YThjZDBjMWVlYTg1NThkMDEzOTZiOTI5NTIwYTIyMjFjMjlkOWYyNWYyOTAzNWI4YWJhZTg3NDQ0N2YiXSwKCVsiNDg5ZWJiZjEwNDc4ZTI2MGJhODhjMDE2OGJkNzUwOWE2NTFiMzZhYWVlOTgzZTQwMGM3MDYzZGEzOWM5M2JmMjgxMDAwMTFmMjgwMTAwMDAwMDA0YWJhYjYzYWIyZmM4NTZmMDVmNTliMjU3YTQ0NDUyNTNlMGQ5MWI2ZGZmZTMyMzAyZDUyMGFjOGU3ZjZmMjQ2N2Y3ZjZiNGI2NWYyZjU5ZTkwMzAwMDAwMDA5NjM1M2FiYWNhYjYzNTE2NTZhZmZmZmZmZmYwMTIyZDk0ODBkYjZjNDVhMmM2ZmQ2OGI3YmM1NzI0NmVkZmZiZjYzMzBjMzljY2QzNmFhM2FhNDVlYzEwOGZjMDMwMDAwMDAwMjY1YWI5YTdlNzhhNjlhYWRkNmIwMzBiMTI2MDJkZmYwNzM5YmJjMzQ2YjQ2NmM3YzAxMjliMzRmNTBhZTFmNjFlNjM0ZTExZTlmM2QwMDAwMDAwMDA2NTE2YTUzNTI1MTAwZmZmZmZmZmYwMTEyNzEwNzAwMDAwMDAwMDAwODY1NjNhYjYzNTM1MzYzNTJjNGRkMGUyYyIsICIiLCAwLCAtMjkzMzU4NTA0LCAiNGViYTMwNTViYzJiNTg3NjU1OTNlYzZlMTE3NzVjZWE0YjY0OTNkOGY3ODVlMjhkMDFlMmQ1NDcwZWE3MTU3NSJdLAoJWyI2OTExMTk1ZDA0ZjQ0OWU4ZWFkZTNiYzQ5ZmQwOWI2ZmI0YjdiN2VjODY1Mjk5MThiODU5M2E5ZjZjMzRjMmYyZDMwMWVjMzc4YjAwMDAwMDAwMDI2M2FiNDkxNjIyNjZhZjA1NDY0MzUwNWI1NzJjMjRmZjZmOGU0YzkyMGU2MDFiMjNiM2M0MjA5NTg4MTg1N2QwMGNhZjU2YjI4YWNkMDMwMDAwMDAwNTY1NTI1MjAwYWMzYWM0ZDI0Y2I1OWVlOGNmZWMwOTUwMzEyZGNkY2MxNGQxYjM2MGFiMzQzZTgzNDAwNGE1NjI4ZDYyOTY0MjQyMmYzYzVhY2MwMjAwMDAwMDAzNTEwMGFjY2Y5OWI2NjNlM2M3NDc4N2FiYTEyNzIxMjlhMzQxMzA2NjhhODc3Y2M2NTE2YmZiNzU3NGFmOWZhNmQwN2Y5YjQxOTczMDM0MDAwMDAwMDAwODUzNTFhYjUxNTI2MzUyNTJmZmZmZmZmZjA0MmIzYzk1MDAwMDAwMDAwMDAwZmY5MjMzMDIwMDAwMDAwMDA0NmE1MjUyYWI4ODRhMjQwMjAwMDAwMDAwMDg1MzUzMDA2NTUyMDA2MzAwMGQ3OGJlMDMwMDAwMDAwMDA5NTNhYmFiNTJhYjUzYWM2NWFiYTcyY2IzNGIiLCAiNmEiLCAyLCAtNjM3NzM5NDA1LCAiNmI4MGQ3NGViMGU3ZWU1OWQxNGYwNmYzMGJhN2Q3MmE0OGQzYThmZjJkNjhkM2I5OWU3NzBkZWMyM2U5Mjg0ZiJdLAoJWyI3NDYzNDdjZjAzZmFhNTQ4ZjRjMGI5ZDJiZDk2NTA0ZDJlNzgwMjkyNzMwZjY5MGJmMDQ3NWIxODg0OTNmYjY3Y2E1OGRjY2E0ZjAwMDAwMDAwMDIwMDUzMzZlMzUyMWJmYjk0YzI1NDA1OGU4NTJhMzJmYzRjZjUwZDk5ZjljYzcyMTVmN2M2MzJiMjUxOTIyMTA0ZjYzOGFhMGI5ZDA4MDEwMDAwMDAwODY1NmFhYzUzNTE2MzUyNTFmZmZmZmZmZjRkYTIyYTY3OGJiNWJiM2FkMWEyOWY5N2Y2ZjdlNWI1ZGUxMWJiODBiY2YyZjdiYjk2YjY3YjlmMWFjNDRkMDkwMzAwMDAwMDAzNjVhYmFiZmZmZmZmZmYwMzZmMDJiMzAwMDAwMDAwMDAwNzYzNTNhYjZhYWM2M2FjNTBiNzJhMDUwMDAwMDAwMDAyYWNhYmE4YWJmODA0MDAwMDAwMDAwNjYzMDA2YTZhNjM1Mzc5N2ViOTk5IiwgImFjYWM1MTAwIiwgMSwgLTE0ODQ0OTM4MTIsICIxNjRjMzJhMjYzZjM1N2UzODViZDc0NDYxOWI5MWMzZjllM2NlNmMyNTZkNmE4MjdkNmRlZmNiZGZmMzhmYTc1Il0sCglbImUxNzE0OTAxMDIzOWRkMzNmODQ3YmYxZjU3ODk2ZGI2MGU5NTUxMTdkOGNmMDEzZTc1NTNmYWU2YmFhOWFjZDNkMGYxNDEyYWQ5MDIwMDAwMDAwNjUxNjUwMDUxNjUwMGNiN2IzMmE4YTY3ZDU4ZGRkZmI2Y2ViNTg5N2U3NWVmMWMxZmY4MTJkOGNkNzM4NzU4NTY0ODc4MjZkZWM0YTRlMmQyNDIyYTAxMDAwMDAwMDRhYzUyNTM2NTE5NmRiYjY5MDM5MjI5MjcwNDAwMDAwMDAwMDcwMDAwNTM1MzUxNjM2YThiNzU5NjAyMDAwMDAwMDAwNmFiNTFhYzUyNjU1MTMxZTk5ZDA0MDAwMDAwMDAwMzUxNjU1MWVlNDM3ZjVjIiwgImFjNjU2YTUzIiwgMSwgMTEwMjY2MjYwMSwgIjg4NThiYjQ3YTA0MjI0M2YzNjlmMjdkOWFiNGE5Y2Q2MjE2YWRlYWMxYzFhYzQxM2VkMDg5MGU0NmYyM2QzZjMiXSwKCVsiMTQ0OTcxOTQwMjIzNTk3YTJkMWRlYzQ5YzdkNGVjNTU3ZTRmNGJkMjA3NDI4NjE4YmFmYTNjOTZjNDExNzUyZDQ5NDI0OWUxZmIwMTAwMDAwMDA0NTI2YTUxNTFmZmZmZmZmZjM0MGE1NDViMTA4MGQ0ZjdlMjIyNWZmMWM5ODMxZjI4M2E3ZDRjYTRkM2QwYTI5ZDEyZTA3ZDg2ZDY4MjZmN2YwMjAwMDAwMDAzMDA2NTUzZmZmZmZmZmYwM2MzNjk2NTAwMDAwMDAwMDAwMGRmYTlhZjAwMDAwMDAwMDAwNDUxNjM2YWFjN2Y3ZDE0MDMwMDAwMDAwMDAxNjMwMDAwMDAwMCIsICIiLCAxLCAtMTA4MTE3Nzc5LCAiYzg0ZmNhZjlkNzc5ZGY3MzZhMjZjYzNjYWJkMDRkMGU2MTE1MGQ0ZDU0NzJkZDUzNThkNjYyNmU2MTBiZTU3ZiJdLAoJWyJiMTFiNjc1MjA0NGU2NTBiOWM0NzQ0ZmI5YzkzMDgxOTIyN2QyYWM0MDQwZDhjOTFhMTMzMDgwZTA5MGIwNDJhMTQyZTkzOTA2ZTAwMDAwMDAwMDM2NTAwNTNmZmZmZmZmZjZiOWNlN2UyOTU1MGQzYzE2NzZiNzAyZTVlMTUzNzU2NzM1NGIwMDJjOGI3YmIzZDM1MzVlNjNhZDAzYjUwZWEwMTAwMDAwMDA1NTEwMDUxNjMwMGZmZmZmZmZmZmNmN2IyNTJmZWEzYWQ1YTEwOGFmMzY0MGE5YmMyY2Q3MjRhN2EzY2UyMmE3NjBmYmE5NTQ5NmU4OGUyZjJlODAxMDAwMDAwMDM2YTAwYWM3YzU4ZGY1ZWZiYTE5M2QzM2Q5NTQ5NTQ3ZjZjYTgzOWY5M2UxNGZhMGUxMTFmNzgwYzI4YzYwY2M5MzhmNzg1YjM2Mzk0MWIwMDAwMDAwMDA4NjNhYjUxNTE2NTUyYWM1MjY1ZTUxZmNkMDMwOGU5ODMwNDAwMDAwMDAwMDM2YTAwYWJhYjcyMTkwMzAwMDAwMDAwMDE2YTYzZDA3MTAwMDAwMDAwMDAwNTAwNTFhYjZhNjMwMDAwMDAwMCIsICI1MzAwNTE2NWFjNTFhYjY1IiwgMCwgMjI5NTYzOTMyLCAiZTU2MjU3OWQxYTJiMTBkMWM1ZTQ1YzA2NTEzNDU2MDAyYTZiZWMxNTdkN2ViNDI1MTFkMzBiMTE4MTAzYzA1MiJdLAoJWyIyYWVlNmI5YTAyMTcyYTgyODhlMDJmYWM2NTQ1MjBjOWRkOWFiOTNjZjUxNGQ3MzE2MzcwMWY0Nzg4YjRjYWVlYjkyOTdkMmUyNTAzMDAwMDAwMDRhYjYzNjMwMDhmYjM2Njk1NTI4ZDc0ODI3MTBlYTI5MjY0MTJmODc3YTNiMjBhY2FlMzFlOWQzMDkxNDA2YmZhNmI2MmViZjlkOWQyYTY0NzAxMDAwMDAwMDk1MzUxNjU1MzZhNjM1MjAwNjVmZmZmZmZmZjAzZjdiNTYwMDUwMDAwMDAwMDAzYWNhYjZhOWE4MzM4MDUwMDAwMDAwMDAwMjA2Y2U5MDAwMDAwMDAwMDA1NjU1MjUxNmE1MTAwMDAwMDAwIiwgIjUyNTIiLCAxLCAtMTEwMjMxOTk2MywgImZhNDY3NmMzNzRhZTNhNDE3MTI0YjRjOTcwZDFlZDMzMTlkYzNhYzkxZmIzNmVmY2ExYWE5ZWQ5ODFhOGFhMWIiXSwKCVsiOTU1NDU5NTIwM2FkNWQ2ODdmMzQ0NzQ2ODU0MjVjMTkxOWUzZDJjZDA1Y2YyZGFjODlkNWYzM2NkMzk2M2U1YmI0M2Y4NzA2NDgwMTAwMDAwMDAwZmZmZmZmZmY5ZGUyNTM5YzJmZTMwMDBkNTlhZmJkMzc2Y2I0NmNlZmE4YmQwMWRiYzQzOTM4ZmY2MDg5YjYzZDY4YWNkYzJiMDIwMDAwMDAwOTY1NTM2NTUyNTE1MzZhNjUwMGZmZmZmZmZmZjk2OTVlNDAxNmNkNGRmZWI1ZjdkYWRmMDA5NjhlNmE0MDllZjA0OGY4MTkyMmNlYzIzMWVmZWQ0YWM3OGY1ZDAxMDAwMDAwMDc2M2FiYWI2YTUzNjUwMDZjYWFmMDA3MDE2MmNjNjQwMjAwMDAwMDAwMDQ1MTYzYWI1MTAwMDAwMDAwIiwgIiIsIDAsIC0xMTA1MjU2Mjg5LCAiZThlMTBlZDE2MmIxYTQzYmZkMjNiZDA2Yjc0YTZjMmYxMzhiOGRjMWFiMDk0ZmZiMmZhMTFkNWIyMjg2OWJlZSJdLAoJWyIwNGY1MWYyYTA0ODRjYmE1M2Q2M2RlMWNiMGVmZGNiMjIyOTk5Y2RmMmRkOWQxOWIzNTQyYTg5NmNhOTZlMjNhNjQzZGZjNDVmMDAyMDAwMDAwMDdhY2FjNTM1MTAwNjMwMDJiMDkxZmQwYmZjMGNmYjM4NmVkZjdiOWU2OTRmMTkyN2Q3YTNjZjRlMWQyY2U5MzdjMWUwMTYxMDMxMzcyOWVmNjQxOWFlNzAzMDAwMDAwMDE2NWEzMzcyYTkxM2M1OWI4YjNkYTQ1ODMzNWRjMTcxNDgwNWMwZGI5ODk5MmZkMGQ5M2YxNmE3ZjI4YzU1ZGM3NDdmZTY2YTViNTAzMDAwMDAwMDk1MzUxYWI2NWFiNTI1MzYzNTFmZmZmZmZmZjU2NTBiMzE4YjNlMjM2ODAyYTRlNDFlZDliYzBhMTljMzJiN2FhM2Y5YjJjZGExMTc4Zjg0NDk5OTYzYTBjZGUwMDAwMDAwMDAxNjVmZmZmZmZmZjAzODM5NTRmMDQwMDAwMDAwMDA1NTNhYzUzNjM2M2E4ZmM5MDAzMDAwMDAwMDAwMGEyZTMxNTAwMDAwMDAwMDAwNWFjYWIwMGFiNTEwMDAwMDAwMCIsICIwMDUzIiwgMiwgLTE0MjQ2NTM2NDgsICJhNWJjMDM1NmY1NmIyYjQxYTIzMTRlYzA1YmVlN2I5MWVmNTdmMTA3NGJjZDJlZmM0ZGE0NDIyMjIyNjlkMWEzIl0sCglbIjVlNGZhYjQyMDI0YTI3ZjA1NDRmZTExYWJjNzgxZjQ2NTk2Zjc1MDg2NzMwYmU5ZDE2Y2U5NDhiMDRjYzM2Zjg2ZGI3YWQ1MGZkMDEwMDAwMDAwMjZhMDA2MTMzMzBmNDkxNjI4NWI1MzA1Y2MyZDNkZTZmMDI5Mzk0NmFhNjM2MmZjMDg3NzI3ZTUyMDNlNTU4YzY3NmIzMTRlZjhkZDQwMTAwMDAwMDAwMWFmNTkwZDIwMmJhNDk2ZjA0MDAwMDAwMDAwMTAwOWUzYzk2MDQwMDAwMDAwMDAzNTFhYzUxOTQzZDY0ZDMiLCAiNTFhY2FiYWI1MTAwYWI1MiIsIDEsIC0xMjkzMDEyMDcsICI1NTZjM2Y5MGFhODFmOWI0ZGY1YjkyYTIzMzk5ZmU2NDMyY2Y4ZmVjZjdiYmE2NmZkOGZkYjAyNDY0NDAwMzZjIl0sCglbImExMTUyODQ3MDRiODhiNDVhNWYwNjBhZjQyOWEzYThlYWIxMGIyNmI3YzE1ZWQ0MjEyNThmNTMyMGZhMjJmNDg4MjgxN2Q2YzJiMDMwMDAwMDAwMzAwNTMwMGZmZmZmZmZmNDE2MmY0ZDczOGU5NzNlNWQyNjk5MTQ1Mjc2OWIyZTFiZTRiMmI1YjdlOGNiZWFiNzliOWNmOWRmMjg4MmMwNDAwMDAwMDAwMDY2MzZhYWM2M2FjNTE5NGFiYzhhYTIyZjhkZGM4YTdhYjEwMmE1OGUzOTY3MTY4M2QxODkxNzk5ZDE5YmQxMzA4ZDI0ZWE2ZDM2NWU1NzExNzJmMWUwMzAwMDAwMDA3MDA1MTUzNTI1MTUxNTNmZmZmZmZmZjRkYTdhZDc1Y2U2ZDg1NDFhY2JiMDIyNmU5ODE4YTE3ODRlOWM5N2M1NGI3ZDFmZjgyZjc5MWRmMWM2NTc4ZjYwMDAwMDAwMDAwZmZmZmZmZmYwMWIxZjI2NTA0MDAwMDAwMDAwOWFiMDA1MWFjNjU2YTUxNmE1MzAwMDAwMDAwIiwgIjUxYWJhYjYzNTI1MzUyNjUiLCAwLCAtMTI2OTEwNjgwMCwgIjBlZjdiNmU4N2M3ODJmYTMzZmUxMDlhYWIxNTdhMmQ5Y2RkYzQ0NzI4NjRmNjI5NTEwYTFjOTJmYTFmZTdmYzEiXSwKCVsiZjNmNzcxYWUwMjkzOTc1MmJmZTMwOWQ2YzY1MmMwZDI3MWI3Y2FiMTQxMDdlOTgwMzJmMjY5ZDkyYjJhOGM4ODUzYWIwNTdkYTgwMTAwMDAwMDA1NjNhYjZhNjM2NTY3MGMzMDVjMzhmNDU4ZTMwYTdjMGFiNDVlZTlhYmQ5YThkYzAzYmFlMTg2MGY5NjVmZmNlZDg3OWNiMmU1ZDBiYjE1NjgyMTAyMDAwMDAwMDE1M2ZmZmZmZmZmMDI1ZGM2MTkwNTAwMDAwMDAwMDJhYzUxZWMwZDI1MDEwMDAwMDAwMDA3NmE1MjAwNjM2YTYzNjMzMzNhZWNkOCIsICI2NTAwNTNhYzUxNTEwMGFiIiwgMSwgMTgxMjQwNDYwOCwgImE3YWEzNGJmOGE1NjQ0ZjAzYzZkZDg4MDFmOWIxNWJhMmUwN2UwNzI1NmRiZjFlMDJkYWQ1OWYwZDNlMTdlYTkiXSwKCVsiZmQzZTI2NzIwM2FlN2Q2ZDM5NzVlNzM4Y2E4NGYxMjU0MDIyOWJiMjM3ZGQyMjhkNWY2ODhlOWQ1YmE1M2ZjZTQzMDJiMDMzNGQwMTAwMDAwMDAyNjM1M2ZmZmZmZmZmNjAyYTNhYjc1YWY3YWE5NTFkOTMwOTNlMzQ1ZWYwMDM3YTI4NjNmM2Y1ODBhOWIxYTU3NWZmZmU2OGU2Nzc0NTAzMDAwMDAwMDAyMzllNDc2ZDFlOGY4MWU4YjYzMTM4ODBkOGE0OWIyN2MxYjAwYWY0NjdmMjk3NTZlNzZmNjc1ZjA4NGE1Njc2NTM5NjM2YWIwMzAwMDAwMDA3NjVhYjYzNTFhY2FjNTJkOTIxNzc0NzA0NGQ3NzMyMDQwMDAwMDAwMDA3NTJhYzUxNTI2MzUzYWNjMzNlNDUwNTAwMDAwMDAwMDU1MTY1MDAwMDUxMTVkODg5MDQwMDAwMDAwMDA0YWI1MTYzNTEwY2JiYmQwMjAwMDAwMDAwMDE2NTAwMDAwMDAwIiwgIjY1YWM1MjZhYWM2YTUzYWI1MiIsIDIsIC04ODYxNzkzODgsICJiYzQ2ZjNmODMwNThkZGY1YmViZDllMWYyYzExN2E2NzM4NDdjNGRjNWUzMWNmYjI0YmFjOTFhZGYzMDg3N2NmIl0sCglbImYzODBhZTIzMDMzNjQ2YWY1ZGZjMTg2ZjY1OTkwOTgwMTUxMzllOTYxOTE5YWVhMjg1MDJlYTJkNjk0NzQ0MTNkOTRhNTU1ZWEyMDAwMDAwMDAwODUzNjM1MjY1YWJhY2FjNTMxNGRhMzk0Yjk5YjA3NzMzMzQxZGRiYTllODYwMjI2MzdiZTNiNzY0OTI5OTJmYjBmNThmMjNjOTE1MDk4OTc5MjUwYTk2NjIwMzAwMDAwMDAzYWI2MzAwZmZmZmZmZmY0YmI2ZDFjMGEwZDg0ZWFjN2Y3NzBkM2FkMGZkYzUzNjlhZTQyYTIxYmJlNGMwNmUwYjUwNjBkNTk5MDc3NjIyMDMwMDAwMDAwMGZmZmZmZmZmMDQ4NmZkNzAwMjAwMDAwMDAwMDdhYzY1MDA2MzUyNTJhY2YzZmQ3MjAxMDAwMDAwMDAwNTY1NmE2YTY1NTEyMTJkZTkwNTAwMDAwMDAwMDk2MzY1MDA2YTYzNjM1MTUzMDAwZmEzMzEwMDAwMDAwMDAwMDYwMDUzNTE1MTY1NjMwMDAwMDAwMCIsICJhYjUyIiwgMiwgLTc0MDg5MDE1MiwgImY4MDRmYzRkODFmMDM5MDA5ZWQxZjJjY2NiNWM5MWRhNzk3NTQzZjIzNWFjNzFiMjE0YzIwZTc2M2E2ZDg2ZDciXSwKCVsiNWM0NWQwOTgwMWJiNGQ4ZTc2NzlkODU3Yjg2Yjk3Njk3NDcyZDUxNGY4Yjc2ZDg2MjQ2MGU3NDIxZTg2MTdiMTVhMmRmMjE3YzYwMTAwMDAwMDA4NjNhY2FjYWI2NTY1MDA2YWZmZmZmZmZmMDExNTZkYmMwMzAwMDAwMDAwMDk1MmFjNjM1MTY1NTFhYzZhYWMwMDAwMDAwMCIsICI2YWFiYWMiLCAwLCAxMzEwMTI1ODkxLCAiMjcwNDQ1YWI3NzI1OGNlZDJlNWUyMmE2ZDBkOGMzNmFjN2MzMGZmZjliZWVmYTRiM2U5ODE4NjdiMDNmYTBhZCJdLAoJWyI0ZWNjNmJkZTAzMGNhMGY4M2MwZWQzZDRiNzc3Zjk0YzBjODg3MDhjNmM5MzNmZTFkZjY4NzRmMjk2ZDQyNWNhYzk1MzU1YzIzZDAwMDAwMDAwMDZhYzZhNTE1MzZhNTJmMjg2YTA5NjlkNjE3MGUyMGYyYTgwMDAxOTM4MDdmNWJjNTU2NzcwZTlkODIzNDFlZjhlMTdiMDAzNWVhY2U4OWM3NmVkZDUwMjAwMDAwMDA3YWM2NTUyNTEwMDY1NmFmZmZmZmZmZjViYWRlNmU0NjJmYWMxOTI3ZjA3OGQ2OWQzYTk4MWY1YjRjMWU1OTMxMWEzOGVmY2I5YTkxMGFhNDM2YWZhYTgwMDAwMDAwMDA3YWM2YTAwNjM1MmFiNTJmZmZmZmZmZjAzMzFlNTg5MDIwMDAwMDAwMDA3NjNhYzUzNjM2MzUyYWJiOGIzY2EwMDAwMDAwMDAwMDE2MzdhMWQyNjA0MDAwMDAwMDAwOTUzNTI2M2FjNmE1MzUyYWI2NTVhZTM0YTM5IiwgIjZhNjVhYiIsIDIsIDIxNDI3Mjg1MTcsICI0YTM0MTVlYjE2NzdhZTRlMGM5Mzk2NDRhNGNmZDVkYzYyOTk3ODBiNTVjZDBkYzczNTk2NzA1N2I2YjE1MjZhIl0sCglbImE1OTQ4NGI1MDFlYjUwMTE0YmUwZmM3OWU3MmFiOWJjOWY0YTVmN2FjZGYyNzRhNTZkNmI2ODY4NGViNjhjZjhiMDdlYzVkMWMyMDAwMDAwMDAwNzY1YWJhYjAwYWIwMDYzOWUwOWFhOTQwMTQxZTM1MzAyMDAwMDAwMDAwNDY1MDBhYzY1MDAwMDAwMDAiLCAiMDA1MTY1NjVhYiIsIDAsIC0xNTYxNjIyNDA1LCAiZDYwYmJhZGQyY2MwNjc0MTAwYmFhMDhkMGUwNDkzZWU0MjQ4ZjAzMDRiM2ViNzc4ZGE5NDIwNDFmNTAzYTg5NiJdLAoJWyI1M2RjMWE4ODA0NjUzMWM3YjU3YTM1ZjRkOWFkZjEwMWQwNjhiZjhkNjNmYmJlZGFmNDc0MWRiYThiYzVlOTJjODcyNWRlZjU3MTAzMDAwMDAwMDQ1MzY1NTI1MWZjZGYxMTZhMjI2YjNlYzI0MDczOWM0Yzc0OTM4MDBlNGVkZmU2NzI3NTIzNGUzNzFhMjI3NzIxZWFjNDNkM2Q5ZWNhZjFiNTAzMDAwMDAwMDNhYzAwNTJmZmZmZmZmZjJjOTI3OWZmZWVhNDcxOGQxNjdlOTQ5OWJkMDY3NjAwNzE1YzE0NDg0ZTM3M2VmOTNhZTRhMzFkMmY1NjcxYWIwMDAwMDAwMDA5NTE2NTUzYWM2MzZhNmE2NTAwMTk3Nzc1MmVlYmE5NWE4ZjE2Yjg4YzU3MWE0NTljMmYyYTIwNGUyM2Q0OGNjNzA5MGU0ZjRjYzM1ODQ2Y2E3ZmMwYTQ1NWNlMDAwMDAwMDAwNTUxNjVhYzAwNjMxODgxNDNmODAyMDU5NzI5MDIwMDAwMDAwMDA3NjVhYzYzYWM1MTYzNTNjN2I2YTUwMDAwMDAwMDAwMDM2YTUxMDAwMDAwMDAwMCIsICI2NTUzNTE1MzZhIiwgMCwgMTAzODA2Nzg4LCAiYjI3NjU4NGQzNTE0ZTViNGUwNTgxNjdjNDFkYzAyOTE1YjlkOTdmNjc5NTkzNmE1MWY0MGU4OTRlZDg1MDhiYyJdLAoJWyI1M2Y4OTU5ZjAxZGRiMzZhZmRjZDIwMTY3ZWRjYmI3NWE2M2QxODY1NGZkY2YxMGJjMDAwNGM3NjFhYjQ1MGZlMjM2ZDc5Y2IyNzAyMDAwMDAwMDY1MTUxNjUwMDYzNjUzNDM1MDAzYTAzM2E1ZTM0MDUwMDAwMDAwMDA5YWM1MjUxNmE2MzAwMDA1MTZhYjg2ZGIzMDMwMDAwMDAwMDAyMDA2MzQ0YWMwOTA1MDAwMDAwMDAwNDYzNjNhYjAwZjM2NDQ1MzciLCAiNTI2M2FiYWI2M2FjNjU2MzUzIiwgMCwgLTIxODUxMzU1MywgImYxZjJhNDg5NjgyZTQyYTZmYzIwMDI1ZGZjODk1ODRkMTdmMTUwYjJkN2FlM2RkZWRkMmJmNDNkNWUyNGYzN2YiXSwKCVsiNWEwNmNiNDYwMmRjZmM4NWY0OWI4ZDE0NTEzZjMzYzQ4ZjY3MTQ2ZjJlZTQ0OTU5YmJjYTA5Mjc4OGU2ODIzYjI3MTlmMzE2MGIwMjAwMDAwMDAxYWIzYzAxM2YyNTE4MDM1YjllYTYzNWY5YTFjNzRlYzFhM2ZiNzQ5NmExNjBmNDZhYWUyZTA5YmZjNWNkNTExMWEwZjIwOTY5ZTAwMzAwMDAwMDAxNTE1OGM4OWFiNzA0OWYyMGQ2MDEwMDAwMDAwMDA4YWM2YTUyYWJhYzUzNTE1MzQ5NzY1ZTAwMDAwMDAwMDAwMzAwYWI2MzgyOTI2MzAxMDAwMDAwMDAwNDUzNTFhYjAwODZkYTA5MDEwMDAwMDAwMDA2NjU2YTYzNjU1MjUzMDAwMDAwMDAiLCAiNTI2YTYzIiwgMSwgMTUwMjkzNjU4NiwgImJkZmFmZjhhNGU3NzUzNzljNWRjMjZlMDI0OTY4ZWZhODA1ZjkyM2RlNTNmYTgyNzJkZDUzZWM1ODJhZmEwYzUiXSwKCVsiY2E5ZDg0ZmEwMTI5MDExZTFiZjI3ZDdjYjcxODE5NjUwYjU5ZmIyOTJiMDUzZDYyNWM2ZjAyYjAzMzkyNDliNDk4ZmY3ZmQ0YjYwMTAwMDAwMDAyNTM1MmZmZmZmZmZmMDMyMTczYTAwNDAwMDAwMDAwMDg1MjUyNTNhYmFiNTE1MjYzOTQ3M2JiMDMwMDAwMDAwMDA5MDA1MTUzNTI2YTUzNTM1MTUxZDA4NWJkMDAwMDAwMDAwMDA4NmE1MzY1YWI1MTY1NjU1MzAwMDAwMDAwIiwgIjAwNTE1MmFjNTEiLCAwLCA1ODAzNTM0NDUsICJjNjI5ZDkzYjAyMDM3ZjQwYWExMTBlNDZkOTAzZWRiMzQxMDdmNjQ4MDZhYTBjNDE4ZDQzNTkyNmZlZWY2OGI4Il0sCglbImUzY2RiZmI0MDE0ZDkwYWU2YTQ0MDFlODVmN2FjNzE3YWRjMmMwMzU4NThiZjZmZjQ4OTc5ZGQzOTlkMTU1YmNlMWYxNTBkYWVhMDMwMDAwMDAwMmFjNTFhNjdhMGQzOTAxN2Y2YzcxMDQwMDAwMDAwMDA1NTM1MjAwNTM1MjAwMDAwMDAwIiwgIiIsIDAsIC0xODk5OTUwOTExLCAiYzFjN2RmODIwNmU2NjFkNTkzZjY0NTVkYjFkNjFhMzY0YTI0OTQwN2Y4OGU5OWVjYWQwNTM0NmU0OTViMzhkNyJdLAoJWyJiMmI2YjlhYjAyODNkOWQ3M2VlYWUzZDg0N2Y0MTQzOWNkODgyNzljMTY2YWE4MDVlNDRmODI0M2FkZWIzYjA5ZTU4NGVmYjFkZjAwMDAwMDAwMDI2MzAwZmZmZmZmZmY3ZGZlNjUzYmQ2N2NhMDk0ZjhkYWI1MTAwN2M2YWRhY2VkMDlkZTJhZjc0NWUxNzViOTcxNGNhMWY1YzY4ZDA1MDAwMDAwMDAwM2FjNjUwMGFhOGU1OTY5MDNmZDNmMzIwNDAwMDAwMDAwMDU1M2FjNmE2YTUzM2EyZTIxMDUwMDAwMDAwMDA3NTI1M2FjYWJhYjUyNjM5MmQwZWUwMjAwMDAwMDAwMDg1MjAwNjU2MzUyMDBhYjUyMDAwMDAwMDAiLCAiNjVhY2FjYWM2NTAwNTM2NSIsIDAsIDI4Mjk4NTUzLCAiMzljMmFhYTI0OTYyMTJiM2FiMTIwYWI3ZDdmMzdjNWU4NTJiZmUzOGQyMGY1MjI2NDEzYTIyNjg2NjNlZWFlOCJdLAoJWyJmMzBjNWMzZDAxYTZlZGI5ZTEwZmFmYWY3ZTg1ZGIxNGU3ZmVjNTU4YjlkY2E0YTgwYjA1ZDdjM2EyOTQ0ZDI4MmM1MDE4ZjQ2ODAyMDAwMDAwMDMwMDUyNjNmZmZmZmZmZjA0YWFjMzUzMDMwMDAwMDAwMDAyNjU1MWJjMjQxOTAxMDAwMDAwMDAwOTAwNTE2M2FjYWI2YTUxMDA2NThlNzA4NTA1MDAwMDAwMDAwMGM1ZTRlYzA1MDAwMDAwMDAwNzY1NmE2YTYzNTM2NWFiMmQ4ZTg4ODIiLCAiYWJhYzUzYWIwMDUyNTFhYzUyIiwgMCwgLTQ5MDI4NzU0NiwgIjg3N2UzNDdlYzc0ODc0OTc3NjllMjU4MTE0MjI3NmQxYThkODEzYjY1MmU0NDgzY2Y5Y2M5OTNkMTYzNTQ0MTciXSwKCVsiNDMxNDMzOWUwMWRlNDBmYWFiY2IxYjk3MDI0NWE3ZjE5ZWVkYmMxN2M1MDdkYWM4NmNmOTg2YzI5NzM3MTUwMzVjZjk1NzM2YWUwMjAwMDAwMDA3YWJhYmFiYWJhYmFiNjViZGU2N2I5MDAxNTE1MTBiMDQwMDAwMDAwMDA4NTNhYzAwNjU1MjAwNTM1MzAwMDAwMDAwIiwgIjUyIiwgMCwgMzk5MDcwMDk1LCAiNDc1ODVkYzI1NDY5ZDA0ZmYzYTYwOTM5ZDBhMDM3NzllM2U4MWE0MTFiZjBjYTE4YjkxYmI5MjVlYmQzMDcxOCJdLAoJWyIyZDRjZjRlOTAzMWIzZTE3NWIyZmYxOGNkOTMzMTUxMzc5ZDljZmFjNDcxM2Q4YmQwZTYzYjcwYmQ0YTkyMjc3YWE3YWY5MDFhYjAwMDAwMDAwMDU2NTUxNTM1M2FiZmZmZmZmZmY1NTc2NjZjN2YzYmU5Y2RlY2RhZDQ0YzNkZjIwNmViNjNhMmRhNGVkMWYxNTlkMjExOTM4ODJhOWYwMzQwMDgxMDIwMDAwMDAwOTYzYWI1M2FiNTI1MmFjNjNhYmZmZmZmZmZmOGE4Yzg5N2JkYjg3ZTkzODg2YWFkNWRlZDlkODJhMTMxMDFkNTQ3NjU1NDM4NjM3MzY0NmNhNWUyMzYxMmU0NTAzMDAwMDAwMDkwMDZhNTI2NTUyYWJhYjZhNjM1YWMwM2ZjMDAxOThiYjAyMDQwMDAwMDAwMDA5NTI1MTAwNTI2YTY1NjM2MzZhMWQwNTI4MzQiLCAiYWI1MmFjMDBhY2FjNmEiLCAwLCAtMTQ2OTg4MjQ4MCwgIjA5ZWQ2NTYzYTQ1NDgxNGFiN2UzYjRjMjhkNTZkODc1MTE2MmI3N2RmMTgyNWIzN2JhNjZjNjE0Nzc1MGIyYTMiXSwKCVsiZjA2MzE3MWIwM2UxODMwZmRjMWQ2ODVhMzBhMzc3NTM3MzYzY2NhZmRjNjhiNDJiZjJlM2FjYjkwOGRhYzYxZWUyNGIzNzU5NWMwMjAwMDAwMDA3NjVhYzUxMDBhYjZhYWNmNDQ3YmM4ZTAzN2I4OWQ2Y2FkZDYyZDk2MGNjNDQyZDVjZWQ5MDFkMTg4ODY3YjUxMjJiNDJhODYyOTI5Y2U0NWU3YjYyOGQwMTAwMDAwMDAyNTNhYmEwMDlhMWJhNDJiMDBmMTQ5MGIwYjg1NzA1MjgyMDk3NmM2NzVmMzM1NDkxY2RhODM4ZmI3OTM0ZDVlZWEwMjU3Njg0YTJhMjAyMDAwMDAwMDAxZTgzY2YyNDAxYTdmNzc3MDMwMDAwMDAwMDA4YWI2NTUzNTI2YTUzNTI2YTAwMDAwMDAwIiwgIiIsIDIsIDE5ODQ3OTAzMzIsICJjMTljYWFkYThlNzE1MzVlMjlhODZmYTI5Y2ZkOWI3NGEwYzc0MTIwMDNmYzcyMmExMjEwMDVlNDYxZTAxNjM2Il0sCglbImNmN2JkYzI1MDI0OWUyMmNiZTIzYmFmNmI2NDgzMjhkMzE3NzNlYTBlNzcxYjNiNzZhNDhiNDc0OGQ3ZmJkMzkwZTg4YTAwNGQzMDAwMDAwMDAwM2FjNTM2YTRhYjhjY2UwZTA5NzEzNmM5MGIyMDM3ZjIzMWI3ZmRlMjA2MzAxN2ZhY2Q0MGVkNGU1ODk2ZGE3YWQwMGU5YzcxZGQ3MGFlNjAwMDAwMDAwMDk2YTAwNjM1MTYzNTI1MjUzNjVmZmZmZmZmZjAxYjcxZTNlMDAwMDAwMDAwMDAzMDA1MzZhMDAwMDAwMDAiLCAiIiwgMSwgNTQ2OTcwMTEzLCAiNmE4MTViYTE1NTI3MGFmMTAyMzIyYzg4MmYyNmQyMmRhMTFjNTMzMGE3NTFmNTIwODA3OTM2YjMyMGI5YWY1ZCJdLAoJWyJhYzdhMTI1YTAyNjlkMzVmNWRiZGFiOTk0OGM0ODY3NDYxNmU3NTA3NDEzY2QxMGUxYWNlYmVhZjg1YjM2OWNkOGM4ODMwMWI3YzAzMDAwMDAwMDk2MzY1NmFhYzZhNTMwMDUzYWJmZmZmZmZmZmVkOTRjMzlhNTgyZTFhNDZjZTRjNmJmZmRhMmNjZGIxNmNkYTQ4NWYzYTBkOTRiMDYyMDYwNjZkYTEyYWVjZmUwMTAwMDAwMDA3NTJhYmFiNjM1MzYzNjNlZjcxZGNmYjAyZWUwN2ZhMDQwMDAwMDAwMDAxNmE2OTA4YzgwMjAwMDAwMDAwMDc1MTY1NmE2NTUxYWJhYzY4OGMyYzJkIiwgIjZhNjM1MTUyNjU1MSIsIDAsIDg1ODQwMDY4NCwgIjU1MmZmOTdkNzkyNGY1MWNkYTZkMWI5NGJlNTM0ODMxNTNlZjcyNWNjMGEzYTEwN2FkYmVmMjIwYzc1M2Y5YTYiXSwKCVsiM2ExZjQ1NGEwM2E0NTkxZTQ2Y2YxZjc2MDVhM2ExMzBiNjMxYmY0ZGZkODFiZDI0NDNkYzRmYWMxZTBhMjI0ZTc0MTEyODg0ZmUwMDAwMDAwMDA1NTE2YWFjNmE1M2E4N2U3OGI1NTU0ODYwMWZmYzk0MWY5MWQ3NWVhYjI2M2FhNzljZDQ5OGM4OGMzN2ZkZjI3NWE2NGZlZmY4OWZjMTcxMGVmZTAzMDAwMDAwMDE2YTM5ZDdlZjZmMmE1MmMwMDM3OGI0ZjhmODMwMTg1M2I2MWM1NDc5MmMwZjFjNGUyY2QxOGEwOGNiOTdhNzY2OGNhYTAwOGQ5NzAyMDAwMDAwMDI2NTZhZmZmZmZmZmYwMTc2NDJiMjAxMDAwMDAwMDAwOTZhNjM1MzUyNTNhYmFjNmE2NTI4MjcxOTk4IiwgIjUxIiwgMiwgMTQ1OTU4NTQwMCwgImU5YTdmMjFmYzJkMzhiZTdiZTQ3MDk1ZmJjOGYxYmY4OTIzNjYwYWE0ZDcxZGY2ZDc5N2FlMGJhNWNhNGQ1YjAiXSwKCVsiZjU5MzY2Y2MwMTE0YzJhMThlNmJkMTM0N2VkOTQ3MGYyNTIyMjg0ZTllODM1ZGQ1YzVmN2VmMjQzNjM5ZWJlYTk1ZDliMjMyYjYwMjAwMDAwMDAxNTM0NzRiNjJlYjA0NWMwMDE3MDUwMDAwMDAwMDA5NjM1MmFiNTE2MzUyYWI1MjAwMDM4YTUyMDQwMDAwMDAwMDA4NmFhYjUyNTM2NTZhNjMwMDViOTY4OTA0MDAwMDAwMDAwOTYzNTM2MzUzYWMwMDUzNjM1Mzg3MTA2MDAyMDAwMDAwMDAwMDAwMDAwMDAwIiwgImFiNTI1MjYzMDBhYjUxIiwgMCwgMTgzNDExNjE1MywgImNkZjUxZjZlM2E5ZGMyYmU1YTU5ZWE0YzAwZjVhYWMxZTE0MjZhNTIwMmMzMjVlNmNmMjU2N2QwN2Q4ZDhkZTQiXSwKCVsiNjI2OWUwZmEwMTczZTc2ZTg5NjU3Y2E0OTU5MTNmMWI4NmFmNWI4ZjFjMTU4NmJjZDZjOTYwYWVkZTliYzc1OTcxOGRmZDUwNDQwMDAwMDAwMDAzNTJhYzUzMGUyYzdiZDkwMjE5ODQ5YjAwMDAwMDAwMDAwN2FiMDBhYjZhNTMwMDYzMTlmMjgxMDAwMDAwMDAwMDA3YWIwMDUxNTE2NWFjNTIwMDAwMDAwMCIsICI2YSIsIDAsIC0yMDM5NTY4MzAwLCAiNjIwOTRmOTgyMzRhMDViZjFiOWM3MDc4YzUyNzVlZDA4NTY1Njg1NmZiNWJkZmQxYjQ4MDkwZTg2YjUzZGQ4NSJdLAoJWyJlYjJiYzAwNjA0ODE1YjljZWQxYzYwNDk2MGQ1NGJlZWE0YTNhNzRiNWMwMDM1ZDRhOGI2YmZlYzVkMGM5MTA4ZjE0M2MwZTk5YTAwMDAwMDAwMDBmZmZmZmZmZjIyNjQ1YjZlOGRhNWYxMWQ5MGU1MTMwZmQwYTBkZjhjZjc5ODI5YjI2NDc5NTc0NzFkODgxYzIzNzJjNTI3ZDgwMTAwMDAwMDAyNjNhY2ZmZmZmZmZmMTE3OWRiYWYxNzQwNDEwOWY3MDZhZTI3YWQ3YmE2MWU4NjAzNDZmNjNmMGM4MWNiMjM1ZDJiMDVkMTRmMmMxMDAzMDAwMDAwMDI1MzAwMjY0Y2IyM2FhZmZkYzRkNmZhOGVjMGJiOTRlZmYzYTJlNTBhODM0MThhOGU5NDczYTE2YWFhNGVmOGI4NTU2MjVlZDc3ZWY0MDEwMDAwMDAwM2FjNTFhY2Y4NDE0YWQ0MDRkZDMyODkwMTAwMDAwMDAwMDY1MjUyNjUwMDAwNmFiNjI2MWMwMDAwMDAwMDAwMDI1MjZhNzJhNGM5MDIwMDAwMDAwMDA2YWM1MjY1MDA2NTY1ODZkMmU3MDAwMDAwMDAwMDA2NjU2YWFjMDBhYzUyNzljZDg5MDgiLCAiNTEiLCAxLCAtMzk5Mjc5Mzc5LCAiZDM3NTMyZTdiMmI4ZTdkYjVjN2M1MzQxOTc2MDAzOTdlYmNjMTVhNzUwZTNhZjA3YTNlMmQyZTRmODRiMDI0ZiJdLAoJWyJkYzlmZTZhODAzOGI4NDIwOWJiZGFlNWQ4NDhlOGMwNDA0MzMyMzdmNDE1NDM3NTkyOTA3YWE3OThiZjMwZDlkYmJkZGYwZmY4NTAxMDAwMDAwMDE1M2ZmZmZmZmZmMjMyNjlhN2VhMjlmY2Y3ODhkYjQ4M2I4ZDRjNGIzNTY2OWU1ODI2MDg2NDQyNTllOTUwY2UxNTJiMGZhNmUwNTAwMDAwMDAwMDNhY2FiYWJmZmZmZmZmZjY1ZGU5NDg1Nzg5N2FlOWVhM2FhMGI5MzhiYTZlNWFkZjM3NGQ0ODQ2OTkyMmQyYjM2ZGJiODNkM2I4YzgyNjEwMTAwMDAwMDA0NTJhYzUyMDBmZmZmZmZmZjAyODU2ZTliMDMwMDAwMDAwMDAyNmE1MTk4MGM4ZTAyMDAwMDAwMDAwMzY1YWI2M2QyNjQ4ZGI0IiwgIjAwYWIwMDUxYWM1MjY1NjUiLCAyLCAxNTYyNTgxOTQxLCAiNWNlZjlkOGUxOGEyZDVhNzA0NDhmMTdiNDY1ZDQxMWExOWRhYjc4ZjBkZGYxNjcyZmZkNTE4YjE4OGY1MjQzMyJdLAoJWyJlYmE4YjBkZTA0YWMyNzYyOTNjMjcyZDBkMzYzNmU4MTQwMGIxYWFhNjBkYjVmMTE1NjE0ODA1OTJmOTllNmY2ZmExM2FkMzg3MDAyMDAwMDAwMDcwMDUzYWNhYjUzNjU2M2JlYmIyM2Q2NmZkMTdkOTgyNzFiMTgyMDE5ODY0YTkwZTYwYTU0ZjVhNjE1ZTQwYjY0M2E1NGY4NDA4ZmE4NTEyY2ZhYzkyNzAzMDAwMDAwMDk2M2FjNmE2YWFiYWM2NWFiYWJmZmZmZmZmZjg5MGE3MjE5MmJjMDEyNTUwNTgzMTRmMzc2YmFiMWRjNzJiNWZlYTEwNGMxNTRhMTVkNmZhZWU3NWRmYTVkYmEwMjAwMDAwMDAxMDA1OTJiMzU1OWIwMDg1Mzg3YWM3NTc1YzA1YjI5YjFmMzVkOWEyYzI2YTBjMjc5MDNjYzBmNDNlN2U2ZTM3ZDVhNjBkODMwNWEwMzAwMDAwMDAyNTJhYmZmZmZmZmZmMDEyNjUxOGYwNTAwMDAwMDAwMDAwMDAwMDAwMCIsICIwMDUzMDA2MzUyNTI2MzUzNTEiLCAxLCA2NjQzNDQ3NTYsICIyNmRjMmNiYTRiZDUzMzRlNWMwYjNhNTIwYjQ0Y2MxNjQwYzZiOTIzZDEwZTU3NjA2MmYxMTk3MTcxNzI0MDk3Il0sCglbIjkxYmQwNDA4MDJjOTJmNmZlOTc0MTFiMTU5ZGYyY2Q2MGZiOTU3MTc2NGIwMDFmMzE2NTdmMmQ2MTY5NjQ2Mzc2MDU4NzVjMmE5MDEwMDAwMDAwNTUyNjMwMDZhNjVmZmZmZmZmZjM2NTFkZjM3MjY0NWY1MGNmNGUzMmZkZjZlNjFjNzY2ZTkxMmUxNjMzNWRiMmI0MGM1ZDUyZmU4OWVlZmU3Y2QwMDAwMDAwMDA0MDA2NWFiNjVmZmZmZmZmZjAzY2E4NjI1MDMwMDAwMDAwMDA5YWI1MWFjNjM1MzAwNTJhYjUyYzZiZjE0MDIwMDAwMDAwMDA2YWIwMGFiNTIwMDUxNjdkMjcwMDAwMDAwMDAwMDA3YWI1MzUyNTM1MTYzNmEwMDAwMDAwMCIsICI1MTUxYWI2MzAwNTI1MmFjIiwgMSwgMTk4MzA4NzY2NCwgIjNlNWFhMDIwMDI0OGQ4ZDg2ZWRlM2IzMTVjYTFiODU3MDE4Yjg5MTg0YTRiZDAyM2JkODhhYjEyZTQ5OWY2ZTEiXSwKCVsiMTg1Y2RhMWEwMWVjZjdhOGE4YzI4NDY2NzI1YjYwNDMxNTQ1ZmM3YTMzNjdhYjY4ZTM0ZDQ4NmU4ZWE4NWVlMzEyOGUwZDgzODQwMDAwMDAwMDA0NjVhYzYzYWJlYzg4YjdiYjAzMWM1NmViMDQwMDAwMDAwMDA5NjU2MzZhNTEwMDUyNTIwMDZhN2M3OGQ1MDQwMDAwMDAwMDA3YWNhYzYzYWJhYzUxYWMzMDI0YTQwNTAwMDAwMDAwMDg2MzAwNTI2YTUxYWJhYzUxNDY0YzBlOGMiLCAiMDA2NTUzNTI2NTUxNTM1MiIsIDAsIDE1OTQ1NTg5MTcsICJiNTI4MGI5NjEwYzA2MjVhNjViMzZhOGMyNDAyYTk1MDE5YTdiYmI5ZGQzZGU3N2Y3YzNjYjFkODJjMzI2M2JhIl0sCglbImE5NTMxZjA3MDM0MDkxNjY4YjY1ZmVhOGIxYTc5NzAwZDU4NmFjOWUyZjQyY2EwNDU1YTI2YWJlNDFmOWUxODA1ZDAwOWEwZjU3MDIwMDAwMDAwOTYzNjU1MTYzNjVhYzUyNjNhYjM2MTliYWM2NDNhOWUyOGVlNDc4NTUxMThjZjgwYzNhNzQ1MzFjZGYxOTg4MzVkMjA2ZDBmZTQxODA0ZTMyNWE0ZjlmMTA1ZTAzMDAwMDAwMDE2YTU4ZTNhYjBkNDYzNzVkOTg5OTRkYWYwZmE3YzYwMGQyYmI0NjY5ZTcyNmZjYTBlM2EzZjIxZWEwZDllNzc3Mzk2NzQwMzI4ZjAxMDAwMDAwMDg2MzZhNTM2M2FiNTI2YTUzOGQzZWE3NzAwMzA0Y2I2NjAzMDAwMDAwMDAwNzUxNTE2M2FiNTJhYjUxMDE4NDAzMDUwMDAwMDAwMDA4NTM1MzYzNjU2NWFjMDA1MWQ5Y2ZmNDAyMDAwMDAwMDAwNzUxYWI1MmFiNTM1MmFiZjBlMzYyNTQiLCAiYWI1MzUzYWM1MzY1YWNhYiIsIDIsIDE2MzMxMDE4MzQsICIwNGM5ZWY3MmYzMzY2OGNhNDQ5YzA0MTViZWNmNjJjYzBiOGUwYzc1ZjljODgxMzg1MmQ0MmE1OGFjZjEwN2M4Il0sCglbIjZiNWVjYzc5MDNmZTBiYTM3ZWE1NTFkZjkyYTU5ZTEyYmFkMGEzMDY1ODQ2YmE2OTE3OWE4ZjRhNzQxYTJiNGZjZjY3OWFhYzgxMDIwMDAwMDAwNDUzNTI2MzUyOWEzZDM0MzI5M2I5OWFiNDI1ZTdlZjg1Mjk1NDlkODRmNDgwYmNkOTI0NzJiYWI5NzJlYTM4MGEzMDIxMjhhZTE0ZGZjZDAyMDAwMDAwMDAwMjUxNjNmZmZmZmZmZjI0NjM2ZTQ1NDVjYWI5YmY4NzAwOTExOWI3ZmMzZWM0ZDVlZTllMjA2YjkwZjM1ZDFkZjhhNTYzYjZjZDA5N2EwMTAwMDAwMDA4NTJhYmFjNTMwMDUxNTNhYmM2NDQ2Nzg2MDQwNmU4MzIwMjAwMDAwMDAwMDk1MjYzMDAwMDZhNTNhYzYzNTJhYzEzOTUwMTAwMDAwMDAwMDJhYzUzYjExN2YzMDAwMDAwMDAwMDA4NjM2NTUzNTFhY2FiMDA2NTFlZGYwMjAzMDAwMDAwMDAwOGFiNTFhYzYzNTM1MzUyNTI2MjhlZjcxZCIsICJhYjYzYWI2YTUyYWM1MjY1NjMiLCAyLCAtMTU1OTY5NzYyNiwgIjhmMDdlY2U3ZDY1ZTUwOWYxZTA3ODA1ODRlZjhkMjcxYzFjNjFhMTNiMTAzMzVkNWZhYWZjN2FmYzhiNWI4ZWMiXSwKCVsiOTJjOWZiNzgwMTM4YWJjNDcyZTU4OWQ1YjU5NDg5MzAzZjIzNGFjYzgzOGNhNjZmZmNkZjAxNjQ1MTdhODY3OWJiNjIyYTQyNjcwMjAwMDAwMDAxNTM0NjhlMzczZDA0ZGUwM2ZhMDIwMDAwMDAwMDA5YWMwMDZhNTI2NWFiNTE2MzAwNmFmNjQ5MDUwMDAwMDAwMDA3NTE1MTUzMDA2YTAwNjU4Y2ViNTkwMzAwMDAwMDAwMDFhYzM2YWZhMDAyMDAwMDAwMDAwOWFiNTMwMDYzNTFhYjUxMDAwMDAwMDAwMDAwIiwgIjZhIiwgMCwgMjA1OTM1NzUwMiwgImUyMzU4ZGZiNTE4MzFlZTgxZDdiMGJjNjAyYTY1Mjg3ZDZjZDJkYmZhY2Y1NTEwNmUyYmY1OTdlMjJhNGI1NzMiXSwKCVsiNmY2MjEzODMwMTQzNmYzM2EwMGI4NGEyNmEwNDU3Y2NiZmMwZjgyNDAzMjg4YjljYmFlMzk5ODZiMzQzNTdjYjJmZjliODg5YjMwMjAwMDAwMDA0NTI1MzY1NTMzNWE3ZmY2NzAxYmFjOTk2MDQwMDAwMDAwMDA4NjU1MmFiNjU2MzUyNjM1MjAwMDAwMDAwIiwgIjZhYWM1MSIsIDAsIDE0NDQ0MTQyMTEsICI1MDJhMjQzNWZkMDI4OThkMmZmM2FiMDhhM2MxOTA3ODQxNGIzMmVjOWI3M2Q2NGE5NDQ4MzRlZmM5ZGFlMTBjIl0sCglbIjk5ODExNDNhMDQwYTg4YzI0ODRhYzNhYmUwNTM4NDllNzJkMDQ4NjIxMjBmNDI0ZjM3Mzc1MzE2MTk5N2RkNDA1MDVkY2I0NzgzMDMwMDAwMDAwNzAwNTM2MzY1NTM2NTY1YTJlMTBkYTNmNGIxYzFhZDA0OWQ5N2IzM2YwYWUwZWE0OGM1ZDdjMzBjYzg4MTBlMTQ0YWQ5M2JlOTc3ODk3MDZhNWVhZDE4MDEwMDAwMDAwMzYzNmEwMGZmZmZmZmZmYmRjYmFjODRjNGJjYzg3ZjAzZDBhZDgzZmJlMTNiMzY5ZDdlNDJkZGIzYWVjZjQwODcwYTM3ZTgxNGFkOGJiNTAxMDAwMDAwMDk2MzUzNmE1MTAwNjM2YTUzYWJmZmZmZmZmZjg4MzYwOTkwNWE4MGUzNDIwMjEwMTU0NGY2OWI1OGEwYjQ1NzZmYjczOTFlMTJhNzY5Zjg5MGVlZjkwZmZiNzIwMjAwMDAwMDA2NTE2NTYzNTI1MjZhZmZmZmZmZmYwNDI0MzY2MDAwMDAwMDAwMDAwNGFiNTM1MjUzNGE5Y2UwMDEwMDAwMDAwMDA4NjM2NTYzNjNhYjZhNTM2NTJkZjE5ZDAzMDAwMDAwMDAwM2FjNjVhY2VkYzUxNzAwMDAwMDAwMDAwMDAwMDAwMDAwIiwgImFjNjMwMGFjYWMiLCAyLCAyOTM2NzIzODgsICI3YmE5OWIyODljMDQ3MThhNzI4M2YxNTBkODMxMTc1ZWQ2MzAzMDgxZTE5MWEwNjA4ZWE4MWY3ODkyNmM1YmRmIl0sCglbImEyYmI2MzBiMDE5ODliYzVkNjQzZjJkYTRmYjliNTVjMGNkZjg0NmJhMDZkMWRiZTM3Mjg5MzAyNGRiYmU1YjliOGExOTAwYWY4MDIwMDAwMDAwNTUyNjVhYzYzYWNhN2E2OGQyZjA0OTE2Yzc0MDEwMDAwMDAwMDAzYWJhYzAwNzA3N2YwMDQwMDAwMDAwMDAxMDA3ZDQxMjcwMTAwMDAwMDAwMDVhYzUxNmFhYzAwMGYzMWU4MDMwMDAwMDAwMDAwNTcxMDc5YzkiLCAiNjVhYjAwNTFhYyIsIDAsIC0xMTAzNjI3NjkzLCAiOTJkNTNiNDM5MDI2MmU2YjI4OGU4YTMyZTBjZmMzNmNkNWFkZmRmYWJmZTk2YzdiZmQ0YTE5ZDY1ZTIzMzc2MSJdLAoJWyI0OWY3ZDBiNjAzN2JiYTI3NmU5MTBhZDNjZDc0OTY2YzdiM2JjMTk3ZmZiY2ZlZmQ2MTA4ZDY1ODcwMDY5NDdlOTc3ODk4MzVlYTAzMDAwMDAwMDg1MjZhNTIwMDZhNjUwMDUzZmZmZmZmZmY4ZDdiNmMwN2NkMTBmNGM0MDEwZWFjNzk0NmY2MWFmZjdmYjVmMzkyMGJkZjM0NjdlOTM5ZTU4YTFkNDEwMGFiMDMwMDAwMDAwNzZhYWM2M2FjNTM1MzUxZmZmZmZmZmY4ZjQ4YzNiYTJkNTJhZDY3ZmJjZGM5MGQ4Nzc4ZjNjOGEzODk0ZTNjMzViOTczMDU2MmQ3MTc2YjgxYWYyM2M4MDEwMDAwMDAwM2FiNTI2NWZmZmZmZmZmMDMwMWUzZWYwMzAwMDAwMDAwMDQ2YTUyNTM1M2U4OTlhYzA1MDAwMDAwMDAwNzUxNTNhYjZhNjVhYmFjMjU5YmVhMDQwMDAwMDAwMDAwN2I3Mzk5NzIiLCAiNTM1MTZhYWNhYzZhYWMiLCAxLCA5NTU0MDM1NTcsICI1ZDM2NmE3ZjQzNDZhZTE4YWViN2M5ZmM0ZGFiNWFmNzExNzMxODRhYTIwZWQyMmZjYjRlYTg1MTFhZDI1NDQ5Il0sCglbIjU4YTRmZWQ4MDFmYmQ4ZDkyZGI5ZGZjYjJlMjZiNmZmMTBiMTIwMjA0MjQzZmVlOTU0ZDdkY2IzYjRiOWI1MzM4MGU3YmI4ZmI2MDEwMDAwMDAwMzAwNjM1MWZmZmZmZmZmMDJhMDc5NWIwNTAwMDAwMDAwMDY1MzYzNTFhYzZhYWMyNzE4ZDAwMjAwMDAwMDAwMDc1MTUxYWNhYmFjNTE1MzU0ZDIxYmExIiwgIjAwNTM2MzUxNTM1MSIsIDAsIC0xMzIyNDMwNjY1LCAiYmJlZTk0MWJiYWQ5NTA0MjRiZjQwZTM2MjM0NTdkYjQ3ZjYwZWQyOWRlYWE0M2M5OWRlYzcwMjMxN2NiMzMyNiJdLAoJWyIzMjc2NWEwYjAyZTQ1NTc5M2Q5Y2U1MzBlOWY2YTQ0YmNiYzYxMmU4OTNhODc1YjVkYTYxZDgyMmRjNTZkODI0NTE2NmMzOThiNDAzMDAwMDAwMDg1MzUzYWJhYzYzMDAwMDZhNmJkZWUyYTc4ZDBkMGI2YTVlYTY2NmVlZDcwYjliZmVhOTlkMWQ2MTJiYTM4NzhmNjE1YzRkYTEwZDRhNTIxY2JhMjcxNTUwMDIwMDAwMDAwMzUzNjNhYmZmZmZmZmZmMDQzY2Q0MjQwMTAwMDAwMDAwMDU1MTY1NmE1MzY1MzY4NTMyMDEwMDAwMDAwMDAzMDAwMDUxMTg4MWJjMDUwMDAwMDAwMDA2NTE2NWFiYWI2MzZhMjAxNjlmMDEwMDAwMDAwMDA3YWNhYjY1NmFhYzYzYWNkYjA3MDZhOCIsICI2NWFjNTNhYjUzIiwgMCwgMTkzNjQ5OTE3NiwgIjVjNWE5YzNhNWRlN2RjN2E4MmJjMTcxYzlkMzUwNTkxM2I4YmNjNDUwYmM4YjJkMTE3NzJjMWExZDc4MTIxMGIiXSwKCVsiMTdmYWQwZDMwM2RhMGQ3NjRmZWRmOWYyODg3YTkxZWE2MjUzMzFiMjg3MDQ5NDBmNDFlMzlhZGYzOTAzZDhlNzU2ODNlZjZkNDYwMjAwMDAwMDAxNTFmZmZmZmZmZmZmMzc2ZWVhNGU4ODBiY2YwZjAzZDMzOTk5MTA0YWFmZWQyYjNkYWY0OTA3OTUwYmIwNjQ5NmFmNmI1MTcyMGEwMjAwMDAwMDA5MDA2MzZhNjM1MjUyNTM1MjUxOTY1MjE2ODRmM2IwODQ5N2JhZDJjNjYwYjAwYjQzYTZhNTE3ZWRjNTgyMTc4NzZlYjVlNDc4YWEzYjVmZGEwZjI5ZWUxYmVhMDAwMDAwMDAwNDZhYWNhYjZhZmZmZmZmZmYwM2RkZThlMjA1MDAwMDAwMDAwN2FjNTM2NWFjNTE1MTZhMTQ3NzJlMDAwMDAwMDAwMDA1NjMwMDAwYWJhY2JiYjM2MDAxMDAwMDAwMDAwNmFiNTI1MWFiNjU2YTUwZjE4MGYwIiwgIjAwNTMiLCAwLCAtMTA0MzcwMTI1MSwgImEzYmRmODc3MWM4OTkwOTcxYmZmOWI0ZTdkNTliNzgyOWIwNjdlZDBiOGQzYWMxZWMyMDM0Mjk4MTEzODQ2NjgiXSwKCVsiMjM2YzMyODUwMzAwMDQ1ZTI5MmM4NGVkZTJiOWFiNTczM2JhMDgzMTVhMmJiMDlhYjIzNGM0YjRlODg5NDgwOGVkYmRhYzBkM2IwMjAwMDAwMDA2NTM2MzUzNjNhYmFjZmZmZmZmZmZkM2Y2OTZiYjMxZmRkMThhNzJmM2ZjMmJiOWFlNTRiNDE2YTI1M2ZjMzdjMWEwZjAxODBiNTJkMzViYWQ0OTQ0MDEwMDAwMDAwNDY1MDA1M2FiZmZmZmZmZmZhODVjNzVhMjQwNmQ4MmE5M2IxMmU1NTViNjY2NDFjMTg5NmE0ZTgzYWU0MWVmMTAzODIxODMxMWUzOGFjZTA2MDIwMDAwMDAwNmFiYWIwMDZhNTFhYzEwNGI1ZTY3MDFlMjg0MmMwNDAwMDAwMDAwMDgwMDYzMDA1MWFjMDAwMGFiMDAwMDAwMDAiLCAiYWI2M2FjNmE1MTZhIiwgMSwgLTE3MDk4ODc1MjQsICI4YzI5ZWE4ZWY2MGM1YTkyN2ZjY2RiYThlYTM4NWRiNmI2Yjg0ZDk4ZTg5MWRiNDVmNWQ0ZWUzMTQ4ZDNmNWE3Il0sCglbImI3OGQ1ZmQ2MDEzNDVmMzEwMGFmNDk0Y2RmNDQ3ZTdkNDA3NjE3OWY5NDAwMzViMGViZTg5NjI1ODdkNGQwYzljNmM5ZmMzNGVlMDMwMDAwMDAwMzUxNmE2YWZmZmZmZmZmMDNkYzVjODkwMTAwMDAwMDAwMDg1MzUzYWM1M2FjNmE1MjUzNGFjOTQxMDQwMDAwMDAwMDA3YWM2MzY1NmE1MWFiNTFkNDI2NmIwMTAwMDAwMDAwMDM2YWFjYWM3MDczMWYyZCIsICIwMDUzNTFhYjAwNTMiLCAwLCAtMTc4OTA3MTI2NSwgImQ1ZjFjMWNiMzU5NTZhNTcxMWQ2N2JmYjRjZWRiYzY3ZTc3YzA4OWI5MTJkNjg4YWQ0NDBmZjczNWFkYjM5MGQiXSwKCVsiNWEyMjU3ZGYwMzU1NDU1MGI3NzRlNjc3ZjM0ODkzOWIzN2Y4ZTc2NWEyMTJlNTY2Y2U2YjYwYjRlYThmZWQ0Yzk1MDRiN2Y3ZDEwMDAwMDAwMDA2NTM2NTUyNjVhYjUyNThiNjdiYjkzMWRmMTViMDQxMTc3Y2Y5NTk5YjA2MDQxNjBiNzllMzBmM2Q3YTU5NGU3ODI2YmFlMmMyOTcwMGY2ZDhmOGY0MDMwMDAwMDAwNTUxNTMwMGFjNmExNTljZjg4MDhhNDFmNTA0ZWI1YzJlMGU4YTkyNzlmMzgwMWE1YjVkN2JjNmE3MDUxNWZiZjFjNWVkYzg3NWJiNGM5ZmZhYzUwMDAwMDAwMDA1MDA2MzUxMDA1MmZmZmZmZmZmMDQyMmE5MDEwNTAwMDAwMDAwMDk2NTAwNmE2NTAwMDA1MTZhMDA2NDE3ZDIwMjAwMDAwMDAwMDY1MjYzNjNhYjAwNTI0ZDk2OWQwMTAwMDAwMDAwMDM1MTUzYWNjNGYwNzcwNDAwMDAwMDAwMDVhYzUyMDA2MzY1MDAwMDAwMDAiLCAiNmE1MiIsIDEsIC0xNDgyNDYzNDY0LCAiMzdiNzk0YjA1ZDA2ODdjOWI5M2Q1OTE3YWIwNjhmNmIyZjBlMzg0MDZmZjA0ZTcxNTRkMTA0ZmMxZmIxNGNkYyJdLAoJWyJlMDAzMmFkNjAxMjY5MTU0YjNmYTcyZDM4ODhhMzE1MWRhMGFlZDMyZmIyZTFhMTViM2FlN2JlZTU3YzNkZGNmZmZmNzZhMTMyMTAxMDAwMDAwMDEwMDExMGQ5M2FlMDNmNWJkMDgwMTAwMDAwMDAwMDc1MjYzNTE2YTY1NTEwMDI4NzFlNjAxMDAwMDAwMDAwNDZhMDA1MjUyZWFhNzUzMDQwMDAwMDAwMDA0YWI2YWFiNTI2ZTMyNWM3MSIsICI2MzAwNTIiLCAwLCAtMTg1Nzg3MzAxOCwgImVhMTE3MzQ4ZTk0ZGU4NjM4MWJiOGFkMWM3ZjkzYjhjNjIzZjAyNzIxMDQzNDE3MDFiYjU0ZTZjYjQzMzU5NmMiXSwKCVsiMDE0YjJhNTMwNGQ0Njc2NDgxN2FjYTE4MGRjYTUwZjVhYjI1ZjJlMGQ1NzQ5ZjIxYmI3NGEyZjhiZjZiOGI3YjNmYTgxODljYjcwMzAwMDAwMDA5NjVhYzUxNjVhYjZhNTFhYzYzNjBlY2Q5MWU4YWJjN2U3MDBhNGMzNmMxYTcwOGE0OTRjOTRiYjIwY2JlNjk1YzQwODU0MzE0NjU2NmFiMjJiZTQzYmVhZTkxMDMwMDAwMDAwNDUxNjNhYjAwZmZmZmZmZmZmZmE0ODA2NjAxMjgyOTYyOWE5ZWMwNmNjZDQ5MDVhMDVkZjBlMmI3NDViOTY2ZjZhMjY5YzljOGUxMzQ1MWZjMDAwMDAwMDAwMjY1NjVmZmZmZmZmZmM0MGNjYWRjMjFlNjVmZThhNGIxZTA3MmY0OTk0NzM4Y2NhZjQ4ODFhZTZmZWRlMmEyODQ0ZDdkYTRkMTk5YWIwMjAwMDAwMDA2NTE1MmFiNTM2YWFiZmZmZmZmZmYwMWI2ZTA1NDAzMDAwMDAwMDAwNDUxNTM1MmFiM2UwNjM0MzIiLCAiIiwgMCwgMTA1NjQ1OTkxNiwgImE3YWZmNDhmM2I4YWViN2E0YmZlMmU2MDE3YzgwYTg0MTY4NDg3YTY5YjY5ZTQ2NjgxZTBkMGQ4ZTYzYTg0YjYiXSwKCVsiYzRlZjA0YzEwM2M1ZGRlNjU0MTBmY2VkMTliZjZhNTY5NTQ5ZWNmMDFjZWIwZGI0ODY3ZGIxMWYyYTNhM2VlZjAzMjBjOWU4ZTAwMTAwMDAwMDA4NTEwMDUzNmE1MzUxNmFhYmZmZmZmZmZmMmEwMzU0ZmE1YmQ5NmYxZTI4ODM1ZmZlMzBmNTJlMTliZDdkNTE1MGM2ODdkMjU1MDIxYTZiZWMwM2NmNGNmZDAzMDAwMDAwMDU2YTAwNjMwMDUxNDkwMGM1YjAxZDNkNGFlMWI5NzM3MGZmMTE1NWI5ZGQwNTEwZTE5OGQyNjZjMzU2ZDYxNjgxMDljNTRjMTFiNGMyODNkY2EwMDMwMDAwMDAwMmFiYWJmZmZmZmZmZjAyZTE5ZTMwMDMwMDAwMDAwMDA0NTE2NTUzNTFmYTVjMDAwMzAwMDAwMDAwMDE2M2VmMWZjNjRiIiwgIjUxNjM2YTUxYWI2MzAwNjUiLCAxLCAtMTc1NDcwOTE3NywgIjBhMjgxMTcyZDMwNmI2YTMyZTE2NmU2ZmIyYTJjYzUyYzUwNWM1ZDYwZWE0NDhlOWJhNzAyOWFhMGEyMjExZTEiXSwKCVsiMjkwODNmZTAwMzk4YmQyYmI3NmNlYjE3OGYyMmM1MWI0OWI1YzAyOTMzNmE1MTM1NzQ0MmVkMWJhYzM1YjY3ZTFhZTZmZGYxMzEwMDAwMDAwMDA2NmE2NTAwYWNhYjUxZmZmZmZmZmZlNGNhNDVjOWRjODRmZDJjOWM0N2M3MjgxNTc1YzJiYTRiZjMzYjBiNDVjN2VjYThhMmE0ODNmOWUzZWJlNGIzMDEwMDAwMDAwMjAwYWJmZmZmZmZmZmRmNDdhZDJiOGMyNjNmYWZiMWUzOTA4MTU4YjE4MTQ2MzU3YzNhNmUwODMyZjcxOGNkNDY0NTE4YTIxOWQxODMwMzAwMDAwMDA5NjM1MmFjNjU2MzUxYWMwMDUyZGFkZGZiM2IwMjMxYzM2ZjAwMDAwMDAwMDAwNDAwNTI2YTUyNzVjN2UwMDIwMDAwMDAwMDAxYWIwMDAwMDAwMCIsICJhY2FiNTM2YWFjNTIiLCAyLCAzMDA4MDIzODYsICI4MmViYzA3YjE2Y2ZmMDA3N2U5YzFhMjc5MzczMTg1YjM0OTRlMzlkMDhmZDMxOTRhYWU2YTRhMDE5Mzc3NTA5Il0sCglbIjEyMDFhYjVkMDRmODlmMDdjMDA3N2FiZDAwOTc2MmU1OWRiNGJiMGQ4NjA0ODM4M2JhOWUxZGFkMmM5YzJhZDk2ZWY2NjBlNmQwMDIwMDAwMDAwN2FiNmE2NWFjNTIwMDY1MjQ2NmZhNTE0M2FiMTNkNTU4ODZiNmNkYzNkMGYyMjZmNDdlYzFjMzAyMGMxYzZlMzI2MDJjZDM0MjhhY2VhYjU0NGVmNDNlMDAwMDAwMDAwODZhNmE2YTUyNmE2YTUyNjNmZmZmZmZmZmQ1YmUwYjBiZTEzYWI3NTAwMTI0Mzc0OWM4MzlkNzc5NzE2ZjQ2Njg3ZTJlOTk3OGJkNmM5ZTJmZTQ1N2VlNDgwMjAwMDAwMDAzNjVhYmFiMWUxYmFjMGY3MjAwNWNmNjM4ZjcxYTNkZjJlM2JiYzBmYTM1YmYwMGYzMmQ5YzdkYzljMzlhNWU4OTA5ZjdkNTMxNzBjOGFlMDIwMDAwMDAwOGFiNmE1MTUxNjM2MzUxNmFmZmZmZmZmZjAyZjBhNjIxMDUwMDAwMDAwMDAzNjMwMGFjODY3MzU2MDEwMDAwMDAwMDA5YWNhYjY1YWM2MzUzNTM2YTY1OTM1NmQzNjciLCAiYWM1MzUzNTI1MiIsIDAsIDkxNzU0MzMzOCwgIjQxOGFjYzE1NmMyYmM3NmE1ZDdiYWE1OGRiMjlmMWI0Y2Y2YzI2NmM5MjIyZWQxNjdlZjViNGQ0N2YwZTBmNDEiXSwKCVsiMzQ0ZmExMWUwMWMxOWM0ZGQyMzJjNzc3NDJmMGRkMGFlYjM2OTVmMThmNzZkYTYyNzYyODc0MWQwZWUzNjJiMGVhMWZiM2EyMTgwMjAwMDAwMDA3NjM1MTUxMDA1MTAwNTI5YmFiMjVhZjAxOTM3YzFmMDUwMDAwMDAwMDA1NTE1M2FiNTM2NTZlNzYzMGFmIiwgIjYzNTEwMDUxNjNhYzUxIiwgMCwgLTYyOTczMjEyNSwgIjIyOGNhNTJhMGEzNzZmZTA1MjdhNjFjZmE4ZGE2ZDdiYWY4NzQ4NmJiYTkyZDQ5ZGZkMzg5OWNhYzhhMTAzNGYiXSwKCVsiYjJmZGExOTUwMTkxMzU4YTJiODU1ZjU2MjZhMGViYzgzMGFiNjI1YmVhNzQ4MGYwOWY5Y2QzYjM4ODEwMmUzNWMwZjMwMzEyNGMwMzAwMDAwMDA1NjVhYzY1YWI1M2ZmZmZmZmZmMDNmOWM1ZWMwNDAwMDAwMDAwMDc2NWFiNTE1MTY1NTE2NTBlMmI5ZjA1MDAwMDAwMDAwNDUzNjU1MjUyODRlOGY2MDQwMDAwMDAwMDAxYWMwMDAwMDAwMCIsICJhYzUxNjU1MjUzIiwgMCwgMTQzMzAyNzYzMiwgImQyZmE3ZTEzYzM0Y2VjZGE1MTA1MTU2YmQyNDI0YzliODRlZTBhMDcxNjI2NDJiMDcwNmY4MzI0M2ZmODExYTgiXSwKCVsiYTRhNmJiZDIwMWFhNWQ4ODI5NTdhYzk0ZjJjNzRkNDc0N2FlMzJkNjlmZGM3NjVhZGQ0YWNjMmI2OGFiZDFiZGI4ZWUzMzNkNmUwMzAwMDAwMDA4NTE2YTY1NTI1MTUxNTJhYmZmZmZmZmZmMDJjMzUzY2IwNDAwMDAwMDAwMDdhYzYzNTFhYjUxNTM2NTg4YmQzMjA1MDAwMDAwMDAwNjY1NTI1MjUyNTNhYzAwMDAwMDAwIiwgIiIsIDAsIDE3MDIwNjA0NTksICI0OTlkYTdkNzQwMzIzODhmODIwNjQ1MTkxYWMzYzhkMjBmOWRiYThlOGRlZDdmYTNhNTQwMWVhMjk0MjM5MmExIl0sCglbIjU4NGU4ZDZjMDM1YTZiMmY5ZGFjMjc5MWI5ODBhNDg1OTk0YmYzOGU4NzZkOWRkYTliNzdhZDE1NmVlZTAyZmEzOWUxOTIyNGE2MDMwMDAwMDAwM2FiNjM2NTI5ZGIzMjZjYzg2ODZhMzM5Yjc5YWI2YjZlODI3OTRhMThlMGFhYmMxOWQ5YWQxM2YzMWRlZTlkN2FhZDhlZmYzODI4ODU4ODAyMDAwMDAwMDQ1MjUzMDA1MmZmZmZmZmZmMDlhNDFmMDc3NTVjMTZjZWExYzdlMTkzYzc2NTgwN2QxOGNhZGRkY2E2ZWMxYzJlZDdmNWRjZGNhOTllOTBlODAwMDAwMDAwMDFhY2ZmZmZmZmZmMDFjYmE2MjMwNTAwMDAwMDAwMDQ1MWFjNjNhY2NjZGYxZjY3IiwgImFiNTM2YTYzNjMiLCAyLCAtMjczOTM0NjEsICIxMTI1NjQ1YjQ5MjAyZGNhMmRmMmQ3NmRhZTUxODc3Mzg3OTAzYTA5NmE5ZDNmNjZiNWFjODBlMDQyYzk1Nzg4Il0sCglbIjgzYTU4M2QyMDRkOTI2ZjJlZTU4N2E4M2RkNTI2Y2YxZTI1YTQ0YmI2NjhlNDUzNzA3OThmOTFhMjkwN2QxODRmN2NkZGNiYmM3MDMwMDAwMDAwNzAwYWI2NTY1NTM2YTUzOWY3MWQzNzc2MzAwZGZmZGZhMGNkZDFjMzc4NGM5YTFmNzczZTM0MDQxY2E0MDAxOTM2MTIzNDFhOWM0MmRmNjRlM2Y1NTBlMDEwMDAwMDAwNTAwNTI1MTUyNTFmZmZmZmZmZjUyZGFiMjAzNGFiMDY0ODU1M2ExYmI4ZmM0ZTkyNGIyYzg5ZWQ5N2MxOGRmYzhhNjNlMjQ4YjQ1NDAzNTU2NGIwMTAwMDAwMDAxNTEzOWFiNTQ3MDhjN2Q0ZDJjMjg4NjI5MGYwOGE1MjIxY2Y2OTU5MmE4MTBmZDE5NzlkN2I2M2QzNWMyNzE5NjFlNzEwNDI0ZmQwMzAwMDAwMDA1YWM2NWFjNTI1MWZmZmZmZmZmMDExNjhmN2MwMzAwMDAwMDAwMDBhODVlNWZiMCIsICI2YTUzNjM1MzY1NmEwMCIsIDAsIDE3OTU5NTM0NSwgIjUzNTBhMzFhYzk1NGEwYjQ5OTMxMjM5ZDBlY2FmYmYzNGQwMzVhNTM3ZmQwYzU0NTgxNmI4ZmRjMzU1ZTk5NjEiXSwKCVsiZmZkMzVkNTEwNDJmMjkwMTA4ZmNiNmVhNDlhNTYwYmEwYTY1NjBmOTE4MWRhNzQ1M2E1NWRmZGJkZmU2NzJkYzgwMGIzOWU3MzIwMjAwMDAwMDA2NjMwMDY1NTE2YTY1ZjIxNjZkYjJlMzgyN2Y0NDQ1N2U4NmRkZGZkMjdhOGFmM2ExOTA3NGUyMTYzNDhkYWEwMjA0NzE3ZDYxODI1ZjE5OGVjMDAzMDEwMDAwMDAwNmFiNTFhYmFiMDBhYmZmZmZmZmZmZGY0MTgwN2FkYjdkZmY3ZGI5ZjE0ZDk1ZmQ2ZGM0ZTY1Zjg0MDJjMDAyZDAwOWEzZjFkZGVkZjZmNDg5NWZjODAzMDAwMDAwMDUwMGFiMDA2YTY1YTVhODQ4MzQ1MDUyZjg2MDYyMGFiZDVmY2QwNzQxOTU1NDhjZTNiZDA4MzlmYTlhZDg2NDJlZDgwNjI3YmY0M2EwZDQ3ZGJkMDEwMDAwMDAwNzY1YWIwMDZhNjU2YTUzYjM4Y2RkNjUwMmExODZkYTA1MDAwMDAwMDAwNzY1YWIwMGFiMDA2YTUzNTI3YzBlMDEwMDAwMDAwMDA4NTM2NWFiNTFhY2FjYWM1MjUzNGJkMWIxIiwgIjZhNjM1MjUzYWMwMDAwIiwgMCwgMTA5NTA4MjE0OSwgIjNjMDU0NzNhODE2NjIxYTM2MTNmMGU5MDNmYWExYTFlNDQ4OTFkZDQwODYyYjAyOWU0MWZjNTIwNzc2MzUwZmEiXSwKCVsiNmM5YTRiOTgwMTNjOGYxY2FlMWIxZGY5ZjBmMmRlNTE4ZDBjNTAyMDZhMGFiODcxNjAzYWM2ODIxNTU1MDRjMGUwY2U5NDZmNDYwMTAwMDAwMDAwZmZmZmZmZmYwNGU5MjY2MzA1MDAwMDAwMDAwNzUzNTM1MTAwYWM2YWFjZGVkMzllMDQwMDAwMDAwMDAzNjVhYzZhYjkzY2NkMDEwMDAwMDAwMDAyNTE1Mzk3YmYzZDA1MDAwMDAwMDAwM2FiNjM2MzAwMDAwMDAwIiwgIjYzNTIwMDUyYWM2NTYzNTMiLCAwLCAtMzUyNjMzMTU1LCAiOTM2ZWZmOGNkZmQ3NzFiZTI0MTI0ZGE4N2M3YjI0ZmViNDhkYTdjYmMyYzI1ZmI1YmExM2QxYTIzMjU1ZDkwMiJdLAoJWyJlMDFkYzdmMDAyMWRjMDc5Mjg5MDZiMjk0NmNhM2U5YWM5NWYxNGFkNDAyNjg4NzEwMWUyZDcyMmMyNjk4MmMyN2RjMmI1OWZkYjAwMDAwMDAwMDVhYzUyMDA1MTZhYjVhMzFmZmFkY2JlNzQ5NTdhNWEzZjk3ZDdmMTQ3NWNjNjQyM2ZjNmRiYzRmOTY0NzFiZDQ0YzcwY2M3MzZlN2RlYzBkMWVhMDIwMDAwMDAwOTUxNjM2YTUyNmE1MmFiYWM1M2ZmZmZmZmZmMDRiYzJlZGQwNTAwMDAwMDAwMDI1MmFiNTI4YzdiMDIwMDAwMDAwMDA5NTJhYzUxNTI2NTAwNTI1MzUzMzI0ODIwMDQwMDAwMDAwMDAyMDA1MzgwYzcxMzAwMDAwMDAwMDAwOTYzMDA2NWFiMDBhYzUyNTI1MjQ1MWJiYjQ4IiwgIjUzYWI2NWFjIiwgMCwgLTU1MjM4NDQxOCwgIjY5YzBiMzBmNGM2MzBhNmM4NzhmZGU2ZWE2Yjc0ZGFlOTRmNGViM2JjZmJkZTJkYzM2NDllMWE5YWRhMDA3NTciXSwKCVsiMDA5MDQ2YTEwMjNmMjY2ZDAxMTM1NTZkNjA0OTMxMzc0ZDc5MzJiNGQ2YTc5NTJkMDhmYmQ5YzliODdjYmQ4M2Y0ZjRjMTc4YjQwMzAwMDAwMDA0NTJhYzUyNjM0NmU3M2I0MzhjNDUxNmM2MGVkZDU0ODgwMjMxMzFmMDdhY2I1ZjllYTE1NDBiM2U4NGRlOTJmNGUzYzQzMjI4OTc4MWVhNDkwMDAwMDAwMDA0NjUwMDY1NTM1N2RmZDZkYTAyYmFlZjkxMDEwMDAwMDAwMDAyNmEwMDdkMTAxNzAzMDAwMDAwMDAwODAwNTE2NTAwYWJhY2FjNTEwMDAwMDAwMCIsICI2YWFiNjU1M2FjIiwgMCwgLTgwMjQ1NjYwNSwgImY4NzU3ZmJiNDQ0OGNhMzRlMGNkNDFiOTk3Njg1YjM3MjM4ZDMzMWU3MDMxNjY1OWE5Y2M5MDg3ZDExNjE2OWQiXSwKCVsiZGY3NmVjMDgwMWEzZmNmM2QxODg2MmM1ZjY4NmI4NzgyNjZkZDUwODNmMTZjZjY1NWZhY2FiODg4YjRjYjMxMjNiM2NlNWRiN2UwMTAwMDAwMDAxMDAxMGU3YWM2YTAyMzNjODM4MDMwMDAwMDAwMDAzNjVhYzUxZmFmMTRhMDQwMDAwMDAwMDA0YWM1MTY1NTEwMDAwMDAwMCIsICI2MzUzYWNhYiIsIDAsIDE1NzA1ODYxLCAiZTdkODczYWEwNzlhMTllYzcxMmIyNjlhMzdkMjY3MGY2MGQ4Y2IzMzRjNGY5N2UyZTNmZDEwZWViOGVlNWY1ZSJdLAoJWyI4MjhmZDNlMDAzMTA4NDA1MWNjZWY5Y2ZkZDk3ZmFlNGQ5Y2M1MGMwZGFlMzZiZDIyYTNmZjMzMjg4MWYxN2U5NzU2YzNlMjg4ZTAyMDAwMDAwMDRhYjUzNTM2Mzk2MWEyY2NjY2FmMDIxOGVjNmExNmJhMGMxZDhiNWU5M2NmZDAyNWM5NWI2ZTcyYmM2MjllYzBhM2Y0N2RhN2E0YzM5NmRhZDAxMDAwMDAwMDI1MzUzZmZmZmZmZmYxOWFkMjg3NDdmYjMyYjRjYWY3YjVkYmQ5YjJkYTVhMjY0YmVkYjZjODZkM2E0ODA1Y2QyOTRhZTUzYTg2YWM0MDIwMDAwMDAwOWFiNTM1MzUzNTFhYjY1NTFhYmZmZmZmZmZmMDRhNDE2NTAwMzAwMDAwMDAwMDU2NTZhYWI2YWFiODMzMWEzMDQwMDAwMDAwMDA3MDA1MTYzNjVhYzUxNmEwZDJhNDcwMTAwMDAwMDAwMDdhYmFjNTE2MzUzYWJhY2RlYmMxOTA0MDAwMDAwMDAwNmFiNTMwMDYzNmE2MzAwMDAwMDAwIiwgIjUxYWI1MmFiNTNhYzUyIiwgMCwgMTg2NjEwNTk4MCwgIjMxMTA5NGI0ZDczZTMxYWVmYzc3ZTk3ODU5ZWYwN2NhMmYwN2E3YjdlNGQ3ZGVmODBjNjlkM2Y1ZDU4NTI3ZTUiXSwKCVsiYzRiODBmODUwMzIzMDIyMjA1YjNlMTU4MmYxZWQwOTc5MTFhODFiZTU5MzQ3MWE4ZGNlOTNkNWMzYTdiZGVkOTJlZjZjN2MxMjYwMTAwMDAwMDAyMDA2YWZmZmZmZmZmNzAyOTRkNjJmMzdjM2RhN2M1ZWFlNWQ2N2RjZTZlMWIyOGZlZGQ3MzE2ZDAzZjRmNDhlMTgyOWY3OGE4OGFlODAxMDAwMDAwMDk2YTUyMDA1MzAwMDA1MTYzNTFmNmI3YjU0NGY3YzM5MTg5ZDNhMjEwNmNhNThjZTQxMzA2MDUzMjhjZTc3OTUyMDRiZTU5MmE5MGFjZDgxYmVmNTE3ZDZmMTcwMjAwMDAwMDAwZmZmZmZmZmYwMTJhYjgwODAwMDAwMDAwMDAwNzUxMDAwMDYzNjUwMDYzMzU0NTRjMWUiLCAiNTNhYzZhNTM2YWFjYWMiLCAwLCAtMTEyNDEwMzg5NSwgIjA2Mjc3MjAxNTA0ZTZiZjhiOGM5NDEzNmZhZDgxYjZlM2RhZGFjYjlkNGEyYzIxYThlMTAwMTdiZmE5MjllMGUiXSwKCVsiOGFiNjllZDUwMzUxYjQ3YjZlMDRhYzA1ZTEyMzIwOTg0YTYzODAxNzE2NzM5ZWQ3YTk0MGIzNDI5YzljOWZlZDQ0ZDMzOThhZDQwMzAwMDAwMDA2NTM2YTUxNmE1MjYzODE3MWVmM2E0NmEyYWRiODAyNWE0ODg0YjQ1Mzg4OWJjNDU3ZDYzNDk5OTcxMzA3YTdlODM0YjBlNzZlZWM2OWM5NDMwMzhhMDMwMDAwMDAwMGZmZmZmZmZmNTY2YmI5NmY5NDkwNGVkOGQ0M2Q5ZDQ0YTRhNjMwMTA3M2NlZjJjMDExYmY1YTEyYTg5YmVkYmFhMDNlNDcyNDAzMDAwMDAwMDI2NWFjYjYwNmFmZmQwMWVkZWEzODA1MDAwMDAwMDAwODUxNTI1MjUxNmFhY2FjNjMwMDAwMDAwMCIsICI2NTAwMDAwMDAwNjM2NWFjNTMiLCAwLCAtMTMzODk0Mjg0OSwgIjc5MTI1NzM5Mzc4MjQwNTgxMDNjYjkyMWE1OWE3ZjkxMGE4NTRiZjI2ODJmNDExNmEzOTNhMjA0NTA0NWE4YzMiXSwKCVsiMjQ4NDk5MWUwNDdmMWNmM2NmZTM4ZWFiMDcxZjkxNWZlODZlYmQ0NWQxMTE0NjNiMzE1MjE3YmY5NDgxZGFmMGUwZDEwOTAyYTQwMjAwMDAwMDAwNmU3MWE0MjRlYjEzNDdmZmE2MzgzNjM2MDRjMGQ1ZWNjYmM5MDQ0N2ZmMzcxZTAwMGJmNTJmYzc0M2VjODMyODUxYmI1NjRhMDEwMDAwMDAwMWFiZmZmZmZmZmZlZjdkMDE0ZmFkM2FlNzkyNzk0OGVkYmJiM2FmZTI0N2MxYmNiZTdjNGM4ZjVkNmNmOTdjNzk5Njk2NDEyNjEyMDIwMDAwMDAwODUxNTM2YTUzNTMwMDZhMDAxZGZlZTBkN2EwZGQ0NmFkYTYzYjkyNTcwOWUxNDE4NjNmNzMzOGYzNGY3YWViZGU4NWQzOTI2OGFlMjFiNzdjMzA2OGMwMWQwMDAwMDAwMDA4NTM1MTUxYWIwMDYzNjU2M2ZmZmZmZmZmMDE4NDc4MDcwMjAwMDAwMDAwMDk1MjAwNjM1MzY1YWM1MmFiNTM0MWIwOGNkMyIsICIiLCAzLCAyNjU2MjM5MjMsICIyNGNiNDIwYTUzYjRmOGJiNDc3ZjdjYmIyOTNjYWFiZmQyZmM0N2NjNDAwY2UzN2RiYmFiMDdmOTJkM2E5NTc1Il0sCglbIjU0ODM5ZWY5MDI2ZjY1ZGIzMGZjOWNmY2I3MWY1Zjg0ZDdiYjNjNDg3MzFhYjlkNjMzNTFhMWIzYzdiYzFlN2RhMjJiYmQ1MDhlMDMwMDAwMDAwMDQ0MmFkMTM4ZjE3MGU0NDZkNDI3ZDFmNjQwNDAwMTYwMzJmMzZkODMyNWMzYjJmN2E0MDc4NzY2YmRkOGZiMTA2ZTUyZThkMjAwMDAwMDAwMDM2NTY1MDBmZmZmZmZmZjAyMjE5YWExMDEwMDAwMDAwMDA4NTFhYmFiYWM1MmFiMDA2NTk2NDZiZDAyMDAwMDAwMDAwNTUyYWNhY2FiYWMyNGMzOTRhNSIsICJhYyIsIDAsIDkwNjgwNzQ5NywgIjY5MjY0ZmFhZGNkMWE1ODFmNzAwMDU3MGEyMzlhMGEyNmI4MmYyYWQ0MDM3NGM1YjljMWY1ODczMDUxNGRlOTYiXSwKCVsiNTAzNmQ3MDgwNDM0ZWI0ZWVmOTNlZmRhODZiOTEzMWIwYjRjNmEwYzQyMWUxZTVmZWIwOTlhMjhmZjlkZDg0Nzc3Mjg2MzlmNzcwMzAwMDAwMDA5NTE1MTZhYWI1MzUxNTJhYjUzOTE0MjliZTljY2U4NWQ5ZjNkMzU4YzU2MDVjZjhjMzY2NmYwMzRhZjQyNzQwZTk0ZDQ5NWUyOGI5YWFhMTAwMWJhMGM4NzU4MDMwMDAwMDAwODAwNjU1MmFiMDBhYjAwNmFmZmZmZmZmZmQ4Mzg5NzhlMTBjMGM3OGYxY2QwYTA4MzBkNjgxNWYzOGNkY2M2MzE0MDg2NDljMzJhMjUxNzAwOTk2NjlkYWEwMDAwMDAwMDAyYWNhYjg5ODQyMjdlODA0YWQyNjhiNWIzNjcyODVlZGNkZjEwMmQzODJkMDI3Nzg5MjUwYTJjMDY0MTg5MmI0ODBjMjFiZjg0ZTNmYjAxMDAwMDAwMDBiNTE4MDQxZTAyM2Q4NjUzMDEwMDAwMDAwMDAxMDA0MDQwZmIwMTAwMDAwMDAwMDgwMDUxYWM1MjAwNjM2YTYzMDAwMDAwMDAiLCAiNTJhYyIsIDAsIDM2NjM1NzY1NiwgImJkMGU4ODgyOWFmYTZiZGMxZTE5MmJiOGIyZDlkMTRkYjY5Mjk4YTRkODFkNDY0Y2JkMzRkZjAzMDJjNjM0YzYiXSwKCVsiOWFkNWNjZjUwM2ZhNGZhY2Y2YTI3YjUzOGJjOTEwY2NlODNjMTE4ZDZkZmQ4MmYzZmIxYjhhZTM2NGExYWZmNGRjZWZhYmQzOGYwMzAwMDAwMDA5NjM2NTY1NTI2M2FjNjU1MzAwODA3YzQ4MTMwYzU5MzcxOTBhOTk2MTA1YTY5YThlYmE1ODVlMGJkMzJmYWRmYzU3ZDI0MDI5Y2JlZDY0NDZkMzBlYmMxZjEwMDEwMDAwMDAwNDAwMDA1MzY1MGYwY2NmY2ExMzU2NzY4ZGY3ZjkyMTBjYmYwNzhhNTNjNzJlMDcxMjczNmQ5YTdhMjM4ZTAxMTVmYWFjMGNhMzgzZjIxOWQwMDEwMDAwMDAwNjAwYWI1MzY1NTIwMDI3OTk5ODJiMDIyMWI4MjgwMDAwMDAwMDAwMDAwYzQxMzIwMDAwMDAwMDAwMDg2NTUyYWM2MzY1NjM2YTY1OTVmMjMzYTMiLCAiNmE1MTUyIiwgMiwgNTUzMjA4NTg4LCAiZjk5YzI5YTc5ZjFkNzNkMmE2OWM1OWFiYmI1Nzk4ZTk4NzYzOWUzNmQ0YzQ0MTI1ZDhkYzc4YTk0ZGRjZmIxMyJdLAoJWyI2Njk1MzhhMjA0MDQ3MjE0Y2UwNThhZWQ2YTA3Y2E1YWQ0ODY2YzgyMWM0MWFjMTY0MmM3ZDYzZWQwMDU0Zjg0Njc3MDc3YTg0ZjAzMDAwMDAwMDg1M2FiYWNhYjZhNjU1MzUzZmZmZmZmZmY3MGMyYTA3MWMxMTUyODI5MjRlM2NiNjc4YjEzODAwYzFkMjliNmEwMjhiM2M5ODlhNTk4YzQ5MWJjN2M3NmM1MDMwMDAwMDAwNzUyYWM1MmFjNTE2M2FjODA0MjBlOGE2ZTQzZDM5YWYwMTYzMjcxNTgwZGY2YjkzNjIzN2YxNWRlOTk4ZTk1ODllYzM5ZmU3MTc1NTNkNDE1YWMwMmE0MDMwMDAwMDAwNDYzNjM1MTUzMTg0YWQ4YTVhNGU2OWE4OTY5ZjcxMjg4YzMzMWFmZjNjMmI3ZDFiNjc3ZDJlYmFmYWQ0NzIzNDg0MDQ1NGI2MjRiZjdhYzFkMDMwMDAwMDAwNTZhNjNhYmFiNjNkZjM4YzI0YTAyZmJjNjNhMDQwMDAwMDAwMDAyYWI1MzVlYzNkYzA1MDAwMDAwMDAwMjUzNjUwMDAwMDAwMCIsICI2MzUxNTMiLCAzLCAtMTkwMzk5MzUxLCAiOTYxNTU0MTg4NGRmYjFmZWViMDgwNzNhNmE2YWE3M2VmNjk0YmM1MDc2ZTUyMTg3ZmRmNDEzOGEzNjlmOTRkOSJdLAoJWyJhN2YxMzllNTAyYWY1ODk0YmU4ODE1ODg1M2I3Y2JlYTQ5YmEwODQxN2ZiYmNhODc2Y2E2NjE0YjVhNDE0MzJiZTM0NDk5OTg3YjAwMDAwMDAwMDc2NTYzNTE2NWFiYWM2M2ZmZmZmZmZmOGI4ZDcwZTk2YzdmNTRlYjcwZGEwMjI5YjU0OGNlZDQzOGUxY2EyYmE1ZGRkNjQ4YTAyN2Y3MjI3N2VlMWVmYzAxMDAwMDAwMDFhYmZmZmZmZmZmMDQ0ZjJjNDIwNDAwMDAwMDAwMDE2NWU5M2Y1NTAxMDAwMDAwMDAwNTAwMDA1MjZhNmE5NDU1MDMwNDAwMDAwMDAwMDM2NTUzNmFhZGMyMWMwMzAwMDAwMDAwMDE2MzAwMDAwMDAwIiwgIjZhYWNhYzYzNjNhYjUyNjVhYyIsIDEsIDIxNDMxODk0MjUsICI2ZTNmOTc5NTU0OTBkOTNkNmExMDdjMThkN2ZlNDAyZjFjYWRhNzk5OTNiYjBmZjBkMDk2MzU3MjYxYjNhNzI0Il0sCglbIjNiOTQ0MzhmMDM2NmY5ZjUzNTc5YTk5ODliODZhOTVkMTM0MjU2Y2UyNzFkYTYzY2E3Y2QxNmY3ZGQ1ZTRiZmZhMTdkMzUxMzNmMDEwMDAwMDAwMTAwZmZmZmZmZmYxYWFhZDBjNzIxZTA2ZWMwMGQwN2U2MWE4NGZiNmRjODQwYjlhOTY4MDAyY2U3ZTE0MmY5NDNmMDZmZDE0M2ExMDEwMDAwMDAwODUzNTE1MWFjNTFhYjAwNTNiNjhiOGU5YzY3MmRhZjY2MDQxMzMyMTYzZTA0ZGIzZjYwNDg1MzRiZDcxOGUxOTQwYjNmYzM4MTFjNGVlZjViN2E1Njg4OGIwMTAwMDAwMDAwMWQ1OGUzOGMwMTJlMzhlNzAwMDAwMDAwMDAwODUyYWI1M2FjNjM2NTUzNmEwMDAwMDAwMCIsICJhYjY1NTM1MiIsIDEsIC05MzUyMjMzMDQsICJiM2IzMzZkZTE0MWQ0ZjA3MTMxM2EyMjA3YjJhMGM3Y2Y1NGEwNzBkZDhkMjM0YTUxMWI3ZjFkMTNlMjNiMGM0Il0sCglbImU1ZGNhOGEyMDQ1NmRlMGE2N2UxODVmYTZlYTk0MDg1Y2VhZTQ3OGQyYzE1YzczY2I5MzFhNTAwZGIzYTFiNjczNWRkMTY0OWVjMDIwMDAwMDAwNWFiNTM2YWFiYWIzMmQxMWJiZGNiODEzNjEyMDI2ODFkZjA2YTZiODI0YjEyYjVjYjQwYmIxYTY3MmNmOWFmOGYyYTgzNmU0ZDk1Yjc4MzkzMjcwMzAwMDAwMDA5NTEwMDUzNjVhYjY1YWJhY2FiYjM0NTA4NTkzMjkzOWVlZjBjNzI0YWRlZjhhNTdmOWUxYmY1ODEzODUyZDk1N2MwMzliNmExMmQ5YzJmMjAxZWE1MjBmYjAzMDAwMDAwMDAwOWFjNTM1MjAwNTE2NWFjYWM2YTVlZmM2MDcyZjFhNDIxZGM3ZGM3MTRmYzYzNjhmNmQ3NjNhNWQ3NmQwMjc4Yjk1ZmMwNTAzYjkyNjhjY2ZhZGI0ODIxM2EyNTAwMDAwMDAwMDI2YTUzZmZmZmZmZmYwMzllZTFjNDAyMDAwMDAwMDAwOWFjNTM1M2FiNjM1MzUzNTE2MzE4NDAxODAwMDAwMDAwMDAwNTY1NTI2NTUyNmE5YTRhOGEwNTAwMDAwMDAwMDFhYzAwMDAwMDAwIiwgIjY1YWI1M2FiNmEwMGFiNjU1MyIsIDIsIDE5MDI1NjEyMTIsICI3OTI4YWU4ZTg2YzBiMGNhZDFiMmMxMjBlYTMxMzA4NzQzNzk3NDM4MmVlNmQ0NjQ0M2NhNWFjM2Y1ODc4Yjg4Il0sCglbIjk3MjEyOGI5MDRlN2I2NzM1MTdlOTZlOThkODBjMGM4Y2VjZWFlNzZlMmY1YzEyNmQ2M2RhNzdmZmQ3ODkzZmI1MzMwOGJiMmRhMDMwMDAwMDAwNmFjNjU1MmFiNTJhY2ZmZmZmZmZmNGNhYzc2N2M3OTdkMjk3YzA3OWE5M2QwNmRjODU2OWYwMTZiNGJmN2E3ZDc5YjYwNWM1MjZlMWQzNmE0MGUyMjAyMDAwMDAwMDk1MzY1YWI2MzZhYWM2YTZhNmE2OTkyOGQyZWRkYzgzNjEzM2E2OTBjZmI3MmVjMmQzMTE1YmY1MGZiM2IwZDEwNzA4ZmE1ZDJlYmIwOWI0ODEwYzQyNmExZGIwMTAwMDAwMDA2MDA1MjUyNjMwMDAwMWU4ZTg5NTg1ZGE3ZTc3YjJkZDJlMzA2MjU4ODdmMDY2MGFjY2RmMjllNTNhNjE0ZDIzY2Y2OThlNmZjOGFiMDMzMTBlODc3MDAwMDAwMDAwNzZhNTIwMDUxYWNhYzY1NTUyMzFkZGIwMzMwZWMyZDAzMDAwMDAwMDAwMjAwYWJmYWY0NTcwNDAwMDAwMDAwMDRhYjZhNjM1MmJkYzQyNDAwMDAwMDAwMDAwMTUzZDZkZDJmMDQiLCAiIiwgMCwgMjA5MjM0Njk4LCAiNGE5MmZlYzFlYjAzZjViZDc1NGVlOWJmZDcwNzA3ZGM0NDIwY2MxMzczNzM3NGY0Njc1ZjQ4NTI5YmU1MThlNCJdLAoJWyIxZmI0MDg1YjAyMmM2Y2ZiODQ4ZjhhZjdiYTNiYThkMjFiZDIzZmZhOWYwYmZkMTgxY2I2OGJjYWFmMjA3NGU2NmQ0OTc0YTMxNjAyMDAwMDAwMDkwMDAwMDA2YTZhNjUwMGFjYWI2YzEyYzA3ZDlmM2RiZDJkOTMyOTVjM2E0OWUzNzU3MTE5NzY3MDk3ZTdmZDUzNzFmN2QxYmE5YmEzMmYxYTY3YTVhNDI2ZjAwMDAwMDAwMDAwZmZmZmZmZmYwMThmZDJmYzA0MDAwMDAwMDAwMzYzYWM1MTAwMDAwMDAwIiwgIjY1YWIwMDZhNmFhYjUyNmEiLCAwLCAxNDMxNTAyMjk5LCAiOGI3ZGQwZmYxMmNhMGQ4ZjRkYmY5YWJmMGFiYmEwMGU4OTdjMmY2ZmQzYjkyYzc5ZjVmNmE1MzRlMGIzM2IzMiJdLAoJWyI1Mzc0ZjBjNjAzZDcyN2Y2MzAwNjA3OGJkNmMzZGNlNDhiZDVkMGE0YjZlYTAwYTQ3ZTU4MzIyOTJkODZhZjI1OGVhMDgyNWMyNjAwMDAwMDAwMDk2NTUzNTM2MzYzNTI1MjZhNmFmMjIyMTA2NzI5N2Q0MmE5Zjg5MzNkZmUwN2Y2MWE1NzQwNDhmZjlkM2E0NGEzNTM1Y2Q4ZWI3ZGU3OWZiN2M0NWI2ZjQ3MzIwMjAwMDAwMDAzYWMwMDZhZmZmZmZmZmYxNTNkOTE3YzQ0N2QzNjdlNzU2OTNjNTU5MWUwYWJmNGM5NGJiZGQ4OGE5OGFiOGFkN2Y3NWJmZTY5YTA4YzQ3MDIwMDAwMDAwNWFjNjU1MTYzNjVmZmZmZmZmZjAzN2I1YjdiMDAwMDAwMDAwMDAxNTE1ZGM0ZDkwNDAwMDAwMDAwMDAwNGJiMjYwMTAwMDAwMDAwMDQ1MzZhNmFhYzAwMDAwMDAwIiwgIjUxNjU1MjUxNjM1MmFjIiwgMiwgMzI4NTM4NzU2LCAiOGJiN2EwMTI5ZWFmNGI4ZmMyM2U5MTFjNTMxYjliNzYzN2EyMWFiMTFhMjQ2MzUyYzZjMDUzZmY2ZTkzZmNiNiJdLAoJWyJjNDQxMTMyMTAyY2M4MjEwMWI2ZjMxYzEwMjUwNjZhYjA4OWYyODEwOGM5NWYxOGZhNjdkYjE3OTYxMDI0NzA4NjM1MGMxNjNiZDAxMDAwMDAwMDY1MTUyNTI2M2FiMDBmZmZmZmZmZjliOGQ1NmIxZjE2NzQ2ZjA3NTI0OWIyMTViZGIzNTE2Y2JiZTE5MGZlZjYyOTJjNzViMWFkOGE4OTg4ODk3YzMwMDAwMDAwMDA3NTFhYjY1NTNhYmFiMDBmZmZmZmZmZjAyZjkwNzhiMDAwMDAwMDAwMDA5YWIwMDUzYWM1MWFjMDBhYjUxYzA0MjIxMDUwMDAwMDAwMDA2NTEwMDY1NjM1MjUyMDAwMDAwMDAiLCAiYWM1MSIsIDAsIC0xOTcwNTE3OTAsICI1NWFjZDgyOTNlZDBiZTY3OTIxNTBhM2Q3Y2VkNmM1Y2NkMTUzY2E3ZGFmMDljZWUwMzVjMWIwZGFjOTJiYjk2Il0sCglbImFiODJhZDNiMDQ1NDViZDg2YjNiYjkzN2ViMWFmMzA0ZDNlZjFhNmQxMzQzZWQ4MDliNDM0NmNhZmI3OWI3Mjk3YzA5ZTE2NDgyMDIwMDAwMDAwODYzNTFhYzUyMDA1MzUzNTNmZmZmZmZmZjk1ZDMyNzk1YmJhYWY1OTc3YTgxYzIxMjhhOWVjMGIzYzc1NTFiOWIxYzNkOTUyODc2ZmNiNDIzYjJkZmI5ZTgwMDAwMDAwMDA1NTE1MzYzYWNhYzQ3YTdkMDUwZWMxYTYwMzYyN2NlNmNkNjA2YjNhZjMxNGZhNzk2NGFiY2M1NzlkOTJlMTljN2FiYTAwY2Y2YzMwOTBkNmQ0NjAxMDAwMDAwMDU2YTUxNjU1MTYzM2U3OTQ3NjhiZmUzOTI3N2ViYzBkYjE4YjVhZmI1ZjBjODExN2RkZTliNGRmZDU2OTdlOTAyNzIxMGVjYTc2YTliZTIwZDYzMDAwMDAwMDAwNzAwNTIwMDYzYWI2YWFjZmZmZmZmZmYwMWVjMmRkYzA1MDAwMDAwMDAwOGFjNTJhYzY1YWM2NWFjNTEwMDAwMDAwMCIsICI1MzYzMDBhYmFiIiwgMSwgLTIwNzAyMDk4NDEsICJiMzYyZGE1NjM0ZjIwYmU3MjY3ZGU3OGI1NDVkODE3NzNkNzExYjgyZmU5MzEwZjIzY2QwNDE0YTgyODA4MDFkIl0sCglbIjhiZmY5ZDE3MDQxOWZhNmQ1NTZjNjVmYTIyN2ExODVmZTA2NmVmYzFkZWNmOGExYzQ5MGJjNWNiYjlmNzQyZDY4ZGEyYWI3ZjMyMDEwMDAwMDAwN2FiMDAwMDUzNTI1MzY1YTdhNDNhODBhYjk1OTNiOWU4YjYxMzBhNzg0OTYwM2IxNGI1YzkzOTdhMTkwMDA4ZDg5ZDM2MjI1MGMzYTIyNTc1MDRlYjgxMDIwMDAwMDAwN2FjYWJhY2FjMDBhYjUxZWUxNDFiZTQxOGYwMDNlNzViMTI3ZmQzODgzZGJmNGU4YzNmNmNkMDVjYTRhZmNhYWM1MmVkZDI1ZGQzMDI3YWU3MGE2MmEwMDAwMDAwMDAwOGFjNTI1MjZhNTIwMDUzNmFmZmZmZmZmZmI4MDU4ZjRlMWQ3ZjIyMGExZDFmYTE3ZTk2ZDgxZGZiOWEzMDRhMmRlNGUwMDQyNTBjOWE1NzY5NjNhNTg2YWUwMzAwMDAwMDA1YWJhY2FjNTM2M2I5YmM4NTZjMDM5YzAxZDgwNDAwMDAwMDAwMDk1MTY1NmFhYzUzMDA1MzY1YWNiMDcyNGUwMDAwMDAwMDAwMDU2NWFiYWI2M2FjZWE3YzdhMDAwMDAwMDAwMDAzNmEwMGFjMDAwMDAwMDAiLCAiNjU2NSIsIDEsIC0xMzQ5MjgyMDg0LCAiMmI4MjI3MzdjMmFmZmVlZmFlMTM0NTFkN2M5ZGIyMmZmOThlMDY0OTAwMDVhYmE1NzAxM2Y2YjliYmM5NzI1MCJdLAoJWyIwZTE2MzNiNDA0MWM1MGY2NTZlODgyYTUzZmRlOTY0ZTdmMGM4NTNiMGFkYTA5NjRmYzg5YWUxMjRhMmI3ZmZjNWJjOTdlYTYyMzAxMDAwMDAwMDZhYzZhYWNhY2FiYWNmZmZmZmZmZjJlMzVmNGRmY2FkMmQ1M2VhMWM4YWRhODA0MWQxM2VhNmM2NTg4MDg2MGQ5NmExNDgzNWIwMjVmNzZiMWZiZDkwMDAwMDAwMDAzNTE1MTUxMjEyNzA4NjdlZjZiZjYzYTkxYWRiYWY3OTBhNDM0NjVjNjFhMDk2YWNjNWE3NzZiOGU1MjE1ZDRlNWNkMTQ5MmU2MTFmNzYxMDAwMDAwMDAwNjAwYWM2YWFiNTI2NWZmZmZmZmZmNjNiNWZjMzliY2FjODNjYTgwYWMzNjEyNGFiYWZjNWNhZWU2MDhmOWY2M2ExMjQ3OWI2ODQ3M2JkNGJhZTc2OTAwMDAwMDAwMDk2NWFjNTJhY2FjNTI2M2FjYWJmZmZmZmZmZjAxNjMxNTNlMDIwMDAwMDAwMDA4YWIwMDUxNjVhYjY1NTE1MzAwMDAwMDAwIiwgIjZhNmFhYzAwIiwgMCwgLTk2ODQ3Nzg2MiwgIjIwNzMyZDUwNzM4MDU0MTlmMjc1YzUzNzg0ZTc4ZGI0NWU1MzMzMmVlNjE4YTlmY2Y2MGEzNDE3YTZlMmNhNjkiXSwKCVsiMmIwNTJjMjQwMjIzNjllOTU2YThkMzE4ZTM4NzgwZWY3M2I0ODdiYTZhOGY2NzRhNTZiZGI4MGE5YTYzNjM0YzYxMTBmYjUxNTQwMTAwMDAwMDAyNTFhY2ZmZmZmZmZmNDhmZTEzOGZiN2ZkYWEwMTRkNjcwNDRiYzA1OTQwZjQxMjdlNzBjMTEzYzY3NDRmYmQxM2Y4ZDUxZDQ1MTQzZTAxMDAwMDAwMDA1NzEwZGIzODA0ZTAxYWE5MDMwMDAwMDAwMDA4YWNhYzZhNTE2YTUxNTJhYmZkNTVhYTAxMDAwMDAwMDAwNzUxYWI1MTAwMDBhYzYzNmQ2MDI2MDEwMDAwMDAwMDAwYjk3ZGE5MDAwMDAwMDAwMDAwZmRkZjNiNTMiLCAiMDA2NTUyIiwgMCwgNTk1NDYxNjcwLCAiNjg1ZDY3ZDg0NzU1OTA2ZDY3YTAwN2E3ZDRmYTMxMTUxOTQ2N2I5YmRjNmEzNTE5MTMyNDZhNDFlMDgyYTI5ZiJdLAoJWyIwNzNiYzg1NjAxNTI0NWYwM2IyZWEyZGE2MmNjZWRjNDRlY2I5OWU0MjUwYzcwNDJmNTk2YmNiMjNiMjk0YzlkYzkyY2ZjZWI2YjAyMDAwMDAwMDk1MTYzYWJhYjUyYWJhYjYzNmFmZTI5MmZiMzAzYjdjM2YwMDEwMDAwMDAwMDAzNTI2MzZhZjNjNDk1MDIwMDAwMDAwMDA0MDBhYzZhNTM1ODUxODUwMTAwMDAwMDAwMDY2YWFjNjU1M2FiNjUwMDAwMDAwMCIsICJhYjZhYWI1MzAwNmFhYjUyIiwgMCwgMjQ3MTE0MzE3LCAiMTIzOTE2YzY0ODVjZjIzYmZlYTk1NjU0YTg4MTVmYmYwNGNlNGQyMWEzYjdmODYyODA1YzI0MTQ3MjkwNjY1OCJdLAoJWyI3ODg4YjcxNDAzZjZkNTIyZTQxNGQ0Y2EyZTEyNzg2MjQ3YWNmM2U3OGYxOTE4ZjZkNzI3ZDA4MWE3OTgxM2QxMjllZThiZWZjZTAxMDAwMDAwMDlhYjUxNmE2MzUzYWI2MzY1YWJmZmZmZmZmZjRhODgyNzkxYmY2NDAwZmRhN2E4MjA5ZmIyYzgzYzZlZWY1MTgzMWJkZjBmNWRhY2RlNjQ4ODU5MDkwNzk3ZWMwMzAwMDAwMDAxNTNmZmZmZmZmZmJiMDg5NTdkNTlmYTE1MzAzYjY4MWJhZDE5Y2NmNjcwZDdkOTEzNjk3YTJmNGY1MTU4NGJmODVmY2Y5MWYxZjMwMjAwMDAwMDA4NTI2NTY1YWM1MmFjNjNhY2ZmZmZmZmZmMDIyN2MwZTgwNTAwMDAwMDAwMDFhYzM2MWRjODAxMDAwMDAwMDAwODAwNTE1MTY1YWIwMGFiMDAwMDAwMDAwMCIsICI2NTZhIiwgMiwgMTg2OTI4MTI5NSwgImY0MzM3OGEwYjc4MjJhZDY3Mjc3Mzk0NDg4NGU4NjZkN2E0NjU3OWVlMzRmOWFmYzE3YjIwYWZjMWY2Y2YxOTciXSwKCVsiY2M0ZGRhNTcwNDdiZDBjYTY4MDYyNDNhNmE0YjEwOGY3Y2VkNDNkODA0MmExYWNhYTI4MDgzYzkxNjA5MTFjZjQ3ZWFiOTEwYzQwMjAwMDAwMDA3NTI2YTAwMDBhYjZhNjNlNDE1NGU1ODFmY2Y1MjU2NzgzNmM5YTQ1NWU4YjQxYjE2MmE3OGM4NTkwNmNjYzFjMmIyYjMwMGI0YzY5Y2FhYWEyYmEwMjMwMzAwMDAwMDA4YWI1MTUyYWM1MTAwYWI2NWZmZmZmZmZmNjk2OTZiNTIzZWQ0YmQ0MWVjZDRkNjViNGFmNzNjOWNmNzdlZGYwZTA2NjEzODcxMmE4ZTYwYTA0NjE0ZWExYzAzMDAwMDAwMDRhYjZhMDAwMDE2YzkwNDVjN2RmNzgzNmUwNWFjNGIyZTM5N2UyZGQ3MmE1NzA4ZjRhOGJmNmQyYmMzNmFkYzVhZjNjYWNlZmNmMDc0YjhiNDAzMDAwMDAwMDY1MzUyYWM1MjUyYWNmZmZmZmZmZjAxZDdlMzgwMDUwMDAwMDAwMDAwY2Y0ZTY5OWEiLCAiNTI1MTYzNjU2MzUxIiwgMSwgLTc3NjUzMzY5NCwgImZmMThjNWJmZmQwODZlMDA5MTdjMjIzNGY4ODAwMzRkMjRlN2VhMmQxZTE5MzNhMjg5NzNkMTM0Y2E5ZTM1ZDIiXSwKCVsiYjc4NzdmODIwMTljODMyNzA3YTYwY2YxNGZiYTQ0Y2ZhMjU0ZDc4NzUwMWZkZDY3NmJkNThjNzQ0ZjZlOTUxZGJiYTBiM2I3N2YwMjAwMDAwMDA5YWM1MTUyNjNhYzUzNTI1MzAwYTVhMzZlNTAwMTQ4Zjg5YzA1MDAwMDAwMDAwODUyNjVhYzZhNmE2NWFjYWIwMDAwMDAwMCIsICI2NTYzIiwgMCwgLTE3ODUxMDg0MTUsICJjYjZlNDMyMjk1NWFmMTJlYjI5NjEzYzcwZTFhMDBkZGJiNTU5Yzg4N2JhODQ0ZGYwYmNkZWJlZDczNmRmZmJkIl0sCglbImFlYjE0MDQ2MDQ1YTI4Y2M1OWYyNDRjMjM0NzEzNGQzNDM0ZmFhZjk4MDk2MTAxOWEwODRmNzU0NzIxODc4NWEyYmQwMzkxNmYzMDAwMDAwMDAwMTY1Zjg1MmU2MTA0MzA0OTU1YmRhNWZhMGI3NTgyNmVlMTc2MjExYWNjNGE3ODIwOTgxNmJiYjQ0MTlmZWZmOTg0Mzc3YjIzNTIyMDAwMDAwMDAwMDNhOTRhNTAzMmRmMWUwZDYwMzkwNzE1YjRiMTg4YzMzMGU0YmI3Yjk5NWYwN2NkZWYxMWNlZDlkMTdlZTBmNjBiYjdmZmM4ZTAxMDAwMDAwMDI1MTY1MTNlMzQzYTVjMWRjMWM4MGNkNDU2MWU5ZGRkYWQyMjM5MWEyZGJmOWM4ZDJiNjA0OGU1MTkzNDNjYTE5MjVhOWM2ZjA4MDBhMDIwMDAwMDAwNjY1NTE2MzY1YWM1MTMxODAxNDRhMDI5MGRiMjcwMDAwMDAwMDAwMDZhYjY1NTE1MWFiNTEzOGIxODcwMTAwMDAwMDAwMDdhYjUzNjNhYmFjNTE2YTllNWNkOThhIiwgIjUzYWMiLCAwLCA0Nzg1OTEzMjAsICJlOGQ4OWEzMDJhZTYyNjg5OGQ0Nzc1ZDEwMzg2N2E4ZDllODFmNGZkMzg3YWYwNzIxMmFkYWI5OTk0NjMxMWVmIl0sCglbImM5MjcwZmUwMDRjNzkxMWI3OTFhMDA5OTlkMTA4Y2U0MmY5ZjFiMTllYzU5MTQzZjdiN2IwNGE2NzQwMDg4ODgwODQ4N2JkNTkxMDMwMDAwMDAwNjZhMDA1MmFjNjU2NWI5MDVlNzY2ODdiZTJkZDc3MjNiMjJjNWU4MjY5YmMwZjIwMDBhMzMyYTI4OWNmYzQwYmMwZDYxN2NmZTMyMTRhNjFhODVhMzAzMDAwMDAwMDdhYzYzYWMwMDYzNTI1MTU2MDg3MTIwOWYyMWViMDI2OGYxNzViOGI0YTA2ZWRkMGIwNDE2MmE5NzRjZjhiNWRhZGE0M2U0OTlhMWYyMjM4MGQzNWVkZTAzMDAwMDAwMDA3OTIyMTNmYzU4YjYzNDJjYzgxMDAwNzlmOWY1ZjA0NmZiODlmMmQ5MmNmMGEyY2I2ZDA3MzA0ZDMyZDlkYTg1ODc1NzAzN2MwMDAwMDAwMDA4YWJhYjUxNjM2NTY1NTE2YWZmZmZmZmZmMDJjNzJhOGIwMzAwMDAwMDAwMDQ1MmFjYWM1MzBkZmI5ZjA1MDAwMDAwMDAwMDk2Zjk0MzA3IiwgIjUyNTNhYjUzNjM1MSIsIDMsIDU0MzY4ODQzNiwgIjAyNzhhZGJjYzQ3NmQxMzU0OTNhZTliZGNkN2IzYzIwMDJkZjE3ZjJkODFjMTdkNjMxYzUwYzczZTU0NmMyNjQiXSwKCVsiNTdhNWEwNGMwMjc4YzhjOGUyNDNkMmRmNGJiNzE2ZjgxZDQxYWM0MWUyZGYxNTNlNzA5NmY1NjgyMzgwYzRmNDQxODg4ZDlkMjYwMzAwMDAwMDA0YWI2M2FiNmFmZGJlNDIwMzUyNWRmZjQyYTdiMWU2MjhmZTIyYmNjYWE1ZWRiYjM0ZDhhYjAyZmFmZjE5OGUwODU1ODBlYTVmY2RiMGM2MWIwMDAwMDAwMDAyYWM2YWZmZmZmZmZmMDMzNzVlNmMwNTAwMDAwMDAwMDY2M2FiNTE2YTZhNTEzY2I2MjYwNDAwMDAwMDAwMDA3Y2EzMjgwMjAwMDAwMDAwMDY1MTZhNjM2YTUyYWI5NDcwMWNjNyIsICIwMDUzYWM1MTUyIiwgMCwgLTU1MDkyNTYyNiwgImI3Y2E5OTFhYjJlMjBkMDE1ODE2OGRmMmQzZGQ4NDJhNTdhYjRhM2I2N2NjYThmNDViMDdjNGI3ZDFkMTExMjYiXSwKCVsiMDcyYjc1YTUwNGFkMjU1MGMyZTlhMDI2MTRiYzliMmEyZjUwYjViNTUzYWY3Yjg3YzBlZjA3YzY0ZGRjOGQ4OTM0Yzk2ZDIxNjQwMTAwMDAwMDAzNmFhYmFjYTEzODcyNDJhNWJjZDIxMDk5YjAxNmFkNjA0NWJlZDdkY2U2MDM0NzI3NTdkOTgyMmNjNWY2MDJjYWE0YWUyMDQxNGQzNzhiMDIwMDAwMDAwMjZhNjNlNGFjODE2NzM0YWNkYzk2OTUzOGQ2ZjcwYjhhYjQzYTI1ODlmNTVlMDE3N2E0ZGM0NzFiZGQwZWI2MWQ1OWYwZjQ2ZjZiYjgwMTAwMDAwMDA2NTM1MTUyNmFhYjUyZDlmMjk3N2JlNzZhNDkyYzNhNzYxN2I3YTE2ZGMyOWEzYjBhNzYxOGYzMjhjMmY3ZDRmZDliYWZlNzYwZGM0MjdhNTA2NmVmMDAwMDAwMDAwNDY1NjM1MTY1ZmZmZmZmZmYwMmM1NzkzNjAwMDAwMDAwMDAwMTY1Mjk2ODIwMDUwMDAwMDAwMDAyYWM2MzAwMDAwMDAwIiwgIjUzMDA2YTZhYWMwMDUyYWIiLCAyLCA2NjA4NDYzNiwgIjQzN2U4OWJiNmY3MGZkMmVkMmZlZWYzMzM1MGI2ZjY0ODNiODkxMzA1ZTU3NGRhMDNlNTgwYjNlZmQ4MWFlMTMiXSwKCVsiN2UyN2M0MmQwMjc5YzFhMDVlZWI5YjlmYWVkY2M5YmUwY2FiNjMwM2JkZTM1MWExOWU1Y2JiMjZkZDBkNTk0YjlkNzRmNDBkMmIwMjAwMDAwMDAyMDA1MThjODY4OWEwOGEwMWU4NjJkNWM0ZGNiMjk0YTIzMzE5MTJmZjExYzEzNzg1YmU3ZGNlMzA5MmYxNTRhMDA1NjI0OTcwZjg0ZTAyMDAwMDAwMDA1MDBjZjVhNjAxZTc0YzFmMDAwMDAwMDAwMDA3NmFhYjUyNjM2YTZhNTIwMDAwMDAwMCIsICI2NTAwMDA2YTUzNTEiLCAwLCA0NDk1MzMzOTEsICI1MzViYTgxOWQ3NDc3MGQ0ZDYxM2VlMTkzNjkwMDE1NzZmOTg4MzdlMThlMTc3N2I4MjQ2MjM4ZmYyMzgxZGQwIl0sCglbIjExNDE0ZGU0MDNkN2Y2YzAxMzVhOWRmMDFjYjEwOGMxMzU5YjhkNGUxMDViZTUwYTNkY2JhNWU2YmU1OTVjODgxNzIxNzQ5MGIyMDAwMDAwMDAwMzAwNTI2M2ZmZmZmZmZmMGM2YmVjYjljM2FkMzAxYzhkY2Q5MmY1Y2JjMDdjOGJlZDc5NzM1NzM4MDZkMTQ4OTMxNmZjNzdhODI5ZGEwMzAzMDAwMDAwMDcwMDAwNTI1MzUzNTM1MmZmZmZmZmZmMjM0NmQ3NGZmOWUxMmU1MTExYWE4Nzc5YTIwMjU5ODE4NTBkNGJmNzg4YTQ4ZGU3MmJhYTJlMzIxZTRiYzljYTAwMDAwMDAwMDU2MzUyYWNhYjYzY2M1ODViNjQwNDVlMDM4NTA1MDAwMDAwMDAwOWFiNTI1M2FiNTE2YWFjYWMwMGVmYTljZjAzMDAwMDAwMDAwNjUyMDA2MzUxNTFhY2JlODAzMzA0MDAwMDAwMDAwNzAwNjM2MzUxMDBhYjAwMGJlMTU5MDUwMDAwMDAwMDA3NTI1MzAwNjU1MzAwYWMwMDAwMDAwMCIsICI1MTY1NmEwMDUxYWIiLCAwLCA2ODMxMzc4MjYsICJkNDczN2YzYjU4ZjNlNTA4MWIzNWYzNmY5MWFjZGU4OWRkYTAwYTZhMDlkNDQ3ZTUxNmI1MjNlN2E5OTI2NGQ1Il0sCglbIjFjNmI1ZjI5MDMzZmMxMzkzMzg2NTgyMzdhNDI0NTYxMjM3MjdjODQzMDAxOWNhMjViZDcxYzYxNjhhOWUzNWEyYmY1NDUzOGQ4MDEwMDAwMDAwODUzNmFhYzUyYWM2YTZhNTJmZmZmZmZmZjNmYjM2YmU3NDAzNmZmMGM5NDBhMDI0N2M0NTFkOTIzYzY1ZjgyNjc5M2QwYWMyYmIzZjAxZWNiZWM4MDMzMjkwMTAwMDAwMDA3YWIwMDAwNTFhYjYzNjNmZmZmZmZmZjVkOWVjYTBjZjcxMTY4NTEwNWJkMDYwYmY3YTY3MzIxZWFlZjk1MzY3YWNmZmFiMzZjZThkZWRkZGQ2MzJlZTIwMDAwMDAwMDA2NTJhYzZhNjNhYzUxNzE2NzMxOWUwMzJkMjZkZTA0MDAwMDAwMDAwMzUxNjM2M2RjMzhmYjAxMDAwMDAwMDAwMGIzN2IwMDAwMDAwMDAwMDAwNmFiNTIwMDUxYWM1MzRiYWJhNTFmIiwgIjYzNjMwMGFiYWJhYzY1NjMiLCAwLCAtMjA0OTEyOTkzNSwgIjMyODJhMmVjNmI4Yzg3YzkzMDNlNjA2MGMxN2I0MjE2ODdkYjFiZDM1ZmJmYTAzNDViNDhmMjQ5MGUxNWI2Y2MiXSwKCVsiOTc4YjlkYWQwMjE0Y2ZjN2NlMzkyZDc0ZDlkY2M1MDczNTBkYzM0MDA3ZDcyZTQxMjU4NjFjNjMwNzFlYmYyY2MwYTZmZDQ4NTYwMjAwMDAwMDA2NTFhYzZhNmFhYjUyZmZmZmZmZmY0N2YyMDczNGUzMzcwZTczM2Y4N2E2ZWRhYjk1YTdhMjY4YWU0NGRiN2E4OTc0ZTI1NTYxNDgzNmIyMjkzODcyMDIwMDAwMDAwODYzNTI2NWFjNTE1MTY1NTNmZmZmZmZmZjAxMzdiMjU2MDEwMDAwMDAwMDAzNTI1MmFjMmYzMzYzZTkiLCAiMDA2YWFiNjM1MiIsIDEsIDIwMTQyNDk4MDEsICI1NTYxMWE1ZmIxNDgzYmNlNGMxNGMzM2VkMTUxOTgxMzBlNzg4YjcyY2Q4OTI5YjJjZWVmNGRkNjhiMTgwNmJmIl0sCglbIjQ0MmYxYzg3MDNhYjM5ODc2MTUzYzI0MWFiM2Q2OWY0MzJiYTZkYjQ3MzJiZWE1MDAyYmU0NWM4Y2ExMGMzYTIzNTZmZTBlOTU5MDMwMDAwMDAwMWFjY2IyYjY3OWNhYjdjNThhNjYwY2I2ZDRiMzQ1MmMyMWNkNzI1MWExYjc3YTUyYzMwMGY2NTVmNWJhZWI2ZmEyN2ZmNWI3OTg4MDMwMDAwMDAwMzAwNTI1MmU1Y2NmNTU3MTJiYzhlZDYxNzlmNjcyNmY4YTc4ZjMwMThhN2EwMzkxNTk0YjdlMjg2ZWY1ZWU5OWVmZGNkZTMwMmExMDJjYzAyMDAwMDAwMDkwMDYzNTI1MjYzNTE1MzZhNjNmZmZmZmZmZjA0NDQzZjYzMDMwMDAwMDAwMDA2NTM2YTYzYWI2MzY1MTQwNWZiMDIwMDAwMDAwMDA5YWM1MzUzNTE1MjUzMDBhYjZhOWYxNzJiMDAwMDAwMDAwMDA0YWI1MzUyNjNhZDVjNTAwNTAwMDAwMDAwMDg2NTZhNjVhYjYzMDAwMGFjMDAwMDAwMDAiLCAiNjU2MzZhYWIwMDY1NTIiLCAyLCAyMTI1ODM4Mjk0LCAiYjNmZjEwZjIxZTcxZWJjOGIyNWZlMDU4YzQwNzRjNDJmMDg2MTdlMGRjYzAzZjllNzVkMjA1MzlkMzI0MjY0NCJdLAoJWyIyYjM0NzBkZDAyODA4MzkxMDExN2Y4NjYxNGNkY2ZiNDU5ZWU1NmQ4NzY1NzI1MTBiZTRkZjI0YzcyZThmNThjNzBkNWY1OTQ4YjAzMDAwMDAwMDY2YWFiNjU2MzUyNjVkYTJjM2FhYzlkNDJjOWJhYWZkNGI2NTVjMmYzZWZjMTgxNzg0ZDhjYmE1NDE4ZTA1MzQ4MjEzMmVlNzk4NDA4YmE0M2NjZjkwMzAwMDAwMDAwZmZmZmZmZmYwNDdkZGE0NzAzMDAwMDAwMDAwNzY1NTE2YTUyYWM1MzAwOTM4NGE2MDMwMDAwMDAwMDA2NTE2MzZhNjNhYjZhOGNmNTdhMDMwMDAwMDAwMDAzNTJhYjZhOGNmNmE0MDUwMDAwMDAwMDA5NTI2MzZhNmE2NTY1NTI1MTAwNjYxZTA5Y2IiLCAiYWM1MjAwNjNhYzZhNmE1MiIsIDEsIDE0MDU2NDcxODMsICI5YjM2MGMzMzEwZDU1Yzg0NWVmNTM3MTI1NjYyYjlmZTU2ODQwYzcyMTM2ODkxMjc0ZTlmZWRmZWY1NmY5YmI1Il0sCglbImQ3NDI4MmI1MDFiZTk1ZDNjMTlhNWQ5ZGEzZDQ5YzhhODhhNzA0OWM1NzNmMzc4OGYyYzQyZmM2ZmE1OTRmNTk3MTU1NjBiOWIwMDAwMDAwMDAwOTY1NTM1MzUyNTI2NWFjNTJhYzk3NzIxMjFmMDI4ZjgzMDMwMzAwMDAwMDAwMDM1MTAwNjVhZjVmNDcwNDAwMDAwMDAwMDdhYzUxNmE2NTUxNjMwMDAwMDAwMDAwIiwgImFjYWI1MzAwNjM2M2FjIiwgMCwgLTExMTMyMDk3NzAsICIyZjQ4MmI5NzE3OGYxNzI4NmY2OTM3OTZhNzU2ZjRkN2JkMmRmY2RiZWNkNDE0MjUyOGVlYzFjN2EzZTUxMDFhIl0sCglbIjNhNTY0NGE5MDEwZjE5OWYyNTNmODU4ZDY1NzgyZDNjYWVjMGFjNjRjMzI2MmI1Njg5MzAyMmI5Nzk2MDg2Mjc1YzlkNGQwOTdiMDIwMDAwMDAwMDlkMTY4Zjc2MDNhNjdiMzAwNTAwMDAwMDAwMDdhYzUxNTM2YTAwNTNhY2Q5ZDg4YTA1MDAwMDAwMDAwNzY1NTM2MzUzNTI2M2FiM2NmMWY0MDMwMDAwMDAwMDAzNTJhYzZhMDAwMDAwMDAiLCAiMDA1MzYzNTM2NTY1YWNhYzZhIiwgMCwgLTEzODM5NDcxOTUsICI2MzkwYWIwOTYzY2Y2MTFlMGNlYTM1YTcxZGM5NThiNDk0YjA4NGU2ZmQ3MWQyMjIxN2ZkYzU1MjQ3ODdhZGU2Il0sCglbIjY3YjNjYzQzMDQ5ZDEzMDA3NDg1YTgxMzNiOTBkOTQ2NDhiY2YzMGU4M2JhMTc0ZjU0ODZhYjQyYzkxMDdjNjljNTUzMGM1ZTFmMDAwMDAwMDAwMzAwNTEwMGZmZmZmZmZmOTg3MGViYjY1YzE0MjYzMjgyZWE4ZDQxZTRmNGY0MGRmMTZiNTY1YzJjZjg2ZjFkMjJhOTQ5NGNhZDAzYTY3ZjAxMDAwMDAwMDE2YTVhMTIxYmVlNWUzNTlkYTU0OGU4MDhhZTFhZDZkZmNjYWU3YzY3Y2JiODg5OGQ4MTE2MzhhMWY0NTVhNjcxZTgyMmYyMjhlZjAzMDAwMDAwMDE1MWMxZmNjOWY5ODI1ZjI3YzBkZGUyN2VhNzA5ZGE2MmE4MGEyZmY5ZjZiMWI4NmE1ODc0YzUwZDZjMzdkMzlhZTMxZmI2YzhhMDAzMDAwMDAwMDE2MzU1M2I4Nzg2MDIwY2E3NGEwMDAwMDAwMDAwMDY2NTYzNTE1M2FiNTI3NWMwNzYwMDAwMDAwMDAwMDIwMDUyZTY1OWIwNWQiLCAiNjM2YWFiNmE2YSIsIDAsIC0zNDI3OTU0NTEsICJmNzdjMzMyMmM5N2IxNjgxYzE3YjFlYmE0NjFmYTI3YjA3ZTA0YzE1MzRlOGFhZjczNWE0OWNhYjcyYzdjMmUyIl0sCglbImJkYTFmZjY4MDRhM2MyMjhiN2ExMjc5OWE0YzIwOTE3MzAxZGQ1MDFjNjc4NDdkMzVkYTQ5NzUzM2E2MDY3MDFhZDMxYmY5ZDVlMDMwMDAwMDAwMWFjMTZhNmM1ZDAzY2Y1MTZjZDczNjRlNGNiYmY1YWVjY2Q2MmY4ZmQwM2NiNjY3NTg4M2EwNjM2YTdkYWViNjUwNDIzY2IxMjkxMDEwMDAwMDAwNTAwNjU2NTUzYWM0YTYzYzMwYjZhODM1NjA2OTA5YzllZmJhZTFiMjU5N2U5ZGIwMjBjNWVjZmMwNjQyZGE2ZGM1ODNmYmE0ZTg0MTY3NTM5YTgwMjAwMDAwMDA4NjU1MjUzNTM1MTUyMDBhY2ZmZmZmZmZmOTkwODA3NzIwYTU4MDNjMzA1YjdkYTA4YTlmMjRiOTJhYmUzNDNjNDJhYzllOTE3YTg0ZTFmMzM1YWFkNzg1ZDAwMDAwMDAwMDI2YTUyZmZmZmZmZmYwNDk4MWYyMDAzMDAwMDAwMDAwMWFiOGM3NjIyMDAwMDAwMDAwMDAyNTNhYjY5MGI5NjA1MDAwMDAwMDAwMTUxY2U4OGIzMDEwMDAwMDAwMDA3NTM1MjZhNmE1MTAwNjUwMDAwMDAwMCIsICIwMDAwNTJhYzUyNTMwMDAwIiwgMSwgLTE4MDkxOTMxNDAsICI1Mjk5YjBmYjdmYzE2ZjQwYTVkNmIzMzdlNzFmY2QxZWIwNGQyNjAwYWVmZDIyYzA2ZmU5YzcxZmUwYjBiYTU0Il0sCglbIjJlYWQyOGZmMDI0M2IzYWIyODVlNWQxMDY3ZjBlYzg3MjQyMjQ0MDJiMjFiOWNlZjliZTk2MmE4YjBkMTUzZDQwMWJlOTliYmVlMDAwMDAwMDAwNGFjNjM1MTUzZmZmZmZmZmY2OTg1OTg3YjdjMTM2MGM5ZmE4NDA2ZGQ2ZTBhNjExNDE3MDlmMGQ1MTk1Zjk0NmRhNTVlZDgzYmU0ZTM4OTUzMDEwMDAwMDAwMjAwNTNmZmZmZmZmZjAxNjUwM2QyMDUwMDAwMDAwMDA4NTI1MWFjNmE2NTY1NmE2YTAwMDAwMDAwIiwgIjUxYWJhYiIsIDEsIDE3MjM3OTM0MDMsICI2NzQ4M2VlNjI1MTZiZTE3YTI0MzFhMTYzZTk2ZmQ4OGEwOGZmMmNlODYzNGE1MmU0MmMxYmMwNGUzMGYzZjhhIl0sCglbImRiNDkwNGU2MDI2YjZkZDhkODk4ZjI3OGM2NDI4YTE3NjQxMGQxZmZiZGU3NWE0ZmEzN2NkYTEyMjYzMTA4Y2NkNGNhNjEzNzQ0MDEwMDAwMDAwNzY1NmEwMDAwNTE1MjYzZmZmZmZmZmYxZGI3ZDUwMDVjMWM0MGRhMGVkMTdiNzRjZjZiMmE2ZWUyYzMzYzllMGJhY2RhNzZjMGRhMjAxN2RjYWMyZmM3MDIwMDAwMDAwNGFiYWI2YTUzZmZmZmZmZmYwNDU0Y2YyMTAzMDAwMDAwMDAwMTUzNDYzYWVmMDAwMDAwMDAwMDA5YWI2YTYzMDA2NWFiNTI2MzYzODdlMGVkMDUwMDAwMDAwMDAwZThkMTZmMDUwMDAwMDAwMDAzNTJhYzYzZTQ1MjFiMjIiLCAiIiwgMSwgMTAyNzA0MjQyNCwgIjQ4MzE1YTk1ZTQ5Mjc3YWI2YTJkNTYxZWU0NjI2ODIwYjdiYWI5MTllZWEzNzJiNmJmNGU5OTMxYWIyMjFkMDQiXSwKCVsiZGNhMzFhZDEwNDYxZWFkNzQ3NTFlODNkOWE4MWRjZWUwOGRiNzc4ZDNkNzlhZDlhNmQwNzljZmRiOTM5MTlhYzFiMGI2MTg3MTEwMjAwMDAwMDA4NjUwMDUyNTM2NWFiNTFhYzdmN2U5YWVkNzhlMWVmOGQyMTNkNDBhMWM1MDE0NTQwM2QxOTYwMTk5ODVjODM3ZmZlODM4MzYyMjJmZTNlNTk1NWUxNzdlNzAxMDAwMDAwMDY1MjUxNTI1MjUzMDBmZmZmZmZmZjVlOTg0ODI4ODNjYzA4YTZmZTk0NmY2NzRjY2E0Nzk4MjJmMDU3NmE0M2JmNDExM2RlOWNiZjQxNGNhNjI4MDYwMTAwMDAwMDA2YWM1MzUxNmE1MjUzZmZmZmZmZmYwNzQ5MGIwYjg5ODE5OGVjMTZjMjNiNzVkNjA2ZTE0ZmExNmFhMzEwN2VmOTgxODU5NGY3MmQ1Nzc2ODA1ZWM1MDIwMDAwMDAwMzZhMDA1MmZmZmZmZmZmMDE5MzJhMjgwMzAwMDAwMDAwMDg2NWFiNjU1MWFjNmE1MTZhMjY4N2FhMDYiLCAiNjM1MzAwYWMiLCAyLCAtMTg4MDM2MjMyNiwgIjc0ZDZhMmZhNzg2NmZkOGI3NGIyZTM0NjkzZTJkNmZkNjkwNDEwMzg0YjdhZmRjZDY0NjFiMWFlNzFkMjY1Y2UiXSwKCVsiZTE0ZTFhOWYwNDQyYWI0NGRmYzVmNmQ5NDVhZDFmZjhhMzc2YmM5NjZhYWQ1NTE1NDIxZTk2ZGRiZTQ5ZTUyOTYxNDk5NWNhZmMwMzAwMDAwMDA1NTE2NTUxNTE2NWZmZmZmZmZmZjk3NTgyYjgyOTBlNWE1Y2ZlYjJiMGYwMTg4ODJkYmUxYjQzZjYwYjdmNDVlNGRkMjFkYmQzYThiMGNmY2EzYjAyMDAwMDAwMDBkYWEyNjc3MjZmZTA3NWRiMjgyZDY5NGI5ZmVlN2Q2MjE2ZDE3YThjMWYwMGIyMjI5MDg1NDk1YzVkYzViMjYwYzhmOGNkNWQwMDAwMDAwMDAzNjNhYzZhZmZmZmZmZmZhYWIwODNkMjJkMDQ2NTQ3MWM4OTZhNDM4YzZhYzNhYmY0ZDM4M2FlNzk0MjA2MTdhOGUwYmE4YjliYWE4NzJiMDEwMDAwMDAwOTYzNTI2NTYzYWM1MzYzYWJhYmQ5NDhiNWNlMDIyMTEzNDQwMjAwMDAwMDAwMDc2YTYzNjU1MjAwNmE1MzIyOTAxNzA0MDAwMDAwMDAwMGU2ZjYyYWM4IiwgIjUyNjM1MzYzNmE2NSIsIDMsIC00ODUyNjUwMjUsICIxYmM4YWQ3NmY5YjdjMzY2YzVkMDUyZGM0NzlkNmE4YTIwMTU1NjZkM2E0MmU5M2FiMTJmNzI3NjkyYzg5ZDY1Il0sCglbIjcyMGQ0NjkzMDI1Y2EzZDM0NzM2MGUyMTllOWJjNzQ2ZWY4ZjdiYzg4ZTg3OTUxNjJlNWUyZjBiMGZjOTlkYzE3MTE2ZmM5MzcxMDAwMDAwMDAwNDYzNTM1MjAwNDVjYjFmZDc5ODI0YTEwMGQzMGI2OTQ2ZWFiOWIyMTlkYWVhMmIwY2RjYTZjODYzNjdjMGMzNmFmOThmMTlhYzY0ZjM1NzUwMDIwMDAwMDAwMDhhMWM4ODEwMDNlZDE2ZjMwNTAwMDAwMDAwMDg1MzZhNjM2MzAwMDBhYmFjNDVlMGU3MDQwMDAwMDAwMDAxNTFmNjU1MWEwNTAwMDAwMDAwMDk2MzUzNjU2NTUxNTM2M2FiYWIwMDAwMDAwMCIsICI2NTUzYWI2YTZhNTEwMDAwYWIiLCAxLCAxMjQ5MDkxMzkzLCAiYTU3NWZhNGY1OWE4ZTkwY2QwN2RlMDEyYzc4ZmU4Zjk4MTE4M2JiMTcwYjljNTBmY2MyOTJiOGMxNjRjYmMzYiJdLAoJWyI2OWRmODQyYTA0YzE0MTBiZmNhMTA4OTY0NjdjZTY2NGNmYTMxYzY4MWE1ZGFjMTAxMDZiMzRkNGI5ZDRkNmQwZGMxZWFjMDFjMTAwMDAwMDAwMDU1MTUzNmE1MTY1MjY5ODM1Y2E0YWQ3MjY4NjY3YjE2ZDBhMmRmMTU0ZWM4MWUzMDQyOTBkNWVkNjllMDA2OWI0M2Y4Yzg5ZTY3MzMyODAwNWUyMDAwMDAwMDAwNzZhNTE1MzAwNmFhY2FiZmZmZmZmZmZjOTMxNGJkODBiMTc2NDg4ZjNkNjM0MzYwZmNiYTkwYzNhNjU5ZTc0YTUyZTEwMGFjOTFkMzg5NzA3MmUzNTA5MDEwMDAwMDAwNzY1YWJhYzUxNjM2MzYzZmZmZmZmZmYwZTA3NjhiMTNmMTBmMGZiZDJmYTNmNjhlNGI0ODQxODA5YjNiNWJhMGU1Mzk4N2MzYWFmZmNmMDllZWUxMmJmMDMwMDAwMDAwOGFjNTM1MjYzNTI2YTUzYWM1MTRmNGMyNDAyZGE4ZmFiMDQwMDAwMDAwMDAwMWVmMTUyMDEwMDAwMDAwMDA0NTE1MjZhNTJkMGVjOWFjYSIsICI1MjUzNjVhYzUyIiwgMSwgMzEzOTY3MDQ5LCAiYTcyYTc2MGIzNjFhZjQxODMyZDJjNjY3Yzc0ODhkYzk3MDIwOTE5MThkMTFlMzQ0YWZjMjM0YTRhZWEzZWM0NCJdLAoJWyJhZGYyMzQwZDAzYWY1YzU4OWNiNWQyOGMwNjYzNWFjMDdkZDA3NTdiODg0ZDQ3NzdiYTg1YTZhN2M0MTA0MDhhZDVlZmE4YjE5MDAxMDAwMDAwMDQ1MTAwYWIwMGZmZmZmZmZmODA4ZGMwMjMxYzk2ZTY2NjdjMDQ3ODY4NjU3MjcwMTM5MjJiY2I3ZGIyMDczOWI2ODZmMGMxN2Y1YmE3MGU4ZjAzMDAwMDAwMDBmZDIzMzJhNjU0YjU4MDg4MWE1ZTJiZmVjODMxM2Y1YWE4NzhhZTk0MzEyZjM3NDQxYmYyZDIyNmU3ZmM5NTNkY2YwYzc3YWIwMDAwMDAwMDAxNjNhYTczZGM1ODA0MTJmOGMyMDUwMDAwMDAwMDA1NjM2YWFjYWM2M2RhMDJkNTAyMDAwMDAwMDAwMTUzZTc0YjUyMDIwMDAwMDAwMDAxNTM2YjI5M2QwMzAwMDAwMDAwMDk2MzY1NTJhYmFiYWNhYjUyNjUwMDAwMDAwMCIsICIwMDAwNTJhYjUyYWJhYmFiIiwgMCwgLTU2ODY1MTE3NSwgIjJjNDVkMDIxZGI1NDVkZjcxNjdhYzAzYzllZTU2NDczZjIzOThkOWIyYjczOWNmM2ZmM2UwNzQ1MDFkMzI0ZjgiXSwKCVsiZTRmZWM5ZjEwMzc4YTk1MTk5YzFkZDIzYzYyMjg3MzJjOWRlMGQ3OTk3YmYxYzgzOTE4YTVjZmQzNjAxMjQ3NmMwYzNjYmEyNDAwMjAwMDAwMDA4NTE2NTUzNjUwMGFjMDAwMGFkMDhhYjkzZmI0OWQ3N2QxMmE3Y2NkYmI1OTZiYzUxMTA4NzY0NTFiNTNhNzlmZGNlNDMxMDRmZjFjMzE2YWQ2MzUwMWRlODAxMDAwMDAwMDQ2YTYzNTJhYjc2YWY5OTA4NDYzNDQ0YWVlY2QzMjUxNmEwNGRkNTgwM2UwMjY4MGVkN2YxNjMwNzI0MmE3OTQwMjRkOTMyODc1OTUyNTBmNDAwMDAwMDAwMDA4OTgwNzI3OTA0MWE4MmU2MDMwMDAwMDAwMDAyMDA1MjE0MjkxMDAyMDAwMDAwMDAwNTUyNTM2MzZhNjNmMjBiOTQwNDAwMDAwMDAwMDA0MDQ5ZWQwNDAwMDAwMDAwMDUwMGFiNTI2NWFiNDNkZmFmN2QiLCAiNjU2MzUyNmFhYyIsIDIsIC0xOTIzNDcwMzY4LCAiMzJmM2MwMTJlY2E5YTgyM2JlYmI5YjI4MjI0MGFlYzQwY2E2NWRmOWYzOGRhNDNiMWRjZmEwY2FjMGMwZGY3ZSJdLAoJWyI0MDAwZDM2MDAxMDBiN2EzZmY1YjQxZWM4ZDZjY2RjOGIyNzc1YWQwMzQ3NjViYWQ1MDUxOTJmMDVkMWY1NWQyYmMzOWQwY2JlMTAxMDAwMDAwMDdhYjUxNjVhYzZhNTE2M2ZmZmZmZmZmMDM0OTQ5MTUwMTAwMDAwMDAwMDI2YTZhOTJjOWY2MDAwMDAwMDAwMDA4YWI2NTUzYWI2YWFiNjM1MjAwZTY5NzA0MDAwMDAwMDAwNzYzNmE1MzUzNTI1MzY1MjM3YWU3ZDIiLCAiNTIwMDAwNjMiLCAwLCAtODgwMDQ2NjgzLCAiYzc2MTQ2ZjY4ZjQzMDM3Mjg5YWFlYjJiYWNmNDc0MDhjZGRjMGZiMzI2YjM1MGViNGY1ZWY2ZjBmODU2NDc5MyJdLAoJWyJlYWJjMGFhNzAxZmU0ODljMGU0ZTYyMjJkNzJiNTJmMDgzMTY2YjQ5ZDYzYWQxNDEwZmI5OGNhZWQwMjdiNmE3MWMwMmFiODMwYzAzMDAwMDAwMDc1MjUzYWI2MzUzMDA2NWZmZmZmZmZmMDFhNWRjMGIwNTAwMDAwMDAwMDI1MzUzM2U4MjAxNzciLCAiIiwgMCwgOTU0NDk5MjgzLCAiMWQ4NDliOTJlZWRiOWJmMjZiZDRjZWQ1MmNlOWNiMDU5NTE2NDI5NWIwNTI2ODQyYWIxMDk2MDAxZmNkMzFiMSJdLAoJWyJkNDhkNTVkMzA0YWFkMDEzOTc4M2I0NDc4OWE3NzE1MzlkMDUyZGI1NjUzNzlmNjY4ZGVmNTA4NGRhYmEwZGZkMzQ4ZjdkY2Y2YjAwMDAwMDAwMDA2ODI2ZjU5ZTVmZmJhMGRkMGNjYmFjODljMWUyZDY5YTM0NjUzMWQ3Zjk5NWRlYTJjYTZkN2U2ZDkyMjVkODFhZWMyNTdjNjAwMzAwMDAwMDA5NmE2NTUyMDBhYzY1NjU1MmFjZmZmZmZmZmZhMTg4ZmZiZDUzNjVjYWU4NDRjOGUwZGVhNjIxM2M0ZDFiMjQwNzI3NGFlMjg3Yjc2OWFiMGJmMjkzZTA0OWViMDMwMDAwMDAwNWFjNmE2YWFiNTFhZDFjNDA3YzViMTE2Y2E4ZjY1ZWQ0OTZiNDc2MTgzZjg1ZjA3MmM1ZjhhMDE5M2E0MjczZTIwMTViMWNjMjg4YmYwM2U5ZTIwMzAwMDAwMDAyNTJhYmZmZmZmZmZmMDQwNzZmNDQwNDAwMDAwMDAwMDY2NTUzNTNhYmFiNTNiZTY1MDAwNTAwMDAwMDAwMDNhYzY1YWMzYzE1MDQwNTAwMDAwMDAwMDk1MTAwYWI1MzYzNTM1MTZhNTJlZDNhYmEwNDAwMDAwMDAwMDkwMGFjNTNhYjUzNjM2YWFiYWMwMDAwMDAwMCIsICI1MjUzNTI2NTYzYWNhYyIsIDIsIC0xNTA2MTA4NjQ2LCAiYmJlZTE3Yzg1ODI1MTQ3NDRiYWI1ZGY1MDAxMmM5NGIwZGI0YWZmNTk4NGQyZTEzYThkMDk0MjE2NzQ0MDRlMiJdLAoJWyI5NzQ2ZjQ1YjAzOWJmZTcyMzI1OGZkYjZiZTc3ZWI4NTkxN2FmODA4MjExZWI5ZDQzYjE1NDc1ZWUwYjAxMjUzZDMzZmMzYmZjNTAyMDAwMDAwMDY1MTYzMDA2YTY1NTMxMmIxMjU2MmRjOWM1NGUxMTI5OTIxMDI2NjQyODYzMmE3ZDBlZTMxZDA0ZGZjNzM3NWRjYWQyZGE2ZTljMTE5NDdjZWQwZTAwMDAwMDAwMDAwOTA3NDA5NWE1YWM0ZGYwNTc1NTQ1NjZkZDA0NzQwYzYxNDkwZTFkMzgyNjAwMGFkOWQ4Zjc3N2E5MzM3M2M4ZGRkYzQ5MThhMDAwMDAwMDAwMjUzNTFmZmZmZmZmZjAxMjg3NTY0MDMwMDAwMDAwMDA0NjM2YTAwYWIwMDAwMDAwMCIsICI1MiIsIDIsIC0xMzgwNDExMDc1LCAiODRhZjE2MjMzNjZjNGRiNjhkODFmNDUyYjg2MzQ2ODMyMzQ0NzM0NDkyYjljMjNmYmI4OTAxNWU1MTZjNjBiMiJdLAoJWyI4NzMxYjY0OTAzZDczNWJhMTZkYTY0YWY1MzdlYWY0ODdiNTdkNzM5NzdmMzkwYmFhYzU3YzdiNTY3Y2IyNzcwZGZhMmVmNjU4NzAxMDAwMDAwMDE2MzVhZWRkOTkwYzQyNjQ1NDgyMzQwZWFjYjBiZmE0YTBhOWU4ODgwNTczODljNzI4YjViNmE4NjkxY2RlYjFhNmE2N2I0NWUxNDAyMDAwMDAwMDhhYzUzNTI2YTUyNTE2NTUxZmZmZmZmZmY0NWM0ZjU2N2M0N2I4ZDk5OTkxNmZkNDk2NDJjYmM1ZDEwZDQzYzMwNGI5OWUzMmQwNDRkMzUwOTE2NzljYjg2MDEwMDAwMDAwMzAwNmE1MWZmZmZmZmZmMDE3NmQ2YzIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsICJhYjZhNjVhYjUzIiwgMiwgLTEyMjE1NDY3MTAsICJjY2ZkYmEzNmQ5NDQ1ZjQ0NTFmYjdjYmYwNzUyY2M4OWMyM2Q0ZmM2ZmZmMGYzOTMwZDIwZTExNmY5ZGIwYjk1Il0sCglbImY1Y2ZjNTJmMDE2MjA5YWIxMzg1ZTg5MGMyODY1YTc0ZTkzMDc2NTk1ZDFjYTc3Y2JlOGZiZjIwMjJhMmYyMDYxYTkwZmIwZjNlMDEwMDAwMDAwMjUzYWNmZmZmZmZmZjAyN2RlNzNmMDIwMDAwMDAwMDA4NTI1MmFjNTEwMDUyYWNhYzQ5Y2Q2YTAyMDAwMDAwMDAwMGU2YzJjYjU2IiwgIjUxNjU1MjUzNTMwMGFiNjMiLCAwLCAtMTE5NTMwMjcwNCwgIjU1MzI3MTc0MDJhMmRhMDFhMWRhOTEyZDgyNDk2NDAyNDE4NWNhN2U4ZDRhZDE3NDg2NTlkYzM5M2ExNDE4MmIiXSwKCVsiZGYwYTMyYWUwMWM0NjcyZmQxYWJkMGIyNjIzYWFlMGExYTgyNTYwMjhkZjU3ZTUzMmY5YTQ3MmQxYTljZWIxOTQyNjdiNmVlMTkwMjAwMDAwMDA5NTM2YTZhNTE1MTZhNTI1MjUxYjU0NWY5ZTgwMzQ2OWEyMzAyMDAwMDAwMDAwNDY1NTI2NTAwODEwNjMxMDQwMDAwMDAwMDAwNDQxZjViMDUwMDAwMDAwMDA2NTMwMDUxMDA2YWFjZWIxODNjNzYiLCAiNTM2YTYzNTI1MmFjNmEiLCAwLCAxNjAxMTM4MTEzLCAiOWEwNDM1OTk2Y2M1OGJkYmEwOTY0MzkyN2ZlNDhjMWZjOTA4ZDQ5MWEwNTBhYmJlZjhkYWVjODdmMzIzYzU4ZiJdLAoJWyJkMTAyZDEwYzAyOGI5YzcyMWFiYjI1OWZlNzBiYzY4OTYyZjZjYWUzODRkYWJkNzc0NzdjNTljYmViMWZiMjYyNjZlMDkxYmEzZTAxMDAwMDAwMDI1MTZhZmZmZmZmZmZlOGQ3MzA1YTc0ZjQzZTMwYzc3MjEwOTg0OWY0Y2Q2ZmI4NjdjNzIxNmU2ZDkyZTI3NjA1ZTY5YTA4MTg4OTk3MDAwMDAwMDAwMjZhNjVlY2Y4MmQ1ODAyN2RiNDYyMDUwMDAwMDAwMDAyNjU1MmMyOGVkMzAxMDAwMDAwMDAwMWFiMDAwMDAwMDAiLCAiMDA1MWFiNTE1MzY1IiwgMSwgLTEzMTgxNTQ2MCwgIjFkMTc1N2E3ODJjYjU4NjAzMDIxMjhiY2JlOTM5ODI0MzEyNGEyZjgyZDY3MWExMTNmNzRmOGU1ODJjN2ExODIiXSwKCVsiY2VmOTMwZWQwMWMzNmZjYjFkNjJjZWVmOTMxYmVmNTcwOThmMjdhNzdhNDI5OTkwNGNjMGNiYjQ0NTA0ODAyZDUzNWZiMTE1NTcwMTAwMDAwMDAxNTNmZmZmZmZmZjAyYzg2NTc0MDMwMDAwMDAwMDA4NjNhYzY1NTI1MzUyMDA2M2Q1OTMzODA0MDAwMDAwMDAwNDZhYWI1MzZhMDAwMDAwMDAiLCAiNjU2YTAwNTFhYjYzNjVhYjUzIiwgMCwgLTM1MTMxMzMwOCwgImU2OWRiYTNlZmI1YzAyYWYyYWIxMDg3ZDBhOTkwNjc4Nzg0NjcxZjQ3NDRkMDFjYTA5N2Q3MWFlYzE0ZGQ4ZTkiXSwKCVsiYjFjMGI3MTgwNGRmZjMwODEyYjkyZWVmYjUzM2FjNzdjNGI5ZmRiOWFiMmY3NzEyMGE3NjEyOGQ3ZGE0M2FkNzBjMjBiYmZiOTkwMjAwMDAwMDAyNTM2MzkyNjkzZTYwMDFiYzU5NDExYWViZjE1YTNkYzYyYTY1NjZlYzcxYTMwMjE0MWIwYzczMGEzZWNjOGRlNWQ3NjUzOGIzMGY1NTAxMDAwMDAwMDY2NTUzNTI1MmFjNTE0Yjc0MGM2MjcxZmI5ZmU2OWZkZjgyYmY5OGI0NTlhN2ZhYThhM2I2MmYzYWYzNDk0M2FkNTVkZjQ4ODFlMGQ5M2QzY2UwYWMwMjAwMDAwMDAwYzQxNTg4NjZlYjlmYjczZGEyNTIxMDJkMWU2NGEzY2U2MTFiNTJlODczNTMzYmU0M2U2ODgzMTM3ZDBhYWEwZjYzOTY2ZjA2MDAwMDAwMDAwMWFiZmZmZmZmZmYwNGE2MDViNjA0MDAwMDAwMDAwODUxMDA2YTY1NmE2MzAwNTJmNDlhMDMwMDAwMDAwMDAwMDI1MjUxNWE5NGUxMDUwMDAwMDAwMDA5YWJhYzY1YWIwMDUyYWJhYjAwZmQ4ZGQwMDIwMDAwMDAwMDA2NTE1MzUxNjM1MjZhMjU2Njg1MmQiLCAiYWM1MzYzIiwgMCwgLTE3MTg4MzE1MTcsICJiMGRjMDMwNjYxNzgzZGQ5OTM5ZTRiZjFhNmRmY2JhODA5ZGEyMDE3ZTFiMzE1YTYzMTJlNTk0MmQ3MTRjZjA1Il0sCglbIjZhMjcwZWU0MDRlYmM4ZDEzN2NmZDRiYjZiOTJhYTM3MDIyMTNhMzEzOWE1NzljMWZjNmY1NmZiYzdlZGQ5NTc0ZWYxN2IxM2YzMDEwMDAwMDAwOWFiMDBhYjY1NjU2NWFiYWJhY2ZmZmZmZmZmYWE2NWIxYWI2YzZkODcyNjBkOWUyN2E0NzJlZGNlYjdkZDIxMjQ4M2U3MmQ5MGYwODg1N2FiZjFkYmZkNDZkMTAxMDAwMDAwMDBmZmZmZmZmZmY5M2M0YzljODRjNGRiYmU4YTkxMmI5OWEyODMwY2ZlMzQwMWFlYmM5MTkwNDFkZTA2M2Q2NjBlNTg1ZmM5ZjAwMjAwMDAwMDA5NmFhYmFjYWI1MmFjNmE1M2FjZmE2ZGNlZjNmMjgzNTVhOGQ5OGVlZTUzODM5NDU1NDQ1ZWVlZTgzZWVjZDJjODU0ZTc4NGVmYTUzY2VlNjk5ZGJmZWNhZWJkMDEwMDAwMDAwM2FiNmE1MWZmZmZmZmZmMDRmN2Q3MWIwNTAwMDAwMDAwMDlhYzZhNTM2YWFjNmE2MzY1NTEzYzM3NjUwNTAwMDAwMDAwMDY1MjY1YWJhYjZhNTNmYTc0MjAwMjAwMDAwMDAwMDAzOWVkODIwMzAwMDAwMDAwMDk1MTZhYWM2MzUxNjVhYjUxYWIyZmRhYmQxNyIsICJhYjUzNTI1MjUyNjU2MyIsIDEsIC0xMzI2MjEwNTA2LCAiMWRlYzBkNWViOTIxYmY1YjJkZjM5Yzg1NzZlMTljMzhkMGMxNzI1NGE0YTBiNzhhYzRiNTQyMmJjYzQyNjI1OCJdLAoJWyIzNjU3ZTQyNjAzMDRjY2RjMTk5MzZlNDdiZGYwNThkMzYxNjdlZTNkNGViMTQ1YzUyYjIyNGVmZjA0YzllYjVkMWI0ZTQzNGRmYzAwMDAwMDAwMDFhYjU4YWVmZTU3NzA3YzY2MzI4ZDNjY2VlZjJlNmY1NmFiNmI3NDY1ZTU4NzQxMGM1ZjczNTU1YTUxM2FjZTJiMjMyNzkzYTc0NDAwMDAwMDAwMDM2YTAwNjUyMmU2OWQzYTc4NWI2MWFkNDFhNjM1ZDU5YjNhMDZiMjc4MGE5MjE3M2Y4NWY4ZWQ0Mjg0OTFkMGFhYTQzNjYxOWJhYTljNDUwMTAwMDAwMDA0NjM1MWFiYWIyNjA5NjI5OTAyZWI3NzkzMDUwMDAwMDAwMDAwYTFiOTY3MDQwMDAwMDAwMDAzNTI1MzUzYTM0ZDYxOTIiLCAiNTE2YSIsIDAsIC0xNzYxODc0NzEzLCAiMGEyZmY0MWY2ZDE1NWQ4ZDBlMzdjZDk0MzhmM2IyNzBkZjlmOTIxNGNkYThlOTVjNzZkNWEyMzljYTE4OWRmMiJdLAoJWyJhMGViNmRjNDAyOTk0ZTQ5M2M3ODdiNDVkMWY5NDZkMjY3YjA5YzU5NmM1ZWRkZTA0M2U2MjBjZTNkNTllOTViMmI1YjkzZDQzMDAyMDAwMDAwMDk2YTUyNTI1MjZhYWM2M2FiNjU1NTY5NDI4N2EyNzllMjllZTQ5MWMxNzdhODAxY2Q2ODViODc0NGEyZWFiODM4MjQyNTVhM2JjZDA4ZmMwZTNlYTEzZmI4ODIwMDAwMDAwMDA5YWJhYjYzNjVhYjUyYWIwMDYzZmZmZmZmZmYwMjllNDI0YTA0MDAwMDAwMDAwOGFjYWI1M2FiNTE2YTYzNmEyMzgzMGYwNDAwMDAwMDAwMDE2YWRmNDljMWY5IiwgImFjMDA2NWFjNjUwMDAwNTI1MiIsIDEsIDY2OTI5NDUwMCwgImUwNWUzZDM4MzYzMWE3ZWQxYjc4MjEwYzEzYzJlYjI2NTY0ZTU1NzdkYjdkZGZjZWEyNTgzYzdjMDE0MDkxZDQiXSwKCVsiNmU2N2MwZDMwMjc3MDFlZjcxMDgyMjA0Yzg1ZWQ2M2M3MDBlZjE0MDBjNjVlZmI2MmNlMzU4MGQxODdmYjM0ODM3NmEyM2U5NzEwMjAwMDAwMDAxNjU1YjkxMzY5ZDMxNTViYTkxNmEwYmM2ZmU0ZjVkOTRjYWQ0NjFkODk5YmI4YWFhYzM2OTlhNzU1ODM4YmZjMjI5ZDY4Mjg5MjAwMTAwMDAwMDA3NjU1MzYzNTM1MjZhNTJmZmZmZmZmZjA0YzBjNzkyMDAwMDAwMDAwMDA1NjUwMDUyNTM1MzcyZjc5ZTAwMDAwMDAwMDAwMTUyN2ZjMGVlMDEwMDAwMDAwMDA1YWM1MzAwYWI2NWQxYjNlOTAyMDAwMDAwMDAwMjUxYWJhOTQyYjI3OCIsICI2YTUxNTEiLCAwLCAxNzQxNDA3Njc2LCAiZTY1N2UyYzhlYzRlYmM3NjlkZGQzMTk4YTgzMjY3YjQ3ZDRmMmE0MTlmYzczN2U4MTM4MTJhY2VmYWQ5MmZmNyJdLAoJWyI4ZjUzNjM5OTAxZjFkNjQzZTAxZmM2MzFmNjMyYjdhMTZlODMxZDg0NmEwMTg0Y2RjZGEyODliOGZhNzc2N2YwYzI5MmViMjIxYTAwMDAwMDAwMDQ2YTUzYWJhY2ZmZmZmZmZmMDM3YTJkYWEwMTAwMDAwMDAwMDU1M2FjNmE2YTUxZWFjMzQ5MDIwMDAwMDAwMDA1YWM1MjY1NTI2Mzg0MjFiMzA0MDAwMDAwMDAwNzAwNmEwMDUxMDBhYzYzMDQ4YTE0OTIiLCAiYWM2NSIsIDAsIDEwMzM2ODU1NTksICJkYTg2YzI2MGQ0MmE2OTIzNThmNDY4OTNkNmY5MTU2Mzk4NWQ4NmVlYjllYTllMjFjZDM4YzJkOGZmY2ZjYzRkIl0sCglbIjQ5MWY5OWNiMDFiZGZiYTFhYTIzNWU1NTM4ZGFjMDgxZmFlOWNlNTVmOTYyMmRlNDgzYWZlN2U2NTEwNWMyYjBkYjc1ZDM2MGQyMDAwMDAwMDAwNDUyNTE2MzYzNDBiNjBmMGYwNDE0MjEzMzAzMDAwMDAwMDAwOTYzNTFhYzAwMDA1MTYzNjU1M2NlMjgyMjA0MDAwMDAwMDAwNTUxNmEwMGFjNTE4MGM4ZTQwMzAwMDAwMDAwMDI1MTAwY2FhODU3MDQwMDAwMDAwMDAyMDAwMGNmZGM4ZGE2IiwgIjZhNTEwMDUxNmFhYjY1NTM2NSIsIDAsIC05NTM3MjczNDEsICIzOTdjNjg4MDNiN2NlOTUzNjY2ODMwYjAyMjFhNWUyYmNmODk3YWEyZGVkOGUzNmE2Yjc2YzQ5N2RjYjFhMmUxIl0sCglbImIzY2FkM2E3MDQxYzJjMTdkOTBhMmNkOTk0ZjZjMzczMDc3NTNmYTM2MzVlOWVmMDVhYjhiMWZmMTIxY2ExMTIzOWEwOTAyZTcwMDMwMDAwMDAwOWFiNjM1MzAwMDA2YWFjNTE2M2ZmZmZmZmZmY2VjOTE3MjJjNzQ2ODE1NmRjZTQ2NjRmM2M3ODNhZmVmMTQ3ZjBlNmY4MDczOWM4M2I1ZjA5ZDVhMDlhNTcwNDAyMDAwMDAwMDQ1MTZhNjU1MmZmZmZmZmZmOTY5ZDFjNmRhZjhlZjUzYTcwYjdjZGYxYjQxMDJmYjMyNDAwNTVhOGVhZWFlZDI0ODk2MTdjZDg0Y2ZkNTZjZjAyMDAwMDAwMDM1MmFiNTNmZmZmZmZmZjQ2NTk4YjY1Nzk0OTRhNzdiNTkzNjgxYzMzNDIyYTk5NTU5Yjk5OTNkNzdjYTJmYTk3ODMzNTA4YjBjMTY5ZjgwMjAwMDAwMDA5NjU1MzAwNjU1MzY1NTE2MzUxZmZmZmZmZmYwNGQ3ZGRmODAwMDAwMDAwMDAwODUzNTM2YTY1YWM2MzUxYWIwOWYzNDIwMzAwMDAwMDAwMDU2YWFiNjVhYmFjMzM1ODlkMDQwMDAwMDAwMDA5NTI2NTZhNjU2NTUxNTFhY2FjOTQ0ZDZmMDQwMDAwMDAwMDAwNmE4MDA0YmEiLCAiMDA1MTY1IiwgMSwgMTAzNTg2NTUwNiwgImZlMWRjOWU4NTU0ZGVlY2Y4ZjUwYzQxN2M2NzBiODM5Y2M5ZDY1MDcyMmViYWFmMzY1NzI0MTg3NTYwNzVkNTgiXSwKCVsiZTFjZmQ3M2IwMTI1YWRkOWU5ZDY5OWY1YTQ1ZGNhNDU4MzU1YWYxNzVhN2JkNDQ4NmViZWYyOGYxOTI4ZDg3ODY0Mzg0ZDAyZGYwMjAwMDAwMDAzNmEwMDUxZmZmZmZmZmYwMzU3ZGYwMzAxMDAwMDAwMDAwMzZhNTM2NTc3N2UyZDA0MDAwMDAwMDAwNzYzYWI2YTAwMDA1MjY1ZjQzNGE2MDEwMDAwMDAwMDAzNTE2NTUxMDAwMDAwMDAiLCAiYWI1M2FiIiwgMCwgLTE5MzY1MDA5MTQsICI5NTBmNGI0ZjcyY2NkZjhhNmEwZjM4MTI2NWQ2Yzg4NDJmZGI3ZThiM2RmM2U5NzQyOTA1ZjY0M2IyNDMyYjY5Il0sCglbImNmNzgxODU1MDQwYTc1NWY1YmE4NWVlZjkzODM3MjM2YjM0YTVkM2RhZWIyZGJiZGNmNThiYjgxMTgyOGQ4MDZlZDA1NzU0YWI4MDEwMDAwMDAwMzUxYWM1M2ZmZmZmZmZmZGExZTI2NDcyN2NmNTVjNjdmMDZlYmNjNTZkZmU3ZmExMmFjMmE5OTRmZWNkMDE4MGNlMDllZTE1YzQ4MGY3ZDAwMDAwMDAwMDk2MzUxNTE2YTUxYWNhYzAwYWI1M2RkNDlmZjlmMzM0YmVmZDZkNmY4N2YxYTgzMmNkZGZkODI2YTkwYjc4ZmQ4Y2YxOWE1MmNiODI4Nzc4OGFmOTRlOTM5ZDYwMjAwMDAwMDA3MDA1MjUyNTFhYzUyNjMxMGQ1NGE3ZTg5MDBlZDYzM2YwZjZmMDg0MTE0NWFhZTdlZTBjYmJiMWUyYTBjYWU3MjRlZTQ1NThkYmFiZmRjNThiYTY4NTUwMTAwMDAwMDA1NTI1MzZhNTNhYmZkMWIxMDExMDJjNTFmOTEwNTAwMDAwMDAwMDk2MzAwNjU2YTUyNTI1MjY1NmEzMDBiZWUwMTAwMDAwMDAwMDlhYzUyMDA1MjYzNjM1MTUxYWJlMTkyMzVjOSIsICI1MzAwNTM2NSIsIDIsIDE0MjI4NTQxODgsICJkNTk4MWJkNDQ2NzgxN2MxMzMwZGE3MmRkYjg3NjBkNmMyNTU2Y2Q4MDkyNjRiMmQ4NWU2ZDI3NDYwOWZjM2EzIl0sCglbImZlYTI1NmNlMDEyNzJkMTI1ZTU3N2MwYTA5NTcwYTcxMzY2ODk4MjgwZGRhMjc5YjAyMTAwMGRiMTMyNWYyN2VkZGE0MWE1MzQ2MDEwMDAwMDAwMmFiNTNjNzUyYzIxYzAxM2MyYjNhMDEwMDAwMDAwMDAwMDAwMDAwMDAiLCAiNjUiLCAwLCAxMTQ1NTQzMjYyLCAiMDc2YjlmODQ0ZjZhZTQyOWRlMjI4YTJjMzM3YzcwNGRmMTY1MmMyOTJiNmM2NDk0ODgyMTkwNjM4ZGFkOWVmZCJdCl0K","base64")); +var dataSecp256k1 = JSON.parse(Buffer("ewogICJuVGltZXNHIjogWwogICAgeyJuIjogICJBQTVFMjhENkE5N0EyNDc5QTY1NTI3RjcyOTAzMTFBMzYyNEQ0Q0MwRkExNTc4NTk4RUUzQzI2MTNCRjk5NTIyIiwKICAgICAicHgiOiAiMzRGOTQ2MEYwRTRGMDgzOTNEMTkyQjNDNTEzM0E2QkEwOTlBQTBBRDlGRDU0RUJDQ0ZBQ0RGQTIzOUZGNDlDNiIsCiAgICAgInB5IjogIjBCNzFFQTlCRDczMEZEODkyM0Y2RDI1QTdBOTFFN0RENzcyOEE5NjA2ODZDQjVBOTAxQkI0MTlFMEYyQ0EyMzIifSwKICAgIHsibiI6ICAiN0UyQjg5N0I4Q0VCQzYzNjE2NjNBRDQxMDgzNTYzOTgyNkQ1OTBGMzkzRDkwQTk1Mzg4ODE3MzUyNTZERkFFMyIsCiAgICAgInB4IjogIkQ3NEJGODQ0QjA4NjI0NzUxMDNEOTZBNjExQ0YyRDg5ODQ0N0UyODhEMzRCMzYwQkM4ODVDQjhDRTdDMDA1NzUiLAogICAgICJweSI6ICIxMzFDNjcwRDQxNEM0NTQ2Qjg4QUMzRkY2NjQ2MTFCMUMzOENFQjFDMjFENzYzNjlEN0E3QTA5NjlENjFEOTdEIn0sCiAgICB7Im4iOiAgIjY0NjFFNkRGMEZFN0RGRDA1MzI5RjQxQkY3NzFCODY1NzgxNDNENEREMUY3ODY2RkI0Q0E3RTk3QzVGQTk0NUQiLAogICAgICJweCI6ICJFOEFFQ0MzNzBBRUREOTUzNDgzNzE5QTExNjcxMTk2M0NFMjAxQUMzRUIyMUQzRjMyNTdCQjQ4NjY4QzZBNzJGIiwKICAgICAicHkiOiAiQzI1Q0FGMkYwRUJBMUREQjJGMEYzRjQ3ODY2Mjk5RUY5MDc4NjdCN0QyN0U5NUIzODczQkY5ODM5N0IyNEVFMSJ9LAogICAgeyJuIjogICIzNzZBM0EyQ0RDRDEyNTgxRUZGRjEzRUU0QUQ0NEM0MDQ0QjhBMDUyNEM0MjQyMkE3RTFFMTgxRTRERUVDQ0VDIiwKICAgICAicHgiOiAiMTQ4OTBFNjFGQ0Q0QjBCRDkyRTVCMzZDODEzNzJDQTZGRUQ0NzFFRjNBQTYwQTNFNDE1RUU0RkU5ODdEQUJBMSIsCiAgICAgInB5IjogIjI5N0I4NThEOUY3NTJBQjQyRDNCQ0E2N0VFMEVCNkRDRDFDMkI3QjBEQkUyMzM5N0U2NkFEQzI3MjI2M0Y5ODIifSwKICAgIHsibiI6ICAiMUIyMjY0NEE3QkUwMjY1NDg4MTBDMzc4RDBCMjk5NEVFRkE2RDJCOTg4MTgwM0NCMDJDRUZGODY1Mjg3RDFCOSIsCiAgICAgInB4IjogIkY3M0M2NUVBRDAxQzUxMjZGMjhGNDQyRDA4NzY4OUJGQTA4RTEyNzYzRTBDRUMxRDM1QjAxNzUxRkQ3MzVFRDMiLAogICAgICJweSI6ICJGNDQ5QTgzNzY5MDY0ODJBODRFRDAxNDc5QkQxODg4MkI5MTlDMTQwRDYzODMwN0YwQzA5MzRCQTEyNTkwQkRFIn0KICBdCn0K","base64")); + +module.exports.dataValid = dataValid; +module.exports.dataInvalid = dataInvalid; +module.exports.dataEncodeDecode = dataEncodeDecode; +module.exports.dataTxValid = dataTxValid; +module.exports.dataTxInvalid = dataTxInvalid; +module.exports.dataScriptValid = dataScriptValid; +module.exports.dataScriptInvalid = dataScriptInvalid; +module.exports.dataScriptAll = dataScriptValid.concat(dataScriptInvalid); +module.exports.dataUnspent = dataUnspent; +module.exports.dataUnspentSign = dataUnspentSign; +module.exports.dataSigCanonical = dataSigCanonical; +module.exports.dataSigNonCanonical = dataSigNonCanonical; +module.exports.dataBase58KeysValid = dataBase58KeysValid; +module.exports.dataBase58KeysInvalid = dataBase58KeysInvalid; +module.exports.dataSighash = dataSighash; +module.exports.dataSecp256k1 = dataSecp256k1; + +var buffer = new Buffer(Buffer("CxEJB0MfAAACAAAAS6qpUHw7J5CDl+p7wXepmOn0/ji51RML57U1PAAAAACX/EyXhoKI6YT/nyRvLDhRD1w3o9W0Gq5wBLAeLdXmWM4QvlHA/z8c1Ts41hYBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wsD5FIBBi9QMlNIL/////8DQDQVKgEAAAAZdqkU7pp1kPkeBIMgVPBkW78kPJ+sjiKIrAAAAAAAAAAAQ0EE/9A95EpuEbmRfzop+UQyg9mHHJ10PvMNXt3NNwlLZNGz2AkElrUyVnhr9cgpMuwjw7dNnwWm+VqLVSk1JlZmS6wAAAAAAAAAACUkWOmeZuK5C9iyoOK/zOkeHwnudiHZXppyjKI3LUXfPe0AAAAAAAAAAAEAAAAB1uFJlZtiSO7loXwjpRjl5eOZ6Y99QqKDOBDzuvFSWs8AAAAAa0gwRQIhAJJz9dd3QIQ5pAwz7pZjCod9TymvP2D1wjDlJU7m8I9DAiB5daZPQ9xjLzRHmqQDuZVsSErQyQo8UNLhtQN+GrtYbwEhA0SXcvLGDC9OHx90y2xSGkjxLVHqaBtkyPwHT9gQgSP2/////wLLaoIzAAAAABl2qRQEh8SBpnFknh2xgu3pjQk6M11nE4isJaIdnQAAAAAZdqkUWQ6gD6OhgoHTAg57oMOh1q6mY8CIrAAAAAABAAAAAiokxd+9udxeHrXTjcnoxfhkOu5T/LDS5EoEkktVxlxrAAAAAGpHMEQCIHqmSbO6A+6sbG+4jnSADKQYKX9i2nXFgoSgxfbN+pa3AiAyTrmf7NsOuL1O7AW+wPRA9MITLBr7qnqvEPMdF9jvAgEhAi2QVbRxlZ6pOFv4ySeIxF2DaBjYaDPZEzHO432MFe48/////xGG6e3GUmo6tGPR8BI6445VkzZNL4DenYAxpIJ0txirAAAAAGxJMEYCIQCEzXmexzLpWgjJ4e+Y6Z5DdntrxOtq9s9l7N8r5ryWqwIhANodHEUNZ104O5IJXCuZSdaTuCtUrIG6IZ+tmPhQBYmtASECtWfD80QvcbZ2JAS+fMBv/TsXDUy5i5DasWkYegfrZ4b/////AmDcLAAAAAAAGXapFGg0C5FFEn0lKd1+vDpFZ9VXmZesiKzQ7S0AAAAAABl2qRQ3cOiYAoG2M1GGGheIHOy/qqXHS4isAAAAAAEAAAACD1AAoFb5HQPEidfRVY8Jx7wzCvPKjkNwbVywj9bGCq0BAAAAakcwRAIgEGizkRivw4O7G33pqo/gLN29i+XSnKuZ1f/yOgzvVmcCICDWz7RxL8YcE8fKJuMgKMzj1or+p5V6tL/F7gO/lhXUASEDszhe1l804Gkn2INehhA8PeNS297OXLcE9omYhqAzRmL/////CNRXf1Y0eWVn+wzVCr0Yht81VfcYR6GXe6W8dRlUBacBAAAAakcwRAIgZyit5Jy17Ig+B9isxkUOF7Die39kyBFDtGMure02Xi4CICvjtLcjIA3owHC5FNAFDq1x0UGBlqA39V8abf9ORa7jASEDnmX9JHnU7bDz227srNrc3F3dbY71GM+GFGbf4cIcyJH/////AtCxNwAAAAAAGXapFJpwTiyZlV9QaU3mD5PN1ElHNniqiKzAxi0AAAAAABl2qRTayRvf6Ak0bp3151Otqu+TNjRL/IisAAAAAAEAAAAC/IUTOx4ln23uwllTvM+nXfYf0jpHFVPIDAQ8LqcWpnUAAAAAakcwRAIgPae+q8SGh7dGpxSWeb2JggMoFncbVjTR1lGvWc6fqG0CIBmOqB0aVH40k5iN2U/+//O4/gMDQIhqpP/BsgVTLw+dASEDszhe1l804Gkn2INehhA8PeNS297OXLcE9omYhqAzRmL/////BClxN7wsn0hnE+Tk+rQxNNoVPg+O6OhSVUCQ0C8mBaUAAAAAakcwRAIga3Kb/UwTK2c8nxpmxkXtN0M4lj8eajtWIp9ytDWPgHcCICO+oWyJ0mcxPabfFSqXazajbhu+pzjWmPDOcu8xWWLfASEDujQffdJAGizVFoLUGP2KErTQsJrLiXHwZxwiETZqhTH/////AiB1OAAAAAAAGXapFEdpYS7nxul330Cozf2DfIXMekj3iKzAxi0AAAAAABl2qRTayRvf6Ak0bp3151Otqu+TNjRL/IisAAAAAAEAAAACHLVzSjA876Gs6HuMw4alc/Hu2DcOFMCoMP0EJJt3VqYAAAAAakcwRAIgWbvxkXm4H62KFbo9/5QnHVXUQ9pjbbrrpuoLtZAbh3kCIEVBfiCPQfizdHPKrzZ6Ye0hsx8SBWBQIN4kHom37AymASECLZBVtHGVnqk4W/jJJ4jEXYNoGNhoM9kTMc7jfYwV7jz/////ursynXc+kQHhJ/fB6VUz+zhMeSYHidwG/fcylsnvNS0AAAAAa0gwRQIgASxVXnJfTrDXZ+/cB67BScY1IrBiU+nRzmJFuQxxlR4CIQDtzOgt3X5So7hb+aSsxzo7bfXJtA/aNujeCYkIYFmd3wEhArVnw/NEL3G2diQEvnzAb/07Fw1MuYuQ2rFpGHoH62eG/////wIQ+zAAAAAAABl2qRQ3cOiYAoG2M1GGGheIHOy/qqXHS4isIM8pAAAAAAAZdqkU4RRP+MoKwUO4OtokQEC/6cjR1jiIrAAAAAABAAAAAppJTmByEGoEDiebRWbyX8NUQahPYiiBIULrVRVoiDL1AAAAAGtIMEUCIQCzWAm6mrzqHsFDx80KJ4RbP1E5prtSdXyeJNhjGfjRbAIgefg4HFKHr35kiNaliec8ryPEh781WsIrfAHPWIMBEL8BIQI9HJvNdxzBK2DM5i6bgZZ4jdNlCJtw2JjWCRehdOFvav/////sfV051NtB19m6BlO2yXWPIM+JpMLmC7J2RalmiJ/f1gAAAABqRzBEAiAIhI008sp3+L9564O4nuiiQpLQw5NjUKN/FSJmTi4hYAIgStBYFwROGNDCbokTm5+5iiHO2iJJp8+ljz7EIK+Ud8cBIQOvBwku1ynZfV4q6fiilfGy2iaOdBTOPfmzdAUddkcJK/////8CIHU4AAAAAAAZdqkUsbm2WSl4Wb0xC6i6b5VXPGNbGRqIrMDGLQAAAAAAGXapFGNsVJv2A1snzzgj9UgpEeuyvOXQiKwAAAAAAQAAAAKMiENa3UW+exUhdWuO47/FFVgEDDki4R+s/x1s3H/IQQAAAABqRzBEAiAb+SqZ/YXgneQ7kDmAHzh61uqZbXHAIYUBmhjNJpHWhQIgRQDqgoc1AcJcWxR2+c111wsqNKQWJHDjOQ+J/2pYMBEBIQItkFW0cZWeqThb+MkniMRdg2gY2Ggz2RMxzuN9jBXuPP////+7HROPfJ6N8GqHzQaPwwPLlgx7VnBRWndZZT/TtxxufgAAAABrSDBFAiAnfrDgO4l80grDv6Fa+CriwedUcv/OBILOFZTNRTboOAIhAIgWTEbz/ILtNTC3VSodpuzS9pBkdIW7D+GnBq4PCdW2ASECcYtpWUS55vEtt159x7d/AjyLlwZAW2LaxubJTcHHIU7/////AjDBHQAAAAAAGXapFOIvUVhVMpsTYCd4odaBKV5IU5C4iKzQ7S0AAAAAABl2qRQYguYXTBnEoqxsfYBxcOdsvHUWD4isAAAAAAEAAAAClIpN9wJkyBazxluxMVvCDfLuErqrpYCBjtIypZ2+MoIAAAAAa0gwRQIhAOlv6qd3xReqZ0mNUcUrfBd8GPfrlsfsEJvPS30ZkyReAiA9T23Ab0rE/5R9gaRcnlOxLuieQiOqZw7uLKQ1FX9gVAEhAmkGGQl8YJwDyLgvfSiarIpNL+NuWkH8NwETje7szZgH/////43d9dERExhltI8rFB9jWsbEHxStx0jqDNYIf9abYNVzAAAAAGtIMEUCIFiOfrlHcEPce32fVUtdtEgj2bcQinPSJK+MsksZDryUAiEA3rL9fPv/X3Z5o4oWwYB13J63BYUAVEFeuieg92n5To0BIQJpBhkJfGCcA8i4L30omqyKTS/jblpB/DcBE43u7M2YB/////8CIM8pAAAAAAAZdqkUf/bXDJ9x4p87O3fhrLC66NGvEtKIrBD7MAAAAAAAGXapFBxbdAARz/gyTtEMPo9j9iYfNmE6iKwAAAAAAQAAAAJ2JPBXvimh1NOREgBtGhrKyoS3j14jI8OuWHNl+RtgFAAAAABqRzBEAiAb/AqVKF3kkspT/Sq4m1jNsdnYF9fEreZOMbtjzPc7eAIgbU9ylzyaqATZpcm3SaSa7Feat4ddMMHguauNPXuAQa0BIQKSbvwFkwfKUYYlR9WLegwXSfDiffb76lULuyke8KALy//////tg64PoW3VYCyhdPHIRb4fHDcM5IOSXdpuUk5vgrk72AAAAABsSTBGAiEAjeKbb6/a3HoUMP9FPJy06pb5GGwcQ7nR8kOHbE0YfFoCIQDwP4qKQ8OaYZwD24C+2vkRHugXpXTt+RJ5WzvvhQJNRgEhAokf2olErkYUhKvcWJipTWZtjlTtR/U0IYYByaOeEFi4/////wLAxi0AAAAAABl2qRT8nFB+LPNWPGO/nsezh3PCoeHEcois0JM8AAAAAAAZdqkUc22eRwNDez8kXNoUq07S1SsKYi2IrAAAAAABAAAAAqNLh69hA+rFrauggGmsp/GcYJH2sfS4yniOVJcMqyA5AQAAAGtIMEUCIEnOYgM1UqAkzguts9PJ24Svkpw3O4FtreJhFWOHHkiEAiEAn4DpcmXOhhY3RoyYI3oG35x0gsx8Fznhw2qOhVN8fxYBIQMuaM3mifJI+dzOPxs7YHQA/RJ1qj06gh/4HdlaNkXiD/////+pc8n1e0TE9wsYExG6GrYMPzwgZjoxJ9PEGLm7Oxde9AAAAABrSDBFAiBNXezJId/5VvvPoaV05D4NF7mknuB/KUt0+FTw3X4BYAIhANSXgeGGcPM3KWHdV5nRYgceE4MvqfFRl8kNe4q4Fo6NASECaQYZCXxgnAPIuC99KJqsik0v425aQfw3ARON7uzNmAf/////AmDcLAAAAAAAGXapFMwNnW1Hbv6CBYkYNvQOAMry/eSSiKzQ7S0AAAAAABl2qRQ3cOiYAoG2M1GGGheIHOy/qqXHS4isAAAAAAEAAAACaQTCByB7cqlnHnj44ShK4Tt7YMUbNSFCyEnTOOjz6PEBAAAAakcwRAIgdAohB8LZvl9iGCJme5zDRWZRHA5nZ96QDztG+ghS1iMCIHzy/Plp5I/OetQ4gL06fuVlikIaP7cY4/2CTiLkusbuASECaQYZCXxgnAPIuC99KJqsik0v425aQfw3ARON7uzNmAf/////o2k5SJgbb6ta6534Kx/I4/2/7/jZNM4GF/SpvmmeBucBAAAAbEkwRgIhAJQuP/1FInifdHsMDRinIoup80MpSjT/sKU4AbDRYmljAiEA6s8uoO7yxY4mZkQr0zFInb2kOt/W1ICcLnHeOK/3/ZIBIQPeZuqaBE7iUbqKbf4daO4cLhesr12LVopRX/N3UrbqDv////8CYNwsAAAAAAAZdqkUrGTtnBOeRP2NHZrSjR0I/IqPcPiIrNDtLQAAAAAAGXapFDdw6JgCgbYzUYYaF4gc7L+qpcdLiKwAAAAAAQAAAAI7Remd0AcDD9hRFDQjW3Cn0pBB6x5y08st2n0edp7BPAAAAABrSDBFAiAcEMiKBIUNkQG2y8tRwo2co09pP9kYujwmd1xZk8vfwQIhAOXXcId3uVktcJhjhZzg9NWQ9WrPW7NlXhGcrBDVl8RjASEDszhe1l804Gkn2INehhA8PeNS297OXLcE9omYhqAzRmL/////h8yHzwvnmJBzI19FX+ZSQyS/6Mul9O48KlnEb+w78UoBAAAAa0gwRQIgXNXqRUl51wXUVz17b2obriLl8UbgzNFAealZpCm/afwCIQDYjwV2KzlGIeyWdUYVG2gvgQO+0FttmbgK363WJqchxQEhA4A6p40oxAFwIx4FIPw42qQFFA7W4XfAdHzp2NfdbN7k/////wIQ3TUAAAAAABl2qRS8HpV3TuLjbSaHcU2hRVETLwWIsIiswMYtAAAAAAAZdqkUhZgZy1k2jgfUyVtSIfpMRm1maUmIrAAAAAABAAAAAnhIzn+8Tzs+Vqd4YH4EaqKyz4kc26i2EYYJXUkxtExyAAAAAGtIMEUCIQCFBTP0AEZbAWWLffywWzuuOKiTRAZfgyH2n3sbIDZEbwIgZjpim18rHPh0hViucci0nNqH5DNH1Mv0yE46ebyQSkkBIQOzOF7WXzTgaSfYg16GEDw941Lb3s5ctwT2iZiGoDNGYv////8OM8COFDA9VmASf103ksoRwYMhonbnH1NBWvdaIxnukgEAAABrSDBFAiAg1Lu8XDAKrbxSEQ96qXHXe89WfJHSiO1q8KmPyPdedAIhAOqE7m0/vrZy6S6pk9JyAvyezTO6dJTYsGRRhkn8LBfcASEDapE0PKHJc0AazLH7kCM20qehtPZw/4LZrMXDgNamJ/D/////AqA8NwAAAAAAGXapFEzDX8JlG1s+TyLfqbbr7wyheX+wiKzAxi0AAAAAABl2qRRJRSvtd3RBV3mbpx/bQ++9ZpaK0YisAAAAAAEAAAACKmzFLIgECI3bwWTPoB5NnufoOceo9dLxtZtwpQ0lPyQAAAAAa0gwRQIhAL1yB5rwugll0B3G3iUCzuvjj6lPz5hQFA584eXvKdPMAiB9oOC4gVlKm8h1AUPfpBzoJV4U8keEpVHT0cSirOzAogEhA7M4XtZfNOBpJ9iDXoYQPD3jUtvezly3BPaJmIagM0Zi/////zYmL0t3F+yjM0Ms2a93a7XvSymi6hsc+He0lkLblFxiAQAAAGtIMEUCIQDwdMgfR29Q2tctPQfO9mhTK7KwzHcrSav2fK/UduTkEwIgHjbv2e7HKy9f9OrE/7vgWYxhhbY8a6jgNze3COcxSZQBIQItfgVc0oqLfKJhNofptc1P9KlZxU109JwSNF0dj3izdP////8CwMYtAAAAAAAZdqkU/JxQfizzVjxjv57Hs4dzwqHhxHKIrHA4OQAAAAAAGXapFFqylhje2IkvgYnKPOgb74PT3doWiKwAAAAAAQAAAALXJOWVR2J3vkM3u485ynALT53xv7hAicSv0zjhB56a3QEAAABrSDBFAiEA93Wyl1E1k8HG5GGQKrZAXEw4zjs32Skv4HQVO4xGbCkCIBDe10jp5/sfuyY7j0ZuahNS4F3biEKhf3EkeOPZwXcEASECPRybzXccwStgzOYum4GWeI3TZQibcNiY1gkXoXThb2r//////0D7c54icfSqqFHdRvzRiV3depiFDvGRujtQMlwppO0BAAAAa0gwRQIgaGscXs1+oOkHh4T16gEAA1qWKAn9HQz3oTFgTs+ybwICIQDd97iHSjde36TQ17k8/SFNAyflUK3TGPGoo3nM6ujaxgEhA2PD+jGlRTop9s3kbJ13aY/YJ2z59RHdbl0HmiMf6laO/////wKgHjwAAAAAABl2qRSwwc2hBrtQhb2cDJmCdzx70Gb6vIiswMYtAAAAAAAZdqkUhZgZy1k2jgfUyVtSIfpMRm1maUmIrAAAAAABAAAAAqm5W+7ZSRY5vA0buDMAXPRUKe+aUFBfm5Hzx1iP64fvAQAAAGxJMEYCIQCFS8DuiyTitiV5gUj8UFyzdGT3JohFbcVLDCXE3VZAkQIhAMKGOrNGwjFXuq60Xm0QLnNUzIle4N17bs3HerNL3U0PASECLZBVtHGVnqk4W/jJJ4jEXYNoGNhoM9kTMc7jfYwV7jz/////jqrw1yL+ne/7xunVQ/QGhEyT0d0cBz1zmGPDFNKt9O8AAAAAakcwRAIgPyhoSyCPD0v4fKIlROWVhaeAf81aLsePyTzpFeKCM1UCIBqwVALTorKRTdlVlx+t6S3IdOZEG8I4N2bsi0xW3KJ1ASECUaO9BDr+XPRqQMTOTK8+kXGQWDWIY0cRUH1u93rMQ4v/////AtDtLQAAAAAAGXapFBiC5hdMGcSirGx9gHFw52y8dRYPiKyQqx4AAAAAABl2qRSyfze3zuKC54kPT235tJV0816FUoisAAAAAAEAAAAC+t7Lalsb1fBoj8fdBJ2t2VbDAAbk3FcVXyLAVMFVB5EAAAAAa0gwRQIgHct9c9GAzandsZLlD89fDvql5oCTHyvCXljdNo1LgV8CIQCBSSV/k5SwEYiqhPkq7HN0M5B2tAg2B2cjajrxhxjN3AEhAy5ozeaJ8kj53M4/GztgdAD9EnWqPTqCH/gd2Vo2ReIP/////1ae0FhbHVJh/loYOemcI9DNO4KXJSbFu1uBLOtJP6zDAQAAAGtIMEUCIFZlrimDrW7EQiCBCm9MKNd91RjMiR657WdQOnVul8R3AiEAq0Vripwfl3YjlWlD2PGJLDv4TYre+qQFYG00c/N/uLQBIQK73wdyu6yrjqukfXg9MPpAGwig7MS8zUk1cXGsOHkcDv////8C0O0tAAAAAAAZdqkUGILmF0wZxKKsbH2AcXDnbLx1Fg+IrFBLFAAAAAAAGXapFKagkA48d0ltxovo7hMKIbRGuCZliKwAAAAAAQAAAAI9nQ34h7NiHDyIRRXRpMCiLivEqgIwBJPLVoGJhHJl2wEAAABrSDBFAiEAr0G/btwE3patiw0OB5SnBVyWd/Jhb8/BsFP4etXGDA8CIB71J5U0Jjd2zKgJVzaHkaNiNU16QPPxdYdLkJ3i1/mhASECLZBVtHGVnqk4W/jJJ4jEXYNoGNhoM9kTMc7jfYwV7jz/////cPbJZfy64h7nElcbaDsz47TQ6cXR/WhQRttxduO/Qy4AAAAAa0gwRQIgM9qBUPmHDgRVgfWJQ2b1c0WUYXS0O3+MD5sk96+tOVwCIQDj24fUKxBQ6o8ulkoT7q6GzFfnccTfop9/BVx0o5vjuAEhAiH3BffVjO6mYSK83HIg2wWD2M4dfZSO2GAHkFJo9VFi/////wLQ7S0AAAAAABl2qRQYguYXTBnEoqxsfYBxcOdsvHUWD4isUIAgAAAAAAAZdqkUR4MNM00ErNYmaJBLb6sGqQdC51CIrAAAAAABAAAAAi5IMY+1V2I9pifRw/gas0uZqHznAUQN+5B61qhpG1HyAAAAAGxJMEYCIQDScz/MY92GvEZT0mjxbkZ+h6e+nh0/RcvsyyQjt+scbAIhAOOWNiLBLas+nAx2qO8TFREUyw8Xq+bCnMovy6wmTfyYASECDOighS4xgS3muPKyYE2UjLBvj39ATnChkGfMoBtdCYj/////Z18JySqgKfMoPummuL1vAioeo73MsdM6CUFu6TiePssAAAAAa0gwRQIgK+uNT/FCdi8S+GehaGwqUjxV/zNriuOZKuEpIBmv6vECIQCi5+25/7KWKFQP0CshyEq/HMSNcMn2rbOVULiv9XLGWgEhA7M4XtZfNOBpJ9iDXoYQPD3jUtvezly3BPaJmIagM0Zi/////wLQkzwAAAAAABl2qRREnDrHM2p48MZAH1FxCUkAXSx/+oiswMYtAAAAAAAZdqkUY2xUm/YDWyfPOCP1SCkR67K85dCIrAAAAAABAAAAAjMjLizmXjlKLH5GUZ+uSLm3EbUVL3ZKTWRUv8BVLydaAAAAAGxJMEYCIQCSj3YOqrrtUb/E2wGIyEpqGe80qIeG8qJdgFDINW2FjQIhAMGjXGfywhtIN+r3PhlcdOshO9qkZQ/nfaBy25+EuQ0MASECLZBVtHGVnqk4W/jJJ4jEXYNoGNhoM9kTMc7jfYwV7jz/////9/wgRZ7eCuuk6SJKxmchL/gVxlHKT+qvQIgLn52CQToBAAAAbEkwRgIhAMCY3W2bIO2A3i2G0sG8kyixxC8EsDw3Z67J2EbUU4ydAiEAnjIXghWkmfItjTr+nyVxWRQ8PSTwc3Hg7y3pfSFuO0IBIQIHjUBQoxSHC9aJYHZQFeX4hONcYLROI+Dy0mS3Oqykd/////8CEPswAAAAAAAZdqkUHFt0ABHP+DJO0Qw+j2P2Jh82YTqIrCDPKQAAAAAAGXapFHvbZakq8lIINvd+XrzMaX2BQUnOiKwAAAAAAQAAAALa6bwBQsFeM/4mpJTRIz6ArfaLUKEx9GfrE0UMqlbkPQAAAABsSTBGAiEA7PA/C6+wz24IrIAzZWW/eba6yAD1Run5U/sU33vyOawCIQCYLify8LP4VpzvEmwMVKiLAC8A1XAQbHT1xLMUyWCUQgEhA7M4XtZfNOBpJ9iDXoYQPD3jUtvezly3BPaJmIagM0Zi/////2kEwgcge3KpZx54+OEoSuE7e2DFGzUhQshJ0zjo8+jxAAAAAGxJMEYCIQD+vEzfvVBz7nVsl2Ow4YAJiTtCLhPCXo90ype4TAz3PwIhAKhabBDev0XorQDbKPzl/LaEBOmsS4RPCuHVnA7yENcUASED3Jre6cI8p6CRtOr8Tf7y7Qet+QPa5WjzRQlTIaqcV+L/////AqA8NwAAAAAAGXapFGejQdf+TeaoEMGC7SeglVTgtEBdiKzAxi0AAAAAABl2qRT38fZKWQiW3M+4ac7QYPBYAH84i4isAAAAAAsRCQcXGgAAAgAAABH6H/bxvQIaIMRE0KCJDK3SOMH8eQ1mkGOxmQsAAAAAVwwntwiG5trGjG2koIbnBxrT2HgJMXYuMJmFPfpSmkDYEL5RwP8/HMD6Yq4NAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8nA+VSAQYvUDJTSC8E2BC+UQj4AAABAgAAAA0vc3RyYXR1bVBvb2wvAAAAAAFwVg4qAQAAABl2qRRUi4T9vgS7//tI5pTl4hqQAafmn4isAAAAAAEAAAAUEt24WUh7aqDolAuX1givjss76gcSINIbNgqKo9q793EAAAAASEcwRAIgWLcXgtZKiBspy81ADxJaQkmdi7z0IHWic/m9E2VIfX0CIHHvIY3C3ACcFwrJMiPIl6gTbXIvYx2pHjQdqPFNvSaLAf////8vpHoTXDPAXJ7ez8lqe4qZtGeW/BKgbqsyfzWN6LWkCQAAAABIRzBEAiB957kJTqaxyMGWndQfaojjgjIRI8bx/a9ukDVKnYGe0QIgMB1Ie0vJK8ycBltTQk/fpGbPtPKrv9oUwrwMIvSj00oB/////zrQPiMrTmVYA2+ynH3YjXCBsguIC20mHrzYO2QyKF+NAAAAAElIMEUCIQCnZaoa88r7uQPbb4gCxz+C3u+7oRKpfcgbfEY9Wjn7fAIge0gVkl+1O6ZCrCm3OBFzu3O8t5IAHT5k1/tq2IvHnrEB/////z0Ws5cxva30jrbwrG080ox39UGsV75NFU74iV+nWyUrAAAAAElIMEUCIQD0YB9/B1k+ec9Lvt29eg0+vBMlK5PPei5NvTbytuZotgIgZ7k1dx9O6QlBv+r8SoWaEoGSk2ycPrlLCoifnmJF1/sB/////0pHOsUJYEnPhMRb9nhBvXtMLmXLLK59/sRVjwMmQ0i6AAAAAEpJMEYCIQClHMP6pw4kvHnzRevr5+AVSsIarXsmQbRgRnilhDiQpgIhALr9Yv5ZJpGRdeU6y+pahkKhhwXe2E87jNiGTzaGlN9DAf////9QP1RY6PxC8kzkmDl3ZUrkeF/kbrqnMYMK1HDi0f0CPAAAAABJSDBFAiEA/+FqVVnLwXT5H7QZ+gvSTGOaBg7T0mimeEx7mKNPVrACIAQw2pV8v3fEZWP376USAur7lY/QwZE2JdNdWV5nUvS+Af////9aDoq8QZtM6FAN5aj/IzRiBt3c1CHkJAHX4nfOKdQ3ZQAAAABJSDBFAiEAxctATSCWEbrKdJFDsMVv4HdY0V49ignwg8jvzPbP+LcCIFViFtJ9AUyl5UHIE3U3L6R1sA1OUbFkH+nUbD9mlI9fAf////9mVmS7FghUjNmaUeU/WuH1zwM6zbczjfo+6U5vo9kvjAAAAABJSDBFAiAf/N7zk3ckxPeJU9kpeBYnrKRiwfRhSqPM0F6ocPECkgIhAP9OUmKOVGrMr6+vc92OabH6LyiIl/LVfCd8m1fRCHarAf////92v7x7DeIjVjRCjCJ1TLFr3LQk51yB4O7kREblxEWnFwAAAABKSTBGAiEAxBX82kRzZNxebG/diIk+8Ic/Z0x7JAuscIdPVeocIEECIQDQbyfJVIoqbBtP20Uk0nc98dBd5SVJGtRdr0Jt96XUXgH/////jV6qHkL2UBtk3ik/MP5Mu1Tw/klLy91XFF4NDiNZqVgAAAAASkkwRgIhAJRIb5vk1rjxJVU1ulWQRG0claG4aqLALnokqCD0cTmYAiEA/tOK3Dnh/wOCz74H8a9TXvQfE/dPnw1wfrXAG+Q8SmQB/////59rXta9YdRZRBpK2POxf+r3r4o75b2hV+WW07uVBHmGAAAAAElIMEUCIQDHd+scczXGmvm4qDGYa2li4zqZeGEeeqj7y4QaCiVkvQIgPlG7bvuOnKJ2GkmcvRWqZ67Sf8D27x4xs+HzooNksMkB/////6W28Lmnk3RQx7nlOfa/HEs=","base64")); +module.exports.dataRawBlock = buffer; + + +}).call(this,require("buffer").Buffer) +},{"buffer":2,"fs":1}],"testdata":[function(require,module,exports){ +module.exports=require('CoCQri'); +},{}]},{},[]) \ No newline at end of file diff --git a/browser/vendor-bundle.js b/browser/vendor-bundle.js deleted file mode 100644 index 6a563a289..000000000 --- a/browser/vendor-bundle.js +++ /dev/null @@ -1,2869 +0,0 @@ -if ('undefined' === typeof window) window = this; -Bitcoin = {}; -if (typeof navigator === 'undefined') { - var navigator = {}; - navigator.appName = 'NodeJS'; -} -/*! - * Crypto-JS v2.0.0 - * http://code.google.com/p/crypto-js/ - * Copyright (c) 2009, Jeff Mott. All rights reserved. - * http://code.google.com/p/crypto-js/wiki/License - */ - -var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -// Global Crypto object -var Crypto = window.Crypto = {}; - -// Crypto utilities -var util = Crypto.util = { - - // Bit-wise rotate left - rotl: function (n, b) { - return (n << b) | (n >>> (32 - b)); - }, - - // Bit-wise rotate right - rotr: function (n, b) { - return (n << (32 - b)) | (n >>> b); - }, - - // Swap big-endian to little-endian and vice versa - endian: function (n) { - - // If number given, swap endian - if (n.constructor == Number) { - return util.rotl(n, 8) & 0x00FF00FF | - util.rotl(n, 24) & 0xFF00FF00; - } - - // Else, assume array and swap all items - for (var i = 0; i < n.length; i++) - n[i] = util.endian(n[i]); - return n; - - }, - - // Generate an array of any length of random bytes - randomBytes: function (n) { - for (var bytes = []; n > 0; n--) - bytes.push(Math.floor(Math.random() * 256)); - return bytes; - }, - - // Convert a byte array to big-endian 32-bit words - bytesToWords: function (bytes) { - for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) - words[b >>> 5] |= bytes[i] << (24 - b % 32); - return words; - }, - - // Convert big-endian 32-bit words to a byte array - wordsToBytes: function (words) { - for (var bytes = [], b = 0; b < words.length * 32; b += 8) - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); - return bytes; - }, - - // Convert a byte array to a hex string - bytesToHex: function (bytes) { - for (var hex = [], i = 0; i < bytes.length; i++) { - hex.push((bytes[i] >>> 4).toString(16)); - hex.push((bytes[i] & 0xF).toString(16)); - } - return hex.join(""); - }, - - // Convert a hex string to a byte array - hexToBytes: function (hex) { - for (var bytes = [], c = 0; c < hex.length; c += 2) - bytes.push(parseInt(hex.substr(c, 2), 16)); - return bytes; - }, - - // Convert a byte array to a base-64 string - bytesToBase64: function (bytes) { - - // Use browser-native function if it exists - if (typeof btoa == "function") return btoa(Binary.bytesToString(bytes)); - - for(var base64 = [], i = 0; i < bytes.length; i += 3) { - var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; - for (var j = 0; j < 4; j++) { - if (i * 8 + j * 6 <= bytes.length * 8) - base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); - else base64.push("="); - } - } - - return base64.join(""); - - }, - - // Convert a base-64 string to a byte array - base64ToBytes: function (base64) { - - // Use browser-native function if it exists - if (typeof atob == "function") return Binary.stringToBytes(atob(base64)); - - // Remove non-base-64 characters - base64 = base64.replace(/[^A-Z0-9+\/]/ig, ""); - - for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) { - if (imod4 == 0) continue; - bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) | - (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); - } - - return bytes; - - } - -}; - -// Crypto mode namespace -Crypto.mode = {}; - -// Crypto character encodings -var charenc = Crypto.charenc = {}; - -// UTF-8 encoding -var UTF8 = charenc.UTF8 = { - - // Convert a string to a byte array - stringToBytes: function (str) { - return Binary.stringToBytes(unescape(encodeURIComponent(str))); - }, - - // Convert a byte array to a string - bytesToString: function (bytes) { - return decodeURIComponent(escape(Binary.bytesToString(bytes))); - } - -}; - -// Binary encoding -var Binary = charenc.Binary = { - - // Convert a string to a byte array - stringToBytes: function (str) { - for (var bytes = [], i = 0; i < str.length; i++) - bytes.push(str.charCodeAt(i)); - return bytes; - }, - - // Convert a byte array to a string - bytesToString: function (bytes) { - for (var str = [], i = 0; i < bytes.length; i++) - str.push(String.fromCharCode(bytes[i])); - return str.join(""); - } - -}; - -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/* - -(c) 2012 by C?dric Mesnil. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -var CryptoJS=CryptoJS||function(j,k){var e={},l=e.lib={},z=function(){},t=l.Base={extend:function(a){z.prototype=this;var c=new z;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, -u=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=k?c:4*a.length},toString:function(a){return(a||D).stringify(this)},concat:function(a){var c=this.words,h=a.words,d=this.sigBytes;a=a.sigBytes;this.clamp();if(d%4)for(var b=0;b>>2]|=(h[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535>>2]=h[b>>>2];else c.push.apply(c,h);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< -32-8*(c%4);a.length=j.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b>>2]>>>24-8*(d%4)&255;b.push((g>>>4).toString(16));b.push((g&15).toString(16))}return b.join("")},parse:function(a){for(var c=a.length,b=[],d=0;d>>3]|=parseInt(a.substr(d, -2),16)<<24-4*(d%8);return new u.init(b,c/2)}},A=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],d=0;d>>2]>>>24-8*(d%4)&255));return b.join("")},parse:function(a){for(var b=a.length,h=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return new u.init(h,b)}},g=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(A.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return A.parse(unescape(encodeURIComponent(a)))}}, -v=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new u.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=g.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,h=b.words,d=b.sigBytes,g=this.blockSize,v=d/(4*g),v=a?j.ceil(v):j.max((v|0)-this._minBufferSize,0);a=v*g;d=j.min(4*a,d);if(a){for(var e=0;eb;b++){var a=e+b,c=g[a];g[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360}var a=this._hash.words,c=D.words,h=A.words,d=z.words,j=t.words,k=u.words,l=w.words,B,m,n,p,x,C,q,r,s,y;C=B=a[0];q=m=a[1];r=n=a[2];s=p=a[3];y=x=a[4];for(var f,b=0;80>b;b+=1)f=B+g[e+d[b]]|0,f=16>b?f+((m^n^p)+c[0]):32>b?f+((m&n|~m&p)+c[1]):48>b? -f+(((m|~n)^p)+c[2]):64>b?f+((m&p|n&~p)+c[3]):f+((m^(n|~p))+c[4]),f|=0,f=f<>>32-k[b],f=f+x|0,B=x,x=p,p=n<<10|n>>>22,n=m,m=f,f=C+g[e+j[b]]|0,f=16>b?f+((q^(r|~s))+h[0]):32>b?f+((q&s|r&~s)+h[1]):48>b?f+(((q|~r)^s)+h[2]):64>b?f+((q&r|~q&s)+h[3]):f+((q^r^s)+h[4]),f|=0,f=f<>>32-l[b],f=f+y|0,C=y,y=s,s=r<<10|r>>>22,r=q,q=f;f=a[1]+n+s|0;a[1]=a[2]+p+y|0;a[2]=a[3]+x+C|0;a[3]=a[4]+B+q|0;a[4]=a[0]+m+r|0;a[0]=f},_doFinalize:function(){var g=this._data,e=g.words,b=8*this._nDataBytes,a=8*g.sigBytes; -e[a>>>5]|=128<<24-a%32;e[(a+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;g.sigBytes=4*(e.length+1);this._process();g=this._hash;e=g.words;for(b=0;5>b;b++)a=e[b],e[b]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;return g},clone:function(){var e=l.clone.call(this);e._hash=this._hash.clone();return e}});j.RIPEMD160=l._createHelper(k);j.HmacRIPEMD160=l._createHmacHelper(k)})(Math); - -module.exports.crypto31 = CryptoJS; -// Copyright (c) 2005 Tom Wu -// All Rights Reserved. -// See "LICENSE" for details. - -// Basic JavaScript BN library - subset useful for RSA encryption. - -// Bits per digit -var dbits; - -// JavaScript engine analysis -var canary = 0xdeadbeefcafe; -var j_lm = ((canary&0xffffff)==0xefcafe); - -// (public) Constructor -function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); -} - -// return new, unset BigInteger -function nbi() { return new BigInteger(null); } - -// am: Compute w_j += (x*this_i), propagate carries, -// c is initial carry, returns final carry. -// c < 3*dvalue, x < 2*dvalue, this_i < dvalue -// We need to select the fastest one that works in this environment. - -// am1: use a single mult and divide to get the high bits, -// max digit bits should be 26 because -// max internal value = 2*dvalue^2-2*dvalue (< 2^53) -function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; -} -// am2 avoids a big mult-and-extract completely. -// Max digit bits should be <= 30 because we do bitwise ops -// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) -function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; -} -// Alternately, set max digit bits to 28 since some -// browsers slow down when dealing with 32-bit numbers. -function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; -} -if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; -} -else if(j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; -} -else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; -} - -BigInteger.prototype.DB = dbits; -BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; -} - -// (protected) set from integer value x, -DV <= x < DV -function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+DV; - else this.t = 0; -} - -// return bigint initialized to value -function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - -// (protected) set from string and radix -function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; -} - -// (public) return string representation in given radix -function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; -} - -// (public) -this -function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - -// (public) |this| -function bnAbs() { return (this.s<0)?this.negate():this; } - -// (public) return + if this > a, - if this < a, 0 if equal -function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; -} - -// returns bit length of the integer x -function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; -} - -// (public) return the number of bits in "this" -function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); -} - -// (protected) r = this << n*DB -function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; -} - -// (protected) r = this >> n*DB -function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; -} - -// (protected) r = this << n -function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); -} - -// (protected) r = this >> n -function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); -} - -// (protected) r = this * a, r != this,a (HAC 14.12) -// "this" should be the larger one if appropriate. -function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); -} - -// (protected) r = this^2, r != this (HAC 14.16) -function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); -} - -// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) -// r != q, this != m. q or r may be null. -function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); -} - -// (public) this mod a -function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; -} - -// Modular reduction using "classic" algorithm -function Classic(m) { this.m = m; } -function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; -} -function cRevert(x) { return x; } -function cReduce(x) { x.divRemTo(this.m,null,x); } -function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } -function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - -Classic.prototype.convert = cConvert; -Classic.prototype.revert = cRevert; -Classic.prototype.reduce = cReduce; -Classic.prototype.mulTo = cMulTo; -Classic.prototype.sqrTo = cSqrTo; - -// (protected) return "-1/this % 2^DB"; useful for Mont. reduction -// justification: -// xy == 1 (mod m) -// xy = 1+km -// xy(2-xy) = (1+km)(1-km) -// x[y(2-xy)] = 1-k^2m^2 -// x[y(2-xy)] == 1 (mod m^2) -// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 -// should reduce x and y(2-xy) by m^2 at each step to keep size bounded. -// JS multiply "overflows" differently from C/C++, so care is needed here. -function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; -} - -// Montgomery reduction -function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; -} - -// xR mod m -function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; -} - -// x/R mod m -function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; -} - -// x = x/R mod m (HAC 14.32) -function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); -} - -// r = "x^2/R mod m"; x != r -function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - -// r = "xy/R mod m"; x,y != r -function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - -Montgomery.prototype.convert = montConvert; -Montgomery.prototype.revert = montRevert; -Montgomery.prototype.reduce = montReduce; -Montgomery.prototype.mulTo = montMulTo; -Montgomery.prototype.sqrTo = montSqrTo; - -// (protected) true iff this is even -function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - -// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) -function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); -} - -// (public) this^e % m, 0 <= e < 2^32 -function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); -} - -// protected -BigInteger.prototype.copyTo = bnpCopyTo; -BigInteger.prototype.fromInt = bnpFromInt; -BigInteger.prototype.fromString = bnpFromString; -BigInteger.prototype.clamp = bnpClamp; -BigInteger.prototype.dlShiftTo = bnpDLShiftTo; -BigInteger.prototype.drShiftTo = bnpDRShiftTo; -BigInteger.prototype.lShiftTo = bnpLShiftTo; -BigInteger.prototype.rShiftTo = bnpRShiftTo; -BigInteger.prototype.subTo = bnpSubTo; -BigInteger.prototype.multiplyTo = bnpMultiplyTo; -BigInteger.prototype.squareTo = bnpSquareTo; -BigInteger.prototype.divRemTo = bnpDivRemTo; -BigInteger.prototype.invDigit = bnpInvDigit; -BigInteger.prototype.isEven = bnpIsEven; -BigInteger.prototype.exp = bnpExp; - -// public -BigInteger.prototype.toString = bnToString; -BigInteger.prototype.negate = bnNegate; -BigInteger.prototype.abs = bnAbs; -BigInteger.prototype.compareTo = bnCompareTo; -BigInteger.prototype.bitLength = bnBitLength; -BigInteger.prototype.mod = bnMod; -BigInteger.prototype.modPowInt = bnModPowInt; - -// "constants" -BigInteger.ZERO = nbv(0); -BigInteger.ONE = nbv(1); -// Copyright (c) 2005-2009 Tom Wu -// All Rights Reserved. -// See "LICENSE" for details. - -// Extended JavaScript BN functions, required for RSA private ops. - -// Version 1.1: new BigInteger("0", 10) returns "proper" zero -// Version 1.2: square() API, isProbablePrime fix - -// (public) -function bnClone() { var r = nbi(); this.copyTo(r); return r; } - -// (public) return value as integer -function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>24; } - -// (public) return value as short (assumes DB>=16) -function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } - -// (protected) return x s.t. r^x < DV -function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - -// (public) 0 if this == 0, 1 if this > 0 -function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; -} - -// (protected) convert to radix string -function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; -} - -// (protected) convert from radix string -function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); -} - -// (protected) alternate constructor -function bnpFromNumber(a,b,c) { - if("number" == typeof b) { - // new BigInteger(int,int,RNG) - if(a < 2) this.fromInt(1); - else { - this.fromNumber(a,c); - if(!this.testBit(a-1)) // force MSB set - this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); - if(this.isEven()) this.dAddOffset(1,0); // force odd - while(!this.isProbablePrime(b)) { - this.dAddOffset(2,0); - if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); - } - } - } - else { - // new BigInteger(int,RNG) - var x = new Array(), t = a&7; - x.length = (a>>3)+1; - b.nextBytes(x); - if(t > 0) x[0] &= ((1< 0) { - if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) - r[k++] = d|(this.s<<(this.DB-p)); - while(i >= 0) { - if(p < 8) { - d = (this[i]&((1<>(p+=this.DB-8); - } - else { - d = (this[i]>>(p-=8))&0xff; - if(p <= 0) { p += this.DB; --i; } - } - if((d&0x80) != 0) d |= -256; - if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; - if(k > 0 || d != this.s) r[k++] = d; - } - } - return r; -} - -function bnEquals(a) { return(this.compareTo(a)==0); } -function bnMin(a) { return(this.compareTo(a)<0)?this:a; } -function bnMax(a) { return(this.compareTo(a)>0)?this:a; } - -// (protected) r = this op a (bitwise) -function bnpBitwiseTo(a,op,r) { - var i, f, m = Math.min(a.t,this.t); - for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); - if(a.t < this.t) { - f = a.s&this.DM; - for(i = m; i < this.t; ++i) r[i] = op(this[i],f); - r.t = this.t; - } - else { - f = this.s&this.DM; - for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); - r.t = a.t; - } - r.s = op(this.s,a.s); - r.clamp(); -} - -// (public) this & a -function op_and(x,y) { return x&y; } -function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } - -// (public) this | a -function op_or(x,y) { return x|y; } -function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } - -// (public) this ^ a -function op_xor(x,y) { return x^y; } -function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } - -// (public) this & ~a -function op_andnot(x,y) { return x&~y; } -function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } - -// (public) ~this -function bnNot() { - var r = nbi(); - for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; - r.t = this.t; - r.s = ~this.s; - return r; -} - -// (public) this << n -function bnShiftLeft(n) { - var r = nbi(); - if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); - return r; -} - -// (public) this >> n -function bnShiftRight(n) { - var r = nbi(); - if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); - return r; -} - -// return index of lowest 1-bit in x, x < 2^31 -function lbit(x) { - if(x == 0) return -1; - var r = 0; - if((x&0xffff) == 0) { x >>= 16; r += 16; } - if((x&0xff) == 0) { x >>= 8; r += 8; } - if((x&0xf) == 0) { x >>= 4; r += 4; } - if((x&3) == 0) { x >>= 2; r += 2; } - if((x&1) == 0) ++r; - return r; -} - -// (public) returns index of lowest 1-bit (or -1 if none) -function bnGetLowestSetBit() { - for(var i = 0; i < this.t; ++i) - if(this[i] != 0) return i*this.DB+lbit(this[i]); - if(this.s < 0) return this.t*this.DB; - return -1; -} - -// return number of 1 bits in x -function cbit(x) { - var r = 0; - while(x != 0) { x &= x-1; ++r; } - return r; -} - -// (public) return number of set bits -function bnBitCount() { - var r = 0, x = this.s&this.DM; - for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); - return r; -} - -// (public) true iff nth bit is set -function bnTestBit(n) { - var j = Math.floor(n/this.DB); - if(j >= this.t) return(this.s!=0); - return((this[j]&(1<<(n%this.DB)))!=0); -} - -// (protected) this op (1<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); -} - -// (public) this + a -function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } - -// (public) this - a -function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } - -// (public) this * a -function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } - -// (public) this^2 -function bnSquare() { var r = nbi(); this.squareTo(r); return r; } - -// (public) this / a -function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } - -// (public) this % a -function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } - -// (public) [this/a,this%a] -function bnDivideAndRemainder(a) { - var q = nbi(), r = nbi(); - this.divRemTo(a,q,r); - return new Array(q,r); -} - -// (protected) this *= n, this >= 0, 1 < n < DV -function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); -} - -// (protected) this += n << w words, this >= 0 -function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } -} - -// A "null" reducer -function NullExp() {} -function nNop(x) { return x; } -function nMulTo(x,y,r) { x.multiplyTo(y,r); } -function nSqrTo(x,r) { x.squareTo(r); } - -NullExp.prototype.convert = nNop; -NullExp.prototype.revert = nNop; -NullExp.prototype.mulTo = nMulTo; -NullExp.prototype.sqrTo = nSqrTo; - -// (public) this^e -function bnPow(e) { return this.exp(e,new NullExp()); } - -// (protected) r = lower n words of "this * a", a.t <= n -// "this" should be the larger one if appropriate. -function bnpMultiplyLowerTo(a,n,r) { - var i = Math.min(this.t+a.t,n); - r.s = 0; // assumes a,this >= 0 - r.t = i; - while(i > 0) r[--i] = 0; - var j; - for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); - for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); - r.clamp(); -} - -// (protected) r = "this * a" without lower n words, n > 0 -// "this" should be the larger one if appropriate. -function bnpMultiplyUpperTo(a,n,r) { - --n; - var i = r.t = this.t+a.t-n; - r.s = 0; // assumes a,this >= 0 - while(--i >= 0) r[i] = 0; - for(i = Math.max(n-this.t,0); i < a.t; ++i) - r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); - r.clamp(); - r.drShiftTo(1,r); -} - -// Barrett modular reduction -function Barrett(m) { - // setup Barrett - this.r2 = nbi(); - this.q3 = nbi(); - BigInteger.ONE.dlShiftTo(2*m.t,this.r2); - this.mu = this.r2.divide(m); - this.m = m; -} - -function barrettConvert(x) { - if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); - else if(x.compareTo(this.m) < 0) return x; - else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } -} - -function barrettRevert(x) { return x; } - -// x = x mod m (HAC 14.42) -function barrettReduce(x) { - x.drShiftTo(this.m.t-1,this.r2); - if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } - this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); - this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); - while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); - x.subTo(this.r2,x); - while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); -} - -// r = x^2 mod m; x != r -function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - -// r = x*y mod m; x,y != r -function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - -Barrett.prototype.convert = barrettConvert; -Barrett.prototype.revert = barrettRevert; -Barrett.prototype.reduce = barrettReduce; -Barrett.prototype.mulTo = barrettMulTo; -Barrett.prototype.sqrTo = barrettSqrTo; - -// (public) this^e % m (HAC 14.85) -function bnModPow(e,m) { - var i = e.bitLength(), k, r = nbv(1), z; - if(i <= 0) return r; - else if(i < 18) k = 1; - else if(i < 48) k = 3; - else if(i < 144) k = 4; - else if(i < 768) k = 5; - else k = 6; - if(i < 8) - z = new Classic(m); - else if(m.isEven()) - z = new Barrett(m); - else - z = new Montgomery(m); - - // precomputation - var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { - var g2 = nbi(); - z.sqrTo(g[1],g2); - while(n <= km) { - g[n] = nbi(); - z.mulTo(g2,g[n-2],g[n]); - n += 2; - } - } - - var j = e.t-1, w, is1 = true, r2 = nbi(), t; - i = nbits(e[j])-1; - while(j >= 0) { - if(i >= k1) w = (e[j]>>(i-k1))&km; - else { - w = (e[j]&((1<<(i+1))-1))<<(k1-i); - if(j > 0) w |= e[j-1]>>(this.DB+i-k1); - } - - n = k; - while((w&1) == 0) { w >>= 1; --n; } - if((i -= n) < 0) { i += this.DB; --j; } - if(is1) { // ret == 1, don't bother squaring or multiplying it - g[w].copyTo(r); - is1 = false; - } - else { - while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } - if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } - z.mulTo(r2,g[w],r); - } - - while(j >= 0 && (e[j]&(1< 0) { - x.rShiftTo(g,x); - y.rShiftTo(g,y); - } - while(x.signum() > 0) { - if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); - if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); - if(x.compareTo(y) >= 0) { - x.subTo(y,x); - x.rShiftTo(1,x); - } - else { - y.subTo(x,y); - y.rShiftTo(1,y); - } - } - if(g > 0) y.lShiftTo(g,y); - return y; -} - -// (protected) this % n, n < 2^26 -function bnpModInt(n) { - if(n <= 0) return 0; - var d = this.DV%n, r = (this.s<0)?n-1:0; - if(this.t > 0) - if(d == 0) r = this[0]%n; - else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; - return r; -} - -// (public) 1/this % m (HAC 14.61) -function bnModInverse(m) { - var ac = m.isEven(); - if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; - var u = m.clone(), v = this.clone(); - var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); - while(u.signum() != 0) { - while(u.isEven()) { - u.rShiftTo(1,u); - if(ac) { - if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } - a.rShiftTo(1,a); - } - else if(!b.isEven()) b.subTo(m,b); - b.rShiftTo(1,b); - } - while(v.isEven()) { - v.rShiftTo(1,v); - if(ac) { - if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } - c.rShiftTo(1,c); - } - else if(!d.isEven()) d.subTo(m,d); - d.rShiftTo(1,d); - } - if(u.compareTo(v) >= 0) { - u.subTo(v,u); - if(ac) a.subTo(c,a); - b.subTo(d,b); - } - else { - v.subTo(u,v); - if(ac) c.subTo(a,c); - d.subTo(b,d); - } - } - if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; - if(d.compareTo(m) >= 0) return d.subtract(m); - if(d.signum() < 0) d.addTo(m,d); else return d; - if(d.signum() < 0) return d.add(m); else return d; -} - -var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; -var lplim = (1<<26)/lowprimes[lowprimes.length-1]; - -// (public) test primality with certainty >= 1-.5^t -function bnIsProbablePrime(t) { - var i, x = this.abs(); - if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { - for(i = 0; i < lowprimes.length; ++i) - if(x[0] == lowprimes[i]) return true; - return false; - } - if(x.isEven()) return false; - i = 1; - while(i < lowprimes.length) { - var m = lowprimes[i], j = i+1; - while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; - m = x.modInt(m); - while(i < j) if(m%lowprimes[i++] == 0) return false; - } - return x.millerRabin(t); -} - -// (protected) true if probably prime (HAC 4.24, Miller-Rabin) -function bnpMillerRabin(t) { - var n1 = this.subtract(BigInteger.ONE); - var k = n1.getLowestSetBit(); - if(k <= 0) return false; - var r = n1.shiftRight(k); - t = (t+1)>>1; - if(t > lowprimes.length) t = lowprimes.length; - var a = nbi(); - for(var i = 0; i < t; ++i) { - //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); - var y = a.modPow(r,this); - if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { - var j = 1; - while(j++ < k && y.compareTo(n1) != 0) { - y = y.modPowInt(2,this); - if(y.compareTo(BigInteger.ONE) == 0) return false; - } - if(y.compareTo(n1) != 0) return false; - } - } - return true; -} - -// protected -BigInteger.prototype.chunkSize = bnpChunkSize; -BigInteger.prototype.toRadix = bnpToRadix; -BigInteger.prototype.fromRadix = bnpFromRadix; -BigInteger.prototype.fromNumber = bnpFromNumber; -BigInteger.prototype.bitwiseTo = bnpBitwiseTo; -BigInteger.prototype.changeBit = bnpChangeBit; -BigInteger.prototype.addTo = bnpAddTo; -BigInteger.prototype.dMultiply = bnpDMultiply; -BigInteger.prototype.dAddOffset = bnpDAddOffset; -BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; -BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; -BigInteger.prototype.modInt = bnpModInt; -BigInteger.prototype.millerRabin = bnpMillerRabin; - -// public -BigInteger.prototype.clone = bnClone; -BigInteger.prototype.intValue = bnIntValue; -BigInteger.prototype.byteValue = bnByteValue; -BigInteger.prototype.shortValue = bnShortValue; -BigInteger.prototype.signum = bnSigNum; -BigInteger.prototype.toByteArray = bnToByteArray; -BigInteger.prototype.equals = bnEquals; -BigInteger.prototype.min = bnMin; -BigInteger.prototype.max = bnMax; -BigInteger.prototype.and = bnAnd; -BigInteger.prototype.or = bnOr; -BigInteger.prototype.xor = bnXor; -BigInteger.prototype.andNot = bnAndNot; -BigInteger.prototype.not = bnNot; -BigInteger.prototype.shiftLeft = bnShiftLeft; -BigInteger.prototype.shiftRight = bnShiftRight; -BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; -BigInteger.prototype.bitCount = bnBitCount; -BigInteger.prototype.testBit = bnTestBit; -BigInteger.prototype.setBit = bnSetBit; -BigInteger.prototype.clearBit = bnClearBit; -BigInteger.prototype.flipBit = bnFlipBit; -BigInteger.prototype.add = bnAdd; -BigInteger.prototype.subtract = bnSubtract; -BigInteger.prototype.multiply = bnMultiply; -BigInteger.prototype.divide = bnDivide; -BigInteger.prototype.remainder = bnRemainder; -BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; -BigInteger.prototype.modPow = bnModPow; -BigInteger.prototype.modInverse = bnModInverse; -BigInteger.prototype.pow = bnPow; -BigInteger.prototype.gcd = bnGCD; -BigInteger.prototype.isProbablePrime = bnIsProbablePrime; - -// JSBN-specific extension -BigInteger.prototype.square = bnSquare; - -// BigInteger interfaces not implemented in jsbn: - -// BigInteger(int signum, byte[] magnitude) -// double doubleValue() -// float floatValue() -// int hashCode() -// long longValue() -// static BigInteger valueOf(long val) - -module.exports.BigInteger = BigInteger; -// prng4.js - uses Arcfour as a PRNG - -function Arcfour() { - this.i = 0; - this.j = 0; - this.S = new Array(); -} - -// Initialize arcfour context from key, an array of ints, each from [0..255] -function ARC4init(key) { - var i, j, t; - for(i = 0; i < 256; ++i) - this.S[i] = i; - j = 0; - for(i = 0; i < 256; ++i) { - j = (j + this.S[i] + key[i % key.length]) & 255; - t = this.S[i]; - this.S[i] = this.S[j]; - this.S[j] = t; - } - this.i = 0; - this.j = 0; -} - -function ARC4next() { - var t; - this.i = (this.i + 1) & 255; - this.j = (this.j + this.S[this.i]) & 255; - t = this.S[this.i]; - this.S[this.i] = this.S[this.j]; - this.S[this.j] = t; - return this.S[(t + this.S[this.i]) & 255]; -} - -Arcfour.prototype.init = ARC4init; -Arcfour.prototype.next = ARC4next; - -// Plug in your RNG constructor here -function prng_newstate() { - return new Arcfour(); -} - -// Pool size must be a multiple of 4 and greater than 32. -// An array of bytes the size of the pool will be passed to init() -var rng_psize = 256; -// BigInteger monkey patching -BigInteger.valueOf = nbv; - -/** - * Returns a byte array representation of the big integer. - * - * This returns the absolute of the contained value in big endian - * form. A value of zero results in an empty array. - */ -BigInteger.prototype.toByteArrayUnsigned = function () { - var ba = this.abs().toByteArray(); - if (ba.length) { - if (ba[0] == 0) { - ba = ba.slice(1); - } - return ba.map(function (v) { - return (v < 0) ? v + 256 : v; - }); - } else { - // Empty array, nothing to do - return ba; - } -}; - -/** - * Turns a byte array into a big integer. - * - * This function will interpret a byte array as a big integer in big - * endian notation and ignore leading zeros. - */ -BigInteger.fromByteArrayUnsigned = function (ba) { - if (!ba.length) { - return ba.valueOf(0); - } else if (ba[0] & 0x80) { - // Prepend a zero so the BigInteger class doesn't mistake this - // for a negative integer. - return new BigInteger([0].concat(ba)); - } else { - return new BigInteger(ba); - } -}; - -/** - * Converts big integer to signed byte representation. - * - * The format for this value uses a the most significant bit as a sign - * bit. If the most significant bit is already occupied by the - * absolute value, an extra byte is prepended and the sign bit is set - * there. - * - * Examples: - * - * 0 => 0x00 - * 1 => 0x01 - * -1 => 0x81 - * 127 => 0x7f - * -127 => 0xff - * 128 => 0x0080 - * -128 => 0x8080 - * 255 => 0x00ff - * -255 => 0x80ff - * 16300 => 0x3fac - * -16300 => 0xbfac - * 62300 => 0x00f35c - * -62300 => 0x80f35c - */ -BigInteger.prototype.toByteArraySigned = function () { - var val = this.abs().toByteArrayUnsigned(); - var neg = this.compareTo(BigInteger.ZERO) < 0; - - if (neg) { - if (val[0] & 0x80) { - val.unshift(0x80); - } else { - val[0] |= 0x80; - } - } else { - if (val[0] & 0x80) { - val.unshift(0x00); - } - } - - return val; -}; - -/** - * Parse a signed big integer byte representation. - * - * For details on the format please see BigInteger.toByteArraySigned. - */ -BigInteger.fromByteArraySigned = function (ba) { - // Check for negative value - if (ba[0] & 0x80) { - // Remove sign bit - ba[0] &= 0x7f; - - return BigInteger.fromByteArrayUnsigned(ba).negate(); - } else { - return BigInteger.fromByteArrayUnsigned(ba); - } -}; - -// Console ignore -var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", - "trace", "profile", "profileEnd"]; - -if ("undefined" == typeof window.console) window.console = {}; -for (var i = 0; i < names.length; ++i) - if ("undefined" == typeof window.console[names[i]]) - window.console[names[i]] = function() {}; - -// Bitcoin utility functions -Bitcoin.Util = { - /** - * Cross-browser compatibility version of Array.isArray. - */ - isArray: Array.isArray || function(o) - { - return Object.prototype.toString.call(o) === '[object Array]'; - }, - - /** - * Create an array of a certain length filled with a specific value. - */ - makeFilledArray: function (len, val) - { - var array = []; - var i = 0; - while (i < len) { - array[i++] = val; - } - return array; - }, - - /** - * Turn an integer into a "var_int". - * - * "var_int" is a variable length integer used by Bitcoin's binary format. - * - * Returns a byte array. - */ - numToVarInt: function (i) - { - if (i < 0xfd) { - // unsigned char - return [i]; - } else if (i < 0x10000) { - // unsigned short (LE) - return [0xfd, i & 255 , i >>> 8]; - } else if (i < 0x100000000) { - // unsigned int (LE) - return [0xfe].concat(Crypto.util.wordsToBytes([i]).reverse()); - } else { - throw 'quadword not implemented' - // unsigned long long (LE) - //return [0xff].concat(Crypto.util.wordsToBytes([i >>> 32, i])); - } - }, - - /** - * Parse a Bitcoin value byte array, returning a BigInteger. - */ - valueToBigInt: function (valueBuffer) - { - if (valueBuffer instanceof BigInteger) return valueBuffer; - - // Prepend zero byte to prevent interpretation as negative integer - return BigInteger.fromByteArrayUnsigned(valueBuffer); - }, - - /** - * Format a Bitcoin value as a string. - * - * Takes a BigInteger or byte-array and returns that amount of Bitcoins in a - * nice standard formatting. - * - * Examples: - * 12.3555 - * 0.1234 - * 900.99998888 - * 34.00 - */ - formatValue: function (valueBuffer) { - var value = this.valueToBigInt(valueBuffer).toString(); - var integerPart = value.length > 8 ? value.substr(0, value.length-8) : '0'; - var decimalPart = value.length > 8 ? value.substr(value.length-8) : value; - while (decimalPart.length < 8) decimalPart = "0"+decimalPart; - decimalPart = decimalPart.replace(/0*$/, ''); - while (decimalPart.length < 2) decimalPart += "0"; - return integerPart+"."+decimalPart; - }, - - /** - * Parse a floating point string as a Bitcoin value. - * - * Keep in mind that parsing user input is messy. You should always display - * the parsed value back to the user to make sure we understood his input - * correctly. - */ - parseValue: function (valueString) { - // TODO: Detect other number formats (e.g. comma as decimal separator) - var valueComp = valueString.split('.'); - var integralPart = valueComp[0]; - var fractionalPart = valueComp[1] || "0"; - while (fractionalPart.length < 8) fractionalPart += "0"; - fractionalPart = fractionalPart.replace(/^0+/g, ''); - var value = BigInteger.valueOf(parseInt(integralPart)); - value = value.multiply(BigInteger.valueOf(100000000)); - value = value.add(BigInteger.valueOf(parseInt(fractionalPart))); - return value; - }, - - /** - * Calculate RIPEMD160(SHA256(data)). - * - * Takes an arbitrary byte array as inputs and returns the hash as a byte - * array. - */ - sha256ripe160: function (data) { - return Crypto.RIPEMD160(Crypto.SHA256(data, {asBytes: true}), {asBytes: true}); - } -}; - -for (var i in Crypto.util) { - if (Crypto.util.hasOwnProperty(i)) { - Bitcoin.Util[i] = Crypto.util[i]; - } -} -// Random number generator - requires a PRNG backend, e.g. prng4.js - -// For best results, put code like -// -// in your main HTML document. - -var rng_state; -var rng_pool; -var rng_pptr; - -// Mix in a 32-bit integer into the pool -function rng_seed_int(x) { - rng_pool[rng_pptr++] ^= x & 255; - rng_pool[rng_pptr++] ^= (x >> 8) & 255; - rng_pool[rng_pptr++] ^= (x >> 16) & 255; - rng_pool[rng_pptr++] ^= (x >> 24) & 255; - if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; -} - -// Mix in the current time (w/milliseconds) into the pool -function rng_seed_time() { - rng_seed_int(new Date().getTime()); -} - -// Initialize the pool with junk if needed. -if(rng_pool == null) { - rng_pool = new Array(); - rng_pptr = 0; - var t; - if(navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) { - // Extract entropy (256 bits) from NS4 RNG if available - var z = window.crypto.random(32); - for(t = 0; t < z.length; ++t) - rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; - } - while(rng_pptr < rng_psize) { // extract some randomness from Math.random() - t = Math.floor(65536 * Math.random()); - rng_pool[rng_pptr++] = t >>> 8; - rng_pool[rng_pptr++] = t & 255; - } - rng_pptr = 0; - rng_seed_time(); - //rng_seed_int(window.screenX); - //rng_seed_int(window.screenY); -} - -function rng_get_byte() { - if(rng_state == null) { - rng_seed_time(); - rng_state = prng_newstate(); - rng_state.init(rng_pool); - for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) - rng_pool[rng_pptr] = 0; - rng_pptr = 0; - //rng_pool = null; - } - // TODO: allow reseeding after first request - return rng_state.next(); -} - -function rng_get_bytes(ba) { - var i; - for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); -} - -function SecureRandom() {} - -SecureRandom.prototype.nextBytes = function() { - throw new Error('Should not use old RNG'); -}; -// Basic Javascript Elliptic Curve implementation -// Ported loosely from BouncyCastle's Java EC code -// Only Fp curves implemented for now - -// Requires jsbn.js and jsbn2.js - -// ---------------- -// ECFieldElementFp - -// constructor -function ECFieldElementFp(q,x) { - this.x = x; - // TODO if(x.compareTo(q) >= 0) error - this.q = q; -} - -function feFpEquals(other) { - if(other == this) return true; - return (this.q.equals(other.q) && this.x.equals(other.x)); -} - -function feFpToBigInteger() { - return this.x; -} - -function feFpNegate() { - return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); -} - -function feFpAdd(b) { - return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); -} - -function feFpSubtract(b) { - return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); -} - -function feFpMultiply(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); -} - -function feFpSquare() { - return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); -} - -function feFpDivide(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); -} - -ECFieldElementFp.prototype.equals = feFpEquals; -ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; -ECFieldElementFp.prototype.negate = feFpNegate; -ECFieldElementFp.prototype.add = feFpAdd; -ECFieldElementFp.prototype.subtract = feFpSubtract; -ECFieldElementFp.prototype.multiply = feFpMultiply; -ECFieldElementFp.prototype.square = feFpSquare; -ECFieldElementFp.prototype.divide = feFpDivide; - -// ---------------- -// ECPointFp - -// constructor -function ECPointFp(curve,x,y,z) { - this.curve = curve; - this.x = x; - this.y = y; - // Projective coordinates: either zinv == null or z * zinv == 1 - // z and zinv are just BigIntegers, not fieldElements - if(z == null) { - this.z = BigInteger.ONE; - } - else { - this.z = z; - } - this.zinv = null; - //TODO: compression flag -} - -function pointFpGetX() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q)); -} - -function pointFpGetY() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q)); -} - -function pointFpEquals(other) { - if(other == this) return true; - if(this.isInfinity()) return other.isInfinity(); - if(other.isInfinity()) return this.isInfinity(); - var u, v; - // u = Y2 * Z1 - Y1 * Z2 - u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); - if(!u.equals(BigInteger.ZERO)) return false; - // v = X2 * Z1 - X1 * Z2 - v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); - return v.equals(BigInteger.ZERO); -} - -function pointFpIsInfinity() { - if((this.x == null) && (this.y == null)) return true; - return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); -} - -function pointFpNegate() { - return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); -} - -function pointFpAdd(b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - // u = Y2 * Z1 - Y1 * Z2 - var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); - // v = X2 * Z1 - X1 * Z2 - var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); - - if(BigInteger.ZERO.equals(v)) { - if(BigInteger.ZERO.equals(u)) { - return this.twice(); // this == b, so double - } - return this.curve.getInfinity(); // this = -b, so infinity - } - - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - var x2 = b.x.toBigInteger(); - var y2 = b.y.toBigInteger(); - - var v2 = v.square(); - var v3 = v2.multiply(v); - var x1v2 = x1.multiply(v2); - var zu2 = u.square().multiply(this.z); - - // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) - var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); - // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 - var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); - // z3 = v^3 * z1 * z2 - var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -function pointFpTwice() { - if(this.isInfinity()) return this; - if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); - - // TODO: optimized handling of constants - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - - var y1z1 = y1.multiply(this.z); - var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); - var a = this.curve.a.toBigInteger(); - - // w = 3 * x1^2 + a * z1^2 - var w = x1.square().multiply(THREE); - if(!BigInteger.ZERO.equals(a)) { - w = w.add(this.z.square().multiply(a)); - } - w = w.mod(this.curve.q); - // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) - var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); - // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 - var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); - // z3 = 8 * (y1 * z1)^3 - var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -// Simple NAF (Non-Adjacent Form) multiplication algorithm -// TODO: modularize the multiplication algorithm -function pointFpMultiply(k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for(i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add(hBit ? this : neg); - } - } - - return R; -} - -// Compute this*j + x*k (simultaneous multiplication) -function pointFpMultiplyTwo(j,x,k) { - var i; - if(j.bitLength() > k.bitLength()) - i = j.bitLength() - 1; - else - i = k.bitLength() - 1; - - var R = this.curve.getInfinity(); - var both = this.add(x); - while(i >= 0) { - R = R.twice(); - if(j.testBit(i)) { - if(k.testBit(i)) { - R = R.add(both); - } - else { - R = R.add(this); - } - } - else { - if(k.testBit(i)) { - R = R.add(x); - } - } - --i; - } - - return R; -} - -ECPointFp.prototype.getX = pointFpGetX; -ECPointFp.prototype.getY = pointFpGetY; -ECPointFp.prototype.equals = pointFpEquals; -ECPointFp.prototype.isInfinity = pointFpIsInfinity; -ECPointFp.prototype.negate = pointFpNegate; -ECPointFp.prototype.add = pointFpAdd; -ECPointFp.prototype.twice = pointFpTwice; -ECPointFp.prototype.multiply = pointFpMultiply; -ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; - -// ---------------- -// ECCurveFp - -// constructor -function ECCurveFp(q,a,b) { - this.q = q; - this.a = this.fromBigInteger(a); - this.b = this.fromBigInteger(b); - this.infinity = new ECPointFp(this, null, null); -} - -function curveFpGetQ() { - return this.q; -} - -function curveFpGetA() { - return this.a; -} - -function curveFpGetB() { - return this.b; -} - -function curveFpEquals(other) { - if(other == this) return true; - return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); -} - -function curveFpGetInfinity() { - return this.infinity; -} - -function curveFpFromBigInteger(x) { - return new ECFieldElementFp(this.q, x); -} - -// for now, work with hex strings because they're easier in JS -function curveFpDecodePointHex(s) { - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - case 3: - // point compression not supported yet - return null; - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} - -ECCurveFp.prototype.getQ = curveFpGetQ; -ECCurveFp.prototype.getA = curveFpGetA; -ECCurveFp.prototype.getB = curveFpGetB; -ECCurveFp.prototype.equals = curveFpEquals; -ECCurveFp.prototype.getInfinity = curveFpGetInfinity; -ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; -ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; - -module.exports.ECPointFp = ECPointFp; -module.exports.ECFieldElementFp = ECFieldElementFp; -// Named EC curves - -// Requires ec.js, jsbn.js, and jsbn2.js - -// ---------------- -// X9ECParameters - -// constructor -function X9ECParameters(curve,g,n,h) { - this.curve = curve; - this.g = g; - this.n = n; - this.h = h; -} - -function x9getCurve() { - return this.curve; -} - -function x9getG() { - return this.g; -} - -function x9getN() { - return this.n; -} - -function x9getH() { - return this.h; -} - -X9ECParameters.prototype.getCurve = x9getCurve; -X9ECParameters.prototype.getG = x9getG; -X9ECParameters.prototype.getN = x9getN; -X9ECParameters.prototype.getH = x9getH; - -// ---------------- -// SECNamedCurves - -function fromHex(s) { return new BigInteger(s, 16); } - -function secp128r1() { - // p = 2^128 - 2^97 - 1 - var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("E87579C11079F43DD824993C2CEE5ED3"); - //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679"); - var n = fromHex("FFFFFFFE0000000075A30D1B9038A115"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "161FF7528B899B2D0C28607CA52C5B86" - + "CF5AC8395BAFEB13C02DA292DDED7A83"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160k1() { - // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB" - + "938CF935318FDCED6BC28286531733C3F03C4FEE"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160r1() { - // p = 2^160 - 2^31 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"); - var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"); - //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345"); - var n = fromHex("0100000000000000000001F4C8F927AED3CA752257"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "4A96B5688EF573284664698968C38BB913CBFC82" - + "23A628553168947D59DCC912042351377AC5FB32"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192k1() { - // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"); - var a = BigInteger.ZERO; - var b = fromHex("3"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D" - + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192r1() { - // p = 2^192 - 2^64 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"); - var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"); - //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012" - + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"); - return new X9ECParameters(curve, G, n, h); -} - -function secp224r1() { - // p = 2^224 - 2^96 + 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"); - var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"); - //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21" - + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256k1() { - // p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798" - + "483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256r1() { - // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1 - var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"); - //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90"); - var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" - + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"); - return new X9ECParameters(curve, G, n, h); -} - -// TODO: make this into a proper hashtable -function getSECCurveByName(name) { - if(name == "secp128r1") return secp128r1(); - if(name == "secp160k1") return secp160k1(); - if(name == "secp160r1") return secp160r1(); - if(name == "secp192k1") return secp192k1(); - if(name == "secp192r1") return secp192r1(); - if(name == "secp224r1") return secp224r1(); - if(name == "secp256k1") return secp256k1(); - if(name == "secp256r1") return secp256r1(); - return null; -} - -module.exports.getSECCurveByName = getSECCurveByName; -function integerToBytes(i, len) { - var bytes = i.toByteArrayUnsigned(); - - if (len < bytes.length) { - bytes = bytes.slice(bytes.length-len); - } else while (len > bytes.length) { - bytes.unshift(0); - } - - return bytes; -}; - -ECFieldElementFp.prototype.getByteLength = function () { - return Math.floor((this.toBigInteger().bitLength() + 7) / 8); -}; - -ECPointFp.prototype.getEncoded = function (compressed) { - var x = this.getX().toBigInteger(); - var y = this.getY().toBigInteger(); - - // Get value as a 32-byte Buffer - // Fixed length based on a patch by bitaddress.org and Casascius - var enc = integerToBytes(x, 32); - - if (compressed) { - if (y.isEven()) { - // Compressed even pubkey - // M = 02 || X - enc.unshift(0x02); - } else { - // Compressed uneven pubkey - // M = 03 || X - enc.unshift(0x03); - } - } else { - // Uncompressed pubkey - // M = 04 || X || Y - enc.unshift(0x04); - enc = enc.concat(integerToBytes(y, 32)); - } - return enc; -}; - -ECPointFp.decodeFrom = function (ecparams, enc) { - var type = enc[0]; - var dataLen = enc.length-1; - - // Extract x and y as byte arrays - if (type === 4) { - var xBa = enc.slice(1, 1 + dataLen/2), - yBa = enc.slice(1 + dataLen/2, 1 + dataLen), - x = BigInteger.fromByteArrayUnsigned(xBa), - y = BigInteger.fromByteArrayUnsigned(yBa); - } - else { - var xBa = enc.slice(1), - x = BigInteger.fromByteArrayUnsigned(xBa), - p = ecparams.getQ(), - xCubedPlus7 = x.multiply(x).multiply(x).add(new BigInteger('7')).mod(p), - pPlus1Over4 = p.add(new BigInteger('1')) - .divide(new BigInteger('4')), - y = xCubedPlus7.modPow(pPlus1Over4,p); - if (y.mod(new BigInteger('2')).toString() != ''+(type % 2)) { - y = p.subtract(y) - } - } - - // Return point - return new ECPointFp(ecparams, - ecparams.fromBigInteger(x), - ecparams.fromBigInteger(y)); -}; - -ECPointFp.prototype.add2D = function (b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - if (this.x.equals(b.x)) { - if (this.y.equals(b.y)) { - // this = b, i.e. this must be doubled - return this.twice(); - } - // this = -b, i.e. the result is the point at infinity - return this.curve.getInfinity(); - } - - var x_x = b.x.subtract(this.x); - var y_y = b.y.subtract(this.y); - var gamma = y_y.divide(x_x); - - var x3 = gamma.square().subtract(this.x).subtract(b.x); - var y3 = gamma.multiply(this.x.subtract(x3)).subtract(this.y); - - return new ECPointFp(this.curve, x3, y3); -}; - -ECPointFp.prototype.twice2D = function () { - if (this.isInfinity()) return this; - if (this.y.toBigInteger().signum() == 0) { - // if y1 == 0, then (x1, y1) == (x1, -y1) - // and hence this = -this and thus 2(x1, y1) == infinity - return this.curve.getInfinity(); - } - - var TWO = this.curve.fromBigInteger(BigInteger.valueOf(2)); - var THREE = this.curve.fromBigInteger(BigInteger.valueOf(3)); - var gamma = this.x.square().multiply(THREE).add(this.curve.a).divide(this.y.multiply(TWO)); - - var x3 = gamma.square().subtract(this.x.multiply(TWO)); - var y3 = gamma.multiply(this.x.subtract(x3)).subtract(this.y); - - return new ECPointFp(this.curve, x3, y3); -}; - -ECPointFp.prototype.multiply2D = function (k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for (i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add2D(hBit ? this : neg); - } - } - - return R; -}; - -ECPointFp.prototype.isOnCurve = function () { - var x = this.getX().toBigInteger(); - var y = this.getY().toBigInteger(); - var a = this.curve.getA().toBigInteger(); - var b = this.curve.getB().toBigInteger(); - var n = this.curve.getQ(); - var lhs = y.multiply(y).mod(n); - var rhs = x.multiply(x).multiply(x) - .add(a.multiply(x)).add(b).mod(n); - return lhs.equals(rhs); -}; - -ECPointFp.prototype.toString = function () { - return '('+this.getX().toBigInteger().toString()+','+ - this.getY().toBigInteger().toString()+')'; -}; - -/** - * Validate an elliptic curve point. - * - * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive - */ -ECPointFp.prototype.validate = function () { - var n = this.curve.getQ(); - - // Check Q != O - if (this.isInfinity()) { - throw new Error("Point is at infinity."); - } - - // Check coordinate bounds - var x = this.getX().toBigInteger(); - var y = this.getY().toBigInteger(); - if (x.compareTo(BigInteger.ONE) < 0 || - x.compareTo(n.subtract(BigInteger.ONE)) > 0) { - throw new Error('x coordinate out of bounds'); - } - if (y.compareTo(BigInteger.ONE) < 0 || - y.compareTo(n.subtract(BigInteger.ONE)) > 0) { - throw new Error('y coordinate out of bounds'); - } - - // Check y^2 = x^3 + ax + b (mod n) - if (!this.isOnCurve()) { - throw new Error("Point is not on the curve."); - } - - // Check nQ = 0 (Q is a scalar multiple of G) - if (this.multiply(n).isInfinity()) { - // TODO: This check doesn't work - fix. - throw new Error("Point is not a scalar multiple of G."); - } - - return true; -}; - -function dmp(v) { - if (!(v instanceof BigInteger)) v = v.toBigInteger(); - return Crypto.util.bytesToHex(v.toByteArrayUnsigned()); -}; - -Bitcoin.ECDSA = (function () { - var ecparams = getSECCurveByName("secp256k1"); - var rng = new SecureRandom(); - - var P_OVER_FOUR = null; - - function implShamirsTrick(P, k, Q, l) - { - var m = Math.max(k.bitLength(), l.bitLength()); - var Z = P.add2D(Q); - var R = P.curve.getInfinity(); - - for (var i = m - 1; i >= 0; --i) { - R = R.twice2D(); - - R.z = BigInteger.ONE; - - if (k.testBit(i)) { - if (l.testBit(i)) { - R = R.add2D(Z); - } else { - R = R.add2D(P); - } - } else { - if (l.testBit(i)) { - R = R.add2D(Q); - } - } - } - - return R; - }; - - var ECDSA = { - getBigRandom: function (limit) { - return new BigInteger(limit.bitLength(), rng) - .mod(limit.subtract(BigInteger.ONE)) - .add(BigInteger.ONE) - ; - }, - sign: function (hash, priv) { - var d = priv; - var n = ecparams.getN(); - var e = BigInteger.fromByteArrayUnsigned(hash); - - do { - var k = ECDSA.getBigRandom(n); - var G = ecparams.getG(); - var Q = G.multiply(k); - var r = Q.getX().toBigInteger().mod(n); - } while (r.compareTo(BigInteger.ZERO) <= 0); - - var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n); - - return ECDSA.serializeSig(r, s); - }, - - verify: function (hash, sig, pubkey) { - var r,s; - if (Bitcoin.Util.isArray(sig)) { - var obj = ECDSA.parseSig(sig); - r = obj.r; - s = obj.s; - } else if ("object" === typeof sig && sig.r && sig.s) { - r = sig.r; - s = sig.s; - } else { - throw "Invalid value for signature"; - } - - var Q; - if (pubkey instanceof ECPointFp) { - Q = pubkey; - } else if (Bitcoin.Util.isArray(pubkey)) { - Q = ECPointFp.decodeFrom(ecparams.getCurve(), pubkey); - } else { - throw "Invalid format for pubkey value, must be byte array or ECPointFp"; - } - var e = BigInteger.fromByteArrayUnsigned(hash); - - return ECDSA.verifyRaw(e, r, s, Q); - }, - - verifyRaw: function (e, r, s, Q) { - var n = ecparams.getN(); - var G = ecparams.getG(); - - if (r.compareTo(BigInteger.ONE) < 0 || - r.compareTo(n) >= 0) - return false; - - if (s.compareTo(BigInteger.ONE) < 0 || - s.compareTo(n) >= 0) - return false; - - var c = s.modInverse(n); - - var u1 = e.multiply(c).mod(n); - var u2 = r.multiply(c).mod(n); - - // TODO(!!!): For some reason Shamir's trick isn't working with - // signed message verification!? Probably an implementation - // error! - //var point = implShamirsTrick(G, u1, Q, u2); - var point = G.multiply(u1).add(Q.multiply(u2)); - - var v = point.getX().toBigInteger().mod(n); - - return v.equals(r); - }, - - /** - * Serialize a signature into DER format. - * - * Takes two BigIntegers representing r and s and returns a byte array. - */ - serializeSig: function (r, s) { - var rBa = r.toByteArraySigned(); - var sBa = s.toByteArraySigned(); - - var sequence = []; - sequence.push(0x02); // INTEGER - sequence.push(rBa.length); - sequence = sequence.concat(rBa); - - sequence.push(0x02); // INTEGER - sequence.push(sBa.length); - sequence = sequence.concat(sBa); - - sequence.unshift(sequence.length); - sequence.unshift(0x30); // SEQUENCE - - return sequence; - }, - - /** - * Parses a byte array containing a DER-encoded signature. - * - * This function will return an object of the form: - * - * { - * r: BigInteger, - * s: BigInteger - * } - */ - parseSig: function (sig) { - var cursor; - if (sig[0] != 0x30) - throw new Error("Signature not a valid DERSequence"); - - cursor = 2; - if (sig[cursor] != 0x02) - throw new Error("First element in signature must be a DERInteger");; - var rBa = sig.slice(cursor+2, cursor+2+sig[cursor+1]); - - cursor += 2+sig[cursor+1]; - if (sig[cursor] != 0x02) - throw new Error("Second element in signature must be a DERInteger"); - var sBa = sig.slice(cursor+2, cursor+2+sig[cursor+1]); - - cursor += 2+sig[cursor+1]; - - //if (cursor != sig.length) - // throw new Error("Extra bytes in signature"); - - var r = BigInteger.fromByteArrayUnsigned(rBa); - var s = BigInteger.fromByteArrayUnsigned(sBa); - - return {r: r, s: s}; - }, - - parseSigCompact: function (sig) { - if (sig.length !== 65) { - throw "Signature has the wrong length"; - } - - // Signature is prefixed with a type byte storing three bits of - // information. - var i = sig[0] - 27; - if (i < 0 || i > 7) { - throw "Invalid signature type"; - } - - var n = ecparams.getN(); - var r = BigInteger.fromByteArrayUnsigned(sig.slice(1, 33)).mod(n); - var s = BigInteger.fromByteArrayUnsigned(sig.slice(33, 65)).mod(n); - - return {r: r, s: s, i: i}; - }, - - /** - * Recover a public key from a signature. - * - * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public - * Key Recovery Operation". - * - * http://www.secg.org/download/aid-780/sec1-v2.pdf - */ - recoverPubKey: function (r, s, hash, i) { - // The recovery parameter i has two bits. - i = i & 3; - - // The less significant bit specifies whether the y coordinate - // of the compressed point is even or not. - var isYEven = i & 1; - - // The more significant bit specifies whether we should use the - // first or second candidate key. - var isSecondKey = i >> 1; - - var n = ecparams.getN(); - var G = ecparams.getG(); - var curve = ecparams.getCurve(); - var p = curve.getQ(); - var a = curve.getA().toBigInteger(); - var b = curve.getB().toBigInteger(); - - // We precalculate (p + 1) / 4 where p is if the field order - if (!P_OVER_FOUR) { - P_OVER_FOUR = p.add(BigInteger.ONE).divide(BigInteger.valueOf(4)); - } - - // 1.1 Compute x - var x = isSecondKey ? r.add(n) : r; - - // 1.3 Convert x to point - var alpha = x.multiply(x).multiply(x).add(a.multiply(x)).add(b).mod(p); - var beta = alpha.modPow(P_OVER_FOUR, p); - - var xorOdd = beta.isEven() ? (i % 2) : ((i+1) % 2); - // If beta is even, but y isn't or vice versa, then convert it, - // otherwise we're done and y == beta. - var y = (beta.isEven() ? !isYEven : isYEven) ? beta : p.subtract(beta); - - // 1.4 Check that nR is at infinity - var R = new ECPointFp(curve, - curve.fromBigInteger(x), - curve.fromBigInteger(y)); - R.validate(); - - // 1.5 Compute e from M - var e = BigInteger.fromByteArrayUnsigned(hash); - var eNeg = BigInteger.ZERO.subtract(e).mod(n); - - // 1.6 Compute Q = r^-1 (sR - eG) - var rInv = r.modInverse(n); - var Q = implShamirsTrick(R, s, G, eNeg).multiply(rInv); - - Q.validate(); - if (!ECDSA.verifyRaw(e, r, s, Q)) { - throw "Pubkey recovery unsuccessful"; - } - - var pubKey = new Bitcoin.ECKey(); - pubKey.pub = Q; - return pubKey; - }, - - /** - * Calculate pubkey extraction parameter. - * - * When extracting a pubkey from a signature, we have to - * distinguish four different cases. Rather than putting this - * burden on the verifier, Bitcoin includes a 2-bit value with the - * signature. - * - * This function simply tries all four cases and returns the value - * that resulted in a successful pubkey recovery. - */ - calcPubkeyRecoveryParam: function (address, r, s, hash) - { - for (var i = 0; i < 4; i++) { - try { - var pubkey = Bitcoin.ECDSA.recoverPubKey(r, s, hash, i); - if (pubkey.getBitcoinAddress().toString() == address) { - return i; - } - } catch (e) {} - } - throw "Unable to find valid recovery factor"; - } - }; - - return ECDSA; -})(); -Bitcoin.ECKey = (function () { - var ECDSA = Bitcoin.ECDSA; - var ecparams = getSECCurveByName("secp256k1"); - var rng = new SecureRandom(); - - var ECKey = function (input) { - if (!input) { - // Generate new key - var n = ecparams.getN(); - //this.priv = ECDSA.getBigRandom(n); - } else if (input instanceof BigInteger) { - // Input is a private key value - this.priv = input; - } else if (Bitcoin.Util.isArray(input)) { - // Prepend zero byte to prevent interpretation as negative integer - this.priv = BigInteger.fromByteArrayUnsigned(input); - } else if ("string" == typeof input) { - if (input.length == 51 && input[0] == '5') { - // Base58 encoded private key - this.priv = BigInteger.fromByteArrayUnsigned(ECKey.decodeString(input)); - } else { - // Prepend zero byte to prevent interpretation as negative integer - this.priv = BigInteger.fromByteArrayUnsigned(Crypto.util.hexToBytes(input)); - } - } - this.compressed = !!ECKey.compressByDefault; - }; - - /** - * Whether public keys should be returned compressed by default. - */ - ECKey.compressByDefault = false; - - /** - * Set whether the public key should be returned compressed or not. - */ - ECKey.prototype.setCompressed = function (v) { - this.compressed = !!v; - }; - - /** - * Return public key in DER encoding. - */ - ECKey.prototype.getPub = function () { - return this.getPubPoint().getEncoded(this.compressed); - }; - - /** - * Return public point as ECPoint object. - */ - ECKey.prototype.getPubPoint = function () { - if (!this.pub) this.pub = ecparams.getG().multiply(this.priv); - - return this.pub; - }; - - /** - * Get the pubKeyHash for this key. - * - * This is calculated as RIPE160(SHA256([encoded pubkey])) and returned as - * a byte array. - */ - ECKey.prototype.getPubKeyHash = function () { - if (this.pubKeyHash) return this.pubKeyHash; - - return this.pubKeyHash = Bitcoin.Util.sha256ripe160(this.getPub()); - }; - - ECKey.prototype.getBitcoinAddress = function () { - var hash = this.getPubKeyHash(); - var addr = new Bitcoin.Address(hash); - return addr; - }; - - ECKey.prototype.getExportedPrivateKey = function () { - var hash = this.priv.toByteArrayUnsigned(); - while (hash.length < 32) hash.unshift(0); - hash.unshift(0x80); - var checksum = Crypto.SHA256(Crypto.SHA256(hash, {asBytes: true}), {asBytes: true}); - var bytes = hash.concat(checksum.slice(0,4)); - return Bitcoin.Base58.encode(bytes); - }; - - ECKey.prototype.setPub = function (pub) { - this.pub = ECPointFp.decodeFrom(ecparams.getCurve(), pub); - }; - - ECKey.prototype.toString = function (format) { - if (format === "base64") { - return Crypto.util.bytesToBase64(this.priv.toByteArrayUnsigned()); - } else { - return Crypto.util.bytesToHex(this.priv.toByteArrayUnsigned()); - } - }; - - ECKey.prototype.sign = function (hash) { - return ECDSA.sign(hash, this.priv); - }; - - ECKey.prototype.verify = function (hash, sig) { - return ECDSA.verify(hash, sig, this.getPub()); - }; - - /** - * Parse an exported private key contained in a string. - */ - ECKey.decodeString = function (string) { - var bytes = Bitcoin.Base58.decode(string); - - var hash = bytes.slice(0, 33); - - var checksum = Crypto.SHA256(Crypto.SHA256(hash, {asBytes: true}), {asBytes: true}); - - if (checksum[0] != bytes[33] || - checksum[1] != bytes[34] || - checksum[2] != bytes[35] || - checksum[3] != bytes[36]) { - throw "Checksum validation failed!"; - } - - var version = hash.shift(); - - if (version != 0x80) { - throw "Version "+version+" not supported!"; - } - - return hash; - }; - - return ECKey; -})(); - - -module.exports.ECKey = Bitcoin.ECKey; diff --git a/browser/vendor/browser-adapter.js b/browser/vendor/browser-adapter.js deleted file mode 100644 index 7da083e24..000000000 --- a/browser/vendor/browser-adapter.js +++ /dev/null @@ -1,6 +0,0 @@ -if ('undefined' === typeof window) window = this; -Bitcoin = {}; -if (typeof navigator === 'undefined') { - var navigator = {}; - navigator.appName = 'NodeJS'; -} diff --git a/browser/vendor/crypto-2.0.js b/browser/vendor/crypto-2.0.js deleted file mode 100644 index 60b6c3a14..000000000 --- a/browser/vendor/crypto-2.0.js +++ /dev/null @@ -1,158 +0,0 @@ -/*! - * Crypto-JS v2.0.0 - * http://code.google.com/p/crypto-js/ - * Copyright (c) 2009, Jeff Mott. All rights reserved. - * http://code.google.com/p/crypto-js/wiki/License - */ - -var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -// Global Crypto object -var Crypto = window.Crypto = {}; - -// Crypto utilities -var util = Crypto.util = { - - // Bit-wise rotate left - rotl: function (n, b) { - return (n << b) | (n >>> (32 - b)); - }, - - // Bit-wise rotate right - rotr: function (n, b) { - return (n << (32 - b)) | (n >>> b); - }, - - // Swap big-endian to little-endian and vice versa - endian: function (n) { - - // If number given, swap endian - if (n.constructor == Number) { - return util.rotl(n, 8) & 0x00FF00FF | - util.rotl(n, 24) & 0xFF00FF00; - } - - // Else, assume array and swap all items - for (var i = 0; i < n.length; i++) - n[i] = util.endian(n[i]); - return n; - - }, - - // Generate an array of any length of random bytes - randomBytes: function (n) { - for (var bytes = []; n > 0; n--) - bytes.push(Math.floor(Math.random() * 256)); - return bytes; - }, - - // Convert a byte array to big-endian 32-bit words - bytesToWords: function (bytes) { - for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) - words[b >>> 5] |= bytes[i] << (24 - b % 32); - return words; - }, - - // Convert big-endian 32-bit words to a byte array - wordsToBytes: function (words) { - for (var bytes = [], b = 0; b < words.length * 32; b += 8) - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); - return bytes; - }, - - // Convert a byte array to a hex string - bytesToHex: function (bytes) { - for (var hex = [], i = 0; i < bytes.length; i++) { - hex.push((bytes[i] >>> 4).toString(16)); - hex.push((bytes[i] & 0xF).toString(16)); - } - return hex.join(""); - }, - - // Convert a hex string to a byte array - hexToBytes: function (hex) { - for (var bytes = [], c = 0; c < hex.length; c += 2) - bytes.push(parseInt(hex.substr(c, 2), 16)); - return bytes; - }, - - // Convert a byte array to a base-64 string - bytesToBase64: function (bytes) { - - // Use browser-native function if it exists - if (typeof btoa == "function") return btoa(Binary.bytesToString(bytes)); - - for(var base64 = [], i = 0; i < bytes.length; i += 3) { - var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; - for (var j = 0; j < 4; j++) { - if (i * 8 + j * 6 <= bytes.length * 8) - base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); - else base64.push("="); - } - } - - return base64.join(""); - - }, - - // Convert a base-64 string to a byte array - base64ToBytes: function (base64) { - - // Use browser-native function if it exists - if (typeof atob == "function") return Binary.stringToBytes(atob(base64)); - - // Remove non-base-64 characters - base64 = base64.replace(/[^A-Z0-9+\/]/ig, ""); - - for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) { - if (imod4 == 0) continue; - bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) | - (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); - } - - return bytes; - - } - -}; - -// Crypto mode namespace -Crypto.mode = {}; - -// Crypto character encodings -var charenc = Crypto.charenc = {}; - -// UTF-8 encoding -var UTF8 = charenc.UTF8 = { - - // Convert a string to a byte array - stringToBytes: function (str) { - return Binary.stringToBytes(unescape(encodeURIComponent(str))); - }, - - // Convert a byte array to a string - bytesToString: function (bytes) { - return decodeURIComponent(escape(Binary.bytesToString(bytes))); - } - -}; - -// Binary encoding -var Binary = charenc.Binary = { - - // Convert a string to a byte array - stringToBytes: function (str) { - for (var bytes = [], i = 0; i < str.length; i++) - bytes.push(str.charCodeAt(i)); - return bytes; - }, - - // Convert a byte array to a string - bytesToString: function (bytes) { - for (var str = [], i = 0; i < bytes.length; i++) - str.push(String.fromCharCode(bytes[i])); - return str.join(""); - } - -}; - diff --git a/browser/vendor/crypto-3.1.js b/browser/vendor/crypto-3.1.js deleted file mode 100644 index 044f8c2e4..000000000 --- a/browser/vendor/crypto-3.1.js +++ /dev/null @@ -1,31 +0,0 @@ -/* -CryptoJS v3.1.2 -code.google.com/p/crypto-js -(c) 2009-2013 by Jeff Mott. All rights reserved. -code.google.com/p/crypto-js/wiki/License -*/ -/* - -(c) 2012 by C?dric Mesnil. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -var CryptoJS=CryptoJS||function(j,k){var e={},l=e.lib={},z=function(){},t=l.Base={extend:function(a){z.prototype=this;var c=new z;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, -u=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=k?c:4*a.length},toString:function(a){return(a||D).stringify(this)},concat:function(a){var c=this.words,h=a.words,d=this.sigBytes;a=a.sigBytes;this.clamp();if(d%4)for(var b=0;b>>2]|=(h[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535>>2]=h[b>>>2];else c.push.apply(c,h);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< -32-8*(c%4);a.length=j.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b>>2]>>>24-8*(d%4)&255;b.push((g>>>4).toString(16));b.push((g&15).toString(16))}return b.join("")},parse:function(a){for(var c=a.length,b=[],d=0;d>>3]|=parseInt(a.substr(d, -2),16)<<24-4*(d%8);return new u.init(b,c/2)}},A=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],d=0;d>>2]>>>24-8*(d%4)&255));return b.join("")},parse:function(a){for(var b=a.length,h=[],d=0;d>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return new u.init(h,b)}},g=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(A.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data");}},parse:function(a){return A.parse(unescape(encodeURIComponent(a)))}}, -v=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new u.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=g.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var b=this._data,h=b.words,d=b.sigBytes,g=this.blockSize,v=d/(4*g),v=a?j.ceil(v):j.max((v|0)-this._minBufferSize,0);a=v*g;d=j.min(4*a,d);if(a){for(var e=0;eb;b++){var a=e+b,c=g[a];g[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360}var a=this._hash.words,c=D.words,h=A.words,d=z.words,j=t.words,k=u.words,l=w.words,B,m,n,p,x,C,q,r,s,y;C=B=a[0];q=m=a[1];r=n=a[2];s=p=a[3];y=x=a[4];for(var f,b=0;80>b;b+=1)f=B+g[e+d[b]]|0,f=16>b?f+((m^n^p)+c[0]):32>b?f+((m&n|~m&p)+c[1]):48>b? -f+(((m|~n)^p)+c[2]):64>b?f+((m&p|n&~p)+c[3]):f+((m^(n|~p))+c[4]),f|=0,f=f<>>32-k[b],f=f+x|0,B=x,x=p,p=n<<10|n>>>22,n=m,m=f,f=C+g[e+j[b]]|0,f=16>b?f+((q^(r|~s))+h[0]):32>b?f+((q&s|r&~s)+h[1]):48>b?f+(((q|~r)^s)+h[2]):64>b?f+((q&r|~q&s)+h[3]):f+((q^r^s)+h[4]),f|=0,f=f<>>32-l[b],f=f+y|0,C=y,y=s,s=r<<10|r>>>22,r=q,q=f;f=a[1]+n+s|0;a[1]=a[2]+p+y|0;a[2]=a[3]+x+C|0;a[3]=a[4]+B+q|0;a[4]=a[0]+m+r|0;a[0]=f},_doFinalize:function(){var g=this._data,e=g.words,b=8*this._nDataBytes,a=8*g.sigBytes; -e[a>>>5]|=128<<24-a%32;e[(a+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;g.sigBytes=4*(e.length+1);this._process();g=this._hash;e=g.words;for(b=0;5>b;b++)a=e[b],e[b]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;return g},clone:function(){var e=l.clone.call(this);e._hash=this._hash.clone();return e}});j.RIPEMD160=l._createHelper(k);j.HmacRIPEMD160=l._createHmacHelper(k)})(Math); - -module.exports.crypto31 = CryptoJS; diff --git a/browser/vendor/ec.js b/browser/vendor/ec.js deleted file mode 100644 index 4fb77e64d..000000000 --- a/browser/vendor/ec.js +++ /dev/null @@ -1,319 +0,0 @@ -// Basic Javascript Elliptic Curve implementation -// Ported loosely from BouncyCastle's Java EC code -// Only Fp curves implemented for now - -// Requires jsbn.js and jsbn2.js - -// ---------------- -// ECFieldElementFp - -// constructor -function ECFieldElementFp(q,x) { - this.x = x; - // TODO if(x.compareTo(q) >= 0) error - this.q = q; -} - -function feFpEquals(other) { - if(other == this) return true; - return (this.q.equals(other.q) && this.x.equals(other.x)); -} - -function feFpToBigInteger() { - return this.x; -} - -function feFpNegate() { - return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); -} - -function feFpAdd(b) { - return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); -} - -function feFpSubtract(b) { - return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); -} - -function feFpMultiply(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); -} - -function feFpSquare() { - return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); -} - -function feFpDivide(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); -} - -ECFieldElementFp.prototype.equals = feFpEquals; -ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; -ECFieldElementFp.prototype.negate = feFpNegate; -ECFieldElementFp.prototype.add = feFpAdd; -ECFieldElementFp.prototype.subtract = feFpSubtract; -ECFieldElementFp.prototype.multiply = feFpMultiply; -ECFieldElementFp.prototype.square = feFpSquare; -ECFieldElementFp.prototype.divide = feFpDivide; - -// ---------------- -// ECPointFp - -// constructor -function ECPointFp(curve,x,y,z) { - this.curve = curve; - this.x = x; - this.y = y; - // Projective coordinates: either zinv == null or z * zinv == 1 - // z and zinv are just BigIntegers, not fieldElements - if(z == null) { - this.z = BigInteger.ONE; - } - else { - this.z = z; - } - this.zinv = null; - //TODO: compression flag -} - -function pointFpGetX() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q)); -} - -function pointFpGetY() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q)); -} - -function pointFpEquals(other) { - if(other == this) return true; - if(this.isInfinity()) return other.isInfinity(); - if(other.isInfinity()) return this.isInfinity(); - var u, v; - // u = Y2 * Z1 - Y1 * Z2 - u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); - if(!u.equals(BigInteger.ZERO)) return false; - // v = X2 * Z1 - X1 * Z2 - v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); - return v.equals(BigInteger.ZERO); -} - -function pointFpIsInfinity() { - if((this.x == null) && (this.y == null)) return true; - return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); -} - -function pointFpNegate() { - return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); -} - -function pointFpAdd(b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - // u = Y2 * Z1 - Y1 * Z2 - var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); - // v = X2 * Z1 - X1 * Z2 - var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); - - if(BigInteger.ZERO.equals(v)) { - if(BigInteger.ZERO.equals(u)) { - return this.twice(); // this == b, so double - } - return this.curve.getInfinity(); // this = -b, so infinity - } - - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - var x2 = b.x.toBigInteger(); - var y2 = b.y.toBigInteger(); - - var v2 = v.square(); - var v3 = v2.multiply(v); - var x1v2 = x1.multiply(v2); - var zu2 = u.square().multiply(this.z); - - // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) - var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); - // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 - var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); - // z3 = v^3 * z1 * z2 - var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -function pointFpTwice() { - if(this.isInfinity()) return this; - if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); - - // TODO: optimized handling of constants - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - - var y1z1 = y1.multiply(this.z); - var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); - var a = this.curve.a.toBigInteger(); - - // w = 3 * x1^2 + a * z1^2 - var w = x1.square().multiply(THREE); - if(!BigInteger.ZERO.equals(a)) { - w = w.add(this.z.square().multiply(a)); - } - w = w.mod(this.curve.q); - // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) - var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); - // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 - var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); - // z3 = 8 * (y1 * z1)^3 - var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -// Simple NAF (Non-Adjacent Form) multiplication algorithm -// TODO: modularize the multiplication algorithm -function pointFpMultiply(k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for(i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add(hBit ? this : neg); - } - } - - return R; -} - -// Compute this*j + x*k (simultaneous multiplication) -function pointFpMultiplyTwo(j,x,k) { - var i; - if(j.bitLength() > k.bitLength()) - i = j.bitLength() - 1; - else - i = k.bitLength() - 1; - - var R = this.curve.getInfinity(); - var both = this.add(x); - while(i >= 0) { - R = R.twice(); - if(j.testBit(i)) { - if(k.testBit(i)) { - R = R.add(both); - } - else { - R = R.add(this); - } - } - else { - if(k.testBit(i)) { - R = R.add(x); - } - } - --i; - } - - return R; -} - -ECPointFp.prototype.getX = pointFpGetX; -ECPointFp.prototype.getY = pointFpGetY; -ECPointFp.prototype.equals = pointFpEquals; -ECPointFp.prototype.isInfinity = pointFpIsInfinity; -ECPointFp.prototype.negate = pointFpNegate; -ECPointFp.prototype.add = pointFpAdd; -ECPointFp.prototype.twice = pointFpTwice; -ECPointFp.prototype.multiply = pointFpMultiply; -ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; - -// ---------------- -// ECCurveFp - -// constructor -function ECCurveFp(q,a,b) { - this.q = q; - this.a = this.fromBigInteger(a); - this.b = this.fromBigInteger(b); - this.infinity = new ECPointFp(this, null, null); -} - -function curveFpGetQ() { - return this.q; -} - -function curveFpGetA() { - return this.a; -} - -function curveFpGetB() { - return this.b; -} - -function curveFpEquals(other) { - if(other == this) return true; - return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); -} - -function curveFpGetInfinity() { - return this.infinity; -} - -function curveFpFromBigInteger(x) { - return new ECFieldElementFp(this.q, x); -} - -// for now, work with hex strings because they're easier in JS -function curveFpDecodePointHex(s) { - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - case 3: - // point compression not supported yet - return null; - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} - -ECCurveFp.prototype.getQ = curveFpGetQ; -ECCurveFp.prototype.getA = curveFpGetA; -ECCurveFp.prototype.getB = curveFpGetB; -ECCurveFp.prototype.equals = curveFpEquals; -ECCurveFp.prototype.getInfinity = curveFpGetInfinity; -ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; -ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; - -module.exports.ECPointFp = ECPointFp; -module.exports.ECFieldElementFp = ECFieldElementFp; diff --git a/browser/vendor/ecdsa.js b/browser/vendor/ecdsa.js deleted file mode 100644 index 57e0801c5..000000000 --- a/browser/vendor/ecdsa.js +++ /dev/null @@ -1,485 +0,0 @@ -function integerToBytes(i, len) { - var bytes = i.toByteArrayUnsigned(); - - if (len < bytes.length) { - bytes = bytes.slice(bytes.length-len); - } else while (len > bytes.length) { - bytes.unshift(0); - } - - return bytes; -}; - -ECFieldElementFp.prototype.getByteLength = function () { - return Math.floor((this.toBigInteger().bitLength() + 7) / 8); -}; - -ECPointFp.prototype.getEncoded = function (compressed) { - var x = this.getX().toBigInteger(); - var y = this.getY().toBigInteger(); - - // Get value as a 32-byte Buffer - // Fixed length based on a patch by bitaddress.org and Casascius - var enc = integerToBytes(x, 32); - - if (compressed) { - if (y.isEven()) { - // Compressed even pubkey - // M = 02 || X - enc.unshift(0x02); - } else { - // Compressed uneven pubkey - // M = 03 || X - enc.unshift(0x03); - } - } else { - // Uncompressed pubkey - // M = 04 || X || Y - enc.unshift(0x04); - enc = enc.concat(integerToBytes(y, 32)); - } - return enc; -}; - -ECPointFp.decodeFrom = function (ecparams, enc) { - var type = enc[0]; - var dataLen = enc.length-1; - - // Extract x and y as byte arrays - if (type === 4) { - var xBa = enc.slice(1, 1 + dataLen/2), - yBa = enc.slice(1 + dataLen/2, 1 + dataLen), - x = BigInteger.fromByteArrayUnsigned(xBa), - y = BigInteger.fromByteArrayUnsigned(yBa); - } - else { - var xBa = enc.slice(1), - x = BigInteger.fromByteArrayUnsigned(xBa), - p = ecparams.getQ(), - xCubedPlus7 = x.multiply(x).multiply(x).add(new BigInteger('7')).mod(p), - pPlus1Over4 = p.add(new BigInteger('1')) - .divide(new BigInteger('4')), - y = xCubedPlus7.modPow(pPlus1Over4,p); - if (y.mod(new BigInteger('2')).toString() != ''+(type % 2)) { - y = p.subtract(y) - } - } - - // Return point - return new ECPointFp(ecparams, - ecparams.fromBigInteger(x), - ecparams.fromBigInteger(y)); -}; - -ECPointFp.prototype.add2D = function (b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - if (this.x.equals(b.x)) { - if (this.y.equals(b.y)) { - // this = b, i.e. this must be doubled - return this.twice(); - } - // this = -b, i.e. the result is the point at infinity - return this.curve.getInfinity(); - } - - var x_x = b.x.subtract(this.x); - var y_y = b.y.subtract(this.y); - var gamma = y_y.divide(x_x); - - var x3 = gamma.square().subtract(this.x).subtract(b.x); - var y3 = gamma.multiply(this.x.subtract(x3)).subtract(this.y); - - return new ECPointFp(this.curve, x3, y3); -}; - -ECPointFp.prototype.twice2D = function () { - if (this.isInfinity()) return this; - if (this.y.toBigInteger().signum() == 0) { - // if y1 == 0, then (x1, y1) == (x1, -y1) - // and hence this = -this and thus 2(x1, y1) == infinity - return this.curve.getInfinity(); - } - - var TWO = this.curve.fromBigInteger(BigInteger.valueOf(2)); - var THREE = this.curve.fromBigInteger(BigInteger.valueOf(3)); - var gamma = this.x.square().multiply(THREE).add(this.curve.a).divide(this.y.multiply(TWO)); - - var x3 = gamma.square().subtract(this.x.multiply(TWO)); - var y3 = gamma.multiply(this.x.subtract(x3)).subtract(this.y); - - return new ECPointFp(this.curve, x3, y3); -}; - -ECPointFp.prototype.multiply2D = function (k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for (i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add2D(hBit ? this : neg); - } - } - - return R; -}; - -ECPointFp.prototype.isOnCurve = function () { - var x = this.getX().toBigInteger(); - var y = this.getY().toBigInteger(); - var a = this.curve.getA().toBigInteger(); - var b = this.curve.getB().toBigInteger(); - var n = this.curve.getQ(); - var lhs = y.multiply(y).mod(n); - var rhs = x.multiply(x).multiply(x) - .add(a.multiply(x)).add(b).mod(n); - return lhs.equals(rhs); -}; - -ECPointFp.prototype.toString = function () { - return '('+this.getX().toBigInteger().toString()+','+ - this.getY().toBigInteger().toString()+')'; -}; - -/** - * Validate an elliptic curve point. - * - * See SEC 1, section 3.2.2.1: Elliptic Curve Public Key Validation Primitive - */ -ECPointFp.prototype.validate = function () { - var n = this.curve.getQ(); - - // Check Q != O - if (this.isInfinity()) { - throw new Error("Point is at infinity."); - } - - // Check coordinate bounds - var x = this.getX().toBigInteger(); - var y = this.getY().toBigInteger(); - if (x.compareTo(BigInteger.ONE) < 0 || - x.compareTo(n.subtract(BigInteger.ONE)) > 0) { - throw new Error('x coordinate out of bounds'); - } - if (y.compareTo(BigInteger.ONE) < 0 || - y.compareTo(n.subtract(BigInteger.ONE)) > 0) { - throw new Error('y coordinate out of bounds'); - } - - // Check y^2 = x^3 + ax + b (mod n) - if (!this.isOnCurve()) { - throw new Error("Point is not on the curve."); - } - - // Check nQ = 0 (Q is a scalar multiple of G) - if (this.multiply(n).isInfinity()) { - // TODO: This check doesn't work - fix. - throw new Error("Point is not a scalar multiple of G."); - } - - return true; -}; - -function dmp(v) { - if (!(v instanceof BigInteger)) v = v.toBigInteger(); - return Crypto.util.bytesToHex(v.toByteArrayUnsigned()); -}; - -Bitcoin.ECDSA = (function () { - var ecparams = getSECCurveByName("secp256k1"); - var rng = new SecureRandom(); - - var P_OVER_FOUR = null; - - function implShamirsTrick(P, k, Q, l) - { - var m = Math.max(k.bitLength(), l.bitLength()); - var Z = P.add2D(Q); - var R = P.curve.getInfinity(); - - for (var i = m - 1; i >= 0; --i) { - R = R.twice2D(); - - R.z = BigInteger.ONE; - - if (k.testBit(i)) { - if (l.testBit(i)) { - R = R.add2D(Z); - } else { - R = R.add2D(P); - } - } else { - if (l.testBit(i)) { - R = R.add2D(Q); - } - } - } - - return R; - }; - - var ECDSA = { - getBigRandom: function (limit) { - return new BigInteger(limit.bitLength(), rng) - .mod(limit.subtract(BigInteger.ONE)) - .add(BigInteger.ONE) - ; - }, - sign: function (hash, priv) { - var d = priv; - var n = ecparams.getN(); - var e = BigInteger.fromByteArrayUnsigned(hash); - - do { - var k = ECDSA.getBigRandom(n); - var G = ecparams.getG(); - var Q = G.multiply(k); - var r = Q.getX().toBigInteger().mod(n); - } while (r.compareTo(BigInteger.ZERO) <= 0); - - var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n); - - return ECDSA.serializeSig(r, s); - }, - - verify: function (hash, sig, pubkey) { - var r,s; - if (Bitcoin.Util.isArray(sig)) { - var obj = ECDSA.parseSig(sig); - r = obj.r; - s = obj.s; - } else if ("object" === typeof sig && sig.r && sig.s) { - r = sig.r; - s = sig.s; - } else { - throw "Invalid value for signature"; - } - - var Q; - if (pubkey instanceof ECPointFp) { - Q = pubkey; - } else if (Bitcoin.Util.isArray(pubkey)) { - Q = ECPointFp.decodeFrom(ecparams.getCurve(), pubkey); - } else { - throw "Invalid format for pubkey value, must be byte array or ECPointFp"; - } - var e = BigInteger.fromByteArrayUnsigned(hash); - - return ECDSA.verifyRaw(e, r, s, Q); - }, - - verifyRaw: function (e, r, s, Q) { - var n = ecparams.getN(); - var G = ecparams.getG(); - - if (r.compareTo(BigInteger.ONE) < 0 || - r.compareTo(n) >= 0) - return false; - - if (s.compareTo(BigInteger.ONE) < 0 || - s.compareTo(n) >= 0) - return false; - - var c = s.modInverse(n); - - var u1 = e.multiply(c).mod(n); - var u2 = r.multiply(c).mod(n); - - // TODO(!!!): For some reason Shamir's trick isn't working with - // signed message verification!? Probably an implementation - // error! - //var point = implShamirsTrick(G, u1, Q, u2); - var point = G.multiply(u1).add(Q.multiply(u2)); - - var v = point.getX().toBigInteger().mod(n); - - return v.equals(r); - }, - - /** - * Serialize a signature into DER format. - * - * Takes two BigIntegers representing r and s and returns a byte array. - */ - serializeSig: function (r, s) { - var rBa = r.toByteArraySigned(); - var sBa = s.toByteArraySigned(); - - var sequence = []; - sequence.push(0x02); // INTEGER - sequence.push(rBa.length); - sequence = sequence.concat(rBa); - - sequence.push(0x02); // INTEGER - sequence.push(sBa.length); - sequence = sequence.concat(sBa); - - sequence.unshift(sequence.length); - sequence.unshift(0x30); // SEQUENCE - - return sequence; - }, - - /** - * Parses a byte array containing a DER-encoded signature. - * - * This function will return an object of the form: - * - * { - * r: BigInteger, - * s: BigInteger - * } - */ - parseSig: function (sig) { - var cursor; - if (sig[0] != 0x30) - throw new Error("Signature not a valid DERSequence"); - - cursor = 2; - if (sig[cursor] != 0x02) - throw new Error("First element in signature must be a DERInteger");; - var rBa = sig.slice(cursor+2, cursor+2+sig[cursor+1]); - - cursor += 2+sig[cursor+1]; - if (sig[cursor] != 0x02) - throw new Error("Second element in signature must be a DERInteger"); - var sBa = sig.slice(cursor+2, cursor+2+sig[cursor+1]); - - cursor += 2+sig[cursor+1]; - - //if (cursor != sig.length) - // throw new Error("Extra bytes in signature"); - - var r = BigInteger.fromByteArrayUnsigned(rBa); - var s = BigInteger.fromByteArrayUnsigned(sBa); - - return {r: r, s: s}; - }, - - parseSigCompact: function (sig) { - if (sig.length !== 65) { - throw "Signature has the wrong length"; - } - - // Signature is prefixed with a type byte storing three bits of - // information. - var i = sig[0] - 27; - if (i < 0 || i > 7) { - throw "Invalid signature type"; - } - - var n = ecparams.getN(); - var r = BigInteger.fromByteArrayUnsigned(sig.slice(1, 33)).mod(n); - var s = BigInteger.fromByteArrayUnsigned(sig.slice(33, 65)).mod(n); - - return {r: r, s: s, i: i}; - }, - - /** - * Recover a public key from a signature. - * - * See SEC 1: Elliptic Curve Cryptography, section 4.1.6, "Public - * Key Recovery Operation". - * - * http://www.secg.org/download/aid-780/sec1-v2.pdf - */ - recoverPubKey: function (r, s, hash, i) { - // The recovery parameter i has two bits. - i = i & 3; - - // The less significant bit specifies whether the y coordinate - // of the compressed point is even or not. - var isYEven = i & 1; - - // The more significant bit specifies whether we should use the - // first or second candidate key. - var isSecondKey = i >> 1; - - var n = ecparams.getN(); - var G = ecparams.getG(); - var curve = ecparams.getCurve(); - var p = curve.getQ(); - var a = curve.getA().toBigInteger(); - var b = curve.getB().toBigInteger(); - - // We precalculate (p + 1) / 4 where p is if the field order - if (!P_OVER_FOUR) { - P_OVER_FOUR = p.add(BigInteger.ONE).divide(BigInteger.valueOf(4)); - } - - // 1.1 Compute x - var x = isSecondKey ? r.add(n) : r; - - // 1.3 Convert x to point - var alpha = x.multiply(x).multiply(x).add(a.multiply(x)).add(b).mod(p); - var beta = alpha.modPow(P_OVER_FOUR, p); - - var xorOdd = beta.isEven() ? (i % 2) : ((i+1) % 2); - // If beta is even, but y isn't or vice versa, then convert it, - // otherwise we're done and y == beta. - var y = (beta.isEven() ? !isYEven : isYEven) ? beta : p.subtract(beta); - - // 1.4 Check that nR is at infinity - var R = new ECPointFp(curve, - curve.fromBigInteger(x), - curve.fromBigInteger(y)); - R.validate(); - - // 1.5 Compute e from M - var e = BigInteger.fromByteArrayUnsigned(hash); - var eNeg = BigInteger.ZERO.subtract(e).mod(n); - - // 1.6 Compute Q = r^-1 (sR - eG) - var rInv = r.modInverse(n); - var Q = implShamirsTrick(R, s, G, eNeg).multiply(rInv); - - Q.validate(); - if (!ECDSA.verifyRaw(e, r, s, Q)) { - throw "Pubkey recovery unsuccessful"; - } - - var pubKey = new Bitcoin.ECKey(); - pubKey.pub = Q; - return pubKey; - }, - - /** - * Calculate pubkey extraction parameter. - * - * When extracting a pubkey from a signature, we have to - * distinguish four different cases. Rather than putting this - * burden on the verifier, Bitcoin includes a 2-bit value with the - * signature. - * - * This function simply tries all four cases and returns the value - * that resulted in a successful pubkey recovery. - */ - calcPubkeyRecoveryParam: function (address, r, s, hash) - { - for (var i = 0; i < 4; i++) { - try { - var pubkey = Bitcoin.ECDSA.recoverPubKey(r, s, hash, i); - if (pubkey.getBitcoinAddress().toString() == address) { - return i; - } - } catch (e) {} - } - throw "Unable to find valid recovery factor"; - } - }; - - return ECDSA; -})(); diff --git a/browser/vendor/eckey.js b/browser/vendor/eckey.js deleted file mode 100644 index 62b6cd067..000000000 --- a/browser/vendor/eckey.js +++ /dev/null @@ -1,134 +0,0 @@ -Bitcoin.ECKey = (function () { - var ECDSA = Bitcoin.ECDSA; - var ecparams = getSECCurveByName("secp256k1"); - var rng = new SecureRandom(); - - var ECKey = function (input) { - if (!input) { - // Generate new key - var n = ecparams.getN(); - //this.priv = ECDSA.getBigRandom(n); - } else if (input instanceof BigInteger) { - // Input is a private key value - this.priv = input; - } else if (Bitcoin.Util.isArray(input)) { - // Prepend zero byte to prevent interpretation as negative integer - this.priv = BigInteger.fromByteArrayUnsigned(input); - } else if ("string" == typeof input) { - if (input.length == 51 && input[0] == '5') { - // Base58 encoded private key - this.priv = BigInteger.fromByteArrayUnsigned(ECKey.decodeString(input)); - } else { - // Prepend zero byte to prevent interpretation as negative integer - this.priv = BigInteger.fromByteArrayUnsigned(Crypto.util.hexToBytes(input)); - } - } - this.compressed = !!ECKey.compressByDefault; - }; - - /** - * Whether public keys should be returned compressed by default. - */ - ECKey.compressByDefault = false; - - /** - * Set whether the public key should be returned compressed or not. - */ - ECKey.prototype.setCompressed = function (v) { - this.compressed = !!v; - }; - - /** - * Return public key in DER encoding. - */ - ECKey.prototype.getPub = function () { - return this.getPubPoint().getEncoded(this.compressed); - }; - - /** - * Return public point as ECPoint object. - */ - ECKey.prototype.getPubPoint = function () { - if (!this.pub) this.pub = ecparams.getG().multiply(this.priv); - - return this.pub; - }; - - /** - * Get the pubKeyHash for this key. - * - * This is calculated as RIPE160(SHA256([encoded pubkey])) and returned as - * a byte array. - */ - ECKey.prototype.getPubKeyHash = function () { - if (this.pubKeyHash) return this.pubKeyHash; - - return this.pubKeyHash = Bitcoin.Util.sha256ripe160(this.getPub()); - }; - - ECKey.prototype.getBitcoinAddress = function () { - var hash = this.getPubKeyHash(); - var addr = new Bitcoin.Address(hash); - return addr; - }; - - ECKey.prototype.getExportedPrivateKey = function () { - var hash = this.priv.toByteArrayUnsigned(); - while (hash.length < 32) hash.unshift(0); - hash.unshift(0x80); - var checksum = Crypto.SHA256(Crypto.SHA256(hash, {asBytes: true}), {asBytes: true}); - var bytes = hash.concat(checksum.slice(0,4)); - return Bitcoin.Base58.encode(bytes); - }; - - ECKey.prototype.setPub = function (pub) { - this.pub = ECPointFp.decodeFrom(ecparams.getCurve(), pub); - }; - - ECKey.prototype.toString = function (format) { - if (format === "base64") { - return Crypto.util.bytesToBase64(this.priv.toByteArrayUnsigned()); - } else { - return Crypto.util.bytesToHex(this.priv.toByteArrayUnsigned()); - } - }; - - ECKey.prototype.sign = function (hash) { - return ECDSA.sign(hash, this.priv); - }; - - ECKey.prototype.verify = function (hash, sig) { - return ECDSA.verify(hash, sig, this.getPub()); - }; - - /** - * Parse an exported private key contained in a string. - */ - ECKey.decodeString = function (string) { - var bytes = Bitcoin.Base58.decode(string); - - var hash = bytes.slice(0, 33); - - var checksum = Crypto.SHA256(Crypto.SHA256(hash, {asBytes: true}), {asBytes: true}); - - if (checksum[0] != bytes[33] || - checksum[1] != bytes[34] || - checksum[2] != bytes[35] || - checksum[3] != bytes[36]) { - throw "Checksum validation failed!"; - } - - var version = hash.shift(); - - if (version != 0x80) { - throw "Version "+version+" not supported!"; - } - - return hash; - }; - - return ECKey; -})(); - - -module.exports.ECKey = Bitcoin.ECKey; diff --git a/browser/vendor/jsbn.js b/browser/vendor/jsbn.js deleted file mode 100644 index 40bb9e2b9..000000000 --- a/browser/vendor/jsbn.js +++ /dev/null @@ -1,559 +0,0 @@ -// Copyright (c) 2005 Tom Wu -// All Rights Reserved. -// See "LICENSE" for details. - -// Basic JavaScript BN library - subset useful for RSA encryption. - -// Bits per digit -var dbits; - -// JavaScript engine analysis -var canary = 0xdeadbeefcafe; -var j_lm = ((canary&0xffffff)==0xefcafe); - -// (public) Constructor -function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); -} - -// return new, unset BigInteger -function nbi() { return new BigInteger(null); } - -// am: Compute w_j += (x*this_i), propagate carries, -// c is initial carry, returns final carry. -// c < 3*dvalue, x < 2*dvalue, this_i < dvalue -// We need to select the fastest one that works in this environment. - -// am1: use a single mult and divide to get the high bits, -// max digit bits should be 26 because -// max internal value = 2*dvalue^2-2*dvalue (< 2^53) -function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; -} -// am2 avoids a big mult-and-extract completely. -// Max digit bits should be <= 30 because we do bitwise ops -// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) -function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; -} -// Alternately, set max digit bits to 28 since some -// browsers slow down when dealing with 32-bit numbers. -function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; -} -if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; -} -else if(j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; -} -else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; -} - -BigInteger.prototype.DB = dbits; -BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; -} - -// (protected) set from integer value x, -DV <= x < DV -function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+DV; - else this.t = 0; -} - -// return bigint initialized to value -function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - -// (protected) set from string and radix -function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; -} - -// (public) return string representation in given radix -function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; -} - -// (public) -this -function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - -// (public) |this| -function bnAbs() { return (this.s<0)?this.negate():this; } - -// (public) return + if this > a, - if this < a, 0 if equal -function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; -} - -// returns bit length of the integer x -function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; -} - -// (public) return the number of bits in "this" -function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); -} - -// (protected) r = this << n*DB -function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; -} - -// (protected) r = this >> n*DB -function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; -} - -// (protected) r = this << n -function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); -} - -// (protected) r = this >> n -function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); -} - -// (protected) r = this * a, r != this,a (HAC 14.12) -// "this" should be the larger one if appropriate. -function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); -} - -// (protected) r = this^2, r != this (HAC 14.16) -function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); -} - -// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) -// r != q, this != m. q or r may be null. -function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); -} - -// (public) this mod a -function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; -} - -// Modular reduction using "classic" algorithm -function Classic(m) { this.m = m; } -function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; -} -function cRevert(x) { return x; } -function cReduce(x) { x.divRemTo(this.m,null,x); } -function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } -function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - -Classic.prototype.convert = cConvert; -Classic.prototype.revert = cRevert; -Classic.prototype.reduce = cReduce; -Classic.prototype.mulTo = cMulTo; -Classic.prototype.sqrTo = cSqrTo; - -// (protected) return "-1/this % 2^DB"; useful for Mont. reduction -// justification: -// xy == 1 (mod m) -// xy = 1+km -// xy(2-xy) = (1+km)(1-km) -// x[y(2-xy)] = 1-k^2m^2 -// x[y(2-xy)] == 1 (mod m^2) -// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 -// should reduce x and y(2-xy) by m^2 at each step to keep size bounded. -// JS multiply "overflows" differently from C/C++, so care is needed here. -function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; -} - -// Montgomery reduction -function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; -} - -// xR mod m -function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; -} - -// x/R mod m -function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; -} - -// x = x/R mod m (HAC 14.32) -function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); -} - -// r = "x^2/R mod m"; x != r -function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - -// r = "xy/R mod m"; x,y != r -function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - -Montgomery.prototype.convert = montConvert; -Montgomery.prototype.revert = montRevert; -Montgomery.prototype.reduce = montReduce; -Montgomery.prototype.mulTo = montMulTo; -Montgomery.prototype.sqrTo = montSqrTo; - -// (protected) true iff this is even -function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - -// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) -function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); -} - -// (public) this^e % m, 0 <= e < 2^32 -function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); -} - -// protected -BigInteger.prototype.copyTo = bnpCopyTo; -BigInteger.prototype.fromInt = bnpFromInt; -BigInteger.prototype.fromString = bnpFromString; -BigInteger.prototype.clamp = bnpClamp; -BigInteger.prototype.dlShiftTo = bnpDLShiftTo; -BigInteger.prototype.drShiftTo = bnpDRShiftTo; -BigInteger.prototype.lShiftTo = bnpLShiftTo; -BigInteger.prototype.rShiftTo = bnpRShiftTo; -BigInteger.prototype.subTo = bnpSubTo; -BigInteger.prototype.multiplyTo = bnpMultiplyTo; -BigInteger.prototype.squareTo = bnpSquareTo; -BigInteger.prototype.divRemTo = bnpDivRemTo; -BigInteger.prototype.invDigit = bnpInvDigit; -BigInteger.prototype.isEven = bnpIsEven; -BigInteger.prototype.exp = bnpExp; - -// public -BigInteger.prototype.toString = bnToString; -BigInteger.prototype.negate = bnNegate; -BigInteger.prototype.abs = bnAbs; -BigInteger.prototype.compareTo = bnCompareTo; -BigInteger.prototype.bitLength = bnBitLength; -BigInteger.prototype.mod = bnMod; -BigInteger.prototype.modPowInt = bnModPowInt; - -// "constants" -BigInteger.ZERO = nbv(0); -BigInteger.ONE = nbv(1); diff --git a/browser/vendor/jsbn2.js b/browser/vendor/jsbn2.js deleted file mode 100644 index e9ff49050..000000000 --- a/browser/vendor/jsbn2.js +++ /dev/null @@ -1,658 +0,0 @@ -// Copyright (c) 2005-2009 Tom Wu -// All Rights Reserved. -// See "LICENSE" for details. - -// Extended JavaScript BN functions, required for RSA private ops. - -// Version 1.1: new BigInteger("0", 10) returns "proper" zero -// Version 1.2: square() API, isProbablePrime fix - -// (public) -function bnClone() { var r = nbi(); this.copyTo(r); return r; } - -// (public) return value as integer -function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>24; } - -// (public) return value as short (assumes DB>=16) -function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } - -// (protected) return x s.t. r^x < DV -function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - -// (public) 0 if this == 0, 1 if this > 0 -function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; -} - -// (protected) convert to radix string -function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; -} - -// (protected) convert from radix string -function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); -} - -// (protected) alternate constructor -function bnpFromNumber(a,b,c) { - if("number" == typeof b) { - // new BigInteger(int,int,RNG) - if(a < 2) this.fromInt(1); - else { - this.fromNumber(a,c); - if(!this.testBit(a-1)) // force MSB set - this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); - if(this.isEven()) this.dAddOffset(1,0); // force odd - while(!this.isProbablePrime(b)) { - this.dAddOffset(2,0); - if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); - } - } - } - else { - // new BigInteger(int,RNG) - var x = new Array(), t = a&7; - x.length = (a>>3)+1; - b.nextBytes(x); - if(t > 0) x[0] &= ((1< 0) { - if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) - r[k++] = d|(this.s<<(this.DB-p)); - while(i >= 0) { - if(p < 8) { - d = (this[i]&((1<>(p+=this.DB-8); - } - else { - d = (this[i]>>(p-=8))&0xff; - if(p <= 0) { p += this.DB; --i; } - } - if((d&0x80) != 0) d |= -256; - if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; - if(k > 0 || d != this.s) r[k++] = d; - } - } - return r; -} - -function bnEquals(a) { return(this.compareTo(a)==0); } -function bnMin(a) { return(this.compareTo(a)<0)?this:a; } -function bnMax(a) { return(this.compareTo(a)>0)?this:a; } - -// (protected) r = this op a (bitwise) -function bnpBitwiseTo(a,op,r) { - var i, f, m = Math.min(a.t,this.t); - for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); - if(a.t < this.t) { - f = a.s&this.DM; - for(i = m; i < this.t; ++i) r[i] = op(this[i],f); - r.t = this.t; - } - else { - f = this.s&this.DM; - for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); - r.t = a.t; - } - r.s = op(this.s,a.s); - r.clamp(); -} - -// (public) this & a -function op_and(x,y) { return x&y; } -function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } - -// (public) this | a -function op_or(x,y) { return x|y; } -function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } - -// (public) this ^ a -function op_xor(x,y) { return x^y; } -function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } - -// (public) this & ~a -function op_andnot(x,y) { return x&~y; } -function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } - -// (public) ~this -function bnNot() { - var r = nbi(); - for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; - r.t = this.t; - r.s = ~this.s; - return r; -} - -// (public) this << n -function bnShiftLeft(n) { - var r = nbi(); - if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); - return r; -} - -// (public) this >> n -function bnShiftRight(n) { - var r = nbi(); - if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); - return r; -} - -// return index of lowest 1-bit in x, x < 2^31 -function lbit(x) { - if(x == 0) return -1; - var r = 0; - if((x&0xffff) == 0) { x >>= 16; r += 16; } - if((x&0xff) == 0) { x >>= 8; r += 8; } - if((x&0xf) == 0) { x >>= 4; r += 4; } - if((x&3) == 0) { x >>= 2; r += 2; } - if((x&1) == 0) ++r; - return r; -} - -// (public) returns index of lowest 1-bit (or -1 if none) -function bnGetLowestSetBit() { - for(var i = 0; i < this.t; ++i) - if(this[i] != 0) return i*this.DB+lbit(this[i]); - if(this.s < 0) return this.t*this.DB; - return -1; -} - -// return number of 1 bits in x -function cbit(x) { - var r = 0; - while(x != 0) { x &= x-1; ++r; } - return r; -} - -// (public) return number of set bits -function bnBitCount() { - var r = 0, x = this.s&this.DM; - for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); - return r; -} - -// (public) true iff nth bit is set -function bnTestBit(n) { - var j = Math.floor(n/this.DB); - if(j >= this.t) return(this.s!=0); - return((this[j]&(1<<(n%this.DB)))!=0); -} - -// (protected) this op (1<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); -} - -// (public) this + a -function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } - -// (public) this - a -function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } - -// (public) this * a -function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } - -// (public) this^2 -function bnSquare() { var r = nbi(); this.squareTo(r); return r; } - -// (public) this / a -function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } - -// (public) this % a -function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } - -// (public) [this/a,this%a] -function bnDivideAndRemainder(a) { - var q = nbi(), r = nbi(); - this.divRemTo(a,q,r); - return new Array(q,r); -} - -// (protected) this *= n, this >= 0, 1 < n < DV -function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); -} - -// (protected) this += n << w words, this >= 0 -function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } -} - -// A "null" reducer -function NullExp() {} -function nNop(x) { return x; } -function nMulTo(x,y,r) { x.multiplyTo(y,r); } -function nSqrTo(x,r) { x.squareTo(r); } - -NullExp.prototype.convert = nNop; -NullExp.prototype.revert = nNop; -NullExp.prototype.mulTo = nMulTo; -NullExp.prototype.sqrTo = nSqrTo; - -// (public) this^e -function bnPow(e) { return this.exp(e,new NullExp()); } - -// (protected) r = lower n words of "this * a", a.t <= n -// "this" should be the larger one if appropriate. -function bnpMultiplyLowerTo(a,n,r) { - var i = Math.min(this.t+a.t,n); - r.s = 0; // assumes a,this >= 0 - r.t = i; - while(i > 0) r[--i] = 0; - var j; - for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); - for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); - r.clamp(); -} - -// (protected) r = "this * a" without lower n words, n > 0 -// "this" should be the larger one if appropriate. -function bnpMultiplyUpperTo(a,n,r) { - --n; - var i = r.t = this.t+a.t-n; - r.s = 0; // assumes a,this >= 0 - while(--i >= 0) r[i] = 0; - for(i = Math.max(n-this.t,0); i < a.t; ++i) - r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); - r.clamp(); - r.drShiftTo(1,r); -} - -// Barrett modular reduction -function Barrett(m) { - // setup Barrett - this.r2 = nbi(); - this.q3 = nbi(); - BigInteger.ONE.dlShiftTo(2*m.t,this.r2); - this.mu = this.r2.divide(m); - this.m = m; -} - -function barrettConvert(x) { - if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); - else if(x.compareTo(this.m) < 0) return x; - else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } -} - -function barrettRevert(x) { return x; } - -// x = x mod m (HAC 14.42) -function barrettReduce(x) { - x.drShiftTo(this.m.t-1,this.r2); - if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } - this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); - this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); - while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); - x.subTo(this.r2,x); - while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); -} - -// r = x^2 mod m; x != r -function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - -// r = x*y mod m; x,y != r -function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - -Barrett.prototype.convert = barrettConvert; -Barrett.prototype.revert = barrettRevert; -Barrett.prototype.reduce = barrettReduce; -Barrett.prototype.mulTo = barrettMulTo; -Barrett.prototype.sqrTo = barrettSqrTo; - -// (public) this^e % m (HAC 14.85) -function bnModPow(e,m) { - var i = e.bitLength(), k, r = nbv(1), z; - if(i <= 0) return r; - else if(i < 18) k = 1; - else if(i < 48) k = 3; - else if(i < 144) k = 4; - else if(i < 768) k = 5; - else k = 6; - if(i < 8) - z = new Classic(m); - else if(m.isEven()) - z = new Barrett(m); - else - z = new Montgomery(m); - - // precomputation - var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { - var g2 = nbi(); - z.sqrTo(g[1],g2); - while(n <= km) { - g[n] = nbi(); - z.mulTo(g2,g[n-2],g[n]); - n += 2; - } - } - - var j = e.t-1, w, is1 = true, r2 = nbi(), t; - i = nbits(e[j])-1; - while(j >= 0) { - if(i >= k1) w = (e[j]>>(i-k1))&km; - else { - w = (e[j]&((1<<(i+1))-1))<<(k1-i); - if(j > 0) w |= e[j-1]>>(this.DB+i-k1); - } - - n = k; - while((w&1) == 0) { w >>= 1; --n; } - if((i -= n) < 0) { i += this.DB; --j; } - if(is1) { // ret == 1, don't bother squaring or multiplying it - g[w].copyTo(r); - is1 = false; - } - else { - while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } - if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } - z.mulTo(r2,g[w],r); - } - - while(j >= 0 && (e[j]&(1< 0) { - x.rShiftTo(g,x); - y.rShiftTo(g,y); - } - while(x.signum() > 0) { - if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); - if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); - if(x.compareTo(y) >= 0) { - x.subTo(y,x); - x.rShiftTo(1,x); - } - else { - y.subTo(x,y); - y.rShiftTo(1,y); - } - } - if(g > 0) y.lShiftTo(g,y); - return y; -} - -// (protected) this % n, n < 2^26 -function bnpModInt(n) { - if(n <= 0) return 0; - var d = this.DV%n, r = (this.s<0)?n-1:0; - if(this.t > 0) - if(d == 0) r = this[0]%n; - else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; - return r; -} - -// (public) 1/this % m (HAC 14.61) -function bnModInverse(m) { - var ac = m.isEven(); - if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; - var u = m.clone(), v = this.clone(); - var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); - while(u.signum() != 0) { - while(u.isEven()) { - u.rShiftTo(1,u); - if(ac) { - if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } - a.rShiftTo(1,a); - } - else if(!b.isEven()) b.subTo(m,b); - b.rShiftTo(1,b); - } - while(v.isEven()) { - v.rShiftTo(1,v); - if(ac) { - if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } - c.rShiftTo(1,c); - } - else if(!d.isEven()) d.subTo(m,d); - d.rShiftTo(1,d); - } - if(u.compareTo(v) >= 0) { - u.subTo(v,u); - if(ac) a.subTo(c,a); - b.subTo(d,b); - } - else { - v.subTo(u,v); - if(ac) c.subTo(a,c); - d.subTo(b,d); - } - } - if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; - if(d.compareTo(m) >= 0) return d.subtract(m); - if(d.signum() < 0) d.addTo(m,d); else return d; - if(d.signum() < 0) return d.add(m); else return d; -} - -var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; -var lplim = (1<<26)/lowprimes[lowprimes.length-1]; - -// (public) test primality with certainty >= 1-.5^t -function bnIsProbablePrime(t) { - var i, x = this.abs(); - if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { - for(i = 0; i < lowprimes.length; ++i) - if(x[0] == lowprimes[i]) return true; - return false; - } - if(x.isEven()) return false; - i = 1; - while(i < lowprimes.length) { - var m = lowprimes[i], j = i+1; - while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; - m = x.modInt(m); - while(i < j) if(m%lowprimes[i++] == 0) return false; - } - return x.millerRabin(t); -} - -// (protected) true if probably prime (HAC 4.24, Miller-Rabin) -function bnpMillerRabin(t) { - var n1 = this.subtract(BigInteger.ONE); - var k = n1.getLowestSetBit(); - if(k <= 0) return false; - var r = n1.shiftRight(k); - t = (t+1)>>1; - if(t > lowprimes.length) t = lowprimes.length; - var a = nbi(); - for(var i = 0; i < t; ++i) { - //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); - var y = a.modPow(r,this); - if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { - var j = 1; - while(j++ < k && y.compareTo(n1) != 0) { - y = y.modPowInt(2,this); - if(y.compareTo(BigInteger.ONE) == 0) return false; - } - if(y.compareTo(n1) != 0) return false; - } - } - return true; -} - -// protected -BigInteger.prototype.chunkSize = bnpChunkSize; -BigInteger.prototype.toRadix = bnpToRadix; -BigInteger.prototype.fromRadix = bnpFromRadix; -BigInteger.prototype.fromNumber = bnpFromNumber; -BigInteger.prototype.bitwiseTo = bnpBitwiseTo; -BigInteger.prototype.changeBit = bnpChangeBit; -BigInteger.prototype.addTo = bnpAddTo; -BigInteger.prototype.dMultiply = bnpDMultiply; -BigInteger.prototype.dAddOffset = bnpDAddOffset; -BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; -BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; -BigInteger.prototype.modInt = bnpModInt; -BigInteger.prototype.millerRabin = bnpMillerRabin; - -// public -BigInteger.prototype.clone = bnClone; -BigInteger.prototype.intValue = bnIntValue; -BigInteger.prototype.byteValue = bnByteValue; -BigInteger.prototype.shortValue = bnShortValue; -BigInteger.prototype.signum = bnSigNum; -BigInteger.prototype.toByteArray = bnToByteArray; -BigInteger.prototype.equals = bnEquals; -BigInteger.prototype.min = bnMin; -BigInteger.prototype.max = bnMax; -BigInteger.prototype.and = bnAnd; -BigInteger.prototype.or = bnOr; -BigInteger.prototype.xor = bnXor; -BigInteger.prototype.andNot = bnAndNot; -BigInteger.prototype.not = bnNot; -BigInteger.prototype.shiftLeft = bnShiftLeft; -BigInteger.prototype.shiftRight = bnShiftRight; -BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; -BigInteger.prototype.bitCount = bnBitCount; -BigInteger.prototype.testBit = bnTestBit; -BigInteger.prototype.setBit = bnSetBit; -BigInteger.prototype.clearBit = bnClearBit; -BigInteger.prototype.flipBit = bnFlipBit; -BigInteger.prototype.add = bnAdd; -BigInteger.prototype.subtract = bnSubtract; -BigInteger.prototype.multiply = bnMultiply; -BigInteger.prototype.divide = bnDivide; -BigInteger.prototype.remainder = bnRemainder; -BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; -BigInteger.prototype.modPow = bnModPow; -BigInteger.prototype.modInverse = bnModInverse; -BigInteger.prototype.pow = bnPow; -BigInteger.prototype.gcd = bnGCD; -BigInteger.prototype.isProbablePrime = bnIsProbablePrime; - -// JSBN-specific extension -BigInteger.prototype.square = bnSquare; - -// BigInteger interfaces not implemented in jsbn: - -// BigInteger(int signum, byte[] magnitude) -// double doubleValue() -// float floatValue() -// int hashCode() -// long longValue() -// static BigInteger valueOf(long val) - -module.exports.BigInteger = BigInteger; diff --git a/browser/vendor/prng4.js b/browser/vendor/prng4.js deleted file mode 100644 index 3034f3f11..000000000 --- a/browser/vendor/prng4.js +++ /dev/null @@ -1,45 +0,0 @@ -// prng4.js - uses Arcfour as a PRNG - -function Arcfour() { - this.i = 0; - this.j = 0; - this.S = new Array(); -} - -// Initialize arcfour context from key, an array of ints, each from [0..255] -function ARC4init(key) { - var i, j, t; - for(i = 0; i < 256; ++i) - this.S[i] = i; - j = 0; - for(i = 0; i < 256; ++i) { - j = (j + this.S[i] + key[i % key.length]) & 255; - t = this.S[i]; - this.S[i] = this.S[j]; - this.S[j] = t; - } - this.i = 0; - this.j = 0; -} - -function ARC4next() { - var t; - this.i = (this.i + 1) & 255; - this.j = (this.j + this.S[this.i]) & 255; - t = this.S[this.i]; - this.S[this.i] = this.S[this.j]; - this.S[this.j] = t; - return this.S[(t + this.S[this.i]) & 255]; -} - -Arcfour.prototype.init = ARC4init; -Arcfour.prototype.next = ARC4next; - -// Plug in your RNG constructor here -function prng_newstate() { - return new Arcfour(); -} - -// Pool size must be a multiple of 4 and greater than 32. -// An array of bytes the size of the pool will be passed to init() -var rng_psize = 256; diff --git a/browser/vendor/rng.js b/browser/vendor/rng.js deleted file mode 100644 index 77918e59a..000000000 --- a/browser/vendor/rng.js +++ /dev/null @@ -1,70 +0,0 @@ -// Random number generator - requires a PRNG backend, e.g. prng4.js - -// For best results, put code like -// -// in your main HTML document. - -var rng_state; -var rng_pool; -var rng_pptr; - -// Mix in a 32-bit integer into the pool -function rng_seed_int(x) { - rng_pool[rng_pptr++] ^= x & 255; - rng_pool[rng_pptr++] ^= (x >> 8) & 255; - rng_pool[rng_pptr++] ^= (x >> 16) & 255; - rng_pool[rng_pptr++] ^= (x >> 24) & 255; - if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; -} - -// Mix in the current time (w/milliseconds) into the pool -function rng_seed_time() { - rng_seed_int(new Date().getTime()); -} - -// Initialize the pool with junk if needed. -if(rng_pool == null) { - rng_pool = new Array(); - rng_pptr = 0; - var t; - if(navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) { - // Extract entropy (256 bits) from NS4 RNG if available - var z = window.crypto.random(32); - for(t = 0; t < z.length; ++t) - rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; - } - while(rng_pptr < rng_psize) { // extract some randomness from Math.random() - t = Math.floor(65536 * Math.random()); - rng_pool[rng_pptr++] = t >>> 8; - rng_pool[rng_pptr++] = t & 255; - } - rng_pptr = 0; - rng_seed_time(); - //rng_seed_int(window.screenX); - //rng_seed_int(window.screenY); -} - -function rng_get_byte() { - if(rng_state == null) { - rng_seed_time(); - rng_state = prng_newstate(); - rng_state.init(rng_pool); - for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) - rng_pool[rng_pptr] = 0; - rng_pptr = 0; - //rng_pool = null; - } - // TODO: allow reseeding after first request - return rng_state.next(); -} - -function rng_get_bytes(ba) { - var i; - for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); -} - -function SecureRandom() {} - -SecureRandom.prototype.nextBytes = function() { - throw new Error('Should not use old RNG'); -}; diff --git a/browser/vendor/sec.js b/browser/vendor/sec.js deleted file mode 100644 index 57ee9368f..000000000 --- a/browser/vendor/sec.js +++ /dev/null @@ -1,175 +0,0 @@ -// Named EC curves - -// Requires ec.js, jsbn.js, and jsbn2.js - -// ---------------- -// X9ECParameters - -// constructor -function X9ECParameters(curve,g,n,h) { - this.curve = curve; - this.g = g; - this.n = n; - this.h = h; -} - -function x9getCurve() { - return this.curve; -} - -function x9getG() { - return this.g; -} - -function x9getN() { - return this.n; -} - -function x9getH() { - return this.h; -} - -X9ECParameters.prototype.getCurve = x9getCurve; -X9ECParameters.prototype.getG = x9getG; -X9ECParameters.prototype.getN = x9getN; -X9ECParameters.prototype.getH = x9getH; - -// ---------------- -// SECNamedCurves - -function fromHex(s) { return new BigInteger(s, 16); } - -function secp128r1() { - // p = 2^128 - 2^97 - 1 - var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("E87579C11079F43DD824993C2CEE5ED3"); - //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679"); - var n = fromHex("FFFFFFFE0000000075A30D1B9038A115"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "161FF7528B899B2D0C28607CA52C5B86" - + "CF5AC8395BAFEB13C02DA292DDED7A83"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160k1() { - // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB" - + "938CF935318FDCED6BC28286531733C3F03C4FEE"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160r1() { - // p = 2^160 - 2^31 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"); - var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"); - //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345"); - var n = fromHex("0100000000000000000001F4C8F927AED3CA752257"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "4A96B5688EF573284664698968C38BB913CBFC82" - + "23A628553168947D59DCC912042351377AC5FB32"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192k1() { - // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"); - var a = BigInteger.ZERO; - var b = fromHex("3"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D" - + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192r1() { - // p = 2^192 - 2^64 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"); - var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"); - //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012" - + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"); - return new X9ECParameters(curve, G, n, h); -} - -function secp224r1() { - // p = 2^224 - 2^96 + 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"); - var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"); - //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21" - + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256k1() { - // p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798" - + "483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256r1() { - // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1 - var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"); - //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90"); - var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" - + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"); - return new X9ECParameters(curve, G, n, h); -} - -// TODO: make this into a proper hashtable -function getSECCurveByName(name) { - if(name == "secp128r1") return secp128r1(); - if(name == "secp160k1") return secp160k1(); - if(name == "secp160r1") return secp160r1(); - if(name == "secp192k1") return secp192k1(); - if(name == "secp192r1") return secp192r1(); - if(name == "secp224r1") return secp224r1(); - if(name == "secp256k1") return secp256k1(); - if(name == "secp256r1") return secp256r1(); - return null; -} - -module.exports.getSECCurveByName = getSECCurveByName; diff --git a/browser/vendor/util.js b/browser/vendor/util.js deleted file mode 100644 index 18a5738b6..000000000 --- a/browser/vendor/util.js +++ /dev/null @@ -1,229 +0,0 @@ -// BigInteger monkey patching -BigInteger.valueOf = nbv; - -/** - * Returns a byte array representation of the big integer. - * - * This returns the absolute of the contained value in big endian - * form. A value of zero results in an empty array. - */ -BigInteger.prototype.toByteArrayUnsigned = function () { - var ba = this.abs().toByteArray(); - if (ba.length) { - if (ba[0] == 0) { - ba = ba.slice(1); - } - return ba.map(function (v) { - return (v < 0) ? v + 256 : v; - }); - } else { - // Empty array, nothing to do - return ba; - } -}; - -/** - * Turns a byte array into a big integer. - * - * This function will interpret a byte array as a big integer in big - * endian notation and ignore leading zeros. - */ -BigInteger.fromByteArrayUnsigned = function (ba) { - if (!ba.length) { - return ba.valueOf(0); - } else if (ba[0] & 0x80) { - // Prepend a zero so the BigInteger class doesn't mistake this - // for a negative integer. - return new BigInteger([0].concat(ba)); - } else { - return new BigInteger(ba); - } -}; - -/** - * Converts big integer to signed byte representation. - * - * The format for this value uses a the most significant bit as a sign - * bit. If the most significant bit is already occupied by the - * absolute value, an extra byte is prepended and the sign bit is set - * there. - * - * Examples: - * - * 0 => 0x00 - * 1 => 0x01 - * -1 => 0x81 - * 127 => 0x7f - * -127 => 0xff - * 128 => 0x0080 - * -128 => 0x8080 - * 255 => 0x00ff - * -255 => 0x80ff - * 16300 => 0x3fac - * -16300 => 0xbfac - * 62300 => 0x00f35c - * -62300 => 0x80f35c - */ -BigInteger.prototype.toByteArraySigned = function () { - var val = this.abs().toByteArrayUnsigned(); - var neg = this.compareTo(BigInteger.ZERO) < 0; - - if (neg) { - if (val[0] & 0x80) { - val.unshift(0x80); - } else { - val[0] |= 0x80; - } - } else { - if (val[0] & 0x80) { - val.unshift(0x00); - } - } - - return val; -}; - -/** - * Parse a signed big integer byte representation. - * - * For details on the format please see BigInteger.toByteArraySigned. - */ -BigInteger.fromByteArraySigned = function (ba) { - // Check for negative value - if (ba[0] & 0x80) { - // Remove sign bit - ba[0] &= 0x7f; - - return BigInteger.fromByteArrayUnsigned(ba).negate(); - } else { - return BigInteger.fromByteArrayUnsigned(ba); - } -}; - -// Console ignore -var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", - "trace", "profile", "profileEnd"]; - -if ("undefined" == typeof window.console) window.console = {}; -for (var i = 0; i < names.length; ++i) - if ("undefined" == typeof window.console[names[i]]) - window.console[names[i]] = function() {}; - -// Bitcoin utility functions -Bitcoin.Util = { - /** - * Cross-browser compatibility version of Array.isArray. - */ - isArray: Array.isArray || function(o) - { - return Object.prototype.toString.call(o) === '[object Array]'; - }, - - /** - * Create an array of a certain length filled with a specific value. - */ - makeFilledArray: function (len, val) - { - var array = []; - var i = 0; - while (i < len) { - array[i++] = val; - } - return array; - }, - - /** - * Turn an integer into a "var_int". - * - * "var_int" is a variable length integer used by Bitcoin's binary format. - * - * Returns a byte array. - */ - numToVarInt: function (i) - { - if (i < 0xfd) { - // unsigned char - return [i]; - } else if (i < 0x10000) { - // unsigned short (LE) - return [0xfd, i & 255 , i >>> 8]; - } else if (i < 0x100000000) { - // unsigned int (LE) - return [0xfe].concat(Crypto.util.wordsToBytes([i]).reverse()); - } else { - throw 'quadword not implemented' - // unsigned long long (LE) - //return [0xff].concat(Crypto.util.wordsToBytes([i >>> 32, i])); - } - }, - - /** - * Parse a Bitcoin value byte array, returning a BigInteger. - */ - valueToBigInt: function (valueBuffer) - { - if (valueBuffer instanceof BigInteger) return valueBuffer; - - // Prepend zero byte to prevent interpretation as negative integer - return BigInteger.fromByteArrayUnsigned(valueBuffer); - }, - - /** - * Format a Bitcoin value as a string. - * - * Takes a BigInteger or byte-array and returns that amount of Bitcoins in a - * nice standard formatting. - * - * Examples: - * 12.3555 - * 0.1234 - * 900.99998888 - * 34.00 - */ - formatValue: function (valueBuffer) { - var value = this.valueToBigInt(valueBuffer).toString(); - var integerPart = value.length > 8 ? value.substr(0, value.length-8) : '0'; - var decimalPart = value.length > 8 ? value.substr(value.length-8) : value; - while (decimalPart.length < 8) decimalPart = "0"+decimalPart; - decimalPart = decimalPart.replace(/0*$/, ''); - while (decimalPart.length < 2) decimalPart += "0"; - return integerPart+"."+decimalPart; - }, - - /** - * Parse a floating point string as a Bitcoin value. - * - * Keep in mind that parsing user input is messy. You should always display - * the parsed value back to the user to make sure we understood his input - * correctly. - */ - parseValue: function (valueString) { - // TODO: Detect other number formats (e.g. comma as decimal separator) - var valueComp = valueString.split('.'); - var integralPart = valueComp[0]; - var fractionalPart = valueComp[1] || "0"; - while (fractionalPart.length < 8) fractionalPart += "0"; - fractionalPart = fractionalPart.replace(/^0+/g, ''); - var value = BigInteger.valueOf(parseInt(integralPart)); - value = value.multiply(BigInteger.valueOf(100000000)); - value = value.add(BigInteger.valueOf(parseInt(fractionalPart))); - return value; - }, - - /** - * Calculate RIPEMD160(SHA256(data)). - * - * Takes an arbitrary byte array as inputs and returns the hash as a byte - * array. - */ - sha256ripe160: function (data) { - return Crypto.RIPEMD160(Crypto.SHA256(data, {asBytes: true}), {asBytes: true}); - } -}; - -for (var i in Crypto.util) { - if (Crypto.util.hasOwnProperty(i)) { - Bitcoin.Util[i] = Crypto.util[i]; - } -} diff --git a/lib/Block.js b/lib/Block.js index b129440f2..d39bc1bf9 100644 --- a/lib/Block.js +++ b/lib/Block.js @@ -11,7 +11,9 @@ var COINBASE_OP = Transaction.COINBASE_OP; var VerificationError = require('../util/error').VerificationError; var BlockRules = { maxTimeOffset: 2 * 60 * 60, // How far block timestamps can be into the future - largestHash: Bignum(2).pow(256) + //largestHash: (new Bignum(2)).pow(256) + //largestHash: new Bignum('115792089237316195423570985008687907853269984665640564039457584007913129639936') // = 2^256 + largestHash: new Bignum('10000000000000000000000000000000000000000000000000000000000000000', 16) }; function Block(data) { @@ -221,8 +223,10 @@ Block.prototype.checkBlock = function checkBlock(txs) { }; Block.getBlockValue = function getBlockValue(height) { - var subsidy = Bignum(50).mul(util.COIN); - subsidy = subsidy.div(Bignum(2).pow(Math.floor(height / 210000))); + var subsidy = 50 * util.COIN; + subsidy = subsidy / (Math.pow(2, Math.floor(height / 210000))); + subsidy = Math.floor(subsidy); + subsidy = new Bignum(subsidy); return subsidy; }; diff --git a/lib/Point.js b/lib/Point.js index 8549a1c99..0737569ca 100644 --- a/lib/Point.js +++ b/lib/Point.js @@ -3,13 +3,7 @@ var bignum = require('bignum'); var CPPKey = require('bindings')('KeyModule').Key; var assert = require('assert'); - -//a point on the secp256k1 curve -//x and y are bignums -var Point = function(x, y) { - this.x = x; - this.y = y; -}; +var Point = require('./common/Point'); Point.add = function(p1, p2) { var u1 = p1.toUncompressedPubKey(); @@ -19,34 +13,13 @@ Point.add = function(p1, p2) { }; Point.multiply = function(p1, x) { + if (Buffer.isBuffer(x) && x.length !== 32) + throw new Error('if x is a buffer, it must be 32 bytes') var u1 = p1.toUncompressedPubKey(); + if (typeof x === 'number' || typeof x === 'string') + x = (new bignum(x)).toBuffer({size: 32}); var pubKey = CPPKey.multiplyUncompressed(u1, x); return Point.fromUncompressedPubKey(pubKey); }; -//convert the public key of a Key into a Point -Point.fromUncompressedPubKey = function(pubkey) { - var point = new Point(); - point.x = bignum.fromBuffer(pubkey.slice(1, 33), { - size: 32 - }); - point.y = bignum.fromBuffer(pubkey.slice(33, 65), { - size: 32 - }); - return point; -}; - -//convert the Point into the Key containing a compressed public key -Point.prototype.toUncompressedPubKey = function() { - var xbuf = this.x.toBuffer({ - size: 32 - }); - var ybuf = this.y.toBuffer({ - size: 32 - }); - var prefix = new Buffer([0x04]); - var pubkey = Buffer.concat([prefix, xbuf, ybuf]); - return pubkey; -}; - module.exports = (Point); diff --git a/lib/ScriptInterpreter.js b/lib/ScriptInterpreter.js index 48bfc69e5..06e9a1ed0 100644 --- a/lib/ScriptInterpreter.js +++ b/lib/ScriptInterpreter.js @@ -427,16 +427,16 @@ ScriptInterpreter.prototype.eval = function eval(script, tx, inIndex, hashType, var num = bufferSMToInt(this.stackTop()); switch (opcode) { case Opcode.map.OP_1ADD: - num = num.add(bignum(1)); + num = num.add(1); break; case Opcode.map.OP_1SUB: - num = num.sub(bignum(1)); + num = num.sub(1); break; case Opcode.map.OP_2MUL: - num = num.mul(bignum(2)); + num = num.mul(2); break; case Opcode.map.OP_2DIV: - num = num.div(bignum(2)); + num = num.div(2); break; case Opcode.map.OP_NEGATE: num = num.neg(); diff --git a/lib/browser/Bignum.js b/lib/browser/Bignum.js index 878fcdac0..110985509 100644 --- a/lib/browser/Bignum.js +++ b/lib/browser/Bignum.js @@ -1,2071 +1,109 @@ -/* bignumber.js v1.3.0 https://github.com/MikeMcl/bignumber.js/LICENCE */ +var _bnjs = require('bn.js'); -/*jslint bitwise: true, eqeq: true, plusplus: true, sub: true, white: true, maxerr: 500 */ -/*global module */ - -/* - bignumber.js v1.3.0 - A JavaScript library for arbitrary-precision arithmetic. - https://github.com/MikeMcl/bignumber.js - Copyright (c) 2012 Michael Mclaughlin - MIT Expat Licence -*/ - -/*********************************** DEFAULTS ************************************/ - -/* - * The default values below must be integers within the stated ranges (inclusive). - * Most of these values can be changed during run-time using BigNumber.config(). - */ - -/* - * The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, - * MAX_EXP, and the argument to toFixed, toPrecision and toExponential, beyond - * which an exception is thrown (if ERRORS is true). - */ -var MAX = 1E9, // 0 to 1e+9 - - // Limit of magnitude of exponent argument to toPower. - MAX_POWER = 1E6, // 1 to 1e+6 - - // The maximum number of decimal places for operations involving division. - DECIMAL_PLACES = 20, // 0 to MAX - - /* - * The rounding mode used when rounding to the above decimal places, and when - * using toFixed, toPrecision and toExponential, and round (default value). - * UP 0 Away from zero. - * DOWN 1 Towards zero. - * CEIL 2 Towards +Infinity. - * FLOOR 3 Towards -Infinity. - * HALF_UP 4 Towards nearest neighbour. If equidistant, up. - * HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. - * HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. - * HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. - * HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. - */ - ROUNDING_MODE = 4, // 0 to 8 - - // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] - - // The exponent value at and beneath which toString returns exponential notation. - // Number type: -7 - TO_EXP_NEG = -7, // 0 to -MAX - - // The exponent value at and above which toString returns exponential notation. - // Number type: 21 - TO_EXP_POS = 21, // 0 to MAX - - // RANGE : [MIN_EXP, MAX_EXP] - - // The minimum exponent value, beneath which underflow to zero occurs. - // Number type: -324 (5e-324) - MIN_EXP = -MAX, // -1 to -MAX - - // The maximum exponent value, above which overflow to Infinity occurs. - // Number type: 308 (1.7976931348623157e+308) - MAX_EXP = MAX, // 1 to MAX - - // Whether BigNumber Errors are ever thrown. - // CHANGE parseInt to parseFloat if changing ERRORS to false. - ERRORS = true, // true or false - parse = parseInt, // parseInt or parseFloat - - /***********************************************************************************/ - - P = BigNumber.prototype, - DIGITS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_', - outOfRange, - id = 0, - isValid = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, - trim = String.prototype.trim || function() { - return this.replace(/^\s+|\s+$/g, '') - }, - ONE = BigNumber(1); - - -// CONSTRUCTOR - - -/* - * The exported function. - * Create and return a new instance of a BigNumber object. - * - * n {number|string|BigNumber} A numeric value. - * [b] {number} The base of n. Integer, 2 to 64 inclusive. - */ -function BigNumber(n, b) { - var e, i, isNum, digits, valid, orig, - x = this; - - // Enable constructor usage without new. - if (!(x instanceof BigNumber)) { - return new BigNumber(n, b) +var bnjs = function bnjs_extended(n) { + if (!(this instanceof bnjs_extended)) { + return new bnjs(n); } - - // Duplicate. - if (n instanceof BigNumber) { - id = 0; - - // e is undefined. - if (b !== e) { - n += '' - } else { - x['s'] = n['s']; - x['e'] = n['e']; - x['c'] = (n = n['c']) ? n.slice() : n; - return; - } - } - - // Accept empty string as zero - if (n === '') n = 0; - - // If number, check if minus zero. - if (typeof n != 'string') { - n = (isNum = typeof n == 'number' || - Object.prototype.toString.call(n) == '[object Number]') && - n === 0 && 1 / n < 0 ? '-0' : n + ''; - } - - orig = n; - - if (b === e && isValid.test(n)) { - - // Determine sign. - x['s'] = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1; - - // Either n is not a valid BigNumber or a base has been specified. - } else { - - // Enable exponential notation to be used with base 10 argument. - // Ensure return value is rounded to DECIMAL_PLACES as with other bases. - if (b == 10) { - - return setMode(n, DECIMAL_PLACES, ROUNDING_MODE); - } - - n = trim.call(n).replace(/^\+(?!-)/, ''); - - x['s'] = n.charAt(0) == '-' ? (n = n.replace(/^-(?!-)/, ''), -1) : 1; - - if (b != null) { - - if ((b == (b | 0) || !ERRORS) && - !(outOfRange = !(b >= 2 && b < 65))) { - - digits = '[' + DIGITS.slice(0, b = b | 0) + ']+'; - - // Before non-decimal number validity test and base conversion - // remove the `.` from e.g. '1.', and replace e.g. '.1' with '0.1'. - n = n.replace(/\.$/, '').replace(/^\./, '0.'); - - // Any number in exponential form will fail due to the e+/-. - if (valid = new RegExp( - '^' + digits + '(?:\\.' + digits + ')?$', b < 37 ? 'i' : '').test(n)) { - - if (isNum) { - - if (n.replace(/^0\.0*|\./, '').length > 15) { - - // 'new BigNumber() number type has more than 15 significant digits: {n}' - ifExceptionsThrow(orig, 0); - } - - // Prevent later check for length on converted number. - isNum = !isNum; - } - n = convert(n, 10, b, x['s']); - - } else if (n != 'Infinity' && n != 'NaN') { - - // 'new BigNumber() not a base {b} number: {n}' - ifExceptionsThrow(orig, 1, b); - n = 'NaN'; - } - } else { - - // 'new BigNumber() base not an integer: {b}' - // 'new BigNumber() base out of range: {b}' - ifExceptionsThrow(b, 2); - - // Ignore base. - valid = isValid.test(n); - } - } else { - valid = isValid.test(n); - } - - if (!valid) { - - // Infinity/NaN - x['c'] = x['e'] = null; - - // NaN - if (n != 'Infinity') { - - // No exception on NaN. - if (n != 'NaN') { - - // 'new BigNumber() not a number: {n}' - ifExceptionsThrow(orig, 3); - } - x['s'] = null; - } - id = 0; - - return; - } - } - - // Decimal point? - if ((e = n.indexOf('.')) > -1) { - n = n.replace('.', ''); - } - - // Exponential form? - if ((i = n.search(/e/i)) > 0) { - - // Determine exponent. - if (e < 0) { - e = i; - } - e += +n.slice(i + 1); - n = n.substring(0, i); - - } else if (e < 0) { - - // Integer. - e = n.length; - } - - // Determine leading zeros. - for (i = 0; n.charAt(i) == '0'; i++) {} - - b = n.length; - - // Disallow numbers with over 15 significant digits if number type. - if (isNum && b > 15 && n.slice(i).length > 15) { - - // 'new BigNumber() number type has more than 15 significant digits: {n}' - ifExceptionsThrow(orig, 0); - } - id = 0; - - // Overflow? - if ((e -= i + 1) > MAX_EXP) { - - // Infinity. - x['c'] = x['e'] = null; - - // Zero or underflow? - } else if (i == b || e < MIN_EXP) { - - // Zero. - x['c'] = [x['e'] = 0]; - } else { - - // Determine trailing zeros. - for (; n.charAt(--b) == '0';) {} - - x['e'] = e; - x['c'] = []; - - // Convert string to array of digits (without leading and trailing zeros). - for (e = 0; i <= b; x['c'][e++] = +n.charAt(i++)) {} - } -} - - -// CONSTRUCTOR PROPERTIES/METHODS - - -BigNumber['ROUND_UP'] = 0; -BigNumber['ROUND_DOWN'] = 1; -BigNumber['ROUND_CEIL'] = 2; -BigNumber['ROUND_FLOOR'] = 3; -BigNumber['ROUND_HALF_UP'] = 4; -BigNumber['ROUND_HALF_DOWN'] = 5; -BigNumber['ROUND_HALF_EVEN'] = 6; -BigNumber['ROUND_HALF_CEIL'] = 7; -BigNumber['ROUND_HALF_FLOOR'] = 8; - -/* - * Create an instance from a Buffer - */ -BigNumber['fromBuffer'] = function(buf, opts) { - - if (!opts) opts = {}; - - var endian = { - 1: 'big', - '-1': 'little' - }[opts.endian] || opts.endian || 'big'; - - var size = opts.size === 'auto' ? Math.ceil(buf.length) : (opts.size || 1); - - if (buf.length % size !== 0) { - throw new RangeError('Buffer length (' + buf.length + ')' + ' must be a multiple of size (' + size + ')'); - } - - var hex = []; - for (var i = 0; i < buf.length; i += size) { - var chunk = []; - for (var j = 0; j < size; j++) { - chunk.push(buf[ - i + (endian === 'big' ? j : (size - j - 1)) - ]); - } - - hex.push(chunk - .map(function(c) { - return (c < 16 ? '0' : '') + c.toString(16); - }) - .join('') - ); - } - - return BigNumber(hex.join(''), 16); - + if (typeof n === 'number') + n = n.toString(); + arguments[0] = n; + return _bnjs.apply(this, arguments); }; -/* - * Configure infrequently-changing library-wide settings. - * - * Accept an object or an argument list, with one or many of the following - * properties or parameters respectively: - * [ DECIMAL_PLACES [, ROUNDING_MODE [, EXPONENTIAL_AT [, RANGE [, ERRORS ]]]]] - * - * E.g. - * BigNumber.config(20, 4) is equivalent to - * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) - * Ignore properties/parameters set to null or undefined. - * - * Return an object with the properties current values. - */ -BigNumber['config'] = function() { - var v, p, - i = 0, - r = {}, - a = arguments, - o = a[0], - c = 'config', - inRange = function(n, lo, hi) { - return !((outOfRange = n < lo || n > hi) || - parse(n) != n && n !== 0); - }, - has = o && typeof o == 'object' ? function() { - if (o.hasOwnProperty(p)) return (v = o[p]) != null - } : function() { - if (a.length > i) return (v = a[i++]) != null - }; +bnjs.prototype = _bnjs.prototype; - // [DECIMAL_PLACES] {number} Integer, 0 to MAX inclusive. - if (has(p = 'DECIMAL_PLACES')) { - - if (inRange(v, 0, MAX)) { - DECIMAL_PLACES = v | 0; - } else { - - // 'config() DECIMAL_PLACES not an integer: {v}' - // 'config() DECIMAL_PLACES out of range: {v}' - ifExceptionsThrow(v, p, c); +var reversebuf = function(buf, nbuf) { + for (var i = 0; i < buf.length; i++) { + nbuf[i] = buf[buf.length-1-i]; } - } - r[p] = DECIMAL_PLACES; - - // [ROUNDING_MODE] {number} Integer, 0 to 8 inclusive. - if (has(p = 'ROUNDING_MODE')) { - - if (inRange(v, 0, 8)) { - ROUNDING_MODE = v | 0; - } else { - - // 'config() ROUNDING_MODE not an integer: {v}' - // 'config() ROUNDING_MODE out of range: {v}' - ifExceptionsThrow(v, p, c); - } - } - r[p] = ROUNDING_MODE; - - /* - * [EXPONENTIAL_AT] {number|number[]} Integer, -MAX to MAX inclusive or - * [ integer -MAX to 0 inclusive, 0 to MAX inclusive ]. - */ - if (has(p = 'EXPONENTIAL_AT')) { - - if (inRange(v, -MAX, MAX)) { - TO_EXP_NEG = -(TO_EXP_POS = ~~ (v < 0 ? -v : +v)); - } else if (!outOfRange && v && inRange(v[0], -MAX, 0) && - inRange(v[1], 0, MAX)) { - TO_EXP_NEG = ~~v[0]; - TO_EXP_POS = ~~v[1]; - } else { - - // 'config() EXPONENTIAL_AT not an integer or not [integer, integer]: {v}' - // 'config() EXPONENTIAL_AT out of range or not [negative, positive: {v}' - ifExceptionsThrow(v, p, c, 1); - } - } - r[p] = [TO_EXP_NEG, TO_EXP_POS]; - - /* - * [RANGE][ {number|number[]} Non-zero integer, -MAX to MAX inclusive or - * [ integer -MAX to -1 inclusive, integer 1 to MAX inclusive ]. - */ - if (has(p = 'RANGE')) { - - if (inRange(v, -MAX, MAX) && ~~v) { - MIN_EXP = -(MAX_EXP = ~~ (v < 0 ? -v : +v)); - } else if (!outOfRange && v && inRange(v[0], -MAX, -1) && - inRange(v[1], 1, MAX)) { - MIN_EXP = ~~v[0], MAX_EXP = ~~v[1]; - } else { - - // 'config() RANGE not a non-zero integer or not [integer, integer]: {v}' - // 'config() RANGE out of range or not [negative, positive: {v}' - ifExceptionsThrow(v, p, c, 1, 1); - } - } - r[p] = [MIN_EXP, MAX_EXP]; - - // [ERRORS] {boolean|number} true, false, 1 or 0. - if (has(p = 'ERRORS')) { - - if (v === !!v || v === 1 || v === 0) { - parse = (outOfRange = id = 0, ERRORS = !!v) ? parseInt : parseFloat; - } else { - - // 'config() ERRORS not a boolean or binary digit: {v}' - ifExceptionsThrow(v, p, c, 0, 0, 1); - } - } - r[p] = ERRORS; - - return r; }; - -// PRIVATE FUNCTIONS - - -// Assemble error messages. Throw BigNumber Errors. -function ifExceptionsThrow(arg, i, j, isArray, isRange, isErrors) { - - if (ERRORS) { - var error, - method = ['new BigNumber', 'cmp', 'div', 'eq', 'gt', 'gte', 'lt', - 'lte', 'minus', 'mod', 'plus', 'times', 'toFr' - ][id ? id < 0 ? -id : id : 1 / id < 0 ? 1 : 0] + '()', - message = outOfRange ? ' out of range' : ' not a' + - (isRange ? ' non-zero' : 'n') + ' integer'; - - message = ([ - method + ' number type has more than 15 significant digits', - method + ' not a base ' + j + ' number', - method + ' base' + message, - method + ' not a number' - ][i] || - j + '() ' + i + (isErrors ? ' not a boolean or binary digit' : message + (isArray ? ' or not [' + (outOfRange ? ' negative, positive' : ' integer, integer') + ' ]' : ''))) + ': ' + arg; - - outOfRange = id = 0; - error = new Error(message); - error['name'] = 'BigNumber Error'; - - throw error; +bnjs.fromBuffer = function(buf, opts) { + if (typeof opts !== 'undefined' && opts.endian === 'little') { + var nbuf = new Buffer(buf.length); + reversebuf(buf, nbuf); + buf = nbuf; } -} + var hex = buf.toString('hex'); + if (hex.length % 2) + hex = "0" + hex; + var bn = new bnjs(hex, 16); + return bn; +}; +bnjs.prototype.toBuffer = function(opts) { + var buf; + if (opts && opts.size) { + var hex = this.toString(16); + if (hex.length % 2) + hex = "0" + hex; + var natlen = hex.length/2; + buf = new Buffer(hex, 'hex'); -/* - * Convert a numeric string of baseIn to a numeric string of baseOut. - */ -function convert(nStr, baseOut, baseIn, sign) { - var e, dvs, dvd, nArr, fracArr, fracBN; + if (natlen == opts.size) + buf = buf; - // Convert string of base bIn to an array of numbers of baseOut. - // Eg. strToArr('255', 10) where baseOut is 16, returns [15, 15]. - // Eg. strToArr('ff', 16) where baseOut is 10, returns [2, 5, 5]. - function strToArr(str, bIn) { - var j, - i = 0, - strL = str.length, - arrL, - arr = [0]; - - for (bIn = bIn || baseIn; i < strL; i++) { - - for (arrL = arr.length, j = 0; j < arrL; arr[j] *= bIn, j++) {} - - for (arr[0] += DIGITS.indexOf(str.charAt(i)), j = 0; j < arr.length; j++) { - - if (arr[j] > baseOut - 1) { - - if (arr[j + 1] == null) { - arr[j + 1] = 0; - } - arr[j + 1] += arr[j] / baseOut ^ 0; - arr[j] %= baseOut; - } - } + else if (natlen > opts.size) { + buf = buf.slice(natlen - buf.length, buf.length); } - return arr.reverse(); - } - - // Convert array to string. - // E.g. arrToStr( [9, 10, 11] ) becomes '9ab' (in bases above 11). - function arrToStr(arr) { - var i = 0, - arrL = arr.length, - str = ''; - - for (; i < arrL; str += DIGITS.charAt(arr[i++])) {} - - return str; - } - - if (baseIn < 37) { - nStr = nStr.toLowerCase(); - } - - /* - * If non-integer convert integer part and fraction part separately. - * Convert the fraction part as if it is an integer than use division to - * reduce it down again to a value less than one. - */ - if ((e = nStr.indexOf('.')) > -1) { - - /* - * Calculate the power to which to raise the base to get the number - * to divide the fraction part by after it has been converted as an - * integer to the required base. - */ - e = nStr.length - e - 1; - - // Use toFixed to avoid possible exponential notation. - dvs = strToArr(new BigNumber(baseIn)['pow'](e)['toF'](), 10); - - nArr = nStr.split('.'); - - // Convert the base of the fraction part (as integer). - dvd = strToArr(nArr[1]); - - // Convert the base of the integer part. - nArr = strToArr(nArr[0]); - - // Result will be a BigNumber with a value less than 1. - fracBN = divide(dvd, dvs, dvd.length - dvs.length, sign, baseOut, - // Is least significant digit of integer part an odd number? - nArr[nArr.length - 1] & 1); - - fracArr = fracBN['c']; - - // e can be <= 0 ( if e == 0, fracArr is [0] or [1] ). - if (e = fracBN['e']) { - - // Append zeros according to the exponent of the result. - for (; ++e; fracArr.unshift(0)) {} - - // Append the fraction part to the converted integer part. - nStr = arrToStr(nArr) + '.' + arrToStr(fracArr); - - // fracArr is [1]. - // Fraction digits rounded up, so increment last digit of integer part. - } else if (fracArr[0]) { - - if (nArr[e = nArr.length - 1] < baseOut - 1) { - ++nArr[e]; - nStr = arrToStr(nArr); - } else { - nStr = new BigNumber(arrToStr(nArr), - baseOut)['plus'](ONE)['toS'](baseOut); - } - - // fracArr is [0]. No fraction digits. - } else { - nStr = arrToStr(nArr); - } - } else { - - // Simple integer. Convert base. - nStr = arrToStr(strToArr(nStr)); - } - - return nStr; -} - - -// Perform division in the specified base. Called by div and convert. -function divide(dvd, dvs, exp, s, base, isOdd) { - var dvsL, dvsT, next, cmp, remI, - dvsZ = dvs.slice(), - dvdI = dvsL = dvs.length, - dvdL = dvd.length, - rem = dvd.slice(0, dvsL), - remL = rem.length, - quo = new BigNumber(ONE), - qc = quo['c'] = [], - qi = 0, - dig = DECIMAL_PLACES + (quo['e'] = exp) + 1; - - quo['s'] = s; - s = dig < 0 ? 0 : dig; - - // Add zeros to make remainder as long as divisor. - for (; remL++ < dvsL; rem.push(0)) {} - - // Create version of divisor with leading zero. - dvsZ.unshift(0); - - do { - - // 'next' is how many times the divisor goes into the current remainder. - for (next = 0; next < base; next++) { - - // Compare divisor and remainder. - if (dvsL != (remL = rem.length)) { - cmp = dvsL > remL ? 1 : -1; - } else { - for (remI = -1, cmp = 0; ++remI < dvsL;) { - - if (dvs[remI] != rem[remI]) { - cmp = dvs[remI] > rem[remI] ? 1 : -1; - break; - } - } - } - - // Subtract divisor from remainder (if divisor < remainder). - if (cmp < 0) { - - // Remainder cannot be more than one digit longer than divisor. - // Equalise lengths using divisor with extra leading zero? - for (dvsT = remL == dvsL ? dvs : dvsZ; remL;) { - - if (rem[--remL] < dvsT[remL]) { - - for (remI = remL; remI && !rem[--remI]; rem[remI] = base - 1) {} - --rem[remI]; - rem[remL] += base; - } - rem[remL] -= dvsT[remL]; - } - for (; !rem[0]; rem.shift()) {} - } else { - break; - } - } - - // Add the 'next' digit to the result array. - qc[qi++] = cmp ? next : ++next; - - // Update the remainder. - rem[0] && cmp ? (rem[remL] = dvd[dvdI] || 0) : (rem = [dvd[dvdI]]); - - } while ((dvdI++ < dvdL || rem[0] != null) && s--); - - // Leading zero? Do not remove if result is simply zero (qi == 1). - if (!qc[0] && qi != 1) { - - // There can't be more than one zero. - --quo['e']; - qc.shift(); - } - - // Round? - if (qi > dig) { - rnd(quo, DECIMAL_PLACES, base, isOdd, rem[0] != null); - } - - // Overflow? - if (quo['e'] > MAX_EXP) { - - // Infinity. - quo['c'] = quo['e'] = null; - - // Underflow? - } else if (quo['e'] < MIN_EXP) { - - // Zero. - quo['c'] = [quo['e'] = 0]; - } - - return quo; -} - - -/* - * Return a string representing the value of BigNumber n in normal or - * exponential notation rounded to the specified decimal places or - * significant digits. - * Called by toString, toExponential (exp 1), toFixed, and toPrecision (exp 2). - * d is the index (with the value in normal notation) of the digit that may be - * rounded up. - */ -function format(n, d, exp) { - - // Initially, i is the number of decimal places required. - var i = d - (n = new BigNumber(n))['e'], - c = n['c']; - - // +-Infinity or NaN? - if (!c) { - return n['toS'](); - } - - // Round? - if (c.length > ++d) { - rnd(n, i, 10); - } - - // Recalculate d if toFixed as n['e'] may have changed if value rounded up. - i = c[0] == 0 ? i + 1 : exp ? d : n['e'] + i + 1; - - // Append zeros? - for (; c.length < i; c.push(0)) {} - i = n['e']; - - /* - * toPrecision returns exponential notation if the number of significant - * digits specified is less than the number of digits necessary to - * represent the integer part of the value in normal notation. - */ - return exp == 1 || exp == 2 && (--d < i || i <= TO_EXP_NEG) - - // Exponential notation. - ? (n['s'] < 0 && c[0] ? '-' : '') + (c.length > 1 ? (c.splice(1, 0, '.'), c.join('')) : c[0]) + (i < 0 ? 'e' : 'e+') + i - - // Normal notation. - : n['toS'](); -} - - -// Round if necessary. -// Called by divide, format, setMode and sqrt. -function rnd(x, dp, base, isOdd, r) { - var xc = x['c'], - isNeg = x['s'] < 0, - half = base / 2, - i = x['e'] + dp + 1, - - // 'next' is the digit after the digit that may be rounded up. - next = xc[i], - - /* - * 'more' is whether there are digits after 'next'. - * E.g. - * 0.005 (e = -3) to be rounded to 0 decimal places (dp = 0) gives i = -2 - * The 'next' digit is zero, and there ARE 'more' digits after it. - * 0.5 (e = -1) dp = 0 gives i = 0 - * The 'next' digit is 5 and there are no 'more' digits after it. - */ - more = r || i < 0 || xc[i + 1] != null; - - r = ROUNDING_MODE < 4 ? (next != null || more) && - (ROUNDING_MODE == 0 || - ROUNDING_MODE == 2 && !isNeg || - ROUNDING_MODE == 3 && isNeg) : next > half || next == half && - (ROUNDING_MODE == 4 || more || - - /* - * isOdd is used in base conversion and refers to the least significant - * digit of the integer part of the value to be converted. The fraction - * part is rounded by this method separately from the integer part. - */ - ROUNDING_MODE == 6 && (xc[i - 1] & 1 || !dp && isOdd) || - ROUNDING_MODE == 7 && !isNeg || - ROUNDING_MODE == 8 && isNeg); - - if (i < 1 || !xc[0]) { - xc.length = 0; - xc.push(0); - - if (r) { - - // 1, 0.1, 0.01, 0.001, 0.0001 etc. - xc[0] = 1; - x['e'] = -dp; - } else { - - // Zero. - x['e'] = 0; - } - - return x; - } - - // Remove any digits after the required decimal places. - xc.length = i--; - - // Round up? - if (r) { - - // Rounding up may mean the previous digit has to be rounded up and so on. - for (--base; ++xc[i] > base;) { - xc[i] = 0; - - if (!i--) { - ++x['e']; - xc.unshift(1); - } + else if (natlen < opts.size) { + var rbuf = new Buffer(opts.size); + //rbuf.fill(0); + for (var i = 0; i < buf.length; i++) + rbuf[rbuf.length-1-i] = buf[buf.length-1-i]; + for (var i = 0; i < opts.size - natlen; i++) + rbuf[i] = 0; + buf = rbuf; } } - - // Remove trailing zeros. - for (i = xc.length; !xc[--i]; xc.pop()) {} - - return x; -} - - -// Round after setting the appropriate rounding mode. -// Handles ceil, floor and round. -function setMode(x, dp, rm) { - var r = ROUNDING_MODE; - - ROUNDING_MODE = rm; - x = new BigNumber(x); - x['c'] && rnd(x, dp, 10); - ROUNDING_MODE = r; - - return x; -} - - -// PROTOTYPE/INSTANCE METHODS - - -/* - * Return a new BigNumber whose value is the absolute value of this BigNumber. - */ -P['abs'] = P['absoluteValue'] = function() { - var x = new BigNumber(this); - - if (x['s'] < 0) { - x['s'] = 1; + else { + var hex = this.toString(16); + if (hex.length % 2) + hex = "0" + hex; + buf = new Buffer(hex, 'hex'); } - return x; -}; - -/* - * Return the bit length of the number. - */ -P['bitLength'] = function() { - return this.toString(2).length; -}; - - -/* - * Return a new BigNumber whose value is the value of this BigNumber - * rounded to a whole number in the direction of Infinity. - */ -P['ceil'] = function() { - return setMode(this, 0, 2); -}; - - -/* - * Return - * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), - * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), - * 0 if they have the same value, - * or null if the value of either is NaN. - */ -P['comparedTo'] = P['cmp'] = function(y, b) { - var a, - x = this, - xc = x['c'], - yc = (id = -id, y = new BigNumber(y, b))['c'], - i = x['s'], - j = y['s'], - k = x['e'], - l = y['e']; - - // Either NaN? - if (!i || !j) { - return null; + if (typeof opts !== 'undefined' && opts.endian === 'little') { + var nbuf = new Buffer(buf.length); + reversebuf(buf, nbuf); + buf = nbuf; } - a = xc && !xc[0], b = yc && !yc[0]; - - // Either zero? - if (a || b) { - return a ? b ? 0 : -j : i; - } - - // Signs differ? - if (i != j) { - return i; - } - - // Either Infinity? - if (a = i < 0, b = k == l, !xc || !yc) { - return b ? 0 : !xc ^ a ? 1 : -1; - } - - // Compare exponents. - if (!b) { - return k > l ^ a ? 1 : -1; - } - - // Compare digit by digit. - for (i = -1, - j = (k = xc.length) < (l = yc.length) ? k : l; - ++i < j;) { - - if (xc[i] != yc[i]) { - return xc[i] > yc[i] ^ a ? 1 : -1; - } - } - // Compare lengths. - return k == l ? 0 : k > l ^ a ? 1 : -1; -}; - - -/* - * n / 0 = I - * n / N = N - * n / I = 0 - * 0 / n = 0 - * 0 / 0 = N - * 0 / N = N - * 0 / I = 0 - * N / n = N - * N / 0 = N - * N / N = N - * N / I = N - * I / n = I - * I / 0 = I - * I / N = N - * I / I = N - * - * Return a new BigNumber whose value is the value of this BigNumber - * divided by the value of BigNumber(y, b), rounded according to - * DECIMAL_PLACES and ROUNDING_MODE. - */ -P['dividedBy'] = P['div'] = function(y, b) { - var xc = this['c'], - xe = this['e'], - xs = this['s'], - yc = (id = 2, y = new BigNumber(y, b))['c'], - ye = y['e'], - ys = y['s'], - s = xs == ys ? 1 : -1; - - // Either NaN/Infinity/0? - return !xe && (!xc || !xc[0]) || !ye && (!yc || !yc[0]) - - // Either NaN? - ? new BigNumber(!xs || !ys || - - // Both 0 or both Infinity? - (xc ? yc && xc[0] == yc[0] : !yc) - - // Return NaN. - ? NaN - - // x is 0 or y is Infinity? - : xc && xc[0] == 0 || !yc - - // Return +-0. - ? s * 0 - - // y is 0. Return +-Infinity. - : s / 0) - - : divide(xc, yc, xe - ye, s, 10); -}; - - -/* - * Return true if the value of this BigNumber is equal to the value of - * BigNumber(n, b), otherwise returns false. - */ -P['equals'] = P['eq'] = function(n, b) { - id = 3; - return this['cmp'](n, b) === 0; -}; - - -/* - * Return a new BigNumber whose value is the value of this BigNumber - * rounded to a whole number in the direction of -Infinity. - */ -P['floor'] = function() { - return setMode(this, 0, 3); -}; - - -/* - * Return true if the value of this BigNumber is greater than the value of - * BigNumber(n, b), otherwise returns false. - */ -P['greaterThan'] = P['gt'] = function(n, b) { - id = 4; - return this['cmp'](n, b) > 0; -}; - - -/* - * Return true if the value of this BigNumber is greater than or equal to - * the value of BigNumber(n, b), otherwise returns false. - */ -P['greaterThanOrEqualTo'] = P['gte'] = function(n, b) { - id = 5; - return (b = this['cmp'](n, b)) == 1 || b === 0; -}; - - -/* - * Return true if the value of this BigNumber is a finite number, otherwise - * returns false. - */ -P['isFinite'] = P['isF'] = function() { - return !!this['c']; -}; - - -/* - * Return true if the value of this BigNumber is NaN, otherwise returns - * false. - */ -P['isNaN'] = function() { - return !this['s']; -}; - - -/* - * Return true if the value of this BigNumber is negative, otherwise - * returns false. - */ -P['isNegative'] = P['isNeg'] = function() { - return this['s'] < 0; -}; - - -/* - * Return true if the value of this BigNumber is 0 or -0, otherwise returns - * false. - */ -P['isZero'] = P['isZ'] = function() { - return !!this['c'] && this['c'][0] == 0; -}; - - -/* - * Return true if the value of this BigNumber is less than the value of - * BigNumber(n, b), otherwise returns false. - */ -P['lessThan'] = P['lt'] = function(n, b) { - id = 6; - return this['cmp'](n, b) < 0; -}; - - -/* - * Return true if the value of this BigNumber is less than or equal to the - * value of BigNumber(n, b), otherwise returns false. - */ -P['lessThanOrEqualTo'] = P['lte'] = P['le'] = function(n, b) { - id = 7; - return (b = this['cmp'](n, b)) == -1 || b === 0; -}; - - -/* - * n - 0 = n - * n - N = N - * n - I = -I - * 0 - n = -n - * 0 - 0 = 0 - * 0 - N = N - * 0 - I = -I - * N - n = N - * N - 0 = N - * N - N = N - * N - I = N - * I - n = I - * I - 0 = I - * I - N = N - * I - I = N - * - * Return a new BigNumber whose value is the value of this BigNumber minus - * the value of BigNumber(y, b). - */ -P['minus'] = P['sub'] = function(y, b) { - var d, i, j, xLTy, - x = this, - a = x['s']; - - b = (id = 8, y = new BigNumber(y, b))['s']; - - // Either NaN? - if (!a || !b) { - return new BigNumber(NaN); - } - - // Signs differ? - if (a != b) { - return y['s'] = -b, x['plus'](y); - } - - var xc = x['c'], - xe = x['e'], - yc = y['c'], - ye = y['e']; - - if (!xe || !ye) { - - // Either Infinity? - if (!xc || !yc) { - return xc ? (y['s'] = -b, y) : new BigNumber(yc ? x : NaN); - } - - // Either zero? - if (!xc[0] || !yc[0]) { - - // y is non-zero? - return yc[0] ? (y['s'] = -b, y) - - // x is non-zero? - : new BigNumber(xc[0] ? x - - // Both are zero. - // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity - : ROUNDING_MODE == 3 ? -0 : 0); - } - } - - // Determine which is the bigger number. - // Prepend zeros to equalise exponents. - if (xc = xc.slice(), a = xe - ye) { - d = (xLTy = a < 0) ? (a = -a, xc) : (ye = xe, yc); - - for (d.reverse(), b = a; b--; d.push(0)) {} - d.reverse(); - } else { - - // Exponents equal. Check digit by digit. - j = ((xLTy = xc.length < yc.length) ? xc : yc).length; - - for (a = b = 0; b < j; b++) { - - if (xc[b] != yc[b]) { - xLTy = xc[b] < yc[b]; - break; - } - } - } - - // x < y? Point xc to the array of the bigger number. - if (xLTy) { - d = xc, xc = yc, yc = d; - y['s'] = -y['s']; - } - - /* - * Append zeros to xc if shorter. No need to add zeros to yc if shorter - * as subtraction only needs to start at yc.length. - */ - if ((b = -((j = xc.length) - yc.length)) > 0) { - - for (; b--; xc[j++] = 0) {} - } - - // Subtract yc from xc. - for (b = yc.length; b > a;) { - - if (xc[--b] < yc[b]) { - - for (i = b; i && !xc[--i]; xc[i] = 9) {} - --xc[i]; - xc[b] += 10; - } - xc[b] -= yc[b]; - } - - // Remove trailing zeros. - for (; xc[--j] == 0; xc.pop()) {} - - // Remove leading zeros and adjust exponent accordingly. - for (; xc[0] == 0; xc.shift(), --ye) {} - - /* - * No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity - * when neither x or y are Infinity. - */ - - // Underflow? - if (ye < MIN_EXP || !xc[0]) { - - /* - * Following IEEE 754 (2008) 6.3, - * n - n = +0 but n - n = -0 when rounding towards -Infinity. - */ - if (!xc[0]) { - y['s'] = ROUNDING_MODE == 3 ? -1 : 1; - } - - // Result is zero. - xc = [ye = 0]; - } - - return y['c'] = xc, y['e'] = ye, y; -}; - - -/* - * n % 0 = N - * n % N = N - * 0 % n = 0 - * -0 % n = -0 - * 0 % 0 = N - * 0 % N = N - * N % n = N - * N % 0 = N - * N % N = N - * - * Return a new BigNumber whose value is the value of this BigNumber modulo - * the value of BigNumber(y, b). - */ -P['modulo'] = P['mod'] = function(y, b) { - var x = this, - xc = x['c'], - yc = (id = 9, y = new BigNumber(y, b))['c'], - i = x['s'], - j = y['s']; - - // Is x or y NaN, or y zero? - b = !i || !j || yc && !yc[0]; - - if (b || xc && !xc[0]) { - return new BigNumber(b ? NaN : x); - } - - x['s'] = y['s'] = 1; - b = y['cmp'](x) == 1; - x['s'] = i, y['s'] = j; - - return b ? new BigNumber(x) : (i = DECIMAL_PLACES, j = ROUNDING_MODE, - DECIMAL_PLACES = 0, ROUNDING_MODE = 1, - x = x['div'](y), - DECIMAL_PLACES = i, ROUNDING_MODE = j, - this['minus'](x['times'](y))); -}; - - -/* - * Return a new BigNumber whose value is the value of this BigNumber - * negated, i.e. multiplied by -1. - */ -P['negated'] = P['neg'] = function() { - var x = new BigNumber(this); - - return x['s'] = -x['s'] || null, x; -}; - - -/* - * n + 0 = n - * n + N = N - * n + I = I - * 0 + n = n - * 0 + 0 = 0 - * 0 + N = N - * 0 + I = I - * N + n = N - * N + 0 = N - * N + N = N - * N + I = N - * I + n = I - * I + 0 = I - * I + N = N - * I + I = I - * - * Return a new BigNumber whose value is the value of this BigNumber plus - * the value of BigNumber(y, b). - */ -P['plus'] = P['add'] = function(y, b) { - var d, - x = this, - a = x['s']; - - b = (id = 10, y = new BigNumber(y, b))['s']; - - // Either NaN? - if (!a || !b) { - return new BigNumber(NaN); - } - - // Signs differ? - if (a != b) { - return y['s'] = -b, x['minus'](y); - } - - var xe = x['e'], - xc = x['c'], - ye = y['e'], - yc = y['c']; - - if (!xe || !ye) { - - // Either Infinity? - if (!xc || !yc) { - - // Return +-Infinity. - return new BigNumber(a / 0); - } - - // Either zero? - if (!xc[0] || !yc[0]) { - - // y is non-zero? - return yc[0] ? y - - // x is non-zero? - : new BigNumber(xc[0] ? x - - // Both are zero. Return zero. - : a * 0); - } - } - - // Prepend zeros to equalise exponents. - // Note: Faster to use reverse then do unshifts. - if (xc = xc.slice(), a = xe - ye) { - d = a > 0 ? (ye = xe, yc) : (a = -a, xc); - - for (d.reverse(); a--; d.push(0)) {} - d.reverse(); - } - - // Point xc to the longer array. - if (xc.length - yc.length < 0) { - d = yc, yc = xc, xc = d; - } - - /* - * Only start adding at yc.length - 1 as the - * further digits of xc can be left as they are. - */ - for (a = yc.length, b = 0; a; b = (xc[--a] = xc[a] + yc[a] + b) / 10 ^ 0, xc[a] %= 10) {} - - // No need to check for zero, as +x + +y != 0 && -x + -y != 0 - - if (b) { - xc.unshift(b); - - // Overflow? (MAX_EXP + 1 possible) - if (++ye > MAX_EXP) { - - // Infinity. - xc = ye = null; - } - } - - // Remove trailing zeros. - for (a = xc.length; xc[--a] == 0; xc.pop()) {} - - return y['c'] = xc, y['e'] = ye, y; -}; - - -/* - * Return a BigNumber whose value is the value of this BigNumber raised to - * the power e. If e is negative round according to DECIMAL_PLACES and - * ROUNDING_MODE. - * - * e {number} Integer, -MAX_POWER to MAX_POWER inclusive. - */ -P['toPower'] = P['pow'] = function(e) { - - // e to integer, avoiding NaN or Infinity becoming 0. - var i = e * 0 == 0 ? e | 0 : e, - x = new BigNumber(this), - y = new BigNumber(ONE); - - // Use Math.pow? - // Pass +-Infinity for out of range exponents. - if ((((outOfRange = e < -MAX_POWER || e > MAX_POWER) && - (i = e * 1 / 0)) || - - /* - * Any exponent that fails the parse becomes NaN. - * - * Include 'e !== 0' because on Opera -0 == parseFloat(-0) is false, - * despite -0 === parseFloat(-0) && -0 == parseFloat('-0') is true. - */ - parse(e) != e && e !== 0 && !(i = NaN)) && - - // 'pow() exponent not an integer: {e}' - // 'pow() exponent out of range: {e}' - !ifExceptionsThrow(e, 'exponent', 'pow') || - - // Pass zero to Math.pow, as any value to the power zero is 1. - !i) { - - // i is +-Infinity, NaN or 0. - return new BigNumber(Math.pow(x['toS'](), i)); - } - - for (i = i < 0 ? -i : i;;) { - - if (i & 1) { - y = y['times'](x); - } - i >>= 1; - - if (!i) { - break; - } - x = x['times'](x); - } - - return e < 0 ? ONE['div'](y) : y; -}; - - -/* - * Return a BigNumber whose value is the value of this BigNumber raised to - * the power m modulo n. - * - * m {BigNumber} the value to take the power of - * n {BigNumber} the value to modulo by - */ -P['powm'] = function(m, n) { - return this.pow(m).mod(n); -}; - - -/* - * Return a new BigNumber whose value is the value of this BigNumber - * rounded to a maximum of dp decimal places using rounding mode rm, or to - * 0 and ROUNDING_MODE respectively if omitted. - * - * [dp] {number} Integer, 0 to MAX inclusive. - * [rm] {number} Integer, 0 to 8 inclusive. - */ -P['round'] = function(dp, rm) { - - dp = dp == null || (((outOfRange = dp < 0 || dp > MAX) || - parse(dp) != dp) && - - // 'round() decimal places out of range: {dp}' - // 'round() decimal places not an integer: {dp}' - !ifExceptionsThrow(dp, 'decimal places', 'round')) ? 0 : dp | 0; - - rm = rm == null || (((outOfRange = rm < 0 || rm > 8) || - - // Include '&& rm !== 0' because with Opera -0 == parseFloat(-0) is false. - parse(rm) != rm && rm !== 0) && - - // 'round() mode not an integer: {rm}' - // 'round() mode out of range: {rm}' - !ifExceptionsThrow(rm, 'mode', 'round')) ? ROUNDING_MODE : rm | 0; - - return setMode(this, dp, rm); -}; - - -/* - * sqrt(-n) = N - * sqrt( N) = N - * sqrt(-I) = N - * sqrt( I) = I - * sqrt( 0) = 0 - * sqrt(-0) = -0 - * - * Return a new BigNumber whose value is the square root of the value of - * this BigNumber, rounded according to DECIMAL_PLACES and ROUNDING_MODE. - */ -P['squareRoot'] = P['sqrt'] = function() { - var n, r, re, t, - x = this, - c = x['c'], - s = x['s'], - e = x['e'], - dp = DECIMAL_PLACES, - rm = ROUNDING_MODE, - half = new BigNumber('0.5'); - - // Negative/NaN/Infinity/zero? - if (s !== 1 || !c || !c[0]) { - - return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0); - } - - // Initial estimate. - s = Math.sqrt(x['toS']()); - ROUNDING_MODE = 1; - - /* - Math.sqrt underflow/overflow? - Pass x to Math.sqrt as integer, then adjust the exponent of the result. - */ - if (s == 0 || s == 1 / 0) { - n = c.join(''); - - if (!(n.length + e & 1)) { - n += '0'; - } - r = new BigNumber(Math.sqrt(n) + ''); - - // r may still not be finite. - if (!r['c']) { - r['c'] = [1]; - } - r['e'] = (((e + 1) / 2) | 0) - (e < 0 || e & 1); - } else { - r = new BigNumber(n = s.toString()); - } - re = r['e']; - s = re + (DECIMAL_PLACES += 4); - - if (s < 3) { - s = 0; - } - e = s; - - // Newton-Raphson iteration. - for (;;) { - t = r; - r = half['times'](t['plus'](x['div'](t))); - - if (t['c'].slice(0, s).join('') === r['c'].slice(0, s).join('')) { - c = r['c']; - - /* - The exponent of r may here be one less than the final result - exponent (re), e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust - s so the rounding digits are indexed correctly. - */ - s = s - (n && r['e'] < re); - - /* - The 4th rounding digit may be in error by -1 so if the 4 rounding - digits are 9999 or 4999 (i.e. approaching a rounding boundary) - continue the iteration. - */ - if (c[s] == 9 && c[s - 1] == 9 && c[s - 2] == 9 && - (c[s - 3] == 9 || n && c[s - 3] == 4)) { - - /* - If 9999 on first run through, check to see if rounding up - gives the exact result as the nines may infinitely repeat. - */ - if (n && c[s - 3] == 9) { - t = r['round'](dp, 0); - - if (t['times'](t)['eq'](x)) { - ROUNDING_MODE = rm; - DECIMAL_PLACES = dp; - - return t; - } - } - DECIMAL_PLACES += 4; - s += 4; - n = ''; - } else { - - /* - If the rounding digits are null, 0000 or 5000, check for an - exact result. If not, then there are further digits so - increment the 1st rounding digit to ensure correct rounding. - */ - if (!c[e] && !c[e - 1] && !c[e - 2] && - (!c[e - 3] || c[e - 3] == 5)) { - - // Truncate to the first rounding digit. - if (c.length > e - 2) { - c.length = e - 2; - } - - if (!r['times'](r)['eq'](x)) { - - while (c.length < e - 3) { - c.push(0); - } - c[e - 3]++; - } - } - ROUNDING_MODE = rm; - rnd(r, DECIMAL_PLACES = dp, 10); - - return r; - } - } - } -}; - - -/* - * n * 0 = 0 - * n * N = N - * n * I = I - * 0 * n = 0 - * 0 * 0 = 0 - * 0 * N = N - * 0 * I = N - * N * n = N - * N * 0 = N - * N * N = N - * N * I = N - * I * n = I - * I * 0 = N - * I * N = N - * I * I = I - * - * Return a new BigNumber whose value is the value of this BigNumber times - * the value of BigNumber(y, b). - */ -P['times'] = P['mul'] = function(y, b) { - var c, - x = this, - xc = x['c'], - yc = (id = 11, y = new BigNumber(y, b))['c'], - i = x['e'], - j = y['e'], - a = x['s']; - - y['s'] = a == (b = y['s']) ? 1 : -1; - - // Either NaN/Infinity/0? - if (!i && (!xc || !xc[0]) || !j && (!yc || !yc[0])) { - - // Either NaN? - return new BigNumber(!a || !b || - - // x is 0 and y is Infinity or y is 0 and x is Infinity? - xc && !xc[0] && !yc || yc && !yc[0] && !xc - - // Return NaN. - ? NaN - - // Either Infinity? - : !xc || !yc - - // Return +-Infinity. - ? y['s'] / 0 - - // x or y is 0. Return +-0. - : y['s'] * 0); - } - y['e'] = i + j; - - if ((a = xc.length) < (b = yc.length)) { - c = xc, xc = yc, yc = c, j = a, a = b, b = j; - } - - for (j = a + b, c = []; j--; c.push(0)) {} - - // Multiply! - for (i = b - 1; i > -1; i--) { - - for (b = 0, j = a + i; j > i; b = c[j] + yc[i] * xc[j - i - 1] + b, - c[j--] = b % 10 | 0, - b = b / 10 | 0) {} - - if (b) { - c[j] = (c[j] + b) % 10; - } - } - - b && ++y['e']; - - // Remove any leading zero. - !c[0] && c.shift(); - - // Remove trailing zeros. - for (j = c.length; !c[--j]; c.pop()) {} - - // No zero check needed as only x * 0 == 0 etc. - - // Overflow? - y['c'] = y['e'] > MAX_EXP - - // Infinity. - ? (y['e'] = null) - - // Underflow? - : y['e'] < MIN_EXP - - // Zero. - ? [y['e'] = 0] - - // Neither. - : c; - - return y; -}; - -/* - * Return a buffer containing the - */ -P['toBuffer'] = function(opts) { - - if (typeof opts === 'string') { - if (opts !== 'mpint') return 'Unsupported Buffer representation'; - - var abs = this.abs(); - var buf = abs.toBuffer({ - size: 1, - endian: 'big' - }); - var len = buf.length === 1 && buf[0] === 0 ? 0 : buf.length; - if (buf[0] & 0x80) len++; - - var ret = new Buffer(4 + len); - if (len > 0) buf.copy(ret, 4 + (buf[0] & 0x80 ? 1 : 0)); - if (buf[0] & 0x80) ret[4] = 0; - - ret[0] = len & (0xff << 24); - ret[1] = len & (0xff << 16); - ret[2] = len & (0xff << 8); - ret[3] = len & (0xff << 0); - - // two's compliment for negative integers: - var isNeg = this.lt(0); - if (isNeg) { - for (var i = 4; i < ret.length; i++) { - ret[i] = 0xff - ret[i]; - } - } - ret[4] = (ret[4] & 0x7f) | (isNeg ? 0x80 : 0); - if (isNeg) ret[ret.length - 1]++; - - return ret; - } - - if (!opts) opts = {}; - - var endian = { - 1: 'big', - '-1': 'little' - }[opts.endian] || opts.endian || 'big'; - - var hex = this.toString(16); - if (hex.charAt(0) === '-') throw new Error( - 'converting negative numbers to Buffers not supported yet' - ); - - var size = opts.size === 'auto' ? Math.ceil(hex.length / 2) : (opts.size || 1); - - var len = Math.ceil(hex.length / (2 * size)) * size; - var buf = new Buffer(len); - - // zero-pad the hex string so the chunks are all `size` long - while (hex.length < 2 * len) hex = '0' + hex; - - var hx = hex - .split(new RegExp('(.{' + (2 * size) + '})')) - .filter(function(s) { - return s.length > 0 - }); - - hx.forEach(function(chunk, i) { - for (var j = 0; j < size; j++) { - var ix = i * size + (endian === 'big' ? j : size - j - 1); - buf[ix] = parseInt(chunk.slice(j * 2, j * 2 + 2), 16); - } - }); - return buf; }; -/* - * Return a string representing the value of this BigNumber in exponential - * notation to dp fixed decimal places and rounded using ROUNDING_MODE if - * necessary. - * - * [dp] {number} Integer, 0 to MAX inclusive. - */ -P['toExponential'] = P['toE'] = function(dp) { - - return format(this, (dp == null || ((outOfRange = dp < 0 || dp > MAX) || - - /* - * Include '&& dp !== 0' because with Opera -0 == parseFloat(-0) is - * false, despite -0 == parseFloat('-0') && 0 == -0 being true. - */ - parse(dp) != dp && dp !== 0) && - - // 'toE() decimal places not an integer: {dp}' - // 'toE() decimal places out of range: {dp}' - !ifExceptionsThrow(dp, 'decimal places', 'toE')) && this['c'] ? this['c'].length - 1 : dp | 0, 1); +function decorate(name) { + bnjs.prototype['_' + name] = _bnjs.prototype[name]; + var f = function(b) { + if (typeof b === 'string') + b = new _bnjs(b); + else if (typeof b === 'number') + b = new _bnjs(b.toString()); + return this['_' + name](b); + }; + bnjs.prototype[name] = f; }; - -/* - * Return a string representing the value of this BigNumber in normal - * notation to dp fixed decimal places and rounded using ROUNDING_MODE if - * necessary. - * - * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', - * but e.g. (-0.00001).toFixed(0) is '-0'. - * - * [dp] {number} Integer, 0 to MAX inclusive. - */ -P['toFixed'] = P['toF'] = function(dp) { - var n, str, d, - x = this; - - if (!(dp == null || ((outOfRange = dp < 0 || dp > MAX) || - parse(dp) != dp && dp !== 0) && - - // 'toF() decimal places not an integer: {dp}' - // 'toF() decimal places out of range: {dp}' - !ifExceptionsThrow(dp, 'decimal places', 'toF'))) { - d = x['e'] + (dp | 0); - } - - n = TO_EXP_NEG, dp = TO_EXP_POS; - TO_EXP_NEG = -(TO_EXP_POS = 1 / 0); - - // Note: str is initially undefined. - if (d == str) { - str = x['toS'](); - } else { - str = format(x, d); - - // (-0).toFixed() is '0', but (-0.1).toFixed() is '-0'. - // (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. - if (x['s'] < 0 && x['c']) { - - // As e.g. -0 toFixed(3), will wrongly be returned as -0.000 from toString. - if (!x['c'][0]) { - str = str.replace(/^-/, ''); - - // As e.g. -0.5 if rounded to -0 will cause toString to omit the minus sign. - } else if (str.indexOf('-') < 0) { - str = '-' + str; - } - } - } - TO_EXP_NEG = n, TO_EXP_POS = dp; - - return str; +_bnjs.prototype.gt = function(b) { + return this.cmp(b) > 0; }; - -/* - * Return a string array representing the value of this BigNumber as a - * simple fraction with an integer numerator and an integer denominator. - * The denominator will be a positive non-zero value less than or equal to - * the specified maximum denominator. If a maximum denominator is not - * specified, the denominator will be the lowest value necessary to - * represent the number exactly. - * - * [maxD] {number|string|BigNumber} Integer >= 1 and < Infinity. - */ -P['toFraction'] = P['toFr'] = function(maxD) { - var q, frac, n0, d0, d2, n, e, - n1 = d0 = new BigNumber(ONE), - d1 = n0 = new BigNumber('0'), - x = this, - xc = x['c'], - exp = MAX_EXP, - dp = DECIMAL_PLACES, - rm = ROUNDING_MODE, - d = new BigNumber(ONE); - - // NaN, Infinity. - if (!xc) { - return x['toS'](); - } - - e = d['e'] = xc.length - x['e'] - 1; - - // If max denominator is undefined or null... - if (maxD == null || - - // or NaN... - (!(id = 12, n = new BigNumber(maxD))['s'] || - - // or less than 1, or Infinity... - (outOfRange = n['cmp'](n1) < 0 || !n['c']) || - - // or not an integer... - (ERRORS && n['e'] < n['c'].length - 1)) && - - // 'toFr() max denominator not an integer: {maxD}' - // 'toFr() max denominator out of range: {maxD}' - !ifExceptionsThrow(maxD, 'max denominator', 'toFr') || - - // or greater than the maxD needed to specify the value exactly... - (maxD = n)['cmp'](d) > 0) { - - // d is e.g. 10, 100, 1000, 10000... , n1 is 1. - maxD = e > 0 ? d : n1; - } - - MAX_EXP = 1 / 0; - n = new BigNumber(xc.join('')); - - for (DECIMAL_PLACES = 0, ROUNDING_MODE = 1;;) { - q = n['div'](d); - d2 = d0['plus'](q['times'](d1)); - - if (d2['cmp'](maxD) == 1) { - break; - } - - d0 = d1, d1 = d2; - - n1 = n0['plus'](q['times'](d2 = n1)); - n0 = d2; - - d = n['minus'](q['times'](d2 = d)); - n = d2; - } - - d2 = maxD['minus'](d0)['div'](d1); - n0 = n0['plus'](d2['times'](n1)); - d0 = d0['plus'](d2['times'](d1)); - - n0['s'] = n1['s'] = x['s']; - - DECIMAL_PLACES = e * 2; - ROUNDING_MODE = rm; - - // Determine which fraction is closer to x, n0 / d0 or n1 / d1? - frac = n1['div'](d1)['minus'](x)['abs']()['cmp']( - n0['div'](d0)['minus'](x)['abs']()) < 1 ? [n1['toS'](), d1['toS']()] : [n0['toS'](), d0['toS']()]; - - return MAX_EXP = exp, DECIMAL_PLACES = dp, frac; +_bnjs.prototype.lt = function(b) { + return this.cmp(b) < 0; }; +decorate('add'); +decorate('sub'); +decorate('mul'); +decorate('mod'); +decorate('div'); +decorate('cmp'); +decorate('gt'); +decorate('lt'); -/* - * Return a string representing the value of this BigNumber to sd significant - * digits and rounded using ROUNDING_MODE if necessary. - * If sd is less than the number of digits necessary to represent the integer - * part of the value in normal notation, then use exponential notation. - * - * sd {number} Integer, 1 to MAX inclusive. - */ -P['toPrecision'] = P['toP'] = function(sd) { - - /* - * ERRORS true: Throw if sd not undefined, null or an integer in range. - * ERRORS false: Ignore sd if not a number or not in range. - * Truncate non-integers. - */ - return sd == null || (((outOfRange = sd < 1 || sd > MAX) || - parse(sd) != sd) && - - // 'toP() precision not an integer: {sd}' - // 'toP() precision out of range: {sd}' - !ifExceptionsThrow(sd, 'precision', 'toP')) ? this['toS']() : format(this, --sd | 0, 2); +bnjs.prototype.toNumber = function() { + return parseInt(this['toString'](10), 10); }; - -/* - * Return a string representing the value of this BigNumber in base b, or - * base 10 if b is omitted. If a base is specified, including base 10, - * round according to DECIMAL_PLACES and ROUNDING_MODE. - * If a base is not specified, and this BigNumber has a positive exponent - * that is equal to or greater than TO_EXP_POS, or a negative exponent equal - * to or less than TO_EXP_NEG, return exponential notation. - * - * [b] {number} Integer, 2 to 64 inclusive. - */ -P['toString'] = P['toS'] = function(b) { - var u, str, strL, - x = this, - xe = x['e']; - - // Infinity or NaN? - if (xe === null) { - str = x['s'] ? 'Infinity' : 'NaN'; - - // Exponential format? - } else if (b === u && (xe <= TO_EXP_NEG || xe >= TO_EXP_POS)) { - return format(x, x['c'].length - 1, 1); - } else { - str = x['c'].join(''); - - // Negative exponent? - if (xe < 0) { - - // Prepend zeros. - for (; ++xe; str = '0' + str) {} - str = '0.' + str; - - // Positive exponent? - } else if (strL = str.length, xe > 0) { - - if (++xe > strL) { - - // Append zeros. - for (xe -= strL; xe--; str += '0') {} - } else if (xe < strL) { - str = str.slice(0, xe) + '.' + str.slice(xe); - } - - // Exponent zero. - } else { - if (u = str.charAt(0), strL > 1) { - str = u + '.' + str.slice(1); - - // Avoid '-0' - } else if (u == '0') { - return u; - } - } - - if (b != null) { - - if (!(outOfRange = !(b >= 2 && b < 65)) && - (b == (b | 0) || !ERRORS)) { - str = convert(str, b | 0, 10, x['s']); - - // Avoid '-0' - if (str == '0') { - return str; - } - } else { - - // 'toS() base not an integer: {b}' - // 'toS() base out of range: {b}' - ifExceptionsThrow(b, 'base', 'toS'); - } - } - - } - - return x['s'] < 0 ? '-' + str : str; -}; - -P['toNumber'] = function() { - return parseInt(this['toString'](), 10); -}; - - -/* - * Return as toString, but do not accept a base argument. - */ -P['valueOf'] = function() { - return this['toS'](); -}; - - -// Add aliases for BigDecimal methods. -//P['add'] = P['plus']; -//P['subtract'] = P['minus']; -//P['multiply'] = P['times']; -//P['divide'] = P['div']; -//P['remainder'] = P['mod']; -//P['compareTo'] = P['cmp']; -//P['negate'] = P['neg']; - - -// EXPORT -BigNumber.config({ - EXPONENTIAL_AT: 9999999, - DECIMAL_PLACES: 0, - ROUNDING_MODE: 1 -}); -module.exports = BigNumber; +module.exports = bnjs; diff --git a/lib/browser/Key.js b/lib/browser/Key.js index d008d3c42..8c42a961b 100644 --- a/lib/browser/Key.js +++ b/lib/browser/Key.js @@ -1,7 +1,7 @@ -var ECKey = require('../../browser/vendor-bundle.js').ECKey; var SecureRandom = require('../SecureRandom'); -var Curve = require('../Curve'); var bignum = require('bignum'); +var elliptic = require('elliptic'); +var Point = require('./Point'); var Key = function() { this._pub = null; @@ -41,10 +41,24 @@ Object.defineProperty(Key.prototype, 'compressed', { return; var oldp = this._pub; if (this._pub) { - var eckey = new ECKey(); - eckey.setPub(bufferToArray(this.public)); - eckey.setCompressed(this._compressed); - this._pub = new Buffer(eckey.getPub()); + if (this._compressed) { + var xbuf = this._pub.slice(1, 33); + var ybuf = this._pub.slice(33, 65); + var x = new bignum(xbuf); + var y = new bignum(ybuf); + var p = new Point(x, y); + this._pub = p.toCompressedPubKey(); + } else { + var ec = elliptic.curves.secp256k1; + var xbuf = this._pub.slice(1, 33); + var odd = this._pub[0] == 3 ? true : false; + var p = ec.curve.pointFromX(odd, xbuf); + var ybuf = new Buffer(p.y.toArray()); + var xb = new bignum(xbuf); + var yb = new bignum(ybuf); + var pb = new Point(xb, yb); + this._pub = pb.toUncompressedPubKey(); + } } if (!this._compressed) { //bug in eckey @@ -59,25 +73,19 @@ Object.defineProperty(Key.prototype, 'compressed', { Key.generateSync = function() { var privbuf; + var ec = elliptic.curves.secp256k1; while (true) { privbuf = SecureRandom.getRandomBuffer(32); if ((bignum.fromBuffer(privbuf, { size: 32 - })).cmp(Curve.getN()) < 0) + })).cmp(ec.n) < 0) break; } - var privhex = privbuf.toString('hex'); - var eck = new ECKey(privhex); - eck.setCompressed(true); - var pub = eck.getPub(); - - ret = new Key(); - ret.private = privbuf; - ret._compressed = true; - ret.public = new Buffer(eck.getPub()); - - return ret; + var key = new Key(); + key.private = privbuf; + key.regenerateSync(); + return key; }; Key.prototype.regenerateSync = function() { @@ -85,52 +93,47 @@ Key.prototype.regenerateSync = function() { throw new Error('Key does not have a private key set'); } - var eck = new ECKey(this.private.toString('hex')); - eck.setCompressed(this._compressed); - this._pub = new Buffer(eck.getPub()); + var ec = elliptic.curves.secp256k1; + var g = ec.g; + var ecp = ec.g.mul(this.private); + var x = new bignum(ecp.x.toArray()); + var y = new bignum(ecp.y.toArray()); + var p = new Point(x, y); + if (this.compressed) + this._pub = p.toCompressedPubKey(); + else + this._pub = p.toUncompressedPubKey(); + return this; }; Key.prototype.signSync = function(hash) { - var getSECCurveByName = require('../../browser/vendor-bundle.js').getSECCurveByName; - var BigInteger = require('../../browser/vendor-bundle.js').BigInteger; - var rng = new SecureRandom(); - var ecparams = getSECCurveByName('secp256k1'); + var ec = elliptic.curves.secp256k1; - var rng = {}; - rng.nextBytes = function(array) { - var buf = SecureRandom.getRandomBuffer(array.length); - var a = bufferToArray(SecureRandom.getRandomBuffer(array.length)); - for (var i in a) { - array[i] = a[i]; - } - }; - - var getBigRandom = function(limit) { - return new BigInteger(limit.bitLength(), rng) - .mod(limit.subtract(BigInteger.ONE)) - .add(BigInteger.ONE); + var genk = function() { + //TODO: account for when >= n + return new bignum(SecureRandom.getRandomBuffer(8)); }; var sign = function(hash, priv) { var d = priv; - var n = ecparams.getN(); - var e = BigInteger.fromByteArrayUnsigned(hash); + var n = ec.n; + var e = new bignum(hash); do { - var k = getBigRandom(n); - var G = ecparams.getG(); - var Q = G.multiply(k); - var r = Q.getX().toBigInteger().mod(n); - var s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n); - } while (r.compareTo(BigInteger.ZERO) <= 0 || s.compareTo(BigInteger.ZERO) <= 0); + var k = genk(); + var G = ec.g; + var Q = G.mul(k); + var r = Q.getX().mod(n); + var s = k.invm(n).mul(e.add(d.mul(r))).mod(n); + } while (r.cmp(new bignum(0)) <= 0 || s.cmp(new bignum(0)) <= 0); return serializeSig(r, s); }; var serializeSig = function(r, s) { - var rBa = r.toByteArraySigned(); - var sBa = s.toByteArraySigned(); + var rBa = r.toArray(); + var sBa = s.toArray(); var sequence = []; sequence.push(0x02); // INTEGER @@ -154,9 +157,8 @@ Key.prototype.signSync = function(hash) { if (!Buffer.isBuffer(hash) || hash.length !== 32) { throw new Error('Arg should be a 32 bytes hash buffer'); } - var privhex = this.private.toString('hex'); - var privnum = new BigInteger(privhex, 16); - var signature = sign(bufferToArray(hash), privnum); + var privnum = new bignum(this.private); + var signature = sign(hash, privnum); return new Buffer(signature); }; @@ -171,24 +173,12 @@ Key.prototype.verifySignature = function(hash, sig, callback) { }; Key.prototype.verifySignatureSync = function(hash, sig) { - var self = this; - - if (!Buffer.isBuffer(hash) || hash.length !== 32) { - throw new Error('Arg 1 should be a 32 bytes hash buffer'); - } - if (!Buffer.isBuffer(sig)) { - throw new Error('Arg 2 should be a buffer'); - } - if (!self.public) { - throw new Error('Key does not have a public key set'); - } - - var eck = new ECKey(); - eck.setPub(bufferToArray(self.public)); - eck.setCompressed(self._compressed); - var sigA = bufferToArray(sig); - var ret = eck.verify(bufferToArray(hash), sigA); - return ret; + var ec = new elliptic.ec(elliptic.curves.secp256k1); + var msg = hash.toString('hex'); + var pub = this._pub.toString('hex'); + var sig = sig.toString('hex'); + var v = ec.verify(msg, sig, pub); + return v; }; module.exports = Key; diff --git a/lib/browser/Point.js b/lib/browser/Point.js index 4e6aee3f1..dbcecf07c 100644 --- a/lib/browser/Point.js +++ b/lib/browser/Point.js @@ -3,119 +3,29 @@ var Key = require('./Key'); var bignum = require('bignum'); var assert = require('assert'); -var ECPointFp = require('../../browser/vendor-bundle.js').ECPointFp; -var ECFieldElementFp = require('../../browser/vendor-bundle.js').ECFieldElementFp; -var getSECCurveByName = require('../../browser/vendor-bundle.js').getSECCurveByName; -var BigInteger = require('../../browser/vendor-bundle.js').BigInteger; - -//a point on the secp256k1 curve -//x and y are bignums -var Point = function(x, y) { - this.x = x; - this.y = y; -}; +var elliptic = require('elliptic'); +var Point = require('../common/Point'); Point.add = function(p1, p2) { - var ecparams = getSECCurveByName('secp256k1'); - - var p1xhex = p1.x.toBuffer({ - size: 32 - }).toString('hex'); - var p1x = new BigInteger(p1xhex, 16); - var p1yhex = p1.y.toBuffer({ - size: 32 - }).toString('hex'); - var p1y = new BigInteger(p1yhex, 16); - var p1px = new ECFieldElementFp(ecparams.getCurve().getQ(), p1x); - var p1py = new ECFieldElementFp(ecparams.getCurve().getQ(), p1y); - var p1p = new ECPointFp(ecparams.getCurve(), p1px, p1py); - - var p2xhex = p2.x.toBuffer({ - size: 32 - }).toString('hex'); - var p2x = new BigInteger(p2xhex, 16); - var p2yhex = p2.y.toBuffer({ - size: 32 - }).toString('hex'); - var p2y = new BigInteger(p2yhex, 16); - var p2px = new ECFieldElementFp(ecparams.getCurve().getQ(), p2x); - var p2py = new ECFieldElementFp(ecparams.getCurve().getQ(), p2y); - var p2p = new ECPointFp(ecparams.getCurve(), p2px, p2py); - - var p = p1p.add(p2p); - - var point = new Point(); - var pointxbuf = new Buffer(p.getX().toBigInteger().toByteArrayUnsigned()); - point.x = bignum.fromBuffer(pointxbuf, { - size: pointxbuf.length - }); - assert(pointxbuf.length <= 32); - var pointybuf = new Buffer(p.getY().toBigInteger().toByteArrayUnsigned()); - assert(pointybuf.length <= 32); - point.y = bignum.fromBuffer(pointybuf, { - size: pointybuf.length - }); - - return point; + var ec = elliptic.curves.secp256k1; + var ecp1 = ec.curve.point(p1.x, p1.y); + var ecp2 = ec.curve.point(p2.x, p2.y); + var ecp3 = ecp1.add(ecp2); + //var p3 = ec.curve.point(ecp3.x, ecp3.y); + var p3 = new Point(ecp3.x, ecp3.y); + return p3; }; Point.multiply = function(p1, x) { - var x = new BigInteger(x.toString('hex'), 16); - - var ecparams = getSECCurveByName('secp256k1'); - - var p1xhex = p1.x.toBuffer({ - size: 32 - }).toString('hex'); - var p1x = new BigInteger(p1xhex, 16); - var p1yhex = p1.y.toBuffer({ - size: 32 - }).toString('hex'); - var p1y = new BigInteger(p1yhex, 16); - var p1px = new ECFieldElementFp(ecparams.getCurve().getQ(), p1x); - var p1py = new ECFieldElementFp(ecparams.getCurve().getQ(), p1y); - var p1p = new ECPointFp(ecparams.getCurve(), p1px, p1py); - - var p = p1p.multiply(x); - - var point = new Point(); - var pointxbuf = new Buffer(p.getX().toBigInteger().toByteArrayUnsigned()); - point.x = bignum.fromBuffer(pointxbuf, { - size: pointxbuf.length - }); - assert(pointxbuf.length <= 32); - var pointybuf = new Buffer(p.getY().toBigInteger().toByteArrayUnsigned()); - assert(pointybuf.length <= 32); - point.y = bignum.fromBuffer(pointybuf, { - size: pointybuf.length - }); - - return point; -}; - -//convert the public key of a Key into a Point -Point.fromUncompressedPubKey = function(pubkey) { - var point = new Point(); - point.x = bignum.fromBuffer((new Buffer(pubkey)).slice(1, 33), { - size: 32 - }); - point.y = bignum.fromBuffer((new Buffer(pubkey)).slice(33, 65), { - size: 32 - }); - return point; -}; - -//convert the Point into the Key containing a compressed public key -Point.prototype.toUncompressedPubKey = function() { - var xbuf = this.x.toBuffer({ - size: 32 - }); - var ybuf = this.y.toBuffer({ - size: 32 - }); - var prefix = new Buffer([0x04]); - var pub = Buffer.concat([prefix, xbuf, ybuf]); - return pub; + if (Buffer.isBuffer(x) && x.length !== 32) + throw new Error('if x is a buffer, it must be 32 bytes') + var ec = elliptic.curves.secp256k1; + var ecp1 = ec.curve.point(p1.x, p1.y); + if (typeof x === 'string') + x = new bignum(x); + var ecp = ecp1.mul(x); + var p = new Point(ecp.x, ecp.y); + return p; }; module.exports = (Point); diff --git a/lib/common/Point.js b/lib/common/Point.js new file mode 100644 index 000000000..7f5518d3b --- /dev/null +++ b/lib/common/Point.js @@ -0,0 +1,46 @@ +var bignum = require('bignum'); + +//x and y are both bignums +var Point = function(x, y) { + this.x = x; + this.y = y; +}; + +//convert the public key of a Key into a Point +Point.fromUncompressedPubKey = function(pubkey) { + var point = new Point(); + point.x = bignum.fromBuffer(pubkey.slice(1, 33), { + size: 32 + }); + point.y = bignum.fromBuffer(pubkey.slice(33, 65), { + size: 32 + }); + return point; +}; + +//convert the Point into the Key containing a compressed public key +Point.prototype.toUncompressedPubKey = function() { + var xbuf = this.x.toBuffer({ + size: 32 + }); + var ybuf = this.y.toBuffer({ + size: 32 + }); + var prefix = new Buffer([0x04]); + var pubkey = Buffer.concat([prefix, xbuf, ybuf]); + return pubkey; +}; + +Point.prototype.toCompressedPubKey = function() { + var xbuf = this.x.toBuffer({size: 32}); + var ybuf = this.y.toBuffer({size: 32}); + if (ybuf[ybuf.length-1] % 2) { //odd + var pub = Buffer.concat([new Buffer([3]), xbuf]); + } + else { //even + var pub = Buffer.concat([new Buffer([2]), xbuf]); + } + return pub; +}; + +module.exports = Point; diff --git a/package.json b/package.json index 6b94dc3af..2b43765da 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,9 @@ "commander": "~2.2.0", "mocha": ">=1.15.1", "sjcl": "=1.0.1", + "hash.js": "=0.3.1", + "bn.js": "=0.13.2", + "elliptic": "=0.15.7", "bindings": "=1.1.1", "bufferput": "git://github.com/bitpay/node-bufferput.git", "bignum": "=0.6.2", diff --git a/test/data/secp256k1.json b/test/data/secp256k1.json new file mode 100644 index 000000000..f6c581c2e --- /dev/null +++ b/test/data/secp256k1.json @@ -0,0 +1,19 @@ +{ + "nTimesG": [ + {"n": "AA5E28D6A97A2479A65527F7290311A3624D4CC0FA1578598EE3C2613BF99522", + "px": "34F9460F0E4F08393D192B3C5133A6BA099AA0AD9FD54EBCCFACDFA239FF49C6", + "py": "0B71EA9BD730FD8923F6D25A7A91E7DD7728A960686CB5A901BB419E0F2CA232"}, + {"n": "7E2B897B8CEBC6361663AD410835639826D590F393D90A9538881735256DFAE3", + "px": "D74BF844B0862475103D96A611CF2D898447E288D34B360BC885CB8CE7C00575", + "py": "131C670D414C4546B88AC3FF664611B1C38CEB1C21D76369D7A7A0969D61D97D"}, + {"n": "6461E6DF0FE7DFD05329F41BF771B86578143D4DD1F7866FB4CA7E97C5FA945D", + "px": "E8AECC370AEDD953483719A116711963CE201AC3EB21D3F3257BB48668C6A72F", + "py": "C25CAF2F0EBA1DDB2F0F3F47866299EF907867B7D27E95B3873BF98397B24EE1"}, + {"n": "376A3A2CDCD12581EFFF13EE4AD44C4044B8A0524C42422A7E1E181E4DEECCEC", + "px": "14890E61FCD4B0BD92E5B36C81372CA6FED471EF3AA60A3E415EE4FE987DABA1", + "py": "297B858D9F752AB42D3BCA67EE0EB6DCD1C2B7B0DBE23397E66ADC272263F982"}, + {"n": "1B22644A7BE026548810C378D0B2994EEFA6D2B9881803CB02CEFF865287D1B9", + "px": "F73C65EAD01C5126F28F442D087689BFA08E12763E0CEC1D35B01751FD735ED3", + "py": "F449A8376906482A84ED01479BD18882B919C140D638307F0C0934BA12590BDE"} + ] +} diff --git a/test/index.html b/test/index.html index ebdf0d29e..8dd4bd576 100644 --- a/test/index.html +++ b/test/index.html @@ -18,7 +18,7 @@ - + diff --git a/test/test.Bignum.browser.js b/test/test.Bignum.browser.js deleted file mode 100644 index 172d410f2..000000000 --- a/test/test.Bignum.browser.js +++ /dev/null @@ -1,18 +0,0 @@ -var chai = chai || require('chai'); -var bitcore = bitcore || require('../bitcore'); -var coinUtil = coinUtil || bitcore.util; -var should = chai.should(); -var assert = chai.assert; - -var Bignum = bitcore.Bignum; - -if (typeof process == 'undefined' || typeof process.versions == 'undefined') { - describe('#Bignum.browser', function() { - it('should have proper config settings', function() { - bitcore.Bignum.config().EXPONENTIAL_AT[0].should.equal(-9999999); - bitcore.Bignum.config().EXPONENTIAL_AT[1].should.equal(9999999); - bitcore.Bignum.config().DECIMAL_PLACES.should.equal(0); - bitcore.Bignum.config().ROUNDING_MODE.should.equal(1); - }); - }); -} diff --git a/test/test.Bignum.js b/test/test.Bignum.js new file mode 100644 index 000000000..0910cc135 --- /dev/null +++ b/test/test.Bignum.js @@ -0,0 +1,108 @@ +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); +var coinUtil = coinUtil || bitcore.util; +var should = chai.should(); +var assert = chai.assert; + +var Bignum = bitcore.Bignum; + +describe('Bignum', function() { + it('should create a bignum', function() { + var bn = new Bignum(50); + should.exist(bn); + bn.toString().should.equal('50'); + }); + + it('should parse this number', function() { + var bn = new Bignum(999970000); + bn.toString().should.equal('999970000'); + }); + + describe('#add', function() { + + it('should add two small numbers together', function() { + var bn1 = new Bignum(50); + var bn2 = new Bignum(75); + var bn3 = bn1.add(bn2); + bn3.toString().should.equal('125'); + }); + + }); + + describe('#sub', function() { + + it('should subtract a small number', function() { + var bn1 = new Bignum(50); + var bn2 = new Bignum(25); + var bn3 = bn1.sub(bn2); + bn3.toString().should.equal('25'); + }); + + }); + + describe('#gt', function() { + + it('should say 1 is greater than 0', function() { + var bn1 = new Bignum(1); + var bn0 = new Bignum(0); + bn1.gt(bn0).should.equal(true); + }); + + it('should say a big number is greater than a small big number', function() { + var bn1 = new Bignum('24023452345398529485723980457'); + var bn0 = new Bignum('34098234283412341234049357'); + bn1.gt(bn0).should.equal(true); + }); + + it('should say a big number is great than a standard number', function() { + var bn1 = new Bignum('24023452345398529485723980457'); + var bn0 = new Bignum(5); + bn1.gt(bn0).should.equal(true); + }); + + }); + + describe('#fromBuffer', function() { + + it('should work with big endian', function() { + var bn = Bignum.fromBuffer(new Buffer('0001', 'hex'), {endian: 'big'}); + bn.toString().should.equal('1'); + }); + + it('should work with big endian 256', function() { + var bn = Bignum.fromBuffer(new Buffer('0100', 'hex'), {endian: 'big'}); + bn.toString().should.equal('256'); + }); + + it('should work with little endian if we specify the size', function() { + var bn = Bignum.fromBuffer(new Buffer('0100', 'hex'), {size: 2, endian: 'little'}); + bn.toString().should.equal('1'); + }); + + }); + + describe('#toBuffer', function() { + + it('should create a 4 byte buffer', function() { + var bn = new Bignum(1); + bn.toBuffer({size: 4}).toString('hex').should.equal('00000001'); + }); + + it('should create a 4 byte buffer in little endian', function() { + var bn = new Bignum(1); + bn.toBuffer({size: 4, endian: 'little'}).toString('hex').should.equal('01000000'); + }); + + it('should create a 2 byte buffer even if you ask for a 1 byte', function() { + var bn = new Bignum('ff00', 16); + bn.toBuffer({size: 1}).toString('hex').should.equal('ff00'); + }); + + it('should create a 4 byte buffer even if you ask for a 1 byte', function() { + var bn = new Bignum('ffffff00', 16); + bn.toBuffer({size: 4}).toString('hex').should.equal('ffffff00'); + }); + + }); + +}); diff --git a/test/test.Block.js b/test/test.Block.js index b29ffff4e..cede1b527 100644 --- a/test/test.Block.js +++ b/test/test.Block.js @@ -138,7 +138,7 @@ describe('Block', function() { it('#getBlockValue should return the correct block value', function() { - var c = bitcore.util.COIN; + var c = new bitcore.Bignum(bitcore.util.COIN); bitcore.Block.getBlockValue(0).div(c).toNumber().should.equal(50); bitcore.Block.getBlockValue(1).div(c).toNumber().should.equal(50); bitcore.Block.getBlockValue(209999).div(c).toNumber().should.equal(50); diff --git a/test/test.Key.js b/test/test.Key.js index ca2a89065..5b2df64af 100644 --- a/test/test.Key.js +++ b/test/test.Key.js @@ -10,7 +10,9 @@ var Key = bitcore.Key; var Point = bitcore.Point; var bignum = bitcore.Bignum; -describe('Key', function() { +var testdata = testdata || require('./testdata'); + +describe('Key (ECKey)', function() { it('should initialize the main object', function() { should.exist(Key); }); @@ -163,6 +165,23 @@ describe('Key', function() { }); }); + describe('verifySync', function() { + var hash = bitcore.util.sha256('test data'); + var key = new bitcore.Key(); + key.private = bitcore.util.sha256('my fake private key'); + key.regenerateSync(); + + it('should verify this example generated in the browser', function() { + var sig = new Buffer('304402200e02016b816e1b229559b6db97abc528438c64056a412eee2b7c41887ddf17010220ad9f1cd56fd382650286f51a842bba0a7664da164093db956b51f623b0d8e64f', 'hex'); + key.verifySignatureSync(hash, sig).should.equal(true); + }); + + it('should verify this example generated in node', function() { + var sig = new Buffer('30450221008bab1f0a2ff2f9cb8992173d8ad73c229d31ea8e10b0f4d4ae1a0d8ed76021fa02200993a6ec81755b9111762fc2cf8e3ede73047515622792110867d12654275e72', 'hex') + key.verifySignatureSync(hash, sig).should.equal(true); + }); + }); + describe('bug in linux', function() { it('should assign private key starting with 0 properly', function(){ var key = new Key(); @@ -175,5 +194,18 @@ describe('Key', function() { }); }); + describe('secp256k1 test vectors', function() { + //test vectors from http://crypto.stackexchange.com/questions/784/are-there-any-secp256k1-ecdsa-test-examples-available + testdata.dataSecp256k1.nTimesG.forEach(function(val) { + it('should multiply n by G and get p from test data', function() { + var key = new Key(); + key.private = new Buffer(val.n, 'hex'); + key.regenerateSync(); + key.compressed = false; + key.public.slice(1, 33).toString('hex').toUpperCase().should.equal(val.px); + key.public.slice(33, 65).toString('hex').toUpperCase().should.equal(val.py); + }); + }); + }); }); diff --git a/test/test.Point.js b/test/test.Point.js index 9ec2ff7c2..722e49bff 100644 --- a/test/test.Point.js +++ b/test/test.Point.js @@ -12,6 +12,8 @@ var assert = chai.assert; var Point = bitcore.Point; var Key = bitcore.Key; +var testdata = testdata || require('./testdata'); + describe('Point', function() { it('should initialize the main object', function() { @@ -68,4 +70,129 @@ describe('Point', function() { point.y.toBuffer({size: 32}).toString('hex').should.equal(ayhex); }); + describe('#multiply', function() { + + it('should multiply this number by 2', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var x = new bignum(2); + var xbuf = x.toBuffer({size: 32}); + var mult = Point.multiply(a, xbuf); + mult.x.toBuffer({size: 32}).toString('hex').should.equal('f81b3dcae4eeb504d2898500721ece357767b9564bdf03dce95a3db12de72d3a'); + mult.y.toBuffer({size: 32}).toString('hex').should.equal('e0220ac6e8524ca3f80c2c65a390dacc0371a6875afc8546d621eb20284e5568'); + }); + + it('should fail if x < 32 bytes', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var x = new Buffer(31); + x.fill(0); + (function() {Point.multiply(a, x);}).should.throw('if x is a buffer, it must be 32 bytes'); + }); + + it('should fail if x > 32 bytes', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var x = new Buffer(33); + x.fill(0); + (function() {Point.multiply(a, x);}).should.throw('if x is a buffer, it must be 32 bytes'); + }); + + it('should multiply this number by 200 (buffer)', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var x = new bignum(200); + var xbuf = x.toBuffer({size: 32}); + var mult = Point.multiply(a, xbuf); + mult.x.toBuffer({size: 32}).toString('hex').should.equal('91c03d9104df24f01d69702c680a53a9b46ba49de89ab27819ea02c61229bace'); + mult.y.toBuffer({size: 32}).toString('hex').should.equal('5d2fdbdeab06383f14b2702e893444be5e80af58cecb9a70c1ae22e9daab69c1'); + }); + + it('should multiply this number by 200 (number)', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var mult = Point.multiply(a, 200); + mult.x.toBuffer({size: 32}).toString('hex').should.equal('91c03d9104df24f01d69702c680a53a9b46ba49de89ab27819ea02c61229bace'); + mult.y.toBuffer({size: 32}).toString('hex').should.equal('5d2fdbdeab06383f14b2702e893444be5e80af58cecb9a70c1ae22e9daab69c1'); + }); + + it('should multiply this number by 200 (string)', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var mult = Point.multiply(a, '200'); + mult.x.toBuffer({size: 32}).toString('hex').should.equal('91c03d9104df24f01d69702c680a53a9b46ba49de89ab27819ea02c61229bace'); + mult.y.toBuffer({size: 32}).toString('hex').should.equal('5d2fdbdeab06383f14b2702e893444be5e80af58cecb9a70c1ae22e9daab69c1'); + }); + + it('should multiply this point by big number', function() { + var axhex = "69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d"; + var axbuf = new Buffer(axhex, 'hex'); + var ayhex = "eeedc91342b3c8982c1e676435780fe5f9d62f3f692e8d1512485d77fab35997"; + var aybuf = new Buffer(ayhex, 'hex'); + var a = new Point(bignum.fromBuffer(axbuf, {size: 32}), bignum.fromBuffer(aybuf, {size: 32})); + + var x = new bignum('69b154b42ff9452c31251cb341d7db01ad603dc56d64f9c5fb9e7031b89a241d', 16); + var xbuf = x.toBuffer({size: 32}); + var mult = Point.multiply(a, xbuf); + mult.x.toBuffer().toString('hex').should.equal('cdc09cfe61eb6a6a3de87feb4a001e82396142c5201d50b5284ac04c1969daa5'); + mult.y.toBuffer().toString('hex').should.equal('405813e7942e25cadefa653baf4230fc009a461b5ead16ed1f5fd80c9ea13c02'); + }); + + }); + + describe('#toCompressedPubKey', function() { + + it('should handle an odd y', function() { + var p = new Point(); + p.x = new bignum('e22d4eeedc02d79c00a8daba5f01c9a5a129ae028fa689328121d226fa9398b7', 16); + p.y = new bignum('3c4c880a28da79270e62901277c0ab122158aea8630e7c0bcb691adb3abfd33d', 16); + p.toCompressedPubKey().toString('hex').should.equal('03e22d4eeedc02d79c00a8daba5f01c9a5a129ae028fa689328121d226fa9398b7'); + }); + + it('should handle an even y', function() { + var p = new Point(); + p.x = new bignum('8078d90f1ec3ac0a3ec1d2184939a8ed675eec5008d585132ba75465429ec0eb', 16); + p.y = new bignum('32a389053fd408577bb7cdf8bbd4c58a3eca5af74a304de7510c9b3ffdaca17a', 16); + p.toCompressedPubKey().toString('hex').should.equal('028078d90f1ec3ac0a3ec1d2184939a8ed675eec5008d585132ba75465429ec0eb'); + }); + + }); + + describe('secp256k1 test vectors', function() { + //test vectors from http://crypto.stackexchange.com/questions/784/are-there-any-secp256k1-ecdsa-test-examples-available + var G = bitcore.Curve.getG(); + testdata.dataSecp256k1.nTimesG.forEach(function(val) { + it('should multiply n by G and get p from test data', function() { + var n = new Buffer(val.n, 'hex'); + var p = Point.multiply(G, n); + p.x.toBuffer().toString('hex').toUpperCase().should.equal(val.px); + p.y.toBuffer().toString('hex').toUpperCase().should.equal(val.py); + }); + }); + }); + }); diff --git a/test/test.TransactionBuilder.js b/test/test.TransactionBuilder.js index 6fb1a5935..9db361692 100644 --- a/test/test.TransactionBuilder.js +++ b/test/test.TransactionBuilder.js @@ -3,6 +3,7 @@ var chai = chai || require('chai'); chai.config.includeStack = true; var bitcore = bitcore || require('../bitcore'); +var bignum = bitcore.Bignum; var should = chai.should(); @@ -73,7 +74,6 @@ describe('TransactionBuilder', function() { f(0.001).length.should.equal(1); }); - /*jshint -W068 */ it('#_selectUnspent should return null if not enough utxos', function() { (function() { f(1.12); }).should.throw(); }); @@ -131,7 +131,6 @@ describe('TransactionBuilder', function() { .setOutputs(outs); }; - it('should fail to create tx', function() { (function() { diff --git a/test/testdata.js b/test/testdata.js index f967fe738..a86183e11 100644 --- a/test/testdata.js +++ b/test/testdata.js @@ -14,6 +14,7 @@ var dataSigNonCanonical = JSON.parse(fs.readFileSync('test/data/sig_noncanonical var dataBase58KeysValid = JSON.parse(fs.readFileSync('test/data/base58_keys_valid.json')); var dataBase58KeysInvalid = JSON.parse(fs.readFileSync('test/data/base58_keys_invalid.json')); var dataSighash = JSON.parse(fs.readFileSync('test/data/sighash.json')); +var dataSecp256k1 = JSON.parse(fs.readFileSync('test/data/secp256k1.json')); module.exports.dataValid = dataValid; module.exports.dataInvalid = dataInvalid; @@ -30,6 +31,7 @@ module.exports.dataSigNonCanonical = dataSigNonCanonical; module.exports.dataBase58KeysValid = dataBase58KeysValid; module.exports.dataBase58KeysInvalid = dataBase58KeysInvalid; module.exports.dataSighash = dataSighash; +module.exports.dataSecp256k1 = dataSecp256k1; var buffer = new Buffer(fs.readFileSync('test/data/blk86756-testnet.dat')); module.exports.dataRawBlock = buffer; diff --git a/util/util.js b/util/util.js index 588a8132d..40d72a017 100644 --- a/util/util.js +++ b/util/util.js @@ -4,10 +4,8 @@ var Binary = require('binary'); var Put = require('bufferput'); var buffertools = require('buffertools'); var sjcl = require('../lib/sjcl'); -var browser; -var inBrowser = !process.versions; -if (inBrowser) { - browser = require('../browser/vendor-bundle.js'); +if (process.browser) { + var hashjs = require('hash.js'); } var sha256 = exports.sha256 = function(data) { @@ -15,7 +13,7 @@ var sha256 = exports.sha256 = function(data) { }; var sha512 = exports.sha512 = function(data) { - if (inBrowser) { + if (process.browser) { var datahex = data.toString('hex'); var databits = sjcl.codec.hex.toBits(datahex); var hashbits = sjcl.hash.sha512.hash(databits); @@ -27,7 +25,7 @@ var sha512 = exports.sha512 = function(data) { }; var sha512hmac = exports.sha512hmac = function(data, key) { - if (inBrowser) { + if (process.browser) { var skey = sjcl.codec.hex.toBits(key.toString('hex')); var sdata = sjcl.codec.hex.toBits(data.toString('hex')); var hmac = new sjcl.misc.hmac(skey, sjcl.hash.sha512); @@ -45,15 +43,8 @@ var ripe160 = exports.ripe160 = function(data) { if (!Buffer.isBuffer(data)) { throw new Error('arg should be a buffer'); } - if (inBrowser) { - var w = new browser.crypto31.lib.WordArray.init(Crypto.util.bytesToWords(data), data.length); - var wordArray = browser.crypto31.RIPEMD160(w); - var words = wordArray.words; - var answer = []; - for (var b = 0; b < words.length * 32; b += 8) { - answer.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); - } - return new Buffer(answer, 'hex'); + if (process.browser) { + return new Buffer(hashjs.ripemd160().update(data).digest()); } return new Buffer(crypto.createHash('rmd160').update(data).digest('binary'), 'binary'); }; @@ -183,7 +174,7 @@ exports.intToBuffer2C = function(integer) { s = s.replace('-', ''); for (var i = 0; i < size; i++) { var si = s.substring(s.length - 2 * (i + 1), s.length - 2 * (i)); - if (si.lenght === 1) { + if (si.length === 1) { si = '0' + si; } var pi = parseInt(si, 16);